From 4ff6ee2e42219c6ee091ec8119d1473f4a67884c Mon Sep 17 00:00:00 2001 From: Joao Monezi Date: Sat, 21 Jun 2025 16:26:43 +0000 Subject: [PATCH] =?UTF-8?q?testando=20remo=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- public_key_signature.b64 | 5 - public_key_signature.bin | 1 - venv/bin/Activate.ps1 | 247 - venv/bin/activate | 70 - venv/bin/activate.csh | 27 - venv/bin/activate.fish | 69 - venv/bin/dotenv | 8 - venv/bin/httpx | 8 - venv/bin/normalizer | 8 - venv/bin/pip | 8 - venv/bin/pip3 | 8 - venv/bin/pip3.12 | 8 - venv/bin/py.test | 8 - venv/bin/pytest | 8 - venv/bin/python | 1 - venv/bin/python3 | 1 - venv/bin/python3.12 | 1 - venv/bin/uvicorn | 8 - .../APScheduler-3.11.0.dist-info/INSTALLER | 1 - .../APScheduler-3.11.0.dist-info/LICENSE.txt | 19 - .../APScheduler-3.11.0.dist-info/METADATA | 147 - .../APScheduler-3.11.0.dist-info/RECORD | 86 - .../APScheduler-3.11.0.dist-info/REQUESTED | 0 .../APScheduler-3.11.0.dist-info/WHEEL | 5 - .../entry_points.txt | 25 - .../top_level.txt | 1 - .../__pycache__/py.cpython-312.pyc | Bin 402 -> 0 bytes .../typing_extensions.cpython-312.pyc | Bin 173425 -> 0 bytes ...fi_backend.cpython-312-x86_64-linux-gnu.so | Bin 1114632 -> 0 bytes .../site-packages/_pytest/__init__.py | 9 - .../__pycache__/__init__.cpython-312.pyc | Bin 412 -> 0 bytes .../__pycache__/_argcomplete.cpython-312.pyc | Bin 5021 -> 0 bytes .../__pycache__/_version.cpython-312.pyc | Bin 293 -> 0 bytes .../__pycache__/cacheprovider.cpython-312.pyc | Bin 29693 -> 0 bytes .../__pycache__/capture.cpython-312.pyc | Bin 51381 -> 0 bytes .../__pycache__/compat.cpython-312.pyc | Bin 15066 -> 0 bytes .../__pycache__/debugging.cpython-312.pyc | Bin 18082 -> 0 bytes .../__pycache__/deprecated.cpython-312.pyc | Bin 4686 -> 0 bytes .../__pycache__/doctest.cpython-312.pyc | Bin 33267 -> 0 bytes .../__pycache__/faulthandler.cpython-312.pyc | Bin 4474 -> 0 bytes .../__pycache__/fixtures.cpython-312.pyc | Bin 70639 -> 0 bytes .../freeze_support.cpython-312.pyc | Bin 1860 -> 0 bytes .../__pycache__/helpconfig.cpython-312.pyc | Bin 12028 -> 0 bytes .../__pycache__/hookspec.cpython-312.pyc | Bin 34844 -> 0 bytes .../__pycache__/junitxml.cpython-312.pyc | Bin 34393 -> 0 bytes .../__pycache__/legacypath.cpython-312.pyc | Bin 25041 -> 0 bytes .../__pycache__/logging.cpython-312.pyc | Bin 40971 -> 0 bytes .../_pytest/__pycache__/main.cpython-312.pyc | Bin 39668 -> 0 bytes .../__pycache__/monkeypatch.cpython-312.pyc | Bin 16764 -> 0 bytes .../_pytest/__pycache__/nodes.cpython-312.pyc | Bin 31023 -> 0 bytes .../_pytest/__pycache__/nose.cpython-312.pyc | Bin 2005 -> 0 bytes .../__pycache__/outcomes.cpython-312.pyc | Bin 12167 -> 0 bytes .../__pycache__/pastebin.cpython-312.pyc | Bin 5700 -> 0 bytes .../__pycache__/pathlib.cpython-312.pyc | Bin 31508 -> 0 bytes .../__pycache__/pytester.cpython-312.pyc | Bin 85088 -> 0 bytes .../pytester_assertions.cpython-312.pyc | Bin 2478 -> 0 bytes .../__pycache__/python.cpython-312.pyc | Bin 82456 -> 0 bytes .../__pycache__/python_api.cpython-312.pyc | Bin 43267 -> 0 bytes .../__pycache__/python_path.cpython-312.pyc | Bin 1574 -> 0 bytes .../__pycache__/recwarn.cpython-312.pyc | Bin 13872 -> 0 bytes .../__pycache__/reports.cpython-312.pyc | Bin 24588 -> 0 bytes .../__pycache__/runner.cpython-312.pyc | Bin 22417 -> 0 bytes .../_pytest/__pycache__/scope.cpython-312.pyc | Bin 3740 -> 0 bytes .../__pycache__/setuponly.cpython-312.pyc | Bin 4929 -> 0 bytes .../__pycache__/setupplan.cpython-312.pyc | Bin 1937 -> 0 bytes .../__pycache__/skipping.cpython-312.pyc | Bin 13463 -> 0 bytes .../_pytest/__pycache__/stash.cpython-312.pyc | Bin 4435 -> 0 bytes .../__pycache__/stepwise.cpython-312.pyc | Bin 5736 -> 0 bytes .../__pycache__/terminal.cpython-312.pyc | Bin 70181 -> 0 bytes .../threadexception.cpython-312.pyc | Bin 4521 -> 0 bytes .../__pycache__/timing.cpython-312.pyc | Bin 579 -> 0 bytes .../__pycache__/tmpdir.cpython-312.pyc | Bin 9330 -> 0 bytes .../__pycache__/unittest.cpython-312.pyc | Bin 18003 -> 0 bytes .../unraisableexception.cpython-312.pyc | Bin 4551 -> 0 bytes .../__pycache__/warning_types.cpython-312.pyc | Bin 6939 -> 0 bytes .../__pycache__/warnings.cpython-312.pyc | Bin 6641 -> 0 bytes .../site-packages/_pytest/_argcomplete.py | 116 - .../site-packages/_pytest/_code/__init__.py | 22 - .../__pycache__/__init__.cpython-312.pyc | Bin 630 -> 0 bytes .../_code/__pycache__/code.cpython-312.pyc | Bin 59084 -> 0 bytes .../_code/__pycache__/source.cpython-312.pyc | Bin 11413 -> 0 bytes .../site-packages/_pytest/_code/code.py | 1292 --- .../site-packages/_pytest/_code/source.py | 217 - .../site-packages/_pytest/_io/__init__.py | 8 - .../_io/__pycache__/__init__.cpython-312.pyc | Bin 321 -> 0 bytes .../_io/__pycache__/saferepr.cpython-312.pyc | Bin 7544 -> 0 bytes .../terminalwriter.cpython-312.pyc | Bin 10081 -> 0 bytes .../_io/__pycache__/wcwidth.cpython-312.pyc | Bin 1662 -> 0 bytes .../site-packages/_pytest/_io/saferepr.py | 180 - .../_pytest/_io/terminalwriter.py | 233 - .../site-packages/_pytest/_io/wcwidth.py | 55 - .../site-packages/_pytest/_py/__init__.py | 0 .../_py/__pycache__/__init__.cpython-312.pyc | Bin 181 -> 0 bytes .../_py/__pycache__/error.cpython-312.pyc | Bin 4785 -> 0 bytes .../_py/__pycache__/path.cpython-312.pyc | Bin 68701 -> 0 bytes .../site-packages/_pytest/_py/error.py | 109 - .../site-packages/_pytest/_py/path.py | 1474 --- .../site-packages/_pytest/_version.py | 4 - .../_pytest/assertion/__init__.py | 181 - .../__pycache__/__init__.cpython-312.pyc | Bin 9176 -> 0 bytes .../__pycache__/rewrite.cpython-312.pyc | Bin 57648 -> 0 bytes .../__pycache__/truncate.cpython-312.pyc | Bin 3578 -> 0 bytes .../__pycache__/util.cpython-312.pyc | Bin 21215 -> 0 bytes .../_pytest/assertion/rewrite.py | 1112 --- .../_pytest/assertion/truncate.py | 94 - .../site-packages/_pytest/assertion/util.py | 522 - .../site-packages/_pytest/cacheprovider.py | 579 -- .../site-packages/_pytest/capture.py | 1014 -- .../site-packages/_pytest/compat.py | 417 - .../site-packages/_pytest/config/__init__.py | 1747 ---- .../__pycache__/__init__.cpython-312.pyc | Bin 74119 -> 0 bytes .../__pycache__/argparsing.cpython-312.pyc | Bin 26864 -> 0 bytes .../config/__pycache__/compat.cpython-312.pyc | Bin 2900 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 753 -> 0 bytes .../__pycache__/findpaths.cpython-312.pyc | Bin 9448 -> 0 bytes .../_pytest/config/argparsing.py | 551 -- .../site-packages/_pytest/config/compat.py | 71 - .../_pytest/config/exceptions.py | 11 - .../site-packages/_pytest/config/findpaths.py | 225 - .../site-packages/_pytest/debugging.py | 391 - .../site-packages/_pytest/deprecated.py | 146 - .../site-packages/_pytest/doctest.py | 752 -- .../site-packages/_pytest/faulthandler.py | 97 - .../site-packages/_pytest/fixtures.py | 1677 ---- .../site-packages/_pytest/freeze_support.py | 44 - .../site-packages/_pytest/helpconfig.py | 265 - .../site-packages/_pytest/hookspec.py | 972 -- .../site-packages/_pytest/junitxml.py | 699 -- .../site-packages/_pytest/legacypath.py | 479 - .../site-packages/_pytest/logging.py | 830 -- .../python3.12/site-packages/_pytest/main.py | 902 -- .../site-packages/_pytest/mark/__init__.py | 266 - .../mark/__pycache__/__init__.cpython-312.pyc | Bin 11604 -> 0 bytes .../__pycache__/expression.cpython-312.pyc | Bin 11297 -> 0 bytes .../__pycache__/structures.cpython-312.pyc | Bin 26271 -> 0 bytes .../site-packages/_pytest/mark/expression.py | 222 - .../site-packages/_pytest/mark/structures.py | 613 -- .../site-packages/_pytest/monkeypatch.py | 416 - .../python3.12/site-packages/_pytest/nodes.py | 771 -- .../python3.12/site-packages/_pytest/nose.py | 50 - .../site-packages/_pytest/outcomes.py | 312 - .../site-packages/_pytest/pastebin.py | 110 - .../site-packages/_pytest/pathlib.py | 735 -- .../python3.12/site-packages/_pytest/py.typed | 0 .../site-packages/_pytest/pytester.py | 1787 ---- .../_pytest/pytester_assertions.py | 75 - .../site-packages/_pytest/python.py | 1835 ---- .../site-packages/_pytest/python_api.py | 999 -- .../site-packages/_pytest/python_path.py | 24 - .../site-packages/_pytest/recwarn.py | 313 - .../site-packages/_pytest/reports.py | 603 -- .../site-packages/_pytest/runner.py | 542 - .../python3.12/site-packages/_pytest/scope.py | 91 - .../site-packages/_pytest/setuponly.py | 97 - .../site-packages/_pytest/setupplan.py | 40 - .../site-packages/_pytest/skipping.py | 296 - .../python3.12/site-packages/_pytest/stash.py | 112 - .../site-packages/_pytest/stepwise.py | 130 - .../site-packages/_pytest/terminal.py | 1432 --- .../site-packages/_pytest/threadexception.py | 88 - .../site-packages/_pytest/timing.py | 12 - .../site-packages/_pytest/tmpdir.py | 216 - .../site-packages/_pytest/unittest.py | 417 - .../_pytest/unraisableexception.py | 93 - .../site-packages/_pytest/warning_types.py | 171 - .../site-packages/_pytest/warnings.py | 148 - .../anyio-4.9.0.dist-info/INSTALLER | 1 - .../anyio-4.9.0.dist-info/LICENSE | 20 - .../anyio-4.9.0.dist-info/METADATA | 105 - .../anyio-4.9.0.dist-info/RECORD | 88 - .../site-packages/anyio-4.9.0.dist-info/WHEEL | 5 - .../anyio-4.9.0.dist-info/entry_points.txt | 2 - .../anyio-4.9.0.dist-info/top_level.txt | 1 - .../site-packages/anyio/__init__.py | 85 - .../__pycache__/__init__.cpython-312.pyc | Bin 3578 -> 0 bytes .../__pycache__/from_thread.cpython-312.pyc | Bin 24081 -> 0 bytes .../__pycache__/lowlevel.cpython-312.pyc | Bin 6961 -> 0 bytes .../__pycache__/pytest_plugin.cpython-312.pyc | Bin 13388 -> 0 bytes .../to_interpreter.cpython-312.pyc | Bin 9116 -> 0 bytes .../__pycache__/to_process.cpython-312.pyc | Bin 11866 -> 0 bytes .../__pycache__/to_thread.cpython-312.pyc | Bin 2934 -> 0 bytes .../site-packages/anyio/_backends/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 185 -> 0 bytes .../__pycache__/_asyncio.cpython-312.pyc | Bin 132735 -> 0 bytes .../__pycache__/_trio.cpython-312.pyc | Bin 70472 -> 0 bytes .../site-packages/anyio/_backends/_asyncio.py | 2816 ------ .../site-packages/anyio/_backends/_trio.py | 1334 --- .../site-packages/anyio/_core/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 181 -> 0 bytes .../_asyncio_selector_thread.cpython-312.pyc | Bin 8409 -> 0 bytes .../__pycache__/_eventloop.cpython-312.pyc | Bin 6339 -> 0 bytes .../__pycache__/_exceptions.cpython-312.pyc | Bin 6053 -> 0 bytes .../_core/__pycache__/_fileio.cpython-312.pyc | Bin 41612 -> 0 bytes .../__pycache__/_resources.cpython-312.pyc | Bin 934 -> 0 bytes .../__pycache__/_signals.cpython-312.pyc | Bin 1266 -> 0 bytes .../__pycache__/_sockets.cpython-312.pyc | Bin 31540 -> 0 bytes .../__pycache__/_streams.cpython-312.pyc | Bin 2329 -> 0 bytes .../__pycache__/_subprocesses.cpython-312.pyc | Bin 9641 -> 0 bytes .../_synchronization.cpython-312.pyc | Bin 32180 -> 0 bytes .../_core/__pycache__/_tasks.cpython-312.pyc | Bin 6986 -> 0 bytes .../__pycache__/_tempfile.cpython-312.pyc | Bin 28133 -> 0 bytes .../__pycache__/_testing.cpython-312.pyc | Bin 3561 -> 0 bytes .../__pycache__/_typedattr.cpython-312.pyc | Bin 3831 -> 0 bytes .../anyio/_core/_asyncio_selector_thread.py | 167 - .../site-packages/anyio/_core/_eventloop.py | 166 - .../site-packages/anyio/_core/_exceptions.py | 126 - .../site-packages/anyio/_core/_fileio.py | 742 -- .../site-packages/anyio/_core/_resources.py | 18 - .../site-packages/anyio/_core/_signals.py | 27 - .../site-packages/anyio/_core/_sockets.py | 792 -- .../site-packages/anyio/_core/_streams.py | 52 - .../anyio/_core/_subprocesses.py | 202 - .../anyio/_core/_synchronization.py | 732 -- .../site-packages/anyio/_core/_tasks.py | 158 - .../site-packages/anyio/_core/_tempfile.py | 616 -- .../site-packages/anyio/_core/_testing.py | 78 - .../site-packages/anyio/_core/_typedattr.py | 81 - .../site-packages/anyio/abc/__init__.py | 55 - .../abc/__pycache__/__init__.cpython-312.pyc | Bin 2221 -> 0 bytes .../__pycache__/_eventloop.cpython-312.pyc | Bin 14970 -> 0 bytes .../__pycache__/_resources.cpython-312.pyc | Bin 1628 -> 0 bytes .../abc/__pycache__/_sockets.cpython-312.pyc | Bin 9876 -> 0 bytes .../abc/__pycache__/_streams.cpython-312.pyc | Bin 8432 -> 0 bytes .../__pycache__/_subprocesses.cpython-312.pyc | Bin 3236 -> 0 bytes .../abc/__pycache__/_tasks.cpython-312.pyc | Bin 4512 -> 0 bytes .../abc/__pycache__/_testing.cpython-312.pyc | Bin 2831 -> 0 bytes .../site-packages/anyio/abc/_eventloop.py | 376 - .../site-packages/anyio/abc/_resources.py | 33 - .../site-packages/anyio/abc/_sockets.py | 194 - .../site-packages/anyio/abc/_streams.py | 203 - .../site-packages/anyio/abc/_subprocesses.py | 79 - .../site-packages/anyio/abc/_tasks.py | 101 - .../site-packages/anyio/abc/_testing.py | 65 - .../site-packages/anyio/from_thread.py | 527 - .../site-packages/anyio/lowlevel.py | 161 - .../python3.12/site-packages/anyio/py.typed | 0 .../site-packages/anyio/pytest_plugin.py | 272 - .../site-packages/anyio/streams/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 183 -> 0 bytes .../__pycache__/buffered.cpython-312.pyc | Bin 6112 -> 0 bytes .../streams/__pycache__/file.cpython-312.pyc | Bin 7524 -> 0 bytes .../__pycache__/memory.cpython-312.pyc | Bin 14944 -> 0 bytes .../__pycache__/stapled.cpython-312.pyc | Bin 7544 -> 0 bytes .../streams/__pycache__/text.cpython-312.pyc | Bin 8288 -> 0 bytes .../streams/__pycache__/tls.cpython-312.pyc | Bin 17567 -> 0 bytes .../site-packages/anyio/streams/buffered.py | 119 - .../site-packages/anyio/streams/file.py | 148 - .../site-packages/anyio/streams/memory.py | 317 - .../site-packages/anyio/streams/stapled.py | 141 - .../site-packages/anyio/streams/text.py | 147 - .../site-packages/anyio/streams/tls.py | 352 - .../site-packages/anyio/to_interpreter.py | 218 - .../site-packages/anyio/to_process.py | 258 - .../site-packages/anyio/to_thread.py | 69 - .../site-packages/apscheduler/__init__.py | 11 - .../__pycache__/__init__.cpython-312.pyc | Bin 1146 -> 0 bytes .../__pycache__/events.cpython-312.pyc | Bin 4353 -> 0 bytes .../__pycache__/job.cpython-312.pyc | Bin 12820 -> 0 bytes .../__pycache__/util.cpython-312.pyc | Bin 16698 -> 0 bytes .../site-packages/apscheduler/events.py | 134 - .../apscheduler/executors/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 191 -> 0 bytes .../__pycache__/asyncio.cpython-312.pyc | Bin 3185 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 9283 -> 0 bytes .../__pycache__/debug.cpython-312.pyc | Bin 1315 -> 0 bytes .../__pycache__/gevent.cpython-312.pyc | Bin 1730 -> 0 bytes .../__pycache__/pool.cpython-312.pyc | Bin 4940 -> 0 bytes .../__pycache__/tornado.cpython-312.pyc | Bin 2912 -> 0 bytes .../__pycache__/twisted.cpython-312.pyc | Bin 1753 -> 0 bytes .../apscheduler/executors/asyncio.py | 52 - .../apscheduler/executors/base.py | 205 - .../apscheduler/executors/debug.py | 20 - .../apscheduler/executors/gevent.py | 29 - .../apscheduler/executors/pool.py | 82 - .../apscheduler/executors/tornado.py | 49 - .../apscheduler/executors/twisted.py | 24 - .../site-packages/apscheduler/job.py | 330 - .../apscheduler/jobstores/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 191 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 6814 -> 0 bytes .../__pycache__/etcd.cpython-312.pyc | Bin 9050 -> 0 bytes .../__pycache__/memory.cpython-312.pyc | Bin 5397 -> 0 bytes .../__pycache__/mongodb.cpython-312.pyc | Bin 8294 -> 0 bytes .../__pycache__/redis.cpython-312.pyc | Bin 9588 -> 0 bytes .../__pycache__/rethinkdb.cpython-312.pyc | Bin 11249 -> 0 bytes .../__pycache__/sqlalchemy.cpython-312.pyc | Bin 11620 -> 0 bytes .../__pycache__/zookeeper.cpython-312.pyc | Bin 10170 -> 0 bytes .../apscheduler/jobstores/base.py | 141 - .../apscheduler/jobstores/etcd.py | 170 - .../apscheduler/jobstores/memory.py | 106 - .../apscheduler/jobstores/mongodb.py | 158 - .../apscheduler/jobstores/redis.py | 160 - .../apscheduler/jobstores/rethinkdb.py | 173 - .../apscheduler/jobstores/sqlalchemy.py | 194 - .../apscheduler/jobstores/zookeeper.py | 197 - .../apscheduler/schedulers/__init__.py | 12 - .../__pycache__/__init__.cpython-312.pyc | Bin 1052 -> 0 bytes .../__pycache__/asyncio.cpython-312.pyc | Bin 3683 -> 0 bytes .../__pycache__/background.cpython-312.pyc | Bin 2558 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 54321 -> 0 bytes .../__pycache__/blocking.cpython-312.pyc | Bin 2114 -> 0 bytes .../__pycache__/gevent.cpython-312.pyc | Bin 2024 -> 0 bytes .../schedulers/__pycache__/qt.cpython-312.pyc | Bin 2526 -> 0 bytes .../__pycache__/tornado.cpython-312.pyc | Bin 3621 -> 0 bytes .../__pycache__/twisted.cpython-312.pyc | Bin 3469 -> 0 bytes .../apscheduler/schedulers/asyncio.py | 67 - .../apscheduler/schedulers/background.py | 42 - .../apscheduler/schedulers/base.py | 1264 --- .../apscheduler/schedulers/blocking.py | 33 - .../apscheduler/schedulers/gevent.py | 34 - .../apscheduler/schedulers/qt.py | 44 - .../apscheduler/schedulers/tornado.py | 65 - .../apscheduler/schedulers/twisted.py | 62 - .../apscheduler/triggers/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 190 -> 0 bytes .../triggers/__pycache__/base.cpython-312.pyc | Bin 1918 -> 0 bytes .../calendarinterval.cpython-312.pyc | Bin 9378 -> 0 bytes .../__pycache__/combining.cpython-312.pyc | Bin 6303 -> 0 bytes .../triggers/__pycache__/date.cpython-312.pyc | Bin 2792 -> 0 bytes .../__pycache__/interval.cpython-312.pyc | Bin 6310 -> 0 bytes .../apscheduler/triggers/base.py | 35 - .../apscheduler/triggers/calendarinterval.py | 186 - .../apscheduler/triggers/combining.py | 114 - .../apscheduler/triggers/cron/__init__.py | 289 - .../cron/__pycache__/__init__.cpython-312.pyc | Bin 11622 -> 0 bytes .../__pycache__/expressions.cpython-312.pyc | Bin 15294 -> 0 bytes .../cron/__pycache__/fields.cpython-312.pyc | Bin 6199 -> 0 bytes .../apscheduler/triggers/cron/expressions.py | 285 - .../apscheduler/triggers/cron/fields.py | 149 - .../apscheduler/triggers/date.py | 51 - .../apscheduler/triggers/interval.py | 138 - .../site-packages/apscheduler/util.py | 461 - .../python3.12/site-packages/attr/__init__.py | 104 - .../site-packages/attr/__init__.pyi | 389 - .../attr/__pycache__/__init__.cpython-312.pyc | Bin 2611 -> 0 bytes .../attr/__pycache__/_cmp.cpython-312.pyc | Bin 5075 -> 0 bytes .../attr/__pycache__/_compat.cpython-312.pyc | Bin 3501 -> 0 bytes .../attr/__pycache__/_config.cpython-312.pyc | Bin 1107 -> 0 bytes .../attr/__pycache__/_funcs.cpython-312.pyc | Bin 13630 -> 0 bytes .../attr/__pycache__/_make.cpython-312.pyc | Bin 99485 -> 0 bytes .../__pycache__/_next_gen.cpython-312.pyc | Bin 24353 -> 0 bytes .../__pycache__/_version_info.cpython-312.pyc | Bin 3121 -> 0 bytes .../__pycache__/converters.cpython-312.pyc | Bin 4625 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 3578 -> 0 bytes .../attr/__pycache__/filters.cpython-312.pyc | Bin 2992 -> 0 bytes .../attr/__pycache__/setters.cpython-312.pyc | Bin 1912 -> 0 bytes .../__pycache__/validators.cpython-312.pyc | Bin 26222 -> 0 bytes .../lib/python3.12/site-packages/attr/_cmp.py | 160 - .../python3.12/site-packages/attr/_cmp.pyi | 13 - .../python3.12/site-packages/attr/_compat.py | 94 - .../python3.12/site-packages/attr/_config.py | 31 - .../python3.12/site-packages/attr/_funcs.py | 468 - .../python3.12/site-packages/attr/_make.py | 3123 ------ .../site-packages/attr/_next_gen.py | 623 -- .../site-packages/attr/_typing_compat.pyi | 15 - .../site-packages/attr/_version_info.py | 86 - .../site-packages/attr/_version_info.pyi | 9 - .../site-packages/attr/converters.py | 162 - .../site-packages/attr/converters.pyi | 19 - .../site-packages/attr/exceptions.py | 95 - .../site-packages/attr/exceptions.pyi | 17 - .../python3.12/site-packages/attr/filters.py | 72 - .../python3.12/site-packages/attr/filters.pyi | 6 - .../python3.12/site-packages/attr/py.typed | 0 .../python3.12/site-packages/attr/setters.py | 79 - .../python3.12/site-packages/attr/setters.pyi | 20 - .../site-packages/attr/validators.py | 710 -- .../site-packages/attr/validators.pyi | 86 - .../attrs-25.3.0.dist-info/INSTALLER | 1 - .../attrs-25.3.0.dist-info/METADATA | 232 - .../attrs-25.3.0.dist-info/RECORD | 55 - .../attrs-25.3.0.dist-info/WHEEL | 4 - .../attrs-25.3.0.dist-info/licenses/LICENSE | 21 - .../site-packages/attrs/__init__.py | 69 - .../site-packages/attrs/__init__.pyi | 263 - .../__pycache__/__init__.cpython-312.pyc | Bin 1131 -> 0 bytes .../__pycache__/converters.cpython-312.pyc | Bin 216 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 216 -> 0 bytes .../attrs/__pycache__/filters.cpython-312.pyc | Bin 210 -> 0 bytes .../attrs/__pycache__/setters.cpython-312.pyc | Bin 210 -> 0 bytes .../__pycache__/validators.cpython-312.pyc | Bin 216 -> 0 bytes .../site-packages/attrs/converters.py | 3 - .../site-packages/attrs/exceptions.py | 3 - .../python3.12/site-packages/attrs/filters.py | 3 - .../python3.12/site-packages/attrs/py.typed | 0 .../python3.12/site-packages/attrs/setters.py | 3 - .../site-packages/attrs/validators.py | 3 - .../certifi-2025.4.26.dist-info/INSTALLER | 1 - .../certifi-2025.4.26.dist-info/METADATA | 78 - .../certifi-2025.4.26.dist-info/RECORD | 14 - .../certifi-2025.4.26.dist-info/WHEEL | 5 - .../licenses/LICENSE | 20 - .../certifi-2025.4.26.dist-info/top_level.txt | 1 - .../site-packages/certifi/__init__.py | 4 - .../site-packages/certifi/__main__.py | 12 - .../__pycache__/__init__.cpython-312.pyc | Bin 304 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 619 -> 0 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 3189 -> 0 bytes .../python3.12/site-packages/certifi/core.py | 114 - .../python3.12/site-packages/certifi/py.typed | 0 .../cffi-1.17.1.dist-info/INSTALLER | 1 - .../cffi-1.17.1.dist-info/LICENSE | 26 - .../cffi-1.17.1.dist-info/METADATA | 40 - .../cffi-1.17.1.dist-info/RECORD | 48 - .../site-packages/cffi-1.17.1.dist-info/WHEEL | 6 - .../cffi-1.17.1.dist-info/entry_points.txt | 2 - .../cffi-1.17.1.dist-info/top_level.txt | 2 - .../python3.12/site-packages/cffi/__init__.py | 14 - .../cffi/__pycache__/__init__.cpython-312.pyc | Bin 543 -> 0 bytes .../_imp_emulation.cpython-312.pyc | Bin 3872 -> 0 bytes .../_shimmed_dist_utils.cpython-312.pyc | Bin 2078 -> 0 bytes .../cffi/__pycache__/api.cpython-312.pyc | Bin 50298 -> 0 bytes .../backend_ctypes.cpython-312.pyc | Bin 63520 -> 0 bytes .../__pycache__/cffi_opcode.cpython-312.pyc | Bin 6773 -> 0 bytes .../__pycache__/commontypes.cpython-312.pyc | Bin 3069 -> 0 bytes .../cffi/__pycache__/cparser.cpython-312.pyc | Bin 46817 -> 0 bytes .../cffi/__pycache__/error.cpython-312.pyc | Bin 1884 -> 0 bytes .../__pycache__/ffiplatform.cpython-312.pyc | Bin 5821 -> 0 bytes .../cffi/__pycache__/lock.cpython-312.pyc | Bin 514 -> 0 bytes .../cffi/__pycache__/model.cpython-312.pyc | Bin 30136 -> 0 bytes .../__pycache__/pkgconfig.cpython-312.pyc | Bin 6361 -> 0 bytes .../__pycache__/recompiler.cpython-312.pyc | Bin 80882 -> 0 bytes .../setuptools_ext.cpython-312.pyc | Bin 10719 -> 0 bytes .../__pycache__/vengine_cpy.cpython-312.pyc | Bin 50752 -> 0 bytes .../__pycache__/vengine_gen.cpython-312.pyc | Bin 34127 -> 0 bytes .../cffi/__pycache__/verifier.cpython-312.pyc | Bin 16210 -> 0 bytes .../site-packages/cffi/_cffi_errors.h | 149 - .../site-packages/cffi/_cffi_include.h | 389 - .../site-packages/cffi/_embedding.h | 550 -- .../site-packages/cffi/_imp_emulation.py | 83 - .../site-packages/cffi/_shimmed_dist_utils.py | 45 - venv/lib/python3.12/site-packages/cffi/api.py | 967 -- .../site-packages/cffi/backend_ctypes.py | 1121 --- .../site-packages/cffi/cffi_opcode.py | 187 - .../site-packages/cffi/commontypes.py | 82 - .../python3.12/site-packages/cffi/cparser.py | 1015 -- .../python3.12/site-packages/cffi/error.py | 31 - .../site-packages/cffi/ffiplatform.py | 113 - .../lib/python3.12/site-packages/cffi/lock.py | 30 - .../python3.12/site-packages/cffi/model.py | 618 -- .../site-packages/cffi/parse_c_type.h | 181 - .../site-packages/cffi/pkgconfig.py | 121 - .../site-packages/cffi/recompiler.py | 1598 --- .../site-packages/cffi/setuptools_ext.py | 216 - .../site-packages/cffi/vengine_cpy.py | 1084 -- .../site-packages/cffi/vengine_gen.py | 679 -- .../python3.12/site-packages/cffi/verifier.py | 306 - .../INSTALLER | 1 - .../LICENSE | 21 - .../METADATA | 269 - .../charset_normalizer-2.1.1.dist-info/RECORD | 33 - .../charset_normalizer-2.1.1.dist-info/WHEEL | 5 - .../entry_points.txt | 2 - .../top_level.txt | 1 - .../charset_normalizer/__init__.py | 56 - .../__pycache__/__init__.cpython-312.pyc | Bin 1870 -> 0 bytes .../__pycache__/api.cpython-312.pyc | Bin 17125 -> 0 bytes .../__pycache__/cd.cpython-312.pyc | Bin 11872 -> 0 bytes .../__pycache__/constant.cpython-312.pyc | Bin 25027 -> 0 bytes .../__pycache__/legacy.cpython-312.pyc | Bin 3959 -> 0 bytes .../__pycache__/md.cpython-312.pyc | Bin 21702 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 18703 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 14216 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 320 -> 0 bytes .../site-packages/charset_normalizer/api.py | 584 -- .../charset_normalizer/assets/__init__.py | 1122 --- .../__pycache__/__init__.cpython-312.pyc | Bin 7814 -> 0 bytes .../site-packages/charset_normalizer/cd.py | 339 - .../charset_normalizer/cli/__init__.py | 0 .../cli/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 0 bytes .../__pycache__/normalizer.cpython-312.pyc | Bin 10053 -> 0 bytes .../charset_normalizer/cli/normalizer.py | 295 - .../charset_normalizer/constant.py | 497 - .../charset_normalizer/legacy.py | 95 - .../site-packages/charset_normalizer/md.py | 553 -- .../charset_normalizer/models.py | 401 - .../site-packages/charset_normalizer/py.typed | 0 .../site-packages/charset_normalizer/utils.py | 424 - .../charset_normalizer/version.py | 6 - .../click-8.2.0.dist-info/INSTALLER | 1 - .../click-8.2.0.dist-info/METADATA | 82 - .../click-8.2.0.dist-info/RECORD | 38 - .../site-packages/click-8.2.0.dist-info/WHEEL | 4 - .../licenses/LICENSE.txt | 28 - .../site-packages/click/__init__.py | 123 - .../__pycache__/__init__.cpython-312.pyc | Bin 4061 -> 0 bytes .../click/__pycache__/_compat.cpython-312.pyc | Bin 24183 -> 0 bytes .../__pycache__/_termui_impl.cpython-312.pyc | Bin 31519 -> 0 bytes .../__pycache__/_textwrap.cpython-312.pyc | Bin 2414 -> 0 bytes .../__pycache__/_winconsole.cpython-312.pyc | Bin 11741 -> 0 bytes .../click/__pycache__/core.cpython-312.pyc | Bin 127640 -> 0 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 22117 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 14765 -> 0 bytes .../__pycache__/formatting.cpython-312.pyc | Bin 13661 -> 0 bytes .../click/__pycache__/globals.cpython-312.pyc | Bin 2954 -> 0 bytes .../click/__pycache__/parser.cpython-312.pyc | Bin 20191 -> 0 bytes .../shell_completion.cpython-312.pyc | Bin 23158 -> 0 bytes .../click/__pycache__/termui.cpython-312.pyc | Bin 34512 -> 0 bytes .../click/__pycache__/testing.cpython-312.pyc | Bin 26406 -> 0 bytes .../click/__pycache__/types.cpython-312.pyc | Bin 48948 -> 0 bytes .../click/__pycache__/utils.cpython-312.pyc | Bin 24868 -> 0 bytes .../python3.12/site-packages/click/_compat.py | 622 -- .../site-packages/click/_termui_impl.py | 839 -- .../site-packages/click/_textwrap.py | 51 - .../site-packages/click/_winconsole.py | 295 - .../python3.12/site-packages/click/core.py | 3134 ------ .../site-packages/click/decorators.py | 551 -- .../site-packages/click/exceptions.py | 308 - .../site-packages/click/formatting.py | 301 - .../python3.12/site-packages/click/globals.py | 67 - .../python3.12/site-packages/click/parser.py | 532 - .../python3.12/site-packages/click/py.typed | 0 .../site-packages/click/shell_completion.py | 644 -- .../python3.12/site-packages/click/termui.py | 877 -- .../python3.12/site-packages/click/testing.py | 557 -- .../python3.12/site-packages/click/types.py | 1165 --- .../python3.12/site-packages/click/utils.py | 627 -- .../cryptography-45.0.4.dist-info/INSTALLER | 1 - .../cryptography-45.0.4.dist-info/METADATA | 139 - .../cryptography-45.0.4.dist-info/RECORD | 176 - .../cryptography-45.0.4.dist-info/REQUESTED | 0 .../cryptography-45.0.4.dist-info/WHEEL | 5 - .../licenses/LICENSE | 3 - .../licenses/LICENSE.APACHE | 202 - .../licenses/LICENSE.BSD | 27 - .../site-packages/cryptography/__about__.py | 17 - .../site-packages/cryptography/__init__.py | 26 - .../__pycache__/__about__.cpython-312.pyc | Bin 454 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 866 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 2378 -> 0 bytes .../__pycache__/fernet.cpython-312.pyc | Bin 11128 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 6604 -> 0 bytes .../site-packages/cryptography/exceptions.py | 52 - .../site-packages/cryptography/fernet.py | 224 - .../cryptography/hazmat/__init__.py | 13 - .../__pycache__/__init__.cpython-312.pyc | Bin 245 -> 0 bytes .../hazmat/__pycache__/_oid.cpython-312.pyc | Bin 20602 -> 0 bytes .../site-packages/cryptography/hazmat/_oid.py | 348 - .../cryptography/hazmat/backends/__init__.py | 13 - .../__pycache__/__init__.cpython-312.pyc | Bin 495 -> 0 bytes .../hazmat/backends/openssl/__init__.py | 9 - .../__pycache__/__init__.cpython-312.pyc | Bin 361 -> 0 bytes .../__pycache__/backend.cpython-312.pyc | Bin 13506 -> 0 bytes .../hazmat/backends/openssl/backend.py | 308 - .../cryptography/hazmat/bindings/__init__.py | 3 - .../__pycache__/__init__.cpython-312.pyc | Bin 198 -> 0 bytes .../hazmat/bindings/_rust.abi3.so | Bin 12481104 -> 0 bytes .../hazmat/bindings/_rust/__init__.pyi | 37 - .../hazmat/bindings/_rust/_openssl.pyi | 8 - .../hazmat/bindings/_rust/asn1.pyi | 7 - .../hazmat/bindings/_rust/exceptions.pyi | 17 - .../hazmat/bindings/_rust/ocsp.pyi | 117 - .../bindings/_rust/openssl/__init__.pyi | 75 - .../hazmat/bindings/_rust/openssl/aead.pyi | 107 - .../hazmat/bindings/_rust/openssl/ciphers.pyi | 38 - .../hazmat/bindings/_rust/openssl/cmac.pyi | 18 - .../hazmat/bindings/_rust/openssl/dh.pyi | 51 - .../hazmat/bindings/_rust/openssl/dsa.pyi | 41 - .../hazmat/bindings/_rust/openssl/ec.pyi | 52 - .../hazmat/bindings/_rust/openssl/ed25519.pyi | 13 - .../hazmat/bindings/_rust/openssl/ed448.pyi | 13 - .../hazmat/bindings/_rust/openssl/hashes.pyi | 28 - .../hazmat/bindings/_rust/openssl/hmac.pyi | 22 - .../hazmat/bindings/_rust/openssl/kdf.pyi | 49 - .../hazmat/bindings/_rust/openssl/keys.pyi | 34 - .../bindings/_rust/openssl/poly1305.pyi | 15 - .../hazmat/bindings/_rust/openssl/rsa.pyi | 55 - .../hazmat/bindings/_rust/openssl/x25519.pyi | 13 - .../hazmat/bindings/_rust/openssl/x448.pyi | 13 - .../hazmat/bindings/_rust/pkcs12.pyi | 52 - .../hazmat/bindings/_rust/pkcs7.pyi | 50 - .../hazmat/bindings/_rust/test_support.pyi | 23 - .../hazmat/bindings/_rust/x509.pyi | 313 - .../hazmat/bindings/openssl/__init__.py | 3 - .../__pycache__/__init__.cpython-312.pyc | Bin 206 -> 0 bytes .../__pycache__/_conditional.cpython-312.pyc | Bin 5351 -> 0 bytes .../__pycache__/binding.cpython-312.pyc | Bin 5039 -> 0 bytes .../hazmat/bindings/openssl/_conditional.py | 191 - .../hazmat/bindings/openssl/binding.py | 122 - .../cryptography/hazmat/decrepit/__init__.py | 5 - .../__pycache__/__init__.cpython-312.pyc | Bin 249 -> 0 bytes .../hazmat/decrepit/ciphers/__init__.py | 5 - .../__pycache__/__init__.cpython-312.pyc | Bin 257 -> 0 bytes .../__pycache__/algorithms.cpython-312.pyc | Bin 4789 -> 0 bytes .../hazmat/decrepit/ciphers/algorithms.py | 112 - .../hazmat/primitives/__init__.py | 3 - .../__pycache__/__init__.cpython-312.pyc | Bin 200 -> 0 bytes .../__pycache__/_asymmetric.cpython-312.pyc | Bin 806 -> 0 bytes .../_cipheralgorithm.cpython-312.pyc | Bin 2486 -> 0 bytes .../_serialization.cpython-312.pyc | Bin 7030 -> 0 bytes .../__pycache__/cmac.cpython-312.pyc | Bin 428 -> 0 bytes .../__pycache__/constant_time.cpython-312.pyc | Bin 666 -> 0 bytes .../__pycache__/hashes.cpython-312.pyc | Bin 8270 -> 0 bytes .../__pycache__/hmac.cpython-312.pyc | Bin 587 -> 0 bytes .../__pycache__/keywrap.cpython-312.pyc | Bin 7452 -> 0 bytes .../__pycache__/padding.cpython-312.pyc | Bin 3251 -> 0 bytes .../__pycache__/poly1305.cpython-312.pyc | Bin 440 -> 0 bytes .../hazmat/primitives/_asymmetric.py | 19 - .../hazmat/primitives/_cipheralgorithm.py | 60 - .../hazmat/primitives/_serialization.py | 168 - .../hazmat/primitives/asymmetric/__init__.py | 3 - .../__pycache__/__init__.cpython-312.pyc | Bin 211 -> 0 bytes .../asymmetric/__pycache__/dh.cpython-312.pyc | Bin 6073 -> 0 bytes .../__pycache__/dsa.cpython-312.pyc | Bin 6919 -> 0 bytes .../asymmetric/__pycache__/ec.cpython-312.pyc | Bin 17827 -> 0 bytes .../__pycache__/ed25519.cpython-312.pyc | Bin 5607 -> 0 bytes .../__pycache__/ed448.cpython-312.pyc | Bin 5650 -> 0 bytes .../__pycache__/padding.cpython-312.pyc | Bin 4849 -> 0 bytes .../__pycache__/rsa.cpython-312.pyc | Bin 10122 -> 0 bytes .../__pycache__/types.cpython-312.pyc | Bin 3160 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 1325 -> 0 bytes .../__pycache__/x25519.cpython-312.pyc | Bin 5404 -> 0 bytes .../__pycache__/x448.cpython-312.pyc | Bin 5445 -> 0 bytes .../hazmat/primitives/asymmetric/dh.py | 147 - .../hazmat/primitives/asymmetric/dsa.py | 167 - .../hazmat/primitives/asymmetric/ec.py | 447 - .../hazmat/primitives/asymmetric/ed25519.py | 129 - .../hazmat/primitives/asymmetric/ed448.py | 131 - .../hazmat/primitives/asymmetric/padding.py | 113 - .../hazmat/primitives/asymmetric/rsa.py | 277 - .../hazmat/primitives/asymmetric/types.py | 111 - .../hazmat/primitives/asymmetric/utils.py | 24 - .../hazmat/primitives/asymmetric/x25519.py | 122 - .../hazmat/primitives/asymmetric/x448.py | 125 - .../hazmat/primitives/ciphers/__init__.py | 27 - .../__pycache__/__init__.cpython-312.pyc | Bin 639 -> 0 bytes .../ciphers/__pycache__/aead.cpython-312.pyc | Bin 829 -> 0 bytes .../__pycache__/algorithms.cpython-312.pyc | Bin 6043 -> 0 bytes .../ciphers/__pycache__/base.cpython-312.pyc | Bin 7083 -> 0 bytes .../ciphers/__pycache__/modes.cpython-312.pyc | Bin 11798 -> 0 bytes .../hazmat/primitives/ciphers/aead.py | 23 - .../hazmat/primitives/ciphers/algorithms.py | 183 - .../hazmat/primitives/ciphers/base.py | 146 - .../hazmat/primitives/ciphers/modes.py | 268 - .../cryptography/hazmat/primitives/cmac.py | 10 - .../hazmat/primitives/constant_time.py | 14 - .../cryptography/hazmat/primitives/hashes.py | 246 - .../cryptography/hazmat/primitives/hmac.py | 13 - .../hazmat/primitives/kdf/__init__.py | 23 - .../kdf/__pycache__/__init__.cpython-312.pyc | Bin 1247 -> 0 bytes .../kdf/__pycache__/argon2.cpython-312.pyc | Bin 581 -> 0 bytes .../kdf/__pycache__/concatkdf.cpython-312.pyc | Bin 5622 -> 0 bytes .../kdf/__pycache__/hkdf.cpython-312.pyc | Bin 4807 -> 0 bytes .../kdf/__pycache__/kbkdf.cpython-312.pyc | Bin 11298 -> 0 bytes .../kdf/__pycache__/pbkdf2.cpython-312.pyc | Bin 2726 -> 0 bytes .../kdf/__pycache__/scrypt.cpython-312.pyc | Bin 667 -> 0 bytes .../kdf/__pycache__/x963kdf.cpython-312.pyc | Bin 3112 -> 0 bytes .../hazmat/primitives/kdf/argon2.py | 13 - .../hazmat/primitives/kdf/concatkdf.py | 125 - .../hazmat/primitives/kdf/hkdf.py | 101 - .../hazmat/primitives/kdf/kbkdf.py | 305 - .../hazmat/primitives/kdf/pbkdf2.py | 62 - .../hazmat/primitives/kdf/scrypt.py | 19 - .../hazmat/primitives/kdf/x963kdf.py | 61 - .../cryptography/hazmat/primitives/keywrap.py | 177 - .../cryptography/hazmat/primitives/padding.py | 69 - .../hazmat/primitives/poly1305.py | 11 - .../primitives/serialization/__init__.py | 65 - .../__pycache__/__init__.cpython-312.pyc | Bin 1379 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 844 -> 0 bytes .../__pycache__/pkcs12.cpython-312.pyc | Bin 6628 -> 0 bytes .../__pycache__/pkcs7.cpython-312.pyc | Bin 17277 -> 0 bytes .../__pycache__/ssh.cpython-312.pyc | Bin 67201 -> 0 bytes .../hazmat/primitives/serialization/base.py | 14 - .../hazmat/primitives/serialization/pkcs12.py | 176 - .../hazmat/primitives/serialization/pkcs7.py | 411 - .../hazmat/primitives/serialization/ssh.py | 1619 --- .../hazmat/primitives/twofactor/__init__.py | 9 - .../__pycache__/__init__.cpython-312.pyc | Bin 453 -> 0 bytes .../__pycache__/hotp.cpython-312.pyc | Bin 5153 -> 0 bytes .../__pycache__/totp.cpython-312.pyc | Bin 2512 -> 0 bytes .../hazmat/primitives/twofactor/hotp.py | 101 - .../hazmat/primitives/twofactor/totp.py | 56 - .../site-packages/cryptography/py.typed | 0 .../site-packages/cryptography/utils.py | 139 - .../cryptography/x509/__init__.py | 270 - .../x509/__pycache__/__init__.cpython-312.pyc | Bin 8442 -> 0 bytes .../x509/__pycache__/base.cpython-312.pyc | Bin 33512 -> 0 bytes .../certificate_transparency.cpython-312.pyc | Bin 1408 -> 0 bytes .../__pycache__/extensions.cpython-312.pyc | Bin 112565 -> 0 bytes .../__pycache__/general_name.cpython-312.pyc | Bin 13087 -> 0 bytes .../x509/__pycache__/name.cpython-312.pyc | Bin 23217 -> 0 bytes .../x509/__pycache__/ocsp.cpython-312.pyc | Bin 14979 -> 0 bytes .../x509/__pycache__/oid.cpython-312.pyc | Bin 761 -> 0 bytes .../__pycache__/verification.cpython-312.pyc | Bin 1007 -> 0 bytes .../site-packages/cryptography/x509/base.py | 848 -- .../x509/certificate_transparency.py | 35 - .../cryptography/x509/extensions.py | 2528 ----- .../cryptography/x509/general_name.py | 281 - .../site-packages/cryptography/x509/name.py | 477 - .../site-packages/cryptography/x509/ocsp.py | 379 - .../site-packages/cryptography/x509/oid.py | 37 - .../cryptography/x509/verification.py | 34 - .../site-packages/dotenv/__init__.py | 49 - .../site-packages/dotenv/__main__.py | 6 - .../__pycache__/__init__.cpython-312.pyc | Bin 1682 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 349 -> 0 bytes .../dotenv/__pycache__/cli.cpython-312.pyc | Bin 8701 -> 0 bytes .../__pycache__/ipython.cpython-312.pyc | Bin 1958 -> 0 bytes .../dotenv/__pycache__/main.cpython-312.pyc | Bin 16593 -> 0 bytes .../dotenv/__pycache__/parser.cpython-312.pyc | Bin 9723 -> 0 bytes .../__pycache__/variables.cpython-312.pyc | Bin 5105 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 202 -> 0 bytes .../python3.12/site-packages/dotenv/cli.py | 174 - .../site-packages/dotenv/ipython.py | 39 - .../python3.12/site-packages/dotenv/main.py | 378 - .../python3.12/site-packages/dotenv/parser.py | 182 - .../python3.12/site-packages/dotenv/py.typed | 1 - .../site-packages/dotenv/variables.py | 88 - .../site-packages/dotenv/version.py | 1 - .../fastapi-0.95.1.dist-info/INSTALLER | 1 - .../fastapi-0.95.1.dist-info/METADATA | 555 -- .../fastapi-0.95.1.dist-info/RECORD | 91 - .../fastapi-0.95.1.dist-info/REQUESTED | 0 .../fastapi-0.95.1.dist-info/WHEEL | 4 - .../fastapi-0.95.1.dist-info/licenses/LICENSE | 21 - .../site-packages/fastapi/__init__.py | 25 - .../__pycache__/__init__.cpython-312.pyc | Bin 1091 -> 0 bytes .../__pycache__/applications.cpython-312.pyc | Bin 29478 -> 0 bytes .../__pycache__/background.cpython-312.pyc | Bin 242 -> 0 bytes .../__pycache__/concurrency.cpython-312.pyc | Bin 1647 -> 0 bytes .../datastructures.cpython-312.pyc | Bin 3250 -> 0 bytes .../__pycache__/encoders.cpython-312.pyc | Bin 5312 -> 0 bytes .../exception_handlers.cpython-312.pyc | Bin 1524 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 2613 -> 0 bytes .../__pycache__/logger.cpython-312.pyc | Bin 279 -> 0 bytes .../param_functions.cpython-312.pyc | Bin 7469 -> 0 bytes .../__pycache__/params.cpython-312.pyc | Bin 12328 -> 0 bytes .../__pycache__/requests.cpython-312.pyc | Bin 268 -> 0 bytes .../__pycache__/responses.cpython-312.pyc | Bin 1930 -> 0 bytes .../__pycache__/routing.cpython-312.pyc | Bin 43905 -> 0 bytes .../__pycache__/staticfiles.cpython-312.pyc | Bin 240 -> 0 bytes .../__pycache__/templating.cpython-312.pyc | Bin 242 -> 0 bytes .../__pycache__/testclient.cpython-312.pyc | Bin 237 -> 0 bytes .../fastapi/__pycache__/types.cpython-312.pyc | Bin 338 -> 0 bytes .../fastapi/__pycache__/utils.cpython-312.pyc | Bin 8633 -> 0 bytes .../__pycache__/websockets.cpython-312.pyc | Bin 317 -> 0 bytes .../site-packages/fastapi/applications.py | 910 -- .../site-packages/fastapi/background.py | 1 - .../site-packages/fastapi/concurrency.py | 40 - .../site-packages/fastapi/datastructures.py | 56 - .../fastapi/dependencies/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 190 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 3155 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 35262 -> 0 bytes .../fastapi/dependencies/models.py | 58 - .../fastapi/dependencies/utils.py | 846 -- .../site-packages/fastapi/encoders.py | 171 - .../fastapi/exception_handlers.py | 25 - .../site-packages/fastapi/exceptions.py | 37 - .../site-packages/fastapi/logger.py | 3 - .../fastapi/middleware/__init__.py | 1 - .../__pycache__/__init__.cpython-312.pyc | Bin 246 -> 0 bytes .../asyncexitstack.cpython-312.pyc | Bin 1825 -> 0 bytes .../__pycache__/cors.cpython-312.pyc | Bin 251 -> 0 bytes .../__pycache__/gzip.cpython-312.pyc | Bin 251 -> 0 bytes .../__pycache__/httpsredirect.cpython-312.pyc | Bin 280 -> 0 bytes .../__pycache__/trustedhost.cpython-312.pyc | Bin 274 -> 0 bytes .../__pycache__/wsgi.cpython-312.pyc | Bin 251 -> 0 bytes .../fastapi/middleware/asyncexitstack.py | 28 - .../site-packages/fastapi/middleware/cors.py | 1 - .../site-packages/fastapi/middleware/gzip.py | 1 - .../fastapi/middleware/httpsredirect.py | 3 - .../fastapi/middleware/trustedhost.py | 3 - .../site-packages/fastapi/middleware/wsgi.py | 1 - .../site-packages/fastapi/openapi/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 185 -> 0 bytes .../__pycache__/constants.cpython-312.pyc | Bin 302 -> 0 bytes .../openapi/__pycache__/docs.cpython-312.pyc | Bin 7338 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 22036 -> 0 bytes .../openapi/__pycache__/utils.cpython-312.pyc | Bin 18155 -> 0 bytes .../fastapi/openapi/constants.py | 2 - .../site-packages/fastapi/openapi/docs.py | 203 - .../site-packages/fastapi/openapi/models.py | 406 - .../site-packages/fastapi/openapi/utils.py | 448 - .../site-packages/fastapi/param_functions.py | 290 - .../site-packages/fastapi/params.py | 381 - .../python3.12/site-packages/fastapi/py.typed | 0 .../site-packages/fastapi/requests.py | 2 - .../site-packages/fastapi/responses.py | 36 - .../site-packages/fastapi/routing.py | 1289 --- .../fastapi/security/__init__.py | 15 - .../__pycache__/__init__.cpython-312.pyc | Bin 842 -> 0 bytes .../__pycache__/api_key.cpython-312.pyc | Bin 3833 -> 0 bytes .../security/__pycache__/base.cpython-312.pyc | Bin 504 -> 0 bytes .../security/__pycache__/http.cpython-312.pyc | Bin 7018 -> 0 bytes .../__pycache__/oauth2.cpython-312.pyc | Bin 9709 -> 0 bytes .../open_id_connect_url.cpython-312.pyc | Bin 1739 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 597 -> 0 bytes .../site-packages/fastapi/security/api_key.py | 92 - .../site-packages/fastapi/security/base.py | 6 - .../site-packages/fastapi/security/http.py | 165 - .../site-packages/fastapi/security/oauth2.py | 220 - .../fastapi/security/open_id_connect_url.py | 34 - .../site-packages/fastapi/security/utils.py | 10 - .../site-packages/fastapi/staticfiles.py | 1 - .../site-packages/fastapi/templating.py | 1 - .../site-packages/fastapi/testclient.py | 1 - .../python3.12/site-packages/fastapi/types.py | 3 - .../python3.12/site-packages/fastapi/utils.py | 204 - .../site-packages/fastapi/websockets.py | 3 - .../h11-0.16.0.dist-info/INSTALLER | 1 - .../h11-0.16.0.dist-info/METADATA | 202 - .../site-packages/h11-0.16.0.dist-info/RECORD | 29 - .../site-packages/h11-0.16.0.dist-info/WHEEL | 5 - .../h11-0.16.0.dist-info/licenses/LICENSE.txt | 22 - .../h11-0.16.0.dist-info/top_level.txt | 1 - .../python3.12/site-packages/h11/__init__.py | 62 - .../h11/__pycache__/__init__.cpython-312.pyc | Bin 1064 -> 0 bytes .../h11/__pycache__/_abnf.cpython-312.pyc | Bin 1770 -> 0 bytes .../__pycache__/_connection.cpython-312.pyc | Bin 23099 -> 0 bytes .../h11/__pycache__/_events.cpython-312.pyc | Bin 13215 -> 0 bytes .../h11/__pycache__/_headers.cpython-312.pyc | Bin 7985 -> 0 bytes .../h11/__pycache__/_readers.cpython-312.pyc | Bin 9641 -> 0 bytes .../_receivebuffer.cpython-312.pyc | Bin 4690 -> 0 bytes .../h11/__pycache__/_state.cpython-312.pyc | Bin 8448 -> 0 bytes .../h11/__pycache__/_util.cpython-312.pyc | Bin 4705 -> 0 bytes .../h11/__pycache__/_version.cpython-312.pyc | Bin 202 -> 0 bytes .../h11/__pycache__/_writers.cpython-312.pyc | Bin 6282 -> 0 bytes .../lib/python3.12/site-packages/h11/_abnf.py | 132 - .../site-packages/h11/_connection.py | 659 -- .../python3.12/site-packages/h11/_events.py | 369 - .../python3.12/site-packages/h11/_headers.py | 282 - .../python3.12/site-packages/h11/_readers.py | 250 - .../site-packages/h11/_receivebuffer.py | 153 - .../python3.12/site-packages/h11/_state.py | 365 - .../lib/python3.12/site-packages/h11/_util.py | 135 - .../python3.12/site-packages/h11/_version.py | 16 - .../python3.12/site-packages/h11/_writers.py | 145 - .../lib/python3.12/site-packages/h11/py.typed | 1 - .../httpcore-1.0.9.dist-info/INSTALLER | 1 - .../httpcore-1.0.9.dist-info/METADATA | 625 -- .../httpcore-1.0.9.dist-info/RECORD | 68 - .../httpcore-1.0.9.dist-info/WHEEL | 4 - .../licenses/LICENSE.md | 27 - .../site-packages/httpcore/__init__.py | 141 - .../__pycache__/__init__.cpython-312.pyc | Bin 3160 -> 0 bytes .../httpcore/__pycache__/_api.cpython-312.pyc | Bin 3764 -> 0 bytes .../__pycache__/_exceptions.cpython-312.pyc | Bin 3179 -> 0 bytes .../__pycache__/_models.cpython-312.pyc | Bin 23110 -> 0 bytes .../httpcore/__pycache__/_ssl.cpython-312.pyc | Bin 599 -> 0 bytes .../_synchronization.cpython-312.pyc | Bin 14174 -> 0 bytes .../__pycache__/_trace.cpython-312.pyc | Bin 5591 -> 0 bytes .../__pycache__/_utils.cpython-312.pyc | Bin 1279 -> 0 bytes .../python3.12/site-packages/httpcore/_api.py | 94 - .../site-packages/httpcore/_async/__init__.py | 39 - .../__pycache__/__init__.cpython-312.pyc | Bin 1612 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 11789 -> 0 bytes .../connection_pool.cpython-312.pyc | Bin 19663 -> 0 bytes .../_async/__pycache__/http11.cpython-312.pyc | Bin 20228 -> 0 bytes .../_async/__pycache__/http2.cpython-312.pyc | Bin 31422 -> 0 bytes .../__pycache__/http_proxy.cpython-312.pyc | Bin 17989 -> 0 bytes .../__pycache__/interfaces.cpython-312.pyc | Bin 5743 -> 0 bytes .../__pycache__/socks_proxy.cpython-312.pyc | Bin 16874 -> 0 bytes .../httpcore/_async/connection.py | 222 - .../httpcore/_async/connection_pool.py | 420 - .../site-packages/httpcore/_async/http11.py | 379 - .../site-packages/httpcore/_async/http2.py | 592 -- .../httpcore/_async/http_proxy.py | 367 - .../httpcore/_async/interfaces.py | 137 - .../httpcore/_async/socks_proxy.py | 341 - .../httpcore/_backends/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 188 -> 0 bytes .../__pycache__/anyio.cpython-312.pyc | Bin 8618 -> 0 bytes .../__pycache__/auto.cpython-312.pyc | Bin 2680 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 4882 -> 0 bytes .../__pycache__/mock.cpython-312.pyc | Bin 7146 -> 0 bytes .../__pycache__/sync.cpython-312.pyc | Bin 11419 -> 0 bytes .../__pycache__/trio.cpython-312.pyc | Bin 8949 -> 0 bytes .../site-packages/httpcore/_backends/anyio.py | 146 - .../site-packages/httpcore/_backends/auto.py | 52 - .../site-packages/httpcore/_backends/base.py | 101 - .../site-packages/httpcore/_backends/mock.py | 143 - .../site-packages/httpcore/_backends/sync.py | 241 - .../site-packages/httpcore/_backends/trio.py | 159 - .../site-packages/httpcore/_exceptions.py | 81 - .../site-packages/httpcore/_models.py | 516 - .../python3.12/site-packages/httpcore/_ssl.py | 9 - .../site-packages/httpcore/_sync/__init__.py | 39 - .../__pycache__/__init__.cpython-312.pyc | Bin 1566 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 10409 -> 0 bytes .../connection_pool.cpython-312.pyc | Bin 18742 -> 0 bytes .../_sync/__pycache__/http11.cpython-312.pyc | Bin 17772 -> 0 bytes .../_sync/__pycache__/http2.cpython-312.pyc | Bin 27427 -> 0 bytes .../__pycache__/http_proxy.cpython-312.pyc | Bin 17172 -> 0 bytes .../__pycache__/interfaces.cpython-312.pyc | Bin 5290 -> 0 bytes .../__pycache__/socks_proxy.cpython-312.pyc | Bin 15625 -> 0 bytes .../httpcore/_sync/connection.py | 222 - .../httpcore/_sync/connection_pool.py | 420 - .../site-packages/httpcore/_sync/http11.py | 379 - .../site-packages/httpcore/_sync/http2.py | 592 -- .../httpcore/_sync/http_proxy.py | 367 - .../httpcore/_sync/interfaces.py | 137 - .../httpcore/_sync/socks_proxy.py | 341 - .../httpcore/_synchronization.py | 318 - .../site-packages/httpcore/_trace.py | 107 - .../site-packages/httpcore/_utils.py | 37 - .../site-packages/httpcore/py.typed | 0 .../httpx-0.27.0.dist-info/INSTALLER | 1 - .../httpx-0.27.0.dist-info/METADATA | 209 - .../httpx-0.27.0.dist-info/RECORD | 57 - .../httpx-0.27.0.dist-info/REQUESTED | 0 .../httpx-0.27.0.dist-info/WHEEL | 4 - .../httpx-0.27.0.dist-info/entry_points.txt | 2 - .../licenses/LICENSE.md | 12 - .../site-packages/httpx/__init__.py | 138 - .../__pycache__/__init__.cpython-312.pyc | Bin 3208 -> 0 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 304 -> 0 bytes .../httpx/__pycache__/_api.cpython-312.pyc | Bin 11094 -> 0 bytes .../httpx/__pycache__/_auth.cpython-312.pyc | Bin 15542 -> 0 bytes .../httpx/__pycache__/_client.cpython-312.pyc | Bin 64864 -> 0 bytes .../httpx/__pycache__/_compat.cpython-312.pyc | Bin 1670 -> 0 bytes .../httpx/__pycache__/_config.cpython-312.pyc | Bin 15712 -> 0 bytes .../__pycache__/_content.cpython-312.pyc | Bin 10282 -> 0 bytes .../__pycache__/_decoders.cpython-312.pyc | Bin 14057 -> 0 bytes .../__pycache__/_exceptions.cpython-312.pyc | Bin 11907 -> 0 bytes .../httpx/__pycache__/_main.cpython-312.pyc | Bin 20573 -> 0 bytes .../httpx/__pycache__/_models.cpython-312.pyc | Bin 55012 -> 0 bytes .../__pycache__/_multipart.cpython-312.pyc | Bin 11925 -> 0 bytes .../__pycache__/_status_codes.cpython-312.pyc | Bin 7162 -> 0 bytes .../httpx/__pycache__/_types.cpython-312.pyc | Bin 4208 -> 0 bytes .../__pycache__/_urlparse.cpython-312.pyc | Bin 16771 -> 0 bytes .../httpx/__pycache__/_urls.cpython-312.pyc | Bin 28177 -> 0 bytes .../httpx/__pycache__/_utils.cpython-312.pyc | Bin 18299 -> 0 bytes .../site-packages/httpx/__version__.py | 3 - .../python3.12/site-packages/httpx/_api.py | 467 - .../python3.12/site-packages/httpx/_auth.py | 345 - .../python3.12/site-packages/httpx/_client.py | 2052 ---- .../python3.12/site-packages/httpx/_compat.py | 41 - .../python3.12/site-packages/httpx/_config.py | 370 - .../site-packages/httpx/_content.py | 236 - .../site-packages/httpx/_decoders.py | 329 - .../site-packages/httpx/_exceptions.py | 347 - .../python3.12/site-packages/httpx/_main.py | 509 - .../python3.12/site-packages/httpx/_models.py | 1209 --- .../site-packages/httpx/_multipart.py | 269 - .../site-packages/httpx/_status_codes.py | 160 - .../httpx/_transports/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 187 -> 0 bytes .../__pycache__/asgi.cpython-312.pyc | Bin 7552 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 3836 -> 0 bytes .../__pycache__/default.cpython-312.pyc | Bin 16393 -> 0 bytes .../__pycache__/mock.cpython-312.pyc | Bin 1906 -> 0 bytes .../__pycache__/wsgi.cpython-312.pyc | Bin 6774 -> 0 bytes .../site-packages/httpx/_transports/asgi.py | 181 - .../site-packages/httpx/_transports/base.py | 84 - .../httpx/_transports/default.py | 385 - .../site-packages/httpx/_transports/mock.py | 40 - .../site-packages/httpx/_transports/wsgi.py | 146 - .../python3.12/site-packages/httpx/_types.py | 134 - .../site-packages/httpx/_urlparse.py | 502 - .../python3.12/site-packages/httpx/_urls.py | 646 -- .../python3.12/site-packages/httpx/_utils.py | 440 - .../python3.12/site-packages/httpx/py.typed | 0 .../idna-3.10.dist-info/INSTALLER | 1 - .../idna-3.10.dist-info/LICENSE.md | 31 - .../idna-3.10.dist-info/METADATA | 250 - .../site-packages/idna-3.10.dist-info/RECORD | 22 - .../site-packages/idna-3.10.dist-info/WHEEL | 4 - .../python3.12/site-packages/idna/__init__.py | 45 - .../idna/__pycache__/__init__.cpython-312.pyc | Bin 872 -> 0 bytes .../idna/__pycache__/codec.cpython-312.pyc | Bin 4972 -> 0 bytes .../idna/__pycache__/compat.cpython-312.pyc | Bin 876 -> 0 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 16162 -> 0 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 99462 -> 0 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 2624 -> 0 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 203 -> 0 bytes .../__pycache__/uts46data.cpython-312.pyc | Bin 158832 -> 0 bytes .../python3.12/site-packages/idna/codec.py | 122 - .../python3.12/site-packages/idna/compat.py | 15 - .../lib/python3.12/site-packages/idna/core.py | 437 - .../python3.12/site-packages/idna/idnadata.py | 4243 -------- .../site-packages/idna/intranges.py | 57 - .../site-packages/idna/package_data.py | 1 - .../python3.12/site-packages/idna/py.typed | 0 .../site-packages/idna/uts46data.py | 8681 ----------------- .../iniconfig-2.1.0.dist-info/INSTALLER | 1 - .../iniconfig-2.1.0.dist-info/METADATA | 81 - .../iniconfig-2.1.0.dist-info/RECORD | 14 - .../iniconfig-2.1.0.dist-info/WHEEL | 4 - .../licenses/LICENSE | 21 - .../site-packages/iniconfig/__init__.py | 216 - .../__pycache__/__init__.cpython-312.pyc | Bin 8905 -> 0 bytes .../__pycache__/_parse.cpython-312.pyc | Bin 3326 -> 0 bytes .../__pycache__/_version.cpython-312.pyc | Bin 640 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 1255 -> 0 bytes .../site-packages/iniconfig/_parse.py | 82 - .../site-packages/iniconfig/_version.py | 21 - .../site-packages/iniconfig/exceptions.py | 20 - .../site-packages/iniconfig/py.typed | 0 .../packaging-25.0.dist-info/INSTALLER | 1 - .../packaging-25.0.dist-info/METADATA | 105 - .../packaging-25.0.dist-info/RECORD | 40 - .../packaging-25.0.dist-info/WHEEL | 4 - .../packaging-25.0.dist-info/licenses/LICENSE | 3 - .../licenses/LICENSE.APACHE | 177 - .../licenses/LICENSE.BSD | 23 - .../site-packages/packaging/__init__.py | 15 - .../__pycache__/__init__.cpython-312.pyc | Bin 544 -> 0 bytes .../__pycache__/_elffile.cpython-312.pyc | Bin 5009 -> 0 bytes .../__pycache__/_manylinux.cpython-312.pyc | Bin 9734 -> 0 bytes .../__pycache__/_musllinux.cpython-312.pyc | Bin 4552 -> 0 bytes .../__pycache__/_parser.cpython-312.pyc | Bin 13984 -> 0 bytes .../__pycache__/_structures.cpython-312.pyc | Bin 3227 -> 0 bytes .../__pycache__/_tokenizer.cpython-312.pyc | Bin 7925 -> 0 bytes .../__pycache__/markers.cpython-312.pyc | Bin 12736 -> 0 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 27227 -> 0 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 4396 -> 0 bytes .../__pycache__/specifiers.cpython-312.pyc | Bin 39026 -> 0 bytes .../__pycache__/tags.cpython-312.pyc | Bin 24802 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 6621 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 20452 -> 0 bytes .../site-packages/packaging/_elffile.py | 109 - .../site-packages/packaging/_manylinux.py | 262 - .../site-packages/packaging/_musllinux.py | 85 - .../site-packages/packaging/_parser.py | 353 - .../site-packages/packaging/_structures.py | 61 - .../site-packages/packaging/_tokenizer.py | 195 - .../packaging/licenses/__init__.py | 145 - .../__pycache__/__init__.cpython-312.pyc | Bin 4103 -> 0 bytes .../__pycache__/_spdx.cpython-312.pyc | Bin 47350 -> 0 bytes .../site-packages/packaging/licenses/_spdx.py | 759 -- .../site-packages/packaging/markers.py | 362 - .../site-packages/packaging/metadata.py | 862 -- .../site-packages/packaging/py.typed | 0 .../site-packages/packaging/requirements.py | 91 - .../site-packages/packaging/specifiers.py | 1019 -- .../site-packages/packaging/tags.py | 656 -- .../site-packages/packaging/utils.py | 163 - .../site-packages/packaging/version.py | 582 -- .../pip-24.0.dist-info/AUTHORS.txt | 760 -- .../pip-24.0.dist-info/INSTALLER | 1 - .../pip-24.0.dist-info/LICENSE.txt | 20 - .../site-packages/pip-24.0.dist-info/METADATA | 88 - .../site-packages/pip-24.0.dist-info/RECORD | 1024 -- .../pip-24.0.dist-info/REQUESTED | 0 .../site-packages/pip-24.0.dist-info/WHEEL | 5 - .../pip-24.0.dist-info/entry_points.txt | 4 - .../pip-24.0.dist-info/top_level.txt | 1 - .../python3.12/site-packages/pip/__init__.py | 13 - .../python3.12/site-packages/pip/__main__.py | 24 - .../site-packages/pip/__pip-runner__.py | 50 - .../pip/__pycache__/__init__.cpython-312.pyc | Bin 682 -> 0 bytes .../pip/__pycache__/__main__.cpython-312.pyc | Bin 838 -> 0 bytes .../__pip-runner__.cpython-312.pyc | Bin 2196 -> 0 bytes .../site-packages/pip/_internal/__init__.py | 18 - .../__pycache__/__init__.cpython-312.pyc | Bin 784 -> 0 bytes .../__pycache__/build_env.cpython-312.pyc | Bin 14288 -> 0 bytes .../__pycache__/cache.cpython-312.pyc | Bin 12657 -> 0 bytes .../__pycache__/configuration.cpython-312.pyc | Bin 17654 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 33272 -> 0 bytes .../__pycache__/main.cpython-312.pyc | Bin 667 -> 0 bytes .../__pycache__/pyproject.cpython-312.pyc | Bin 4962 -> 0 bytes .../self_outdated_check.cpython-312.pyc | Bin 10549 -> 0 bytes .../__pycache__/wheel_builder.cpython-312.pyc | Bin 13622 -> 0 bytes .../site-packages/pip/_internal/build_env.py | 311 - .../site-packages/pip/_internal/cache.py | 290 - .../pip/_internal/cli/__init__.py | 4 - .../cli/__pycache__/__init__.cpython-312.pyc | Bin 275 -> 0 bytes .../autocompletion.cpython-312.pyc | Bin 8462 -> 0 bytes .../__pycache__/base_command.cpython-312.pyc | Bin 10446 -> 0 bytes .../__pycache__/cmdoptions.cpython-312.pyc | Bin 30371 -> 0 bytes .../command_context.cpython-312.pyc | Bin 1772 -> 0 bytes .../cli/__pycache__/main.cpython-312.pyc | Bin 2295 -> 0 bytes .../__pycache__/main_parser.cpython-312.pyc | Bin 4902 -> 0 bytes .../cli/__pycache__/parser.cpython-312.pyc | Bin 14999 -> 0 bytes .../__pycache__/progress_bars.cpython-312.pyc | Bin 2614 -> 0 bytes .../__pycache__/req_command.cpython-312.pyc | Bin 18834 -> 0 bytes .../cli/__pycache__/spinners.cpython-312.pyc | Bin 7831 -> 0 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 372 -> 0 bytes .../pip/_internal/cli/autocompletion.py | 172 - .../pip/_internal/cli/base_command.py | 236 - .../pip/_internal/cli/cmdoptions.py | 1074 -- .../pip/_internal/cli/command_context.py | 27 - .../site-packages/pip/_internal/cli/main.py | 79 - .../pip/_internal/cli/main_parser.py | 134 - .../site-packages/pip/_internal/cli/parser.py | 294 - .../pip/_internal/cli/progress_bars.py | 68 - .../pip/_internal/cli/req_command.py | 505 - .../pip/_internal/cli/spinners.py | 159 - .../pip/_internal/cli/status_codes.py | 6 - .../pip/_internal/commands/__init__.py | 132 - .../__pycache__/__init__.cpython-312.pyc | Bin 3999 -> 0 bytes .../__pycache__/cache.cpython-312.pyc | Bin 9708 -> 0 bytes .../__pycache__/check.cpython-312.pyc | Bin 2087 -> 0 bytes .../__pycache__/completion.cpython-312.pyc | Bin 5189 -> 0 bytes .../__pycache__/configuration.cpython-312.pyc | Bin 13209 -> 0 bytes .../__pycache__/debug.cpython-312.pyc | Bin 10155 -> 0 bytes .../__pycache__/download.cpython-312.pyc | Bin 7583 -> 0 bytes .../__pycache__/freeze.cpython-312.pyc | Bin 4353 -> 0 bytes .../commands/__pycache__/hash.cpython-312.pyc | Bin 2980 -> 0 bytes .../commands/__pycache__/help.cpython-312.pyc | Bin 1670 -> 0 bytes .../__pycache__/index.cpython-312.pyc | Bin 6717 -> 0 bytes .../__pycache__/inspect.cpython-312.pyc | Bin 3972 -> 0 bytes .../__pycache__/install.cpython-312.pyc | Bin 28902 -> 0 bytes .../commands/__pycache__/list.cpython-312.pyc | Bin 15397 -> 0 bytes .../__pycache__/search.cpython-312.pyc | Bin 7615 -> 0 bytes .../commands/__pycache__/show.cpython-312.pyc | Bin 9725 -> 0 bytes .../__pycache__/uninstall.cpython-312.pyc | Bin 4723 -> 0 bytes .../__pycache__/wheel.cpython-312.pyc | Bin 8947 -> 0 bytes .../pip/_internal/commands/cache.py | 225 - .../pip/_internal/commands/check.py | 54 - .../pip/_internal/commands/completion.py | 130 - .../pip/_internal/commands/configuration.py | 280 - .../pip/_internal/commands/debug.py | 201 - .../pip/_internal/commands/download.py | 147 - .../pip/_internal/commands/freeze.py | 108 - .../pip/_internal/commands/hash.py | 59 - .../pip/_internal/commands/help.py | 41 - .../pip/_internal/commands/index.py | 139 - .../pip/_internal/commands/inspect.py | 92 - .../pip/_internal/commands/install.py | 774 -- .../pip/_internal/commands/list.py | 368 - .../pip/_internal/commands/search.py | 174 - .../pip/_internal/commands/show.py | 189 - .../pip/_internal/commands/uninstall.py | 113 - .../pip/_internal/commands/wheel.py | 183 - .../pip/_internal/configuration.py | 383 - .../pip/_internal/distributions/__init__.py | 21 - .../__pycache__/__init__.cpython-312.pyc | Bin 938 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 2859 -> 0 bytes .../__pycache__/installed.cpython-312.pyc | Bin 1694 -> 0 bytes .../__pycache__/sdist.cpython-312.pyc | Bin 8471 -> 0 bytes .../__pycache__/wheel.cpython-312.pyc | Bin 2240 -> 0 bytes .../pip/_internal/distributions/base.py | 51 - .../pip/_internal/distributions/installed.py | 29 - .../pip/_internal/distributions/sdist.py | 156 - .../pip/_internal/distributions/wheel.py | 40 - .../site-packages/pip/_internal/exceptions.py | 728 -- .../pip/_internal/index/__init__.py | 2 - .../__pycache__/__init__.cpython-312.pyc | Bin 229 -> 0 bytes .../__pycache__/collector.cpython-312.pyc | Bin 21880 -> 0 bytes .../package_finder.cpython-312.pyc | Bin 40717 -> 0 bytes .../index/__pycache__/sources.cpython-312.pyc | Bin 12601 -> 0 bytes .../pip/_internal/index/collector.py | 507 - .../pip/_internal/index/package_finder.py | 1027 -- .../pip/_internal/index/sources.py | 285 - .../pip/_internal/locations/__init__.py | 467 - .../__pycache__/__init__.cpython-312.pyc | Bin 16773 -> 0 bytes .../__pycache__/_distutils.cpython-312.pyc | Bin 6845 -> 0 bytes .../__pycache__/_sysconfig.cpython-312.pyc | Bin 8008 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 3778 -> 0 bytes .../pip/_internal/locations/_distutils.py | 172 - .../pip/_internal/locations/_sysconfig.py | 213 - .../pip/_internal/locations/base.py | 81 - .../site-packages/pip/_internal/main.py | 12 - .../pip/_internal/metadata/__init__.py | 128 - .../__pycache__/__init__.cpython-312.pyc | Bin 5879 -> 0 bytes .../__pycache__/_json.cpython-312.pyc | Bin 2872 -> 0 bytes .../metadata/__pycache__/base.cpython-312.pyc | Bin 35709 -> 0 bytes .../__pycache__/pkg_resources.cpython-312.pyc | Bin 15784 -> 0 bytes .../pip/_internal/metadata/_json.py | 84 - .../pip/_internal/metadata/base.py | 702 -- .../_internal/metadata/importlib/__init__.py | 6 - .../__pycache__/__init__.cpython-312.pyc | Bin 355 -> 0 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 3330 -> 0 bytes .../__pycache__/_dists.cpython-312.pyc | Bin 13422 -> 0 bytes .../__pycache__/_envs.cpython-312.pyc | Bin 11177 -> 0 bytes .../_internal/metadata/importlib/_compat.py | 55 - .../_internal/metadata/importlib/_dists.py | 227 - .../pip/_internal/metadata/importlib/_envs.py | 189 - .../pip/_internal/metadata/pkg_resources.py | 278 - .../pip/_internal/models/__init__.py | 2 - .../__pycache__/__init__.cpython-312.pyc | Bin 263 -> 0 bytes .../__pycache__/candidate.cpython-312.pyc | Bin 1902 -> 0 bytes .../__pycache__/direct_url.cpython-312.pyc | Bin 11193 -> 0 bytes .../format_control.cpython-312.pyc | Bin 4224 -> 0 bytes .../models/__pycache__/index.cpython-312.pyc | Bin 1691 -> 0 bytes .../installation_report.cpython-312.pyc | Bin 2266 -> 0 bytes .../models/__pycache__/link.cpython-312.pyc | Bin 25997 -> 0 bytes .../models/__pycache__/scheme.cpython-312.pyc | Bin 1166 -> 0 bytes .../__pycache__/search_scope.cpython-312.pyc | Bin 5085 -> 0 bytes .../selection_prefs.cpython-312.pyc | Bin 1848 -> 0 bytes .../__pycache__/target_python.cpython-312.pyc | Bin 4951 -> 0 bytes .../models/__pycache__/wheel.cpython-312.pyc | Bin 5777 -> 0 bytes .../pip/_internal/models/candidate.py | 30 - .../pip/_internal/models/direct_url.py | 235 - .../pip/_internal/models/format_control.py | 78 - .../pip/_internal/models/index.py | 28 - .../_internal/models/installation_report.py | 56 - .../pip/_internal/models/link.py | 579 -- .../pip/_internal/models/scheme.py | 31 - .../pip/_internal/models/search_scope.py | 132 - .../pip/_internal/models/selection_prefs.py | 51 - .../pip/_internal/models/target_python.py | 122 - .../pip/_internal/models/wheel.py | 92 - .../pip/_internal/network/__init__.py | 2 - .../__pycache__/__init__.cpython-312.pyc | Bin 251 -> 0 bytes .../network/__pycache__/auth.cpython-312.pyc | Bin 21985 -> 0 bytes .../network/__pycache__/cache.cpython-312.pyc | Bin 6512 -> 0 bytes .../__pycache__/download.cpython-312.pyc | Bin 8544 -> 0 bytes .../__pycache__/lazy_wheel.cpython-312.pyc | Bin 11657 -> 0 bytes .../__pycache__/session.cpython-312.pyc | Bin 18771 -> 0 bytes .../network/__pycache__/utils.cpython-312.pyc | Bin 2250 -> 0 bytes .../__pycache__/xmlrpc.cpython-312.pyc | Bin 2941 -> 0 bytes .../pip/_internal/network/auth.py | 561 -- .../pip/_internal/network/cache.py | 106 - .../pip/_internal/network/download.py | 186 - .../pip/_internal/network/lazy_wheel.py | 210 - .../pip/_internal/network/session.py | 520 - .../pip/_internal/network/utils.py | 96 - .../pip/_internal/network/xmlrpc.py | 62 - .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 194 -> 0 bytes .../__pycache__/check.cpython-312.pyc | Bin 7576 -> 0 bytes .../__pycache__/freeze.cpython-312.pyc | Bin 10111 -> 0 bytes .../__pycache__/prepare.cpython-312.pyc | Bin 25700 -> 0 bytes .../_internal/operations/build/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 200 -> 0 bytes .../__pycache__/build_tracker.cpython-312.pyc | Bin 7811 -> 0 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 1877 -> 0 bytes .../metadata_editable.cpython-312.pyc | Bin 1911 -> 0 bytes .../metadata_legacy.cpython-312.pyc | Bin 3062 -> 0 bytes .../build/__pycache__/wheel.cpython-312.pyc | Bin 1678 -> 0 bytes .../wheel_editable.cpython-312.pyc | Bin 2019 -> 0 bytes .../__pycache__/wheel_legacy.cpython-312.pyc | Bin 3926 -> 0 bytes .../operations/build/build_tracker.py | 139 - .../_internal/operations/build/metadata.py | 39 - .../operations/build/metadata_editable.py | 41 - .../operations/build/metadata_legacy.py | 74 - .../pip/_internal/operations/build/wheel.py | 37 - .../operations/build/wheel_editable.py | 46 - .../operations/build/wheel_legacy.py | 102 - .../pip/_internal/operations/check.py | 187 - .../pip/_internal/operations/freeze.py | 255 - .../_internal/operations/install/__init__.py | 2 - .../__pycache__/__init__.cpython-312.pyc | Bin 263 -> 0 bytes .../editable_legacy.cpython-312.pyc | Bin 1814 -> 0 bytes .../install/__pycache__/wheel.cpython-312.pyc | Bin 33850 -> 0 bytes .../operations/install/editable_legacy.py | 46 - .../pip/_internal/operations/install/wheel.py | 734 -- .../pip/_internal/operations/prepare.py | 730 -- .../site-packages/pip/_internal/pyproject.py | 179 - .../pip/_internal/req/__init__.py | 92 - .../req/__pycache__/__init__.cpython-312.pyc | Bin 3738 -> 0 bytes .../__pycache__/constructors.cpython-312.pyc | Bin 21578 -> 0 bytes .../req/__pycache__/req_file.cpython-312.pyc | Bin 21449 -> 0 bytes .../__pycache__/req_install.cpython-312.pyc | Bin 38323 -> 0 bytes .../req/__pycache__/req_set.cpython-312.pyc | Bin 7209 -> 0 bytes .../__pycache__/req_uninstall.cpython-312.pyc | Bin 32966 -> 0 bytes .../pip/_internal/req/constructors.py | 576 -- .../pip/_internal/req/req_file.py | 554 -- .../pip/_internal/req/req_install.py | 923 -- .../pip/_internal/req/req_set.py | 119 - .../pip/_internal/req/req_uninstall.py | 649 -- .../pip/_internal/resolution/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 194 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 1182 -> 0 bytes .../pip/_internal/resolution/base.py | 20 - .../_internal/resolution/legacy/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 201 -> 0 bytes .../__pycache__/resolver.cpython-312.pyc | Bin 22421 -> 0 bytes .../_internal/resolution/legacy/resolver.py | 598 -- .../resolution/resolvelib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 205 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 8334 -> 0 bytes .../__pycache__/candidates.cpython-312.pyc | Bin 30374 -> 0 bytes .../__pycache__/factory.cpython-312.pyc | Bin 32098 -> 0 bytes .../found_candidates.cpython-312.pyc | Bin 6205 -> 0 bytes .../__pycache__/provider.cpython-312.pyc | Bin 10375 -> 0 bytes .../__pycache__/reporter.cpython-312.pyc | Bin 4932 -> 0 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 11410 -> 0 bytes .../__pycache__/resolver.cpython-312.pyc | Bin 12340 -> 0 bytes .../_internal/resolution/resolvelib/base.py | 141 - .../resolution/resolvelib/candidates.py | 597 -- .../resolution/resolvelib/factory.py | 812 -- .../resolution/resolvelib/found_candidates.py | 155 - .../resolution/resolvelib/provider.py | 255 - .../resolution/resolvelib/reporter.py | 80 - .../resolution/resolvelib/requirements.py | 166 - .../resolution/resolvelib/resolver.py | 317 - .../pip/_internal/self_outdated_check.py | 248 - .../pip/_internal/utils/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 189 -> 0 bytes .../__pycache__/_jaraco_text.cpython-312.pyc | Bin 4530 -> 0 bytes .../utils/__pycache__/_log.cpython-312.pyc | Bin 1860 -> 0 bytes .../utils/__pycache__/appdirs.cpython-312.pyc | Bin 2404 -> 0 bytes .../utils/__pycache__/compat.cpython-312.pyc | Bin 2207 -> 0 bytes .../compatibility_tags.cpython-312.pyc | Bin 5555 -> 0 bytes .../__pycache__/datetime.cpython-312.pyc | Bin 678 -> 0 bytes .../__pycache__/deprecation.cpython-312.pyc | Bin 4180 -> 0 bytes .../direct_url_helpers.cpython-312.pyc | Bin 3547 -> 0 bytes .../__pycache__/egg_link.cpython-312.pyc | Bin 3220 -> 0 bytes .../__pycache__/encoding.cpython-312.pyc | Bin 2149 -> 0 bytes .../__pycache__/entrypoints.cpython-312.pyc | Bin 3987 -> 0 bytes .../__pycache__/filesystem.cpython-312.pyc | Bin 7449 -> 0 bytes .../__pycache__/filetypes.cpython-312.pyc | Bin 1158 -> 0 bytes .../utils/__pycache__/glibc.cpython-312.pyc | Bin 2336 -> 0 bytes .../utils/__pycache__/hashes.cpython-312.pyc | Bin 7548 -> 0 bytes .../utils/__pycache__/logging.cpython-312.pyc | Bin 13543 -> 0 bytes .../utils/__pycache__/misc.cpython-312.pyc | Bin 34115 -> 0 bytes .../utils/__pycache__/models.cpython-312.pyc | Bin 2706 -> 0 bytes .../__pycache__/packaging.cpython-312.pyc | Bin 2577 -> 0 bytes .../setuptools_build.cpython-312.pyc | Bin 4541 -> 0 bytes .../__pycache__/subprocess.cpython-312.pyc | Bin 8704 -> 0 bytes .../__pycache__/temp_dir.cpython-312.pyc | Bin 12050 -> 0 bytes .../__pycache__/unpacking.cpython-312.pyc | Bin 11100 -> 0 bytes .../utils/__pycache__/urls.cpython-312.pyc | Bin 2394 -> 0 bytes .../__pycache__/virtualenv.cpython-312.pyc | Bin 4474 -> 0 bytes .../utils/__pycache__/wheel.cpython-312.pyc | Bin 5920 -> 0 bytes .../pip/_internal/utils/_jaraco_text.py | 109 - .../site-packages/pip/_internal/utils/_log.py | 38 - .../pip/_internal/utils/appdirs.py | 52 - .../pip/_internal/utils/compat.py | 63 - .../pip/_internal/utils/compatibility_tags.py | 165 - .../pip/_internal/utils/datetime.py | 11 - .../pip/_internal/utils/deprecation.py | 120 - .../pip/_internal/utils/direct_url_helpers.py | 87 - .../pip/_internal/utils/egg_link.py | 80 - .../pip/_internal/utils/encoding.py | 36 - .../pip/_internal/utils/entrypoints.py | 84 - .../pip/_internal/utils/filesystem.py | 153 - .../pip/_internal/utils/filetypes.py | 27 - .../pip/_internal/utils/glibc.py | 88 - .../pip/_internal/utils/hashes.py | 151 - .../pip/_internal/utils/logging.py | 348 - .../site-packages/pip/_internal/utils/misc.py | 783 -- .../pip/_internal/utils/models.py | 39 - .../pip/_internal/utils/packaging.py | 57 - .../pip/_internal/utils/setuptools_build.py | 146 - .../pip/_internal/utils/subprocess.py | 260 - .../pip/_internal/utils/temp_dir.py | 296 - .../pip/_internal/utils/unpacking.py | 257 - .../site-packages/pip/_internal/utils/urls.py | 62 - .../pip/_internal/utils/virtualenv.py | 104 - .../pip/_internal/utils/wheel.py | 134 - .../pip/_internal/vcs/__init__.py | 15 - .../vcs/__pycache__/__init__.cpython-312.pyc | Bin 528 -> 0 bytes .../vcs/__pycache__/bazaar.cpython-312.pyc | Bin 5020 -> 0 bytes .../vcs/__pycache__/git.cpython-312.pyc | Bin 18984 -> 0 bytes .../vcs/__pycache__/mercurial.cpython-312.pyc | Bin 7609 -> 0 bytes .../__pycache__/subversion.cpython-312.pyc | Bin 12475 -> 0 bytes .../versioncontrol.cpython-312.pyc | Bin 29007 -> 0 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 112 - .../site-packages/pip/_internal/vcs/git.py | 526 - .../pip/_internal/vcs/mercurial.py | 163 - .../pip/_internal/vcs/subversion.py | 324 - .../pip/_internal/vcs/versioncontrol.py | 705 -- .../pip/_internal/wheel_builder.py | 354 - .../site-packages/pip/_vendor/__init__.py | 121 - .../__pycache__/__init__.cpython-312.pyc | Bin 4690 -> 0 bytes .../_vendor/__pycache__/six.cpython-312.pyc | Bin 41267 -> 0 bytes .../typing_extensions.cpython-312.pyc | Bin 122035 -> 0 bytes .../pip/_vendor/cachecontrol/__init__.py | 28 - .../__pycache__/__init__.cpython-312.pyc | Bin 900 -> 0 bytes .../__pycache__/_cmd.cpython-312.pyc | Bin 2644 -> 0 bytes .../__pycache__/adapter.cpython-312.pyc | Bin 6459 -> 0 bytes .../__pycache__/cache.cpython-312.pyc | Bin 3807 -> 0 bytes .../__pycache__/controller.cpython-312.pyc | Bin 16141 -> 0 bytes .../__pycache__/filewrapper.cpython-312.pyc | Bin 4345 -> 0 bytes .../__pycache__/heuristics.cpython-312.pyc | Bin 6689 -> 0 bytes .../__pycache__/serialize.cpython-312.pyc | Bin 6403 -> 0 bytes .../__pycache__/wrapper.cpython-312.pyc | Bin 1672 -> 0 bytes .../pip/_vendor/cachecontrol/_cmd.py | 70 - .../pip/_vendor/cachecontrol/adapter.py | 161 - .../pip/_vendor/cachecontrol/cache.py | 74 - .../_vendor/cachecontrol/caches/__init__.py | 8 - .../__pycache__/__init__.cpython-312.pyc | Bin 433 -> 0 bytes .../__pycache__/file_cache.cpython-312.pyc | Bin 7708 -> 0 bytes .../__pycache__/redis_cache.cpython-312.pyc | Bin 2736 -> 0 bytes .../_vendor/cachecontrol/caches/file_cache.py | 181 - .../cachecontrol/caches/redis_cache.py | 48 - .../pip/_vendor/cachecontrol/controller.py | 494 - .../pip/_vendor/cachecontrol/filewrapper.py | 119 - .../pip/_vendor/cachecontrol/heuristics.py | 154 - .../pip/_vendor/cachecontrol/py.typed | 0 .../pip/_vendor/cachecontrol/serialize.py | 206 - .../pip/_vendor/cachecontrol/wrapper.py | 43 - .../pip/_vendor/certifi/__init__.py | 4 - .../pip/_vendor/certifi/__main__.py | 12 - .../__pycache__/__init__.cpython-312.pyc | Bin 316 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 643 -> 0 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 2847 -> 0 bytes .../site-packages/pip/_vendor/certifi/core.py | 108 - .../pip/_vendor/certifi/py.typed | 0 .../pip/_vendor/chardet/__init__.py | 115 - .../__pycache__/__init__.cpython-312.pyc | Bin 4566 -> 0 bytes .../__pycache__/big5freq.cpython-312.pyc | Bin 27197 -> 0 bytes .../__pycache__/big5prober.cpython-312.pyc | Bin 1385 -> 0 bytes .../chardistribution.cpython-312.pyc | Bin 9636 -> 0 bytes .../charsetgroupprober.cpython-312.pyc | Bin 4120 -> 0 bytes .../__pycache__/charsetprober.cpython-312.pyc | Bin 5016 -> 0 bytes .../codingstatemachine.cpython-312.pyc | Bin 3876 -> 0 bytes .../codingstatemachinedict.cpython-312.pyc | Bin 787 -> 0 bytes .../__pycache__/cp949prober.cpython-312.pyc | Bin 1394 -> 0 bytes .../chardet/__pycache__/enums.cpython-312.pyc | Bin 2994 -> 0 bytes .../__pycache__/escprober.cpython-312.pyc | Bin 4564 -> 0 bytes .../chardet/__pycache__/escsm.cpython-312.pyc | Bin 15308 -> 0 bytes .../__pycache__/eucjpprober.cpython-312.pyc | Bin 4372 -> 0 bytes .../__pycache__/euckrfreq.cpython-312.pyc | Bin 12080 -> 0 bytes .../__pycache__/euckrprober.cpython-312.pyc | Bin 1388 -> 0 bytes .../__pycache__/euctwfreq.cpython-312.pyc | Bin 27202 -> 0 bytes .../__pycache__/euctwprober.cpython-312.pyc | Bin 1388 -> 0 bytes .../__pycache__/gb2312freq.cpython-312.pyc | Bin 19124 -> 0 bytes .../__pycache__/gb2312prober.cpython-312.pyc | Bin 1401 -> 0 bytes .../__pycache__/hebrewprober.cpython-312.pyc | Bin 5808 -> 0 bytes .../__pycache__/jisfreq.cpython-312.pyc | Bin 22153 -> 0 bytes .../__pycache__/johabfreq.cpython-312.pyc | Bin 83001 -> 0 bytes .../__pycache__/johabprober.cpython-312.pyc | Bin 1392 -> 0 bytes .../__pycache__/jpcntx.cpython-312.pyc | Bin 39547 -> 0 bytes .../langbulgarianmodel.cpython-312.pyc | Bin 83120 -> 0 bytes .../langgreekmodel.cpython-312.pyc | Bin 76986 -> 0 bytes .../langhebrewmodel.cpython-312.pyc | Bin 77497 -> 0 bytes .../langhungarianmodel.cpython-312.pyc | Bin 83074 -> 0 bytes .../langrussianmodel.cpython-312.pyc | Bin 105249 -> 0 bytes .../__pycache__/langthaimodel.cpython-312.pyc | Bin 77675 -> 0 bytes .../langturkishmodel.cpython-312.pyc | Bin 77514 -> 0 bytes .../__pycache__/latin1prober.cpython-312.pyc | Bin 7000 -> 0 bytes .../macromanprober.cpython-312.pyc | Bin 7180 -> 0 bytes .../mbcharsetprober.cpython-312.pyc | Bin 3892 -> 0 bytes .../mbcsgroupprober.cpython-312.pyc | Bin 1586 -> 0 bytes .../__pycache__/mbcssm.cpython-312.pyc | Bin 38643 -> 0 bytes .../__pycache__/resultdict.cpython-312.pyc | Bin 630 -> 0 bytes .../sbcharsetprober.cpython-312.pyc | Bin 6385 -> 0 bytes .../sbcsgroupprober.cpython-312.pyc | Bin 2355 -> 0 bytes .../__pycache__/sjisprober.cpython-312.pyc | Bin 4484 -> 0 bytes .../universaldetector.cpython-312.pyc | Bin 12264 -> 0 bytes .../__pycache__/utf1632prober.cpython-312.pyc | Bin 9977 -> 0 bytes .../__pycache__/utf8prober.cpython-312.pyc | Bin 3173 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 486 -> 0 bytes .../pip/_vendor/chardet/big5freq.py | 386 - .../pip/_vendor/chardet/big5prober.py | 47 - .../pip/_vendor/chardet/chardistribution.py | 261 - .../pip/_vendor/chardet/charsetgroupprober.py | 106 - .../pip/_vendor/chardet/charsetprober.py | 147 - .../pip/_vendor/chardet/cli/__init__.py | 0 .../cli/__pycache__/__init__.cpython-312.pyc | Bin 193 -> 0 bytes .../__pycache__/chardetect.cpython-312.pyc | Bin 4010 -> 0 bytes .../pip/_vendor/chardet/cli/chardetect.py | 112 - .../pip/_vendor/chardet/codingstatemachine.py | 90 - .../_vendor/chardet/codingstatemachinedict.py | 19 - .../pip/_vendor/chardet/cp949prober.py | 49 - .../pip/_vendor/chardet/enums.py | 85 - .../pip/_vendor/chardet/escprober.py | 102 - .../pip/_vendor/chardet/escsm.py | 261 - .../pip/_vendor/chardet/eucjpprober.py | 102 - .../pip/_vendor/chardet/euckrfreq.py | 196 - .../pip/_vendor/chardet/euckrprober.py | 47 - .../pip/_vendor/chardet/euctwfreq.py | 388 - .../pip/_vendor/chardet/euctwprober.py | 47 - .../pip/_vendor/chardet/gb2312freq.py | 284 - .../pip/_vendor/chardet/gb2312prober.py | 47 - .../pip/_vendor/chardet/hebrewprober.py | 316 - .../pip/_vendor/chardet/jisfreq.py | 325 - .../pip/_vendor/chardet/johabfreq.py | 2382 ----- .../pip/_vendor/chardet/johabprober.py | 47 - .../pip/_vendor/chardet/jpcntx.py | 238 - .../pip/_vendor/chardet/langbulgarianmodel.py | 4649 --------- .../pip/_vendor/chardet/langgreekmodel.py | 4397 --------- .../pip/_vendor/chardet/langhebrewmodel.py | 4380 --------- .../pip/_vendor/chardet/langhungarianmodel.py | 4649 --------- .../pip/_vendor/chardet/langrussianmodel.py | 5725 ----------- .../pip/_vendor/chardet/langthaimodel.py | 4380 --------- .../pip/_vendor/chardet/langturkishmodel.py | 4380 --------- .../pip/_vendor/chardet/latin1prober.py | 147 - .../pip/_vendor/chardet/macromanprober.py | 162 - .../pip/_vendor/chardet/mbcharsetprober.py | 95 - .../pip/_vendor/chardet/mbcsgroupprober.py | 57 - .../pip/_vendor/chardet/mbcssm.py | 661 -- .../pip/_vendor/chardet/metadata/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 198 -> 0 bytes .../__pycache__/languages.cpython-312.pyc | Bin 9753 -> 0 bytes .../pip/_vendor/chardet/metadata/languages.py | 352 - .../pip/_vendor/chardet/py.typed | 0 .../pip/_vendor/chardet/resultdict.py | 16 - .../pip/_vendor/chardet/sbcharsetprober.py | 162 - .../pip/_vendor/chardet/sbcsgroupprober.py | 88 - .../pip/_vendor/chardet/sjisprober.py | 105 - .../pip/_vendor/chardet/universaldetector.py | 362 - .../pip/_vendor/chardet/utf1632prober.py | 225 - .../pip/_vendor/chardet/utf8prober.py | 82 - .../pip/_vendor/chardet/version.py | 9 - .../pip/_vendor/colorama/__init__.py | 7 - .../__pycache__/__init__.cpython-312.pyc | Bin 490 -> 0 bytes .../colorama/__pycache__/ansi.cpython-312.pyc | Bin 3948 -> 0 bytes .../__pycache__/ansitowin32.cpython-312.pyc | Bin 16419 -> 0 bytes .../__pycache__/initialise.cpython-312.pyc | Bin 3548 -> 0 bytes .../__pycache__/win32.cpython-312.pyc | Bin 8124 -> 0 bytes .../__pycache__/winterm.cpython-312.pyc | Bin 9086 -> 0 bytes .../pip/_vendor/colorama/ansi.py | 102 - .../pip/_vendor/colorama/ansitowin32.py | 277 - .../pip/_vendor/colorama/initialise.py | 121 - .../pip/_vendor/colorama/tests/__init__.py | 1 - .../__pycache__/__init__.cpython-312.pyc | Bin 196 -> 0 bytes .../__pycache__/ansi_test.cpython-312.pyc | Bin 5465 -> 0 bytes .../ansitowin32_test.cpython-312.pyc | Bin 18101 -> 0 bytes .../initialise_test.cpython-312.pyc | Bin 11746 -> 0 bytes .../__pycache__/isatty_test.cpython-312.pyc | Bin 4902 -> 0 bytes .../tests/__pycache__/utils.cpython-312.pyc | Bin 2486 -> 0 bytes .../__pycache__/winterm_test.cpython-312.pyc | Bin 6610 -> 0 bytes .../pip/_vendor/colorama/tests/ansi_test.py | 76 - .../colorama/tests/ansitowin32_test.py | 294 - .../_vendor/colorama/tests/initialise_test.py | 189 - .../pip/_vendor/colorama/tests/isatty_test.py | 57 - .../pip/_vendor/colorama/tests/utils.py | 49 - .../_vendor/colorama/tests/winterm_test.py | 131 - .../pip/_vendor/colorama/win32.py | 180 - .../pip/_vendor/colorama/winterm.py | 195 - .../pip/_vendor/distlib/__init__.py | 33 - .../__pycache__/__init__.cpython-312.pyc | Bin 1267 -> 0 bytes .../__pycache__/compat.cpython-312.pyc | Bin 45600 -> 0 bytes .../__pycache__/database.cpython-312.pyc | Bin 66025 -> 0 bytes .../distlib/__pycache__/index.cpython-312.pyc | Bin 24364 -> 0 bytes .../__pycache__/locators.cpython-312.pyc | Bin 60153 -> 0 bytes .../__pycache__/manifest.cpython-312.pyc | Bin 15114 -> 0 bytes .../__pycache__/markers.cpython-312.pyc | Bin 7677 -> 0 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 41791 -> 0 bytes .../__pycache__/resources.cpython-312.pyc | Bin 17323 -> 0 bytes .../__pycache__/scripts.cpython-312.pyc | Bin 19578 -> 0 bytes .../distlib/__pycache__/util.cpython-312.pyc | Bin 88214 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 30361 -> 0 bytes .../distlib/__pycache__/wheel.cpython-312.pyc | Bin 51857 -> 0 bytes .../pip/_vendor/distlib/compat.py | 1138 --- .../pip/_vendor/distlib/database.py | 1359 --- .../pip/_vendor/distlib/index.py | 508 - .../pip/_vendor/distlib/locators.py | 1303 --- .../pip/_vendor/distlib/manifest.py | 384 - .../pip/_vendor/distlib/markers.py | 167 - .../pip/_vendor/distlib/metadata.py | 1068 -- .../pip/_vendor/distlib/resources.py | 358 - .../pip/_vendor/distlib/scripts.py | 452 - .../site-packages/pip/_vendor/distlib/t32.exe | Bin 97792 -> 0 bytes .../pip/_vendor/distlib/t64-arm.exe | Bin 182784 -> 0 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 108032 -> 0 bytes .../site-packages/pip/_vendor/distlib/util.py | 2025 ---- .../pip/_vendor/distlib/version.py | 751 -- .../site-packages/pip/_vendor/distlib/w32.exe | Bin 91648 -> 0 bytes .../pip/_vendor/distlib/w64-arm.exe | Bin 168448 -> 0 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 101888 -> 0 bytes .../pip/_vendor/distlib/wheel.py | 1099 --- .../pip/_vendor/distro/__init__.py | 54 - .../pip/_vendor/distro/__main__.py | 4 - .../__pycache__/__init__.cpython-312.pyc | Bin 958 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 290 -> 0 bytes .../distro/__pycache__/distro.cpython-312.pyc | Bin 53750 -> 0 bytes .../pip/_vendor/distro/distro.py | 1399 --- .../site-packages/pip/_vendor/distro/py.typed | 0 .../pip/_vendor/idna/__init__.py | 44 - .../idna/__pycache__/__init__.cpython-312.pyc | Bin 879 -> 0 bytes .../idna/__pycache__/codec.cpython-312.pyc | Bin 4631 -> 0 bytes .../idna/__pycache__/compat.cpython-312.pyc | Bin 885 -> 0 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 16280 -> 0 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 38380 -> 0 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 2636 -> 0 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 214 -> 0 bytes .../__pycache__/uts46data.cpython-312.pyc | Bin 158868 -> 0 bytes .../site-packages/pip/_vendor/idna/codec.py | 112 - .../site-packages/pip/_vendor/idna/compat.py | 13 - .../site-packages/pip/_vendor/idna/core.py | 400 - .../pip/_vendor/idna/idnadata.py | 2151 ---- .../pip/_vendor/idna/intranges.py | 54 - .../pip/_vendor/idna/package_data.py | 2 - .../site-packages/pip/_vendor/idna/py.typed | 0 .../pip/_vendor/idna/uts46data.py | 8600 ---------------- .../pip/_vendor/msgpack/__init__.py | 57 - .../__pycache__/__init__.cpython-312.pyc | Bin 1829 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 2023 -> 0 bytes .../msgpack/__pycache__/ext.cpython-312.pyc | Bin 8666 -> 0 bytes .../__pycache__/fallback.cpython-312.pyc | Bin 43560 -> 0 bytes .../pip/_vendor/msgpack/exceptions.py | 48 - .../site-packages/pip/_vendor/msgpack/ext.py | 193 - .../pip/_vendor/msgpack/fallback.py | 1010 -- .../pip/_vendor/packaging/__about__.py | 26 - .../pip/_vendor/packaging/__init__.py | 25 - .../__pycache__/__about__.cpython-312.pyc | Bin 628 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 464 -> 0 bytes .../__pycache__/_manylinux.cpython-312.pyc | Bin 12071 -> 0 bytes .../__pycache__/_musllinux.cpython-312.pyc | Bin 6905 -> 0 bytes .../__pycache__/_structures.cpython-312.pyc | Bin 3239 -> 0 bytes .../__pycache__/markers.cpython-312.pyc | Bin 14047 -> 0 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 6944 -> 0 bytes .../__pycache__/specifiers.cpython-312.pyc | Bin 31245 -> 0 bytes .../__pycache__/tags.cpython-312.pyc | Bin 18954 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 5866 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 19937 -> 0 bytes .../pip/_vendor/packaging/_manylinux.py | 301 - .../pip/_vendor/packaging/_musllinux.py | 136 - .../pip/_vendor/packaging/_structures.py | 61 - .../pip/_vendor/packaging/markers.py | 304 - .../pip/_vendor/packaging/py.typed | 0 .../pip/_vendor/packaging/requirements.py | 146 - .../pip/_vendor/packaging/specifiers.py | 802 -- .../pip/_vendor/packaging/tags.py | 487 - .../pip/_vendor/packaging/utils.py | 136 - .../pip/_vendor/packaging/version.py | 504 - .../pip/_vendor/pkg_resources/__init__.py | 3361 ------- .../__pycache__/__init__.cpython-312.pyc | Bin 146472 -> 0 bytes .../pip/_vendor/platformdirs/__init__.py | 566 -- .../pip/_vendor/platformdirs/__main__.py | 53 - .../__pycache__/__init__.cpython-312.pyc | Bin 18027 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 1944 -> 0 bytes .../__pycache__/android.cpython-312.pyc | Bin 9442 -> 0 bytes .../__pycache__/api.cpython-312.pyc | Bin 9670 -> 0 bytes .../__pycache__/macos.cpython-312.pyc | Bin 5635 -> 0 bytes .../__pycache__/unix.cpython-312.pyc | Bin 12439 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 309 -> 0 bytes .../__pycache__/windows.cpython-312.pyc | Bin 12997 -> 0 bytes .../pip/_vendor/platformdirs/android.py | 210 - .../pip/_vendor/platformdirs/api.py | 223 - .../pip/_vendor/platformdirs/macos.py | 91 - .../pip/_vendor/platformdirs/py.typed | 0 .../pip/_vendor/platformdirs/unix.py | 223 - .../pip/_vendor/platformdirs/version.py | 4 - .../pip/_vendor/platformdirs/windows.py | 255 - .../pip/_vendor/pygments/__init__.py | 82 - .../pip/_vendor/pygments/__main__.py | 17 - .../__pycache__/__init__.cpython-312.pyc | Bin 3487 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 733 -> 0 bytes .../__pycache__/cmdline.cpython-312.pyc | Bin 26604 -> 0 bytes .../__pycache__/console.cpython-312.pyc | Bin 2625 -> 0 bytes .../__pycache__/filter.cpython-312.pyc | Bin 3231 -> 0 bytes .../__pycache__/formatter.cpython-312.pyc | Bin 4568 -> 0 bytes .../__pycache__/lexer.cpython-312.pyc | Bin 38299 -> 0 bytes .../__pycache__/modeline.cpython-312.pyc | Bin 1567 -> 0 bytes .../__pycache__/plugin.cpython-312.pyc | Bin 3395 -> 0 bytes .../__pycache__/regexopt.cpython-312.pyc | Bin 4080 -> 0 bytes .../__pycache__/scanner.cpython-312.pyc | Bin 4755 -> 0 bytes .../__pycache__/sphinxext.cpython-312.pyc | Bin 11045 -> 0 bytes .../__pycache__/style.cpython-312.pyc | Bin 6671 -> 0 bytes .../__pycache__/token.cpython-312.pyc | Bin 8141 -> 0 bytes .../__pycache__/unistring.cpython-312.pyc | Bin 32987 -> 0 bytes .../pygments/__pycache__/util.cpython-312.pyc | Bin 13980 -> 0 bytes .../pip/_vendor/pygments/cmdline.py | 668 -- .../pip/_vendor/pygments/console.py | 70 - .../pip/_vendor/pygments/filter.py | 71 - .../pip/_vendor/pygments/filters/__init__.py | 940 -- .../__pycache__/__init__.cpython-312.pyc | Bin 37935 -> 0 bytes .../pip/_vendor/pygments/formatter.py | 124 - .../_vendor/pygments/formatters/__init__.py | 158 - .../__pycache__/__init__.cpython-312.pyc | Bin 6925 -> 0 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 4214 -> 0 bytes .../__pycache__/bbcode.cpython-312.pyc | Bin 4193 -> 0 bytes .../__pycache__/groff.cpython-312.pyc | Bin 7263 -> 0 bytes .../__pycache__/html.cpython-312.pyc | Bin 40571 -> 0 bytes .../__pycache__/img.cpython-312.pyc | Bin 27042 -> 0 bytes .../__pycache__/irc.cpython-312.pyc | Bin 6064 -> 0 bytes .../__pycache__/latex.cpython-312.pyc | Bin 19953 -> 0 bytes .../__pycache__/other.cpython-312.pyc | Bin 6883 -> 0 bytes .../__pycache__/pangomarkup.cpython-312.pyc | Bin 2929 -> 0 bytes .../__pycache__/rtf.cpython-312.pyc | Bin 6125 -> 0 bytes .../__pycache__/svg.cpython-312.pyc | Bin 9065 -> 0 bytes .../__pycache__/terminal.cpython-312.pyc | Bin 5828 -> 0 bytes .../__pycache__/terminal256.cpython-312.pyc | Bin 15156 -> 0 bytes .../_vendor/pygments/formatters/_mapping.py | 23 - .../pip/_vendor/pygments/formatters/bbcode.py | 108 - .../pip/_vendor/pygments/formatters/groff.py | 170 - .../pip/_vendor/pygments/formatters/html.py | 989 -- .../pip/_vendor/pygments/formatters/img.py | 645 -- .../pip/_vendor/pygments/formatters/irc.py | 154 - .../pip/_vendor/pygments/formatters/latex.py | 521 - .../pip/_vendor/pygments/formatters/other.py | 161 - .../pygments/formatters/pangomarkup.py | 83 - .../pip/_vendor/pygments/formatters/rtf.py | 146 - .../pip/_vendor/pygments/formatters/svg.py | 188 - .../_vendor/pygments/formatters/terminal.py | 127 - .../pygments/formatters/terminal256.py | 338 - .../pip/_vendor/pygments/lexer.py | 943 -- .../pip/_vendor/pygments/lexers/__init__.py | 362 - .../__pycache__/__init__.cpython-312.pyc | Bin 14651 -> 0 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 64403 -> 0 bytes .../lexers/__pycache__/python.cpython-312.pyc | Bin 42638 -> 0 bytes .../pip/_vendor/pygments/lexers/_mapping.py | 559 -- .../pip/_vendor/pygments/lexers/python.py | 1198 --- .../pip/_vendor/pygments/modeline.py | 43 - .../pip/_vendor/pygments/plugin.py | 88 - .../pip/_vendor/pygments/regexopt.py | 91 - .../pip/_vendor/pygments/scanner.py | 104 - .../pip/_vendor/pygments/sphinxext.py | 217 - .../pip/_vendor/pygments/style.py | 197 - .../pip/_vendor/pygments/styles/__init__.py | 103 - .../__pycache__/__init__.cpython-312.pyc | Bin 4447 -> 0 bytes .../pip/_vendor/pygments/token.py | 213 - .../pip/_vendor/pygments/unistring.py | 153 - .../pip/_vendor/pygments/util.py | 330 - .../pip/_vendor/pyparsing/__init__.py | 322 - .../__pycache__/__init__.cpython-312.pyc | Bin 7910 -> 0 bytes .../__pycache__/actions.cpython-312.pyc | Bin 8394 -> 0 bytes .../__pycache__/common.cpython-312.pyc | Bin 13413 -> 0 bytes .../__pycache__/core.cpython-312.pyc | Bin 267707 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 12993 -> 0 bytes .../__pycache__/helpers.cpython-312.pyc | Bin 48500 -> 0 bytes .../__pycache__/results.cpython-312.pyc | Bin 34109 -> 0 bytes .../__pycache__/testing.cpython-312.pyc | Bin 17187 -> 0 bytes .../__pycache__/unicode.cpython-312.pyc | Bin 13183 -> 0 bytes .../__pycache__/util.cpython-312.pyc | Bin 14903 -> 0 bytes .../pip/_vendor/pyparsing/actions.py | 217 - .../pip/_vendor/pyparsing/common.py | 432 - .../pip/_vendor/pyparsing/core.py | 6115 ------------ .../pip/_vendor/pyparsing/diagram/__init__.py | 656 -- .../__pycache__/__init__.cpython-312.pyc | Bin 26812 -> 0 bytes .../pip/_vendor/pyparsing/exceptions.py | 299 - .../pip/_vendor/pyparsing/helpers.py | 1100 --- .../pip/_vendor/pyparsing/py.typed | 0 .../pip/_vendor/pyparsing/results.py | 796 -- .../pip/_vendor/pyparsing/testing.py | 331 - .../pip/_vendor/pyparsing/unicode.py | 361 - .../pip/_vendor/pyparsing/util.py | 284 - .../pip/_vendor/pyproject_hooks/__init__.py | 23 - .../__pycache__/__init__.cpython-312.pyc | Bin 612 -> 0 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 373 -> 0 bytes .../__pycache__/_impl.cpython-312.pyc | Bin 14724 -> 0 bytes .../pip/_vendor/pyproject_hooks/_compat.py | 8 - .../pip/_vendor/pyproject_hooks/_impl.py | 330 - .../pyproject_hooks/_in_process/__init__.py | 18 - .../__pycache__/__init__.cpython-312.pyc | Bin 1079 -> 0 bytes .../__pycache__/_in_process.cpython-312.pyc | Bin 14396 -> 0 bytes .../_in_process/_in_process.py | 353 - .../pip/_vendor/requests/__init__.py | 182 - .../__pycache__/__init__.cpython-312.pyc | Bin 5445 -> 0 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 583 -> 0 bytes .../_internal_utils.cpython-312.pyc | Bin 2020 -> 0 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 21279 -> 0 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 7203 -> 0 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 13922 -> 0 bytes .../__pycache__/certs.cpython-312.pyc | Bin 921 -> 0 bytes .../__pycache__/compat.cpython-312.pyc | Bin 1506 -> 0 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 25245 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 7046 -> 0 bytes .../requests/__pycache__/help.cpython-312.pyc | Bin 4311 -> 0 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 1051 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 35447 -> 0 bytes .../__pycache__/packages.cpython-312.pyc | Bin 771 -> 0 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 27756 -> 0 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 5958 -> 0 bytes .../__pycache__/structures.cpython-312.pyc | Bin 5616 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 36268 -> 0 bytes .../pip/_vendor/requests/__version__.py | 14 - .../pip/_vendor/requests/_internal_utils.py | 50 - .../pip/_vendor/requests/adapters.py | 538 - .../site-packages/pip/_vendor/requests/api.py | 157 - .../pip/_vendor/requests/auth.py | 315 - .../pip/_vendor/requests/certs.py | 24 - .../pip/_vendor/requests/compat.py | 67 - .../pip/_vendor/requests/cookies.py | 561 -- .../pip/_vendor/requests/exceptions.py | 141 - .../pip/_vendor/requests/help.py | 131 - .../pip/_vendor/requests/hooks.py | 33 - .../pip/_vendor/requests/models.py | 1034 -- .../pip/_vendor/requests/packages.py | 16 - .../pip/_vendor/requests/sessions.py | 833 -- .../pip/_vendor/requests/status_codes.py | 128 - .../pip/_vendor/requests/structures.py | 99 - .../pip/_vendor/requests/utils.py | 1094 --- .../pip/_vendor/resolvelib/__init__.py | 26 - .../__pycache__/__init__.cpython-312.pyc | Bin 633 -> 0 bytes .../__pycache__/providers.cpython-312.pyc | Bin 6850 -> 0 bytes .../__pycache__/reporters.cpython-312.pyc | Bin 2653 -> 0 bytes .../__pycache__/resolvers.cpython-312.pyc | Bin 25896 -> 0 bytes .../__pycache__/structs.cpython-312.pyc | Bin 10505 -> 0 bytes .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 199 -> 0 bytes .../collections_abc.cpython-312.pyc | Bin 419 -> 0 bytes .../resolvelib/compat/collections_abc.py | 6 - .../pip/_vendor/resolvelib/providers.py | 133 - .../pip/_vendor/resolvelib/py.typed | 0 .../pip/_vendor/resolvelib/reporters.py | 43 - .../pip/_vendor/resolvelib/resolvers.py | 547 -- .../pip/_vendor/resolvelib/structs.py | 170 - .../pip/_vendor/rich/__init__.py | 177 - .../pip/_vendor/rich/__main__.py | 274 - .../rich/__pycache__/__init__.cpython-312.pyc | Bin 7014 -> 0 bytes .../rich/__pycache__/__main__.cpython-312.pyc | Bin 10303 -> 0 bytes .../__pycache__/_cell_widths.cpython-312.pyc | Bin 7820 -> 0 bytes .../__pycache__/_emoji_codes.cpython-312.pyc | Bin 205975 -> 0 bytes .../_emoji_replace.cpython-312.pyc | Bin 1728 -> 0 bytes .../_export_format.cpython-312.pyc | Bin 2320 -> 0 bytes .../__pycache__/_extension.cpython-312.pyc | Bin 536 -> 0 bytes .../rich/__pycache__/_fileno.cpython-312.pyc | Bin 854 -> 0 bytes .../rich/__pycache__/_inspect.cpython-312.pyc | Bin 12076 -> 0 bytes .../__pycache__/_log_render.cpython-312.pyc | Bin 4146 -> 0 bytes .../rich/__pycache__/_loop.cpython-312.pyc | Bin 1884 -> 0 bytes .../__pycache__/_null_file.cpython-312.pyc | Bin 3619 -> 0 bytes .../__pycache__/_palettes.cpython-312.pyc | Bin 5159 -> 0 bytes .../rich/__pycache__/_pick.cpython-312.pyc | Bin 723 -> 0 bytes .../rich/__pycache__/_ratio.cpython-312.pyc | Bin 6576 -> 0 bytes .../__pycache__/_spinners.cpython-312.pyc | Bin 13178 -> 0 bytes .../rich/__pycache__/_stack.cpython-312.pyc | Bin 964 -> 0 bytes .../rich/__pycache__/_timer.cpython-312.pyc | Bin 864 -> 0 bytes .../_win32_console.cpython-312.pyc | Bin 28966 -> 0 bytes .../rich/__pycache__/_windows.cpython-312.pyc | Bin 2489 -> 0 bytes .../_windows_renderer.cpython-312.pyc | Bin 3572 -> 0 bytes .../rich/__pycache__/_wrap.cpython-312.pyc | Bin 2359 -> 0 bytes .../rich/__pycache__/abc.cpython-312.pyc | Bin 1607 -> 0 bytes .../rich/__pycache__/align.cpython-312.pyc | Bin 12321 -> 0 bytes .../rich/__pycache__/ansi.cpython-312.pyc | Bin 9105 -> 0 bytes .../rich/__pycache__/bar.cpython-312.pyc | Bin 4271 -> 0 bytes .../rich/__pycache__/box.cpython-312.pyc | Bin 11857 -> 0 bytes .../rich/__pycache__/cells.cpython-312.pyc | Bin 5617 -> 0 bytes .../rich/__pycache__/color.cpython-312.pyc | Bin 26524 -> 0 bytes .../__pycache__/color_triplet.cpython-312.pyc | Bin 1700 -> 0 bytes .../rich/__pycache__/columns.cpython-312.pyc | Bin 8586 -> 0 bytes .../rich/__pycache__/console.cpython-312.pyc | Bin 113783 -> 0 bytes .../__pycache__/constrain.cpython-312.pyc | Bin 2257 -> 0 bytes .../__pycache__/containers.cpython-312.pyc | Bin 9225 -> 0 bytes .../rich/__pycache__/control.cpython-312.pyc | Bin 10928 -> 0 bytes .../default_styles.cpython-312.pyc | Bin 10372 -> 0 bytes .../rich/__pycache__/diagnose.cpython-312.pyc | Bin 1486 -> 0 bytes .../rich/__pycache__/emoji.cpython-312.pyc | Bin 4208 -> 0 bytes .../rich/__pycache__/errors.cpython-312.pyc | Bin 1844 -> 0 bytes .../__pycache__/file_proxy.cpython-312.pyc | Bin 3576 -> 0 bytes .../rich/__pycache__/filesize.cpython-312.pyc | Bin 3081 -> 0 bytes .../__pycache__/highlighter.cpython-312.pyc | Bin 9897 -> 0 bytes .../rich/__pycache__/json.cpython-312.pyc | Bin 6034 -> 0 bytes .../rich/__pycache__/jupyter.cpython-312.pyc | Bin 5208 -> 0 bytes .../rich/__pycache__/layout.cpython-312.pyc | Bin 20219 -> 0 bytes .../rich/__pycache__/live.cpython-312.pyc | Bin 19139 -> 0 bytes .../__pycache__/live_render.cpython-312.pyc | Bin 4893 -> 0 bytes .../rich/__pycache__/logging.cpython-312.pyc | Bin 13547 -> 0 bytes .../rich/__pycache__/markup.cpython-312.pyc | Bin 9297 -> 0 bytes .../rich/__pycache__/measure.cpython-312.pyc | Bin 6375 -> 0 bytes .../rich/__pycache__/padding.cpython-312.pyc | Bin 7133 -> 0 bytes .../rich/__pycache__/pager.cpython-312.pyc | Bin 1819 -> 0 bytes .../rich/__pycache__/palette.cpython-312.pyc | Bin 5313 -> 0 bytes .../rich/__pycache__/panel.cpython-312.pyc | Bin 12096 -> 0 bytes .../rich/__pycache__/pretty.cpython-312.pyc | Bin 40041 -> 0 bytes .../rich/__pycache__/progress.cpython-312.pyc | Bin 75074 -> 0 bytes .../__pycache__/progress_bar.cpython-312.pyc | Bin 10388 -> 0 bytes .../rich/__pycache__/prompt.cpython-312.pyc | Bin 14777 -> 0 bytes .../rich/__pycache__/protocol.cpython-312.pyc | Bin 1791 -> 0 bytes .../rich/__pycache__/region.cpython-312.pyc | Bin 566 -> 0 bytes .../rich/__pycache__/repr.cpython-312.pyc | Bin 6625 -> 0 bytes .../rich/__pycache__/rule.cpython-312.pyc | Bin 6567 -> 0 bytes .../rich/__pycache__/scope.cpython-312.pyc | Bin 3829 -> 0 bytes .../rich/__pycache__/screen.cpython-312.pyc | Bin 2483 -> 0 bytes .../rich/__pycache__/segment.cpython-312.pyc | Bin 28160 -> 0 bytes .../rich/__pycache__/spinner.cpython-312.pyc | Bin 6063 -> 0 bytes .../rich/__pycache__/status.cpython-312.pyc | Bin 6067 -> 0 bytes .../rich/__pycache__/style.cpython-312.pyc | Bin 33513 -> 0 bytes .../rich/__pycache__/styled.cpython-312.pyc | Bin 2138 -> 0 bytes .../rich/__pycache__/syntax.cpython-312.pyc | Bin 39609 -> 0 bytes .../rich/__pycache__/table.cpython-312.pyc | Bin 43583 -> 0 bytes .../terminal_theme.cpython-312.pyc | Bin 3347 -> 0 bytes .../rich/__pycache__/text.cpython-312.pyc | Bin 58948 -> 0 bytes .../rich/__pycache__/theme.cpython-312.pyc | Bin 6339 -> 0 bytes .../rich/__pycache__/themes.cpython-312.pyc | Bin 313 -> 0 bytes .../__pycache__/traceback.cpython-312.pyc | Bin 31543 -> 0 bytes .../rich/__pycache__/tree.cpython-312.pyc | Bin 11438 -> 0 bytes .../pip/_vendor/rich/_cell_widths.py | 451 - .../pip/_vendor/rich/_emoji_codes.py | 3610 ------- .../pip/_vendor/rich/_emoji_replace.py | 32 - .../pip/_vendor/rich/_export_format.py | 76 - .../pip/_vendor/rich/_extension.py | 10 - .../site-packages/pip/_vendor/rich/_fileno.py | 24 - .../pip/_vendor/rich/_inspect.py | 270 - .../pip/_vendor/rich/_log_render.py | 94 - .../site-packages/pip/_vendor/rich/_loop.py | 43 - .../pip/_vendor/rich/_null_file.py | 69 - .../pip/_vendor/rich/_palettes.py | 309 - .../site-packages/pip/_vendor/rich/_pick.py | 17 - .../site-packages/pip/_vendor/rich/_ratio.py | 160 - .../pip/_vendor/rich/_spinners.py | 482 - .../site-packages/pip/_vendor/rich/_stack.py | 16 - .../site-packages/pip/_vendor/rich/_timer.py | 19 - .../pip/_vendor/rich/_win32_console.py | 662 -- .../pip/_vendor/rich/_windows.py | 72 - .../pip/_vendor/rich/_windows_renderer.py | 56 - .../site-packages/pip/_vendor/rich/_wrap.py | 56 - .../site-packages/pip/_vendor/rich/abc.py | 33 - .../site-packages/pip/_vendor/rich/align.py | 311 - .../site-packages/pip/_vendor/rich/ansi.py | 240 - .../site-packages/pip/_vendor/rich/bar.py | 94 - .../site-packages/pip/_vendor/rich/box.py | 517 - .../site-packages/pip/_vendor/rich/cells.py | 154 - .../site-packages/pip/_vendor/rich/color.py | 622 -- .../pip/_vendor/rich/color_triplet.py | 38 - .../site-packages/pip/_vendor/rich/columns.py | 187 - .../site-packages/pip/_vendor/rich/console.py | 2633 ----- .../pip/_vendor/rich/constrain.py | 37 - .../pip/_vendor/rich/containers.py | 167 - .../site-packages/pip/_vendor/rich/control.py | 225 - .../pip/_vendor/rich/default_styles.py | 190 - .../pip/_vendor/rich/diagnose.py | 37 - .../site-packages/pip/_vendor/rich/emoji.py | 96 - .../site-packages/pip/_vendor/rich/errors.py | 34 - .../pip/_vendor/rich/file_proxy.py | 57 - .../pip/_vendor/rich/filesize.py | 89 - .../pip/_vendor/rich/highlighter.py | 232 - .../site-packages/pip/_vendor/rich/json.py | 140 - .../site-packages/pip/_vendor/rich/jupyter.py | 101 - .../site-packages/pip/_vendor/rich/layout.py | 443 - .../site-packages/pip/_vendor/rich/live.py | 375 - .../pip/_vendor/rich/live_render.py | 113 - .../site-packages/pip/_vendor/rich/logging.py | 289 - .../site-packages/pip/_vendor/rich/markup.py | 246 - .../site-packages/pip/_vendor/rich/measure.py | 151 - .../site-packages/pip/_vendor/rich/padding.py | 141 - .../site-packages/pip/_vendor/rich/pager.py | 34 - .../site-packages/pip/_vendor/rich/palette.py | 100 - .../site-packages/pip/_vendor/rich/panel.py | 308 - .../site-packages/pip/_vendor/rich/pretty.py | 994 -- .../pip/_vendor/rich/progress.py | 1702 ---- .../pip/_vendor/rich/progress_bar.py | 224 - .../site-packages/pip/_vendor/rich/prompt.py | 376 - .../pip/_vendor/rich/protocol.py | 42 - .../site-packages/pip/_vendor/rich/py.typed | 0 .../site-packages/pip/_vendor/rich/region.py | 10 - .../site-packages/pip/_vendor/rich/repr.py | 149 - .../site-packages/pip/_vendor/rich/rule.py | 130 - .../site-packages/pip/_vendor/rich/scope.py | 86 - .../site-packages/pip/_vendor/rich/screen.py | 54 - .../site-packages/pip/_vendor/rich/segment.py | 739 -- .../site-packages/pip/_vendor/rich/spinner.py | 137 - .../site-packages/pip/_vendor/rich/status.py | 132 - .../site-packages/pip/_vendor/rich/style.py | 796 -- .../site-packages/pip/_vendor/rich/styled.py | 42 - .../site-packages/pip/_vendor/rich/syntax.py | 948 -- .../site-packages/pip/_vendor/rich/table.py | 1002 -- .../pip/_vendor/rich/terminal_theme.py | 153 - .../site-packages/pip/_vendor/rich/text.py | 1307 --- .../site-packages/pip/_vendor/rich/theme.py | 115 - .../site-packages/pip/_vendor/rich/themes.py | 5 - .../pip/_vendor/rich/traceback.py | 756 -- .../site-packages/pip/_vendor/rich/tree.py | 251 - .../site-packages/pip/_vendor/six.py | 998 -- .../pip/_vendor/tenacity/__init__.py | 608 -- .../__pycache__/__init__.cpython-312.pyc | Bin 27085 -> 0 bytes .../__pycache__/_asyncio.cpython-312.pyc | Bin 4805 -> 0 bytes .../__pycache__/_utils.cpython-312.pyc | Bin 2314 -> 0 bytes .../__pycache__/after.cpython-312.pyc | Bin 1623 -> 0 bytes .../__pycache__/before.cpython-312.pyc | Bin 1463 -> 0 bytes .../__pycache__/before_sleep.cpython-312.pyc | Bin 2301 -> 0 bytes .../tenacity/__pycache__/nap.cpython-312.pyc | Bin 1411 -> 0 bytes .../__pycache__/retry.cpython-312.pyc | Bin 14280 -> 0 bytes .../tenacity/__pycache__/stop.cpython-312.pyc | Bin 5567 -> 0 bytes .../__pycache__/tornadoweb.cpython-312.pyc | Bin 2585 -> 0 bytes .../tenacity/__pycache__/wait.cpython-312.pyc | Bin 12412 -> 0 bytes .../pip/_vendor/tenacity/_asyncio.py | 94 - .../pip/_vendor/tenacity/_utils.py | 76 - .../pip/_vendor/tenacity/after.py | 51 - .../pip/_vendor/tenacity/before.py | 46 - .../pip/_vendor/tenacity/before_sleep.py | 71 - .../site-packages/pip/_vendor/tenacity/nap.py | 43 - .../pip/_vendor/tenacity/py.typed | 0 .../pip/_vendor/tenacity/retry.py | 272 - .../pip/_vendor/tenacity/stop.py | 103 - .../pip/_vendor/tenacity/tornadoweb.py | 59 - .../pip/_vendor/tenacity/wait.py | 228 - .../pip/_vendor/tomli/__init__.py | 11 - .../__pycache__/__init__.cpython-312.pyc | Bin 383 -> 0 bytes .../tomli/__pycache__/_parser.cpython-312.pyc | Bin 26926 -> 0 bytes .../tomli/__pycache__/_re.cpython-312.pyc | Bin 3907 -> 0 bytes .../tomli/__pycache__/_types.cpython-312.pyc | Bin 365 -> 0 bytes .../pip/_vendor/tomli/_parser.py | 691 -- .../site-packages/pip/_vendor/tomli/_re.py | 107 - .../site-packages/pip/_vendor/tomli/_types.py | 10 - .../site-packages/pip/_vendor/tomli/py.typed | 1 - .../pip/_vendor/truststore/__init__.py | 13 - .../__pycache__/__init__.cpython-312.pyc | Bin 617 -> 0 bytes .../__pycache__/_api.cpython-312.pyc | Bin 15796 -> 0 bytes .../__pycache__/_macos.cpython-312.pyc | Bin 16661 -> 0 bytes .../__pycache__/_openssl.cpython-312.pyc | Bin 2214 -> 0 bytes .../_ssl_constants.cpython-312.pyc | Bin 1098 -> 0 bytes .../__pycache__/_windows.cpython-312.pyc | Bin 15505 -> 0 bytes .../pip/_vendor/truststore/_api.py | 302 - .../pip/_vendor/truststore/_macos.py | 501 - .../pip/_vendor/truststore/_openssl.py | 66 - .../pip/_vendor/truststore/_ssl_constants.py | 31 - .../pip/_vendor/truststore/_windows.py | 554 -- .../pip/_vendor/truststore/py.typed | 0 .../pip/_vendor/typing_extensions.py | 3072 ------ .../pip/_vendor/urllib3/__init__.py | 102 - .../__pycache__/__init__.cpython-312.pyc | Bin 3404 -> 0 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 15930 -> 0 bytes .../__pycache__/_version.cpython-312.pyc | Bin 217 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 20406 -> 0 bytes .../connectionpool.cpython-312.pyc | Bin 36278 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 13492 -> 0 bytes .../__pycache__/fields.cpython-312.pyc | Bin 10412 -> 0 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 4017 -> 0 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 20301 -> 0 bytes .../__pycache__/request.cpython-312.pyc | Bin 7293 -> 0 bytes .../__pycache__/response.cpython-312.pyc | Bin 33965 -> 0 bytes .../pip/_vendor/urllib3/_collections.py | 337 - .../pip/_vendor/urllib3/_version.py | 2 - .../pip/_vendor/urllib3/connection.py | 572 -- .../pip/_vendor/urllib3/connectionpool.py | 1132 --- .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 197 -> 0 bytes .../_appengine_environ.cpython-312.pyc | Bin 1847 -> 0 bytes .../__pycache__/appengine.cpython-312.pyc | Bin 11563 -> 0 bytes .../__pycache__/ntlmpool.cpython-312.pyc | Bin 5718 -> 0 bytes .../__pycache__/pyopenssl.cpython-312.pyc | Bin 24449 -> 0 bytes .../securetransport.cpython-312.pyc | Bin 35543 -> 0 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 7510 -> 0 bytes .../urllib3/contrib/_appengine_environ.py | 36 - .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 214 -> 0 bytes .../__pycache__/bindings.cpython-312.pyc | Bin 17426 -> 0 bytes .../__pycache__/low_level.cpython-312.pyc | Bin 14800 -> 0 bytes .../contrib/_securetransport/bindings.py | 519 - .../contrib/_securetransport/low_level.py | 397 - .../pip/_vendor/urllib3/contrib/appengine.py | 314 - .../pip/_vendor/urllib3/contrib/ntlmpool.py | 130 - .../pip/_vendor/urllib3/contrib/pyopenssl.py | 518 - .../urllib3/contrib/securetransport.py | 921 -- .../pip/_vendor/urllib3/contrib/socks.py | 216 - .../pip/_vendor/urllib3/exceptions.py | 323 - .../pip/_vendor/urllib3/fields.py | 274 - .../pip/_vendor/urllib3/filepost.py | 98 - .../pip/_vendor/urllib3/packages/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 198 -> 0 bytes .../packages/__pycache__/six.cpython-312.pyc | Bin 41318 -> 0 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 208 -> 0 bytes .../__pycache__/makefile.cpython-312.pyc | Bin 1819 -> 0 bytes .../weakref_finalize.cpython-312.pyc | Bin 7327 -> 0 bytes .../urllib3/packages/backports/makefile.py | 51 - .../packages/backports/weakref_finalize.py | 155 - .../pip/_vendor/urllib3/packages/six.py | 1076 -- .../pip/_vendor/urllib3/poolmanager.py | 537 - .../pip/_vendor/urllib3/request.py | 191 - .../pip/_vendor/urllib3/response.py | 879 -- .../pip/_vendor/urllib3/util/__init__.py | 49 - .../util/__pycache__/__init__.cpython-312.pyc | Bin 1145 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 4755 -> 0 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 1551 -> 0 bytes .../util/__pycache__/queue.cpython-312.pyc | Bin 1351 -> 0 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 4182 -> 0 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 2988 -> 0 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 21696 -> 0 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 15102 -> 0 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 5070 -> 0 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 10766 -> 0 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 11138 -> 0 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 15794 -> 0 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 4402 -> 0 bytes .../pip/_vendor/urllib3/util/connection.py | 149 - .../pip/_vendor/urllib3/util/proxy.py | 57 - .../pip/_vendor/urllib3/util/queue.py | 22 - .../pip/_vendor/urllib3/util/request.py | 137 - .../pip/_vendor/urllib3/util/response.py | 107 - .../pip/_vendor/urllib3/util/retry.py | 620 -- .../pip/_vendor/urllib3/util/ssl_.py | 495 - .../urllib3/util/ssl_match_hostname.py | 159 - .../pip/_vendor/urllib3/util/ssltransport.py | 221 - .../pip/_vendor/urllib3/util/timeout.py | 271 - .../pip/_vendor/urllib3/util/url.py | 435 - .../pip/_vendor/urllib3/util/wait.py | 152 - .../site-packages/pip/_vendor/vendor.txt | 24 - .../pip/_vendor/webencodings/__init__.py | 342 - .../__pycache__/__init__.cpython-312.pyc | Bin 11994 -> 0 bytes .../__pycache__/labels.cpython-312.pyc | Bin 7131 -> 0 bytes .../__pycache__/mklabels.cpython-312.pyc | Bin 2695 -> 0 bytes .../__pycache__/tests.cpython-312.pyc | Bin 9038 -> 0 bytes .../x_user_defined.cpython-312.pyc | Bin 3294 -> 0 bytes .../pip/_vendor/webencodings/labels.py | 231 - .../pip/_vendor/webencodings/mklabels.py | 59 - .../pip/_vendor/webencodings/tests.py | 153 - .../_vendor/webencodings/x_user_defined.py | 325 - .../lib/python3.12/site-packages/pip/py.typed | 4 - .../pluggy-1.5.0.dist-info/INSTALLER | 1 - .../pluggy-1.5.0.dist-info/LICENSE | 21 - .../pluggy-1.5.0.dist-info/METADATA | 155 - .../pluggy-1.5.0.dist-info/RECORD | 23 - .../pluggy-1.5.0.dist-info/WHEEL | 5 - .../pluggy-1.5.0.dist-info/top_level.txt | 1 - .../site-packages/pluggy/__init__.py | 37 - .../__pycache__/__init__.cpython-312.pyc | Bin 949 -> 0 bytes .../__pycache__/_callers.cpython-312.pyc | Bin 8151 -> 0 bytes .../pluggy/__pycache__/_hooks.cpython-312.pyc | Bin 27485 -> 0 bytes .../__pycache__/_manager.cpython-312.pyc | Bin 25447 -> 0 bytes .../__pycache__/_result.cpython-312.pyc | Bin 3961 -> 0 bytes .../__pycache__/_tracing.cpython-312.pyc | Bin 4020 -> 0 bytes .../__pycache__/_version.cpython-312.pyc | Bin 578 -> 0 bytes .../__pycache__/_warnings.cpython-312.pyc | Bin 1290 -> 0 bytes .../site-packages/pluggy/_callers.py | 182 - .../python3.12/site-packages/pluggy/_hooks.py | 715 -- .../site-packages/pluggy/_manager.py | 528 - .../site-packages/pluggy/_result.py | 104 - .../site-packages/pluggy/_tracing.py | 73 - .../site-packages/pluggy/_version.py | 16 - .../site-packages/pluggy/_warnings.py | 27 - .../python3.12/site-packages/pluggy/py.typed | 0 venv/lib/python3.12/site-packages/py.py | 10 - .../pycparser-2.22.dist-info/INSTALLER | 1 - .../pycparser-2.22.dist-info/LICENSE | 27 - .../pycparser-2.22.dist-info/METADATA | 28 - .../pycparser-2.22.dist-info/RECORD | 41 - .../pycparser-2.22.dist-info/WHEEL | 5 - .../pycparser-2.22.dist-info/top_level.txt | 1 - .../site-packages/pycparser/__init__.py | 93 - .../__pycache__/__init__.cpython-312.pyc | Bin 3038 -> 0 bytes .../__pycache__/_ast_gen.cpython-312.pyc | Bin 12523 -> 0 bytes .../__pycache__/_build_tables.cpython-312.pyc | Bin 781 -> 0 bytes .../ast_transforms.cpython-312.pyc | Bin 5552 -> 0 bytes .../__pycache__/c_ast.cpython-312.pyc | Bin 50250 -> 0 bytes .../__pycache__/c_generator.cpython-312.pyc | Bin 30049 -> 0 bytes .../__pycache__/c_lexer.cpython-312.pyc | Bin 17599 -> 0 bytes .../__pycache__/c_parser.cpython-312.pyc | Bin 86217 -> 0 bytes .../__pycache__/lextab.cpython-312.pyc | Bin 6762 -> 0 bytes .../__pycache__/plyparser.cpython-312.pyc | Bin 6056 -> 0 bytes .../__pycache__/yacctab.cpython-312.pyc | Bin 189510 -> 0 bytes .../site-packages/pycparser/_ast_gen.py | 336 - .../site-packages/pycparser/_build_tables.py | 40 - .../site-packages/pycparser/_c_ast.cfg | 195 - .../site-packages/pycparser/ast_transforms.py | 164 - .../site-packages/pycparser/c_ast.py | 1125 --- .../site-packages/pycparser/c_generator.py | 502 - .../site-packages/pycparser/c_lexer.py | 555 -- .../site-packages/pycparser/c_parser.py | 1950 ---- .../site-packages/pycparser/lextab.py | 10 - .../site-packages/pycparser/ply/__init__.py | 5 - .../ply/__pycache__/__init__.cpython-312.pyc | Bin 246 -> 0 bytes .../ply/__pycache__/cpp.cpython-312.pyc | Bin 32324 -> 0 bytes .../ply/__pycache__/ctokens.cpython-312.pyc | Bin 2458 -> 0 bytes .../ply/__pycache__/lex.cpython-312.pyc | Bin 41613 -> 0 bytes .../ply/__pycache__/yacc.cpython-312.pyc | Bin 101135 -> 0 bytes .../ply/__pycache__/ygen.cpython-312.pyc | Bin 3001 -> 0 bytes .../site-packages/pycparser/ply/cpp.py | 905 -- .../site-packages/pycparser/ply/ctokens.py | 133 - .../site-packages/pycparser/ply/lex.py | 1099 --- .../site-packages/pycparser/ply/yacc.py | 3494 ------- .../site-packages/pycparser/ply/ygen.py | 74 - .../site-packages/pycparser/plyparser.py | 133 - .../site-packages/pycparser/yacctab.py | 369 - .../pydantic-1.10.4.dist-info/INSTALLER | 1 - .../pydantic-1.10.4.dist-info/LICENSE | 21 - .../pydantic-1.10.4.dist-info/METADATA | 1254 --- .../pydantic-1.10.4.dist-info/RECORD | 61 - .../pydantic-1.10.4.dist-info/REQUESTED | 0 .../pydantic-1.10.4.dist-info/WHEEL | 5 - .../entry_points.txt | 2 - .../pydantic-1.10.4.dist-info/top_level.txt | 1 - .../site-packages/pydantic/__init__.py | 131 - .../__pycache__/__init__.cpython-312.pyc | Bin 2030 -> 0 bytes .../_hypothesis_plugin.cpython-312.pyc | Bin 19933 -> 0 bytes .../annotated_types.cpython-312.pyc | Bin 3823 -> 0 bytes .../class_validators.cpython-312.pyc | Bin 18699 -> 0 bytes .../__pycache__/color.cpython-312.pyc | Bin 25779 -> 0 bytes .../__pycache__/config.cpython-312.pyc | Bin 8323 -> 0 bytes .../__pycache__/dataclasses.cpython-312.pyc | Bin 21207 -> 0 bytes .../datetime_parse.cpython-312.pyc | Bin 10324 -> 0 bytes .../__pycache__/decorator.cpython-312.pyc | Bin 13841 -> 0 bytes .../__pycache__/env_settings.cpython-312.pyc | Bin 17484 -> 0 bytes .../error_wrappers.cpython-312.pyc | Bin 8846 -> 0 bytes .../__pycache__/errors.cpython-312.pyc | Bin 29572 -> 0 bytes .../__pycache__/fields.cpython-312.pyc | Bin 56636 -> 0 bytes .../__pycache__/generics.cpython-312.pyc | Bin 16130 -> 0 bytes .../pydantic/__pycache__/json.cpython-312.pyc | Bin 5174 -> 0 bytes .../pydantic/__pycache__/main.cpython-312.pyc | Bin 48011 -> 0 bytes .../pydantic/__pycache__/mypy.cpython-312.pyc | Bin 42648 -> 0 bytes .../__pycache__/networks.cpython-312.pyc | Bin 29393 -> 0 bytes .../__pycache__/parse.cpython-312.pyc | Bin 2729 -> 0 bytes .../__pycache__/schema.cpython-312.pyc | Bin 47790 -> 0 bytes .../__pycache__/tools.cpython-312.pyc | Bin 3827 -> 0 bytes .../__pycache__/types.cpython-312.pyc | Bin 47993 -> 0 bytes .../__pycache__/typing.cpython-312.pyc | Bin 21949 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 37128 -> 0 bytes .../__pycache__/validators.cpython-312.pyc | Bin 30468 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 1947 -> 0 bytes .../pydantic/_hypothesis_plugin.py | 386 - .../site-packages/pydantic/annotated_types.py | 72 - .../pydantic/class_validators.py | 342 - .../site-packages/pydantic/color.py | 494 - .../site-packages/pydantic/config.py | 190 - .../site-packages/pydantic/dataclasses.py | 477 - .../site-packages/pydantic/datetime_parse.py | 248 - .../site-packages/pydantic/decorator.py | 264 - .../site-packages/pydantic/env_settings.py | 346 - .../site-packages/pydantic/error_wrappers.py | 162 - .../site-packages/pydantic/errors.py | 646 -- .../site-packages/pydantic/fields.py | 1247 --- .../site-packages/pydantic/generics.py | 368 - .../python3.12/site-packages/pydantic/json.py | 112 - .../python3.12/site-packages/pydantic/main.py | 1110 --- .../python3.12/site-packages/pydantic/mypy.py | 850 -- .../site-packages/pydantic/networks.py | 737 -- .../site-packages/pydantic/parse.py | 66 - .../site-packages/pydantic/py.typed | 0 .../site-packages/pydantic/schema.py | 1161 --- .../site-packages/pydantic/tools.py | 92 - .../site-packages/pydantic/types.py | 1194 --- .../site-packages/pydantic/typing.py | 602 -- .../site-packages/pydantic/utils.py | 841 -- .../site-packages/pydantic/validators.py | 765 -- .../site-packages/pydantic/version.py | 38 - .../pytest-7.2.2.dist-info/INSTALLER | 1 - .../pytest-7.2.2.dist-info/LICENSE | 21 - .../pytest-7.2.2.dist-info/METADATA | 220 - .../pytest-7.2.2.dist-info/RECORD | 154 - .../pytest-7.2.2.dist-info/REQUESTED | 0 .../pytest-7.2.2.dist-info/WHEEL | 5 - .../pytest-7.2.2.dist-info/entry_points.txt | 3 - .../pytest-7.2.2.dist-info/top_level.txt | 3 - .../site-packages/pytest/__init__.py | 169 - .../site-packages/pytest/__main__.py | 5 - .../__pycache__/__init__.cpython-312.pyc | Bin 4310 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 376 -> 0 bytes .../python3.12/site-packages/pytest/py.typed | 0 .../python_dotenv-0.21.0.dist-info/INSTALLER | 1 - .../python_dotenv-0.21.0.dist-info/LICENSE | 87 - .../python_dotenv-0.21.0.dist-info/METADATA | 632 -- .../python_dotenv-0.21.0.dist-info/RECORD | 26 - .../python_dotenv-0.21.0.dist-info/REQUESTED | 0 .../python_dotenv-0.21.0.dist-info/WHEEL | 5 - .../entry_points.txt | 2 - .../top_level.txt | 1 - .../requests-2.28.1.dist-info/INSTALLER | 1 - .../requests-2.28.1.dist-info/LICENSE | 175 - .../requests-2.28.1.dist-info/METADATA | 122 - .../requests-2.28.1.dist-info/RECORD | 43 - .../requests-2.28.1.dist-info/REQUESTED | 0 .../requests-2.28.1.dist-info/WHEEL | 5 - .../requests-2.28.1.dist-info/top_level.txt | 1 - .../site-packages/requests/__init__.py | 180 - .../__pycache__/__init__.cpython-312.pyc | Bin 5334 -> 0 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 576 -> 0 bytes .../_internal_utils.cpython-312.pyc | Bin 1941 -> 0 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 22668 -> 0 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 7119 -> 0 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 13910 -> 0 bytes .../__pycache__/certs.cpython-312.pyc | Bin 653 -> 0 bytes .../__pycache__/compat.cpython-312.pyc | Bin 1725 -> 0 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 25233 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 7021 -> 0 bytes .../requests/__pycache__/help.cpython-312.pyc | Bin 4314 -> 0 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 1039 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 35362 -> 0 bytes .../__pycache__/packages.cpython-312.pyc | Bin 1256 -> 0 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 27687 -> 0 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 5946 -> 0 bytes .../__pycache__/structures.cpython-312.pyc | Bin 5604 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 36151 -> 0 bytes .../site-packages/requests/__version__.py | 14 - .../site-packages/requests/_internal_utils.py | 48 - .../site-packages/requests/adapters.py | 584 -- .../python3.12/site-packages/requests/api.py | 157 - .../python3.12/site-packages/requests/auth.py | 315 - .../site-packages/requests/certs.py | 17 - .../site-packages/requests/compat.py | 79 - .../site-packages/requests/cookies.py | 561 -- .../site-packages/requests/exceptions.py | 141 - .../python3.12/site-packages/requests/help.py | 134 - .../site-packages/requests/hooks.py | 33 - .../site-packages/requests/models.py | 1034 -- .../site-packages/requests/packages.py | 28 - .../site-packages/requests/sessions.py | 831 -- .../site-packages/requests/status_codes.py | 128 - .../site-packages/requests/structures.py | 99 - .../site-packages/requests/utils.py | 1086 --- .../sniffio-1.3.1.dist-info/INSTALLER | 1 - .../sniffio-1.3.1.dist-info/LICENSE | 3 - .../sniffio-1.3.1.dist-info/LICENSE.APACHE2 | 202 - .../sniffio-1.3.1.dist-info/LICENSE.MIT | 20 - .../sniffio-1.3.1.dist-info/METADATA | 104 - .../sniffio-1.3.1.dist-info/RECORD | 19 - .../sniffio-1.3.1.dist-info/WHEEL | 5 - .../sniffio-1.3.1.dist-info/top_level.txt | 1 - .../site-packages/sniffio/__init__.py | 17 - .../__pycache__/__init__.cpython-312.pyc | Bin 453 -> 0 bytes .../sniffio/__pycache__/_impl.cpython-312.pyc | Bin 3164 -> 0 bytes .../__pycache__/_version.cpython-312.pyc | Bin 205 -> 0 bytes .../python3.12/site-packages/sniffio/_impl.py | 95 - .../site-packages/sniffio/_tests/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 184 -> 0 bytes .../__pycache__/test_sniffio.cpython-312.pyc | Bin 3897 -> 0 bytes .../sniffio/_tests/test_sniffio.py | 84 - .../site-packages/sniffio/_version.py | 3 - .../python3.12/site-packages/sniffio/py.typed | 0 .../starlette-0.26.1.dist-info/INSTALLER | 1 - .../starlette-0.26.1.dist-info/METADATA | 179 - .../starlette-0.26.1.dist-info/RECORD | 74 - .../starlette-0.26.1.dist-info/WHEEL | 4 - .../licenses/LICENSE.md | 27 - .../site-packages/starlette/__init__.py | 1 - .../__pycache__/__init__.cpython-312.pyc | Bin 206 -> 0 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 916 -> 0 bytes .../__pycache__/_utils.cpython-312.pyc | Bin 4267 -> 0 bytes .../__pycache__/applications.cpython-312.pyc | Bin 13847 -> 0 bytes .../authentication.cpython-312.pyc | Bin 8525 -> 0 bytes .../__pycache__/background.cpython-312.pyc | Bin 2969 -> 0 bytes .../__pycache__/concurrency.cpython-312.pyc | Bin 3472 -> 0 bytes .../__pycache__/config.cpython-312.pyc | Bin 8177 -> 0 bytes .../__pycache__/convertors.cpython-312.pyc | Bin 4858 -> 0 bytes .../datastructures.cpython-312.pyc | Bin 42765 -> 0 bytes .../__pycache__/endpoints.cpython-312.pyc | Bin 8093 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 3165 -> 0 bytes .../__pycache__/formparsers.cpython-312.pyc | Bin 14040 -> 0 bytes .../__pycache__/requests.cpython-312.pyc | Bin 16316 -> 0 bytes .../__pycache__/responses.cpython-312.pyc | Bin 19170 -> 0 bytes .../__pycache__/routing.cpython-312.pyc | Bin 45981 -> 0 bytes .../__pycache__/schemas.cpython-312.pyc | Bin 7114 -> 0 bytes .../__pycache__/staticfiles.cpython-312.pyc | Bin 11557 -> 0 bytes .../__pycache__/status.cpython-312.pyc | Bin 5106 -> 0 bytes .../__pycache__/templating.cpython-312.pyc | Bin 6027 -> 0 bytes .../__pycache__/testclient.cpython-312.pyc | Bin 40584 -> 0 bytes .../__pycache__/types.cpython-312.pyc | Bin 1225 -> 0 bytes .../__pycache__/websockets.cpython-312.pyc | Bin 10642 -> 0 bytes .../site-packages/starlette/_compat.py | 29 - .../site-packages/starlette/_utils.py | 74 - .../site-packages/starlette/applications.py | 261 - .../site-packages/starlette/authentication.py | 153 - .../site-packages/starlette/background.py | 43 - .../site-packages/starlette/concurrency.py | 65 - .../site-packages/starlette/config.py | 149 - .../site-packages/starlette/convertors.py | 87 - .../site-packages/starlette/datastructures.py | 708 -- .../site-packages/starlette/endpoints.py | 132 - .../site-packages/starlette/exceptions.py | 54 - .../site-packages/starlette/formparsers.py | 276 - .../starlette/middleware/__init__.py | 17 - .../__pycache__/__init__.cpython-312.pyc | Bin 1565 -> 0 bytes .../authentication.cpython-312.pyc | Bin 2925 -> 0 bytes .../__pycache__/base.cpython-312.pyc | Bin 9347 -> 0 bytes .../__pycache__/cors.cpython-312.pyc | Bin 7626 -> 0 bytes .../__pycache__/errors.cpython-312.pyc | Bin 9980 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 5902 -> 0 bytes .../__pycache__/gzip.cpython-312.pyc | Bin 6568 -> 0 bytes .../__pycache__/httpsredirect.cpython-312.pyc | Bin 1765 -> 0 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 4737 -> 0 bytes .../__pycache__/trustedhost.cpython-312.pyc | Bin 3165 -> 0 bytes .../__pycache__/wsgi.cpython-312.pyc | Bin 8313 -> 0 bytes .../starlette/middleware/authentication.py | 52 - .../starlette/middleware/base.py | 134 - .../starlette/middleware/cors.py | 177 - .../starlette/middleware/errors.py | 256 - .../starlette/middleware/exceptions.py | 109 - .../starlette/middleware/gzip.py | 113 - .../starlette/middleware/httpsredirect.py | 19 - .../starlette/middleware/sessions.py | 86 - .../starlette/middleware/trustedhost.py | 60 - .../starlette/middleware/wsgi.py | 140 - .../site-packages/starlette/py.typed | 0 .../site-packages/starlette/requests.py | 318 - .../site-packages/starlette/responses.py | 366 - .../site-packages/starlette/routing.py | 862 -- .../site-packages/starlette/schemas.py | 146 - .../site-packages/starlette/staticfiles.py | 246 - .../site-packages/starlette/status.py | 199 - .../site-packages/starlette/templating.py | 120 - .../site-packages/starlette/testclient.py | 797 -- .../site-packages/starlette/types.py | 17 - .../site-packages/starlette/websockets.py | 193 - .../INSTALLER | 1 - .../METADATA | 68 - .../typing_extensions-4.13.2.dist-info/RECORD | 7 - .../typing_extensions-4.13.2.dist-info/WHEEL | 4 - .../licenses/LICENSE | 279 - .../site-packages/typing_extensions.py | 4584 --------- .../tzlocal-5.3.1.dist-info/INSTALLER | 1 - .../tzlocal-5.3.1.dist-info/LICENSE.txt | 19 - .../tzlocal-5.3.1.dist-info/METADATA | 244 - .../tzlocal-5.3.1.dist-info/RECORD | 17 - .../tzlocal-5.3.1.dist-info/WHEEL | 5 - .../tzlocal-5.3.1.dist-info/top_level.txt | 1 - .../site-packages/tzlocal/__init__.py | 19 - .../__pycache__/__init__.cpython-312.pyc | Bin 515 -> 0 bytes .../tzlocal/__pycache__/unix.cpython-312.pyc | Bin 10095 -> 0 bytes .../tzlocal/__pycache__/utils.cpython-312.pyc | Bin 4366 -> 0 bytes .../tzlocal/__pycache__/win32.cpython-312.pyc | Bin 4777 -> 0 bytes .../__pycache__/windows_tz.cpython-312.pyc | Bin 30025 -> 0 bytes .../python3.12/site-packages/tzlocal/py.typed | 0 .../python3.12/site-packages/tzlocal/unix.py | 249 - .../python3.12/site-packages/tzlocal/utils.py | 108 - .../python3.12/site-packages/tzlocal/win32.py | 144 - .../site-packages/tzlocal/windows_tz.py | 736 -- .../urllib3-1.26.20.dist-info/INSTALLER | 1 - .../urllib3-1.26.20.dist-info/LICENSE.txt | 21 - .../urllib3-1.26.20.dist-info/METADATA | 1517 --- .../urllib3-1.26.20.dist-info/RECORD | 84 - .../urllib3-1.26.20.dist-info/WHEEL | 6 - .../urllib3-1.26.20.dist-info/top_level.txt | 1 - .../site-packages/urllib3/__init__.py | 102 - .../__pycache__/__init__.cpython-312.pyc | Bin 3392 -> 0 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 16475 -> 0 bytes .../__pycache__/_version.cpython-312.pyc | Bin 205 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 20394 -> 0 bytes .../connectionpool.cpython-312.pyc | Bin 36530 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 13480 -> 0 bytes .../__pycache__/fields.cpython-312.pyc | Bin 10400 -> 0 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 4005 -> 0 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 20459 -> 0 bytes .../__pycache__/request.cpython-312.pyc | Bin 7281 -> 0 bytes .../__pycache__/response.cpython-312.pyc | Bin 34133 -> 0 bytes .../site-packages/urllib3/_collections.py | 355 - .../site-packages/urllib3/_version.py | 2 - .../site-packages/urllib3/connection.py | 572 -- .../site-packages/urllib3/connectionpool.py | 1140 --- .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 185 -> 0 bytes .../_appengine_environ.cpython-312.pyc | Bin 1835 -> 0 bytes .../__pycache__/appengine.cpython-312.pyc | Bin 11527 -> 0 bytes .../__pycache__/ntlmpool.cpython-312.pyc | Bin 5706 -> 0 bytes .../__pycache__/pyopenssl.cpython-312.pyc | Bin 24404 -> 0 bytes .../securetransport.cpython-312.pyc | Bin 35513 -> 0 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 7498 -> 0 bytes .../urllib3/contrib/_appengine_environ.py | 36 - .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 202 -> 0 bytes .../__pycache__/bindings.cpython-312.pyc | Bin 17414 -> 0 bytes .../__pycache__/low_level.cpython-312.pyc | Bin 14788 -> 0 bytes .../contrib/_securetransport/bindings.py | 519 - .../contrib/_securetransport/low_level.py | 397 - .../urllib3/contrib/appengine.py | 314 - .../site-packages/urllib3/contrib/ntlmpool.py | 130 - .../urllib3/contrib/pyopenssl.py | 518 - .../urllib3/contrib/securetransport.py | 920 -- .../site-packages/urllib3/contrib/socks.py | 216 - .../site-packages/urllib3/exceptions.py | 323 - .../site-packages/urllib3/fields.py | 274 - .../site-packages/urllib3/filepost.py | 98 - .../urllib3/packages/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 186 -> 0 bytes .../packages/__pycache__/six.cpython-312.pyc | Bin 41306 -> 0 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 196 -> 0 bytes .../__pycache__/makefile.cpython-312.pyc | Bin 1807 -> 0 bytes .../weakref_finalize.cpython-312.pyc | Bin 7315 -> 0 bytes .../urllib3/packages/backports/makefile.py | 51 - .../packages/backports/weakref_finalize.py | 155 - .../site-packages/urllib3/packages/six.py | 1076 -- .../site-packages/urllib3/poolmanager.py | 540 - .../site-packages/urllib3/request.py | 191 - .../site-packages/urllib3/response.py | 885 -- .../site-packages/urllib3/util/__init__.py | 49 - .../util/__pycache__/__init__.cpython-312.pyc | Bin 1133 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 4743 -> 0 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 1539 -> 0 bytes .../util/__pycache__/queue.cpython-312.pyc | Bin 1339 -> 0 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 4409 -> 0 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 2976 -> 0 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 21705 -> 0 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 15352 -> 0 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 5058 -> 0 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 10754 -> 0 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 11126 -> 0 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 15758 -> 0 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 4390 -> 0 bytes .../site-packages/urllib3/util/connection.py | 149 - .../site-packages/urllib3/util/proxy.py | 57 - .../site-packages/urllib3/util/queue.py | 22 - .../site-packages/urllib3/util/request.py | 146 - .../site-packages/urllib3/util/response.py | 107 - .../site-packages/urllib3/util/retry.py | 622 -- .../site-packages/urllib3/util/ssl_.py | 504 - .../urllib3/util/ssl_match_hostname.py | 159 - .../urllib3/util/ssltransport.py | 221 - .../site-packages/urllib3/util/timeout.py | 271 - .../site-packages/urllib3/util/url.py | 435 - .../site-packages/urllib3/util/wait.py | 152 - .../uvicorn-0.22.0.dist-info/INSTALLER | 1 - .../uvicorn-0.22.0.dist-info/METADATA | 180 - .../uvicorn-0.22.0.dist-info/RECORD | 87 - .../uvicorn-0.22.0.dist-info/REQUESTED | 0 .../uvicorn-0.22.0.dist-info/WHEEL | 4 - .../uvicorn-0.22.0.dist-info/entry_points.txt | 2 - .../licenses/LICENSE.md | 27 - .../site-packages/uvicorn/__init__.py | 5 - .../site-packages/uvicorn/__main__.py | 4 - .../__pycache__/__init__.cpython-312.pyc | Bin 375 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 295 -> 0 bytes .../__pycache__/_subprocess.cpython-312.pyc | Bin 2756 -> 0 bytes .../__pycache__/_types.cpython-312.pyc | Bin 935 -> 0 bytes .../__pycache__/config.cpython-312.pyc | Bin 25267 -> 0 bytes .../__pycache__/importer.cpython-312.pyc | Bin 1771 -> 0 bytes .../__pycache__/logging.cpython-312.pyc | Bin 8109 -> 0 bytes .../uvicorn/__pycache__/main.cpython-312.pyc | Bin 20028 -> 0 bytes .../__pycache__/server.cpython-312.pyc | Bin 16103 -> 0 bytes .../__pycache__/workers.cpython-312.pyc | Bin 6480 -> 0 bytes .../site-packages/uvicorn/_subprocess.py | 76 - .../site-packages/uvicorn/_types.py | 14 - .../site-packages/uvicorn/config.py | 583 -- .../site-packages/uvicorn/importer.py | 38 - .../uvicorn/lifespan/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 186 -> 0 bytes .../lifespan/__pycache__/off.cpython-312.pyc | Bin 953 -> 0 bytes .../lifespan/__pycache__/on.cpython-312.pyc | Bin 7929 -> 0 bytes .../site-packages/uvicorn/lifespan/off.py | 15 - .../site-packages/uvicorn/lifespan/on.py | 139 - .../site-packages/uvicorn/logging.py | 122 - .../site-packages/uvicorn/loops/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 183 -> 0 bytes .../loops/__pycache__/asyncio.cpython-312.pyc | Bin 830 -> 0 bytes .../loops/__pycache__/auto.cpython-312.pyc | Bin 650 -> 0 bytes .../loops/__pycache__/uvloop.cpython-312.pyc | Bin 536 -> 0 bytes .../site-packages/uvicorn/loops/asyncio.py | 10 - .../site-packages/uvicorn/loops/auto.py | 11 - .../site-packages/uvicorn/loops/uvloop.py | 7 - .../python3.12/site-packages/uvicorn/main.py | 587 -- .../uvicorn/middleware/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 188 -> 0 bytes .../__pycache__/asgi2.cpython-312.pyc | Bin 1115 -> 0 bytes .../message_logger.cpython-312.pyc | Bin 4425 -> 0 bytes .../__pycache__/proxy_headers.cpython-312.pyc | Bin 3624 -> 0 bytes .../__pycache__/wsgi.cpython-312.pyc | Bin 9886 -> 0 bytes .../site-packages/uvicorn/middleware/asgi2.py | 20 - .../uvicorn/middleware/message_logger.py | 89 - .../uvicorn/middleware/proxy_headers.py | 78 - .../site-packages/uvicorn/middleware/wsgi.py | 202 - .../uvicorn/protocols/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 187 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 3006 -> 0 bytes .../uvicorn/protocols/http/__init__.py | 0 .../http/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 0 bytes .../http/__pycache__/auto.cpython-312.pyc | Bin 615 -> 0 bytes .../__pycache__/flow_control.cpython-312.pyc | Bin 3211 -> 0 bytes .../http/__pycache__/h11_impl.cpython-312.pyc | Bin 27023 -> 0 bytes .../httptools_impl.cpython-312.pyc | Bin 29153 -> 0 bytes .../uvicorn/protocols/http/auto.py | 14 - .../uvicorn/protocols/http/flow_control.py | 68 - .../uvicorn/protocols/http/h11_impl.py | 578 -- .../uvicorn/protocols/http/httptools_impl.py | 610 -- .../site-packages/uvicorn/protocols/utils.py | 55 - .../uvicorn/protocols/websockets/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 198 -> 0 bytes .../__pycache__/auto.cpython-312.pyc | Bin 832 -> 0 bytes .../websockets_impl.cpython-312.pyc | Bin 18473 -> 0 bytes .../__pycache__/wsproto_impl.cpython-312.pyc | Bin 19208 -> 0 bytes .../uvicorn/protocols/websockets/auto.py | 19 - .../protocols/websockets/websockets_impl.py | 383 - .../protocols/websockets/wsproto_impl.py | 357 - .../python3.12/site-packages/uvicorn/py.typed | 1 - .../site-packages/uvicorn/server.py | 335 - .../uvicorn/supervisors/__init__.py | 21 - .../__pycache__/__init__.cpython-312.pyc | Bin 880 -> 0 bytes .../__pycache__/basereload.cpython-312.pyc | Bin 6931 -> 0 bytes .../__pycache__/multiprocess.cpython-312.pyc | Bin 4080 -> 0 bytes .../__pycache__/statreload.cpython-312.pyc | Bin 2854 -> 0 bytes .../watchfilesreload.cpython-312.pyc | Bin 4499 -> 0 bytes .../watchgodreload.cpython-312.pyc | Bin 7690 -> 0 bytes .../uvicorn/supervisors/basereload.py | 125 - .../uvicorn/supervisors/multiprocess.py | 74 - .../uvicorn/supervisors/statreload.py | 53 - .../uvicorn/supervisors/watchfilesreload.py | 91 - .../uvicorn/supervisors/watchgodreload.py | 158 - .../site-packages/uvicorn/workers.py | 105 - venv/lib64 | 1 - venv/pyvenv.cfg | 5 - 2529 files changed, 2 insertions(+), 396384 deletions(-) delete mode 100644 public_key_signature.b64 delete mode 100644 public_key_signature.bin delete mode 100644 venv/bin/Activate.ps1 delete mode 100644 venv/bin/activate delete mode 100644 venv/bin/activate.csh delete mode 100644 venv/bin/activate.fish delete mode 100755 venv/bin/dotenv delete mode 100755 venv/bin/httpx delete mode 100755 venv/bin/normalizer delete mode 100755 venv/bin/pip delete mode 100755 venv/bin/pip3 delete mode 100755 venv/bin/pip3.12 delete mode 100755 venv/bin/py.test delete mode 100755 venv/bin/pytest delete mode 120000 venv/bin/python delete mode 120000 venv/bin/python3 delete mode 120000 venv/bin/python3.12 delete mode 100755 venv/bin/uvicorn delete mode 100644 venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/REQUESTED delete mode 100644 venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/__pycache__/py.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc delete mode 100755 venv/lib/python3.12/site-packages/_cffi_backend.cpython-312-x86_64-linux-gnu.so delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/_argcomplete.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/_version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/cacheprovider.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/capture.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/debugging.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/deprecated.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/doctest.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/faulthandler.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/fixtures.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/freeze_support.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/helpconfig.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/hookspec.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/junitxml.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/legacypath.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/logging.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/main.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/monkeypatch.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/nodes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/nose.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/outcomes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/pastebin.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/pathlib.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/pytester.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/pytester_assertions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/python.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/python_api.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/python_path.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/recwarn.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/reports.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/runner.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/scope.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/setuponly.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/setupplan.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/skipping.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/stash.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/stepwise.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/terminal.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/threadexception.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/timing.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/tmpdir.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/unittest.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/unraisableexception.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/warning_types.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/__pycache__/warnings.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_argcomplete.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_code/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_code/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_code/__pycache__/code.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_code/__pycache__/source.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_code/code.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_code/source.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_io/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_io/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_io/__pycache__/saferepr.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_io/__pycache__/terminalwriter.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_io/__pycache__/wcwidth.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_io/saferepr.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_io/terminalwriter.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_io/wcwidth.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_py/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_py/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_py/__pycache__/error.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_py/__pycache__/path.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_py/error.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_py/path.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/_version.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/assertion/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/assertion/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/assertion/__pycache__/rewrite.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/assertion/__pycache__/truncate.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/assertion/__pycache__/util.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/assertion/truncate.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/assertion/util.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/cacheprovider.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/capture.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/compat.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/config/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/config/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/config/__pycache__/argparsing.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/config/__pycache__/compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/config/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/config/__pycache__/findpaths.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/config/argparsing.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/config/compat.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/config/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/config/findpaths.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/debugging.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/deprecated.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/doctest.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/faulthandler.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/fixtures.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/freeze_support.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/helpconfig.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/hookspec.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/junitxml.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/legacypath.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/logging.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/main.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/mark/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/mark/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/mark/__pycache__/expression.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/mark/__pycache__/structures.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/_pytest/mark/expression.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/mark/structures.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/monkeypatch.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/nodes.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/nose.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/outcomes.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/pastebin.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/pathlib.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/py.typed delete mode 100644 venv/lib/python3.12/site-packages/_pytest/pytester.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/pytester_assertions.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/python.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/python_api.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/python_path.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/recwarn.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/reports.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/runner.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/scope.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/setuponly.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/setupplan.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/skipping.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/stash.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/stepwise.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/terminal.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/threadexception.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/timing.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/tmpdir.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/unittest.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/unraisableexception.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/warning_types.py delete mode 100644 venv/lib/python3.12/site-packages/_pytest/warnings.py delete mode 100644 venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/anyio/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/__pycache__/from_thread.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/__pycache__/lowlevel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/__pycache__/pytest_plugin.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/__pycache__/to_interpreter.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/__pycache__/to_process.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/__pycache__/to_thread.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_backends/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_backends/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_backends/__pycache__/_asyncio.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_backends/__pycache__/_trio.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_backends/_trio.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_asyncio_selector_thread.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_eventloop.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_fileio.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_resources.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_signals.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_sockets.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_streams.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_subprocesses.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_synchronization.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_tasks.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_tempfile.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_testing.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_typedattr.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_asyncio_selector_thread.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_eventloop.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_fileio.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_resources.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_signals.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_sockets.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_streams.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_subprocesses.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_synchronization.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_tasks.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_tempfile.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_testing.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/_core/_typedattr.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_eventloop.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_resources.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_sockets.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_streams.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_subprocesses.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_tasks.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_testing.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/_eventloop.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/_resources.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/_sockets.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/_streams.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/_subprocesses.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/_tasks.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/abc/_testing.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/from_thread.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/lowlevel.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/py.typed delete mode 100644 venv/lib/python3.12/site-packages/anyio/pytest_plugin.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/__pycache__/buffered.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/__pycache__/file.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/__pycache__/memory.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/__pycache__/stapled.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/__pycache__/text.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/__pycache__/tls.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/buffered.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/file.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/memory.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/stapled.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/text.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/streams/tls.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/to_interpreter.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/to_process.py delete mode 100644 venv/lib/python3.12/site-packages/anyio/to_thread.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/__pycache__/events.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/__pycache__/job.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/__pycache__/util.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/events.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/asyncio.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/debug.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/gevent.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/pool.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/tornado.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/twisted.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/asyncio.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/base.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/debug.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/gevent.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/pool.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/tornado.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/executors/twisted.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/job.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/etcd.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/memory.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/mongodb.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/redis.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/rethinkdb.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/sqlalchemy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/zookeeper.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/base.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/etcd.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/memory.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/mongodb.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/redis.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/rethinkdb.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/sqlalchemy.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/jobstores/zookeeper.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/asyncio.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/background.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/blocking.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/gevent.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/qt.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/tornado.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/twisted.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/asyncio.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/background.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/base.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/blocking.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/gevent.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/qt.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/tornado.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/schedulers/twisted.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/__pycache__/calendarinterval.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/__pycache__/combining.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/__pycache__/date.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/__pycache__/interval.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/base.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/calendarinterval.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/combining.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/cron/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/cron/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/cron/__pycache__/expressions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/cron/__pycache__/fields.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/cron/expressions.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/cron/fields.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/date.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/triggers/interval.py delete mode 100644 venv/lib/python3.12/site-packages/apscheduler/util.py delete mode 100644 venv/lib/python3.12/site-packages/attr/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/attr/__init__.pyi delete mode 100644 venv/lib/python3.12/site-packages/attr/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attr/__pycache__/_cmp.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attr/__pycache__/_compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attr/__pycache__/_config.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attr/__pycache__/_funcs.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attr/__pycache__/_make.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attr/__pycache__/_next_gen.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attr/__pycache__/_version_info.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attr/__pycache__/converters.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attr/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attr/__pycache__/filters.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attr/__pycache__/setters.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attr/__pycache__/validators.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attr/_cmp.py delete mode 100644 venv/lib/python3.12/site-packages/attr/_cmp.pyi delete mode 100644 venv/lib/python3.12/site-packages/attr/_compat.py delete mode 100644 venv/lib/python3.12/site-packages/attr/_config.py delete mode 100644 venv/lib/python3.12/site-packages/attr/_funcs.py delete mode 100644 venv/lib/python3.12/site-packages/attr/_make.py delete mode 100644 venv/lib/python3.12/site-packages/attr/_next_gen.py delete mode 100644 venv/lib/python3.12/site-packages/attr/_typing_compat.pyi delete mode 100644 venv/lib/python3.12/site-packages/attr/_version_info.py delete mode 100644 venv/lib/python3.12/site-packages/attr/_version_info.pyi delete mode 100644 venv/lib/python3.12/site-packages/attr/converters.py delete mode 100644 venv/lib/python3.12/site-packages/attr/converters.pyi delete mode 100644 venv/lib/python3.12/site-packages/attr/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/attr/exceptions.pyi delete mode 100644 venv/lib/python3.12/site-packages/attr/filters.py delete mode 100644 venv/lib/python3.12/site-packages/attr/filters.pyi delete mode 100644 venv/lib/python3.12/site-packages/attr/py.typed delete mode 100644 venv/lib/python3.12/site-packages/attr/setters.py delete mode 100644 venv/lib/python3.12/site-packages/attr/setters.pyi delete mode 100644 venv/lib/python3.12/site-packages/attr/validators.py delete mode 100644 venv/lib/python3.12/site-packages/attr/validators.pyi delete mode 100644 venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/licenses/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/attrs/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/attrs/__init__.pyi delete mode 100644 venv/lib/python3.12/site-packages/attrs/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attrs/__pycache__/converters.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attrs/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attrs/__pycache__/filters.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attrs/__pycache__/setters.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attrs/__pycache__/validators.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/attrs/converters.py delete mode 100644 venv/lib/python3.12/site-packages/attrs/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/attrs/filters.py delete mode 100644 venv/lib/python3.12/site-packages/attrs/py.typed delete mode 100644 venv/lib/python3.12/site-packages/attrs/setters.py delete mode 100644 venv/lib/python3.12/site-packages/attrs/validators.py delete mode 100644 venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/licenses/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/certifi/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/certifi/__main__.py delete mode 100644 venv/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/certifi/__pycache__/core.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/certifi/core.py delete mode 100644 venv/lib/python3.12/site-packages/certifi/py.typed delete mode 100644 venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/cffi/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/_imp_emulation.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/_shimmed_dist_utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/api.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/backend_ctypes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/cffi_opcode.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/commontypes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/cparser.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/error.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/ffiplatform.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/lock.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/model.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/pkgconfig.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/recompiler.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/setuptools_ext.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/vengine_cpy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/vengine_gen.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/__pycache__/verifier.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cffi/_cffi_errors.h delete mode 100644 venv/lib/python3.12/site-packages/cffi/_cffi_include.h delete mode 100644 venv/lib/python3.12/site-packages/cffi/_embedding.h delete mode 100644 venv/lib/python3.12/site-packages/cffi/_imp_emulation.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/_shimmed_dist_utils.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/api.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/backend_ctypes.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/cffi_opcode.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/commontypes.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/cparser.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/error.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/ffiplatform.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/lock.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/model.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/parse_c_type.h delete mode 100644 venv/lib/python3.12/site-packages/cffi/pkgconfig.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/recompiler.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/setuptools_ext.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/vengine_cpy.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/vengine_gen.py delete mode 100644 venv/lib/python3.12/site-packages/cffi/verifier.py delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/constant.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/md.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/models.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/api.py delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/assets/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/assets/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/cd.py delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/normalizer.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/cli/normalizer.py delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/constant.py delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/legacy.py delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/md.py delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/models.py delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/py.typed delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/utils.py delete mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/version.py delete mode 100644 venv/lib/python3.12/site-packages/click-8.2.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/click-8.2.0.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/click-8.2.0.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/click-8.2.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/click-8.2.0.dist-info/licenses/LICENSE.txt delete mode 100644 venv/lib/python3.12/site-packages/click/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/_compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/_termui_impl.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/_textwrap.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/_winconsole.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/core.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/decorators.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/formatting.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/globals.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/parser.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/shell_completion.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/termui.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/testing.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/types.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/click/_compat.py delete mode 100644 venv/lib/python3.12/site-packages/click/_termui_impl.py delete mode 100644 venv/lib/python3.12/site-packages/click/_textwrap.py delete mode 100644 venv/lib/python3.12/site-packages/click/_winconsole.py delete mode 100644 venv/lib/python3.12/site-packages/click/core.py delete mode 100644 venv/lib/python3.12/site-packages/click/decorators.py delete mode 100644 venv/lib/python3.12/site-packages/click/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/click/formatting.py delete mode 100644 venv/lib/python3.12/site-packages/click/globals.py delete mode 100644 venv/lib/python3.12/site-packages/click/parser.py delete mode 100644 venv/lib/python3.12/site-packages/click/py.typed delete mode 100644 venv/lib/python3.12/site-packages/click/shell_completion.py delete mode 100644 venv/lib/python3.12/site-packages/click/termui.py delete mode 100644 venv/lib/python3.12/site-packages/click/testing.py delete mode 100644 venv/lib/python3.12/site-packages/click/types.py delete mode 100644 venv/lib/python3.12/site-packages/click/utils.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/REQUESTED delete mode 100644 venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/licenses/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/licenses/LICENSE.APACHE delete mode 100644 venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/licenses/LICENSE.BSD delete mode 100644 venv/lib/python3.12/site-packages/cryptography/__about__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/__pycache__/__about__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/__pycache__/fernet.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/fernet.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/__pycache__/_oid.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/_oid.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/backends/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/backends/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/backend.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__pycache__/__init__.cpython-312.pyc delete mode 100755 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust.abi3.so delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/binding.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/_serialization.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/cmac.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/constant_time.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/hashes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/hmac.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/keywrap.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/padding.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/poly1305.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_asymmetric.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_serialization.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/types.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/aead.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/base.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/modes.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/cmac.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/constant_time.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/hashes.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/hmac.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/argon2.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/keywrap.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/padding.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/poly1305.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/base.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/ssh.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/totp.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/py.typed delete mode 100644 venv/lib/python3.12/site-packages/cryptography/utils.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/certificate_transparency.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/extensions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/general_name.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/name.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/ocsp.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/oid.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/verification.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/base.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/certificate_transparency.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/extensions.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/general_name.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/name.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/ocsp.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/oid.py delete mode 100644 venv/lib/python3.12/site-packages/cryptography/x509/verification.py delete mode 100644 venv/lib/python3.12/site-packages/dotenv/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/dotenv/__main__.py delete mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/__main__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/cli.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/ipython.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/main.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/parser.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/variables.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/dotenv/cli.py delete mode 100644 venv/lib/python3.12/site-packages/dotenv/ipython.py delete mode 100644 venv/lib/python3.12/site-packages/dotenv/main.py delete mode 100644 venv/lib/python3.12/site-packages/dotenv/parser.py delete mode 100644 venv/lib/python3.12/site-packages/dotenv/py.typed delete mode 100644 venv/lib/python3.12/site-packages/dotenv/variables.py delete mode 100644 venv/lib/python3.12/site-packages/dotenv/version.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/REQUESTED delete mode 100644 venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/licenses/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/applications.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/background.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/concurrency.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/datastructures.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/encoders.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/exception_handlers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/logger.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/param_functions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/params.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/requests.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/responses.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/routing.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/staticfiles.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/templating.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/testclient.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/types.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/__pycache__/websockets.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/applications.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/background.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/concurrency.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/datastructures.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/dependencies/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/dependencies/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/dependencies/__pycache__/models.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/dependencies/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/dependencies/models.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/dependencies/utils.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/encoders.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/exception_handlers.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/logger.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/asyncexitstack.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/cors.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/gzip.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/httpsredirect.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/trustedhost.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/wsgi.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/cors.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/gzip.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/httpsredirect.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/trustedhost.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/middleware/wsgi.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/openapi/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/constants.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/docs.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/models.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/openapi/constants.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/openapi/docs.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/openapi/models.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/openapi/utils.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/param_functions.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/params.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/py.typed delete mode 100644 venv/lib/python3.12/site-packages/fastapi/requests.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/responses.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/routing.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/__pycache__/api_key.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/__pycache__/http.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/__pycache__/oauth2.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/__pycache__/open_id_connect_url.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/api_key.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/base.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/http.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/oauth2.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/open_id_connect_url.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/security/utils.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/staticfiles.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/templating.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/testclient.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/types.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/utils.py delete mode 100644 venv/lib/python3.12/site-packages/fastapi/websockets.py delete mode 100644 venv/lib/python3.12/site-packages/h11-0.16.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/h11-0.16.0.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/h11-0.16.0.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/h11-0.16.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/h11-0.16.0.dist-info/licenses/LICENSE.txt delete mode 100644 venv/lib/python3.12/site-packages/h11-0.16.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/h11/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_abnf.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_connection.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_events.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_headers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_readers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_receivebuffer.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_state.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_util.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_writers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/h11/_abnf.py delete mode 100644 venv/lib/python3.12/site-packages/h11/_connection.py delete mode 100644 venv/lib/python3.12/site-packages/h11/_events.py delete mode 100644 venv/lib/python3.12/site-packages/h11/_headers.py delete mode 100644 venv/lib/python3.12/site-packages/h11/_readers.py delete mode 100644 venv/lib/python3.12/site-packages/h11/_receivebuffer.py delete mode 100644 venv/lib/python3.12/site-packages/h11/_state.py delete mode 100644 venv/lib/python3.12/site-packages/h11/_util.py delete mode 100644 venv/lib/python3.12/site-packages/h11/_version.py delete mode 100644 venv/lib/python3.12/site-packages/h11/_writers.py delete mode 100644 venv/lib/python3.12/site-packages/h11/py.typed delete mode 100644 venv/lib/python3.12/site-packages/httpcore-1.0.9.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/httpcore-1.0.9.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/httpcore-1.0.9.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/httpcore-1.0.9.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/httpcore-1.0.9.dist-info/licenses/LICENSE.md delete mode 100644 venv/lib/python3.12/site-packages/httpcore/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/__pycache__/_api.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/__pycache__/_exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/__pycache__/_models.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/__pycache__/_ssl.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/__pycache__/_synchronization.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/__pycache__/_trace.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/__pycache__/_utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_api.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/__pycache__/connection.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/__pycache__/connection_pool.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/__pycache__/http11.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/__pycache__/http2.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/__pycache__/http_proxy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/__pycache__/interfaces.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/__pycache__/socks_proxy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/connection.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/http11.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/http2.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/http_proxy.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/interfaces.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_async/socks_proxy.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/__pycache__/anyio.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/__pycache__/auto.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/__pycache__/mock.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/__pycache__/sync.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/__pycache__/trio.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/anyio.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/auto.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/base.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/mock.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/sync.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_backends/trio.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_models.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_ssl.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/__pycache__/connection.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/__pycache__/connection_pool.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/__pycache__/http11.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/__pycache__/http2.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/__pycache__/http_proxy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/__pycache__/interfaces.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/__pycache__/socks_proxy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/connection.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/http11.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/http2.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/http_proxy.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/interfaces.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_sync/socks_proxy.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_synchronization.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_trace.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/_utils.py delete mode 100644 venv/lib/python3.12/site-packages/httpcore/py.typed delete mode 100644 venv/lib/python3.12/site-packages/httpx-0.27.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/httpx-0.27.0.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/httpx-0.27.0.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/httpx-0.27.0.dist-info/REQUESTED delete mode 100644 venv/lib/python3.12/site-packages/httpx-0.27.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/httpx-0.27.0.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.12/site-packages/httpx-0.27.0.dist-info/licenses/LICENSE.md delete mode 100644 venv/lib/python3.12/site-packages/httpx/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/__version__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_api.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_auth.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_client.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_config.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_content.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_decoders.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_main.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_models.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_multipart.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_status_codes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_types.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_urlparse.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_urls.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__pycache__/_utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/__version__.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_api.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_auth.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_client.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_compat.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_config.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_content.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_decoders.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_main.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_models.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_multipart.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_status_codes.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_transports/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_transports/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/_transports/__pycache__/asgi.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/_transports/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/_transports/__pycache__/default.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/_transports/__pycache__/mock.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/_transports/__pycache__/wsgi.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/httpx/_transports/asgi.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_transports/base.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_transports/default.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_transports/mock.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_transports/wsgi.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_types.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_urlparse.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_urls.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/_utils.py delete mode 100644 venv/lib/python3.12/site-packages/httpx/py.typed delete mode 100644 venv/lib/python3.12/site-packages/idna-3.10.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/idna-3.10.dist-info/LICENSE.md delete mode 100644 venv/lib/python3.12/site-packages/idna-3.10.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/idna-3.10.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/idna-3.10.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/idna/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/core.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/idnadata.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/package_data.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/idna/codec.py delete mode 100644 venv/lib/python3.12/site-packages/idna/compat.py delete mode 100644 venv/lib/python3.12/site-packages/idna/core.py delete mode 100644 venv/lib/python3.12/site-packages/idna/idnadata.py delete mode 100644 venv/lib/python3.12/site-packages/idna/intranges.py delete mode 100644 venv/lib/python3.12/site-packages/idna/package_data.py delete mode 100644 venv/lib/python3.12/site-packages/idna/py.typed delete mode 100644 venv/lib/python3.12/site-packages/idna/uts46data.py delete mode 100644 venv/lib/python3.12/site-packages/iniconfig-2.1.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/iniconfig-2.1.0.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/iniconfig-2.1.0.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/iniconfig-2.1.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/iniconfig-2.1.0.dist-info/licenses/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/iniconfig/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/iniconfig/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/iniconfig/__pycache__/_parse.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/iniconfig/__pycache__/_version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/iniconfig/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/iniconfig/_parse.py delete mode 100644 venv/lib/python3.12/site-packages/iniconfig/_version.py delete mode 100644 venv/lib/python3.12/site-packages/iniconfig/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/iniconfig/py.typed delete mode 100644 venv/lib/python3.12/site-packages/packaging-25.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/packaging-25.0.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/packaging-25.0.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/packaging-25.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/packaging-25.0.dist-info/licenses/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/packaging-25.0.dist-info/licenses/LICENSE.APACHE delete mode 100644 venv/lib/python3.12/site-packages/packaging-25.0.dist-info/licenses/LICENSE.BSD delete mode 100644 venv/lib/python3.12/site-packages/packaging/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/_elffile.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/_manylinux.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/_musllinux.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/_parser.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/_structures.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/_tokenizer.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/markers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/metadata.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/requirements.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/specifiers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/tags.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/__pycache__/version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/_elffile.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/_manylinux.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/_musllinux.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/_parser.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/_structures.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/_tokenizer.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/licenses/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/licenses/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/licenses/__pycache__/_spdx.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/packaging/licenses/_spdx.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/markers.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/metadata.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/py.typed delete mode 100644 venv/lib/python3.12/site-packages/packaging/requirements.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/specifiers.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/tags.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/utils.py delete mode 100644 venv/lib/python3.12/site-packages/packaging/version.py delete mode 100644 venv/lib/python3.12/site-packages/pip-24.0.dist-info/AUTHORS.txt delete mode 100644 venv/lib/python3.12/site-packages/pip-24.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/pip-24.0.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.12/site-packages/pip-24.0.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/pip-24.0.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/pip-24.0.dist-info/REQUESTED delete mode 100644 venv/lib/python3.12/site-packages/pip-24.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/pip-24.0.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.12/site-packages/pip-24.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/pip/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/__main__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/__pip-runner__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/__pycache__/__main__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/main.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/build_env.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cache.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/autocompletion.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/base_command.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/cmdoptions.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/command_context.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/main.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/main_parser.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/parser.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/progress_bars.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/req_command.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/spinners.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/status_codes.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/cache.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/check.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/completion.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/debug.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/download.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/hash.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/help.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/index.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/install.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/list.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/search.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/show.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/cache.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/check.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/completion.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/configuration.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/debug.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/download.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/freeze.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/hash.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/help.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/index.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/inspect.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/install.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/list.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/search.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/show.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/uninstall.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/wheel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/configuration.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/base.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/installed.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/wheel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/collector.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/sources.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/collector.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/package_finder.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/sources.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/_distutils.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/_sysconfig.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/base.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/main.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/_json.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/base.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_compat.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_dists.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_envs.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/pkg_resources.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/candidate.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/format_control.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/index.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/link.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/scheme.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/target_python.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/wheel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/candidate.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/direct_url.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/format_control.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/index.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/installation_report.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/link.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/scheme.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/search_scope.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/selection_prefs.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/target_python.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/wheel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/auth.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/cache.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/download.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/session.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/auth.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/cache.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/download.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/lazy_wheel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/session.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/utils.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/xmlrpc.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/check.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/build_tracker.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata_editable.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata_legacy.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel_editable.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel_legacy.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/check.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/freeze.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/install/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/install/editable_legacy.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/install/wheel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/prepare.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/pyproject.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/constructors.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_file.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_install.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_set.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/constructors.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/req_file.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/req_install.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/req_set.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/req_uninstall.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/base.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/resolver.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/base.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/provider.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/reporter.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/requirements.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/self_outdated_check.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_log.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/logging.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/misc.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/models.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/urls.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/_jaraco_text.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/_log.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/appdirs.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/compat.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/compatibility_tags.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/datetime.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/deprecation.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/direct_url_helpers.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/egg_link.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/encoding.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/entrypoints.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/filesystem.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/filetypes.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/glibc.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/hashes.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/logging.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/misc.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/models.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/packaging.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/setuptools_build.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/subprocess.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/temp_dir.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/unpacking.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/urls.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/virtualenv.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/wheel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/git.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/bazaar.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/git.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/mercurial.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/subversion.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/versioncontrol.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_internal/wheel_builder.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/six.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/_cmd.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/adapter.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/cache.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/controller.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/filewrapper.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/heuristics.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/serialize.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/wrapper.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/__main__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/core.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/big5freq.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/big5prober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/chardistribution.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/charsetgroupprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/charsetprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/chardetect.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/codingstatemachine.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/codingstatemachinedict.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/cp949prober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/enums.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/escprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/escsm.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/eucjpprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/euckrfreq.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/euckrprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/euctwfreq.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/euctwprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/gb2312freq.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/gb2312prober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/hebrewprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/jisfreq.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/johabfreq.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/johabprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/jpcntx.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/langbulgarianmodel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/langgreekmodel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/langhebrewmodel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/langhungarianmodel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/langrussianmodel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/langthaimodel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/langturkishmodel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/latin1prober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/macromanprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/mbcharsetprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/mbcsgroupprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/mbcssm.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/languages.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/resultdict.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/sbcharsetprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/sbcsgroupprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/sjisprober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/universaldetector.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/utf1632prober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/utf8prober.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/chardet/version.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/ansi.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/ansitowin32.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/initialise.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/ansi_test.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/initialise_test.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/isatty_test.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/utils.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/winterm_test.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/win32.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/colorama/winterm.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/compat.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/database.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/index.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/locators.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/manifest.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/markers.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/metadata.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/resources.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/scripts.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/t32.exe delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/t64-arm.exe delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/t64.exe delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/util.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/version.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/w32.exe delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/w64-arm.exe delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/w64.exe delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/wheel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/__main__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/distro.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/core.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/codec.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/compat.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/core.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/idnadata.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/intranges.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/package_data.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/uts46data.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/ext.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/fallback.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__about__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/_manylinux.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/_musllinux.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/_structures.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/markers.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/requirements.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/specifiers.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/tags.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/utils.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/version.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__main__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/android.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/api.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/macos.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/unix.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/version.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/windows.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__main__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/cmdline.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/console.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/filter.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatter.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/_mapping.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/bbcode.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/groff.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/html.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/img.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/irc.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/latex.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/other.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/rtf.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/svg.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal256.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexer.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/_mapping.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/python.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/modeline.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/plugin.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/regexopt.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/scanner.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/sphinxext.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/style.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/token.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/unistring.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/util.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/actions.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/common.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/core.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/diagram/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/helpers.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/results.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/testing.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/unicode.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/util.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_compat.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/api.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/help.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/models.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__version__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/_internal_utils.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/adapters.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/api.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/auth.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/certs.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/compat.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/cookies.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/help.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/hooks.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/models.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/packages.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/sessions.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/status_codes.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/structures.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/utils.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/providers.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/reporters.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/structs.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__main__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/align.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/box.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/console.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/control.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/json.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/region.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/status.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/style.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/table.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/text.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_cell_widths.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_codes.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_replace.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_export_format.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_extension.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_fileno.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_inspect.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_log_render.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_loop.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_null_file.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_palettes.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_pick.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_ratio.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_spinners.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_stack.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_timer.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_win32_console.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_windows.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_windows_renderer.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_wrap.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/abc.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/align.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/ansi.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/bar.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/box.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/cells.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/color.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/color_triplet.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/columns.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/console.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/constrain.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/containers.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/control.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/default_styles.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/diagnose.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/emoji.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/errors.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/file_proxy.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/filesize.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/highlighter.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/json.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/jupyter.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/layout.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/live.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/live_render.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/logging.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/markup.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/measure.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/padding.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/pager.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/palette.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/panel.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/pretty.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/progress.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/progress_bar.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/prompt.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/protocol.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/region.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/repr.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/rule.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/scope.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/screen.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/segment.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/spinner.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/status.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/style.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/styled.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/syntax.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/table.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/terminal_theme.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/text.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/theme.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/themes.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/traceback.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/tree.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/six.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/_asyncio.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/_utils.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/after.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/before.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/before_sleep.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/nap.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/retry.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/stop.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/tornadoweb.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tenacity/wait.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/_parser.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/_re.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/_types.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/_api.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/_macos.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/_openssl.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/_ssl_constants.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/_windows.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/typing_extensions.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/_collections.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/_version.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/connection.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/connectionpool.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/appengine.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/securetransport.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/socks.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/fields.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/filepost.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/six.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/poolmanager.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/request.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/response.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/connection.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/proxy.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/queue.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/request.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/response.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/retry.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssltransport.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/timeout.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/url.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/wait.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/vendor.txt delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/webencodings/labels.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/webencodings/mklabels.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/webencodings/tests.py delete mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/webencodings/x_user_defined.py delete mode 100644 venv/lib/python3.12/site-packages/pip/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pluggy-1.5.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/pluggy-1.5.0.dist-info/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/pluggy-1.5.0.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/pluggy-1.5.0.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/pluggy-1.5.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/pluggy-1.5.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/pluggy/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pluggy/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pluggy/__pycache__/_callers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pluggy/__pycache__/_hooks.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pluggy/__pycache__/_manager.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pluggy/__pycache__/_result.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pluggy/__pycache__/_tracing.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pluggy/__pycache__/_version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pluggy/__pycache__/_warnings.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pluggy/_callers.py delete mode 100644 venv/lib/python3.12/site-packages/pluggy/_hooks.py delete mode 100644 venv/lib/python3.12/site-packages/pluggy/_manager.py delete mode 100644 venv/lib/python3.12/site-packages/pluggy/_result.py delete mode 100644 venv/lib/python3.12/site-packages/pluggy/_tracing.py delete mode 100644 venv/lib/python3.12/site-packages/pluggy/_version.py delete mode 100644 venv/lib/python3.12/site-packages/pluggy/_warnings.py delete mode 100644 venv/lib/python3.12/site-packages/pluggy/py.typed delete mode 100644 venv/lib/python3.12/site-packages/py.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser-2.22.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/pycparser-2.22.dist-info/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/pycparser-2.22.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/pycparser-2.22.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/pycparser-2.22.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/pycparser-2.22.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/pycparser/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/_ast_gen.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/_build_tables.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/ast_transforms.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/c_ast.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/c_generator.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/c_lexer.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/c_parser.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/lextab.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/plyparser.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/__pycache__/yacctab.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/_ast_gen.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/_build_tables.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/_c_ast.cfg delete mode 100644 venv/lib/python3.12/site-packages/pycparser/ast_transforms.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/c_ast.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/c_generator.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/c_lexer.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/c_parser.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/lextab.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__pycache__/cpp.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__pycache__/ctokens.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__pycache__/lex.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__pycache__/yacc.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/__pycache__/ygen.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/cpp.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/ctokens.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/lex.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/yacc.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/ply/ygen.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/plyparser.py delete mode 100644 venv/lib/python3.12/site-packages/pycparser/yacctab.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic-1.10.4.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/pydantic-1.10.4.dist-info/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/pydantic-1.10.4.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/pydantic-1.10.4.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/pydantic-1.10.4.dist-info/REQUESTED delete mode 100644 venv/lib/python3.12/site-packages/pydantic-1.10.4.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/pydantic-1.10.4.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.12/site-packages/pydantic-1.10.4.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/_hypothesis_plugin.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/annotated_types.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/class_validators.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/color.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/config.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/dataclasses.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/datetime_parse.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/decorator.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/env_settings.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/error_wrappers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/errors.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/fields.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/generics.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/json.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/main.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/mypy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/networks.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/parse.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/schema.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/tools.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/types.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/typing.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/validators.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/__pycache__/version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pydantic/_hypothesis_plugin.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/annotated_types.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/class_validators.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/color.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/config.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/dataclasses.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/datetime_parse.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/decorator.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/env_settings.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/error_wrappers.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/errors.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/fields.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/generics.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/json.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/main.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/mypy.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/networks.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/parse.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/py.typed delete mode 100644 venv/lib/python3.12/site-packages/pydantic/schema.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/tools.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/types.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/typing.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/utils.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/validators.py delete mode 100644 venv/lib/python3.12/site-packages/pydantic/version.py delete mode 100644 venv/lib/python3.12/site-packages/pytest-7.2.2.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/pytest-7.2.2.dist-info/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/pytest-7.2.2.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/pytest-7.2.2.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/pytest-7.2.2.dist-info/REQUESTED delete mode 100644 venv/lib/python3.12/site-packages/pytest-7.2.2.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/pytest-7.2.2.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.12/site-packages/pytest-7.2.2.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/pytest/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/pytest/__main__.py delete mode 100644 venv/lib/python3.12/site-packages/pytest/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pytest/__pycache__/__main__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/pytest/py.typed delete mode 100644 venv/lib/python3.12/site-packages/python_dotenv-0.21.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/python_dotenv-0.21.0.dist-info/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/python_dotenv-0.21.0.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/python_dotenv-0.21.0.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/python_dotenv-0.21.0.dist-info/REQUESTED delete mode 100644 venv/lib/python3.12/site-packages/python_dotenv-0.21.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/python_dotenv-0.21.0.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.12/site-packages/python_dotenv-0.21.0.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/requests-2.28.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/requests-2.28.1.dist-info/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/requests-2.28.1.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/requests-2.28.1.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/requests-2.28.1.dist-info/REQUESTED delete mode 100644 venv/lib/python3.12/site-packages/requests-2.28.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/requests-2.28.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/requests/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/__version__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/_internal_utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/adapters.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/api.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/auth.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/certs.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/cookies.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/help.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/hooks.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/models.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/packages.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/sessions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/status_codes.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/structures.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/requests/__version__.py delete mode 100644 venv/lib/python3.12/site-packages/requests/_internal_utils.py delete mode 100644 venv/lib/python3.12/site-packages/requests/adapters.py delete mode 100644 venv/lib/python3.12/site-packages/requests/api.py delete mode 100644 venv/lib/python3.12/site-packages/requests/auth.py delete mode 100644 venv/lib/python3.12/site-packages/requests/certs.py delete mode 100644 venv/lib/python3.12/site-packages/requests/compat.py delete mode 100644 venv/lib/python3.12/site-packages/requests/cookies.py delete mode 100644 venv/lib/python3.12/site-packages/requests/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/requests/help.py delete mode 100644 venv/lib/python3.12/site-packages/requests/hooks.py delete mode 100644 venv/lib/python3.12/site-packages/requests/models.py delete mode 100644 venv/lib/python3.12/site-packages/requests/packages.py delete mode 100644 venv/lib/python3.12/site-packages/requests/sessions.py delete mode 100644 venv/lib/python3.12/site-packages/requests/status_codes.py delete mode 100644 venv/lib/python3.12/site-packages/requests/structures.py delete mode 100644 venv/lib/python3.12/site-packages/requests/utils.py delete mode 100644 venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/LICENSE.APACHE2 delete mode 100644 venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/LICENSE.MIT delete mode 100644 venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/sniffio/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/sniffio/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/sniffio/__pycache__/_impl.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/sniffio/__pycache__/_version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/sniffio/_impl.py delete mode 100644 venv/lib/python3.12/site-packages/sniffio/_tests/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/sniffio/_tests/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/sniffio/_tests/__pycache__/test_sniffio.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/sniffio/_tests/test_sniffio.py delete mode 100644 venv/lib/python3.12/site-packages/sniffio/_version.py delete mode 100644 venv/lib/python3.12/site-packages/sniffio/py.typed delete mode 100644 venv/lib/python3.12/site-packages/starlette-0.26.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/starlette-0.26.1.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/starlette-0.26.1.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/starlette-0.26.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/starlette-0.26.1.dist-info/licenses/LICENSE.md delete mode 100644 venv/lib/python3.12/site-packages/starlette/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/_compat.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/_utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/applications.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/authentication.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/background.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/concurrency.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/config.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/convertors.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/datastructures.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/endpoints.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/formparsers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/requests.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/responses.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/routing.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/schemas.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/staticfiles.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/status.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/templating.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/testclient.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/types.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/__pycache__/websockets.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/_compat.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/_utils.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/applications.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/authentication.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/background.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/concurrency.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/config.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/convertors.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/datastructures.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/endpoints.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/formparsers.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/authentication.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/base.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/cors.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/errors.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/gzip.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/httpsredirect.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/sessions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/trustedhost.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/wsgi.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/authentication.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/base.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/cors.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/errors.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/gzip.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/httpsredirect.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/sessions.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/trustedhost.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/middleware/wsgi.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/py.typed delete mode 100644 venv/lib/python3.12/site-packages/starlette/requests.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/responses.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/routing.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/schemas.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/staticfiles.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/status.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/templating.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/testclient.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/types.py delete mode 100644 venv/lib/python3.12/site-packages/starlette/websockets.py delete mode 100644 venv/lib/python3.12/site-packages/typing_extensions-4.13.2.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/typing_extensions-4.13.2.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/typing_extensions-4.13.2.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/typing_extensions-4.13.2.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/typing_extensions-4.13.2.dist-info/licenses/LICENSE delete mode 100644 venv/lib/python3.12/site-packages/typing_extensions.py delete mode 100644 venv/lib/python3.12/site-packages/tzlocal-5.3.1.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/tzlocal-5.3.1.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.12/site-packages/tzlocal-5.3.1.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/tzlocal-5.3.1.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/tzlocal-5.3.1.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/tzlocal-5.3.1.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/tzlocal/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/tzlocal/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/tzlocal/__pycache__/unix.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/tzlocal/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/tzlocal/__pycache__/win32.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/tzlocal/__pycache__/windows_tz.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/tzlocal/py.typed delete mode 100644 venv/lib/python3.12/site-packages/tzlocal/unix.py delete mode 100644 venv/lib/python3.12/site-packages/tzlocal/utils.py delete mode 100644 venv/lib/python3.12/site-packages/tzlocal/win32.py delete mode 100644 venv/lib/python3.12/site-packages/tzlocal/windows_tz.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3-1.26.20.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/urllib3-1.26.20.dist-info/LICENSE.txt delete mode 100644 venv/lib/python3.12/site-packages/urllib3-1.26.20.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/urllib3-1.26.20.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/urllib3-1.26.20.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/urllib3-1.26.20.dist-info/top_level.txt delete mode 100644 venv/lib/python3.12/site-packages/urllib3/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/_collections.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/_version.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/connection.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/connectionpool.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/exceptions.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/fields.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/filepost.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/poolmanager.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/request.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/response.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/_collections.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/_version.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/connection.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/connectionpool.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/appengine.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/socks.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/_appengine_environ.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/_securetransport/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/_securetransport/bindings.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/_securetransport/low_level.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/appengine.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/ntlmpool.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/pyopenssl.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/securetransport.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/socks.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/exceptions.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/fields.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/filepost.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/packages/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/packages/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/packages/__pycache__/six.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/packages/backports/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/packages/backports/makefile.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/packages/backports/weakref_finalize.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/packages/six.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/poolmanager.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/request.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/response.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/connection.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/proxy.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/queue.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/request.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/response.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/retry.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssltransport.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/timeout.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/url.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/wait.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/connection.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/proxy.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/queue.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/request.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/response.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/retry.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/ssl_.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/ssl_match_hostname.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/ssltransport.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/timeout.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/url.py delete mode 100644 venv/lib/python3.12/site-packages/urllib3/util/wait.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn-0.22.0.dist-info/INSTALLER delete mode 100644 venv/lib/python3.12/site-packages/uvicorn-0.22.0.dist-info/METADATA delete mode 100644 venv/lib/python3.12/site-packages/uvicorn-0.22.0.dist-info/RECORD delete mode 100644 venv/lib/python3.12/site-packages/uvicorn-0.22.0.dist-info/REQUESTED delete mode 100644 venv/lib/python3.12/site-packages/uvicorn-0.22.0.dist-info/WHEEL delete mode 100644 venv/lib/python3.12/site-packages/uvicorn-0.22.0.dist-info/entry_points.txt delete mode 100644 venv/lib/python3.12/site-packages/uvicorn-0.22.0.dist-info/licenses/LICENSE.md delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/__main__.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/__pycache__/__main__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/__pycache__/_subprocess.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/__pycache__/_types.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/__pycache__/config.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/__pycache__/importer.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/__pycache__/logging.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/__pycache__/main.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/__pycache__/server.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/__pycache__/workers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/_subprocess.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/_types.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/config.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/importer.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/lifespan/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/lifespan/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/lifespan/__pycache__/off.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/lifespan/__pycache__/on.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/lifespan/off.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/lifespan/on.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/logging.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/loops/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/loops/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/loops/__pycache__/asyncio.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/loops/__pycache__/auto.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/loops/__pycache__/uvloop.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/loops/asyncio.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/loops/auto.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/loops/uvloop.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/main.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/middleware/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/middleware/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/middleware/__pycache__/asgi2.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/middleware/__pycache__/message_logger.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/middleware/__pycache__/proxy_headers.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/middleware/__pycache__/wsgi.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/middleware/asgi2.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/middleware/message_logger.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/middleware/wsgi.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/__pycache__/utils.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/http/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/http/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/http/__pycache__/auto.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/http/__pycache__/flow_control.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/http/__pycache__/h11_impl.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/http/__pycache__/httptools_impl.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/http/auto.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/http/flow_control.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/utils.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/websockets/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/websockets/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/websockets/__pycache__/auto.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/websockets/__pycache__/websockets_impl.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/websockets/__pycache__/wsproto_impl.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/websockets/auto.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/websockets/websockets_impl.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/protocols/websockets/wsproto_impl.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/py.typed delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/server.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/supervisors/__init__.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/__init__.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/basereload.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/multiprocess.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/statreload.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/watchfilesreload.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/watchgodreload.cpython-312.pyc delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/supervisors/basereload.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/supervisors/multiprocess.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/supervisors/statreload.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/supervisors/watchfilesreload.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/supervisors/watchgodreload.py delete mode 100644 venv/lib/python3.12/site-packages/uvicorn/workers.py delete mode 120000 venv/lib64 delete mode 100644 venv/pyvenv.cfg diff --git a/.gitignore b/.gitignore index 799406b..fbc5fb2 100644 --- a/.gitignore +++ b/.gitignore @@ -11,5 +11,5 @@ venv/ # Variáveis de Ambiente e Chaves .env *.pem -.bin -.b64 \ No newline at end of file +public_key_signature.b64 +public_key_signature.bin \ No newline at end of file diff --git a/public_key_signature.b64 b/public_key_signature.b64 deleted file mode 100644 index 46e2d19..0000000 --- a/public_key_signature.b64 +++ /dev/null @@ -1,5 +0,0 @@ -wbBGvLs9B3dikdCk5SbswbhEby+maurnJSp4+GZ4MvdRdqYthDUUOqGxS45AkRl3i4JvgfNh/BxS -v0kem0URXcfaipGaNAlTTJB72gOkSjOnx+pG9o3vYdzGem2aqvXHDfiVmd0kGZcYU/3uk4GVyMRB -R6CWRhgSSfjiSYr5VWqLoVVZmwSDc0V/WeFxsSMbHfDI46Y8qC4CcsyOPEBe4QGucoWu3JyrG+pg -erC36NRduE4miTJUZk6QTYf6mIi2vZ6ST91w98A/2FAz69yvRER+lkv7mETQoPwRWo+pdUy0QuaF -Vj6wbUZMo9cGcXBj3/hKdTOHqeDVFfmsX/dBtQ== diff --git a/public_key_signature.bin b/public_key_signature.bin deleted file mode 100644 index ee177d0..0000000 --- a/public_key_signature.bin +++ /dev/null @@ -1 +0,0 @@ -Á°F¼»=wb‘Фå&ìÁ¸Do/¦jêç%*xøfx2÷Qv¦-„5:¡±KŽ@‘w‹‚oóaüR¿I›E]ÇÚŠ‘š4 SL{Ú¤J3§ÇêFöïaÜÆzmšªõÇ ø•™Ý$—Sýî“•ÈÄAG –FIøâIŠùUj‹¡UY›ƒsEYáq±#ðÈã¦<¨.rÌŽ<@^á®r…®Üœ«ê`z°·èÔ]¸N&‰2TfNM‡ú˜ˆ¶½ž’OÝp÷À?ØP3ëܯDD~–Kû˜DРüZ©uL´Bæ…V>°mFL£×qpcßøJu3‡©àÕù¬_÷Aµ \ No newline at end of file diff --git a/venv/bin/Activate.ps1 b/venv/bin/Activate.ps1 deleted file mode 100644 index b49d77b..0000000 --- a/venv/bin/Activate.ps1 +++ /dev/null @@ -1,247 +0,0 @@ -<# -.Synopsis -Activate a Python virtual environment for the current PowerShell session. - -.Description -Pushes the python executable for a virtual environment to the front of the -$Env:PATH environment variable and sets the prompt to signify that you are -in a Python virtual environment. Makes use of the command line switches as -well as the `pyvenv.cfg` file values present in the virtual environment. - -.Parameter VenvDir -Path to the directory that contains the virtual environment to activate. The -default value for this is the parent of the directory that the Activate.ps1 -script is located within. - -.Parameter Prompt -The prompt prefix to display when this virtual environment is activated. By -default, this prompt is the name of the virtual environment folder (VenvDir) -surrounded by parentheses and followed by a single space (ie. '(.venv) '). - -.Example -Activate.ps1 -Activates the Python virtual environment that contains the Activate.ps1 script. - -.Example -Activate.ps1 -Verbose -Activates the Python virtual environment that contains the Activate.ps1 script, -and shows extra information about the activation as it executes. - -.Example -Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv -Activates the Python virtual environment located in the specified location. - -.Example -Activate.ps1 -Prompt "MyPython" -Activates the Python virtual environment that contains the Activate.ps1 script, -and prefixes the current prompt with the specified string (surrounded in -parentheses) while the virtual environment is active. - -.Notes -On Windows, it may be required to enable this Activate.ps1 script by setting the -execution policy for the user. You can do this by issuing the following PowerShell -command: - -PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser - -For more information on Execution Policies: -https://go.microsoft.com/fwlink/?LinkID=135170 - -#> -Param( - [Parameter(Mandatory = $false)] - [String] - $VenvDir, - [Parameter(Mandatory = $false)] - [String] - $Prompt -) - -<# Function declarations --------------------------------------------------- #> - -<# -.Synopsis -Remove all shell session elements added by the Activate script, including the -addition of the virtual environment's Python executable from the beginning of -the PATH variable. - -.Parameter NonDestructive -If present, do not remove this function from the global namespace for the -session. - -#> -function global:deactivate ([switch]$NonDestructive) { - # Revert to original values - - # The prior prompt: - if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { - Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt - Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT - } - - # The prior PYTHONHOME: - if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { - Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME - Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME - } - - # The prior PATH: - if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { - Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH - Remove-Item -Path Env:_OLD_VIRTUAL_PATH - } - - # Just remove the VIRTUAL_ENV altogether: - if (Test-Path -Path Env:VIRTUAL_ENV) { - Remove-Item -Path env:VIRTUAL_ENV - } - - # Just remove VIRTUAL_ENV_PROMPT altogether. - if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) { - Remove-Item -Path env:VIRTUAL_ENV_PROMPT - } - - # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: - if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { - Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force - } - - # Leave deactivate function in the global namespace if requested: - if (-not $NonDestructive) { - Remove-Item -Path function:deactivate - } -} - -<# -.Description -Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the -given folder, and returns them in a map. - -For each line in the pyvenv.cfg file, if that line can be parsed into exactly -two strings separated by `=` (with any amount of whitespace surrounding the =) -then it is considered a `key = value` line. The left hand string is the key, -the right hand is the value. - -If the value starts with a `'` or a `"` then the first and last character is -stripped from the value before being captured. - -.Parameter ConfigDir -Path to the directory that contains the `pyvenv.cfg` file. -#> -function Get-PyVenvConfig( - [String] - $ConfigDir -) { - Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" - - # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). - $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue - - # An empty map will be returned if no config file is found. - $pyvenvConfig = @{ } - - if ($pyvenvConfigPath) { - - Write-Verbose "File exists, parse `key = value` lines" - $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath - - $pyvenvConfigContent | ForEach-Object { - $keyval = $PSItem -split "\s*=\s*", 2 - if ($keyval[0] -and $keyval[1]) { - $val = $keyval[1] - - # Remove extraneous quotations around a string value. - if ("'""".Contains($val.Substring(0, 1))) { - $val = $val.Substring(1, $val.Length - 2) - } - - $pyvenvConfig[$keyval[0]] = $val - Write-Verbose "Adding Key: '$($keyval[0])'='$val'" - } - } - } - return $pyvenvConfig -} - - -<# Begin Activate script --------------------------------------------------- #> - -# Determine the containing directory of this script -$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition -$VenvExecDir = Get-Item -Path $VenvExecPath - -Write-Verbose "Activation script is located in path: '$VenvExecPath'" -Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" -Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" - -# Set values required in priority: CmdLine, ConfigFile, Default -# First, get the location of the virtual environment, it might not be -# VenvExecDir if specified on the command line. -if ($VenvDir) { - Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" -} -else { - Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." - $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") - Write-Verbose "VenvDir=$VenvDir" -} - -# Next, read the `pyvenv.cfg` file to determine any required value such -# as `prompt`. -$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir - -# Next, set the prompt from the command line, or the config file, or -# just use the name of the virtual environment folder. -if ($Prompt) { - Write-Verbose "Prompt specified as argument, using '$Prompt'" -} -else { - Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" - if ($pyvenvCfg -and $pyvenvCfg['prompt']) { - Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" - $Prompt = $pyvenvCfg['prompt']; - } - else { - Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)" - Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" - $Prompt = Split-Path -Path $venvDir -Leaf - } -} - -Write-Verbose "Prompt = '$Prompt'" -Write-Verbose "VenvDir='$VenvDir'" - -# Deactivate any currently active virtual environment, but leave the -# deactivate function in place. -deactivate -nondestructive - -# Now set the environment variable VIRTUAL_ENV, used by many tools to determine -# that there is an activated venv. -$env:VIRTUAL_ENV = $VenvDir - -if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { - - Write-Verbose "Setting prompt to '$Prompt'" - - # Set the prompt to include the env name - # Make sure _OLD_VIRTUAL_PROMPT is global - function global:_OLD_VIRTUAL_PROMPT { "" } - Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT - New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt - - function global:prompt { - Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " - _OLD_VIRTUAL_PROMPT - } - $env:VIRTUAL_ENV_PROMPT = $Prompt -} - -# Clear PYTHONHOME -if (Test-Path -Path Env:PYTHONHOME) { - Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME - Remove-Item -Path Env:PYTHONHOME -} - -# Add the venv to the PATH -Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH -$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" diff --git a/venv/bin/activate b/venv/bin/activate deleted file mode 100644 index d80fcce..0000000 --- a/venv/bin/activate +++ /dev/null @@ -1,70 +0,0 @@ -# This file must be used with "source bin/activate" *from bash* -# You cannot run it directly - -deactivate () { - # reset old environment variables - if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then - PATH="${_OLD_VIRTUAL_PATH:-}" - export PATH - unset _OLD_VIRTUAL_PATH - fi - if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then - PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" - export PYTHONHOME - unset _OLD_VIRTUAL_PYTHONHOME - fi - - # Call hash to forget past commands. Without forgetting - # past commands the $PATH changes we made may not be respected - hash -r 2> /dev/null - - if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then - PS1="${_OLD_VIRTUAL_PS1:-}" - export PS1 - unset _OLD_VIRTUAL_PS1 - fi - - unset VIRTUAL_ENV - unset VIRTUAL_ENV_PROMPT - if [ ! "${1:-}" = "nondestructive" ] ; then - # Self destruct! - unset -f deactivate - fi -} - -# unset irrelevant variables -deactivate nondestructive - -# on Windows, a path can contain colons and backslashes and has to be converted: -if [ "${OSTYPE:-}" = "cygwin" ] || [ "${OSTYPE:-}" = "msys" ] ; then - # transform D:\path\to\venv to /d/path/to/venv on MSYS - # and to /cygdrive/d/path/to/venv on Cygwin - export VIRTUAL_ENV=$(cygpath "/home/joaomonezi/Consultme/venv") -else - # use the path as-is - export VIRTUAL_ENV="/home/joaomonezi/Consultme/venv" -fi - -_OLD_VIRTUAL_PATH="$PATH" -PATH="$VIRTUAL_ENV/bin:$PATH" -export PATH - -# unset PYTHONHOME if set -# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) -# could use `if (set -u; : $PYTHONHOME) ;` in bash -if [ -n "${PYTHONHOME:-}" ] ; then - _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" - unset PYTHONHOME -fi - -if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then - _OLD_VIRTUAL_PS1="${PS1:-}" - PS1="(venv) ${PS1:-}" - export PS1 - VIRTUAL_ENV_PROMPT="(venv) " - export VIRTUAL_ENV_PROMPT -fi - -# Call hash to forget past commands. Without forgetting -# past commands the $PATH changes we made may not be respected -hash -r 2> /dev/null diff --git a/venv/bin/activate.csh b/venv/bin/activate.csh deleted file mode 100644 index faae94d..0000000 --- a/venv/bin/activate.csh +++ /dev/null @@ -1,27 +0,0 @@ -# This file must be used with "source bin/activate.csh" *from csh*. -# You cannot run it directly. - -# Created by Davide Di Blasi . -# Ported to Python 3.3 venv by Andrew Svetlov - -alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate' - -# Unset irrelevant variables. -deactivate nondestructive - -setenv VIRTUAL_ENV "/home/joaomonezi/Consultme/venv" - -set _OLD_VIRTUAL_PATH="$PATH" -setenv PATH "$VIRTUAL_ENV/bin:$PATH" - - -set _OLD_VIRTUAL_PROMPT="$prompt" - -if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then - set prompt = "(venv) $prompt" - setenv VIRTUAL_ENV_PROMPT "(venv) " -endif - -alias pydoc python -m pydoc - -rehash diff --git a/venv/bin/activate.fish b/venv/bin/activate.fish deleted file mode 100644 index f95356b..0000000 --- a/venv/bin/activate.fish +++ /dev/null @@ -1,69 +0,0 @@ -# This file must be used with "source /bin/activate.fish" *from fish* -# (https://fishshell.com/). You cannot run it directly. - -function deactivate -d "Exit virtual environment and return to normal shell environment" - # reset old environment variables - if test -n "$_OLD_VIRTUAL_PATH" - set -gx PATH $_OLD_VIRTUAL_PATH - set -e _OLD_VIRTUAL_PATH - end - if test -n "$_OLD_VIRTUAL_PYTHONHOME" - set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME - set -e _OLD_VIRTUAL_PYTHONHOME - end - - if test -n "$_OLD_FISH_PROMPT_OVERRIDE" - set -e _OLD_FISH_PROMPT_OVERRIDE - # prevents error when using nested fish instances (Issue #93858) - if functions -q _old_fish_prompt - functions -e fish_prompt - functions -c _old_fish_prompt fish_prompt - functions -e _old_fish_prompt - end - end - - set -e VIRTUAL_ENV - set -e VIRTUAL_ENV_PROMPT - if test "$argv[1]" != "nondestructive" - # Self-destruct! - functions -e deactivate - end -end - -# Unset irrelevant variables. -deactivate nondestructive - -set -gx VIRTUAL_ENV "/home/joaomonezi/Consultme/venv" - -set -gx _OLD_VIRTUAL_PATH $PATH -set -gx PATH "$VIRTUAL_ENV/bin" $PATH - -# Unset PYTHONHOME if set. -if set -q PYTHONHOME - set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME - set -e PYTHONHOME -end - -if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" - # fish uses a function instead of an env var to generate the prompt. - - # Save the current fish_prompt function as the function _old_fish_prompt. - functions -c fish_prompt _old_fish_prompt - - # With the original prompt function renamed, we can override with our own. - function fish_prompt - # Save the return status of the last command. - set -l old_status $status - - # Output the venv prompt; color taken from the blue of the Python logo. - printf "%s%s%s" (set_color 4B8BBE) "(venv) " (set_color normal) - - # Restore the return status of the previous command. - echo "exit $old_status" | . - # Output the original/"old" prompt. - _old_fish_prompt - end - - set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" - set -gx VIRTUAL_ENV_PROMPT "(venv) " -end diff --git a/venv/bin/dotenv b/venv/bin/dotenv deleted file mode 100755 index 570411a..0000000 --- a/venv/bin/dotenv +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/joaomonezi/Consultme/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from dotenv.__main__ import cli -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(cli()) diff --git a/venv/bin/httpx b/venv/bin/httpx deleted file mode 100755 index c484e28..0000000 --- a/venv/bin/httpx +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/joaomonezi/Consultme/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from httpx import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/normalizer b/venv/bin/normalizer deleted file mode 100755 index b380c49..0000000 --- a/venv/bin/normalizer +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/joaomonezi/Consultme/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from charset_normalizer.cli.normalizer import cli_detect -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(cli_detect()) diff --git a/venv/bin/pip b/venv/bin/pip deleted file mode 100755 index 7224dd4..0000000 --- a/venv/bin/pip +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/joaomonezi/Consultme/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from pip._internal.cli.main import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/pip3 b/venv/bin/pip3 deleted file mode 100755 index 7224dd4..0000000 --- a/venv/bin/pip3 +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/joaomonezi/Consultme/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from pip._internal.cli.main import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/pip3.12 b/venv/bin/pip3.12 deleted file mode 100755 index 7224dd4..0000000 --- a/venv/bin/pip3.12 +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/joaomonezi/Consultme/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from pip._internal.cli.main import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/bin/py.test b/venv/bin/py.test deleted file mode 100755 index 9bba01b..0000000 --- a/venv/bin/py.test +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/joaomonezi/Consultme/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from pytest import console_main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(console_main()) diff --git a/venv/bin/pytest b/venv/bin/pytest deleted file mode 100755 index 9bba01b..0000000 --- a/venv/bin/pytest +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/joaomonezi/Consultme/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from pytest import console_main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(console_main()) diff --git a/venv/bin/python b/venv/bin/python deleted file mode 120000 index d6a452b..0000000 --- a/venv/bin/python +++ /dev/null @@ -1 +0,0 @@ -/home/joaomonezi/.pyenv/versions/3.12.2/bin/python \ No newline at end of file diff --git a/venv/bin/python3 b/venv/bin/python3 deleted file mode 120000 index d8654aa..0000000 --- a/venv/bin/python3 +++ /dev/null @@ -1 +0,0 @@ -python \ No newline at end of file diff --git a/venv/bin/python3.12 b/venv/bin/python3.12 deleted file mode 120000 index d8654aa..0000000 --- a/venv/bin/python3.12 +++ /dev/null @@ -1 +0,0 @@ -python \ No newline at end of file diff --git a/venv/bin/uvicorn b/venv/bin/uvicorn deleted file mode 100755 index 81b2658..0000000 --- a/venv/bin/uvicorn +++ /dev/null @@ -1,8 +0,0 @@ -#!/home/joaomonezi/Consultme/venv/bin/python -# -*- coding: utf-8 -*- -import re -import sys -from uvicorn.main import main -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/LICENSE.txt b/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/LICENSE.txt deleted file mode 100644 index 07806f8..0000000 --- a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/LICENSE.txt +++ /dev/null @@ -1,19 +0,0 @@ -This is the MIT license: http://www.opensource.org/licenses/mit-license.php - -Copyright (c) Alex Grönholm - -Permission is hereby granted, free of charge, to any person obtaining a copy of this -software and associated documentation files (the "Software"), to deal in the Software -without restriction, including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons -to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or -substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/METADATA b/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/METADATA deleted file mode 100644 index 80c74e0..0000000 --- a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/METADATA +++ /dev/null @@ -1,147 +0,0 @@ -Metadata-Version: 2.1 -Name: APScheduler -Version: 3.11.0 -Summary: In-process task scheduler with Cron-like capabilities -Author-email: Alex Grönholm -License: MIT -Project-URL: Documentation, https://apscheduler.readthedocs.io/en/3.x/ -Project-URL: Changelog, https://apscheduler.readthedocs.io/en/3.x/versionhistory.html -Project-URL: Source code, https://github.com/agronholm/apscheduler -Project-URL: Issue tracker, https://github.com/agronholm/apscheduler/issues -Keywords: scheduling,cron -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: 3.13 -Requires-Python: >=3.8 -Description-Content-Type: text/x-rst -License-File: LICENSE.txt -Requires-Dist: tzlocal>=3.0 -Requires-Dist: backports.zoneinfo; python_version < "3.9" -Provides-Extra: etcd -Requires-Dist: etcd3; extra == "etcd" -Requires-Dist: protobuf<=3.21.0; extra == "etcd" -Provides-Extra: gevent -Requires-Dist: gevent; extra == "gevent" -Provides-Extra: mongodb -Requires-Dist: pymongo>=3.0; extra == "mongodb" -Provides-Extra: redis -Requires-Dist: redis>=3.0; extra == "redis" -Provides-Extra: rethinkdb -Requires-Dist: rethinkdb>=2.4.0; extra == "rethinkdb" -Provides-Extra: sqlalchemy -Requires-Dist: sqlalchemy>=1.4; extra == "sqlalchemy" -Provides-Extra: tornado -Requires-Dist: tornado>=4.3; extra == "tornado" -Provides-Extra: twisted -Requires-Dist: twisted; extra == "twisted" -Provides-Extra: zookeeper -Requires-Dist: kazoo; extra == "zookeeper" -Provides-Extra: test -Requires-Dist: APScheduler[etcd,mongodb,redis,rethinkdb,sqlalchemy,tornado,zookeeper]; extra == "test" -Requires-Dist: pytest; extra == "test" -Requires-Dist: anyio>=4.5.2; extra == "test" -Requires-Dist: PySide6; (platform_python_implementation == "CPython" and python_version < "3.14") and extra == "test" -Requires-Dist: gevent; python_version < "3.14" and extra == "test" -Requires-Dist: pytz; extra == "test" -Requires-Dist: twisted; python_version < "3.14" and extra == "test" -Provides-Extra: doc -Requires-Dist: packaging; extra == "doc" -Requires-Dist: sphinx; extra == "doc" -Requires-Dist: sphinx-rtd-theme>=1.3.0; extra == "doc" - -.. image:: https://github.com/agronholm/apscheduler/workflows/Python%20codeqa/test/badge.svg?branch=3.x - :target: https://github.com/agronholm/apscheduler/actions?query=workflow%3A%22Python+codeqa%2Ftest%22+branch%3A3.x - :alt: Build Status -.. image:: https://coveralls.io/repos/github/agronholm/apscheduler/badge.svg?branch=3.x - :target: https://coveralls.io/github/agronholm/apscheduler?branch=3.x - :alt: Code Coverage -.. image:: https://readthedocs.org/projects/apscheduler/badge/?version=3.x - :target: https://apscheduler.readthedocs.io/en/master/?badge=3.x - :alt: Documentation - -Advanced Python Scheduler (APScheduler) is a Python library that lets you schedule your Python code -to be executed later, either just once or periodically. You can add new jobs or remove old ones on -the fly as you please. If you store your jobs in a database, they will also survive scheduler -restarts and maintain their state. When the scheduler is restarted, it will then run all the jobs -it should have run while it was offline [#f1]_. - -Among other things, APScheduler can be used as a cross-platform, application specific replacement -to platform specific schedulers, such as the cron daemon or the Windows task scheduler. Please -note, however, that APScheduler is **not** a daemon or service itself, nor does it come with any -command line tools. It is primarily meant to be run inside existing applications. That said, -APScheduler does provide some building blocks for you to build a scheduler service or to run a -dedicated scheduler process. - -APScheduler has three built-in scheduling systems you can use: - -* Cron-style scheduling (with optional start/end times) -* Interval-based execution (runs jobs on even intervals, with optional start/end times) -* One-off delayed execution (runs jobs once, on a set date/time) - -You can mix and match scheduling systems and the backends where the jobs are stored any way you -like. Supported backends for storing jobs include: - -* Memory -* `SQLAlchemy `_ (any RDBMS supported by SQLAlchemy works) -* `MongoDB `_ -* `Redis `_ -* `RethinkDB `_ -* `ZooKeeper `_ -* `Etcd `_ - -APScheduler also integrates with several common Python frameworks, like: - -* `asyncio `_ (:pep:`3156`) -* `gevent `_ -* `Tornado `_ -* `Twisted `_ -* `Qt `_ (using either - `PyQt `_ , - `PySide6 `_ , - `PySide2 `_ or - `PySide `_) - -There are third party solutions for integrating APScheduler with other frameworks: - -* `Django `_ -* `Flask `_ - - -.. [#f1] The cutoff period for this is also configurable. - - -Documentation -------------- - -Documentation can be found `here `_. - - -Source ------- - -The source can be browsed at `Github `_. - - -Reporting bugs --------------- - -A `bug tracker `_ is provided by Github. - - -Getting help ------------- - -If you have problems or other questions, you can either: - -* Ask in the `apscheduler `_ room on Gitter -* Ask on the `APScheduler GitHub discussion forum `_, or -* Ask on `StackOverflow `_ and tag your - question with the ``apscheduler`` tag diff --git a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/RECORD b/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/RECORD deleted file mode 100644 index b8e4d87..0000000 --- a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/RECORD +++ /dev/null @@ -1,86 +0,0 @@ -APScheduler-3.11.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -APScheduler-3.11.0.dist-info/LICENSE.txt,sha256=YWP3mH37ONa8MgzitwsvArhivEESZRbVUu8c1DJH51g,1130 -APScheduler-3.11.0.dist-info/METADATA,sha256=Mve2P3vZbWWDb5V-XfZO80hkih9E6s00Nn5ptU2__9w,6374 -APScheduler-3.11.0.dist-info/RECORD,, -APScheduler-3.11.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -APScheduler-3.11.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91 -APScheduler-3.11.0.dist-info/entry_points.txt,sha256=HSDTxgulLTgymfXK2UNCPP1ib5rlQSFgZJEg72vto3s,1181 -APScheduler-3.11.0.dist-info/top_level.txt,sha256=O3oMCWxG-AHkecUoO6Ze7-yYjWrttL95uHO8-RFdYvE,12 -apscheduler/__init__.py,sha256=hOpI9oJuk5l5I_VtdsHPous2Qr-ZDX573e7NaYRWFUs,380 -apscheduler/__pycache__/__init__.cpython-312.pyc,, -apscheduler/__pycache__/events.cpython-312.pyc,, -apscheduler/__pycache__/job.cpython-312.pyc,, -apscheduler/__pycache__/util.cpython-312.pyc,, -apscheduler/events.py,sha256=W_Wg5aTBXDxXhHtimn93ZEjV3x0ntF-Y0EAVuZPhiXY,3591 -apscheduler/executors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -apscheduler/executors/__pycache__/__init__.cpython-312.pyc,, -apscheduler/executors/__pycache__/asyncio.cpython-312.pyc,, -apscheduler/executors/__pycache__/base.cpython-312.pyc,, -apscheduler/executors/__pycache__/debug.cpython-312.pyc,, -apscheduler/executors/__pycache__/gevent.cpython-312.pyc,, -apscheduler/executors/__pycache__/pool.cpython-312.pyc,, -apscheduler/executors/__pycache__/tornado.cpython-312.pyc,, -apscheduler/executors/__pycache__/twisted.cpython-312.pyc,, -apscheduler/executors/asyncio.py,sha256=g0ArcxefoTnEqtyr_IRc-M3dcj0bhuvHcxwRp2s3nDE,1768 -apscheduler/executors/base.py,sha256=HErgd8d1g0-BjXnylLcFyoo6GU3wHgW9GJVaFNMV7dI,7116 -apscheduler/executors/debug.py,sha256=15_ogSBzl8RRCfBYDnkIV2uMH8cLk1KImYmBa_NVGpc,573 -apscheduler/executors/gevent.py,sha256=_ZFpbn7-tH5_lAeL4sxEyPhxyUTtUUSrH8s42EHGQ2w,761 -apscheduler/executors/pool.py,sha256=q_shxnvXLjdcwhtKyPvQSYngOjAeKQO8KCvZeb19RSQ,2683 -apscheduler/executors/tornado.py,sha256=lb6mshRj7GMLz3d8StwESnlZsAfrNmW78Wokcg__Lk8,1581 -apscheduler/executors/twisted.py,sha256=YUEDnaPbP_M0lXCmNAW_yPiLKwbO9vD3KMiBFQ2D4h0,726 -apscheduler/job.py,sha256=GzOGMfOM6STwd3HWArVAylO-1Kb0f2qA_PRuXs5LPk4,11153 -apscheduler/jobstores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -apscheduler/jobstores/__pycache__/__init__.cpython-312.pyc,, -apscheduler/jobstores/__pycache__/base.cpython-312.pyc,, -apscheduler/jobstores/__pycache__/etcd.cpython-312.pyc,, -apscheduler/jobstores/__pycache__/memory.cpython-312.pyc,, -apscheduler/jobstores/__pycache__/mongodb.cpython-312.pyc,, -apscheduler/jobstores/__pycache__/redis.cpython-312.pyc,, -apscheduler/jobstores/__pycache__/rethinkdb.cpython-312.pyc,, -apscheduler/jobstores/__pycache__/sqlalchemy.cpython-312.pyc,, -apscheduler/jobstores/__pycache__/zookeeper.cpython-312.pyc,, -apscheduler/jobstores/base.py,sha256=ZDOgMtHLaF3TPUOQwmkBIDcpnHU0aUhtzZOGmMGaJn8,4416 -apscheduler/jobstores/etcd.py,sha256=O7C40CGlnn3cPinchJEs2sWcqnzEZQt3c6WnhgPRSdQ,5703 -apscheduler/jobstores/memory.py,sha256=HmOs7FbrOoQNywz-yfq2v5esGDHeKE_mvMNFDeGZ31E,3595 -apscheduler/jobstores/mongodb.py,sha256=mCIwcKiWcicM2qdAQn51QBEkGlNfbk_73Oi6soShNcM,5319 -apscheduler/jobstores/redis.py,sha256=El-H2eUfZjPZca7vwy10B9gZv5RzRucbkDu7Ti07vyM,5482 -apscheduler/jobstores/rethinkdb.py,sha256=SdT3jPrhxnmBoL4IClDfHsez4DpREnYEsHndIP8idHA,5922 -apscheduler/jobstores/sqlalchemy.py,sha256=2jaq3ZcoXEyIqqvYf3eloaP-_ZAqojt0EuWWvQ2LMRg,6799 -apscheduler/jobstores/zookeeper.py,sha256=32bEZNJNniPwmYXBITZ3eSRBq6hipqPKDqh4q4NiZvc,6439 -apscheduler/schedulers/__init__.py,sha256=POEy7n3BZgccZ44atMvxj0w5PejN55g-55NduZUZFqQ,406 -apscheduler/schedulers/__pycache__/__init__.cpython-312.pyc,, -apscheduler/schedulers/__pycache__/asyncio.cpython-312.pyc,, -apscheduler/schedulers/__pycache__/background.cpython-312.pyc,, -apscheduler/schedulers/__pycache__/base.cpython-312.pyc,, -apscheduler/schedulers/__pycache__/blocking.cpython-312.pyc,, -apscheduler/schedulers/__pycache__/gevent.cpython-312.pyc,, -apscheduler/schedulers/__pycache__/qt.cpython-312.pyc,, -apscheduler/schedulers/__pycache__/tornado.cpython-312.pyc,, -apscheduler/schedulers/__pycache__/twisted.cpython-312.pyc,, -apscheduler/schedulers/asyncio.py,sha256=Jo7tgHP1STnMSxNVAWPSkFpmBLngavivTsG9sF0QoWM,1893 -apscheduler/schedulers/background.py,sha256=sRNrikUhpyblvA5RCpKC5Djvf3-b6NHvnXTblxlqIaM,1476 -apscheduler/schedulers/base.py,sha256=hvnvcI1DOC9bmvrFk8UiLlGxsXKHtMpEHLDEe63mQ_s,48342 -apscheduler/schedulers/blocking.py,sha256=138rf9X1C-ZxWVTVAO_pyfYMBKhkqO2qZqJoyGInv5c,872 -apscheduler/schedulers/gevent.py,sha256=zS5nHQUkQMrn0zKOaFnUyiG0fXTE01yE9GXVNCdrd90,987 -apscheduler/schedulers/qt.py,sha256=6BHOCi8e6L3wXTWwQDjNl8w_GJF_dY6iiO3gEtCJgmI,1241 -apscheduler/schedulers/tornado.py,sha256=dQBQKrTtZLPHuhuzZgrT-laU-estPRWGv9W9kgZETnY,1890 -apscheduler/schedulers/twisted.py,sha256=sRkI3hosp-OCLVluR_-wZFCz9auxqqWYauZhtOAoRU4,1778 -apscheduler/triggers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -apscheduler/triggers/__pycache__/__init__.cpython-312.pyc,, -apscheduler/triggers/__pycache__/base.cpython-312.pyc,, -apscheduler/triggers/__pycache__/calendarinterval.cpython-312.pyc,, -apscheduler/triggers/__pycache__/combining.cpython-312.pyc,, -apscheduler/triggers/__pycache__/date.cpython-312.pyc,, -apscheduler/triggers/__pycache__/interval.cpython-312.pyc,, -apscheduler/triggers/base.py,sha256=8iKllubaexF456IK9jfi56QTrVIfDDPLavUc8wTlnL0,1333 -apscheduler/triggers/calendarinterval.py,sha256=BaH5rbTSVbPk3VhFwA3zORLSuZtYmFudS8GF0YxB51E,7411 -apscheduler/triggers/combining.py,sha256=LO0YKgBk8V5YfQ-L3qh8Fb6w0BvNOBghTFeAvZx3_P8,4044 -apscheduler/triggers/cron/__init__.py,sha256=ByWq4Q96gUWr4AwKoRRA9BD5ZVBvwQ6BtQMhafdStjw,9753 -apscheduler/triggers/cron/__pycache__/__init__.cpython-312.pyc,, -apscheduler/triggers/cron/__pycache__/expressions.cpython-312.pyc,, -apscheduler/triggers/cron/__pycache__/fields.cpython-312.pyc,, -apscheduler/triggers/cron/expressions.py,sha256=89n_HxA0826xBJb8RprVzUDECs0dnZ_rX2wVkVsq6l8,9056 -apscheduler/triggers/cron/fields.py,sha256=RVbf6Lcyvg-3CqNzEZsfxzQ_weONCIiq5LGDzA3JUAw,3618 -apscheduler/triggers/date.py,sha256=ZS_TMjUCSldqlZsUUjlwvuWeMKeDXqqAMcZVFGYpam4,1698 -apscheduler/triggers/interval.py,sha256=u6XLrxlaWA41zvIByQvRLHTAuvkibG2fAZAxrWK3118,4679 -apscheduler/util.py,sha256=Lz2ddoeIpufXzW-HWnW5J08ijkXWGElDLVJf0DiPa84,13564 diff --git a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/REQUESTED deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/WHEEL b/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/WHEEL deleted file mode 100644 index ae527e7..0000000 --- a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: setuptools (75.6.0) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/entry_points.txt b/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/entry_points.txt deleted file mode 100644 index 5890251..0000000 --- a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/entry_points.txt +++ /dev/null @@ -1,25 +0,0 @@ -[apscheduler.executors] -asyncio = apscheduler.executors.asyncio:AsyncIOExecutor -debug = apscheduler.executors.debug:DebugExecutor -gevent = apscheduler.executors.gevent:GeventExecutor -processpool = apscheduler.executors.pool:ProcessPoolExecutor -threadpool = apscheduler.executors.pool:ThreadPoolExecutor -tornado = apscheduler.executors.tornado:TornadoExecutor -twisted = apscheduler.executors.twisted:TwistedExecutor - -[apscheduler.jobstores] -etcd = apscheduler.jobstores.etcd:EtcdJobStore -memory = apscheduler.jobstores.memory:MemoryJobStore -mongodb = apscheduler.jobstores.mongodb:MongoDBJobStore -redis = apscheduler.jobstores.redis:RedisJobStore -rethinkdb = apscheduler.jobstores.rethinkdb:RethinkDBJobStore -sqlalchemy = apscheduler.jobstores.sqlalchemy:SQLAlchemyJobStore -zookeeper = apscheduler.jobstores.zookeeper:ZooKeeperJobStore - -[apscheduler.triggers] -and = apscheduler.triggers.combining:AndTrigger -calendarinterval = apscheduler.triggers.calendarinterval:CalendarIntervalTrigger -cron = apscheduler.triggers.cron:CronTrigger -date = apscheduler.triggers.date:DateTrigger -interval = apscheduler.triggers.interval:IntervalTrigger -or = apscheduler.triggers.combining:OrTrigger diff --git a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/top_level.txt deleted file mode 100644 index d31d10d..0000000 --- a/venv/lib/python3.12/site-packages/APScheduler-3.11.0.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -apscheduler diff --git a/venv/lib/python3.12/site-packages/__pycache__/py.cpython-312.pyc b/venv/lib/python3.12/site-packages/__pycache__/py.cpython-312.pyc deleted file mode 100644 index 948d4ed9df651dfb2b296f5b33f928ec2b2b665a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 402 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μ7Y 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

KOP({Wdgn`_M(Y$Kv7!fl=7A)^F!{-MxPE zSkEFi#)!E_*ZV{#ybw(v{4AqMO-DPh-K)QkIVi0_w58x{O(%6+%|1n+qjPPXFt;)4 zLH*{woC-KF)wkyRZ(Z$rrd~Ion{U%)$&K@XhPAtmoY>;3Ht|z7bW6O)YH(ituqaAU zcx?ViwQXLxKPOw&IIrQ=g1kJZ7-(2S9fJzQG#lPw(2n0X#%Y54AZStHR%g@eb}dHx zeF%|R-|bCFFoT)@4a;i0$3Cvf|9H@zRvU~7tN4B|BkvOT0sqwefqmmWz3X15vWBMk zz61LtJ_{1qe)9GD zm-7Z5?A5%U*@-&beg~rTORjRL%-n_O8uVvSAuviDo$+a1;|^$k_d2fa9Xo8o@|yH< zx@)@Gk;cIY=HwUYEN!GRZjDxXui;UO*Cbz1!V{mva+oO4Rcg=Xx~<*fKdIYVocKpL zo8+>pcD5EpCoIW+ydmfh)WZE`E3*17@3E4)t!42(>5Dg2)om}B(yMMO^r`E8)z*=8 zLa5K|#Rr>*x|Ou`*+AoT1p+A9Fly|f-U7wUMSQAB;zga+r?o|%^caKxb%Vhv4aSY=v0$U^PSvcRGXwr4D&P|Cmu15>zC~zC^47pk-f(=*C3Mm0YCQ|4(DN*T=Wj& zLBl_aF1yZ@r;dT5pv8z$)aX8u)bVAwa6eGA)~bLe;A=v14NV`8DovFnH#D#9Rh_?K_4m;U z?;uvo6&TeJ{rSva-%smW{9n@_txj$pmRx75A?7iy@7h`?;&#I7G`27{4iFt8J(?UU zUG(BBh47(e4&fs$qlhDm4^Ezd0X!KTz|h#zG}*F|xl<&JZjpYTDhL3Pux>|C1hz;Q zK5F%2<^3(2mYU?ZRw9!8GE)Ct+hxy0yPm3T$dHnOz2XG}cS$^=YO1PP^(HIY=y<{L zoVF3Ti`DiXkB!f7L_JCEs@n&5D;2X?SN+2+LD`wbZ zNe-sNI9K}JS+4Y#=TSPwx9t3CZ|FCC1`;L2hrXKZv4ckE0F%80Ct?nYyR}z8X3Gyj zJ_7b8m1PF}Kq3@Y2G3(HQl?m0#@n1b*!!)>-U4t4>|o{|dRMUHNRg$z(=&gdjiAJm zx}e0#9ZDSgqfIQv7}qv6eaJFvi=(ZcLG~Z!C(ndMHZY8^NQUPhA;(`^pN5uYo*_?w zq9-i-k8!MhgBBJFYMJYUszo@Op!$twbpLqBFT?Znc3TRs(e_QLirs5vWpE@JqF+1`J{`sW;aGLGV&d(f zjdSNK%h~T8ayW%)2M0l_GqVu4zDm$7>2Ec207|buiXyzl*R($8(*1AX`;<&9SI)oC z49Ci<=`p!v4E-(dSPQ7Bbj9PhiBOi%h0E0iGYBtG-OfRzL0y(8;x$e&QeWr) z5-)Qo^c9jLwLGI*==Za<6`uVMRQ~WJw~<0DkDvMHsPz84Fzy}k8<)wZ|9A38Dye1M zdT%&HBUox=!)4*#)jEz$t}%$%`kt!DS3f$~Nq9#%deEX5*vSkOA*73MG}L#ZhxcV5 z*iH}q%n~n$9>$-o^jv!QU+iSwvvzZ6Lg%wtJDIOweObcrW(y$gu=+^=tAUK$#Hvu9 z!~Qp>AygcBEAV#KCj$Ej0OoIJg#pQ4qoU>5dLxvdZBVmtq{7$DuKYcdJCy$kJ?{GIsc?(_+u+f*iOgant@O`tTYdaLgsD zyvAib%x_ARD!f)H&p6Hy*Q9$iby}H|$<75W^866R1)y9)S;O=6Q&*fqTW+SWj?hJbyN$Uf+7iQ5&Vzcy|KnxJ;ktDcm9)>Z-DxMe z6{=k^JqHS{zkwLL&`Q|fVk-?gursFEM}-qG}> zQb%RtyaF8eE^i;A3wF!o8Db2d(d2fsDS5hpUK><) z()tu)VasJIulR;`O>;MjA779eO?m%?2?nUq7mAw<8qWmvZ#|IjQ~2)xi9f_!f`ZS6 z;Ie`HDu;r2sa**2^ezdyC+x9bxmj)@Rivq5bqE6RohA;U>!mDG$@x6grUpl4=skNb z-5plB%u63(B{*SD9aBoIl;2m?=6~ijyht)rAU`jDMlF^Rk(Bw{ca0?TaP4Z6>xa?r zFlnq4vN5duii=dz72RdG%5$yay5Iqwn9mU6L-^>Ns_vW`68VLovh`fYuTmG|qQF$z zhV)9kYB6)V&0)i5_4LWg)@M)%8{Eo>>A zs`kmLlZps=`AZMtZgnIK_tzyU zX9c3Ih9N7=4@)vM&VTIsxDL8oYA0Eml)AT_EC_6H87syY!%{oNQj>{l`6b~{qm}Pg zc{jG~zqz(@d-(9B9;zBP$K^IK0UI%0rWmITJM3v}cM5v@GdF8jsrwV57>?SQNCe!k ze6Py8VR^K29YAQV?*2k;B}b^illxZmg4ftj+0(^4Tg5MW4O%y1N&19R-8uIWXUS{$ zkZBdGUruaCnV~dtR&D1#Kn)I8Ew6pEAb6#>#FSAA^c+|+%2ZK$BIuT{xc(Y5c9wl! zW0T&b4`39p|AJ>mk-3+T4&G2_9eSW>OOz28LZjV%I#!>5~z1 z(YD4>67NS>wj4E8e}t=9?xwGrbDANykzSR7}*jZOko(xsQJCFxR@cJxk`_ z8h`t2qdhZAOie8zbls+*M!4}yM6-T9x_7sw2rlJF4QEakYW{%K*O*aIyb)G5K5CuG z&)L`2XDLq*E>$F!hw!3l!u53C&$<_hC^_RkvA`c{n00A@F$u3<$hW@%R;bh1(HiJ14Ok^x}nhY z8epT?7~tZ0TxPBnck4Cs{_ip;<>23Y`ga-e_^{mxzss#YVRU|474%|)#jgaGJkI5kMZRo9%lkJ)gF$s=bu5W2^Jr?0EB;`yKw%C zgHW9DseS>=3%mx>VioeIXt6Q#ddV4w_m)=U;;#ap;G%JuxL1Y$zeY}7Yw%cb@h=P4 zSBj)6X4xbdi6~<<^=D+#)@JrFz=_3Gp{SNJYf{SWf?!UY6w=>B<-JjSA~&c?{jxgz z=}S^IZWA0QeBc$O8<*92jgn^r%G@Tb>wfL^;Sjurz1g1$OV=5%2;*=>LTyCi2#xO{ zrdsPE^ULD95KuCj=gq#;NbC|s){R~RrdW(=&@EUBz$^CpsnCuVU@i9hmTd^jQ;#lb z27swV`j=16!ArercvG!c{h`0m*0@W^F=!dziIG4s9!;<1WBlj#aoy~^BJ2&m>HdnEYIpheed zw95h5CkWNl5$IWdnuR=K>t}xdecS0@cCOlsNS*I;NiTOjZ!+ZAjhvaQc*)KWNx^_J zJ!lMV`Ioz9EI0{S#Fx{99^y3HUq+|sKyYnd6#|9YnXZfQGJm4NaQ=mDCO%br{{x;g z7w5L;A4C^a(FmKgfqqYuOOkmc3>NP--U?t8G!s8#&TCUu?vjzk243J=04hQl>c~ap zIS0N$ge_6hs%wo-L?Vpf9^L@ryuB&2gEPw?RhlWK4cNpv=1->ASbDOG?#JNKNR8{) z#9r!jDhT-wH?8_t0F+>wLnkf1*WQ6c+B;x-ly>-7OPMpjQ&m-TD|1CIzXG39au@j% zAZ+95*}ggcG};0{6yKnAo%>c#Vz8ewZ3vS->-TI;!pJY>9dC5F5i&gGWG%a`20^v} zx`~NPp12fsJ=43E<%8HIP|ks9i)vF-d12b7O?7liDG?(I2n&!JQstBx1c?D?TD)es zCsv!2RSi%$c`rf5T^BRcTI1jg)>cKJHTGt^vKipaQ07QDCz(3VYkUSK@XHeZux{WS)=X-Cc6e{+=IU+=pF@92B{1N6ZRmgmIKulalHUG^jRqkE5aYk+LN1;zu> zSS{l#-ck1*#x@h0-^_psZo|jq5q4_{OHnkMKBld<`_^b9@$+>uo_wbM6LO*dhc&Vn zG*#O{j&7i!;0ZCS8<{zWmh5ull1*y1WIPLjKs>-B> zQz`E@Hs0*@@ElE$sGZe(s5f}@);(!KSM+h8?8L>g{6Z2yKioK78NksirY;vKPk51hiGMrPwp=`_ShZH z?V@II2wS2S#S%+`i>OQdD~(S+k9^9yw1vvfG0|u{}uGjwqd5*GRVhBTZY8>EU~5S`b__Kw9BH=8aF!Jv_!y8 z+(NJ;+lCj}28*2>9jdC5fHZrhS}}Qk9Zw3C!}>3cGG``AUxPsc4DLe`;E8R;?G`KRlIJS)`b{R{@E*rNQUKN;PNN<2<# z?)Xf5@1Gc?-rTXi#_tD7W*Lk=IARmotjd z*>7V8#cl5HTl%8Wk&|M{?UGZtY6d0B2F=lF?8XVI9I5}L%xhc(^4#%U!*-24b)qyK ze;XsJuK4aG#i$%KYLwpgyMF{fQV}&_6B(){x4MUD<(r{?lE`Rpz4jcP~(5Rb|miKYmtf)bP~g;mOtAzuMHCmsggT7*Y2LG0}_3vvD~R zX7TmEH=(Qg41TX0xB=3kdo%Ja^_y&<5)U z_EkGEE2m*olp~>J=MR^WH=^y$bI{?|@rMD4SSMTPV9VC9*|>$ER5)|A;8Oe_fv0n< ztNlkhUW zcxzWW>2$@Nf={~mcTkwj1QY=A#Xwu%X20mI`4zOFr%N~`t;J@t@k3T7NI5ef$``+S z-JgG6&JbnctKk>}{|h5A*8QkG(0`eoTK~PU|2nuRvk_SL8IHfVcwbn@Jyd9QWbA=D zO2RsBppNK(Q+q?q@+0>>u`exfh!lB|#bAl(vviYr$U=p~W2oOc5-2+T)_K&Wj19N~;E!zry893GICObN+1j zmb%e6oesEhfN@>aVrQ*=So}p=C^a_aj{8gwC-;-wV8@v0%Zn`0-&yj?vq%Yn{P&sP zhhcKPSz+DdxLl<^r%%vSffrnJBhUk+b3;N=CmkgRRKm!<)*YB-{sTXu>I$?H{YxvP!jeQ&Bwb_=4_N`En9;WlWb2u(`V%nj7 zAT{Hvk20vxC}xC;*gi%9QEGUjQinZ%7-D2;Eja{JDnXt{_h4d{WqeATu@Mjexx#0wx42Kwl?PLeD=6KBz8NOJ&kiN%- zuR+AHF*-#>Prply%Tr*Q^ECwkpe_dy3^$GKw=#Pwl{w|Fx$B`n7XE0&QVX#eZ)iN+ z$j*&7I}PqIqK6+mW)EQa1$#iLC?92G1wSyAo)ayGQ>kA#l?H@UX@)&OosU8V{^>P> zNuA*AFWpTD?D4_nAWu{3b2^ooFIq7=^#7)GC3t+xT*n{#j{XwLl0{PE`Fs;|Vz!7m z%@%JOM0Yf^wr&aY%g?-inj&C4&9}@OmQba0`LLc}2KB&}RnJ6Ya^He_RrFw(Uw#AD z>_!l)W`T~fTkhpSZh|cY{m+4y`lrr`^W09xjN;FP@=i`ZwQr3pV_X@>SjIZO=fYnN zt5szirfmIk>eEVG#KpB`?KfFpM8!aQ4^dgV_}<|nrcM{>o-|A!-OX?0x%=4gHMscg zKb(Tv#czLQFd}KY&f06Zp4Z??>;7OGU&u1rz=OhTkZ{X#UEQ0K>58={fM%PS`+^~V zIWyXb^6{-faH>esIO1S-V}|D+7)L}krh6Qt>5(q}$RU)VTiX2&rC$ot!2A2yD4Abuf?13ysGKA&-O`KTXY+8Qc%4n1jfZGmh zUgDvFxF)yotKvELM~|h7OLg_?05~QS^_b0Gbi#S)cqZB1+|o9jtxFGWj{V%lKCwk2 zOj4=wf92QSDNFdj%E+#izhKmVPBS17C<=@x`in%_)4#R5*{8Wy8PLA;oq6=HUVr!uZ`g#Y;-3I8aBEpPwk^t9Ax)h3N<%sEAZQF0gmCb1>*HC^K`z^ z=ItlZW_r*`vqA6bLi_Zg`?U0GK0W0=-R(ZTq)+$SCr1@Ozu5HN=SUtApM@??b#(D4 zyP+MpYF?HQj4n=)9i1`RfE(56s8e)t4Yb$JjT$fJ)d<>HDZO4ll~}*~feNJIZ~opo z+ut}STxTMqW69TbC}o#e#ggCR8)ud?g)je1wGU)n5L7Qnb0QU~h_=9k^y z4b%DhXpkMq8K(XjF67&tg13u*J5Au9bL;pwbvXG#H-Oz#Kz@`rwx`nC5W|t9)UV^S z6!G@C9@YmvzfC`5m9SZ_aW!9RD>r!8U0~qhre59s$x_%v4W?I_O#=7&xO=$RE>iLZ z?>fQ@^R=oh))!fh(@tAZZnq9q<=LW=@yHU$MJdsv;SOneOo*c&trbQWf(a_%hb@{8D+qY18*Qo{e}8rF*P5IX3$mk;$E<7QJL< zTa$J4TG^7=Q{E4pR+hzgjt&^Z?GKMLd^<7OIfnn6*Kh}&(rLpT-GmT#5-1)B6m`|1 z&N_+!Y2Et*JjV(pSNyDXqJy87VjYFm=5Gj3B#OB2iP_BH%(cMXc~U?V+EgUpm8R$~ zU&=v-vkEqEi``zLTjCMAfVXH*zo>1yyMz9((obWpL}d!1Y}Zd6BU zu`h#ln}dq?pm0an-)lrp5113|UhyCOKX-MAx2v=_tY1fprbG#E(K`;JofP5M*}#(!%a)!A5S(~{qwQO^Zx3i& zal1O(zhFS*Puq!++(}{Tr^bC;`9p*9r)0}d56W}6O`0DeA)JtzKUnc9%2zSno2C~) z(|w`?STr!ilPr_`8h2h)#p}3{_a(m&)&eMWy5s1SIHZe8fkWk{c(MODb5~Qoh=S%~ z)%Y@@&Qle4ki%}5qnDTLV~D={d^gHRfRUTQuTaQ8>pMUuGh`a=lZji$3#(j_tAir5 zvPI^Rkt%1a1L=xM!(ElX&!*S8^zlkht`4bqiK{Qpo2(t*Sc-V&%onA|SEV*(x{G~stA%3fSm)l_jzy4V;C}u#Jpkn(1%{i`1 z<3Fg6R*u2uoE88-tQl6))oZv?lV}{&qJ>Z8y6Z!&eQ+$~L-7S<88qju`P043WL3bU zcct__E;3bmNEdwcmS967`8IXlk|JiS>^-}32*gIXXk(oSzl3`(;KXGXp=y(V(&wi4 z8PBWJdiW!mRK0aV3LBwso92wX=1nh+v+&#tLogGa7919P3uMGkNN&YWsS~?k+ z#X7%KFAD=Y<-JJn!F?={P0aP{jN?Kpe*XZvrqf#Z0_pu+`X5M#CHXrmu`atGwhL3A zhDXZ6-~}7b`hZAr1Eqcx>_pi|#uzPMZIMr5-_Wh^zQq4F8<%jfw0Yu07gNFZ; z@D5%{dSjx=ne*|S?lE;g1i|DgjI@nknMrq|886W$t@I{ZC47J>d9-IXBpS|Z=*!a$b6_1Z1&XY2BkAo zm6ob;!)*SvAljA76_YJk!Rt2jwGyqBZTOB=e6_!&tuTb>K)*VDNj{TTkpxnEw$yF) z;(O1j<{n?JQBPNwc8SgnJ|{jmZ~Y{&8?|uOhdLyh|DD$$!xfI}2MgEfil%dI?{g}$ z4p>+LwBez%o3#=cQ3LQt^uoPqn+bpv(p2VdTPtSTc>FK>1l|7=Ut{iSSR1i_=6Na` zP}8}jX700sHM3LGcCBwa%)5Gyc<_W4TZy}X59Cu`FNqTfbYdZc;E(SLKENS=ZtV#$pI z4~`c!G$p=}C_572!CLO3VWwuz0m$=O+%<@`N!@T*{UQh2HS^nj=xY{Yg+u%*D73mV zvBFE=MoV10T9e$sE~T}H^#_0Y!}GX5l3E9hTXFe0sTxo>Y+(&nfts9&rs{k@xwN^p zSN_t~+oBVeYJN7qFBf{^VtnS`_w{y`sraJlT&@#T)ijC-fe=xKe8X6@J zWgcMjs&#@}8J&(@9H1J8`&YE$j4;kQ_sn^y#TFc&zU&AXa`jdev|J*Y3xtv#0 zjsJJJpDakUQ18OH97rU8x8KhAqJc_R@j;8>ceV$TFU{KO7xV>#7UDBENlUKD%39yqbaE{2D`qLd6j(G^@?$3_JOy=CVb~#x5-GT z$$I?_RaYm!sZCEV9hyG)7YeI#ZORDdtoe#r(;(`}gBQsM1AmK1`maKs?I;|1QLh}+_-?L)jDdd;MP!0ON3|w3C!R`Q9!YZ(xSLkMV-;0EWsq2+i{S# z+M;zqt1T|AS~s*R30nYBaYs=EM7h_X;0Cxr-tX_ZcP0V(_w&AQKb6cq_uR8Q=Q+=L z_R|x-Q=|9$Gm09F6;?cTY}iHr*e*jT7qx%sP^6%NEGVNy|<}}UJqd}AWfG85$eIJM+9I@TDdUun3Ig`XP zzz=e$RE~aS z$2>!UlA|TMMa#zKBq9WP#FV@h}Us)`A?EdMvFDrK+KsKcvBwvj$3@2vjKbi8=T zb`aoQ?@34zzx!GObkXB<@2}6*yb?WiL!;mwcVBBelL_u;Q%d|2Bm8SrAsv#ByL(0s zP3M0--T?3v?*PDBo&*3ma~SLVdnj#N)PXVqtKo*Y)QB{FN;w1Phn%QixP~Gas+w0& z&W7CgKB;UZ{#m}hTr6LQAVuE4 zoP>y5(?itcnp1x?!?o-iiG#?2#DON^^C&5VgET=qzzAgm2{2I7U5BQ|AI>=_y7xMC zqwPU$4S?0V6g^D3=jEU@U}=@Rq2Yf#Gz-hqCNvN4S)!Mn(j=7qJizDk744Xcj@Z%? zNkniqL+{W&DKDCu+7~565o(6o3cm&dV|>AumgdA^w3^7Li{wwXwkVJ`8JoT~C#NDO zL7YBc@%byXQ{nG#U)2e?lFcp6ptp}$BnZnuRiUmf*Tay_Kd>R@DXhf zfw4cx!#6#GFgfj$!4TGc05ng0v!IiP0R2EZfA~3uYLUHzFwr1qg+vkeZNfu)Py8*f zrQ~Mq?Izoz{>_RbDfD(gg|(z_3vCeI3ZH{OvJ{)V^Evo33qIH0VnKDDKB}VOv&0eJ z)55q^VcS0Vdm$Xix*ERQ3xo5bEmebaBgyqT8#f{wuw&bbGj{Cj`E5cC&u#bm+Pf*EaH{UXGxuBfmqKrG_r7RH8~-DSrB6ke!Un`4 zhnIo3g+=B38N4{}kbZ3kiSB{&1wgv-R@GKbReP0c_MmoMm;Yvv^o;gi&|# ztD#Ha-{S7beFYl|WgHiIeF(`BVEE`Of59|rrC74NPfeaDJaT-3e z^6Lsyqf4TxUwge^2r^ju5U*f>@pV~ZOD)kfQQOI1G^A0T^u+h8wRHIsQ3$S_@J@oU z(N_mmLZ#pmbQwM5${oXMjm!GdhanuOh=Th_5<}qF(1GbrzVJG?3dD0Gh_LG6<;A^3 z!+H^b7SL_m$sHd6?=bG7ZG!;LN``sixY6w`efkFFKE7+jv#`8067V}a@ec&ShF5f? zhK+cz1TZ@d-y86zRpj7*ZNQsaz(urg{X&GZ{Mcjl=a`$0)}O=I9LXQ^JR>05j1cj% zP2t}S{0+?x-$t}%tw}iDYDJ4%KaD4wyJ6|5JX?F>JYbT&V*#jEa5WDYBnlI~r%2`QKGVI-qO z4E&GqD#zElhIo#fbmJ0;8ZL{CVkFE@Oc~(eSp|sY27&U!k1;?@J<0&_4s21JB$u}~ zcM6!d^CVujPTmoL!{TPyW;tjYua%a8z@M!_1hUhJ%LN7b*LI;o`s6WiH44!*T0WjU z9NthU3d~3LLJD(;R+tz{#PD3V;gzRtWlDb@tkZ{Dp!DGbYckZ)-d|<&rp#Xy-ZLZ5rv|qzai58met~(7NTb;RO$mw~B6A9cQ z*!_QYuW0GOo;p9tlFK?Jhq#k$$!UEHJ5;TkR~YBs&cacY?rq*AK5t+vVG80h5n?!OU)oYLju>()gNd{?2%tH-bIVQ?1 z%4lXzW4i%rNZ_#dB!e~2$m>wU2{0w*|7Sxk@$w+n{-92DmMyv&`93R(tl`U8G2?9yDTw`cPt|E=+Nh8Is7@%FTE0n)fXP1SYHD0dfGB7>jV}t2q z?1m7ghjZZApyU&ig{eO1NcUn81-NnGoY{&7>j4&Uvz|?2{+9a-3xH?fWC}d-iwF?G z`?v5yIH*bV4tc|(xthOJ>bTSBe&ZLl7?e{8y2;t@HT@;`$VA*>A|+Pxx&!avJYu%{ibS-2p?WOk|Li9M1*7+E$0? zC3n|v@wTEy&)V~EXMDt<_?$oTFNQAB!d=@DM9RL4rcV4nsgU_*zARf{)>ZT5F(~-V zxdx|t34l|7EhQg#GYJvHKb5~TJC%P9{8j!5 zf3xSK_cxZu|2I_wy6UC$oCg+%be4TP;41?_(>0n(hFZa(AZHgElN6G(62s^L{>>T&@G32nGd$f~$sQ6}>dvh6T$v1@EZFy^%+J*e z68!{jV2G?_H%ji_*-Q+(Ih%dJ4|yy-&R@R8*DN~zQ&u}C&wV}WRDJ4~Fq1$Z;eXGn z2XQ$~=r?u#m~+Upn$ML6>I(Vk<`sWnOfv+pkcM#4E%ADb`=|*AUV!J(|0g>4HqAii znq~hKom3Sja4!7z{jkFuXg9l2cayVa5bQK$Mf|0K3p z!_ws0T1e;Vef<9R>@*U@V2kTKvyXoeW!~ZsXaUF2cJGnQVRshj=FgGZ)_N1R;(QkP zJeGK))n(e=?$l-5ta$o-QrdD61uA*OLKL6R>O@WDKliP44eN}5Ntc$5?1V8lY5FJq zxHbRmkcWtvXB+*?2~J~x#G4yjU+*O&pdpDrKJb8hhBAMXuqs_z4=IM}J0F?VJMTkV z!)Q=+rHbM~QGQVLqKe8W%I~XC=e36EJhx9o4)6JAb27<4ZJTD?`;!q^_)kNdao=fr?m0()#5k6&>2Ic_ zy;;LCzcIn#qEONZlq#fn7=;%mLPLqPDll+%FWej%jM1uSP4i{84D~mY44V-4MTDML z^i}=BOoKCPQjZktAThK1ChxP=tN_t6a5aQB=C3x@$q;mHc{W!<6;tJ>$wN9_`lXg+ zd~}pK(xlHRK);qzuARyHO1TCd+G+TrON?QRa9EC{a19k14OYOjxQiv_n&u)R7s8U@ zW-{Ej>{o$Q8d0%0BN#LHB_7F^h~2`Jw6LbmstB*2c#VA{XC~wbq-?$qjMU400Y(#a z8Z51hvNfUD+T^WcR8k;FsgFReu+^@KA_WX`T*&$4IFNm2)cwGJlxJxjO5Q_5wYrmX zhWTaWC<>>Hzk|~#{|c7hki=yB`(PJZQ^%q21Fo?T&lV(2Ifi{1MQ zlb%;3kIdu&IXBFkD8UsPUf)Tf8_E@69_x4-J`f<_KEre6DAM~Pv4bUC^@+NP`s%$r> z0H#fcWp&GcH?%>22Evb%Q**jB_t?$||9eCDYH5>wZvsdC;%ci-)F0L z+5t0_Afo4mKS0{Ti{%5gBuMuQT*tuBIyovybyck8&{i(dk1$MnfarILcLwL(S?6kx zO4%h!*H`x#MT8-j$rHFBYblY*kS>q6{j`kee)}MQnFqd9;z+`&g}z+}4KCLgeSrlF;`tx5fy{$C;6EUP1TpV}*bVJ1S=MGx5|@ z!Y`|az3N>7El{K1X9LYo!FJ25BZ2F8wXmzp$%b8jXW$*=bSLa8U}VBBolizjv)y(& z4@v~33Y`Z7!t-EOG+02b-Zz-uf`KH+uf~)tR2F*0WqDdv`O%oXrKO##{VMU9#Tk*I z&ryaCJ}eF}SCkpl6?LY&1Rcx6R!BTXOFB-Kz1hX!@53&T%2MYMA$1-?f1=Jtf-}fm zvc5yRM|>K42f_@vw|Yathus(*93k@@@EGdMVQFTAzr6`wZpiWnm7_xo;n9oj9LHL8 zK~5!!UYv$!Z9*-n{3r3BE0?Lzx#ca&5IW36_!XVI`G4glrbF-Vt7I;0;t7Ma=^7_Q z2ae5g8cbW6&VK^!i`k`;`+*n*S;JaLhjo}~wJpzZy7Z}jomYFO!}9>3tz+M0B% zTHA$^L0>Y2ztNKAP6k?`d}I2@yyD~%t>g^6e%oFQ^a=ToZxZ5{UWL1RRu=e|mU^e* zhVoZzAe6O%1#Is`erwzda(v=?I>jsQ>TdKyMeM*A$v7e-mWPfW^O{o4@);+`X*X`Rn|; z_Y@D)AbFRn&!T3~muo=#ul~{T`aTv`uMx8KddV)Y7f@WexH<Wl*zl{NMua?UGi7b=&t!(*u z-Z+)ZbSXZio2R0K-!-Zb@3g;q0dS? zdG!Gw>2Ay48;S(6OpOBjhsfqx6ys{4`UMeP3L16umQ|AjG~(PMTW=+&Lyu<*7{9xs zeodFep3gS%du|>7kV2yxTN2wp$r^o1^uA_P14Uq-J)hgCIh7~rOLI7z?tXI?=bsfSY9(3^ki;dCD8{d3Iy zfO9?atLGpDbYf0Sz9Sz*$fM&`4YA@*`v%>IWLeoEjqoVbA`p!2Xv=uQH|pD$banF&12W(c;AcifNqy_*0N!Aq!xH@GZAIXLc|Hu(VBolI@-jAu!H2$JX<45-T?9s zh`ZZ5ng3Xt+dmaVN|%Z6!Jqg!fYsrTP~E@1Z7KL3#BO{M?3nIJkFI&;)vy#YOu^8! z;=hZ(Fa_ej+HQ)c%28oK2=<5E_w?N$bHOtG!b zuOymZ`Ra~#@?-AouiF>bAy`?hgKk0^kAd%dyjh=)r*U27#+>okB2vXGf)gBVBK@D) zW6S&kck~jc@d}=6Qe+3*>YcA~j$Q)2!fDHCJX{T?D-Le0URY6~pQVpuW6!!pRq13| zgIm;zfm_tj&Tdg(ur5qLjz^#O*>Wb89*r}SSsr&lQt*sgVz={xb?*+84rQ^9pXLK| zr2K@p%z06`E-Fr_d6pd{!x((XupTIHKW5!yM9IKw^sfbNam%|Q9pIvMIo4WjBvBqMoV%57%?K6;|MTh!uL|U2 z;TXXvKM8h5Tl4QKX9oPw;01@|KW?-Je||Jy$Rh6DJO{(?%9Ud)RAmN5R{zD2y?CTI z#>>C5T|*}EpSzB67286Ci_Wd6D9p*DzZfLL##zaaF}mZmk^uE{04D5r+&z2`#$`_T z75-4V3*a;dKBe~_b`Iu$QHqBXSNAzpY?1uyKGqg1J?sz)-KFgKn7e{=Wr5&k=c3be zu<$WF8@W)DCsEPgvP*r*(xQ{BLo9twu6OhjO{LjC07~us0@4x8%V|V%ZWsPCj{J$? z0Mfm$^$F=Xe!?fh*QNQS?1QOi$zwH2&|^Ur@?n&)l`0pT z5jr-zZR<1LwzVi^>Efy5amwzoh%Y%-U;{*+l8cR>3-4o(R;JH^sVi%nd~>v(`Qcl_ zzlw&caBfD$75D*-=|tAE`>(Qod;8>Ns?V-MIhh(&*uy5Bs_0R_ZV#OvT+fRi(@9i` zYsh`IpLiG$O+EG)WAY}kk^nJzr*|sUO}}R9eF;2R0Ab6=tWO7UzKp4IKRJ6Wz9VBY z6vj8-TKpeBGQ_(CS00@+r-M1Z)JVv)A$(c9p0PLsHJzeZ&}zSv4;_K6jt zjY|sM{JRg%l}W4%$|6}(WG^AL(TA#&x<2AvyHI5OdMK`m>N9*^;QiX4%L^yePo+8c zPuAVgLQAG$p_e}k_91R#Bcc)rRG9oisSIYEqjtHv(0sgd--(sIoSYj^B@1Biw-?a0 z`Cd;}AGw>MYz4w;SzZv!nu$Lv3~s33GL!&MN9nj}|C%B_CchwCp*+)BRqsDqHhvX( zvmhzj1&zA#fyRwfa2k(e%rWR}4XHzG$`(z#AFi)J^%}69103!ggDYi;W#JoH5o^tR zMT3Zv$DgE%ad%?j1b0Nib2@kUv1i*}p&a?zS{Ar|XFsKm{9>u0a*gTi#1!t!^0jM( zALNNkoiwK|IR(!QIQnUj4k*azgQSsM6L)aGPnRA6?Sf_$LT=R7PX0_#xLO*rB&Qt< z+{gm+W-4!jxXVF5Q-NZkm%$1As1@~PMuIo_kV+3w2_?eepsP6S86X7r#{R$(vZtH| zZC>q(LYTM-WC55TeeHAZMsAL!^A<-Hgp#{Bq!Z5Gz^0kI2p1>6&U_KA|71rrcXPb# zlSE$3-48iZE#OG|%cRUcbUDjbw|v zxN@@{Q%z#FWTV;+2Q3JJ|9w;sQ6H&+uKjD7W;7Sm=?zeIVJ1kE=#xdmSb8X`oazGq zRbEHyt8)tU4^D)Z+^5ramK;fZeR%P#T$;@T(LBS(f<<_TrSm?JeourQJO0rh@H@wX z35IA#bp?@Q?l9~N*YG$zy&qeU`x4zVDLpS@n@yf_tytT5QRMx*HN^C}G{eQ0U@+}E z&zx3}9^Ah5z342M1oI*wRcri^&GA%!7K3Yk)@&m%x*+bv@%$dvHe;_Gs~SZ?${_J6pRmRy&WMI%jpJgb}Y74g^G!~u>sq?kHH+| z0B)QM6y5_PRA-&=@;2{5$~}Vbx4{%tt6wzHF9a@6n=-KjRWU*OkN}zNf0*u(MNJrXrFmL9;?? zEk^EwTve}em?)v zmTm3g^y?O!(+E`&i23}Ys5@#g^b8#@E{#688dprwD_&PjTaul25}Yc8XZ_v_5bR#o z1Bf)r_?5+{nEA4W;&^xTRW!kQmEnyfebrGPJ~KNPJdp^XZ}*SlpP6tpPUD~01?V4G z)BBI7uXO%g{RvKi!{|Mx`yT8t+pewr<1Q*})6ISXj_Z0_^{!zrSkB^^ouQTi*lPj6 z=EpHql5i6D;INO+;A{Ny^NceTgUe^J{$9VCf- z|3@pws~lcm&CAJ2j5C2T*Q!! z3act#Wc@JDj8>w-`>s9Fhp|pQxH4VQUIi8ElWA4VV{U>&1vOFPNbuv^cY^k-paJR9 zuZl8VoR;mvCkhaP2W9t`%hYLtLuy#G?JoT370aKW><&~(Mw2`kD0^gz0MlywMaOSr zbOrua2w_&Al)tylr*z3Ltt0Q#=d*DFqSt|TE6j6Rv6BUQg)LC;J*=-4To0P={etYZ z>7IS$xVmf7v){rmcQQ`@$DGJIS)c?)Bw3HkI6FT}jFYA5WKf8)k7D2zj6ZW= z`N!ED11dtwUAT52TFayhc7&7e9wAsN7+WN)= zdoB(e5@C;}lhA!(DBT>~O*4@D!pEArGA*ad|Ac!n>vWvj-o5+6Ea;ysFm1O?fP&+n z#BSQX9XI2xpnw}BrXW2HCv9K->SW3N%N}gXdoSPFl6wxSyUCqg6Z$U|k_4^^X5h}c zCJbZ$NKW0!HDQ#DU;Be8X8Ov~Q~VR8&-h=K-DxPL0?V#tI(~Pxrnks1<1_J*XFbb_ zd0&WcVLpo9Z_3X*U0U5IBe@~6P2cDN)_5xaJcO!fYlAtGFd!(@&BZeXagdwhCVr}z zpAxzCKYpr${ufOLzd?kCVuefC5AkO9W64fGEG&K@Q5hG(AX{4243ppygla$yprcN zQYB)|bQ4VvM%f|0%w1^=>BD;n98VUDyA_*;iiXtWpc0UHviLDdYvk&5vw>0NQI$7S z&cG7<(cixMn^i++xHDdW@VwwF)GTCRP|vl#4u8?fs?`0~s={!aPGXQG0&X}9U{Nr& zm$TRCxzb1t`D7wpg7FO18>_S>_fIokDI`4$&_&2t$!kMlRf6rCX zL*A%Nk8ZEr`ayL3>tr9%E%mwcV~4yIBjS7KDd%*_;$AJ67Y5kp6>tJ-Pc<`EoRk&Z z7to(A!M?8pl`sxZj{!7{^zJ*^FHd|%ik|>&K@w9|kATJd2QU-ysx&iI-2JxNUBe#0 z`{Pq~c(CPkikEoLW6=q4$<3`itMWIt$^XefU@`F<37ZDD3bYsWw&@FC8q00XY}Njx zTiNFS9w2HT!rvTGMGqpB)s0&w9UwDNt<%svq|!>T*)dfFK{Fs!7ZHg8Mu7 z7I|;U;0lVKF&wF@UZphf{{>uG{xw@m5?8dfBA_0rE*#-uA^|Yr6~KX@O!$f?5bu;Z zoPE(mq430i-khZC_^J4}!m^c4+z5vM0mBXW@T!657bm9mijI$?mn~}{R~c>hU)uN? zhyaxOI`?qp)Rz9A)uey#w8wHkh#m4x`uIg^5wuL4k{;Bzsvj-*`@$~@Uf%Ujh5LJk z?QcLQ8j{)O&=J1t>om4f7%N-kq)l-+epUa^XzM6J{!8TZ4*pWBUM(rh*Lt(qx7uk_ z1xDRT6FV>dJX`}zLlkwpaJ7T2{lm6U%>iNeQ#5XJXlAwPk*v8>DbB9lvrh&yxTo3w z6SKmYmDsbA1fWjiy+XtBtE$|OHP{+=yWfisGfnvec&JGw`9~ju&^8wWvNNHE1TJCj1veBA};yvsij^XW95 zP8))+ND@TVe*weOAgOr^Itfvn*QWhPE!o<1x zWj>9Lf3moa%D|}UL_L>b62u0c)A1oXha5N?^tpu1q>dTPs4*)_f__E+v>5k-;Y6~u zEOpM_gJBY`iXbaH4LQt5<~o0?P#1n_jz;FTwB6{rM5jY`{-f#ti0o`!mLWTX!4*Hv z*MVMUWboC^J$Coiu`gx5>Y=X`0pcCX2U5SJt3~9N@AkVb+1}oSvik??yH6ny;Ya7~ z_M?{UNB8KXPeBjBgr>_Zo%B_k&uG%+(^05<&x0|%wVO$!t%Lglg`9a>Iy)(|Y?tMW z&F=6EMWaZ>zT55xXSK>pkD+&*@}YfOAikKOnbAla4+Zt8>-f_$|D^%?AC&sX&sPQhoK z+147q`iNI&P;@$yV$ZvIKcejs?(jRW5bg4uLPX%y*$Re$St&yZPvRGKJxp$UVz0CP zMrc}~_eY>u`L2nCcvxK@IorR4R~_`WfBV_~tcO%tWLq5C*_~AY_>-F6F$i(rZRf%L z=6FQIEx|}Cu9yTX@)3!!Rz_0fCqT|4u6#?9Ja}Rxp1P+0C(AvL?OS=;=q<1+&Gh(D9H+gOXJA>-}pJ58EfV=TphgZ8|}BkY0~{T zWST6B-afB{pV6(8*hve#dH*szh)Qq{VpLvuFdSkd)pj!M*AO~VSi|Af5wxhN*S=Yg z=E`#sfNAGLuXZJ_iQC!}>j^YVTu!vyygf-e(Zk@+lg|?nktF*wAQBjGlh2UxcG?ml z)j+S6aX~g4&jSE(ZEb(+SRcNB=}=n3iLj0#QvEV13IzjS8f3xUznL>H^FCdEF|dm% zym}2Ls?ZGnU^f0Hn9|PiyM1XW{JvTa599=|+=5#1D&^s}JcJhe6lZvLDe5TufiyRU zAB50XIrBywS{YE#)@B-OujERw*c)q60>1HS6)70sSTj65XwT@@712Xl2iBodRFJw6-+nF2UN$`hm!GtK z-}_s=7hRABB6Wf{{htgRrmet7-_`C74hP!!3ma(fJA&pu!<3l)YeykI)euD26mIQ4k`{zE)8QP@^Ets>GC7?#odOcfp+@ zGtS|4O)9aGoXy#oo#Y?ns__sj5+)L9lImZW<1~of*4lzWU=K`}JW!(U7bJInB}!-w z7_=i+wm5M+3o&=TEktEE{(wPcz&S_@Wf#Q;e7V;7vDb}zodF_I@%o6Sa*nV`v{}B6 zv{gl0vf5c9k6NtrxOf;odj20feFT2yw*)ng3hiij>|CP*&u@)GUjN=0{eoKw}GFJ0%_GdD98&tZ>vtEkl$XfFevgz0+{+s1bqe?1& z3odeD^unozI5jiXh5MeHzlvA!)Rl!*IKhC)YaUVv!y*cK9o&}+&z=(-_%o+rkUmZ4 zfA%?Gl^tRz6nj>T3^A2t!yN7=wrz`zCx6`0z#~bbo*m4ql20nOV6JPFKS5v!e4fk2 z()s@kTS+_z=mA*y&xizuCO}4?-zF%IZOW+Lah+8l6(0E8nXd002-VR;82(TjW^dtU zB8%6MPAOGg7vv1zmou|YN>apcr$KtN2{TEspExvDzbSWkYS8yMjH1Wb7*y$={K%Vn zAF==$^oc9@v6o~W;Iy&9v$Wmbf%lVM1SaXy6L7!Q$ZZHvckfE@#7CzO>Qw+l#Y;Q~ zA_nmiT}WE!CWCt_^ggsqZ@-ssPOxtRepfBVQ<~mIL857Op>oksD$`s!`h~hF4xBb(>JOl2US(R}~*0 zbB`~sIdo z?B^F3b|f8T{#D#URp6xInyKXB7>J==NulcW8GeMvf+%nCvTC4wS7v-isZL!PLknU0 z2cTrEN{eNpEkaBxTQ(hBox7p(HGEG$B>Yri8Tb^M8{x5c3kMPpO?m?DMkOwY+-aDu zCOm{@v~0dnI}Ot^*owxrdj2xO(4sAW7v?5&X8Z>QX{>$<_pmm6l81GrxZ~7oc#d~` zSlN!FnBAx4^|@Nepnw>q;@&sdVA=q8@vYHqQ`SslmS)FLTx#bFkvsTd1*1WPHNwG)w?62Kg{lwcxA%Fn?aRA{fV&CRnO~9I_R4Li==EJBSXEBPT$%MgA5B_G*&zze~ zKb-DacL*}%)6L|eo}SG^t@$#}TNY`+Jd_B2x)}8^P&sf}yK;w?V?Jl$yyw_TrWE*C zhvuz(!(aje)D4#mvNGmgj#xZ20@OKIa0HfPxqEJ3AlI~~ zt*H(L5VG+HjRoGn;Z6XwX*UB~g%Fn+*a&C@&f-w8#eR|L_8<-6MP{FS_o5fn^bX0s z5g`!Sx+#3qJ^Kd4w>OuCZ$1mvfwm8sG_=+B;@D2TE9VW2MMbpiU9O{+W9vQ54fDx0 zsC1ItLt((uL&Jk2E$Q+ctmNMH;4-5!?5s5%#Qy-^SI$(RCv6`AXXi!$p((ITUV-8<lKHISL;sQOno7m0X#kbSQ7@oaH@6p7yoZgcRA?A9f;gv(*{TgGc zd^DZVc*IOh^BKYKHG-eo2!d{U?9|N;;(-M6eD(3Q9>NfWkM-MFH|^4Q!fLB$QEeFy zT6?Yai($2xtF;c2CvWhcQMJG8RjPbJPmL%#2DsR~ALjVbtlj`{{teXeZddJEej$Qb z5{FJ6PTaTA*<*%SBNVFgFY-PDV*;EdgD38}Z-B2s+Sz_AUnS!cZ6bsPi*bFYc;6tW zTh*>AA0ph3A6`@>I5Pqfi(|_`4%(Cj_4wXlpuB}6WMweJw3Yzq=eUP&W~Q7 zt=C+^s@HG*`1P@Drp(vPKYlGI@Mrf5zJ7ey*NLAol+4F>^R`n+lkQ>j_5(b`6m5S( z5nz@)k^JD`t`aEvZTtxNotUYBa1Q#JN&W&Av(IR$D$ny@y2SW0uPg9ir+EW!)89o* zY5IR4Z-dyY?2S|%1I06d;KTM&I?G_!7D->~*6W3L8(+aZB=68oRI)sKUvYkc9`|GQ z0AWW<>~Mv!|D_*)xOUlTYC1)%DPw}g?@$CXs;8s?E3pbVf2J-fNL^IoRnTOHQWekw z%*u@Y_%L1FuAJ~S>B;$#wgCa(8Zt_0W6-#fJK&T|nz4haLF2}8I8sB(Me}!r)6MZ- z)~EyCtemmwB=XK;@94Y-a~=$l=~v%qTUpUxe%y4En%4R5H2pS9E4w+3x=vRlyB1*i z!+0=0d6RdMp2aD8C(;$G`isXqR<-d+X6pZh+FnEhK`-I`mBZ9lGF?6q36lH97mr1T zJ159!=+F5RQkMI*zg`C#s9vD4xX6yEw=q^!WX1K1i;BYDHg>Cloaix+cpfJAK_|AmKEOp-D)BPA62C z+j6H(^wCiS{2J=!X#MwDz0zex6i6Alo(j0LM$A{8Fe~Wp4)4{!W@v)bkYY5UYN^)h zUc`wf)zW8)$+28T3FpR)tGu0FYf_UxK(jO~lMN<`0N?J7=xDA<1Hx|x&C+mdjqAZu z$w0GIrUKI}E$`4QElk`2Yj*BqcF=8r*_ATnLpVSQi}efHAv@)m%+e#^Fn!$`1IyX~ zp5D8pgbi^HrV^%$z4yQ>)J$C`7I_DDkinmU!=iaz*@dAN9}`6kfhaf?s*k*08 zvJmPh;7nY@5!3%=#%bP)7ubq_=-o1>gKv5q5F2OjG#p6tmiA#^est(5`Y{i%REY5O zADO^6>{*-tzij^3fg~Y(o?(Mprb(^NCDiS>U&uT8FIgOKe2f+V;OwA*uR;a)Bz-;0 z$cMpydhq(aRoV8>RE=vyGPX1Ekn?N&owYU+^veH-`FHj_33e-!$3A<#^QXwh9VrBR z4tz877-nI;WLfZ0<7z`Xr4>4j4ZlM0=^At22Sv#z3}pPTjiJt8`v@OkxahS00?*s_ z_ImDXA1pKtR_;X#i|7Cghk?!!cO+6xl!WUkBZ1%Hz@&QWCN zzjxy%bz!cZjX8!K0kd?fs%7^}rJh)kmA5dwd62rabF*Gu7SUxV?n(NTQBw4ahDQ`Y(S2GuArzJF!piCEaWlwC94wR@ z*!wL8IG?;yZvlb$1HW>r<=ax!`LFmXC=?*G z{uJL0?;p3i;A5M?c=M$nM9Qc8<4jM~AuuJbGAzLH7v^#&8KMPF7V=Wh6fh~2s*tE~>M z!c=Z3!0K#@r^lg-*x)Ys(NljHYEs>pS{=G&n^5ceVd;lR#f{`f3t!3ISK=0C@~#KAOy zhg_1yCxMmDAS0@Gv(qe^G01ul-b=#_o?-^xY_>72I1NEw-BI#=N)(UNRK|Ei7<(91 z#6)9Uw82mrucn#qxsvnNt3Y;9m5W5=dym{ir2hHBP{h)4(lL!;H+?V0k@`P~17KX< zOK$KHY%F=Uw56~-dW-%LY^8=l3{2+T1SlD#G8@h)Sqv%4_6fw+>YQYO>TFKIWWEG` ziD~HbV?GWC{~Qn`(I=3GI_tt0@hVW^blla0Os3sc+reCuze@QXxalZ|c(v_C(&yKd zadp*=O!MSaVtZd{$-U@#0phIk=L7Em&oP7bwKdRPQDl{gc>By`iUAgNpQGLUoai}N z)EVk8v$k2NUlc-poEid{J%85~s4wHR_obu>@S9g5k!%TQmaS+RZ3`WQ7D5SX6?rp} zrdjSL&lV}5pld}a*GPeP@0;jASeFw%!Cz znG99_01)4HvvOg88`l@+xHFj+8)y{B;!OhqGlyD=g8GVDE=1en?cYRs*}?=l>^D@J zXyhGFk+KeYZMOew3%#qfTxFOQ=F_0}=A&vVP?C-iA|moO({HBv$&|5OB+s~3-1=jr zW~+hkxa3@@!QGJQXb(EdUbqvc8zJCqf1OxTWi=}#>{SL=Bt4e1_Yi_ncC((JTI;*r zP4jp~FnN(oaA=G__xhm3s6tX&eItNOmv8+$Q2YNuY>sRzZC5ZaYjyk(d;M6~Uow<70qc3_PemtIS3RaW4#C1b$=H z5fq>ii!6(!&Zr>UN0m_R`7PI0KJ)lc}Hz zP3)8EQEW)I#cLq}E{6i%IqOVshuQCQ;CUMAeNM@doC~qk{=^7Dbae5={)v5e!Meb% z$S}CK<9-{0>7qI#CjPoIf$kj~Jl%Efw0pIx3j%k9QrTUm2IDYLE{!(^IQ)-$g~QVJ zOVZiRHylDbtkb0p_Q8mvwxz*35NxI5+cL%f3FVZ^Gf@--F=|?#F|xWvBx055D2d9U zs6xUP3`uExJ6Q5JmS2m+(a{mrqSLv=NQLEE;J}890T6f^d6zJ|xI3u0D)q1_LeM*> zhKxf>EffwJb0G^|q4IldBK@I`$BK+y?kTDaenHNO=_~I%!q5W8~p=rjX$>NP| zNj^SSl8+A*tkB6Ich?POkb8X6bCu~~xuoNfDQ-Wpf^B~Y_GyayW>V!nzZFCD9g}>R z(+v0)8@0oo7d|R+KyaBI>n%|l)ZG)VB7iG zg>~QcOWqp9CeY^3gEkKi+axa^_p@D&l}c4R=z*r#H!v1XnREUMq$)mLe!hcQdEW)Hx4+mQF+A?%gw8Ge8qyJj#{oiR0WAxucYL zWjp^G70VI8U3U^XO;J@0m$Gr7ef6sM6>V95G4b zpFgRGO?2cvq+bI8u#S+scxZzo-QfLM#ckBqj=xb4OLz#nahjge5E)XSSJxe+`sO@U zyNiboe8|TCEeD?I(ihRL@3ejKkGo56;y_8NbKo#Q|5QZT#1&x#aImAj6)bcR`Sf#J zen}0IE-L5p$ZARM5V*Zx%Z3nQ3T6ym9d!H_dXeo*bReEO3PRZe6C8JsIe<6b;q1E% ztFhD?m#0FPaNWfv%-26JWhL~`Li$rt|BJ z5H${FFGkBQElENZHh4V*@Ub26f@u1GGfR$?SKj^Vsj5)p_CvxObgU7DL1p8f#zCWoe@k2UnK8VZ zaBv~YKkoL6rY8-Em3^K3l*}I=Qz<9j598K3E0%;TGkg*AEYr}!1&X={9jQmRtG^g@ zM!zQ;)_U)OsbH>g|M;QZK?OW$LDzHFs|B533&jp4`6N7tb{%-=lDOJiC6Xv_>OM@< z_Lb3X)00T*`Z1L=z9NTd z;1Qm^6Ry|!+V0&qh4NJC-@jxRk{_8rt@-=FFX(?@Qt5S+`0r%qBdIKhFZ|bo`Ag&; zReUf?0oYk`o0q1(5n^reRxxVE*aJO%(y5zVd~h{4xm0q4j`K9h%ou>`drw^#4B{Y~ zRBZ-wKroQK_@nN>$7|p1**F`eFoCNLr!Wv(V?V~PxZ75fx-7?k8i{fjeU{~~W*QkL z(maFgTD`BnW@7alCqj+7+0yBxgkYfRIS1+|(t$#S!c5+Sz#;k%Oh~z`6X%*^h%roC z>K+D4g~{JSU#@Fqz`7^^kH+w#fJ;nZ$nQH#2-5q7&Cpz36fjB3I8r7BYCvH2%xlIw zcABE5boggWxmA+El25{vF(97pTfk9hIX8z zCu!lNNBN2s46F_H3p++V6MBNDN%hbTQkNZA_NE#m|oZ~IbIFa>xx+uZ>{cIu>3tmAAQrdYp&1lAdt zp#xLks+ z6M{~dsZ431k@^a7?pppMPnkE`4yj8ygC!t!y012C-NqUF9pYzBM@u;Y+tLklnEr$O z*Cj#5-=R^Wjg|kXb`J$f-m*VR(Rk|GqPD}K+tb%lEiZAwkE?CQF)W_Gwy6Iq$m6u1 z`R!nEh00cydsl(^yDp<(ByobTJxe z>dXN(ApVSB@(?4d2Slx_bK`IHN=v$eGZNwDieoN5OxKWIad;(vqb;9y;dgnpm2KJ* zZCRHW&wYJ@^WDb*UFU8ZReqaj#X?FKO>ibGoZzf#h4QKzt;DoXnj5S1Eq;*bR8z8DeaTu4`v)A#$t`GYI+kp6! zq2WH84y#<4fx_tR0}Fp&C1dG2cyrmt)7+T!myVfwP1_b0fccTAYRG-u@mx8?`U zAYR4+a2n00_PbFnnbn+Y_()ZK&s}C2C1iU!whiiXm}zc1OC^X z#lzE8)vWSjas+g9{>;@Vi=00<7tH5uV%FiF?d9Ak+q>1Z;(tJwQ zTQ@6xEi7dS!{LCU-L3S$VQF_tdr^wfhcW0rX0=;DDeCwrWSY`j!qPn`-G|aWt#ndY zx+kUkQM#9vjt@)sqLiHc(H>S>6PEU%l%qY`(@K9GmiDCd07`pV=^<8H)vebAckqEM zvqJE><`Mzhi{Z~*Loi#v6%f@P&W$(>0s8hX&W-uOuWrtbefXtSXz{w@EtAKh9pB5@ zJJB<{M&v;t7023bQQb_#+6l}JkAM}{@~g3aEOvXBYa(RUI0gF@6-aMezxD@wXUPyf zJXXdP)RyR<_kiUtr~vdqFOnS;y39@i)=rTUo_+;j>U|EpLjK=nVScR~l%4i-< z)rmKN#Oq!}(a%}@;ht)=sD;TMTUxp%E{WD(SCN|>AA{SCh&?DkNR<2ci`3NhERb39 zpgyK%a_8?%H~&UqhHjpe)+9;?Fjvvd$W>6BAfB;p{|x`?u7enf8Tus@K03?Ddnf+J zSeRsY{mDxVH}9`#>Z%H4_^AtVnn4nHRrsWEtZ3Obr;+I+D=#&T18qf}Q(G!K^GlG{ zI|XMoSeW>U+6o%2-_a#;x~@!a`@7z68O)uw4d-gjQl-N_mL_6@Hw~2#6th9*Vm+Tq zFrEMd8BPAf`yvq#)ZiF^qLxsNxK1<`nKNKeUh+;m2c&t9!TVrVZJ+9bk0G~W8fo-~ z?vf0*^4|jjZspJX&2TG!wX%R)iRO~r`@4@b_NV{f{7TgQF639%W%(8E(%7b(H5=-H z*7QMt)bSHf4~JvPll6?6cS0Ge5Bb zwW zhOO!mrWKf4(9r-t;=ZUs@{(&0Ro*FFf9}xp^Q=^k`vnSx*cyV@oss1YWSDBLB!W&-phu}|m*(s6SN#aKs1h)$&fhxaN0BdeJI6;C1-i_s+b z{q!mr#ej^eIC(4^P72WbsnK?aKz4_I&6I|2roK{uqK?mcE2gS{B_-b1_Y2sYyx*(N zuR7LE`U3OLMeB>ML0SR#d-=p#zK_s7Hu2lgH8z1}<#TVY$OR+@NKdp0EzvsTy^I+r zgScVBCP2H%TXLHWEQ_UNJ>It2EvlbBW*q9Qww|H9ls=|E&CmipNc}#NW#S`L6bGJN z;6oi5mUAKTUzxpB3v#SY zO2UPE=|P8k9iw6R_@y2UTtI{|Gzex4TMN;6ks`_lcvlN>SMkv4G(kR8KJ0foT*Sij zB#Libgt-qYb{a~}!Fd=*jPY5(Z`%Mx2I8B4en- z`fAeB8%OLO8?^9b&4SN?)iqd}e!DW@V>oI$c=^(P#WHXDY@(Ry)!L59W;P*&y-GqeH|sTct1`v!PW0r6x_pJ^*;o5z$jg2dwk zoTk4qkl4U(&Wt{M8FRb&y|kW2FFDK$PfqQ(aX0gL97x$b;+gpn9|^n8hF$Fa^^43taGKuY8&Rx*^up2so7BV# zG#+ryEs)J<*XxU%rmKW^0T12cG@fsRIB{xy%stWa4Qs_q@bcU=UEYNk+cIcpt@aMu zX47y-Q|4P{uXKRtzT{{6g|~T-BrL`hv26LE$a&WyMCM$ib-eg)82%W#|qjTDI$r;o*+ zLktk(b^l43e~!J#zgmOVUJ_B+F+QUW84|pmVpA$zjk&m)JORb6sdLL;Z_6@>{>Ck`R$_UVO*5~LS*B_n`3w$M1c`yg+? zg#z{_Z{{}s248|i4WbaR^nu?9ZPn?S{=<9=L9&H0K}hwKS%Ft}nj@ba=Ck6dNkrA+ z+VzWk5LlNdy@QCD=;Qq`E?mRqR+GF82J|rzjxt>gX#8uG>wf~e?KB-`^@c>WK`C$I zM4T0^{~Rp@H|5D!F{Pxc)pK0Ddw=;4iART@{D4+tK|FoTblH*1 zs?qaEx(MOTt#PY~B&jHfmTj(ZZf%8nU>s|y+T&FO`0!V}Y>oXYcs034yv%bNzhRIy zsoKKI6!)FsK|um&VvnX(be%?QQ~B+0a`%STrhsZ0Cx{;a8cq<5^f9suu4M2Fa=Gsk zz3Fwfy{nlefeqz?MJmZEOktAqy_fF++XLt)_XEPd1XkfG+3}?g0M;yx;+dcLoe3fa z#DR3op=aUUOV~4i*NVAgXU5&+oVIBpT&riFl1g}eD^VUJdEZ4_a-fkD?pE)U&(*Es zp%R0gra!Bna=D*7w}?UH;;;Qp`PYv-7AGr5{D#dijE^${Wm<5_L)%>(;)+kSJ!{Vl z?sK?|6Gl2Kjrf$*WRI;EOUeT%UppEe|ZlSzod;pHeG`ON*aE(@GE$h^r zbgG)2^dLvOx#Kzp5B!EwKlRcY12?yA7MEA2hx#dx0fDQHqSZVWIPHW^sW1S?gab0L z$)>4sNBPdLW+78rF$bwmg6m;9XepRaArt=xO6zs{3Z ze~rq51g>9BvLSzuOd1fZFW7tja2oTT0alvuJZgK_g`YlP%@L87%Ky+l9f@x*jg|Ii zJV6VOs)gIE-dH>{TD{9@$WqZ}>3v{7lrSLWA|g5@L_T}U+|?j8ugrurdOVHRq%KGG za>f|xN}9Itt}=DTh?CRtV{*34&xCHP(&5>QLO>-!Lj3zl{}iNxSoeXvvgCT+#X_-k>FHXcAWz4IzoA5U|G71qjatL0 zeV0HT#j%mw^Kvo@ROtwo59h$%M*y$H!Kf1obt}bX(A&wpMAG^9$##G@p@Py$h-4nz zE^fK_>a_OSPuS}L%N5+HWRkqV;p(ynDU~Eh7kGWV%tUIh0m4U3c`i4HhHlA<{{= zGbhz*^az7EpRNhwHnaC11RyA`75v3KiGD%fI~EOe`MzDh6NSzY_M}A=~O4G0}a!w}JKYAEAcs+urKUxha6M^hZJ=f2E;l z{zO`3p&j4rm+YEq+Q__(^Y%29roNf4LaadHH)`~@FMv@ zEiQh8CO{~@&wuzD23ICw2o`PQ$&Gt~U>E8Du@|kbQSgGXFJ;&=$Y5-9B+oR?ivYgFfz9G{WYGQ#b zxS*3$LWQ`*5xO@#8r~Z|ZaHn3Q^E%C1Ftj5t+1cOqgCKNKa~so|M5q`aP^ zih>=owLp@#V}hCwij%nc3rNy+o3M6`>EDy6=tm{#c`RiCKp-scb)?_0Fb;>Zik zCuCfBWBF3BOfD^-@K>SiB{6y&<4q>6HJD&1k4jsCH^COC-de0@^sIerUX`=9|C72ih6fLS0a_^Mc_hhLY$*^ zX@G=KG7xMZPCX&mk-J5(Ck35!@9p=62&Tmi5bQHM9`YZ)+7PS)WH1E#L0FOQ*+s&d zA=nB3G6cJnX@<^67yTH!BEqf`VHZp}xzp15U4*|OcAYo51H0-qAd`a>W!w8r3;^CV zxf0bc%(Sa>c^CXD7p3pOuVZaGy6~eDe%1k!!J5D{Hhzh8~hr@j!O6bX120>;#q{$#of44BuO0)QgLfrJdA(#9LOy@ zdAtIFOwlKoF>ey3a<#VA^V)a{k0sQHG6iZYiA}w-N@TtEa1snGzEa%V&M7o>m?C(E z=a2||aKKtwR^RRIWxbtjXEpd#`qBduD4W>^{b)4cYu;hO+8&{3^+Xkow0g6dlL>my z>g|kBo~k^q;fwXg4nXFIkN&z3j@+?#(nONBo$_9*bq8!{5+<3UCd=;N59 zzYVq~qxYZ8s5^M0%WX1tm)%P&vyWyvtC!5*+Zr}CSD(LH<52tc;%&r@g?O!bjhh-Q zW`x#^kHSKddCvfsUIy!;o5j+l*Zeor&YfzfOGiEY|I_8gIs`g`c8a_{XBh4gsDcQD zG9olhCie6ukJ-^)H{iI$Fghq=pp|p`g9`}v&mPO)=Z@na`ukP3zoY37*u!9Y8AL-* z-LZakwYkS8pQx+t(m(mH7p2EwI8j(K?+J)m#xk_Qu(kZrMf@ebn4Z!H4Zq0rDL=hM z%WzCLj-9q);x9LNO)Q0w90#(UsgNjmC~FY%+RM9#$*3ZRAU5$~=s>tBbA4iS1zEnPs;{4a==jP3y7^B6RZ+u6;clA@dH4N|7wPgRc;Q_`CB2-%oV<%! zeyS#)gd4eww?Pakx4Am~?AdD?WlcUFG?}>8`*rxm4Rz%&p_I!>OpDf+pT=wCR{4z4 z&GAgcJ4yA}5p>mn3RVO=qVfxw0Aq{<4LXf`@s0mWDp-D!Nl3)hTpWny-T|kADrf5J zRQ}x;+p9BCD~N`)pTaBA23GvA7Re>$_op;(gum^K#_N^CJN5n+P@qyTD$((W&0!_{ zEOR`+ygcLl{O6#=R9xOD8 z1%xU}z$k$P&cPGF3tF`{hFl;Lk~HUpi=!=?1l&Cyhnea8>pNHfeL7Ryzth^8PQ8rP zfN0QKMX;8tZ4q00PGh~z2zZ0{^Zl*8&pAP~|9Rf$ec$;%5AdAqz1LoQU4H9#U%$21 z-|=N4J?rneWKT4TbGx|pk*nzJ$2c0!DZmy4((YuhLEd=2WLy{a#K^u5d-B+LPzGr6 z5*T?ASlM&)B+8t*i$(L9+GlWbWdEFbQ5wI``XJw4WZ;m1ov!`<*Jxa3)(@5IZzz>l zH^1m!ecfJ7oZ{%=voNmg20w?}&#t!D<#_1pR>oSDak-!4A6yyBT#iY%T8=-#_nV#N z=eU6!Y>EH9hv6m@)o88tva_B0A4VnGPl!+p+c+&`41?uJi(R4bcmgPv!TxMEUId8y z0JJ#pSC{AOgYNbq$!d>@NH+(GlyW=GGj?e1tb|HOTa2uhXgLTt9X zxtHb(-Z38NI@zBy56H;eu8naWx(}Lju*sZY;Q?DRZrm>yRR~*N8iVh`RgJi;ZS3j_ zlulD6|As12McsBBOq+7_HU|T1h8DH#9yQ25Ww=mGE(oQTM($n*r^uE>?tVrq3|e-@ z#xZMzi=Ab{Ot!bj6nHgeY3%8GeE>-zx? zVFJuRCC-~=9~tV6+lF_6)w?$3_i2XGoPLSd=%8zGGeTX@szK`Z4A2=WMAtFp!SN9N4 zjp>iX+18r3*?77G9{h)38-yD;vbDX=yGTG|MuogHA00W5_I=PO#J!R{Xwab;sfU@f zETN3J0lrdz?_*6^_V=JQHO^4YY=Oq<1o5(wI|BahL$3fj3W*GAJtCg^$x@H zjS=ZBE|;sW&Xq?1Nq)Sv^8U%J_9mjv`y10&mNlg3m*!rCirhSdN)?gWblJQR;5VSR z0=?x1^+?xak{C~2B9O^b$|l-x5^;Pk*F z;Q!G$3sxQcuRRLb@ysemS4hPtosVw>pxd0 z?6K>Sxc83tQ*P{B;GI6)8@+uRoLKr4#YsA9U{yvy4YQ#J`9HjE?9;xBc6@YXc7Sj3 z{%vKAHIJn#$e+7u^vfgrDqiREvF3H@v_Xe80}#KAvZ9D+NB!Q3Y#% zo>|UjT(hpDrEyt~IE?Lrm%oONHe6dfzYW z?nT`N52?<0#73S%!r$TSkKn2Zy+LiN*T{Ynb?F7AxoJG$#Xp$)!h*v7`u(pSXCPHD z_U1nU3kk0)pTOzJsR>3r!8~pv{UzkrbE)6Q({sg!k5^@JZ&$mwu#7cXLq_*F7v&cK zr(wWLK7{lencKZO?)fMf&s^;I@1MeoU^hi<;7S!mHGTgAnD^rD0eC0F322351b^+@ zGfo0PoPnR(IJ@!P_mvtMysE%=3!DS#3)_u*C$gSll?4fXTySN`Yma^fB4lN0>kG)nRf68Ag6t;9sh*|6nw-S!*C-na+x_aW)v= z`iC*8pK6%4443xn!%Q7=a4VC)y{|AqQ^7Iq@$~sNh7+lhzA%QrX9?~hBvYbgZ+zU- z2u7aw_3s;-JqR%d#=&H&!6sJJzE*~9x}U=Fg&k)Z4m=yroc)cQM_NEXEFkUdf4khx z;r7494IT>}rqeghR=srU=`B6IO*G|~c&g9LC+MC%8#i5JPj&v&#qOP3i%N#$)_$}< zH@5$+F@Lg)MiMP-;)uYj8>NmUxiMpEPZS=3VVRO+{a^%@Ytd(36(dk(l_|HspW z&-6cn%cdexvQI!698r(^-}`uEGfENL$a&iy;6t3WNV(5jJ^gQ&^?lTPqyN0WWHM6v zi;q7n9bqjq@z{x)T%>;{<)lwe8vt00L!@ZQ+F$m+eSF`L_eT2UzwCc|OzH_9Q;!ap zrZvDLL&L`t5aA<2?hV9}UoI@}JIo{1{a9=-MrhJA_6{>(5gs+|JXt0=}3D=JqPdxUm6K4dF>Ek2s{13q3Q5JUW@+^58arH-UjPwoynHhK-WOku+{Mr8RGui;Ls{eMz}O@eOXga~5r zv!zv22y@Cx`b>ubN9?RS|#Os8&@g6SehC9W-MgN)|PuGkshaOg-{Jp%oc|M+iUh^@sEY3NV?uE0I1kdjWFFMdPKGVo9+9+03E- z>j#I%MK&+P1WnhoJxxpLrbNkWhxhv9$%2N=eDHT0t5(+S9@BSc|Dof*deWF1?&v>U z7P`yxV!{l-k; zPSo6RPh{{SD9S0cAYvAyYZ1Bs!@1CdigCeZ}VL|Wp$*KqH&5saU2~! zQj%j5mcbn$8=$&j==etV)QN2F!mP2lnh8^JisVVb?4w|Y^5F)e{V3gos}v9CpNS(d*AuZO*Q;F(cf`{Q3c6hp zO+pm!(it=0*PNOW&wLpzVfn$h*x|qfqOTjaA0OHLmzaX-2JmUZnh_Nd$Q~;To&19e z`$i7FuDNyFBkGg~42o*0RRTMeH8;2Y#%X9hhu|Jx*b7VHc+x z9>*B}h%0PUOvqKBCjz9!pxPxC2l^NQ?hpza-QDq#0j*~QD0u4|ZzmiNTuOL$6bdI- zZ`BCLGUshgcq}j@w&B(~g^JjH!X22>58!j#Y0n2#bXmTlb4FEUr=U=iiY=}w`#Gz^ z(y2)yr>cUHDFAcuU#TzmX_y$8G~95DYh?k2{wVe5%HTPp8vHES;~=BJEAD{I^V}66 z^MMV%Zk}LrWP{BY?2t_dxg2dwb5|eP3ay%Ot@t~?6{??Ab!v%?4}!m!dO3t0BjWCBkbT(z?=Jb7@Gf0F=7^#+9FY6)sE_BQI2)4 zj5|5)4zeRU&pUamod&~acg9-^X+Lm9k@0~-;@=h$)olNB9gXciFG_qmNQ^vKl=?tX zDt+(^z#Z%gh&*snAr+Px6kAA~F61T~qv(IExeUMdLgKn0k=hHX1c4PtJGA@zxgGNN zFJ+FeK3!RdoO;hRu)k-Z*+uHOzA9o>Dop#0r9U0neCnb=0iJll?}U}5H=*@H=UdFU zK!dF+^4`l&i^Hf)bWwNzSpF9HL0!756t}{yi-b~{QUseFT94%O;)oF-wphv zehjm!b^UK0ANjL(d!&Xs^vlSf$?IEB49WO{4YrMnjY0OA zHv;%a2Ii4n&=<(Xx6I0P_6J>Fmt{_+qMtRt{qL0aeLSeP?tYDhZNMP^4=)i9ll?(uB6LGCD9l*Ml4EVqR^DxqDJ-qBvR)+pF6E6SKa+5gxCT{%5Gu&`m5i*O80{fIxrju7{=!A=N0QhPj=ABT=X6)dt~!78rK6) zlj8*2V8?9QT$}Qa1@5{1^2Ibix2sSALXnGkut0F z!?_np^9XwLv`D`JmAEZR<2VG55CAq^!N|u?S(tU+NEz&BNr{SS&xF52VR$f8-(yPn zD((r8B95K)*b}+OgUE8~Y*b_y472hh>|1U{+ zKfw#ID!m9L4efNPZw5#QFMasq>Ke+v*LaIlN%&t5nWc>vX9&JHD#&m zto;|J&wClApV@@PuLiW3I(;UGq_H7aUhD5dneny$&54qOhxcx|FkSkxDe^}u@qq?U zz_+yc#onn|<&BL&=X;ptlWXqjOVhfIF{geJT6`C31r5I8w!=Hq4J_I@LRlYB zOEL@T+at#Rbc)=V8}95s4DJ79(IKE+IG+p$~YiG7p1o}vSLf$@w2{kt^Jfo=BE zYm2?Jb5_GPS}P^HrSZ;0dim`%1iRv~%m&Px6O>`|PBKvE9f|bSw|h6->8tPbZ*jW* zlo?**9Wi`mj(;gwjEH61eimT{53;ZC$Gx~I;F zA<(KBfJLII<*@28L#Fg#?pyp;?6S#M8aR5njx0FN;~aFhAOuUR+g|zUeLo zNG_^pxyCc!)U0gXm34=A@F60&|R5MwsiigAMKH^=!WYvc75&w zo+$UZ3!eLGg}%qPFmihP7T$9+LDwZ^BPWu68J#|UYi|61e9Qmdf5^V@=|hLN;F<28 zKSO^P&(q(Fm+9}7*XZwx9{v69MmnUMf7#;S+;=-Sw%nBEkb9IE`6{cp_{(Oz{N+3? z{&Gkbe_JQ_@b}Ki8(p>^PPRfKU%h|w?WBy1^-Iv!H~xYsEeXQCO~?zI2kPvxs(AW3 z7EkqZy%;~hhzNln0z=UACKt=$MmCP`r$GC z_?Ufg%s$e5;W7L0|7`n^^%@7`oCC-y1eY?FW$CY;TA%*HDYh_M6UOn(g%`xO=2(*b z0!y+VkF`8$OEa`Aqp{@0xR+#agbUde`jTk>;R%s}-|)%IUFr3u9J_X9BE5{|xZ|JZ zOt?vbKUneoeb+_q{#cBi{k7Xr|5n?zV;aZXZewvYn~t1Bp3>C9b!T%e>3bsbqmSh? zdKYnC+Hl`)c3iSEXMdHwzEsOP+73P%>}#Qo20jr>tNf9_Z{LzWC+5u@`7449oZn4P zo0*@cwS5=5^A1j0oJoA*f>{3xtXF=#xOV`7?z6QuCnZE0o{F^q9f_cz<1lt@2tok#ei8+;wGc z9fVdyxJGWIpQF|{UCvfKmubsututZ^g8FnbE1Z^}5~)6$U=5CpD}5L-8H!Y2Psj!< zo$4digluTB6L%b;!e34R=I@+u zGHl|~pXCU`gC*>QdOfSDbJxGp&S5K`n$lQECPvite`nlEmd9EEu2On8GEtWn}bn2bVE(?zD)I1WoH9?Ju z^!SJ9+C_Bj_jK*;l6CjSyvIhK7Jf9QzdXCqn<=WxBT~T&1&?s2U4XTWlUt&9SW`6l6mB^;?(p)8bmJ-P;t)+_CY}hS z``~@`k6RR<`Rd5xc<1Y&nzd(EP@i`-ZXLzyvz9A^(ftx~c?S_X`v-8;AbHXjVWQ-0$ z+s?^peJ5v6qzCDW%;FI(kNSB3+f6CX0B*~IsSerfyq{slL2mI^vlqYn9vkGoqTPO2 z?|r&xoc4^J8nVp+|LwapLg%`YcA;1L*~s1D?~>HMz^ngkS>#9I zf8b%k&Gnxx&pt=7u1TpIRY3Z!_t-yjR5Oa$r}V9|>^Io?mR-(L!4JQdjO7Is?dB262mczYV*&KGjRhW0a@$E(<+ow3X%hdCcHHf~R3 z@bhJd4qqkwvTZ5v)}H9Y;ZpK_fq&TuRkPnKk6!pMc{g(77FXvc${+cT=&x=$>)3TX zt$(_}>=|Ny(=y%KoVHcFguiIxes72ucDTc@wB>jhst|;h`KR9vGVt0LZVwXRe%Q6P zi~q8pww={>lgl1pdy7!EwnV#O_Wi(;vfoE`30ET2_(^IU`Mn&=5|`AOY>|`-XL}FOByZYtdc*#TpVij4nOPU5sCDdNy$au>SK1Hq zaO$I1=Z<4I(XWTYe@C+ZS=I2r!sr55>hsT!ihE$W?YdQ;o;7PBTLJjU*1zBqYzdT|A(w-4MywJIhu@Gb7@ zy;;9(P`|>TRZG*S9oA00UfWQkcJbw8C^qzTXAfl-L>O@7t)q|_+h=*d$!>(;*!TLY zpUScQCy|1RCyZDBT4yKSdM7EA_|Mu?x#rgi@1=V0Ks>VW*A$YyN06&|=qtNp>9(Qx z@ODFVJ84QAp4VMn_oaed;P94{(&4XA3{2h&_vz+fS*prHE~zav=(^b_3(5$fp)1(v3SByw_~Ar~9;&9-Nzb zID0WfsuONNpvb^Klgy&z9ihI3v6k?!*~JSe(}?hS6}m0m$;n&n`BqKyE7IWyd2h}C zk#4l}%a8b;D!)XP4sOMjQr~^j0jTtsfJ*z8TBTb^i&qaPN~W!)oF(4%RR?XW7txiY zvrjq1J6G-T9?I1lAU5)u-`F!41rX&MtRBw3A*Rz3{*3Y-0l>S#ES3-N(3m;EW&e|g zlA`Tn$AVxNBeSEs9#MAnPp<1RJ?bHdqB44Px7;!w&hMQa8Q5tlIopy9Jxo0A#|&B`J$W)EZTOaoy`MeOB+Vwj z`5r@a!hD*?KUTfh8GE_+be?7&zE1)|2liyh7U0uhjxowUM*(S&vLrQ5CduH_Br+}^ zy_S-oexCYke^dw5BLn|~ha6k~Nk7RC*ekZe{wk~JYC~H{*y?tKocjb-7Fe9xT;{jA zhZCNL!&g$cT0PxZV3op4j^PNHwPuJ(5{GF>~ojr^a@3xXkPQFO`wt)9A3l$~;BtgqBiltUyxph**^_NtS$fuw+eHE=KV%!8?A|;0NM!Jv zydC$N7yhPRc{}s%;^d}lD`*#c1gyg5Zm8HF{uO9;Txz50r(M6`snCqv8=_+u*Y7>m z{{kD>yfr2=c%HRaI1r9o1zLVlj0)PixE^x8HwN4}0wA>U-cR%Q!4Cf9IP4&Qj>CL_ zI276RMNlHQ6P6mt#V^f>)f|cpTqW8Bo8uh+wD~UH2bjt(t&xF7H6wi)&0f4XR`bK% z%NVD~zyXk~v1U(X^G31gnq(A*7Fz+uy+5roKJ#(DGUB{O<)tr+CcLH@c!^RcS}lvM z7EZqMuA9MIzF}|07ZEM?cB*?@rMGs@sr8esGHCC6k%4!7zF>Jnme)}}d%;Eq!V*yF z<$inb^xJ#6wU_?wM4ZNJuBE-T*52z}d!NJxw)Wm-;&wUhy}YQsf2~w6Xzy~@-oLSL zDD!&v*0pz#RBNx$;o)&_#7lk=^QOK7It+OeuV-`Tgx5I3kn|;BBznk{K4Z8&i(>2} z@;{^eYy;_X-cL^K8E_%<#fqr-XeRt)2+-=0ZdUWN-f^)p%kU5WtoN&St|_YdOB`7# z4gX&e29on@HImh*)$^epkQ?Clm~gH|2t4g=yFg9hJ-RDqQn?yFc6h@Ao1f&OCaX4r zX?)1@P|-7|b;e3wwV~3qB& zoLz%dNd6Lu_5h#G+_gAUAG$k!;5GSp;*swIaoNi?2iL6v!dH<+?X20lj(w9KS$Amw z*gwQRcRkrM;TqMSnaY{UHUty=A&A`cEpRKyy$^?w&ZK&kJ#e#?{~^WxaH>ok=^x3J zNKYGMrG#JRBpjXJRONtLKbaFi=!FO7CUme-!fTxzZS)Q_dau~H$J5grz1JJlYf-Wq z@Gbvg-u{Qjas>8)J^g#}V0DJ^$TXDI?H@weeL?7-Zf1+jz3*O_xilQ2<5TX@J~=nl zs{ER1hngh-*T6~Q>E$e5yLv{V=J$~S`2aaf9_@d^)8ybJy2wo#+1foFoI} zwtjJ<=FW#4dpMP0i`V=la#J&T8*5fWZl!P;{J|ofR2`?=MQ&=~9iKvKS3+t-sS~aA zGp+RbQEFhL_6G9Xo2`+}6Wtp?xeTTOe0+R768P#-0r(zd0OS1pqu--gLrqM7T!P3`Qg>()6lWBD2{nLN3yr-}rg7SXq%FDO=Ih2XqBM3vCw;NFK z{Q`vdQV{@KUz4JYkIuYv!sFX4&k&AV?5{yVzZOjdRpfqPoVjb1DzZ0o&k?G~-ptKK zs>t4wCvQn2o#wm(cFoay4bpR+2X*yLGdcfVN#ArMgj^>={)r>xt?EL0!k(+eEpye%L(`qy z@t%}El8J%8^F*e?U+6Zo*h<~YXaAGW)cVa=qT%=lZsZ;XknD{4PVRti(kH(&^HG@k zr&Hyzr?O5}#3?=$+r5`TAE_$XH~7tCC69t+=#4|@jc2nd<9>GpYRr3ss@V~1@4HA+ z>5cQnu}-(@;aJZhevIYp;wG=A?MtAZfdz!oGL zyo$0I&7-W@%IJk}w0ipKk^fGsfx*FJ1`D4O_1wRv>_SgPe1Z0N`z8M+V z&HesxD@jPeJ$iBDJFig>T-9>F^RdWgSyA^QtU~{;KXpHj@;5#4sVn6(o$?qLZ|Cmp z9qgU>`uAuNJVGF@A`on7)+>&>Bsl3W9S1D?d@PPmh=A~#)+CC)N&79iJQ z)xOBQ+n!kejxkIe>13G1sb%c_xgE)U+M6Kh{_q3*rIp&On4BX>BET_^b2(tIbJ_n7 z4I@#rZ{3JAjCjq{$$hajXS9|e+xkM;6|cDQ62{@#dhtb7t&>nA1AoDcCgxc7N%p?P z@rd%dH}0J}IWRutZ)Oj^NZk8nZ0pFFc>iw?dcVlM1D?npseS4SgTpp1!0xMHPh``Z z03ts8F!$(UBn)7}3iPe?AjBaqC|wL>lSmKlaNybf;eDWKNooR0#zmw?HZ=q4Mw|rk z_@rkVYhH|;d_W|xhyZ6?4uhs3|yC^fBIlCQo2lh0K!zs6Q z(pGQBfjyIU+^haY?jMRY>`1h1y%06Aj1xSz$J2F)y=4`RI3NbDVt3QT+==(2Tt#lW z1*zERT~yKNEk0#&X8gm{0RWyzWJ=2t)vv_*4}Cha=_GoW@N$bYr!pt=C@7&_1YUP^ za3MM@TF_w*uig6Um^!mE6X^*nDLm%A#W@HUl+j#fyxy%F;>Rar?pJ3hYD7i3m^3<3&@z0gy&8O>}bm`N>Zy}%D2!e+1JM8^Iiil@UK2K62 zvguBs4!faDW-}=yJk`p5g2{c#_9o1-Z@vs=sz@GX^J2dd@@ON80J+NJJFu}ot)G6(`u{t~QDF>%?ok<*Zux2QE zyv_1FAt{xPApsxl`xQ6H#Yg*o#<^zygUaGH`y-oMAl4Vvk{v)#KG9C~i>;fTM z{PoDd1RQJ5>+wir^K8BKI9J_c068%w$(z}UOl)zy=7-iUY#ce_YJL^jJYIRt4u3#J zco(YXR9(F0iOA;HpbI{Y#=I+>q8(>Gck{DK_3B8Cp-wN91ebNrn<4iGMLRYlZa}{p zHUh*Ymjz`;Fy?)UVOvnP)GOr>ti!2<&=yD9kCro}nfeQW*IS~PdmOb5Zi@`QOd;dY z?RIz*d&uSFFxZ+C-5`V?)^-|T>wG3i!Gk4w@X4RQ+pftaE9zX zzX3;|N5s{S+vZLDgnhFs_n)Swd@+13b8Cs3k;tZ7B?R&DJ__e>4*%EHA*kSvu>=fQ z=Q!;A7qBZ1{6MR$h~clo{t9?}lG~x4dhBGqCw|~L>EEzvKBkuM;V;F^U8)9n&;GmA7bYMh z0~hfH8@KKs851kn6$h{5-qv{k3*dFGvE~=aNTUd1gpV7&pCmweRJ*wMRD5ghf~D#D z9n$PlV?lSKe0FF;^S+q(8YhiK20kS(sJ_*{4>3ri(fdW5NCyTs@PDGA#hsT}1YNUr zEhK}gM;*&3cURx9xB&}yp}$F_f7=F4#GgRAZn}-fMEbNPmw*r;{7s)65gnCIPk^!g zC-7jtTB9R;TFtm%9UVOc{+sZ_rtuaP=!luv#qqfT9sR~!w$DX2Z&%*A@@HLYjK=&~ zqN8^roA1y&qa*pUj9MuDFRb)M(U`Zsn2va}-o1g2)@(&)Rnpm&|Dk?Cl;Kq$DCbu$wqciZC`L-ie8tVa~mhI^=Yiz87P2YroFdqLSJ) zH;72)X2J(S=>mSBMm-i8m?Is?|89glPm^aPB7MZyhh`a%B=Z|iAL3>$rr`Xo@!_pM z0Q>J4i!I@ML1I6Mm!O3%jK(uxx(A%Yx~@oYmQ!QqiV9AesG7Hb7!L4FHT3{~x;_0b z;5sRd#Hx4D?Pr(KUw9o+Z|5F_{wKz13cN|_aSxG@4sRv}1@_ZUf%U?}yaMLpXWgfr z!OQq?UD@XtJrb{oCcIfE=mR3ryxMocWGb1Ugt?{6kt~4^(Tyi#&ffob4LWF&s0LY1 z`xUuq^h^yJoHoX8!-<+_W0Cpqz|h97y?}?_IYcOmP5p&OK~H5BK9wlh5x^HUU6mHuqB;6kKdT^01tN@m)$-_BP zkxj2*=0f%;2~~~oXs13js)T@Iyor}tf#N7%C<74^@Pp3mmh%v#v|)gcF&j~Nf@1>le1Fo*InU*nm?uaXl*2@3Wkqg1cBSbx34&Ue z)O=A8TnOKgTC%y;ZVp5?oy|?6J?v0mxl(a<90ICHLr zCM?cedhS7}X-E{xSqfh5IjX~}{k9T_57A|ADK^9y8-(zKN*IQ-0CX>0t<0J58Ftwc zB3X72?2=yv-UWtiTi>hk{#RlF;%JhSPaX2msZ8lu*Gt#K9ZX*PJ^V**{T^ORrS$OJ zpoib(RqhkQN~UVp?1LSDO2)iz3dH+kNc3jw=s_pTr3io>I>kM+MQ$`q+pWK^=-*f7 zJ+*spJ&rSG_3D_!tLuNEwBCEPe%xcbk94O!wly26-kFI_#D-y74^8|RHm$eSr_w|w zzS!HgBy;jl1)OyF7Z(N-drO$uTNuUK7~H}escVmn+u2yM??UhF$06MzFZ|EsO?a0v zNnr&1T^@6DgesgTto!M@?|*Vk?kwCH=6&#fLAxhmz&uLNy=@1cowV~l_0lx%ZL!-L zeU006m476UR1{Q+nfr4OQ3fy<3T(!}yD)w7o(UBT(5d-eD@0@QR3aa z9gW5QB3vfYPuy(tV}ZX&LDKk(ChT9#2+D0F&-8=)AV;~nf5c7RU-Y(k6(4Tc&Sdr7ASatV}o{g)!w*%niz9lnN#m^1j!sn6xH_-fYm#g@IKf4hw3@?sT z&Dm-Wx72%m+#7#%Wcy!~a{>rHFPp_6cr(@7nOX0Anwc^ArMx`_K*e_N%Neir9?7-w z5{L=!q< zY9++|X-c-ioi%E3HH-Wi-~V{f=8*$`pg+E^icZnd(Kh7|M0a%lz$mW;!YW5G+ z?3dgW23DGqMpT+pe0ZLXsMDM_f`W}DIY9>Rjbc|9_a{z(PFIR@Wi@3qdx>KG1M2nL z^^}Bk23;2AnRoJwq8?`O?enl#^CFwCrhZ?}=QPqgVR0 zV>+{GP#lfg4bZQZA9tuhb*vhtZxUXq^#exi=et|^(&1r|x%s7X8~&gatYS3z&oGS9 z+T)pJghB^ZC}v4u9PI2A(1ZGuCOailNF-)Q^U=pdyC~-HzT)NP4E^*M{XxR`+4!O+w)!eUkm8cVr%1kRiCO$WUl11t&Mn; zv2rt4zy;$fU0g5*clrVZ_h{cWmD~ozQxGza1D!}(`OUK<&&b`}_wmG-mQzN(8nDjj zV0R^xJ-2N4dxsV8oW0w9^HJucug+b&2NqY@UxovPvcr#RSa`QY?+P!apJu|38p-7S zDJUyH58^(4-b?5;$}0_eiPqIK=8At`Wc9IJNiAXJL(%yob(cRln}+76QI!4Wr>I`A zuQJklm?+jYf==eVjj^r28?bWhJ?dTBfkYJ;zkQ)*FDbY62WOvwjw@! z+V9Yd`gHhZF869hl%!>P)|)(9OmKDq-^4tHH2BfECi>FTc9SDL!Q!gDtE0qwRSC|C zbnP}?#7iFbr|&r3=@b;bTgOuy$Lexm+y0R$z^`UUYC|0-=r)$T+gS1*vmRA-*kPI9 zss&7`ryGcnUyZTZ!qSY@(8VRpOkvydmWTyJ|0lE-#=E-8YnVYyC&$#JCtg9tv_qNb z1@U|?=NbLsg}fp6v~#(lfox8PXK}}Okz3b;WhE2YS>dyP;=`M;qTEP}yde5stIF9XzH zv!o?6>u=WU4Vw!u)88e_I0lS-@YVXsiR{iNtY1-FDSh9t*b*EO>oSQNP6u4ODKVyV zG93BUcr`ZjwDaIX*$7?H0qMV^`JVw$UidVU!SYlz9bU}s;Lum5*WC{ahDJ_wdXmOw z4`YMhnh;+BiS;uMj5ZG0)mTfcZ-IgzN!LC>ym9tB0A@J+Ah!(U;gKCh41x7UmoBG& zr(_3UlVDJEIJ}FDs?pWUIGsWb`Sas-s9q`M$L={ZwWjAxR+SKJG@c6(L`AQkT#CE- zDnHCQ`zs*rg=0LbQ&+0-pL_%$VYib80@iX#*H-d3J6~8)6F!UkzE7sZ7jk7R{!B;4 zXa5H_5f6i3;vrpou#W7zf!%O8$E|ub9R4KvrJ;^$@I02WXkL$8t~=Q;f)?rU8zewR zsU9uf9Qc}jR{PqETvKZq%doF%hbL-kCzRgnk{@{&^Ed{6lbjtFtQ_i^7K}B zX`S~jUv1Y{{{W7_1IVbx-(ZdZByD8k^ei<#GB8a~nOU!pn-09g#TEXRe`g)InaT?t zxKDZ0;eXfVz^wbZc;N^5oBguTd2aZd+($P5kaDv0NW(DjZ5|p1e-jzhdCTeW?c^Z& z){Q(dU+VFgNUvmj?E1+}Y>%Iu?wOIf?6BgkP#ng^6^0h`I62sE2KS3Co{*S(O;zez z-1bQNivDQ{$|w;dgq3N2bFsVfJ(&sd8cwwXlT$bOrgT8=3B=S{emBnMPf5veYnoPAqhOD~AxLuEx`rna1ytRVz1E3V2lQt}b>XKQaWwJ)A; zWt3&_VExx+k|NL9Q=YML|uZGhT_2!EnX4oVi0Np7j zpsudcY8R70sZY%f@8sLmBGo~iSMhMw)wyp$UdFeXt5wlQl~4b~o07TVEz00c`*SXR z_ol2mUa;@n)3Z+3^DOrq&33Y?N^GQ+Yc6hM zEVQHki6@eAL=nu!u<6Z1dhy@vUrTFqsyW)-9!+iNX^U1)NmfQzH7BE8-OR)!bVdUDKCLMOU;%o1-f>q}q}yhObtpRz+t{rHE8? z%Jk3An2}VM&vO-71uOd6+bNE$(J9xpM%#P4*HE)%t&DcBxVEh&b$$S*qkQ+F`Pjs90EPe&imhR3@Yt#pgtH!@Ds#B6~7z<rr|1K~Kpn|cb5~1Svf3Yj55QCP2XMA@_x93n*N}B>(UonfXmb~(FoIpp zom7)t)0}EqHEmi?XInF4-rLsG-Af)?zS3&=kn-OTuL9bK)awP*zow_76P!;rZ%7t! zotCwIxsUpRm0%r!sin28oen3PSN68G8To_?LlAB428M!AvaiQl*+DOwQytx1wA9Dj z7SJcUaAACUQwC?t4ogH0mQ6H1mbhq|(7BPgr zuGL-L>$;+A+j^7K6rIxJ3h?U_N=GZ(X>O$vnux2CHgvaCx_m`+=~GS=ZqnS_+q@xa zeJi3pebL(8Rhf#aPD7j|49F)rhglmOnX;8^$8^U}s{CS%6;;oPwt)XBA&&;p7!K4v zrL(gyU{-X6cMh!|ALPpbx2;e0 zHb>XA0b#5F`zPXS>TO=vlt*e0^PiBfNBWut z1z4iv98OBpKXKST_F%e<>M2gtw?UJo4QaGsmOag1 z?rV!CQ@wpO1QrUk=zwwC_viQXooP7&ontLxQ4GwnJNN`R?l;tLr+B&uB4Fvs&W;xG zE>l{PskWZzq}u4rqJDL?cEEn}vf3wiUtSl1RLmq<}?~Yywueo<+z6;HPO67D+ zA3hFbNVqjp)&eOcXwLB^fXnFe8I;#`_jQ8PFg%#tI@+{sLlf-ly0#|vTIlUqxe8^f z2Z`C$8sL;M0aE~?0(_gFu990j$%`T!O*OBU>Jn{-eMY;Q*BBn;l}V>T7IA={-i|eB z&Vb1&%tAFO*4Dx)t#h4Ja{?ULDA_4SXwILX8a;bzRBp^rs8EhS#I8K2%yt2gJY%$y zs~8NibVg}Zesn7+0KzVmXA%G$n`ZR=zgcY5$rI~SzRc0>JX*O>Qe|g1_}tpvx1zHR zjc~Nwk!2xKZ`~4kCpUDZn%74wRgoz}_TBX9)1&Lxub+!f@d5gn?2@xS-;^rWVgqgi zwu+=cqYpAt=*WkZJM*0X2j%96DbP3^?KnPhreW`yc}8nAB&Z@s%syLCkNU85T^H?N zw4muyF((66(eT@lw0AbI^z}u@8DYENY(b`j7)o$r*2=f@#&d>+aaCL8#_Bz^r93P4|%`6)Y93F zyi^z3`?^}BT8rxkec{%z8`s;Q38N%p@ZFio4Qp0(ce;9n^zGe!z^S8)#uZvH2ld|p zEclMXI=fdO_K+PN&CrY*(AC{FEg)-DCjn6As&6?5c1U|0mJB>aA{AIMkTAUtnK_lz zS*$EkC1z2d)9CXIleS5f=;&(c>}$m;hS7JLenySZhv}8l+>WR|-#P1u(-I|nJ7Mx| z(W(GSX7Zm`tBdpu2SN?3klOIbR~``RR)`x1vs2Ks+fb7kjbifz)y4#MfUJS0n`&N( znKIq!@BRmCjQw}XJ_WC25CH&bwZTWU#HunoNyyfXO$3N!sv^wH?!<;}of=)Ys-p#C zAnAsVC&mb!yj48L4auCSQ?{kfcC0Z|4Zu#-$h*NQlGByRRT!L=(dKrHIjFRoy3ud_ zRL0);XJsf)3zg1XU^safD9e?hrUg#UJ9r}1S1|I1z~l+U4RF^un(5ot+uIFkjIw(t zg+l9k#jaN~0!DSsE9dx{O>}LtNc}04W8>#*5gn-wbQ1Xoben~X$Wh;#H4~zFh3vzW z?5Y5dDwAM(XJ4QW7wB4QLDEUmBXLiNCLO&w+BCl#8e{CNjOY}GCy#G41R<$T_OHO8 zOfxpcrGRPDQD(S&j(@h|qcA@ONRu$93UHFf*C!k>AoB;hkgAIyX+|G}P%0(D<)1SMHy8PR0?-T7<{WuRAdkY^yQ0I8=^vf)9Z?IJ54aiTgd10fTEm!O2Iin z$vz8ypH7BYaCpa!8esWkw;5%dcGB0?)7-LpR4&H{3J$KLePG=QRU*uy>#yp%y7DM0 zs4t96{qp6pX%E6$-_}~yER`O7O3DNXdS9f6Ku3Ai-?3=%pMXK*0m8c|Ty)I|wV{g1 zd)JNQG!Wp;kSfFgJ9FSsQ}oHS6@49@CSM9tTO0>>YmX}F=xUexiXYj@JlLyq+JTVW zEeJ8^Q-w~hxrUN4XQRpJpGM^nuR22>L+KgSRl%$3xzQUcD=BQ*D4(eB{*nvTIJgNA z(<@>2a$4Jv1%|BnAk@ah0Ue)CKYUV@sP~<-*i?a%rCvHUEzgdorMjn$dhY;N#J5zC z`yX&Drx01jqxlgf<5iQX8~!->eAu{9;iVW-;YnGG^EvSyn7pI2PDx6q(|;V?vS7^f zYuGI>?~yKHUQ|!Vwp=g&zwiYtIURFn?&(q3m4MbM{@C8phH2|FIxAN2r4A}zgMq5A z+p+RH7)aN#CTTNGDU^yG%b^gD1YV4QGeBfz|7v4~8(wxwK`f5R7k9&GcJZYS)G}czOIO!L7j7Om=- z4hzgfz#k!o$Jl3E?{pDPRrTkJQj(BG5-!yubH^13cWXxd)${>eRmKzKNNxVe1o#uc zy;3r%tra2){DfEtZpN`N)z#SyD-_#w`i7exMCEkYV+0$N=QCj|Vg*2VV-Q#!KDr$_ z6GRC|`yN+wTW|L?-!ArbJ7>OpU_nK6Atmz2A;~wIkz6ik=>MU^7b@y!m87|8=0`(W z-$3^PRxs=gsTfj_GN8v|`Ce2$IgmVomCF2tn^3V~4>`Ah@s|SStms||apiL&uUh@- zw9wK?ODA2ww5y||V@|-anjFqFb@w(E{L@GCvpP3IFt3mE(dhybI~vMS{#Pe);PTT0 z4`xx1inng_C1NLw#slI<|7dB6I{&jqMJ|ES1tF(<+a$@760$T}62z(wJm!9vV0(qW(z*aQ z&3T47B9p|52Er*En$ixKC8vB;3EE#|a+&Bc6#=&63utweDN+Yb%@O#86@TZ)fi$P^ znD+0~h7L44je-x~B5(H5YQa=?vq45V zDlTuP0}o-l>$S>rIep~&(3t||4uxFKZsdh;Fc!i4^VI9h>CoKraue*tSp~|h8HFGt zEQ9fodcd9Ubo5gTkw2}#ZOnWgI+8H;{pGrd z4NWfi;W7%h3Hc94ABdUxfe861t=Sr@IVi*@@FH-H0%It^I&jC4j$?|&{`unRO6uwC zlveG8y!u!?b7=EI{v3p#z63`i_%t<|>fIo<0?5!9^i$~r`r4v=tVmuhFy!M;YoAS8 z*!+?{^ZS7Z4LekPtjCl$P=eiL+-G!%|j%zg_vnfeB=Q`z3%rwi3ZAxDdn=zfmvc=<@|I#E` zU^5c)rGLeE0HB=b-5dg=rVl*%=YZW%;6}Y~f7aWr9?d#H- zUIR8ldy+c1t4NBZ2ma-#8(og={tw&^5?8+?$S&{prGLyl3r*G-o>Q2sT1pW zQ8u6XQoXsM<-dR5cTss)VZcOjx%v>Tfk^bd=x|VHp2D7F=S9D`eunwbxy}p~*B4Bz z{#R-YzR9;^R3wo#*s(>M<`I*m!J2uU6P>Ys%KCu68@h`h<%t9c9gVsB69TB-eJQil zH5L}NqzUovb#Ov>rxFVqq^X2*-$a?GTCYF8@(;xSD|(e{q|?%Du=wLVdqg;CR#Iq< z#cCcOCvT=%`Q)?FcFYJH7|EJfHAXu=N9D_Ff*<^WFCRq`qbD>1@46vup_f6s1F@Kg zw_gxUL}dX+Bgi14DBs%r_r9iNeenZeeG!y5+?nf8D41#H7CahMdbEHnzhJ)^HZKSH z$r1FS28yv!e=<aquap)fQfKEhaXbzDE}MLm^gnHF|m7zb0~#EER51+Lc^@(U~w*T%5}=arkE zuUhW{&#dBVJh<-PrBF;>&gY%lR*B{Gl_hz4mQ%SxQC&JTi+ZTY$&M5+>pIsdB-X_M zA6YfL+3yPjfWaf9Nvu-w(Tdn(Bnlm%nMd>xam3VFa=JO$3z07&IlM!T-a;1~Ei(P$ zhD1Z%B@OlG^D?hY^N?WT*2hKF73jdq76=33%lRSjCpqO}xQ5*%i?xN(F@D8we3sxl zr};ViJSFGg&}}h9EI2}oOe?h})HDi*d=zWy*$}E) z%D?K+^~tW}XXH(DXBx*={tUDtQbadB{n7Z+Xt@69{6+7Zas5&xwh(;8@Mp*CEZJ;{z_ zsK`u&B6=vRZ2q|#en4cpEE_{C^ ztf@gMi#kQ?QrKw-r5yFn$)WuGaL7Q1;+jWfvvO=6TLUI<1J`7#RovA@>xSHPQYa9i zV6bly_?|u4Qxe)8EBoY>^;?;T6JvUP$0&41&sGVN7G}7euW@HER+}X!cPMGu%zxyvxdcaLeu{H5HN}@UEsQ4`Lg&dOIzMzh$fUT5CLc*c zv~qNU&*M#I`SEyy7BtZlYD;}UZWZ}{yj!}otIz=(%c8I}V-dAe;0@N9{5+m({z8S* zs10VLiTY$eVPX3j}G%MI6Fx5q`l8V8JC8yzTD! zz?a4~Ek<;dr*>4q=i}t-?kRNLTrHqgUvgEzA8btIQV-3XKJ(n^Geb@UB}2IBFeIA^ z!U|QLQ5}k&K_?u5+!7cEp0hqbO&S!$7Mh*En|V(D)+OfWL6y&cJ1VVG;}L|x_~9=h zOSE|-`(sNw0v#9fhPH_HMv~`aU1TMLtI1Fw^~^jcPg|YfU`P|>1Mp8Auy%pr?~*erXW#etZ80vh467`ooceDCiBTrx3V;~SUGXjCoR(m)A{N0{GjlK%jbL@mdPaM z2WHotwadoT7wiUs!_>0B@T!3NmDQC+4^@@@1wrW!lEfb1vFpQUzIdX0(ly&;FzLGxuSU^U!uBU2ni*9Q_4?SdcD(StZjLQk5e0n z$_iAv(*lZLj(#Iyr3w7d(%>rDVtw${3!fk$7R_@wEDxchD2A+<2quM`64l)!ao}R% z%mZ(1-%U}3=yXR{wP{hz!&IX}*eVi}^wJ_+oKvCYh4}9ozSiOFh`_|~kv8CGzDH0U z&!a8qz=V%fuRwe__~*$(s~+`5KFU*rb$v(I9J4zWIP3Su_kb7o$8|H+ox*cxqOmw3 zKM7TA0SE5uV9urze3kT83j)WvuW0+sr9hjbu)|b$#D{MyS1kpu#X6&bZiW0Teq=7D zBk!AR@~ufT6my_?ja8GB(xxV^GOX=}kbq>;?xZMll z+zZkkj9R)hwDdatp@)WFP7w&5+0)zIa%Qrvvz-{@=2TxYw5<6Hb3#+jfD@b{Gg8@? zhWr&#E+$#%Z`!^P(XE6z^2GvqUHy3%ALB8#6^W}wE`Ex8^fA}X#Q-+2IVfK@fmKCBDiBOdqNjqny7C|)LnVS5fA7H(Z>k1jub1K+S)=cv<9amD`cB2#@887zLI6p zIH3SIp(Zygk_-h?y2h_~6vyQv`Vua4>j%uB>GpD)$DLk86!}6KH8Rx4|q)5A&?O)}lvjnZcu$yzv_HUeS6J!i@qfsyO9|d|)@K%~o z{!6D86~8Kc=X5Fm9om?G2SRY?t9IN4Yk|ZfMEu6uy4#DegH=DqXZ+Pa3}Jp@w~c9& zEuf|6T4ISVh^xft&ITqK!uzfTQfS-3(sDB|g`(oCROJ}tXxf>cV4iT4sXkqnxDnox zrI)*#MTw>J>k>XSE?p4ZE?HWS%i_|8Aa`PEUA?=nZ)jLHKfa{i8Y5HQ2@I#d5((<0 zULj^c0b*vcO6~XW=tqygu06D}r3dunmAU}_>6XIQbaw?Qqa0QX=#-{B%@crMKwS)! zXF%TsM&rtIck8uIIppMq=JS)QI@(iqqop2hX^R5VLkpbp8R$8w?y2H)fg2mqt3}1W zP0S0MdGjSdk52ack|q$NeC_15Z#U%Ai==QUpD4L!;Xs8XaWK=1^L~U;Pg61U#roQg z7-654j2?EM{lVk~xzX=@58$E&%Z~m+!fSqCV8I;WH)I9Tq6J6)j#o#%Fa~Rkb#xOJ zER?)IBKLwz!H2*(SajX-qxTN4`nUHEFXOkK-);PE=C_C64u1FWyMx~s$QR=`n_m^b zQ}~tfJIK2%zuUOKncsSTtN7i+?+$)D*capuey{P{%P+*n96PyIajo!wr*hR#&)2YJ z&BaB(+qsYN+sW^>qVy>H@&x&o72OAE!L`SKcNf>a{5X5?aK*XqclMk^hhHvwp1|{h z+3cfC+UZ<_e7eT`pYAJpKW`Qr^zhSlBfmZVy`JOexHP5fr!@V7`;*Q;boj+u&MW5n zL#}60Z_2+m_*bR#uk`; z{Ob8#u;9?)&j8;t|N3*%^!(rP_fNEK{T1K_zias2#_tY(H}flNKXmwD+o8i*etY=s z;CC0l+xczbx1QfBepUQVA@4P8sPzqgy8g_+b`HAd|JdZNzx1!4_0!MxpY@G?ulwo2 z^90^6`1PT~(f`8lqP;HvY5w(G|N7$dEvjerSGr5hdoTNyIVr$EA&Nb-k-aIHCQ3%!7hA%G4fEePr*hW$Wx26O-5HKa*VlGnXKwV zV6wV}Kk}`jcd*$(xpTA1+2LHSMFzbB8d&SVoS!YV^5zaF8 zlhez~Z6ZF{>cGCMHix373$Wc$NaS#EZDPWWV0zm=rIJsVbSo}g@eze-C!VpWn3r1B z-D+kk&i*#G8(~(rifHfl=3evVxTYn`^ZtH%Ug#q&ZE2SKM-$P0@CKzCu$j_Sw2p1g zVy<5Dl#lAKExgSKMrzFUfs5s)JDnQ9t$hS0E&#KmtK45IFnk4d zw<^$nh+t}7$;=$#4*A)4^F+01;Yp*`R1#p((t%05VJgt}qgbjOlx0iNJoVFsrdr4Z zTkHiA6pUFZVD7BC=^3iRrt|O<$6cOd~9pO zWS5x^PrCz<`mV9&l>!#qFcoE?9@p%0p&ovCe>t+FHH+Y6>RKJ^oNCo5H}fx=07l(R zb+Ew?jd8&_IG)Pi*9}%U2zb<6)V+q3qeVQOm+8kP&~VX1e>+^h-aN7m&ib$Fc66jKb)>8yfG-1 zjY-ry|6`_UQI55iKn8Q?* zte_Z&_Ly>ch2N?Eyz=MnokH!;(oQdDxmS`^wW!j6tcYk}#*Z$k+z~E=BV;rmpq!4~ zJsYM*E4zp&HZrw2>^1b9h$0KEGnmqY<^btO`|?}JZY34&Z3%#7}A`gXhV@wNv%I;mo<4S=9E{d zba`Ry88lRKQ+K;BcC>v-km6h(`S`zlgO9jbWXsS9(bD2!)l@VIY=${YAXZLv}?Nw9~#YF<$eJSzl+lKvBC^d)opMJC|H~2v|3vs`+D#%kbehaiy0RzBW3oY(m zp%Eaz@ip~2*ujLx*4g56Yo%Be%*x-xsvA+@uO$*?1^zz*&&2SA8$tQD>{hex%rc#z#QYqRX#uc_YvqHQo(uLuQbn%TRMFvJ<-N#W?W7%Hg+Tkp#ZpS6euKjK+KNTwoLk$2V5aer*{ z^)cVkt*v!vY*+TfNQ~=)@U2fR;C|u<)LzcjNQHEYde~Y z+b$h3Zrd-w3*6=-`O1qmMoJ|z%0ko2R})u_DA)cynj%4@S)2e@!8HH5-x${gf5#0U z=uD(**y;)}q#1QClG>Hx1D8JdvMaz?Azz`C@|A4_b{h{+Q}p6PVuc<4IAuoTFui;M z1M4`lkRe}(5i*5o-Mj|C3O=GC(9=?jFK0$5aF7wN>u6N`O^vb9_Ny(Fk6>&sKS~(v z5jD&;-XOdsaNXVe{`ksre};9P>DyYqjHcz5=^RlA@tp6|l*+55P^x{3Mz%p@Lr(Zs zvJk^2YRKb1#>QwX!gLiwT>9w-#AZ)rX-qFqFd!_4gqMr*0mb{iC(Yk>6A6rNs9j0X zhoz9X>4>WC&Q>CQD9)c^MHmIU8VJKsdNz7 zD@KoxGXfosI7`A|im${4%fHM%^fe@dj;}OIy!W;_CB6^N=aF=JCZ0BP=oMPwtghX}bv%Tw1^HcDSGmkQ9z;wgB~ap6J|AZA+Si&D0!F zljTKPl}*}5*)kNPA|>q|y2F_fwT@H0ttxZMCcFaF&}K8M+sZ4gs_FI@C4!xV`quPl zUkf$hLx*5NvrUc%QGmqCYp+%bN1q5?D}h*}zZtN>T?A4-eA1z-Ka@tiZn__bK(N1z z&tw8d8(?dZ?Q$f@FU1nk_;jSogK-fy=J$JYV`Ch_G`T#y>A9@~(U6H~eVWzBqdW^A z1ZXx0^8e-g?+g_2rh>3BTf$cjg6;$&Go>l>C|aW*#VB>dMcbYqSZ`(!R~FBznxn=j z+bm&YgynD)c3(|#F~npSVsJ?t;bE<4d6lH5F+20v*=7N)NJ7&HF#}QTqT+hjjY2Cfk%r2@tKZqO!mHZ)dwl&WIxvBBSyxhk=N9yiEs(k+F z^_))(wdQtIk3|Twyrxi*8eO!Ut{D|oE<9Rqd;~0H^$;-EehA9@f3x>C;87M=!~cEn zZeVjS_p(3|0wS)8Nst7CMu>utFG2zV0z?dg8YDtg#8eT{qNasXY(cOhrD_!|QnhM% zYE;_N8kM4LsZxuIt!-(g)VA8vik4cF{r}F)-20WJUvK-o&wKr!y{_Fe=ggTiGiT16 zIWzaiY7eX{H}B0mPB(k2Ns(1<9n~^Q&c4u{Kvx&B8^(hjB zoYHGkr8UCQ9N*@MWPOo6zS-$%^y2Y>NHDj|m{3Q_)9U)$opwy8P55fOq*e~DPU2)W zPeh=ZmonvrfkQD4Q5G&WnidXq+SIGUlFBb!%ITvLg0H{qn#&hq;cSs{YU;gZ>UBof zwq7k;BfPn~WGVy57CdQ0Xot>{7WSy1^VQ3EBpA_*Xs1#yM@CP&qxx!Wp*j8(4-sEL z7;bR6KS=I`IYW*N7;TQiyklXUdddU6>OD)GylCennMo%kqa98<O|RbeN^hv- zC0=N$!8|sRGA++lN6k7I@ZKh^8$NRWxflKIHkmslQkrGDWX^8bBxzyFi6tKvd1ZOU z1}8ZZOA=~`#i`>ahQm8e`Ws5&w1ByeUS*+6){VX&XmL{IGRjFR;300-5aPr%UCdW2 z!TifFQVvvJxvrm^DljU!C^bGaYm**L<$hDU&mBD8S%Mi@+E7coR5eN`iBb0Ey?6x) z`1BKNGHI1668%FV_9VvN=TwAeX2;j zC$|RX>pO}#MU1yZH9f^Zm+5IP!^U}zSHj#ktu_$ytiM*>-!SjwjvKQ`bT;wgWUXaK zhb%Jc%35#_I&kTs0y!h$fwOoQJY6am8|_vVb|}6nX?0E=&F(d@8^O^e8Y?Y|A4~`$ z*=Ds%60KL-8Rt*0m^@n@xFyOl5zJG=>Uq5$-H$bg^;OPi#EIc~Bpl+>ggMm2D|siD zVo4%eyX{Ixxm-Eq*MDx2^lohJu=4d~s(fQc8e?ucQUm7Xy|vUF396+k9_CV)oZj{7 zG`-*n7>}Q1|H!6Kp5|5W*^zhHFg3krfYs`ra%?Vv0)+}jI&xx2)UEet@q-b9Szh_V z8tc7?U&Yww9sQnMbwNy3t7f3yb|zgDVMD15!Q36A?H=RsG%OJ>!MihEz59N$Y~#g& zsSSBE+@?B6>7vbzHK@w`Pk~xld($ZCB@Uh}Hi_ zK-F?Is4h}0!?WUsI2iC`NMpUdHs1A8snoP5SzU5C7?;9{jym0xva;DRbD_6e{FGwl zRVSEeHLJ4M6tPCV2Tr*t=+%yJPBxh`YJryPALb7|)IEeyCBl`BC2b=<;9`P0@iiNL z-rc6Qf!A{|qTe{BP8L*I7Ma9cD%U25_@ueg?fngjb2$^NB%kOe$D8Vzz6N^Mt%Ubz ziy6yQUvIqUxxAQ8Ogg`j7eJ0|YVsxorcLu2)rfeOmk@wnFJE4$kJYguPlUYVubYf` zkb<~;CDyxWC{-9A?rq7$v104y;8EU47Jt2$-ZXfx88Mp(R>(>&TglE!3|B>97)YW; z7ZDyTlQxOBN>Y5hRSUffHv0Joy<9{kVi%p7OKez1vg1l!1oXz0S*4G3#)A6;(&hs-k4mU$g2 zHLuU5c6I(JS0hajkUSTqU&dro&p~)YkNmd|OBZHHtSNenZ@Ln$L9J5t{B?oe&Y797 z$6I{0iEEQ)rRbgGDqfVTb{5j6v@N|v=kd9bbchy@0?h?RnIW?AmY_*joYpRH37xGU zx{$sS{awdq35)aosw5?T_9B4z8soJ^e5=UdsN)=U0bdM)$&E9V-Y-#?`E+0{g5!lRZ(bQM zuFak{B!|**PO3RC%8^N&po%I|R3dL)d#OB=oC0#8)EmM!FCkE!@FqQ$#h+R8hmwh} z{DETf7ql(;8w8P${0XIe$SzC81>;j;Spl8m_vkY}*e9Q3llbdV^@$|q8j=E@{GjDe zCdbpB%z*mm!ZE87sTl^7v5}8$_0fs6-$Z^!T8>5&`Kj5({bRA0n>u5CfVl%=v0}al!+-l*1F!JZ zz`K#MTS@mD7>oTG{0Lvc|JFBuP%L)9d`AGiuh8p~zPDz@VhghMcPZ)G!LgV?p?`z# z!{o{L9?~<&6DaiG@tv5Xzds0SFE#tlZ!#}Lskj-C!$6}|!bj{V)va97z zGOMn(LLQ-Nm|kC1JKK^c&@Nwg-AeO38gFHlcNrMs;%lSU860rSU*uY6G+(yjjB8u2 zvT9~dpKP7M`yXrYV0&YHgp+J^G~AT+|uclWkew0qz@OSw94pvG)HI zIIP67ehplAwq^Yl*f0el7k9=wfEmDs8q3N8Mrti<2ynqP%NhjsmlQ0XjDVmm(pHf1F#La z9Jm>{9rzIN7_dX|MLc5xYzMvrENSN12$%QC0ds+efrY@pW%L7B0&D~}0G9$c1J_9Y zV&n>3Li=#pRlpIzX5a+icHjbFpoR8GK5!eb;quPdZs4({@byRDRg4?39e5A$*s{)8 zKNg$zt9dpASk>AYYXy$@82P|Gz}>*WwbVNR{Q(<*Ro9_MU^8$(a69lYaLo$FeIWe; z76RL^?~FAI4qO9lUWr^_;0E*qtOC9XTmw7~+z!kdM7_Xb;9+15FzZI-2oBr^-2Msr zlZD~}k`47dl_06YwA0UlV}8Cwrr^J&IM@`3LFo7XWu zIkfMy)C(K|Tmak*+yra~ZU-I!?gAbI?gK8r4f`BSxs9|N*bJ-zwga1hRhxKb2Dk^f z8Myg#v=ew37|dnd@8DS(;2K~J@Bpv{IASy7DRkgg;PyKi58yH20l`0y9WXzuwlaRe z_PelW!M{lVhf*J~4mjdo^bgz&+zo8Mk9toaA2DQyk2OfS5eFK+2-Wh8b`d4WuaPv;u zKb(5LhJ4^=;7);0pdaA&cJy)*@}9&lfya2(s2#ZdX~qrMunT*OlK*w|1v~&;18n{# z_5jTK7WQ;9`5lY{@ECACaQU;Hu}6V{J>;K4xxJJFmb{35fXjggfNOY$so$xzA2fychz8Cx!N{xf^CK>l8NA25q&j{+mm%a0fjVAiY11s((L2d;S?KLcz&*cpqS zhP*ehFJQx)*cGt-XXFF34)F|D9{InZzrcoHqA%cKpp{Sie#Q6z8-7hcf$i@y9>BmK z@lyqqdyjI!!^f~|;DPti(@6UFXXXL$z;WyexaUL40oy;KU#FwjF2+xw#WPa^eLVLu z3jP4kE&oU^)OtAOo1PxUtNFwa_*6jLwH6|DnqpVSrG zBXBy;#Ee011JB+7H($WBHfPe#OOOvNY2tYuVDloL^E!)qo4aDgz+;QMVvh>m0$u|D zwLG^4JOJDZ%v#YE>vuNr2HFSQ{_(EZu(9;#CfWsT{{;O3R;}h4pmD%Ycg0G9CAaeI z4=}KS_LkD_+mHur--zA>{~U78p*?r-tQfG0KY(umZU(Lc9^Qf;fX5!-d7^XS`%+gd zFdq62o+kokJxo7=o4?W(tDk_}uhMSdo~O|(u;iP_JCFLGm1oY713V5~vll&0M9z!! z8@Tzq(19i2?~1LT1pOu22R!hjuGoY!^zvF)Y!`4l@Q~m?V_eF`9;pvl^;TExFz~<; zxvx^_*e8i8NM#s4J^rs z#oB?*ePXerLhnl~SPh;Ti!BFkc8D8++ktz42SUV^0*SF(rl1dE(*wZm#E31#A$x$U zfQNybfCq>h4*{D`B95+wA6N=pQ$#Ec{N?CatQ9!oj96?PaCmVnwjJ06+znha9r?h( z%vkI=@BpyiROADrz+=D?;F@~m0Na6UfDH}Ay197mFPO9s?H4 zq#d`i{{U8fmKYwm8Mq#J0N4&>$y6Wv#@Uv=GGd?5uWxXZP5YqY&aJje{FO^09H|cH zPVFDMKG;vqs=0EsGGrVmPfA8#-edLf|8`M!tKXu~euJQ_EV)cRw_Sm;G-z zvfft}&Ry%T3P)E57CPbFDd9*(I9L}d59gMvBy1vUJKwj{WbJ}>>|c;|lyd#f$5#X8 zBk}|EHwZ1LD4LcFEdVXKPleDdXqicTWzasN9ik%nh`a`9$Dt8csE^QEj65faw#vvO zd{Q6b6WvSu2#Mmf?a*@5>fHq`3mPFvoNphrXd2%kXv3fpa>V(LK`Ve(kVFgm7)NN{ zcu8A^L92(Bte0YFb?8lg2qt5;l_Zz;5G(8`i%ZP4~XOYX;JXa}Kr z?Gqb)2--1dObG;sBTK?TWxE~F3+Hym9uc~4O*nE{I4Es82z?LqCZ3ipU@n;u!K-3RD}` z`mUt%x{&m71bMmhh?gXfKF*}w;u|JFk3wfTG-c+iGPR~(3&<}c|AKh_)v7}@DL6A^ z{0ls*dXXXR+D868BGCsc56s`?ft3Y>?x9P&p*j?yG>twR%WU}a_LUd9tI;jem zuI@V{+~j}HcEY8V;o|bt{?~*qgwS3Q)&6PWHrsa*{<%__ zR843GY3-n=h!A}8tB>gXFtlCJek>HF^Gdf*mFRq$D7^};KPOt3`4&O>OPiDD ztZ$Z#T?u)Gz@6lMPvm&^q1Nw@V+A+{98OJWNjxo$m2qsQTn*{bbcTv1t7K_HZ9`Z!*#pJCgPp#SXrH)b}uLk;N=ml|k z^Od|(@MiKJBJV|$x7Ig5T(cltKRaAgjwN8zk#ceORU|6I!Sc{tMX-cV>B|B|@i+DzyRoc`j5BVqgd(5d0O`tgw2xgi%PkLVZrR-t4#B;1ktC=&!V$V@# z5u<`(REL_v(J3CL=G-dEAEmrw=E-{B3@JY&+;~a2X?D1=oJqSl?q8;aBu3OeXeuf) za;aKu>_ud?bEegkjg^uAHu-zV|0ZcYzo~1zv{mMJv2QMIjnC^^8H#A7H_gkjW3~PR z%dYN>ohmZ;2u;o)7eI>&fsfGSJhBCvv`aowzH&CX9NKTCugq6pg|g&&ep%u58oZuF z8Ru?0!NuP3caMt^iG9f@HAa_wU0;;ET~j(^<-){A+HeqA+mXcZ)SMEZ#u9%+~M=xmF5I%LL$2cIql06@nbQx z1<*R6T}@ishZpbr63fO^9D(s2B4-n2KBCNEDZ~5{+IDEc>r!dEpk*b|#6RtW7KL`b z>5E#w*7~O~yhr0^R2iBTcTo6#nXdtY_m=B9haxRwvs4X=9-2DRb+Vu`E!F&ocOSg- zgqIjjyoS(gpl7W#dz!L2l`Dyr=QG~U=`z254xGWf*Y7u z@p<9tP0g#zlc&|xkndS-x_X*bD$|Ycpp{9i+)3-$gYR?9e7)e4JOyE zVnUqF>OQr2WUNdaZgLDTIWz@gWh!w>C@S^xNt^$N?A3kNW~>iv@ZaWBb6(o|NA~MX z1NEul_Ym#b*VY-^VA``$?;BK%to98mMlP52V@kNpe~PRGG%;-@n5tsCLMCHmb!Tja zNT=6peQG_PEaOqaw~qW)^3RuiwH_qw_F5FB_xDp%_V-e54du2{?y4Tj`6SrX1*aqz zl)lOJiT#utZpPWfe`#x@>RVN>@gI{8F_v88kZT6g7x@Tn7_@EBu3?`cADOqs(E8ol zeVrG3tRpW<-j%}4S|&y=a+;y9gr2-_TnTLrH09f|Btjmm6y8nH*F!(c^eOp_#P?p@ zb4?DFlde-MD_%^;*83>C=`)?Ni@~-2YvSv%kEHextTALChj$OW7fL;9ER{`93Aait zr%ifFh)E|aF6KQoG%rq<0dJz%1Uhtx>mWmnZEXkPn}l5;ac? z`KG6lrb?egr`xFGo(;yPWTCFduRz}g{V?=bN$Yhht#09!7#rQj*Y%nZZYzbN_Ht_c zxwa(Na(0M3K1=xygBID?8GE2NKceRHR7`6n)0WwtJeS#FbthJY*q|3zt2V@)jOyzM z>RV5J^;{>~APrzmz|rIKWbLUA$;L96EnKf!Vq|O}AV`T3m|fN3#_Dj> zbRD#PCQZxiZ7MYhBf~LJWo_ufG>Y~yo2Y9k*T6n0eN#T9o~B+Aj!X^*OCaqe|4s5g zjOP=kXnXT9ZU4EUg8{Yul}@dRD5ideMp>Ckd1xZ z$+ag_ukkhPyUqEF@}nva7hm&ePhPZ)vaQJJx1}?7S!z4fnL(l*RpBPz*Rd2R$u`A? zDvFGDWR!lM>sX|*lVTrJGguiSgk_pS5_I=3IvE;Z zjc^b*VJk6iynU22XBx@vEAu_p-Mni;tJFN8mbeCyDL$?RxmjQ6jLjsiZI(Gh1W^XM zhP)c`*2U|rl{)KE&pD>ZF~sBDmBKL@GG0W+=DX;xkzv+3wHBy#jwsNa1&MMwGwETO zGiL!=1fR$6#*h0EjP8Oa@lqp-;;c93hp!?@PE1X0?ay}!LLz=IivfH4{?6D-@p>3dV*@q%{DK%}8sUOPxL_O~M;v-)PZmQ=_l9gG zvkh;uag>L|R@YEp&34}RC}T&zS9A7Ke3RY`Pm`ET79b8oKA}^1B@_QquJu9IN^ptW zm$8P5Jh?u;6?$S{X>?xiyEX13*muPBkHkXC^&5h`9i6dDM4p;6^xLdwzH+#0l)lGprY_M_4#$z$6T#G6PgzMQ<3TtEM{l+)vUFS)b4xx1PC znuj}Me~Ig33MPAx?mdeotFqC^8l9RFQvH_ubs}7UKV8O6=`pn&;}YT2rCL@d5g_{w znL7av9fOZ?o!E@`Mjw}Yx}7nY7?DYMq(^(N2^Ax&9$EVyH~U<4X!c-?j_h6P{TE;b zQHF!&;i#voxhwZ4tmA%wpHp7zW41nbEUOLIREO)Q>vIy0jm+9MO%@Lmm{f!=^pa7E z??=|K|LTl=Ms(L4j;unlH6b5+K2|wM1$>W5ecW&GW74|5cs$Rx#ni!KTS|763nCMq z=!{(?@>GAAb87uu9q@fybE_5fmUvp(r>q$ZDBIMYh`ra#d^P7IzUSfBE7Xh-n?IwF z$symKI3gRJI^=9ej=XF2VlzHQr>qRC156VsS|h{C<$|~vPTEbnIwXz;9**T}mA^fP zyj{CY?5FxPRobQG&0;y(l)S;57Q#^{4sN7#D``_HhAj77JZ$vR%||kY*Y+_s)9U+S z++>nZs@c4BhmTsy?i zQjZsX8+)jhjc=2b=K%Fh^4UTuS!Tb+{>a1yD#nx1lDILxs!a~Dp^>#Y?)EA}zE{$i zWPV8<&D0V6HfP>(U2#s9JinB#eDt7zdXwt74hkz+ybcWcjWi~yLwwhZ)UoCn##GJ; z8SJ&bYPZky#JRdZ!*)31RdYb*{Bii(zr#Hv@ilH*YMT=K!Um>o8Pm3h1+yw7>qXUY z?1}qk+T%J@=iS|6ntK23h)G`>Cd-Mj5R>(bmt&;TSy`aOzqeCgko$0k#^)sU$vJer z?{jgpuSxRnGj!ba4&{zg?zhMg9j*3VKx~O)7H7zOFM}N6KzKLz_WY~yvdCya#=#$S z#=ao!Q)6NLOYuUQhY?a;ZOCt<44Idza&c%ZFDku&Vq1|>@^WYFEz`&3y_LBhQRW|t z1TjMVDbpA?R2f>9Mqz}YFzMnvC3%ufQ#M8)iN8IJ@`LnMw{j?Bh4I%5yA2N(a9>^r-i$#mHMdl`lvFHrhJ zl7sgkGH15MJqHnrtQ&7q&$i!k7R5CLT~A%=98dPq)bo-^>+X!zoozE2Dk*IiGzDbs;%-iV_BS!hO4w^J_xO zLD?DU?8&KzuCh;8>;I|f>qG7*jO$CC$FS!lcK8$u(Ca@|!tsX@RTC1;=nRR+v*`ME zlukNN9lLN2=;t26W^-%LXEqMFMR9b zU9Alzx;;5GElwBpsdMmqkkf&j_MY^IBT5X8cuzeP(`20ESBc6=Cv++E`6x0A?XK7f zVv`hE%U&ZY_d1B{<&r-}BdI#s#7Lr68m1}n1hJLG(bJ`!vL02PhCk(g$$g|n=j(k_ zC4QAqNJhtmo4WR7bj41O>r#!0xG-FnQC_9GoIg|bu1@AtT*HgKr0B3Dk9f2X z_wQwZC>tZLz0J=-P4YEKbMD$w9d4Z-ZYjsuKJ3w1RfQzZUWd%)P*>~$W4Gp7AlIQ} z-%vU;TsA#iT0v|7#KenF`s&bD%I=};!EjgXL)U8$o-p}75as98eIQkGxzpFP*CZNk z?{PXz4f&s!JwD1xbF`B~{z4HpRqdsdU9jBW(oA!j^4UKO>xz9z;xeTxVihwVm9J0u zU^$n-E0lKk=Tk!d>HZ#@CN4tVA0+nzuQ`SH@Wo_Xd zWY=?wQQxytB)*h6UcgWDXEQRWmv7rG9OHQ zCVsCnZdFyGsqr+^)|<7g0~FhejLpa>j`v56DJo93F*T-K&bECw_NX{q>xJ}j27R0j zEQizofpoN|p;Y??xmUW5dy>`tM!t4+hJSuIa*6C0WZzRv{)91I@oS7dUyq+^{HyNayYIVQv~3`*YyPj<{mqmv5N0Kw5PSQEB5L5`k>B56Z@)$@I!QeC${|% z-QQ-j?mWaD9y`&8CK!Ft4c(Z^&?UO>aSBe)s3T5N*H;%%|1g5Sw#i+wxp8}A9*8m~#d5_VO&{hWYFq=H{?ANfs!{iktP=UvU9tNEqIX$~Q+>)M;!+W0WEn=)-5%yNce{6`q>7gzDS*mVz zwj+MM6#hUx|MT*X)V;~}5AWF#pnjrQ)2!s95eb4eQO`E&SwE{Q_FUW#CgM5O$C{*b zmL~tBJy$bL&W3vML)Eg#_uz-hB?|44-b9;9M$7%)U9nfD9e{7TmKA9t&$~ZD>}ehOf%*KmP<*a4ACs@UQ2%P~ zWo`8_z0#w;nox=l;$S=dXkW$DhpFc%^}MryXJYz+DE~bt9*-o(&YatA^IZ~t$ah6} zC%202;@iRZMZWuebHdwv{`-97R+C!~#Q*sGJ8V)7P!<3yp!nWmjC-1Nz8}Fc4bCeK zr@x<+tx2Yg^+TBqWhS*xruKPA+$F?%PT@e$q1 zd|vIlOpOV}x#~m^Lio(L($Gd41G?hZB2wjjyp#i1?@m{hU z5gEM0z zpl+SP8>gLQGO#tYtA&eHdw7QIx%i$b(XPaqkMWsJvfA|AvNB|~Bdcb0mp;eDe3H*a zxU73c@(!sgG$$F2uV2TJaSRz7WSo>AQ0-Co1$FZS?3p&o2B@b%R!xf@l*k51`rU+4 z4_n7GdB!f2*XTsQjlZe)FOhzCuZHytS&t&C_%mJlS&y_fciT&q`8WgYK@@9)tgFY7 zwHaCJj5Z-F&F;*evEH}8M_H5QVnYvgsQc}ESUzh)xcwgJv`OZ|`mTuX;gJT#t7=(McwUp zcE#BG8$U@zzFO{U;c_5;6US&Zk#z{Z-S9mt`&P!e+Zl`Ui@rN?aLKh-v*oAvX*4;_ zO<4gZtFw!$aqM@$$a9ir+%~X0diPrR-o{Z=FFS>4A-Pybnu|}$UrGDgC_7j!6}K4m2o;u9gX*Q#cqw;Ricixxh`iAulH!vZ^46I zv88dFRGLXXfZ? zKbAf}zC2fns*Dk;+ne=5tK@gkcyPgPTlUoNAaDPFb;UksZ*?vTvrya>~E`TvzN2DX-24r^c_T`M9OUj0)!lmx9npIwQU; z0{c$NzWF@Q-jkNkFur@B9fUSYyDx<4%S?dghr@Q?VvdNJi5bdPaG zktLtBGqd`hu8G{2lem^uNEvxHzxll2|O z-}*iqGHwfOl&*+AM0ROXU8}$kP}f18>pz;>-!va-;)o`>M$vLWgH6SO*LzYq#@_cl2@-XLdA z=9x;CKc5_8CC@VMJ4~a*uUQ^K-aE+KB)ahQUhC-{wV$ihuFlb=oiZ;z%1Vr#&_+x` z$Gi_=GHLk;trVKPD}mb%)hEht9kk-ZU9pRm9S-f+C(0f2HR8|r`o4|*X2H`6&lSJw zid9G{UtgXB(Dz5KgT5L1hjF@Cuett5-Zi{$A-Rmm+7104=;HG{Sy7S)pg-j2{Q=Sr z)#qCFVC((dQc7E5AL&!SGR`}od2>r>QE0oN$#NwhnZG4v#9z?X z3*kb!x0Eq5_m<)nc*g@r+3M5G@0v2=Cum_GNVhTiRNwiZ zAHF8IIbrBQ@5#FGiv#bC+!x-~&+oULLqGr7Pv88>kKZ`>dinF^ zd&<94v9IC>6)#o1T)tQJSkIGpsHchdNgSXWUC&IOgS^eZAyB(M<7&|j*9%qy$QHjc zteiIUz6muSafWhsFgYYoH|zWfAoFah}i=Kd_JdR`T~H>oIxnje9og zQ0L1Z!5`rrbn2{uwj}S(5^TbX&)ygN;&!)=fPTZoP0kNBwhBW<~nwhU3+dOhAlTh^V;`$U9B zThucna%L3eB*!eKJaisU*M<@ggNR)Ps>D`fF^*1*T`{7J(sV3c{LBdQ50YOk`8=Z~ z?=5H|IRScPY%Dfi>`mDZ&v*8=UoG<=5o_oki%;(5T3C5V^t_EaJ{lK`EwXhTJzVoT zRPOss`0et^;iKi#!^g|H_qpQyFhsLii-(75eJV!GF=XbR6N|k`TI&lQxqqzqqPUJ& zZSP+qJwh13T{U|IG?s>6FRAyf)u}!Z?>Objg*k{Fc%c@PQ*W<5AqkH_b4c%+M$3H8L?(xqzbWfii|AlFE zkH6W_h0ptvv=*h&J^pJ9U2yq&@;{bF_xL|y=;`fmOQU=In+!d@{TtKh9{+uY?zP=( z&%J4MkN?p$IUfI4(&!%lH`3@H|JT##9{-DJbdUdqG`h$CS{mKse>IKn@gGW~d;C97 zqkH_nNuzuG$I|E?|9fe4k6&!!Z+*P^;rTny|9Jk!^LL(~@%)_UUp)Wj`4!KvdH%%n zAD+MP{DU{Yy?N-(J8zzO^U9k?-n{YVi8n92aq#r+>CMxVrx$O&c=N-X51##d_U_rY zXV0GfdiLtsr)Q6z{dxB0*_UTep8a^^?~S+T4?X|q`8Cgvl|8H1r?Qtc+_ulGSKrsL z>AMYl&b3;j2}(EpT1_v-y?8omBjquDccdpx~+^dB02kM6;5 z8AW*b57O}04c^aFZJSQG25){w*X!*|cAB{81e5RSk)t8?*=6!2E|!m%&+8(u7JRGe zMus4K4jM)|K9kQjqi*lsw7~;3UE*>1$hJ&A@li1aj96>yAe}G!8~MoPA^8l}z$$Ig z36H+5SmRzhw{lHIKA9TC>+6c?_D2jqukKd;@!E0J;77TyM?QZscz>^9n*6`N|3A?{ z+dZCTq;`00o5rgRoNM4>16LTh*1#~xW&L7 z20mrrUISk<@Q8sQ7})32rhWtS3><47`Vg0rwrU{;A;jRG4KNe z`>2a3oL?B2XW&=^s|}oM;9>(;7`WEJEe7r|@F@fL8u*%lM-2SHz&;yH{|(GDaIAq- z8Y-;WGb_~p8EMYc-+d;&|L9M?)C_}p`L7thbS5vqyqEHCm~uZe@Q-PHUin}4(vEix zeP^ewst%?#;3*R!wi`a5IluDQ9D^T~7bNpZFTcf{3!P~AdXwYHONUfz$IyN+YG+mz^O*x zcN+X&10OT6-N0uIOslRNsz@bbe$hE z`I{cqHF&LR8l+RDf7NzT-zUvJ2I~C%$4$O^8DHYOu;Ub+pJU_~Kc(e+?d#~T^M`x& z{~<@Ev>NHcn<1Ss^o4-+c!8f05<4+=Q>3pxem910jjr^lq zQstKo)%jz*_D56mqmIrWZ}Q8sQu8~)I=|NIpI_(4?Z@OdnEa#frMB--NSE(p?D~*; z=}XdnH&5rEW9IMC_SEuir|SF#M*g9LI^WYznYszevgUoL$8Xb5bo=zLWkpZa<(GK< z>r5@*Wah`!p8Pv?$+-Mcy8QM(Yx%9qbiSrqR#{Z1R+#de)Qg=G{x@pu^HNj3>GHJl z!#zp5UA_H!{YlTi$?I2I#-T^j2)&?fpYJ8(?~u#X3u5Vimexz0y)2$miL(8v_}{}i z9{$JlkuJwOM@gsucjIO1MM~J+7(HUe>gF+U^`b&*7%>cQ#D=x>OA=!?D=nXV^G3>dK{(dVMXNT_gwx|Bfs@GxM}>-<03~+n&o$HTltA^8ak)H+{F~_O<^->!;~EJ?EDi|GR%}&-tes z|5r9z%SrE_xBggZ>yPQ4<*i>$cF*O#^|52GmhAa2ue|5qtQRyTJ>Tgwvzo};YH}&l~zvB@6CUD`4JPJG?{skZXZKUe)M}i_iu!k zZ`Pmm_VuI_0cO|Z0hf}z8i+#)-SJoiC2D`rlj|OlF4tqPv@tP z{|#pSZF*Ygr?>xWX8ekK8Nar7_4w`|qD!XB*HU}`U2g2BSlukr-GBVWT;K0#*7DQa z*Wa68>Lo7S%eR>Rw|zyoAzeScw@l}F@pJ2|y5{uq*BJRthkBNOv&lbd;^*}8>%8(G z>GJ9Q)70L7qh{UMre2iGI?$FX!OK6?r0MDThtx|5Sn-VgTMeJrpQuTs^WC4ucSo*^hfJK?@tnr%-%02E+j#oC^0?QU{+i369+?LN63PEf{pU5%+xR?S z#-}X331*#4C;z8$+cc!Z#5={G`#05S?sNG!N&A<@l;!n25THRf-LtxC<@mfo<`>~2`oBdP1Bm5z5SkxFQKEESLZ zDi!}vVZDvdEE6{rq*dHu_9Ss z{M$C~Jn=uR$p4W1-p1!+y~S_;WPIo~yXhO+exn9@^uGtoJpMAxdB|Kh*kT%HY$PjHa-V?n?L3}C?TQeRB=mhl6&U=yVNqx;f;@F?03JpF8O!M z_rl=aKi*6B|8;V2T71upPrAQo{RiidW%lFg9o+Wh|JgbnAD?u=|0@3f==|yD(|SxF zpSFL{pKMZpu*7qAY2(ph@S~S#%V;y#0X_8|GUw3s>QBu)Y66!2UZ2M&C_1&@!~s#0 zvF%G~9BJ)H%l#jV_BMY`GvkwfzH{gw9H0NO9e(=%Z2tat_p7(@IoFI&qiK-G*V^@u zwXo^mz5gjot+&I(Z;`F3^mKcQ=k7`!m$EcG&iDU#!n-eRN@eA_(Sj*6&L0^aQ#|_2 z(PN@#7N0q$c+6SF(Sq5RHAia}E;kuPW5$eBujSE>DX0|S9s6eOFay6y>*e}h)RXZg zzj*{UxYk|}Y=6Fz{ht%bF7jybs9# zOQB_*@Wa7#;GPrgyXJge7V;L40G&{7=Z+DY9khUBmPp#y_b;PJUn}WA-&^6GWB2iq zJ;#^vYy}{gA znNpPy@`qmt%kxS^PEa)@nBkC-6TDIVzQOMpxr6Cq`N{tPi6>q)=$n$>)ra&RTMCU7 zS!bir(b7M^^zas1oqu{i%No8t=N6Bp(PQbWi%2M^ikw7+a-Y+!cK(EgmUU9`5P3z* z#8T1+qaOt2mOSU2bGgX)=e|;(v^!2ysIS7wN?9D^Hz=k8=$e}c@Ik02HEc2 zbZ2E=>vXWe_COi`w!FX~uw1+UTCh*%y>$lI5IZOjC$7%xE3H1!?*9hZy1X~B^Jt#k z|I2W0QnxEd&#*Ja61L`vT||pDwk=QU;eH{N_fXygf}N?coq2K@f_sOYDZpKMM|c}f z^laVEj=VK4*f=}*bL!h;pXr@WhN$kP^K=D7tli4@>j` zrDw~Lzp#mZNvS#Lj5rhI%Sy`;jA|X+IYBWdWuu}f)2^JLG)PhZ;86!z`M;)5C(X6zT-Q&jA?|~hTGmiEkKYsApN?kQyUXd{iS7YRc({8OMt73?1JRya%ij59_h!uZ z6t|f9cB*^DU|x3O&V%zb_i7~Pxxb+e`R+wb@B()+eH`h^bu^3>;9?r*58#I2o%7ja)jS7Y5>v~!$$ zkUo~WuQI^rxQ%#}bKOr5wXE^(HE3gk`w@Mg;0~B?S?9TrkHufOFO#0+KF<^_b3e@l zFL&>!Jr(Y^kX-4Gs^?X}ZU=3c>=yHCooe^txt2A>eFg2+xbs*bYTaL)YFSg=D;T3` z?&$M)b(Q;bMq#?Uq|CBrxWCS@teNia{&;^^{PryOURpcbUBh_IasS%DU%a?C4zaBB z-64$HT=ymPe1Ur+T55Dh(5iXv{Wy~g-S5!%`EIVmD;wQeOsb3A95jEi`v@a)iCarc zn%qV7dZGJ0+Hk4+2EU8kxA|>$$D@8O1wb-4Ao|m{!U^y-BaLQipKF)|=;eL@e zT+$+(~_3k`mu5`bPgd5yZCA?i%LeyjjQefwpQv}Ed-HG{oI4vUy4@YjT>G3mi)nXv8zR?oi}E z;clSDcK6rx?n!quI(f={mG(UC9=ilr>}H^cue*!p@JO|LLto4KraOba>~@_x%lejk zA6osk`+My08P`QZhucNJo^}6-r9J1~%V<9DuA<&OE)&c8j+=w__PTFjKQFj*u;Jgi ze?c4XxSyYAS?{{9!})vn6O7;=+(Fp?QTHLV_eb~R==M*pJSqR4TY$EYx%VRfeK$Z~ zK5(a_)jzwDMqVOp<-d>Vk0{PvLT&l4HIN=N>{>}bjS-AEYw#_S&X1BFcLH6q^6$VA zjJQ#!;Q2d#}f0-m9Pfn z5gME~ULgT|^;Q@z7Os&mkoyx7Y6Y;Z{1IVf_8azVNE0R9QgCVT3M|-Jz?3OilqEjS za=NIwpt*l1=>q3jR9kSFLW-Sf)gX(*(wtJ~NA#j#Nn|i~TIRH37X>ZZ?<1hbS%St3 zE{}}O!fQA$GKvLPgkBtoOK_@DSizP3E+wbQ%HMG+&2dj&K?^2II#Mt-c&{|41+5oM zGrjvZ22)TMdV=Nzt^Ci_P$oR=5h)|-=*Y3bccjc+=x*e=fzoQr`2~YLvUGs_Wn0iG z66Bl#qN|AWWy^8&{Z^lX zv>De567IJVBr>D<>P6P+{S{lTb94}8BC4TLEB~7d5gi#Of7v@x(gmlF3_bv&MW3!k zJ1=98r;k!S4LU!?B2F)ihVlxZA8b`Hk7~@2Hd)SPwIK5b{^2B~ zS^3rUBtL6df7mwIF$QCsUHG}+x3Cyhs_>4C@d&q^*XdW`X4C!SF36p#^-<@P^8^_# zT`6!*W(E{~A=1XE7dz`wT;W}ct<<>*XIyyqfP2X)b26E~h4&121*FE=i$xZGG5arA zPrdWeERg%cA!bRV^CGUJ@Jl)J-m@m>1!igC_S_7Nu*EsXKo>qZI0Vw_JUI&F;czZx zRyya3fJX-0L#x}Iv6q5;MM+!d9A@$sK05F_RJzIeRDY1i26lmLbq-_Sg*&qbAZ?p- zp5#0+2$J=XvuO&*ld9W0om=rkg@O+Tnt{8iVb9)g;$AEKb!HdoyhO_W_ z)$RSxA0=n+fW_n-bWW3;7Y1Gna>(&vo`v5VD3j`KXEF*e{QkfbL5@0K!#oT34LlX( zc*V_(OyNsvh%LL~vIel1`(MF;2JMPpTmZIzU>ouxc12Ls@WX){z;f-1-4}zsqQ}Ut zn8+{}{wRDGc?EXG{kZMI1O0ylR%}Y z!Yu|nsA{jbE6$W=zM-&2yW;m3g8f)wO?Jg+n!tXdCP<52@eH<6_@>HhwJZKK5$vbR zMpoJtZMc)dLj%QUw%HYTR)GCd<*l zLeV`6DRlNoJzrEvvGV}KSag5nkBBaH8mEGMY2eTkWiBin39?-wHBKpGUi6^Wu=6uI zT(m3q zkSCR0uX8>w$TtTED9q|A(AThNI|pHHLO!-|_ypf<>@^={TGGAz9yNgg4rk zTz;)pSwA`}Q|88uORrmOjm}mLw`N>@=@r)K9Mz)WjHQZ_XEF=*=o1HA2Y0b^MH9$yg_Jt-H+!Q`Qb?KO z(B;ul)q)yUYVo~eq-i-p@s#$cva0R1BM7|40PVi-Zm&uxtV76`!2HG=h>RD7gnq}h2K~nLeTIvZroh5W@ zWIYsFJWSM(qn3-x+`yhp@%m~72z)23*NrH{AK0rEXXUs1z+UhVhOM;te9~_Xm8GWS z=1WNz+c`~SadZlYXrmv_&d7N4VmQvW zvxh*+37*8SYWP_mN2c&wC9ezHSUbB+vB~PG*e*$7GrYqtf_I!9UaEMn5ngH5XH$7~ zcLxh^sU4PA)Z_&3^>}xu@=6;_dq)rv16QQ6^CK_1FkGE!R|i{dQR{ZepP#Az0+(@(0Z$+Up;K++5IaOTdl_?D~4uMay9Si zrSO*75pgFu!Rz>4Cb2=L&Yi_l8z{FU8&vKck}L6nX-;__xfOQyS5)qQ@vBrV>$k2) z=A%_|$*Hha+Sy`HB^`Z1s_gzhS7m-BWklt&%qPki`GHz^C)@o+gCzq9H3HRkw%BdS z+I)~HcJ^u5U`}upzg6qeye#jgY%8l>pvKOgqBy1thv-|Dd0mgvzEsWLpM^e9Yea9y zX9cDj2`x>frqF!d;hbPA-Mc2IjAE;8 zHPx?alB%ZqbHqJd^COfPXw=9iJ0l=n548BhtB~jpU>&z^w~t~tx45I2|F%_fSV}MT z`x{~SoE^0b$7f!}G&@TGsf&a)kt)_s<5YP)NjCM16&o3dwb*upksx zDTH_wD=wU@0>A?2Y*w?v>i%<(R_rV-0hywZQs-+Tx<(;o&JQFOtJPtS^9ajO;Z&7V zuZ{`}rzz2m&Kwrk!a9XCIScTBh0_(%;{37$UORUd+O#RO^UVwD%ME7nSsxkO>Ptk!pxgSPl@ zWxOlv3$MtOJ->6-$q=t}#Zz0(hq$!DrK&*CIgvS7c-27h&=F_34C69|F4***=GFEJ$@ZCHeg4hHu% z`@?J;@8F<`q^`$V4$f5ZQq=kC91zC@Pw$Nb2`RQ>D}NuZU~oVG*+^4|)mus2VOyp5 zF`oyA2d)RLEXc^neATNiqmQZXQ4A)d@2TRIbDb*0WCR_#ZVpn za0{|ZGK0g+pkysHTYVohFzZqsvN?Mh!>mR9waUs*2HD)VmByg5X-tT$JN?qM%F?X6 zGAE0qYRo3w(PY$kQ$P z(lBY24)eM|x z5ohryOeLY`vPzAiu(v$Q ziOIy3th+c6fGJi89_?kDJ6eKy+xP#B|Y&MG$>lMBr<@oLf6y9XsKWF zCN97&M~apOWsmH9g@G-)T5XanXU3Tzt$LSbRR)S~%#iJN!;OO>-(pPlB&*>Em`l+o z4UXx5U+^^sKhbLVP*kzj;KQtjbMWa!>kQ7+_#|$u=(7fAYRsAjzTV(WjpOsdHyE6$ zkrR9g73HXNfSjOg9dm-Roy-YJ7fV+$FeMk}N|#GJaTz5S>-5?9ijqrodMZX%vPh@< z;hjsG4bMcvZ-6(qB;N{OPoF)F|a@CbrV8$f((opR@QlcVK3t=JapD*I3RDMr>3=NHT)f$gcq8 zn9mzWDL3kT|I?64^A~VEYQRuAODtW0%FZ6B)8EDV$A-1L${m=ISxNhqrytnIIF+aA z#lXJ(&Y?aQz&P3|N3mGWH);7e&5z6c3w<3I^v{HCq=cdy zNtpJPHXyllu&z5A$;f<0WXaiO#B=*UKNH01udOxzQPD%le>ZHU@)zFcm=&rZl#v<4 z!Kt#LexsJToKR2Y1sM9Dp{S;E*%*M2GU3IF3`@D*V=Z5`- zh%UVqA64Ke1x)+~^P-@jF!D36&VnMp-iVJQIxHyZ{}ve$=LweTf^*b4JyjDD6ijrb z0a5D~0Xab_pRa^X^4~+6*n=XaQ<%Ev=8W#NgyNoJ;{TILXb1NM8CL#o@bQDy{;aZK zLQdwD;7Y3#1{(!@4U3zQt7d(~dA(7P!CC7*;vw!m@%6NxIW9C$6&1=acfq@@aRoZm8aCtZ~z zMdVWbGGIyBW=<$zobiFJd5=1?B$Y{WoOd2bo#tSq`$4xix{&>&**eBgEpx{ zr~6ZA(z7}}Oxp3BPES9L^z%9$m`-|+PLHBvlfI+V`^S^stJ8lvm-Gud{U*L-()U!_ zgie!w9InJ%-9LA^?m;f zNuRgn>QeTs0d*k3MRHo5J$s1cP~oQm<7H}OpFd1Unf|DeGJYz~DtoSxoolEQ?_$`S ze8(c6rV2H4eeatPx`0*9_vay!k?Z_bkmG6^N1ag;Fm)>R7358$3qIRcS;cvCnXW#+ z#!B;kR}9w2R&KN`@6j@_z8b5^t4EbS$5z2XecsP1!TM>eA@A)1F#f|(BKAgl^%gxT z8Mgpp*!BxDufP|vGk;3c^2Go92H4u&W0k%^wu(e^^EQgqEZw#! zQa8X;@{vf*w*7a3)Hl%HV&7mpvJm&7CFgpQC*qWRLp;etF*Dy#-Iv_Fkr`ko*r5%K zK{W4E7l94a*eQ8S7!2Quwz@1aBJUQ~R^M=Ym{d?e8;(jFcCpj&on-q3$vRFj-#>)r+H-Wh3#24NvrZavSse;&U%|^;h`7mjj;*dHEI1;@bFQ5$x6CcL2}|~kw?invS}=Js$OK!31q&8Qf6ucAU^8f_ z>pZZDwm+L%=au=U+L_-cl~+~;d73@oEfiwL4dg%nsN=gT0^vHb_7OsVgDJF}d{Sl2q&E2CdA7eF#0kD8 z+do6(75gr=Grtp;x5$$x?!nh=50osiG4T^6%gZ5NX8Z5eC70NlE=pI<&evkQ;>fJL zKVJyb)w(6oyceaiRy%S_ROFQWQ3j4Dzz!l|;$N}qpxZZiHbR^ihU5D~C$5oEv?kt# zQ53sVBZ4ZA;!ZQMzz-?p)+xS-^EQ6Vts5m=xz7C+Ak)<)x9E)JORu%u8M)iYk>*Pk z+u^r63V3g^SooTxCFgmiG$P1K> zI9zqKY<+l<>&TTnyI(|wH_lGX!FCl=VCBnSI@@7?KctO+g=oWGF;vc2GX383aN`}^ zsNI(HuA+KRyJgAS`|Jt!5IKs$v76qFe1poLM%K(ZB-qJ~*#VL@^;DQ^ZCi5a^eC^> zbkv^bO=|BC9L8^C+l2Q9&^8HI(DqpgnxVDw#J8^fudn3gyN~VNM&MY_v~m z0m=05^csA-_?S($Y1)h4;5~LSg#b)i&${NXEIzs{gBQWp>}D<1bs07${RQF7 z!_f5d)EG7k-%PZvlK(E4hBgeB6rf(d^(K zqy;n2hv_lBL9_Cv;Jtj0XRA7cdGpT!`)YRN|6}dEqBz-4UVv*9OGcX}YM?uVTc%MY${`sZx2@&J@rH#lQzY%}ZYLfoNrSYqxxQo-3TVZn@i(f2UpOW(;06r ztq_gme+m60?r$rNw~83IrRQ;5X*0)o3`1HA|L>*ooyuqkI)hA>a3f8)?-U7FXi54` zm2guDC;Lv5a0?0N^_?!^))Fr4J43?lBwVlWObJ&?xTNna33rxoS>ID6+)ctw%!u_2 zKrQ^YO5-oOY`j%kB0-kv!tpLa9T^fv``gzMUSSI7j-+a*HY^k#`t}an>^i?*4f*GW z`HYXI<$e5-s#P7urcgSR-=tA)9yA8z?N(-7p5L!g{3K}2F)@dW^#QEtT{2V z{UVt@4Nz^Frf{@$%zlkJh$O?vMysuP0nTN0s7u-2U(yN6s!xu;3X9$ztDfj?k3CGg zsGg)gc|7YOW~J)Mg)897%es>8Sv^H#>Y2*5(0a%41M5}Ki05=fjpV9&rut*%=qU>q zo9bCD{!TqU_~Mf+}^={>MFO{{ut{238CfT63etaGRnMalXy269!!A0Y9pJ0!d7 z$|Z@stgCB*T-_o|(#v{$ILP|4Jdm=iO?1TSYnl{+w8;8Y6l~ChI%KUCnQIm4ob`yv zY*eIs)&`NePLU(BuBrmrRPQ-PlRYs|^|HqG1G!Z*QD%B~rnQ$<-x1%2I$Jk)y8JC+XsN!-S?gP-*y_8rG3RCdsz}}Y zXoL04f^RUS-OtI-$`BVTr(Rq3i*k-+K53EjGPTh%XFnBqVvd~lPRKbIN}E0j%Eg(_ zOJv6L`c%;QeXmbGK6v2u=}xDQd3~yAHlf$2fYCL>>$47TI@9YDM>_8Hd5!EQygp4S zWtP_`iw=|R^?3p(H0kwumq|DW;z*uh@cMM6P1GWVYU;u3GlyQ1@AWA>mfcaWPj4(% z+v~FforPYX&it$6_4!~D7WewZC{|sMbC>)MiEk)X*8A-dtt^u;=a31Ij%um+(ent_ zm!T$4n{9q4XX#fb!qmAyOk1Y4lix*ar$ttrAt%49vdMNv2^`HEkAT)K5DWHOoaHCR zb#)b-6_iV7GFg{liL98e_(x<-W;)9X6&af~mb_(UC^9jtFMT&FQ<0fj!v%>eGLP%N zm^&*Gc&OIXgfj@}FxbiT>@G^TK-Tq%ARbZwJy@vCE!8+` z;p?pFvo7%6=E`qB(6sn9pUs3@lqh)z#l5ej!uBQW#YZp`>LMjs-+A;;&;^qXG^2T0 zJCI8@P!G0VRt~)?S*$T-S_{dNMq;rRS@lUUS(>#U?h#q*8KaY>^#vK3bqn#yhWTQ{ zv8H(&2CJg1lJO+kdnlyp%m(piqa0)wyByqvOlC>JoL*9qpN|G9)kN!Mo!B3wq02#o ze2_+Y^I@YRhk)4IWF4};m6&qv(cMkY>|zp4I(I7iQd`ftJ)!0}YV_SUT}pUVfY!xS zQ~52K>-qOW%J91r1o+mNP&h9NI4AHv&=cA31@^CW^CSJ<|qyxFvD&BbgK|02w+d`OkHNeqj|;m6Im!1VhCDY&WBv+~8sjHZ`A^|( zPMb{L;Cm7QuY23O=As_ctr{ba;!Kdj&yq0T<$DrCmg}V{?jJGp{@BXS!u*T0q5FML zViH009)8t4KVm)~=1IaVM-s``eNSSj>^f|NUHb-Q`uK|U+)X=_`s706xT}QT@vyBXev(?-YcYZQv**T z;C1i+*G$|I@oq7d*9z~Kli^(wcoIS3(s|#2q#5R-M&+}@oXt>@yf5%124^!nEfc{J zj`<-<_g`UtNOJK^;7JTsot4JiA!2?2=0+feXODxqSImxOrQ!wj>kyA6 zego4XJs!FNwU9m@&(ve5ysXJ}LE^gPtC!WP7D%G*9%Re1uAc&uRd*xuY|@-b!trFV z6RhWSW{Y?oH&{j=x9r`Nf_Bd=h|55I^r=%#X6=00SKws70po9>Iw@sY>zU#+>*$!> zB1`uL>rD*Q_xt?Ax5vt_2<{Zyd9U92fiz8z?i(e}Y`bRE`VkX&~tD4!6Dz6jf zO7%S$sW4Uh>hn0~wSM6)$nOfd0S;W^BMC`H6Z@HkQGt4MlEhaH&qQFSrzy$PTsA9` zpW}FvU~L^@i@n^A)U6yJHWdy=LHoyC>-`&#;iz7=lEnIuFBs$k%-;qX$r?noTfYA68g=c1_d)yl!_6P zc>J`7mgqvEYEw{?RGc)1OpZ_$n#Z;304|AgWJkC5+PjS3Qd;g%g|Gv;jCK(B^nf>dma z)105v0#^!$CMc?oGZoD-X_uxNH&EiFeoe(A^sph1Ds_TT#YCp!DgF%I)j(=ziBPpk zX;ZZ&mxTNG)kb-}#A`L{AFbvA2PxRFZUx&VPAZJ%gJ5jEwf8lNVmjFyP^UobwZQ$RzfiS_jG0E$8@a4hZeCUVj7vMXulBm1h2uf;qpi@4X)eOY>cCpj^=PJ& zA)4=2N5LTvq-h%Vk8RA=Wi-al+GgZXPKQ2Iacpf`MN@5W(}b!`QM;c0QF~U*MSr*Q zdSW_x#MWj1KUj8Drixw{QER%csd}gpz2_Bs5`S+^iZ3<6^sNiU;?GB7bju@{#LG2z zA4gO-ew_hpY=dn)F?=GMN9_(adq=Vv-ssIUQS0L$%K-439_l0 zoW;OC$xbDMCC)amj1I7O^m0XbT12)vsCckBE#OYI?>Q2s$zJD8J!76}T-z>UuZl!W z#o41sC133#kFq;!<&@AlUr-${L{w`nJ1|v^>I=gefy#ZB;;<#WiOTM{u}H32X4Al| z1q8EmzLsFX^HaF|IIo~o7;;M~YQ?&aG{)oWN;B>hiJ1X6(PuihDmX?cdbK(A$5dQ_ zj=q~UmvbWto0`o?2fALzKQ(@Z#7o{yMT`;;7^&3jgsKg>;z|abPPXUm6skO+XU2S4 z4fP0Z-c{2w@gK%p|KV+6(E~j@KD|em8TzViJwHgC45_x!R(;bHxp6V=7qT;=a%RAE zircAUK|`TP_b~&WKMqP|L5CX3xt*9MMiv|?6rDIK?nZg9GBx{zh-%x!m^C5dM{2n? zd9OF;R$@a>b3SHlHZjv1ikSyo--`}=e!9Jw0+znNr_LQLB7x+vhbe zDV|oytY~MW28{_Vm9oldk=|7@W9DbjqVLeeD#p{ghfLCeq`638HnP*d7><@&ie5ss zt@$);Kd7Fq`iPolt%_xNOvbkCXQkrBSWLnHq0mNM#l?uw%IMzw7R-yJo9Bk6?j9UtkIvO8}?tJgZsBa-Gdg_*N$TK(SM0XC2?BP zql%c)hg;XCu|&C?&SdKBQK6;mE##W!P;ntWrh8*e{Wyt|)G6C#w5=W`N}e5&8BJ)_ z-EE6oozkPTgw6B?Qqh7No~ku#UX>eK$;g@6qiRGt1e`1&>D(Hg7W~({F};5=ULroUG zZsV?$IGKE{=dayh%sl3t&US5Av6oT|@1k8#j@E46v^aKP2#&|=u^mkuZ`*7%zPtjp z6-!Y*s7mGkI9%SE<38GG$BQ+eh4^T;RaMNv_QN}=RA-^8MQV&#_1z?D;$qwChYEu> z_%U*xI;f5ss$vkGX!r^Z&le8;BPGTEmv@v@+(|>}{Gc+dJ1h-`k1kA`{jX4e?0$*U zr1g(?vJuo+Os@L`@cQw22XY-{Mn5> zDdogU>4>cLnGodXZ7LYYQOT*sU(iVRcj&$P%U>j<+9I<8!dXB*N7f4)X>~TDxkFOwm; z7zk~y@weI}+4?gfkn#BEzNzkL^X#QUIhsY1xT{ej2YvpFu*o~i`T)UOATtR}735Qp zTL|0;@bIxyCAHoZLC-tRKNtEWM=yll&(W61*7J|+tvN;Wb&k*P>1NQGiisSx^Dghs&@hnfNS{XseqXa@u* zgB(v_G+;6-5BR2T=g3G~FtYz{qj11T3f9Vzr46)#K!I!SgK1fIzwD9?-*CJ#K5Nvv z-=bn>uKv(BgHlQClO#T96kdYH_*h4lt%mU1|J6~QGF4{zH0}zdbeJ~i__$GGB0b#i zNYrx5avqQ^F~Jc~UI%*#2nK-k4B6rUf)OBp5cm-&`KhDF6YWtpJ0MxqFh|y1e!P=s zCeq4J0J0?_D1@>d><%E1&ujic;E*6~K!#<~xq+ZN$Rz|W5acM3uL*nxlsx`7-<*<4 zY#BPUI_La8ip1U{rW@mB7r@^KGM>N*K(=rNUqV?9whYiFeU8)OnJAPUResZ0ctBK2 zlYSKbM*wZo9~1aM5NXn73^65u3FkUh;#z9$Mi*#_EV&8RovE~TOOCsTryYy>oy1H; zfxNXMV;-$DVhd6sEU&-Vqa2`$%=xg%+nCmC!tZyrW|tYv^&?Z#l={f(7S+c=Nw8t9 zbEQ7I5+mV3-3Pd$QR!!Ae=#|^@;XxJ#!}&rxCk#5VjZl%qOLi!nS8bK z|3>K_0<`iYksu|KUirt1j8y*n@V^U~@U_3F{MZLB^Rhv{4jHxO4mXI1Ejx&9I+$4K zq@|SiDI?{JJ}_@$&C{Ykh@uDiGIWa4k?ipQ!y>$MAdNShp+rsfNGeTuQ~e<}JB_zn z#Jki>(;M9-HSvv(SC%f}!)byf;GZYCkf{Ol)qc}AXSz|XCWMs!{LdRDJ|(HKO<-H$ z*jRn)FK7xepyzu)Y^{sUsb=3tbH`ASlj2Fva#Qtz!(H(M#`fz7P1m# zG402mb(5sHVJjo9)W_*#pSWnL@>`=+kBN#9JCr8~^KB$EEhePNc@ zez@qziLNu&6+gPlrpB7=RJjItyc3Z5zRC*tGT&o~8L321aZFO8ago--@10R&=cnm7 z?{FQbrF2~Dm^P#1_QRRZPRmk96Wf`_x&Ls^OAhD!B8~H3DNYj)T?-M9HQvo3;(^C! zr6H!JcwH4ZX6+c$O^zAdwk=NUYQ3BseT-EmP5F77Mo#65$9g8DqSZ%;GuVoz+6)*u zY5ojo!-O^idPB`F3iCN1-eWv6k2^*Nc;l+U!iTE2yLxioV_3y9|Gv| zV>hAI-$NN52Y*;-=btFF#zM=kh1&#ln?LDHQ*>ogo_87qK0s)4f3WB(y$E&&_-vqL z3>iDA0U6@wnFCn8XlLRXRzdzuV!nXo6Chh6f`w2j@^~pLP>1BHIG~a*)vkMgiHv6>NecuVXqB zi03#B(#lXO6VAsjx1Q-BN;@U?iBj<}9zfzgKqr}qEl3H(LU=slKyW|Z{8vse{sw<5-;1ctUykNL!SN5`#NbE&o z-h%5jz<(kgxfi6cHkYCR{}zy=2@CcmwAaF9yvjBi51qN?n*#Qx{JU=f{2HCh`{%N z$&f0JbO)(Wnbl@8*ZSd8qE70&dmR?NfYx^;6Q*R`q^_IxpB2?jnOqU<`TJ>PAg#mxX5u)P-!JkBz~Jr;?EQF zAqjr~_>Y3rEn++d{2d_I5V%^9n?ar-@CcAC^1*9R`qpI!9S9D993*f6=>IjyyQQ|~ z`+pDekV9Jh29ie?TR91t-$DLXkJs7)L4x(v(E4Zuf;u425|DSNl)U;0OHQYNGd!e= zPDrddnLPbOOv?t`M+E$@K;-o~!vr}1vVefR?>AdSg5Xo%$ZeAKfKxgxrBp_WqLUJz zMoM3UX&<0UbBfUcsM4+kItoEVRH?k!V-A2)X`-h&r7Vu<@I@076DA@mt>PY-ZUr)B zofEOe%re+y7NktJ6(Z&^6^fBJ`Ne)o)|MRw z`pjJ}b=kO8|D|R)Y%EHu8`{>u@Q@0r4pTHOw>^zPw`^yB$l=EmaH|y` zX7r1_m=^PPdQAAbGgE3;YS1gbrYSx=0~LAwvc9c+xhPR*imDC1^G2K4TW$;!|F_yk zu$(!pT1Cqebe!!nAgrez&KgxOtg*GXOK#6~wvu(orItAn6sKI~H7+`v#(J~UMNVT6 zIQlJHS*=-mcxJ5xE>CK)wE(tP9NYVh$X_{eSsX{Hf1Va!iy;mx+QoCtf-Szy^-g`Uw$yvy>t*$2tTwne9_IT{}t)cDbPg_7(*?Y?FZ&9(^{H@*> zkbiz#yi3b@T;QD?^RsP!qpeX{O^lsQd;2HF$$h7rgtHqmmIKwfj4-+H3=|8@2R{Yq zHf{cVllvdtZ~g%M6`**T@0p#aFiiKAB$8f(T(WRJCO!wq9CN@oN4P{ivkzWaD$bcM zvj#}rS;Pm6__H7G7ewMhkdY|~9+)sWQ@z>)k%*6TVt<>q)zUO+fl1zU$Q7Dqt*4971Q0^;X6MD7fj z%+oN~N=IP`C9k>pUhO7W!(U3&Nr;aIvLz;14dr#Pmw@0Jke(Q<5(sVrd4#~7f@}ww zPE(r<1iL^s6WAok9*{i*o&@^83ew_N&&W?F+ecFQ*dqDZ5k5VGY{)QO*ce9x&~Y(h zV_(S$q^2;&#d}0XhUsDO4*^WL&si{X`LU{LEOvZ5m0%P~+425l{!B6~W;`7wbAkB# zj$O_8xkJ>9jm7zoC^aGJp7P6mAUqju>KtE#rmF#UjvpuRh#=w||4QH|z^Jx^PJdvc zP`2tq+k@e@NL!C4v}r)KO(Za05Ycu$folOfE!A-*paF|%cZEmHB0n-qz6a0SfKE#d zQfxfmQ!_2qZHfy4sQDwFz|@3n&SY9@D|*HJ$G|VIR59^VSI1(0mz{Pl9XWj+d9Q^)Jo6l$tZ9_ssL-GoJC$@t@NzH zMAdFauL5F|9gkcwn(CCE2mQA+`nfgqaF9zz_$34InlMUe)h@el%ckgPon~~tHNCEJ z$|@ym{F3y&I;Sp}VRGwxB`1Nz?sXh;UFN@<9Q#(cf96~MaJP%z!E7q2>c*BVMoKnO zm}pRrnQ9py{|GyyGG5=AOYR7oxmUs$l{H9(WQ`=h+{RwWR3;D2wfr4i#wFcL3QVij zxY@Z|?PT&U^fo%!Z#_~5`|^uM5_z*uDCIw}BawTv&PL@QOqOtGnR3e4%S3Q=-M%zjr@7qSz8O4^^=a-PorHJ%Zbv8g78>RnX&%*EdkRNaQL%s;oC}Pc zei|g*xY_}FH!y2~$sM8(papBUEbS@NXzozWXMkVR^QCIR^$Lz}A4v8+YxbHcTG2HIrJfuLyLbYKQBSr+)`~4Cta( zJG!A*?eApfX@G4hlY5N4^WTb22h5V4wA>N8lO`t*UF1ov+>!d!)hyyC0bS(r-P}=H zn9so95t>%Su}V9)H8T^?MJr^q(z4oc!UpYpFPD7gZuIZ}!wvmE5AsYChp^-fX+YC* z#-2t$X*!s_C*&>#YS#ntv-y+VmIeP>fsAX%p*P_72f3EORY10A2rhzh5bQG`xC&%GK9cM>23tUWBk(=YbsNY;;lGE# zbo#+bK(Gtsc>+%f@;pdg$|_d^!mC_9*Bu@8T6$<~?ZNXhoKH;M*`fMH$LX0Z=+C`A zJa`%zm7#h%iY5X&HolQ!+Xq`}1@SlH?*nvfjCcZ56Owf3?hMs$iC!71<2ZB~0Q+FZ z_V?6g$tu|_F^y$qQ}(B=FLtF|s6sUH%bgu=nd|b{9zAV=da~$hl@f_U><#EImEYsx z9SvxHBQE;9lMEt$^1DjXko+!z{~W-CM>@9u$*+17t5b;^ZWZJ%2=nJ5FW$th$Zn0& zjMxGbh0^Db-=Z|%hyPto^P9tMpoRQ6RkWIrEu~b- zsUjnVlxLiK0w!$b9abr=yZT z;Zw+K(;f-aa6p?juawaI(Gg)wHI>!GuLRVJ5l>)hLMo(9`##YtR(u-%Cjk@BNGp_c zu?Dzwd=rIqHwo_CYr?$wsF0$4f%s>DmM*^wyJ>)yZUlj0fIT7Ikjixw>R>Zua!<~= zLbOTSTLb^)fEFTR3``V?I}vFLi$z8X@euqENIKzTE{((6yEgadQ-vwx8f)%(3A4Z@ zc>vLOqa-7?n5hZbG$qNeq9o-t=S6@CYp2;wCVq9ErE|A;5j7#EBK_sANGypG?}d_{ zfR;BBiKT?o``S#Ak@8N4f1)Nn@-GsPed=cA34>{A$dD^GAdb_GhBm*trsIvY$L6DC z@@2IxbFSx&ld0Ckirm;KTLy1h4brP((aXUm%1_2=VVdrGUDpntskcy* z&se)*X-4C*Cbr7Oo%En*df7O}2Oa6xEM=r0i^mk-?wHio+~W{&H77d>QjUG-=)EZ9 zMd_NzgXDy2h@I}LTz1m7S)SNhO^0mP9AvI^Z1+>DJrSD>?C}p=jGhP$K7S+)KTjQ> ziFas`%?tJ)j*l#tdVbvpj=DwSk0gRG+`X(W@{X$9disv4mDJh_pxaa&OP%%~2D=mJ za(*>j^>u$>3_A(K0qeKeEr1ump98wccV%*m^}8~DcajIr_tbgn=kImd(gyF{X*0)? zCL57niEqzv4PL&T&*V%A@-=F%Z2_UEj{zf?8|rewQoH>_9Z}TH+?8byRG}{!}YKYb;_5OcYA5vCBn9YHT|E zQvnkma(bg0!!q1_a75|jyO0r6vQ&y+=jd_*6Yg|~Z2sB7P1a5JCWdG!lUeUI$K<6# zc|^%C@m8p_pH2;zk(Y}Bof=*s@SJ4Mw0fC(OgvsF_VG?z%<5$o^u*&GgwSTfQ4;Pm zkZ^e``cY!Ht{BS2%TGM1HDCs3bwukzUH?qn1}DGW;+FCAHhp=atJq+nE_@1DoMZsH z`xPwgD3yIT_(q{UFitcbDYUbX;AjBQlk;Ga`ui_|KMVBiGzz{m3q&{1K;Le?u%0U$ zK|Nc~#Dlem&g*%AS`5xE-a|fuwab=vd83oyx?6ctFA4|rJPW5WI7fFCgSD%c_I#rR z{9K2xS=v)xkrOP@p(0=u?I|zD36_*e4t3e|I5iV2>1J`3O`CGS&vX1cmiCml-2~@p z$z{MFC?iEM)$>&shuXxPDK{d(X@eb_z$x}654 zuG|K=2fyfne?q$t{4PLBb-$LXV_ybCKuUGLmg*(2zXQb`u;u;d5XE!SPt=xbOwa@apw|Fr zKC-O8p~5!T1kV&pO-zMlG7vk(vB|TRO<_rmS6o($o#`Uw5x!ojNKQl@U3SZP^FPIJ z?4oWx}FS-wg;lf=nbZ9w@tvF(;DGNQGifKCfQV-wek_ST_I| z=LwgXRAeu7yAdcn;ONm-ieAODgHGYvFV4$|_h~BsDiVJ*SYj$VH=(9XE+39vDzjr5 z+4`VaxSXjRwT}T^PGR~B4m8S!R^6YgM}SoShg$vDgIz2Xs{cc+{&Sg-76IK(n{I-S zl<8H_XMy51q?5@g*+p7^@SW~X%%#Q62D+VMg75XgjN8C&5z1+-NQ3W-h4~fmy+Hc~ zCip?yQgL-H+9IttpLF7$zDuClAUYFJAhrI<4r{x>?1MAN_S$N--$4BJfL43N6SDsc zkE{0Qh?XarvO5S-s$IU6@D-rde)3>0Wdic+DAj(VOUW~NlG69(TFuYG@-&dGM5*hq z!M*@GN?k`nF%^pHx5*Ih;Q;c}CiPmX?M9)Pjm6%@i?OAqH5ieBfHtXl1m*zRq#~&d z6NMuAD9PJly%lf?9&`z^I&vY5qrc$O+FwQqzJ$PDKok6hz>k0?7)izck9?G%9Qz&t z(1zUDFm%q&BB5 zV`zM^kc^jk4fCnlS!84ez=Hxoxu?zbO3=%NM4K-6?3e~B-y$wPfR4Q+mOsq|tvzjs zwegEWfwy<6nT)suQV{wiFP)&?k985g*?~AZi(8WotvK<|b^+NMBaP%EumgZLl1MUC z$;g12jBFvmFE+>N77O-6t0YXP2v<6~Ge&If0oe+2=Fl;}Lq2C#=VOjvtI1TAS5X&p zv_owxK+Mt8nqwyDR3TxGp4J>Ug38B#i|3)^Ia1AEXoCLM9M4041~3^?^w_ z=7+B0?j)~fNFL2>1!!}sB+wqv<`gLiQ>r2bku{Eobu=K&$)zU77=i9+NNnrq))>wR zG-cCksf)oa)!&p0Fo+ym1|vN6FqfeDEI>;War-6;IWZHA^6F+$lGMCg8Na1_pot(j=qnE=+VR=1LyNDaM-g!j zDArc8F%p-T&G5~aj`CMF>Wbp>F2SO>yd-e&U9~CxRCU)6uCuCJ*nha|ljy@2cr&KJ z(M!VKaouKtoLWb`x7?950{~5Lkxr`_{m^tmU3uxCC%$Fd1@qxOp~W6i*UA$!kJ9(n zd%IGxqnb!;dB}!Oa9n}V%ePD>e0<@PgwcGF{++?!!FwhVQKc)!4i7@$x6A$`r)R>b zmvn=w7UJ}+B4f(|yRfM0F0?)1PXe>#s%>zDUbXetj_r~qGfyvl(NEn`Y!Lz_oi8(H zg-eC|SOstl$@$j`8r?`@M#3^2@cV~%zflZbd0jwgZmlaAwO z%oTglA+pBRgVsiuR&9?X=RlWsy@jSbK7Rw3=PJ7V*Z^8vt=u}t(|>?2-;rR@PS>k@!Jh<5 zTCh(SWi!LbW@*qNH@t*8ovA|L*+U-jbr+tNRU!Uqq_K?c}$tD~F~; zm2T6_KfE;7;h>e0HgY~O+BmNIZ!{*>>}TH1FgV9C%agjdDl^Y@JeFdXvtJfqj!C-0 z{k6E7+-@Q3JuW8e8(r4JLupx8i3?IW zIV{_z#UqI9L;hCegC{`B$J5P$SW}m(6n`19s%Ljf5Bs<~>^`m(ztS;F$u=mn%qAv2 z(9vafFfI0?Kd&3pp(OSq$RH9r3W&e%_+-Qge{@J{WY`~>!o*vAYYRTJ8mTT0QSJ7s z_SvrFp{XXJpi{#eFQvNWs`hfyIS;T`wF&GKM6POgoxpu&K(A^~A}|ifR(ZLq{VdpH zfL_&Ze-a%L(5u@2An**(U#@CDiGQJj|8*mY4kdlcSw44#t5*gWmn+pGAz=Tm=(l_8T=P(|<;_}7Q4VWi$y`MNs zq|YL1HIgfV*xQarhTW;e%Fw$6rH7ogqv05u$&}&vdKW?E;uXrx^QT0qxLHr5@JS$B zV$>h`0_-zD2jtv|IFA73loO1|P&J_z62~u-`{&hClVY156Itp4YMV%go4(G>ZU8o7 zo7N&DwmAv@@qh`pIJU?(=Ru4wb!C=K$oK|_$nI}!uq&Lz%txD8<6M{~JGyQWpX-pu z)yj}QZO8)5n2vH_`=sOIQifQgYp5q}D%1HL*rbrze<2YsC@a}S^v zL{}rZ9|`i1ubZSpq#&8^`+k$$Rg(!lZ+Y0syLlw&Mw`-sT~y+x%dTVx4W%1>y|Qu? zmh1rJYogcNL`zXpAIRs{M&@Rl`grisLYuaDy2-r3Zy<_xLwFd-Jn~KwyVfI5)UL^U z6w(cT*_T&PXU7uNWD3(XkS#I61SqS(mI1*Gkgo}RCdhn{>Zy!efL>3JbSBI)(b+0% z6)J1X^>kmZrT-1S2LQdE9`R$f0?-exbfu9!3RBYS6L#Djg{$_Dkz||1(^9;niRpt#4ls~?NPDEe~;0t8~fh&P*5eQmB z`4a3yAm{>e49<6dps_5?znE2XsxAmlBCW*-j+2 zCi@NELx7HfU1wrlK*zv^1Wp4eql|&YPM2?XOX2#5{V1CbdwXGe7SIPABDNUWpkC#W+U0S{uw9f!QZ#&R(I>qwR<&&MC( zqUjT)p1I9WG^Ca51M(wC`Dj2NkUxXK0w7!1^a1&eU>g8ks}FE$JQIa-oZWmLkoQET zOd?Of{}`aQ`-H$pg2;L{c?vBMFkxS(>aQM<*O7IKV+hPd$?`pZs74)z^dLY-)`%xG zQ3&(uPYisfo(`{gJ_>dW9dqz*G` z<~rXW(m(=N5@;lWHNJ1^@9IIQza85;>_;iTsC{~yE+S`n^5`clI`rQ~$!-Jk?y69t z4u4-j_yjnjr&I899l3T$lNj{d)l>$@{S-OGo6fAXZ-VpoN|AN6tn?d;5o*aLHKKL! zZn$XD96|KxO9t;wwpgaY`NzZchy7lTcMi&}l0UqbHA?>QbhTS&9s`1}izZRwSrtPH z#DH18-)Yo3mhhXZz-syW2BKV#o)95Ta>GK4y-7)P+w``Gn4JTl%Tuzo(`6mvWWj1= zL7eOhDcQQ|vJP>wU^TKJPBw!Q+dNmK%R0o#g4M`^IN2jpvdzE-^} z8KKYY+m~{+U3_jo#w7Llxu@&fI=ra(b5CDsZzt|UTs~>=@kk_}bIC1QA2pBXY;v_~ z%Pjkx*Fkb8X+K|+_TOFF?}>)LyRTwkD^ETDGl}!|F|NFX%C7RC0*#WAxxcmA`znug= zL1@oPyL_d+egbWULE~l zE*EhCy(*gdmR=QYd^+nofXe}yZ)=yC0(K%Wu%ME}cY6MYk8K%>tAAi7y%t_->_a_a z`a67216|}{mCTRy9IALeTtFAu{muMXX%~Vo0g88^V#5X^&y_LZ>k_fRej;9!Nb@5D zu0)PLiOAo|WI!xkKm-t*@rliaOg&#+qtj1}gKF7}_lXbBbMe!;RV6feqRC#W)+=$f zKegiAWG9u(pXwh?LOP8ciF7rPEfG4G%mCv-7dw|+L0~mN77ASwa)o3%;*tzbbF8(a zOS8K~>2ig^#=1JZsJcoWvhQMumHQ#%2NKDOnvH*naCmL|d5iPDsX zQyd~+>J&w`hGc4vb#qlASH=2LKB8k>N8{$zco!oFA*1FxWU^&JgNc>?%bHrUa=Fsk zvfTYY*%=iqdW-Bdcf5Lyt9Zmu9Qj;NMJz0$BBt3hBDv@E7Eru{*bIr4bx`Jful9Xp zwB91tgFwbfcd;w=nN8VCg^p93!hV*Qf9N_Y<0{yuz&{D_SAtwjV5K1EfZRjiZb9aP zyh`8|Ah-eKHv)$M-Br#1JW3}D6}WWbUBb&H8F9uspGoTkv;$2bFisG0#x@ez09b8} zowmS4q3lRo*YMp)+jHa1j@pf0=+|&OF zo1EblYqOn+@N__%?G*$r6GWQr{RHj>vV~vU?mxla1hnnG=JXZ0MAmGAOWJOovsl&v z@wd~P+b0f@w(HuhX{>8w*9tt-#)aJ6AZz4zQMyn%l{|DP39GL_8mcPh5)vMtnq3|2e}EtwLqpAdX6hH$G|AaT;tUrb%V2Oy>nO#0on+T zCooD7X#{HsTnc21j5dN7!JY$J$N*OMJ^g00tN8j19(912pH`4diDl^LeRzir0-P5) zCf&;%?~tfu}T7hQ-=0eyUEpYY4$ zL+?R(70}0rMlHv`2K4cv8wp$oguZhT*11t%oeX!`+j^tM)zlKl>6sBSI^FIi5;u`k zX=wjJ)4u?%sfaHyQ7DEA`AJQEzZDs&sb(wKCIn2_J+0A2gK(xe3{Sh-Vvv)zvE0jP zd^6JGBn(AzFrZGtJOZZ)B2K~v0_y}3Ct)9fe*oE{Ks|+@!F~YLQ+O@a_@YpOW|YaQ zOZc#qPP%F3MchgOw40tl;CMl#n_ffUYQSpy%xMcu6v~dYbqzBl=c4Ut_@5L7;wk)# zz-NMpw&p8Q1eox7r>UmXr#uDQYjWKb#SJ&H%nC1Yqv)5qn1O~VfOh(bFEn|$2x9+* z!YB6M3eRRqE!M^T|ELEo66Oi6eak$s%QCySDV*+NfG((Wip?g7H?wx)28_qhsDfwF&C`nrg#*?+kHf*zGv0zJgDofuy;Z14mI&2=MxiXE_w0dkT6}iZs8+<~FZFL>KsI#m>+p=;#bAWsTv@J{F z#a(`>8nSkIDXH&tdRw(VoM+W>VJoXsB-k z@yi^mw4WokIz-N@v1B4>6FmiCT76O<^)v0E&}(S3mYdl`w6$3(<(S#2Rv~nGGhF7( z>ibB$(@ijz?+J)JB@`2$e&RlxC7ea6eA=Vw^lXZ0wlYmR)iFgJO{|JJ8p}y$quMB( zkaOTptIK7YQoeXcRLTjOuV$;T4$xRmvA%cgHK8mkZ!#w(2Hs9Dmc!0BV1EsW|KZr> zP}6R}`;33?mm~v|!<`}|L&Wb0$Q1z{t|K-MO`HJb*Pjd*H;If47hNu<=m770aBMOx z*p!M=DRq#Pri8^5Oj8<<#8^O6ir9P;h0;^X5gAEo9sE}UCO+-|q|_>v(nLvVYPdqA zq)fYzcnHvxA~x=+If3+)&J-C*={xwp1x$Q+dP=b`oh{}4=hwsR2E?KL9GAR2{Xt9D z4dWw@Pm6%r?jpBplR*{-+s-S;J#Ed28qG$|D(?>v`k6TPF;{w$N(OeNaS znQJneYm)7!6KqjWIO&52O7GhbNwbGWPCP!&t41P0D*p&idQWhnQA#7%b!Mtp2+YYa?5j@pf$_ zCv9G?E8(MLaB6ew6vFNGI$WDA8tx+>scSEmsH`W+n8~ZN;K|J?+X%vMjQvNq{@`x9 zwQ%NY&YN9=WdS`EYvH(Am@x*$^TGizYXg1@me&Anz!95oqELDR?k+OYfb&+f#SPFY zo!**Gc|T*` zmTK}Z<+76yWv3aUe8|_F0&z0H-R0!gn9gSVL0pl^%PKs{GQcEv#B{ClFogSsaj{A6jA;u$2>Kr&^9dOHJz@*NdxS_Q zd4H_n`FqIZS40(G&bBh(zYlU2finep1!OCM&44Z#j!tRVhlczQ+ zD_D;Jx?nhwz!*Vf!EhCUwSvfk;c)^F1KFZU7Yqe!Xdr+t7>*+_SP)q-d`#eC$2zR;s{?CG8nO#V+CX!#QhvO1w@S}UQUBq~j z3vX#4FA|ZT^pec&E{3OES%zhJj-hYo+VV3|X`_7RN|7 zr4PDR#6_TgQUTjybuL4x?n>8U2+S6c7~Pc~4mJ?bUFk?NrjpUF^k$+r0{p_wF5$n} zm9D>`AE|v1=vdOB%x3T?*LA#2;X|}gIgEs*wKTW`sC)y+lZzh^drDhA@hV;x0p!Wk za}b9LaT|o&fWl59{$Wrcx)MRPdsZ%4SDNuhfeyUhIwo@AeHn8=)G0vjv-MawX@(FQ zibi>SEq~z|^Ms%$qZcAJ0mzrPV?k^sT=mwoje50h=^q99DCeMSxK9QoFUwZ-dV<<) z1H&1Rj5p-Z$3Z>$?9wL?{sHvb?@Upu7UY#HJ7MZMkw4|JP(I?c_gW7Bf%uz_b3cZR zeeRGW2T~YBWX81*aa5Y{8y6|>uaby!(XHDo>sUXbx9Ob-J3@`)46EgyGCT_`GT z>Yh{Pbu=G9huDZKNb#o+v7w|PgLxbHTLC6q;M7J7FYQ#iTe8^2a400rpfr}aOvJ?j zIu_Amq9h}}n5hYA*>nxKI7)Ig{1;_a!zPLvcYWBD?(YKjjcc@Ll~ z&4@2BJKz)7@%<>3qD>5S0Najfsr*Q^tIcqJ8a-9RvOBalm3kCvYKvi#J!0X-QBICV z`!GPw9dYt%E24@%AZ0hP#II3`8FSb04@3t+-}|C6GWQLifgEtO&vYEG2=k~y)&S5fN6qh&Op7LGUrQxmc>V&ONU z)X#zcEP&^uTq2Q$7eLe={7EYHC{$z>nPjV2qUr(4A$ulU&>}nW+JpBHcv=wY!LiNo z3&f_nAwZr3xd1`hk-G`czmd!?iJ)cb9S%GP5)G*O9EjWi<`oVPa|8Gyr$^3AH(EV% zR1ka4(d8qDPdK`J3FSa{(Vkapr3t^8CS2;8SRFF=qte-L@AsW=3mfa{qUC#D^&ix{ zdmZf#hCNv@v11*J>|A!UEV?MQua1aXx_lY$7#DjUgX|AZN-lTC>o{Y}r%z(t9P&6b z>~&5;U%izGqT;B{3~~C4jdK!`$%n0kWYWGd;yM>8Ur0RY)ajZz5j1u$)cl_+7^`=2 zr@40dQ?(rpmXKD>GDAR((5bH(o*NA(uNK)|OlZoc|_e%LhWGOz0QGbta&5;sU%t6@8ubcO-`Qji4%P8Vb$$OZ!I zf#4dD#|Z2Kteem$rMp_Hcv}#5e*`IU6F!6K0H7E3BEFaz0bj~B=y5Yk4?t}a@no1N z6y;M!(lXI2HdzJ#MSuwh9c~l51IcNc_%F*OJNE?Pvr%?-BC-w8>`ZXkwtT7Vd_(+K zfMzG+iJ2%AII~H1wny1%%_e6{fOnuDo*g|$u~v#=c=A=UwLJ*O(@51yV-XzzXtqvI zWy?^Bscbz=yllN{wj!RGsR`M9Nwx-vUa`_a`2PcNqVPZ2S|r@D-LCf@M?wn`a-K%) z)inBQOXr4Y?5i~L))YD3&1F~{;7XT}jESi8_!h}%H!O?$I?B~gOX-iFqr;78^{+b# zo6NR@N_C-a#4OzO=WR+n77Z%1?dqZatt=%0yLy;yR}ZrxOcSE69%kFs!($L00t#hk zBYA3|*Twy{GiCjHnjJlA-Nt$XunUa2L4kbLE)h(03yjz-mmir(pMEqNB;}E^)I^$} zK9NR(a*1UvpNTlv$;-Vaxod6B%;=9%<5#;#S=fayIV5$y+aY!9XVI-Wd)I$?}^AlL+p}fJOvsH|H z3&@At^SE*oA|7B#7buI6R3|pY9T)DhW-##0) zow`9QnX>i7+>-? zPW1tZR_p||08C@~rr?8)(@TY%h(V_7lgP*?1&@J$INC@Y4HQu znU~FLln@Gj1bG_rlfvg^dgfaK-w2WfX~gbODG<~J8BSoRAdNxJA#fHD#+~(2!_vcV zS<9;jd-G2b!XjePp$Orv>$6hGxHRY9bgd*qJIGzomB2PqxJ{Bg5+q{>%K;EIVQ-hL zXQEKb9B<{ce#)6}2O{?Xrm-%ybTeyN9P;Lj?3KTq^riGV<5TDOT@Ba((FT{Tj`0s%Xq&xQm{Cyy639JOH zzMr7vve1kJrLoTPye?<4r;PK=jj8NKp{A~&`9}tMk4auv!Zr@UF@S##$Vvh$fHF~V zyHj9Np@xxyJxP__4(ql^_B{gs1aL6=ImvZsd4q&x#3WmIZ7!mKj7CI}&?A8hQW>sJ zV$c0K6Q%FTh?&WR7XUhPMr?e6(+NaXEl$u-k&%(J5B$Akq6|NDZ0YWEj8A4r!bZ+d z7b9aQXA_(5=yI25t)=S~(AY8;A?wZuoIrFDRTh6Z<>4!iXBfRm6xzd5ao59+uCd8# zTB0IR;&dUg-o>+p=R$2Hd;F4}gYXnaK()kFN;EmLM8p}SWMWoCx1Ej?8L`C0@UK)$ zJmyqKmJoL^cB>nG#Lc-E8L1ch&b>@%CKI5M}w+?P?(zeZ^07YhCX-=NZOK{dfCQ^rW4;4m!IwbH(Fad=E2{yd@eI zomTFpfOi8;c}+Aloux7!WO)e9PB*!Bx|s!W29Q5@4pT<1oo?1ZxD?2cZ|D5(Qu9)w z$gIiyAbgcP>W6gXH3%;N`puhf349}nd`PD*D{5J`>*sE&2~+`AcXlEgGonyRckLi- zPpMS*=ZDp*2id@_XL? zW8a|J-yR})B^#H1Z#bXJeQ}2KMdUooa=%!xl zcYkjm;Ne9J)(80B*Z0o(YbV+|`N767M9pb{bpd|x)dj$ZwjRKbet~3@XK#ejkGjgf%Toibv@MRx?)Gw2*^l~d#o_D3LbepJmHnvSOI)v(EYBJPwz41d zbvx-C2xkC=N0yMn6SmsKl`HJfSP9PATeVakolWlc^;XR*NbC`*p>1G#(mt9Lto`jg zTd_|?6>Hp*OMS5KT)wH;SCIOLpZnTBs3h^hhO>(52dEGBGJz)rQ6KCv?uG;EKtvh> z6NN&x1lk^HI_CvM@xjE+&ji#5>qel9AmW2fBQOOBkG|X1;{Q({ zYz?_nAM9FESSv}24;JobUmZkEc#lh#&)m9D${cUyY^P*u!tID`15C*|cvrg|r*96B zK=Qr9aWBGmDKW3XvmeNoh+sXG-@$$Yf*V1GJ;~l15NrcEoxof`-MUC+ETuf^yjee% zbQSgD)~$zq9bm#QTozK+nwRoeN9iSe^#d+v|e6(;CPYF7@{A1-lziZ!glqUKsHy zZ!hB+W-55p+dBnhI-uU({RHj=tUmGfDw$hb1BZKif4Gw4y}D3S%`S=H?cF7L6>slc z1kVQ4+q;v%?SOiFp(`I&bfJck0_W}Rhjm{hYnTTA0KtLS;`qhedxnH$Y*cUW78miC z-rmm;aE{+5UM5PXPs;*KqgRDdAp66I9>s zC;ej~*TYjO6mMk!$Or;Q1KGk7oCM`eumymgZTWB84Dgu<7s_@y^8Y9fi^!9nZEc5t z8=$*AZxGloh@5TJW~!_O*q4)3q}1&rIo~e{PmWZKgy|R{TVhntBCv&k>e)nKBR~cJ z;)*qpsyGjEs)8McJ%P`dRv@Zj}pk#%SIx}UO_ zw4Md*^g6@W{ghIs>$-rQUT65~sm_Hk3n5s zQO3-a1PXT@N8l7+p9z%nyX4ja2(#^!`y(9R3ulWgB^Fka=Z1{p4FH|6=hz8*BDl<3 z$txQ1=Tu)`NBs=h+-LV?-_kGQ<>rTw@Kyh~z>iSW9s* z<7Yp~OyJ)P+XDDcmyvt}$o&NF1%jO*|0M9HAdiF8VPMGzg1sQe5*P|(JpLKyBpaf1 zqEIYKXRMz%QPO!CwpZbQ1u(HJCm>gH77#7{cmecMNB?;s8(fyI>yykyMjk1wFtH;X z$1S{*^FAkO-z|%Ld~8~*$+&_vcRET<$mPr=ul5t2829`wupJ^>KLWvBAdMMriUIqk zETjQx-`1p0g~;>sHa&VE8bR`Wy)D&-S)!qM?Rr}(&)3^h??QM1 z$k#!;z^1a3LF^_V|7?>iunVYTai5P77g}>u;OmPeRztWL&|Y8L_WBpV?-3fOvW32$ z%Kkv>{t8IG$M6PGk7duIil+g|UX%G#$Br#yvC1%@c;7G71H)?4>&l-VzCLFDFJe9e z3i{pRnY;dD3(Ot9Uty{83;c5+cX*xF4)~{m4?5af0sTZDsE zP>vzBp+Imo$Q1-u0Q$nXD5Y3hnqp#9wQZ1?D=PIvtPJyiAY(FQ8#WTkOogI>M1&p} zAz1@7MW`{LYk=Vdh61_wws9XM+=Hz*02Z-b^h2 z8*3XmfT)EOi@ii}@FO?5#9w#Oa=H-vDUG*h#Jf1+4SO7{QKf3OL{TPodQ=6&@UpF_ zJ_!G?Q`wI%kFQj^b&%?(>AE#a>a5g5C*#thpN*osN6Ez+$j2-BP3gyz3pJ_5k8^ZA z{5sPiHAgRzdL*?rKXo0&Gf_yj@+aBQPxPV!wKj|1VU7ZfzNIkRm6W&sxKLD^N#2pM zU4-O`{hkQ)0Q6eqDFjXebnLAWs|ne3qbrjCf%R*Eu~%+jwn(M82W^ zK9iaEF2fO!Eo}NsW;d`-fVyLIoEpzWp=?b9X`acHhN|w^T=-7~)QwtC;7UQn9eb6) z%YX@|I#o4~XVpBDsk@q&IEKJPA;wMpB?s~TH*BXE5%l|e@650nc3=q`W?7OFWdRXT!h%Q?L6QW~1r$+4P*5>|m@$JQ zilAZy1r-yh7*<6=Odz7DBozZDl8D*&tLpAMv*`QId*^&}&VRSMyQ;c6hugPrBnQW5 z5buLT0S=j09d|gyihZVD>yW!5jAakH(q0c@b)+O@$Q`|%^QA!3<@lmrlG3cuAvYp2 zlCJsi-vPW>58E(O(`By13}aktDWiwjR|gsWM3eMxFQer}(bTvUn@j#;2ZvINw8F6q z@6Ul&h###I-*c3!5NU4*IV(h+oIUHkgFCf=R*0)1E)$1Th>sxF12aF*v6;h@D56Z; z807rpR5baVBP}3HLR8NQxQ+*^=K_fH0CveuWlz}j`yu5jLfVEP=Sb3`$$SQhr$j3H zxlM>%EO$J?(znXw-~p>hyPMywdEpkpdUjRKFYT&FJ+E_U{vt8|jUcy(j0$ci=rdyZ z7-UIEWD!0!zo1=%$TA!!KpZcQ6*w+}I2RPj>l=eYo$HZIKP&r}t*C5I$S1ID0$CCe zk@sq9d`VjXb^GJ^#|n0}7A`_AGJt@7aP$TZ8IkmC%c0+i zyigv?mxeNq%5pNjGSZ_qRL&&F%B;g3JH8CY){?B=Hh?bcZzAbjwT2`~|73|zZAnl1 z5X&WN?AS!>2y=gCnEPlgl5Vctra9u3iPp1omeBsRm%Ew-UkS9AdlX^`$PzB?4Y z7iguP7G}AlT>7M!yFpY+rOwz%83V11r4Y@baL7eY=HNDF+eU|H3hs_b5DC#*9GzP*ajYM zHKc71Vt2Vn52D}zFg=jvqz4KqBP5YtEi%#r6@A6b7kIJFmMyghie6${*{I%RH!{-7 z?19N@$u02kGFgt2rr%^m^N+Q{TCo|LU_?1;W&Cjhg%u~o6d zMah1;^_O)+AM3Br+}!)@{*k3)@ z4LtqDI#_GNSxY)I0P`!5?^9-fWpA{SKF^%d_{!H^0lo5)VBHOU)l|BC=^eNn~Wgelh&hfKJ%&hgbx3!oCLL4PXyWu-A}7|Dl`qKjHm@ z@X4lq(Jop9&`tY35WU192PdXMTp$kFw0{`lK@i(+?FxIj|BZtavJ)Z)Cq5;H4J?`Qt$n~Mpc}MQu~T5T zwbOP}VnAivLbL&NI>8c?GqSC{fQabl%(gZ+KB$WS+}0jo1G$*}UGnpToJJIg_W!4% zb|lcQ*s(>tBxUT9t~gg@q$|Dy{@cZz*i5U}b;ZnUyl9~m*W4N^_L-c zi1lYy96i!1k!|gBjDO@(Rzk58Y=GO=Hap6?1*7+IX$u`0RuxAXi%I6@oY%!cVTgd`ii*dWW|Htk*V35!m%)kcQ9m(VWN zzY4!E0!re=hiL6NS^$g$@rla2TjKs?aUrbG6>*sg+ z8uOyu6~5jl`ZC5Z2d1OG!tWyet=v(4GBBIRSNcbY=QDUb4zi~l$DgZBS6yWv>Vet( zx!TvSiVeY|KggRlfRJkpXE0|#Uf<#B)|cYsVg1pga9?Y#R}AJHZ+3oX`Sv+{h28n> zH2qmkg;&G;^ZukW*W&&LM}i zAw5V676ENYjxQQYxM4#Y(r}THhO`C#Pk|Tv(Hi0!l9Wxfv-MoxmFz?&S;*lTm?Q1G zEf~p@g3x%5`VP>?`+Q1bxYg1MEz$F>Lrz3*Gb;TfC9yQn*t<3`oIRAScC&~4L6Y~U zn|e~#*m&P+L;Zz)XfnB4(5L(6Jmr2_Cb)WXy5C!>L^nJ;0#i@M8P2(Q+zj$=Xi5y@ z{aPcN)4upXcD7cBGfj2)8V$jH>dzc95JfOR^xIE5I7 z0-ai{gLnbx)M61V-!We6)Z$V$sm=pBwKxc|R~&Lavil#NR|a%yQLm{nmDBG?GqtFO z0-ai11;zfDrBjOuf3nXEbZX(W@OCoc;nd<4!dC*FS~U2J^)k?@#YBj) z!03~y#do-Ng342iqijz4o}(JsB9^JeR;D&OwP?%ovJKGb!B~jVK&KX+tOCv%TB_J7 zuv3d0V7(5g?DG&S0e!-C_=Sk1yU{1+C)t4ioLVdj^Rx7DJs&w!@>7qpTMZ6?s?2;aFg2+gZSojZP67XW{tzOq7P7xEw+9b);;!b2_7`qhzbjvJLi{;k; z0{pMC{xY?A%lMnA#XUCQf1Fw@4a>q&#$vjm%{j%=++}J}hPj=^WSv^PXl2+jknGr+ zw^sOMYH>O|V?mY#=+xpyT(f{qE!IH1Ar6^Z`~dMC(5Zz}8TFEsF@&kbL!w@$7IDw_ zssS&y%bE~2#(z&O9H)xVU++5Z=W{X{=%Dbk)$Dn*r8LIaLE&z~=K~!SeuVf+95N`J6z~8C=%BC$ z;(3rI!a69N%}YmPfE^TOUSRAC26Rvu&r3=t z10588hWHNXpx`tFo}*F*g*i;Tw91{%&caw=28EV3R^M}!sU2kS3yrpmj0_6b!#@k? zpzsvLa-f64#}J!<85An8d^+&@@L7eEJvp+wsQ=%6qFmVcNk=%A3E&VznJbWpew$8?~B z!g`2zfDQ_mH@6kqn~gMsLPHejppcuveHTCng^M93gDm0FLE#{-y+8*Ar-fM`;o+dr zm-+OuKnH~;^`k3RI#liaXTo~&i1{UKxL1EI2O=@K4o)828Ap#B^(r1+JOHY6ucHLKX;H5 ztT%6${FFgq5^5&^9TXf}gjbP_0F?e@P?#w)GAJyD{~<9aR%+QQ4GOQ?#L1xWm@!cY zh4I!x85G{I{xT@+wEi+EY%~65Q25&h{Eve|mSrM4EM-lWL7|N_cNrAk!Q6FXvJMJG zmXkMMo01({^R^0~3<`VU*$uKJKnDfBc;n>(9TWyZoG1<%6sAF30CZ4rDx+SKGKMfH zyddgjP`DfR1;C5-wkCv)@!x|&#HHtWGq9$vH;Zi^%b?Jee)9ioP)Io>_PNzlX;8?B zEN|uto-M7yZuDIJ&CuZQA~Lg4+23pxnvKf-W{a?z_Wb?*9x@zM(*?)?zm3S$lwHe# zcGprj2M3vzMAdj})DQCYG`Cqo4)*QgAvct9OV)T+A(Ow%fb|HwIDVH@FO)fr8JLdn z8_U47ncS@a=B(Ng=7SMGRHbGCd5N*qM0-m$9$^C=CuT39NcaU_$$P|5>eoG7=AAN5 z9DwIXpyR}-T;Cf4bewn>;(1UcPobQKsJC1+ywK<|Sz}1ednE3Ai-8#%?z1uR;*F(D zB~h6_L`KGj_uzjA=-BWJ#Lqy-hQjK+Q3TA`u!Fefv#`*yp&Q<1K*xs35a)>H`~&RY0WWsFwIs~6)HY1d zW?mq>({i!vp}#m)OUJ^RHJKp-9Scu`I7J+?Kzb75F`#4NN-NI^N-~tOu#|O_j)l8n z*#&eg>{iS7+Jh|N(y{OrT+ag?3!N5@6cZkfh4I=*038cYffykU84H&{+yjh084DZL z;e9|*c`WR_)D@wl8oGqCK>C}dp^k-<5j+Rzcy*N)+STJvG6M!@SkI0-O%7glAj;s+$Z@dV_|W=?-c+Y3msd;bCjF; z$yj)!$jDeY6#l`$i%qwB-B`#v$crwrmdKd*yfINv5k@StjCmhe)8!ii(S!|v0=tk6fD|Aak{qjGFEXSenrl@oogXh1FyPV#5u}#7`%-wx!Bgv3AW;0mGneGmiR`#!RH!WGeKlO zj*SrSgCe=C(WyxD%GUFIwSQKO)wg~REnbKQfduIH&`!ZM0z~9{Xm>!|E)Mw~S_Q-l zK);9PRAzh2MP<{>2U+|lzlWAp#M=}=zlY{{t9pCjmG7a=6Xx)HXr(Y70ZOEQcg(pV z71jp(ZL}e<4gx%gJ?gA_%)D^uPw1$v|CG6wWXUjq)rdXSNRZIHzYa&jb{$T4Wgof+_w3u z6=OHYQbV1Bq1hW5We@qz+7=`~1^S(}pcpkEYqlgpzO&W@S0kX`SsM#+D$wt&Z3``R zRIZDtd+Z1z((kO@4f}kc-&y-I6me9R6$!ty_A$I0fmYiZb$u@fXtg~J;uJtSWykm@ zt1C&>chMggTPo2@Pp}e!XMy$vP9z!%hh0ryyOwO7AoWw%a%zp~}CNlrY zDq*#S6=wcZ;CGOj*it-i1KIDkKv|L5v0q+~*LHwD&P|w^*(bO+0-Y7P*dpHSFAz)k zMXh9wEVH8K^?k1)&{@&L5I2fLUa@+;f$yyZIxBJ-VqPgvOqmtE&K`;m>3tgV6_qLVmeRx}Y}f;ePWv;bm0h<$IZ2?zN9$5~OOSKHl7?>vH)SKAk1oz9Bh zCWbWPBtnm)yfJnD_S8k zvbKyKSwSdlwIzb!*bXMf_MMKT5`ZFtPxaL=vu-r2Rak_5MsSJWF}PH zlocQ_`eY`w0N3rH@=U1CTdvp~)zB7!Y!#=At@0H5YXo-!oeAYN!z!RNp}JN96GuxO zIuq&$>(M}E&w>~a7`z@`YoeB!P(30FXF^Zdfd8BceQyJqS&|dXgqDhp(*Mmx?QEd^ zpJR)7Ny;QlWZ;9n=^#7?r-yZ%oKJv!b-CNrVejfwhl)%(_8`o%5Qba~nw z-DLx0Cgf35WTxYmz%mm;Ypkb@$<2iHhB;ohBB;6*uQU^i-oD0U)Y0d0RM9G>doF#< z`rjgv<#!!TcKCKP^mZc=GymvwWdqLixxQI*{zIyF1JmdFX3hC}bKiR!WG_H4J7Ny$ zT-k!RoJe;hf#^N+Ok5Jtk80$JemgI=&3cCoYsY3g4w#dW zJFKM<&rwuy{bk4ejLs<2e&b}K7y-PrW)IVoTctdHc>z1C__-enV<&>HgXuDmB_WaC z_(WT>dxuYzkMHGEB%!3E+=MdtB|rBu(XtD+LCBm4yz1#=nMZ{}rQ|^HdwyO}fcM2P zTp&yo#URVlw-=7m}ReEs`~6jD8fNO$~%v^6KQc z!{qxDeQ&5?O7$aBx7S!wg>&WH(u~Q493P(>owJZX_4_wcM}6aJbr@4i*?8a=8aw-a z(+AkKA+>|-nwB>+!{gHX4%mH>*6xP&^giz^>WIx!>8~{R-&5`*N5C~yQzs{i}TyI_(u>Ngry~;Y7>wp9Fax@&%!kW6p8AVRs%;mL__P04%ijUCge9* zWJnIK!cq4~#$=EsT#<$N^uW~(q#tQD$km?g0?Sh1W9!9GFG|~FJSs|M_`3p$89;|W z#})|%T(>I2-|ZqJ!`}<=KL@;6I_H1n=Y~HjnK!zwi%bs&$sL+H-S?V)+nu=knVbJ7 zXSvGNuc1~h`SM0~zvP!Uviq4YZzN#U&t_!zH(%a(dA&yIrR)W?=@K#xFkjx-XqoK! z60gnZkmE$d@$DfT=Gz?E1KqbdGCE>U*PKOk?(+N2{G*;oF`NFOt6KgIIk6QK$xVyT zSay!?^+CRStQ9-#dbi=Iwp=X)^lroFEgMr0*uuLF?;!j(poQUhxJ%b^M@+)?^@#eS zR|?~O_}>LydLu>#`AK0=?qbe{(3}b}=eSsfGv^mX_5n5LqtKi^spga(#h?k)9LE#! zl9a@Q`P7XkojK#-9|!nO(!b65DKw`6Gs40$zne%^`GEEwQn6eE1M*(+3S2D${ z+V@ydZdMJgGNql}C-$P~kX8Ez)}42{jR2Z={(8IYS76++iP?kygI95aHMM|Q(P;mL@UuQ$cpQm1W)<%+o1ud>irT4vw}m)2?z152G-D=!+*}HG$ke zk#6G2n*1TLFFg`A)o&eeVnqKgY{l8|d}PBRl!tNr3l? z@yeCS(-NF_f$TR5(6%kfagJWl?JH!D$vEjkZ!)$8^p(XnO_Gwulf?_=i)VXDxTj2btUhzkEOZ^T7JU~ zKTn#hCYLOA6ls)SrXOi^pa#|DX4p=Ge+URJ$8jyhmExF+;}wXP#Bm0W-4Nf4V+4+- z-RY}A&=1F0h|%KcisO2SS)h(su*1fiq$HQ+7Zm1YtMHTXJ|V(l%4Ud<#381nA4lf{ z)RZ!a&f*YLCPSPp4l!jZ#A0zs>^mX80I~Q}Chg%QcGxH3B-VaQk#kH9e{-HZTI^sQ zSf?*G)wC)&Bw;DFoIjbdNPJ`-QOZOvs|Pg{=-X6|Gx9GP8LYL1m%@7lI3$*|P=flX zzs&4N{1X?;5F`cx?MqxN8KF$-baA!FXfF%@G>IwJ(k8%77pD_Jn%v4gAxz`sk4RUw zNKQ+tqu#`QFOqiyy@~rxh}Xm+H*r_#Nx^_DkXu3!gTb&yi`-dLW43 zE?OnG2Eug$&@WUtK2B7^Cpk1z_{8?>;h7~GV_#WiskTQ~x(Z!to?=SJ#tJMt&ZbB1 zHG2nL_-90paRnQ@&*}H9<&)_QZ`S}K;yl80( z$E<&IoXRV3)^^dM+LQ99V6}Yu=xl2Qn;LX1nVW)~Rkg8EK7G_5^ac9qqiZ3q7KeQL z=y9+N=%T2(o6Q zNk4s**N1f)&`%!?g*YD6mQNq)Cyy$GPd<6{F5Yhl-zpp}`ck!ke)8xHh_N8{y|r^L zOD)L^d2q?MWA(d@=G(EZE`A!;@Z68dlcGpQi#k{+b@4tl-3_!&IlhSJsMI!9M`Wa4 zeggl;fERWCqh4z5FR=l9+E`+2$nEwnM(=p4i;L0mMZF}Y4PRTr^)ANt$Q%W{*q?{Q zD2qOgv5yVlDX7HQB9akj*wi$hisVS3X>@!M&rzvq{L{sF2mH5dj2X|ET3xB_t+#DM zHaVIQkI8@9o-GscKi2qbiFoPbZRM70-lLmRn&@=HmJ#U|wnIvhCLvo5bW+h;Hf6b6 z7_AMn-h`vOD)p>&8;B4ilG6n0LPjLwT0K^NLQcs{LT@Lm<+YM2N5RP_lUIuaUw8Lp zL#>)lEEWe%WMWZGzO0$KBxv?4+bPxLvkN$mmf@@BG%xc}d!ves+e?Ey8MnQHAxFb> zb)cV8^DhY%UL7<_D!e9WoK$#C(9S8Gm7?&vpr$I!-3>0$Bmgy zX-;bLB4173NtwL>8i`el{H~(ptrK|81adVw_xYNftpga_L9Qn2K3|j7b094laDXZE z0ds&UXE2kOL3mvxUOLI?IfQ%P0Jpo~r4y0vL%BHxWXqmh=7VMzy8cN#>j8!3D?IPp zdI+5EWp3~r<}!PF0sm!ySx;*(^8>$*7&>+s6%`atMqnWV*$KL}%+E|5n+SOwWIsAw zJ@qQc6~j3?0OC_8lHkw$GMQVwHp2H_1Txjz;_KBfjYiVVfcRPBRVe#bZ{vJJyqF_y z@r%W)>B(3OWG1=Q*X`MYQ8XNo{f^8LxA{61`x%dY;;GZT?Z&;iZcNY<@GJ#< zEQF&t5MPO-Dvq}0lm&>6x6-Q^d|pLPTI7tFY{4)l#`f7zH*lD3;me3HTHgjqll|EW zipbU0Uxra_Sv|t{%LeOBb0_Mj<9GupDi>1u{;(*AysOY1$+fiyWb<39sJEW7%>2WT zUq#~eI@yVsI|1l*vbRFa7KdCX`#i)-kR>vDr|j3bwgI%tcffOQHd>jntwifze!-$* zWE(L?l#k|c7tjxZ_Z{PVU4ecGd>zDVKnJ&k)xaJR8p02OcOOf~0CaF`c^d5p=-{>l z;$d;fcl|a(ye$qH+`695rZLD8O**)(#`PS~!ENj~MqHrZ^*iPaiV2uOPWWYzdl{dn zfDUrK#;@9co4*{wD!6|PMA*nvGApVQw%|U`P&txVIG{;*) zv=E2n_)v(!AWLL4$EV}E1lVCE{T7qsG;h%w4{}D=MOKE+C2-vjbXakGEYqxn?W1%c z8zeF^bRLBNfM`$udA3ok8)jzAw1T`sAyHKiayGfB>Yv3HAJC{uEML@fRBBW&yQt2E ze-iLwzOBi21k>tjlh;2?-fW4pc97Gv#3t`9Waqg!9bd#tQc}HXKg?KLi;N`i1Nhf# zoK-8wsT=%yK5DX!G2%HY+bHrf>jpXU#XLP9br3BFfF3j{p1@EA^q|Rbh?9U>puAz@ z2|P#DbLw{c@jqQ+u14TWpbHeo84YDpGf)$<4Bkg25-)m=ZOIkPIcw1;(--LQ>_x9k z2`Q}<@`DX|2$^0cM7p8$2W%Z})S4daJ?oIi6X!c|{p6&4&)ZA?(}wFsDSd6W&3RZY zFcScIOrYf zch6yT($9{jHZ(VD`U!-c3S=~CVfGUK!Fd2=k7PRpPu)$pYa-`UK=z~o>RBY?dbe{} zvx4j?bgyt8CZ5;gaS@1*9-}%-#q)$oys-wfE&O%8Nl-f1yCXL~$k<%p*2{J9tOeQ@ z9ABpAsMOiqI+2ljxf}i;ftUW_4MwpxJ6+<=z0vsio};Q^jr=l?4{|y;u+ipCrUwOD zgB)ihl=)W;ItJbjz&5le!+KgO2^tvWJmNHufvX&7f*fDeb5yG41tKE}x(@zpMSJ>l z)_l{CNJqHi7MGxMiE31kb5O*jBV3Niu!d*McG~3S z-pt`a{M3dvOAbGmrz1euv5qg|t%px~1vz)5#!iLjJmAG{pJSATJrRo)+mI7Bp1^Zd z6Db3JnInSub{FS-^xOe7vm9qMlu6C3wJ!b&_+JKItgDSAjQ=@_Uu)bYVLIh|ZkeNl zj6scTI(H%am5bByMZ6?s?36Tj6d5U?dgn2d1YYd^IscVrjq|oJ&7~6Om>}b27iS-2 zy8}(9%F7^D!{&snbX+b_{_k`U*DV<>EqkhJq!zs&o1a+E1QwG}A zF10-q6H-gDJFLI(kmQB%o)65~UWkR_kgj$s#AkpyFQ;8Mhq@ePRe70D`Z=>Ce%Z^; zm`WQ1=0>mmp-{OPy3)_tAdJ$-9|2QykR>4+`w(0w0*(C^h?{_IajwVY8w*xt82j^n zM!Uu+m1)i@B%TM_@j1@uzhtELYt7#Q?>3D^>-bf+aD1=idCXnyXFTFGr=5>sKnmiP?*uX7fwhNqh8ZJ6UHhN~Gpip*_hyT6Dc-l=?PW8JRo$SIe7dZI%Xe zh0(}_0adPPUTzuW-lV&XCP{JhaqB-|4^waJZ%%J9If(vXLnZ#t|EKsru(e;-(^23W z2Pv}_r2k-9WbP9C+Gf6(1FyEj{MyYa;Lc{LUh%Btl;`cW&%XF3WlOhI?`)RpuaTL{ zKyEKskvmFe0jn-xwFhJcUS?L{BQE4IA}~wkuDgp&7;G zZE207U_30}!@Em_&&N^YVm4(!biOs@JJzF1NFCXp5h;7mq=|C!+j_BQEl=f}vc1AZ zZ2sIp{>w4A%pv9&+#rh?=FzfuGt8{;-y-A!B)J@L%;dD`Y2$BGDOST&Ysd_QJ~plb8Z#v#RyZrK9pXZ3PY z@>2pw_&NL0tXlxLq2LyvTLAAuyd@6V0?4=&t3Y&$m41^gfC}Wa63Yl5y~2h(M94M` zu}gUNr@1)ud6OEmIY0=`DpL0ASDJt%#YVRNGRys%zqMc@C3QjTz%VQrES5;|&xM#R z4k`ZkAl?CKQv6?AmE4~}3Z=+bp+<}S06cp^mV{{8x5T<;AbP+`N!dRH|Dk0s%d1%Y zkiwU-(Ti@eqO!fQ$%yKGY+kIR<(EuBp`4+k8oA5bbj21evKc4R@gq!Im$;s^{?cC{ zYxbUljDJ`|c(j3?ux7WX+s&Nr*ZT`I&L9=11D$cVu=&k8+)~XnQ(?cxuelak9e8ep z|9X*;EBYK~B&1S1=%+1{#Lac9wawnPD}XgqwG`j@XL*@Hd!&RLh9cw zentygjgGCG(fT3Ck`NtRYf(?C0v%gtLQIp2<3(?_Ilg@vAJRZv^2c3b9UX5oU7ih( zv4NPDey%lF7kkUBBQ(ZGm)($cF9CSM3@Cxz$rTX`6++AzxaWEgAv^^{RdxwhX{ z7>!hIzqd*i6lEcm<(tiAd8N>7E@%0PNy_qb#9+c@m=&N1C(6@1~0qxE?{R}Vjbv=Zb zJ(Knd&OBoh=B>^YJ@OIcwlC)r+Z%P-lJn;gK3;jo@(@3<8C`N!RXdcdsV_$tzbEiZ zFmR5w>*iKkkMu&T=!@2~HGS+eE?^NCUa{l<$ZlJqqaRx?sYIVB7s2JPn_%YDGJQzj zXPM+Yc6#i7llY5p#16L(i9~9!{iyf?r{8Px0o*bf&<6@#yr!RxC4uA2@y)ULw>ang ziFh=VoI2)jDWEg!h(8xL-DyTG4oGI+TTRN+Ya&%fjv%VGHeS;aQsoAk^Llb#s=1cM zz{XM*Eyhkoa!_YEj8ShPePZSiqh&--GB2}Zj{i+4(NP}@G|!g@9UXOwAxAeeyXZ;R zmJ?6M#Il;gjt%4ad(hbs^_pIeJF}Lt;lws_9*uUES*wNCJ~_6WSx3vfUMD#Mk*_w? z8&O+mz22P~%I1E)o_DDC;!yF|Z|-^pC8RliLL?@6R#M(j zFp@1JtyNN)TSm&ZFdiEN)f|F=_cjWWks2DFph zV`P$oVP4m3e6I_LPi^JJ%gqC%YjK|r zvTM-2$448_fwO3KAiK{9JXs}6t{rt9dx9XlE%}OPp?IErJ#7Z``HMn`pB4mt3Y$Vq z4T8eu7xL0pC-^mQzYO%@#)t6A9GyoX@tx+BNiI|7OpqoIhoA0fQpRriH1zBYYUUm# zqZ2`6;TZ*j2XQVe(D4@J<2H{q~ZJ;FtaO z_OoeUK=<39hImXIYY7SF@K6>F{jh}9svsEbj(f%(QHvN5Gs8G68VODForuz8fiIlnUJq{^I|Q#fC* z%sHzvXZ^Bd>_1lKY?{K^-HVo|aMq@3r`UOW3g^*Y^wJd0u9Z2*R_44jg>yn>&PywE zPVSnt^Y+S|JAO{)Qd=)tty_}wmCBskQ#go>7^zR!Z8B^`c!~bDmR~^THI)n<{gTN#Ue* zEJ@*9S($TL3MVQ0B!%l{jPL zQ#e!fU7Nzykz4Sa)0?fA9^|K>@VH}GQuW58MkoGciFafO)X-b$*Fo*kIPUk`&|~FZ z%$r@W##@Sn^r$t?mOs*i){rNaHKfPP5+>~_=OKI}(4Ml|ZFHm{dF*C@@JSDOKHd|6 z_K*i4eiVoFki+M)lLlfVJDUt}J*2!_BpZ=z*2ps+ez69}85UVJNy;w}-)UzJ=cDJ{ zO-Ql$@QeQvd2Jg4>M)Rzk}nEAbVpus{aV|gI=TX=nwQz+J`h0 z^IMO2+>6AAQH%6YT9rE)dEwJTY146>5A;ylw-7sl&Lch#HRMv8!b54z=lfoLp!0|a zAQp&2T0yP5n8yH}N8AH(r#Pfl9Dw){WQiti9itcUNEK-7_!8n{amYO4+=a}?fX*WZ z2*0$F*xh_H5?^g4XW$qOw3V!YSPo*tj;Y*A^uR@Q&So=@K#~0P%h=0p{bqyBQq1A? z7ymn`^ReWUR2lysUZy~^R+*MKS^#~Wca;@m^UzX_odSEY$zWIq0+qc2VkWTBud@}1 z>qsr-9{ULD9J2O(}7N`4nRQ>97 zH@=rs#USR};ppGGV~dWqnJf81|3aPO*)5s+4wDC|nDK}n)9Htvz93CbJ-%&AgfAVz z8Lt(IZ(&jrTu9I~cqW73EF7Ogd?=1lI9e>?HxH;5N%49nJxt+^SBK!=Xb#Md3 z+v1Qq*z`V%2xuL=7h=9Rqz>+f_#R}5Car^~-p{-dXdT=Ru}K_K2Zuhuaao{saI)}A z9jw6TIiPj0{)3#409psng_r;cErwQr)!w0gO7DHoPp=4u%PNh>a_2Q z)lvsvMC%Jc>(O@*-%2zuTH${elvaW-yF1;E3hQ@Xq|QpGyV^tS(E!!m3E~)__4_BQ zfE(m3b!hz_18cdHoegm_U>sWD8evL3Nt2#&b9-YGg9hDe{L!FJ7ZRaqd=}BCovtq- zJ_l-t6N-f54NMk#?lQgfhuN(Inuenwjs%QT5@p{GF3R;1Wur*mQ!dJpa1D22*Fjth zG)gBF3B?;766NEtE_1S5AU*{|*_J4O4Wsm=*KHcfUVN-f4+si+@F%jEE(P{1366}y zrwcwEK#7PCwYi<7+PTO#WGA)U0RMHMwkS}monRzX5eja~&`e$q|KmV2Y8%8Bpt5I% zh3%+@E>hc>MV8R$fy%amXbJSE`P|<24eaSjqGtzr1*p_mhr&46NnQnU1<+WX5F3hC z{Lm`)2&{{p?8gwBfbBxdtxVuKs=c$hIFdKtMgJ!fzdIF8AL028(CE*$3OvtI&7A_9 z=>D+w1DfdR5SIX3v$j#F^5f)#OlB?$^0JS!DZU@BMNVuz#Ct%abV5Hut%RctA7vEd~|c}0+SnTxU)Ts?qVdI7{#piw%ZsOP9dqg(*%d?))B#2R3u zJR*#;Oro3_h-u2|aA|bCJ5$sdx>d0>pl_!md|LnasV>&ghlN+&Hw@AuReuivNrh|9sn9 z3IDtl|MC?7$5Z?#r})cD8&3b64#{}8rT9OY;{QvEzw19F-l{!AJ*Bejk>AI?Wve%( zk8P7=ik{*IAB6j+_+OpkKQ_g`Pp71Dm!$YlNb$cd#sAh6|D`GZOFJj^yq@A;)wU8z z%x5Y7T~hq_r}$T-_-FMB6CZoRmaFKIjFn-u;8EF${KhxinKIcZo-FRBvWr-40S4hX zvL_C&K=zYm>LA;7zU;B_5zlGrBfGiPW*u#URdQ5!<1mubn7zveno7#69!3(Mq$G}{ zBn~5aYkwrSTS+-bYb5bWO5#XL;xLlMJbjQuvKpr>JB=hhNl6?@NgPJ97i}e8;hW84 zsVUWZ#?`0Ao1~*!uO2vF_3H_9wJq7|&|`2W2VV0JOX_^hZ!2t7yGhn@fI^I^T6B^+ z^p(A;KZ)ZFKQ1y2tM21(e66o<{neau-dHdGmai96RGlRztTQ28Nzmd%oL{Pm9u~@P zJln|f^B2kxc%ts%epz3(aPyaO3W}CpHju|U@h^2-zxCrxRzcggQpP{1Wgp^x5ww%T zeeoX>Vy(BFImZ*sY2@Rl@gMaGeuRS%ZAUS>#eYo5BcSC^^4t`ZAMAwR?x3)o2NXB; z_2no)JYk+nC!S`U1vPlNFSk-P+!hanyW z%KwFp$@9vD-wthW6a1Fr{|(|GFuzzgn?$KU(%58eTR31Qn+g3{ZvJs3TAG-gIqX?x zz(7xA;;Dx(@5SSG@oYI-IrVOqhAY@S0s6Qf&el>uv6T#VcoxpQobQ?(Po~S=vGLx1 zzJ#tN^fi#ZOqyUHzoERWQ1>}jy&yUrcKJz<&=%TtxAUyOEY15_e-aQop90{OFu*zN*Z5*#@npZ&OYfyiYzCO*$v6+~{p@gc-I zV5fo?g{n&~M|DTP;5Dq!lJ4^Y12)i-z6Rn7kR@zdS1NG52y{xgD6A`va)&ouz4;Z^ zUw~>WUPYmR#A(Qs%{nzsO}^AWPUZ6Gr121vC>zQ1|4=&|lh}BY7NQYbDbZ$%NK^)3GQD9wF#v7_SFe5)ye9pS8GFgObvd*^RT3UPx6n zdcF9`*+Ex0yqCGR$+3SMvOCIltzNu?VQ&O`10cUx@E@(Ba3=l4aYJZ$@>)^+0zXg2 zfdPp00#)Tnbo@fo{_`T4IHs9%I`X`^(_c1!9#H*k*iwDswCTBiYk9={I2x9Li>lgc zb*trz%fsyWoxXP5AH%T$bU1@iWWL|ZJgQ!FnJzWjSxNennM8iC-*5~*Iwh_D3YiA9 z5C%Y;0Aho!z`y5&I^UcY>T^^$TYcDX__EVI4OJI7-48=ND7tU`zv>>{$mx|$!$s1E zs`(qk@gsKz<}dT>v_H|B{{b4`aZz-vVDABFAO4!nRZb|0knO`~6MQq!2p+ zuR&CREa6BFQ%;gYQ6g!Z*mp2~E0WU0>b%B=A<&=p7459m5l=o`!JFhc-w(7_m%-Q> zXq;z2j0IW3rdB_K>j9vB#rL7rj&etRNI`N9eGvWwAlXMab}qxSDndbd-#od|0PA*#{u*119k@J$%j}|S z9I{n*55zo>C7N`rEOQOU0^KUR8Dge5WUH*zTDI$eZk4SUe%UI!7oXdJZj~MW76UEN zt+ERsCWBa+t=5NZmD%lDdLj8~BW-B2H1Hgy6Fh?BH~U4`NIuC{*{f)M1!(E)hWHU^ z>9h_@$5DrFBh_BV%mS$FaS+D>8~wFbnoS~0h0)*W7sco+HTsE2OmHd|K+Fdk{q14& zjyg2@*I|9t$?k>N4LBb2tnH!Yv%S&xtYcJHDhaXj3`qJG9s+USRLr$`w@8u=+9H{3 zp4MAb$#1f(;`hay4aH*V3+ld2^#|Ij=0eN{S;D2Q>OEZRfc6FdxDL(RBU)@n0w4?SwH9Qli-wGu7K-h5tDh&*AP2Fmau6qSAUPO7HBSy4Xc`WMKYJm z2|fj=hHD_M0$IY5%w;DT@l?|0^5ZZr6G_SCEfAjqO|IjQd5)@Uv(x2x^nK(6BHJ3G z6r|+%bJo_tb5yv={G6XxGz>|}@exQ3b82QmTm#gE)nT)6)ZvGiupHLMo$NMw7Wi;jPja%?LR<}Kh{xC# zB~9&VB66#bw^RJzPVqmzk1otN>A=B!rJ!PFTFU4_I%BebTT3Qe5C z%xq2Tza*>2Jbx;j=jN1sATG`na$rh+{z6$wUEynF=c=4PgxenDQ*?J=8M*c-D9U5L zI?T#)yr~|_F34#%g2HJ;$VOP+2PMLGddTLebQ6~s?~<+TSsOUk2e>3zX37(-0N?Gl z6dN4+i(i;?i^L(buYR~jFqsy#U`x7Ai{c>Fv%GS>rr6BHgzGaiwToLm#{7+CafhVNLl4* zEk53cbue=I54UDVxmI00Cn{HU$ght1N9A1uccW>-&{CvdC!bycg{2L6<(;rRIp-ME zsaxA4Nx__RVz*fpx7XHF?0EGWzk!nyNH?si%tdu;$6@Bs;zOm#RI96YmHS#wp8Hao zzp(!p7Bcdc99Z;-XVFF;%@cX`>mKLPhUMoQ!R$%~)$7&_7T`VeL(Xx7Eb&b&!AGV6 zY4Ud0WGlgz8HZnkZ=)F_Mp515jjpFQv1tXoDs4EP?HHpWWwS$t9uXn=TFu7@Yyx^O z`#%tW0lk;K;YXYT0G`Inl{+dgcSI5IkI{?|T)h2Y>Me|opT*Ke1ZR@y+ArX!o=vWm z1V+?^1>Z$;g0^_yfXI~~XoBMpi2dS7;JET*hGCE;x*}cixnwg}FM|f_`2@Su7Yixd zOLL>rI)1_fB#k@gZ!|o^g>MKB$H(jF!k6x6{3B+KBj^=) zUIJc~s<;-03LWK=l9%OYcNOJzVfz|^FF>Rzj^fYgXn|Kea1jw(tRH)@4<76@8M8CGyrVa4C3$!-H zw=#f%EMciFwMmQ2iBd2kdJ07#HRyaeCj!ll(UVf zfQe;us3DhrGt8$WVJHQfPmYI&@0L4mlI?{R;~aR;0-8^bD;DxwcF*P0!>~RG+%NXK zRcufEo8=7e3_QIza6De!wR9D;4oPRLF(m6P0^UX4TcR@dhi?>zZ?NRPn^cnjQ6c?O z%nSj`=NaYoY#jc=e^4hwK&Cw|n_s@<#LS{tBGM#)d=j`gA z(F?s~wQ}hmEJ1eN+~60yN1_BVJr;XmieAc-sVzyjaGqV=-CAjagqXWe0ZLu#B_?OQ~i25uwjTNXCuF5LgOy z+}H%M5$L$_JH)TRjvHaT%O&1eEF<$Y8*hUzS)c;1@i;8qL2x?~9hrdR47`Vf>L0BS zyb@Lb@-sX^5X%Yv!8?B^XInt9AII|$kBQ?O98F46tqkL7SF+`#YBexS+xH{z+zYgQxBZ6AB9J9qI$E^-maP(?ePXVyu8cX| zs8Ng-znqSwwDniuSt)!nS~xx~IS@WZix$EsqeWsDvlL)Dg}hLqqg+yCw3sA9(kXOD zpbTiIa4E#aqCvZ!Qmeu9N{&tG6dr)#UZ9LJcL|iN#GL{(#{i(0p<{5zkR{OZp4*sqK$!7Xr;E#}y0tEqjf08v) zu%}qp3l)ovf5Ha)3*SMV3>JHe^?kGrD10BpHe1f$nB&NbT)OkY(w*l&$WxQxQ=@O@ zLq^fNp}yW{(V4%(KmbeI^U1Z~Cr&=2FAjRrt>URpi3a^)^;2k)_gY{K5Cd8TXt?9k>Cujqq;(H7>)U zmyZ65>ldK+jVAUG6)@MA><@J=BKF|h;+zaD(D!J2z*GkGJzB@d)#X;g6^vZq@Q1`L z@6pbI{}xf6-t1vxo4iNsrT=7wVz*iO8c&*+3+9ZMjcl&3Am3*(m;_6U{kBB0yorftzWGPK zKQ+naJ1k=HX7sHFSNd9tR`9awOI~IQZpB$IpJtQ>Z{odTANRk3-~}Ase&72EN0zW0 zw-KK`O-*dNs&y(DyG}>Nq)5h+vuzH)iR5ZvW<@XAxLCYdN^^)mB6LuMWLES&0=t0D zifa5!YXv$hY7cP~@EY&Lh;m{ZOIjme;W!=dQNp(u#~O%N#ql?e`~x&pkk+sw@V>PX zN4*NMbw;Glfr-R)6hY(QIZgQXV}s+X;^mHmuVp0XX84ldQM>`h>p;41b3(s#sFg3n z`mk)VR9N{+BUN9Q=w!mU9O=h_S4Zp`Vp+YA%CvbCw21g>-zJzhih!x(mxs|fD$LAl zBRNgavC;gF#IGWy`x%Zk>Ln>779b=Se`yKS{e?Lh&=TkgaU9SRm&BtK8C;^t5zQoHJx_v>$cTLDf_R{0>&(MU z9WDv=dVP0V|JnG@HU4^CeXPo%%BH=U95oBZ$f)^fv40uS`P-2*y$e3lR!v8XqpcWJ za4ufKBgN*FTlQqfj8BpohhgsC73L+DxkJc|Pm&pjGUutz*NywtTJ{YEQNvk6QQDW5t2?~G6LrSt)h2A%mZ3QUxHW#yvFk|VkWU& zNn#>*;P?*jFNE&_9LKXx>;WRnaoh`W2hdJpf{mEDso2^(l2dRVF-a%!4?KSfpL7zA zuZmYDeJ7p7)0mg+BpUwC<{wDE$|_8D5;umabd+la0iDFRl1k|$dL!Kvm`-AIm?4h( zS0`}}%x8;$=_F#diZY&9%H}1R7|H1`sgh`JLt>6dX(!=WqoGh}8$$Ppkd(l42&@2F z0y`kK0WEUpjy@)W1^yaCb`ZA^k(g%WPPphx8rx zlNFr2?Mj_^*tW(ss5I>ypJZ#qp%bct3+W(&hb;5YAu~QnW*mn38y;T;4_fAWQ=Mjf zlFT@iIsfu3n0uNzN$LG2u%)ELQHx}tj$stUTmlp9L1)a$5tnhE`09DkonLsY>;VaKCzb->%)URD@55U;m$=STf*LOYGU#7pAebViK;ijS88S4^3-2gJWWy}tBci%mg3;^iM7&q%QEf2Q3$R|F~-reO02lFs#D9mEdAsK(9))kxJzckyN~7Qt=0&`!yB2MDYrfiaoa(jY*4^ zhZe0!93c+1NEVy#K$p_XnJ87&W0*0MNJApEP*@Um)oL$oYRB%Z)`rqxnA)N(Ug8ez*q zqvh~O;57ioqI(hrA~g<=a^U56mxbBfMB+AlCtF<^p{@_DMRO}#G%ryg{M*p5MYY^7 z7G0l6jKX(-)lw_eQgX4e=z622T9j)jfwAbuM1e@1ipOx^<^u(2>)wns8B7}i_G!Bf13ynP2_xs z%z7)xYCwPf!u<#yPeUApxwdWqH1Cs86gu15ZHtD{e%snapK4LW)xYVLt$k<}4{mLDHaM91;i(Ie49 z82lk(L61Zybqx0M9}o+=C32+mnr)?%9ZkdOM!H)<->opx-4YFjoBfjfJ4L#4LJwoi zw9;-q=`S2(r8_4QAB1stPBc=-U^d2Nz1GHzdj2giSDQCbeRMKWEN^2Fe3Z;Ay!;QV z5mehS=YEL~KX#7w=Pz7%xf>#DC+ds9YBH(2pC@_u)A4<(TQKBzQ=uT)brz~%2Chnp{u6#ivnA0n-jaZ&Y zR6p!3na7kZHuIQ5k7oMe4EEq=btSx6BDg4@JEMs0K9Jq7zVQ?@zQ^MmpdXei*l82y zm7zf7bSB>@lS`I?UOw%3_yQn2GJAi6h;;To3Z9XG&+J)6x|8Xp)oH?mT$_3H_cWoP zWg_#EnaCYW&=ttc1VK9-iyRY=#2J!h$-TbONH--m=Bo1yo__6 z)s>`ND++d0jUANuWoG;t5}$|)xgape4!pm`A^JGeSlfflGj@dk|ugI7Hp&5L*FrEvuj><$pSY%(XHi#$YwCCq|2FXI=FshdAcmtKL|>5B6UVn!h-Y;OMW_4OwM1wvK~v#5PlSfyxF2E> zD3Lu~Clm`Q*My_LXX`5VEm+q877%~g7-Ye%D~B*GUbLSLTTfbN5^r)|DN}QuxL4ys z7x^&>PPP&z@O;DP?T8H-E)9;Qimkfg#!=}yBTHw{kNw=Bs_hIGshsE5zW&16SGdlg zYC`we_hI`_Aa`kfmFpl4u4Pp!B}+Bf4@^I_yGVPprFc9fp4t!XF6trn{DsFskjJg$Ua+@FyBb~? zoRJquAG5cpK)85fJ|pjFsS*2%s$HTU%V*>bm-W`Zq5|VF^Rf=iJoXo9=fv1N!}Lx+ z7unva#P&{UV(oE1n=~+ZFroy17iC;^6;DBv+$k)V#9th282(->a2C;T<5PF zsQw2`c#>i%qQBt#qTJx{8yN)RG-Y%Jat+;KI2wYW8jcenjt5ml({omn7gEJeQ~RRq z-Xyz*$f(LG2%RfhMCE*lJ3zF;Y8cIfp%(B<4d)U|FZPiQ2rKLQy)F^adu`Z*WsF!V z#IgCA?%4ct8+s+7Rvq;(NT&_4XGTW75*E+^S=suDjE2|P0(t|RUIAJ_wX1XKDbNC% z0&ynLeRHP)W~<9Ja4D=mq`0N9zJ>p5UMDA$N98cAbVZ1GZS{4yZ4#;q#dVgz;v9_LC8J= z-GY~XxHaWkI_GFh>yWJ2Y?SI|zOz#N_gH`4V~Sp2`6Y|0QSXR7BeLH{>&4op zB3?ltg}kLmw*dUJ5GrPty`|`I>8YyeCeW6mwz8p8t$eI<>J_pLYszD}?L~$1SdK3B zsQQGxZ@ScqE#k$j%=}{p+isTYQr|CXDvIAD&(;CcrM_Quw0P#!q&ET`MD>Ouy&*T4 zQ{Dl4J}_M=`&xN@n-kN5RWuKlkpjm?`;d#amx(=WItMUe~ewS z;lZ4fz4Y9z##S-Z%b!w@C?=W2Ec(=h`PJ_&Pcc*{`lv5O_I2_p94Mv;|qhrkmEIaE$~^u4KC56!B7uRcWF%O0N^8(i>fi z#ML5|CV95gvhv(RV!yE{WA61ZO6UJLOpgNX2)={ZDGupd+7$*~8=!s5JX_SB=cooY zUg=x!s^>!7Dh?S0o`+ZoqW4%$(tuha=lYmutp9)YF$b;vG6q~^Wz5Gx zIT~Hbc5&&yy#|YRlK+7{b8+2AK*pXTE#MHEg<(vVMe6nO*29BqLXZ}Oj=u; zVErzGt1mK=4^w}7kj-{9r{zSZY$j4y%_RFKTj>k%Uu(7Y$A4Cef0LAKUF@{>vRb|9 zsWw<5eb)uMDFj)ok)}_yTrpA_o0B4Eyh+%!KgLZ)o?2CnK_>iYYgp zt5rCgyyeURf}*0#-$|S{xJHOJ0A7_fG{3_ZSffMAxDjeml+p4ggf_$02Z3HHBu%^2 z3bBhCQbr7+`lpGIH0?+BIt1xECWFg92+4v zfGlB)oPy8qxPAfJ;Y_h=czxJXVFCSJ7#l1qrGQ%3qXGaepy3ch#32PV58_r}zU6ak zsBW@Y6%@tpb}BxE=>w1@A*$y$TnB;bsav1y0F?9ut3-OJ7ZKMUs$z}pp<;_|aHVB+ zw3qdj(LPQpQ%C#SdrUe1d$b>*qx~>1_MsII7b=BG8SQ1ff+wYX4;Jd;(4RmQ)rLri zaImmc27Bp44i=nFK3#MeC*x5%x`?KIN(U+%R}| z6=u$rYEzJQIIeA0a(gJb%}7?$_3kz!SyL`=4|Wvl5OI3WI&3aghx{h5^*in+U6_1ZW2broYE!3$> zWKPBOyan`w!LmZTDqTB0dtxabj~RnnHehQAn5F9Dh1Fv#Wh1S^K3pp-sp)z3Z)GEG z`>6=MSC}VLm^ldC1PTWbnnP#@d0Q}8Uszr2kIY#=J$mJO#^NJ_gJ00 zmTxK7{{7qh!;eRQa)EOkLS2Ej*DD}q055ut6_n;GR}E`(ow?dI*XL|-rRG}Y<9qpv z=}Rtq9To1xy1u5m0`1G56V@rfA2w6Fee*j zi(Q($`S?S9bZVFW56?4?A&YC8##eqOwVPkI-Fo*IUUir2&1)7ml7_Jh1HS^M3Dqpr zlbekX3%vTkG@+V>x&*iwkEuYLP;J+QmS2|r%?M(wQ>d$(^)S2%pCDVcV`8Kg?jFCKKr~kf$Sl) zh@i-{)Mia-aKLVPyO!$NO{Grd6HQKx)cp8AjGYIV6h-s@XJ>cr_Sn6>z1s_WcjSy9 z5(Fj52@(t_ASx&h5M8q5jVh#wBL=pXes=8-x zMc?Q5-{<+>b*Qec?yjzmGs7Xx{oFIW!f~6H>#g9eB>fDS?@(G=?wMN`_Dp|n%ktbU zQ)phf=2p^}?RlU#SbR#pLuu3aJxTV!-;gwNgQY$6ZGq!0vSgVzSfayh;3zt37Mc{pEQLz##D-iQNP&~?JBYx2=p6p*Ia0-ffqYL={{7R zI~UGcoPJH1paCt8PZ#E8*(QbU6}qKARnkat=0QIPIMMQq;yBrIw|ZHSRkQoa>f!R7 zKO~vlr(REzH-Rhnsei$-Q#@DVDL#@W1TjgYm#f?1YXfAQei=&3m2(2&dS7|*GY`OZ zGf{(}8UWmlcy7aS6Nm{}_5KzW_!G_heIA<7{8C?pfe+~x!v6##4VycJLG6`w{j(IWWh>4)Dg>B!7EoOg4g4<7-;Qq%t0$@_Lu& z%o29efj5x)O`sa@(?uNLm8tP}N*dAltY-8~;CSVim{##Su;dt-ZVj#&`W>YC7ehb5 z_Ez09^X=0=4gJC~PBh!Lo!r}x46((O=O_xW;?j`h8JTXwdr&7wWQ4D^;bJCE)Nt0l z&ikSiB597T7g=@;_oGMnmc;90qXQ$;&`;@oKvRr$&t1e936`~xAZ>Cpb?(*+lSW!QrO2RLi{;tjn~TbD>}I?F;SpH&yl9EHAN17^7i=r zVV5xXeY33EAp*KU)fssGE#>|6bIDite?r^>>m`GY6WL_r# z8!-s&LbQ(p(LN}vFDh{fnGKf=Pqc*H`L?Y70g^0({3VbU6Y;Rk zk24?Z3O2O&m!;J_M31KVfSQLRaWn>=d}UdFe=`r)OGsMgaz_MweHY50KX)Y?o-&W? z4V#{TDX>VAy3{bl1Y1|JpCVqK{)AGfG*^@2DxlKL!Z96q^=*<2X>=~1y>U3#sRPc< zrqZZ?lqGvp4XN!!x$@^zID9B9f5ubPig^);32pcwA*bW(0m9J{t}_?M4Dl4pR~(Hu;dA%VYWyt~r#rz| z-j$D-8rx?6u~YNN!@lL6P^O0+W2n39fU&$2%53Kf)Bqx`Z$vw$}V=6E>|VZ3{VX`@i+5r5m{iZXqgEKl!QUs2Z1?6J;!;EYL+Oq2h3L7_u_Ix9wJNcAs zkz<~f&T+Q=MC`?7CEFjPV_!$qW2CtcxR>A=-Hvr7a0lZ#gkz_8&cO3Xd$#C6Oc;c3 zC!}Wwc6UK|ibUgh5aRqVB=MOMSH!x}&-dEjeX*KmM9=o4kM*;QoMxkkbatG@mAOR+ z*l-nhTm}yn_dK6H`A@O(ij`9m|1HeJ&xyQwL@-KDzS5;}{N)n)H3N|UbD#0;(YR9GoGt6fA|DugG_F)PXU`_!bWpg1HMDzksU3o*jw!4*fPh=f_dMmb z9EDGutpU|UEVdQ2T>@T{z#6p)yv>yG;!dt}A;`ay%DcT(hs(+MCxXJgLU?;=RnZ(7sbtsd4pXNq ziGM-Tap~y}(+H<@X3qee^hhI;Z7y}oo#(h1{5TKV+`*#GomZOLMaAjXm|jJmU#go^ zGfDFR(AnD~+-Hy<=Fhrf>L>jZr8%d}$7IRu?K|kd0XlojI{_OCboO=%j_$yi&8IAr zu;aTdH+IQO6E_MwF`IXi;C4+Ur|v#!R^STECW$smA~BoKkl-nxX7eK)9{@F*hj1JO zW(K)CD3b4@I`!wSF3mZW`q3F=gDzNMpfgCHGVJ&+Uj&&!wvjY4gFFTLlYrwTyChjn$$#R5& zq|++;i1_z_R*_E=b$nN574;)it)jfH+>-!~_orp*R}rTVtmamdLE)3Wgl`)Ok0wD2 zU?e0^BpgIQKcEuUwalW9FmNGJ2_Gc>exMTiG*ukml_}w$zJ!~g-v}JXTTd>Ei0dapJU_h?3@6$vi|ce z?_;xi6m}}G8}61;Z{h;VbsbTCpy~;<>V3K_rzdog>Rd3F?XC&L-wCwpeVS;%HM8ok z6~5AcUWa})aJ>2d(tnIt@$v z`cazcRjcEXz{LbYe}QZdKsyDfY(9NfK%ZGlfU5jU1r*&xY>6ZHj2w}P0&gs&nbdNOlcL4TX-2j*Ifq1X9V<<&I#A}3cJEz#c& z(<0?o@nx>(GF8Z&>oq%ou>7#J@_`av1oF!G=;=1i$tLo+;)H*BSgoo%Pwm{8aB zZEfV6jOcUx=Bi$=r~9!vayQ`z+aEuO`5z%@0;%c6-d zdLkz#|HI3PdKQ{_Ap9ntrl(<1LHI*FZ{c_iG~9+KnZxtOWDx!W&(S^E?E_VJ;@K53 zyt(ZKP0_fVXP!e2aaVJ`f)$gwYH@We9urREc#4$sK)5!ZKXB{^b-to!o$mQ!`YtL= ze?>>eUD&#b@2Q7gOuK;V;<*&Zf5fw&^bg>e0=)ArqeaJw*4u3bGam`HWiLcOI@7Qz z`Oikqc5tqCl!`cUjQ4>}`>m!$@B1FKQc3rjD7zUoEJ=i&-U~>q{q*>Nj5Hq{vXv4Y zWoehA>5&7tS(iBM^!35Rmk~unDb4o*$W{vbWsZjn6Y=&=R-bb?&fY7MWYvo3!icUzTu|3Mpc zg1mwnUj}r7{0)xn;*ssmI=y+A1(@@r=PVPZAXK`0O=-@1!a@erArK7&`rwmK7jcqR zc$%3>=yIVG(>ooSX~NK3XvOwtSTcXn!Ac%am7nWWkecVQybE98zYOiKl5#oF!OExe zoSu@4KeYcr`~jc?f=`pJ54{T4%mJZ~@D-_!KAmm`94~g5RAxXJPcPYNn~$SQ5$meb zT=|TW`yf$glk_YQlbG;hgp9^_y)ZNtcbVnNt9K;r5v4il7x^z0HwUVRfr{(XWjVep zQ{1qm5pg#||Cw<27FxCQD^d4?7h1z2Bgr7rpcKKbLGwVzGaj1Jy~RmpSdr01E~}4m zBA-}31F(QsD<2-?cOo&{KHZq5-*4D+OT)j}6}iMl%PS;TnP{WEIpIME&GbUF7)c{H zTT&SaKe42!L1eBCm%;0RhRbdc1=nAsiLFi9SS~>}vyKR&XWD2<-P(^{OjYa8+mI2h zDcAWa*`Rm}yIvg4J%VxT6lU@6+O%#1B>ymiPc#46Uw-msdrf?8TK7td`@kRY(l2gi zr*+Gu2ewB%FpIn28ioU$UAA>-8hSY(?QnqZ`d!i zrQ%~P*5zxP`$IZ@*-L2KJCIF=ej+fcyg5j;(1T!a+WS%nMU@vr^nx%SDLQKD!Wk~x ze%ONzl15Z{7xX_1b1#0#RIabeVl?#tvZjp)Ile1x81a->I(P75n|skY497ro_bJ0c z8oLdn*60*TBe}PQ{#f96$NpRHaxH9Zkh|})ne!Tibn*SdNj3!r!ll1((hb4;P z92>om`B+C2?T)F5w(DW0C0b#LR;=YBsuK0F3w~L&_x2d}?~6DQzaeG&aHipv6K)Wg zkv{Zfnd`}BfQ-sAlp$gCVp|2$Nu5VS!?|(mE=lM5Cg2HMA)y(!FOi-!f^EYk>H0P6 zInI;R$UKnLmq{#1H-8@5p9uI$0`<&bNxGr}%G1x~$x4tM;=z4sx{gr3LcnvNye9hD z4(9RWrBkg;mnEvvEBbK)2(r)G#=C!fd*t*KU0#{4z5W%Mf#E3`L40@=e@=k(Q}9JrSkFy(mO(2mi|vbgw)X31i)LoEgZU;) z%6m1fD@v67+*i{%MN1IzM93y0%y{5^YN=vfE2kNrpH!+5bneK#Cgpf*MtFHW zs%30ir?fsLvl6+V1Ey^|ryEO)4eyUl1Ey^|r`xP0Z~+0cB~aV8bGnOAb{fD~4dOAG zU3W3o??(bQ1HFyk)tJfK2Xci7#QR~&-EM~P1p*dGU?T=bx4Q`}9z-4>{;|yWPc(rS z6L6jcHmgbCNha_o0zQ{OHN7XBz-fb-w1W6!$3S_C30z0OQXpHPJ&fT!=RD5Nfoy^H zNb5fIa=eQ{{N>|GdTLsCdP|0&X`q|#i}C=Gyuwd@-5x}H-D}eBn*AoAeB_^wvuGLm zeJQHto|D$MN3JF9YaoBH{cA_6V|+3$VDA+~Ke78mez zN2GJ6!`JpOmcOiwPfjR>u3}%NEH8q>wBgg#P|Y7x z*v;_Ki$AtZyh3L}S~vftP~~I)g3l_yf*wulm7IMr`vqi68Twll;9)YMeIlLv>`K~e z8c{9Jcby}FdpDkYaZD7?7(DObcuPE2;3>U;$pLVOY)a0N2Syx@4~J4zav7x+*NeCUS)$6IMx`||?XRES(<19x(e*Os!=@HyduJN;JW>Cd6Geopw|ul*oez4IR9 zaUyrw&;$6Q9R_t62P z^RMF(Gt8|mCnE2al%J^U$A;m*scVHL`#;rHFZF$EyBgaFq6`nFbN_?#XvL4G0`CA? z@jhMHsdT9{Iwcw?X{6%UK>r$WqKj=2q~guWtcwkCoTLN!%yjM{NhT|^pGfi@(3ROq zmM-K}Ko_jc>W^Tb8K^iuP1vb)Rf_YoFU|ny`vE6D=+JT6u0E z&5c0i86L-|Z{w7bBY)an{$m6?O8WxT_ zE1la4yP|bf^+KK>1-iv~YapBNV#Ly4P;bXW+YzXoK2_MMbXj`(PkqTl`w#R(ffIf7 zZ*oQkTXhi~><6`)Oj-M3GG*<@4vDP&uCin;nOody$Rd+>iKXOP$N~A^E5al4^pck> zWo;PF@hNYYiz9u}`p9-0EwjwEe)M;ifpoK|W7S=b!_BtELv}pMc6=9BRDW*ov{!dE zWt4NhyC~lsK({TP!|}9uWZPmVjvs+JotS6Yg&p5zxjAm1bk6<4PR>J)yog(JKu;(7 z;^+zVbiz-T^$!OA>BJ&PUjVkF_@;o35>d=+(_XDL{Fjch8LCf!D(0KE=$M62Mn@^R zn57KR%@m&|tgpuxBN-E3(#XA_=>a(7&uC;?RA!h~lx;Q(=6ht}{x|I{_C>jiq_+VT zGUSaQ5M*( zNYPSKMP9O+x{?X%4@65-$};d0EBYMPa}hcc;gQL7A}8{WKeeHsHu7V1Mq?Ld^g(Zz zC6YeqC#3_MHJis^$2!mH(c~y<;y_7mNXV))5j#-QT&6A6nS>oEIZmB20XtA~vbgh3 zlBxA?CHgw=>iRa!-%5_x7@g4mZeohKRh4C?#fjN6YtK%b+Y)8F>F@5+67vLa{dL^t z&;{Spk`^-m&zsKz&s|n>oZdwFUOdZ7^wLFMJ(+5+DA5nocUzK;XK#u7&K@(i)=lVj zflVc4a({q*oUKB=phWj^2BD(zyG;Mm>1H@@_~#D`N}7rA{b-23z$``TGwg?|pg|4fN)&B*Huu3*o}U09+e9iq_x!SflFCegQQA6utYz`{^dy5c?Tp_{DCE{Mf`U!W0M%f zD>{?yU{eP#UCz}8kbk~B3Voibh+0>$#s-DssXBK^N!i^^{*U#696kCZfPBe&&_9W3kQhD<8C-Yv*rrZ(AQ998sccor#c+2i_h_X6}af z3XlF+(lqC#iU2+|D6+;QgmdB^xu{rT!1t{GI zOLBf9KOMnFKr;-)Bu0m^IrwG)9mWpe*bTUJD$BIbEhCzk>Tsu*!<|UYBTx@cjn(WnD?xkma=r{%tE;h4z+Hf6 z0FHCSGYijyIPMeAJ$Syw@uhg=1D>_6;aOl1ejQIg9OsDVJv=wz7$cr-c;3LVL_9n2 zTyiZJjKIL(@np-*f`m5|}`^U1vG)N_Xq>hjDjui8o0aU6%eWuH!lfP`x?}#~I=gy}AL%bwE{WK91SI zOx?yporyaw6TVX=&3|8s z*9tqK;yn)0JfPxjz_DIDBHmscyFpCSsEjpkKy!edeE4RC@@W5G_edIMRcY~PUt0zl)FYQzk32p00Ssutn3@{@ z`y@TAp-D22k>(W^#nIs*_Id9)4q!ge_y34}zqM zvb?xLs&m&^-rWMsIJ%;^i4<_jjXa+N%s9HDxQ&$UF9P-e8TVG1a?BjZoEwza%yOK4 z?=m_$(jFfb>#p4WH?eIAvPI<6W=b){Hcx`q-Bz4i9eOwQLC6_=Gp7x}&B8Mi$29T$ zPNFYxYzBr!v1P%{N@4Luan21si(0qPC4jQH562|&2#ZZP)&sApO)axdUH93?0d7Dj zJ?3a1Na(v%VE(wD7AKyQtmJH@+O3oqaCB%B$fc3>M5Ey5;e_ag88Ke*LxxY~CBdDf z)}Pi)e1`Qo+pt{j8^zu!n{3T=C7%kAlA6)tOu;u1c=c_npg0T7(+wC^Q(LE6f{;_w zgYEj_oQXc$?J(E^w6?0>Mn?e3{yZE5fMGEzkZh2!c)Qr!>$8{((Nsw#l6AhFw^;&Z zF%QQq;7$6Qgr;g_Mq;i{26COffE^ND_KGJwZe|WCAnphvF^aj_7LNxTgg z#7D_WA=v!}ViKb> z%8vIk@dY}g^i%SN5aRtA5;=0{#wVaW5&(|5EtxAu9VmHqSxoTReT8 z&v~rV5;LsmFB~GUA0%f2%kXte!#AF{!SM3pf@YLd89oEmJm3n$(kXBTt%dPyNR`=8 zLe2xI;`f%3R8$X8Sy9cM=x!S+6&0zmsAjxe&->|o-=w#8Ro%b{Hf~0;)sGoS%-KKEl$iH!4uXR^Bn;?vmwC$LNcyFKJOM}hny99aKUR3gv044B2U z44`}xVh#KRu^yBZMa5}JarSJkTmX(IIWQ_Nt|4WfN5G>XODgCPhi&q!bS2aekJ93F z3Wn}l$hJbi8Mv?D$$c0#1@6;$THt5~oV2jp%R!i7=eyX1(4SkkIIXPCg7^$cEv#Zwm8l^WS-Bb@LHI%yi3g6z!b1WvA(S&_Yoen273P5(v+_&{u4mt z&!v@`v1i)mVh%8=c(-YB z;qjkBAU#bx#AOID0%(WmNoll0yi3U2z%prOWq=73Zs+2n2{6?+t;1e94f9G!tO zs}TDjU3Cm0HvpK4_%&=N;_)}JEjh)7yM>tuKL@HufmZo@INlYH6y^Yq{lKel8_sNF z$i2nSg|mzUy=Cdg`|WLsSF@4k<=M>Sp*5*i8Tra*lkd4OjW>-Uz!}B5QBvbEloNQ{ zY+-{OoUMKi`Z%s!-jIwUCufLqE9{tsKwFUhh&exVtSzV&zdS{CZ1;`6AH0l@6^wJhu= ztEh(wm=5%&ajQaIm4rF?D12O|TCEFp=P%3&NPLU*@z#ZDN%bo!b^!Cz`PPN{7F2nK zaD2TOsACFsLvYj_*SQ45BgbiAN(|jD0zQ?%X);D0Td1p@{COO<&!tOYppGr9Dy7{& zpXc2{e69#`Y+(%v?DqtZ^?>;O#Ts~o1lE6&O=uABaij*ek-&-t+zkftMzY`5#t3xO zQ;bI-enC|N+nT(+XLtqw)0CyOCxPuuV0iNFV+tDzReO^(%&~d=__GM;P*^BcJDp^A zf%q7ibR1`>E?vk)dJzAUN+M9_C0}w4;4M(NMjiz0==1w(bbN#CD0eI@l6vu;r%IoL z>J1U2!l(LfwAmb-TjW--0+wI-*ss|8{*pucv&HaVQm9*SdT4*bnFL%~sB0@Z-YU!z zijjr-Rg3WCpGL<|jc9;=JfX!4u2UVvn~Go~3+sv;sTY}1gZP_LnsIymH+Hxdq3K z;yE7A8XPM?T5>%YRGaUrWuUrk@4qUO@b~}d|`DdDhtSf_Nxrq zLq2WKZ9eVKnY2}HiwWP>6k2t3oux&!!Z*kRDY}0et#4^npk5gXNB9XR{XL-*eLN$H zw=pA$=9Bj2=hMTsvgCMYgU@c;Z$@TS_4%smmAk}972#Fp9D|p$H!8ojms9I8Yui-F zW2{F?m%z?xt~E1+Fo@MLr>Pe~Is!1cl83?0u+@NB_!dQ-U*w(s6}iZ+?fpER|^^3D*Oasme-p45%1K;W!f5;-_uL;xeEVe_B!Q zS>M>=p957NNhTQv9?5Mrq01#kiZ6pzL!epRfa7ZMNb%R>cwIbV^=iF}YJdW%^tQJ6 zNbw!H`gZnm;zt6l{b@KJ5RYUZcqIF^gszbo$$lS>J>rqtFMEyp1)5_=936ny+~yX{ zgZqAB>Pjj>&g_QRN?=_j;yha9O{EgdYvv?G&n+&5)li`47O&t~1kkuY?c7tWz$YZb zFb0Rbi?^DLm?>u(0p9Jh%X}r^0AC51Yx|Zw))#res-tX%dXz|e|2E6U@%A5Xj;4O$ z=fK^@12<&J@qtV;%ErrNh>DdNNk~kBPRYv)&6HdxW95bIBsQ-L4_>=f3!BKyF>iY} zJk_k{fu?w>7wTla`jyvk=v%$eY(0&V-TE3P#wlAWQ>edECNmi!@-&0LQZ*%mx{0%E z6JKB^Vocq;=HcCt(pOMaJO%~7w$@;UW^DO^KCkob4XI+8Z~sn3?*>Vo@oh-yJ%w{u za|IP7b=J2bb&@PKZY5x}1a78Q+;>vCvfn|#*Al2B-a9GXap=8hEyS?^7>!+EnaHzQ zNU@MEMq*~qhw40_hhsin zI7nf4ebnSWBWc9sJ_P*?;6!`OF~u|Y2_>tYfy~V$t1naDQM9yXwT2|CfM(^>MS>I& z!%DL%lQfdmA?ObRp61BNN|wgDroF`GCNHNvl{7@;glDg}Qb(5A=v#@tz(kujEv>N; zvgjUTBADMek&kV72fF#pAYAsK$u5#_MUYf42C=-b)`rW-?pjEKQu-E;x^FP90<)T3ljG2zPBtPtW)m zTGqUu`D~nJ%B!QT>k`Y}eKQsBLI&>ZkUdNKXMp=Mo{w>S2*U5-`3uKE@odA>=1sH+ z=)=?JS%x8}nan<)OjV5uJ2^=o08Kv-lNdctzXjioAo3rZN{-X_{b(EL@Q0`Gutff$ zx-_j5>0?7>*Sro{NuzTI&U?{@+cN_5V6y+n3XSM^oh^kJ>r6x4eYa@|Y0t^DVd?W+ z_HY-Q_Sk3>)d@_LRH*rw@Zyx-wpl@mmH^Wpi&J`k>Q4d=0Mj0?1nm(&LRO1Qj5#^= zEqXjCA4Cl`+!1mTGujfnGL?fNcH$wC!+P$7>~>H$;mNX|(2r^}M{FYd3wXrTI!=fA zKk9$;Wh|W6XYg#E$x}TG;rDbV&*qst%~up0RiHYSZ^-dofdajnijSs7QldbrI3L3C zeV~eS2*+>Y5yd%XJvZQhDo&e#(CkO{ooPN-p17Z@RigOdbF(7h+O(lxc6ngF1 zhbzudOZ0ceX>3D9ar&90syKJs@c*qiyZ?vcoPC($l#Q1?hxtZvLOaMKPkZD1)G@mK zrA6etvebjJ~4G;N^GygCL*}Hu8do-o*7FtHV zybO%`J(|+T3w|eHKPV7#p9uqrT>P7pipRt;yp%YvT7CX<zon!X?=G1@}o@QntM2du=>LhnF-cngJEvEgHB{?fxL+tbOLvZsl|j|FuOmMFELuB57;VgB$q0B5~^) zh8mjE7w*d}RDQ#P9^Pm-RXn1dlGK)|#p@JoF-YnwR)?mJmf6x(8`yRM`ii9UO-?<~ z-jjiOIr#Z0eMQnJ0!D(u88V}~AXTL=ImrVd@}xZ)Z)Oo|pjZJO3+V)8geg0p_ybxQLqu2fzAZl;AkZtnNf_waXH{aftG>1 zl>asoie=O%YGfNYL&4c|j$CJH`%@QB7+PKb+naQ934E0$kw#pnB-}QiEw{}>Eu2X4 z_eM;a;eKmkbHdkPCiNF-Z=+?9%%!|K0iJE6VIhlq#~YBrL@Cz!3>TQ`TcWlE9g2Io`V_~ zt+5t@{yA@t-#c7kEeHPdWKevf79IAhNv zwtFgm8KLgW{OR&8r|KXkG2zz<8H4XS5Z;96B^)n;YFj12}uXvKi!FcA1hn!HEl&>(_5Jvl!Syc|QfFeygSQ zVsf=j>}~=x{MPV?-{FxrEkl_EjDnS@yZ@E3qCG+3^bYP8ODkDArMpC|3k!6XHg>;} zhwiVx(2RY*B9>bF3k#ZywZE3!M*uYs&lad{Z~7kB-#|}Mm$ds_L21c8K9Z=(o+~&? zlJSWjG9yZ_6-DdoYv-OT(A7x1zM6*T3c89pOghasB3R+JDD=-4cpg2D?b>_IEH{3n zEbLYllvg4667n1hj4^q&KrJM59rMb!*9vs{@B;+jfOuTiHmeKrAG%X zj9E4*o20ss>0+s6CUlnxmkZW1 z3j0rfJJHdWNTyMdY1ShaWQpY@Z<527bT`9xj5ir07tfuk$e{P=gBGig_X$ztTox zu=A`Lu&aU>0y9wikZ+yx3iQpl>u9Uhz*wie0(}E+>O)TBKzv(wnB^C!75svLk0h|G zOcM%>lox-*R2anfml2pUQnmS*JLe$29(mouf|TUCoq$aexJLquOrM^~X4iON%2Bt# z4b?LyKf57G##-^Sor-~^DJe*F`~$@sOjMswS(yO051wyud@i1Dc&_=3qbuOH#gqP= zl7pBq2wy@-Lv~-PgKF2|aVJ+)yPf~x$xFxR+v8@~9K(+9GPO$XkLBmI{+%Rp-+LMi z9sqhVX9JFxtM#&3q1`tt`cFo$0}+XUM9&H)Ze^ zOVjWb(heHLIvuqNufUULGqV^(rr5Mnp@;l(t_;#MpQw<-9IenfmR9Pj2u?DG!9YZp z*zlRhlUH=HE$Q$IJa1c%Mwur_ea+_zI}*9|3cL?R+2ujKj!4uF=+kjomMdBSUGQY) zwZvZqbeGDf2|K>aS1LJ!SSfsEm+D#Qp8<~don`9Z7MJ}9C$hy#Dce;0Ou?8`tqMyd z(ZAa0S*-DMsXQq+)#^p95-g<=Y+Ya%dto)o>J6c2_vf1{6`zsD%y93|uPdf4Z;P0l z`}2>{m=j3gK9FBeUcH&8M&p6}7BVqOsI7S@UoBwbqH`gem2WPQ>-=MOzRnj~N>54D z?L_pPd_9PFT1tcKE4`o2FP8W1IxR)7zY;cArwK?}OylKAKLqT#nerrxJm#kRG&5cy7hI3M@PK z!hG*47*>8L>jDxD0lG4J499HXMDMW)rJi{Nt1CHmH4;`FX?p%|frR%t2%{2q&2J$R z{sfC{z}Wq+`JJT!{>z5_l|ZkYbkEm0A*Q2HpJO{QU&kf+^2c`gx+j@BmzR$(kRj=0 z99A-m7TIk9xAI=V~tEy$=9!kbjLa%?kV-C;ozy?1<(^Ss~ zIr^^PymDZ^SCg8pY$|yZ_(MROY8{T%z=>RDS%^6qMgqD;FsrZfhsh2zeb|x(o6Xy^ zd51QS-1X%AI-{DRQ>zY^|lH^GrGIJLNv~A zuCszKF?+x$MC1HUq7V-eFcqjm9O)~BRe+|4DZo+2zZ?1=K!;|-Os4*0Ov6Kr{;B}& zi~{uj%5_c!(N>mH&GrE6`Ckg~vn>l|{~k)%DnI8_7^?!@4YS*UD!?U{kK_2R|DgbP z9-d)_0z`hWxk<~FQfHYhw{QRdYB}C`E-mLo|FFrWWYH=%BW<(l)+4VX3EJ#Ex!Dsn zZPqN`RNpz~A7)0>+H~TmX|oNK^;KZnENa@U9}|=_fwozd$~JqpExcouZMI8J$>PR} zJ_r4L(Baqulbdhbs)qeGt8Ut?-ZxyN2GI_dQrm2(^#pC!mz^T>(@s0YmL=pYl*L;? ze$E6KYnu&(*||X5Y=q^*LQM0_0WPM*%efBXL{|c=L;8@h=}F zi=1oYM9D_OEK|uw?)g8J>{gpxmFzz2Q6;N;cs11w+NJCPc_TiiP?|dQKDp-U_;4tB zgqQ=TbW(rf4z?D zf#!>p>%TcFYJKn(f7CvbO$|bSeH*) z?l`M*=;AuU_ej=gMZ}mL+$09&%~nvPY+_GuPr9DTGMO^XCFT*3mR`2rGU6F3>x$c2 zc27^HwTEqi_H&>;Ec`PS1ggoW|3VbDd^UO1iIT_d=aI)*Nqxo85s=ge9lo1w1Wj75 z>yRdYpy z{&~sN`r2Hoh1Fi*J!9#@n*vVe5x1Jt4Fgu1))mNgS~7PE>{PCDdRwXVxNPY`Hw1|W zQPJ+1$=r<)rt-go+T%|rD31ftdo1B`^fGK7&9l*lu+Xrs3L`nYjLGCUv_{+azofnf zXpPRoF%zf-eI3WEKrQHZ0XN^3X+i%Z+~h>yPw4*;1|Q?8w~Mg`s3koQ#{l4XpIcVe zlFFLHi7d8(^Oy4k8{AAIu8DiR4z}-E7sBblI%cgN4O%HYy;CU zFSf`Z!L#&NCUyNVpX?t3<^w%fC3D4eR{MpX0y?B;n)YEQS%2-T_&w(u({oOMsscn? zSW5F2vSx2OPP;g?`n8F>lhrCnJ{r3J0yDK9ZnX30x*yT6to! z>@hNTpM-2b^m~D$H!618L}6zvxw?~*`QaFZa-*U;i`z1w7uS3`&shnbEE@L-Ls>MQ z2~8j1M1Oe9NMLSJ{8pVX8^R?NVLv%p{Hm~z)!+z#B-etN#Dq%-nT_uu5Uz{o4IFEL z>Pkb)hTR(L3UuXzJa3w?6kQ21GX5nDL{}Q(sS8wBhT#|toM^6PAh)Bv8rHLg4OY<) zbATu6;}l%+3MYm(KH^loh4}X-i`)qWKMJRZfqNsK^*Gjnn2?006Oy%;i8E+DAI~I0 zt38fGZc%v`T880eMj@}47bu(iRlPzL+FojM*3IzSveKood~Pb4I}+v4uHA%OjsV6U z46$0o-3sdp?7^MMf;oPoUL-h85~%{bU`bi8zCjVECUcUxa2Ex*2BIs0?jZPdVW-k% zBobwCC5%9|EcjYjM0L9yv;k$ShqD-Df3IWyrSN{zVzG z7tw%SY&@?b7x8B$^J97BwS}mzaH|0ByLhJHm?)mrcy{CX3dAH$jXe6_S(Z&LEA-h3 z#+xJ&svsBJ*nd@!V`1?pOx-y~JE~h2_X~@#&!XJM8Ww?e9nArb6yseR9SU42zxw_R zhg9hMe&t2+K#Q{-$2RduL35bDWCQOj%O$vi-!tnbWZE~|6VeuF-`quLW#2s4H-*|agLWbQIJsWBN&>hpoI z3uUv6j&aj?C4{dga~kGDD0X2YM0WwT3qD=gsdOoCbN@}!h+S9<{Tg8&t@jVRAm4tJ zAGdl}lGW?U#J7@6?7~kZ`2oZvM(u*U9y1T9UFe0Q2T&aw8nE$QIl`5n*oEc7QgrMN z=x-ASGDs}Mu|PbcV>@ts4|tZ%vQoQnuJ!zzU698lrr3C%ms&|)>yo)wrO2!LE3Eq1 z$!P@Kd^|VfxJEn?JjWa&2E-&yjdKW@XW7U+Lw*kx(5cTQLLO(TcD_2k8y$Jol1cBr z0TLay%qX&rTe`hM$2#7J88jMytW{GJ@6u({M}yPUN8NNz&)P zCgI=u{4VZ7x3u-Fv&d_$UJt_n_>}Y|c~AG9wgb9O%~fc~d&!&@SOD#GpODiBl3Vs! z)v>ddA-!J+FHKe*OWy8PM0NZNy$9|HJY7R!rv-=!S@=dmYP(^l5QHb-S%Kpv(B(lq zUF^!I;iGuAy~@a!rlIHK5vvn^5l5|X*eM6uA8zC;JhmJWXZCBzus1JvJqg^uh`JJ* z3xT@_&mTB;i|1QB_eH|a&7jUk_KbWES%J%+hh+86X;K8U?NA-(g`M`msVe(Z8*Hw; zDRec{nX~d9mrSoC<|1eY1NRa*mhLU#| z!zT0%^FnA23f&oae7cA;Xbp7HP|j;2*7-yogLbtN4a-X4TVomW6jm@5H0o3s3&lNQ zUIVgzBsd3zkHB*yjxoZaKt!q;DE~sqDmzr9;>?BMF_1o%6h2KjaIxE>?du{!q0wTuXQ2d4xTQeomu#*B>;6H+P z@Lhh}NrCtK1wIY>9zY9xC63F1DezN4l{I@kqrlT3cmQaDeHy-IXQ}-S^q|1YpvplFCqN`$ge;Y>Rrp2m*|QZy+S3bO;z}|dKOS^>WZTihzUuFXp=UXpOoQ2 zk`AB=M1#gcc|Fj2`Xnf&@5-#F>Y}`&7>l7_1hk$u0ye%Ya|*CZSc>r<4E;c$#{YI4 zH;YG%{~8>t0AH-KtaJ)6%6k573NT_RS0HUX_C&<5oy?h3PF|CVip6nA1ZEd-~ z%_I4Xc)7Yk+@zRPlR+;B3{w5nxy0SSfyWj7JW zc%bZF!0{X~8*{ZSJJvL!L&;?B2v}5Z%zXysM<9BPCDe_%8n4lNn%U;{>+UfUhSw31 z$_qRBz&qAbeEhVTF>)KhY4|-9yU44QIY#&gJZ&Lu4YVKs=TYB2`L3WJ7bF|(k>W`| zz8w0Iz=;gE31rtZ21}U_l27z$8?Ni08XuC+N*m(K+eZZWjEHG4ngYCamZCWZ!18e- zC)$F`j^1TK2DG*8=!}nZ<;S&m{tcqM9ZD7w#j;9FKWqYteQs3f`_x)gv?JN=IMpK8RJM0sqCv_7~ zRw24sGSQ9bL|kZ_Crk31NOW;j)&Y$+@kb_xdZX+#r|gwl5PhCkB>V0mF`W9G+~;{6 zZ6$#6^2oW#p@@$Jsb5MfWA5uv5D zl(}dYF$++qrD%)^s$zrcCUl!V-)z%UA>Vd_;X77BX+D+kojiTjUSf1NV&Bcv>liB4 zCL@(o+MT_BcS@e#n;*#`g#50y%@vw4s*XL>n37jRiuWx_@($2N^RzrYd)b=|J3oN@ zOQ?ni^NRn%oQ=p2J41k3NKZEzFDBqQP+n2YYbI;5%pSti3{T|g1(0|FuQ3MM^5}VO z7VG9W8&dcAy!45XyG2VGkf9k4+$f%9I9>uVA*<1qkfUu%zt5DDuB00gPK{Rl9lO%7 z^^Y;yN_1O^j(%&SHnaJKm6V;`l{UyMkWEVS*L@~0t-HFhRM^P@7!z4>_%-M`8|6^% z(Y&0;L~!Y_&7nF`f@w0q;>uC`ODPtQQp2>^x~BconL3`BmsXo|m`~Zd!_+Fxes5 zW_4uR*3;H@r7I}Kyu9QrNz@av!osjq0E~hA)g}r#zAMOSbzaWTVDf6&<|*R-HPL8p!M}6j>mziFP{mMC8@8~d9{bZqSENU59LPS<*zjP z{H?y^ImHSa5ei(vvG!Ye-j^bf?AgSN!cG;Sdp3R=Ml+k*FS+dHZjdyxXVV<|qk!X` zZ^``IV51!D{WZ2K=5}_RgQT%`y7!MZJdZwW!y=6>1G!V%RKqdHAFr|fJK~EW_M&TL zvfiU?vU4iKyhRzTbevzX%d&Awr}w22@5<8?>WZc&xRe6OFErz`2L37UU3q%S+n2)i z0p^tVt~@>EeSm<;Ku>wc=jkc0JYQ0n&!okjU~G*%eVHx%Cfi)t6qd_Jlk?&;33am? zvXumrFM<0TA^nS4FadW5p7Ii=Gax2u!YOEP!gn_b2TL!1{&UiXCs{A^%+KQ#nY*br8UTYv61U+w-T~l-WUmo=Ou>LL&9xDjfdtg z;J%ONc^uD*XDyzOaeN43k|w-^kWhKpIYfxgv$KyfbsOTX1jZFJmF&2S5?&+WFZ1j+ zq&WuYJbMt1e&UgN_DmepfD`%2iZ}fP$2p#aqA^k43;(AL|J#&1Cp_p4+njV_QU7Mm zO#YRwU}O2Byxi>~iKzc)AcGPp8sW)%ps_EHnL=bDZhUV z#YBW?Oofzmr4@pXF70@8Uhd2A(9$(P(mFs(=hKCQ6q%j-Nl7E68wh=W;6%U9D4i2I z-O3_2$KHilj5FOma?plLaU%_kocelaV*kD1kxMM&viW?>Rg-YbzQTz-Wy8f7v@_v3 z;oy;|NW8geQkiuP_M_A5OrR_|M=|q?)U;Hcx!rQDm4|lm`edY5^RV)#%9Q%@b;rBT zHl5tipy`5(ch&z0NdI>6&OBbmOCs8c%>1tu87^taTVOfM6--Rgpb0120_d%|vwgdF-fSTH&I0lJFOzp!sW&$Vs zqggDtEjzX$;Nw1$sJTp7d{5LD5N#I1$Same?o)hDG<}5Uv|c4je%{fK8Aq@zn*W;7 zENPk_DAc*_`ojCdL}=`ThO)K!NBQ4sO!=j(7bfaTS?gD4s|%=!yWNuW7@<_+#R+c) zCLnw~jLkThcA4ncnqIMJspnVv~5KsHFv}5q4^VxPCBXa6+%4k0Ri5&}@}WuZMGG zXSRfMJXfbHp{rq3T{I(}tDk8z7vbZ%`oi)e`GiGYu1-c0{mI=;<|bcaAyl`B=ZMO3 z^{c9^b^`Q~+qCnQSjH$GF5R=dn$;#_vDP;^%Gk^P9Uk724miOe8TarpwuI27Vb3N@f z(_uOdXs=m`W4U;w*L;WLD}bH(<2)lub3CE_WUj5WE3VJ7Ys2i0Yr{CDiQ^#M64wSD zw9Vu;-uy%N$1;S{_Xi4zzJ>AV+F_?IF!jGBu5UFyK)`oE7p2?cYDSmVp`k$eE}DKQ zY|Qfh%ebB%7hO8ialeYIiOp`odU2G^+Hoq_OmM%9S3Qw5ZZCfT``vV(y!aZ3p>?DBZ+X_cZ zpt*QEZ0ca+ZWkvr^3$f=_C{q>HoM1?*6Qpy&HP-&<9ILFsK5?I-}Dofjg&s}hG~h= zVoI-#_C~zE=zX5*`x|lnHi5R_Teby9h3k{x0qV* z3n@`wU=|R+#kAv|Tc2eUNWOTs^3tuKHVwnhks#ioHh~9YY8JK=uo@(?#N7Q6i_3>& z&AX=$#q{0N&5sB>ML=G*`DaYWtg%cmhXV69>px@qHtWSr!p>|E-_Q$Af5!BE!0#W) z5ehIL8vQG#yCgp}YSZG>Ms&poU@wj;R0(_TE=qgtd$as0E|8@m&2N$mdXe4D^E_#jV+f z0Qy0Yo;XecF`?HFf=s}7C*W7!jKBqyFkio6)xk)@i`d2~gX+ z&kDg_wsi%zw<4bZH1(jicRBP+0XO`PVhn0UOQbxoW+SFV$R z)%#5V^jd#CZDM+TZ4&p0=O2yKT7O@Y!xtbXFVDzt-pad&H^x!`Wt8&g`Emv zbY?vFPGKb9e0dA1wLt68Ys0DwXdQOM(GJ8Ujn?4}_^t(530YLiFR&8BD;EUr6%6N* zt8FF8M^IiTH%e$eLmj=zO7q`NFuK=z$@}0C!ilF-$;_>N24$2GbG#;uP+^GD-oZ7NHum*ks}vJda|w80nOFB$k> z?Y;tL-aH%SKa?b&j>se^Z&oMdY>@)D8$^Mp$GxwsWAxjz#R0PAbI+4(5yH+OXx$lc z?|SH?Q*3Y%74FOl$rq&8+92*P3FWM~7rnyXZ*TO?vbiVoOhOBG#t=8UV zn?$~l9jJxVVX-YqjO^rB*qSP*#+StNp2vGX;@$(IuUR^oX*&8m@jg4I@G3y-lJxR( ztHz6Og^w%G6K^2(dZ5n}dmX~gFL?BMVn12r9}N8GiNA#W3qX&OeS^=e3~0Jk#H;a~ z-z68_6g&=tA&`&X`g9n5n<87~qORB#`BKuzr21Uw&jyay&>981D`GyDV$8ulTW#!1 zNuJNdbJ`ulwx;X}#Uw<{z|C+O3)Bp(!m&))I+4}3V&v^)eMm;VvqJCXM838WlW4Mw zO@v(aj+|=yuk`Q<8qRxr^#dxrWl+93A6;gZ_oN~?&&}2o}`JIU56I?)WpNusqWJC!cA9j8vBCfBV zdC^QyCKGrUF!t%inA)c;1bixix(Bi-rqksnow%|Dy3MQw&%H5sTfPxaPcV|!!@Q;l z6!`Tmv=T@%7(v7C8AD5n;^AUX}`F8sAPt_Cq7D;Y>M z4CG6gH&_OAkYX6T9;>=h7|7QzXF)#`IN1~N-4hTt6T)?|qGoL&ln-;RhUiscE-~io zocO*4`gIOJB|DD9`(Na&Lo3uWEs?c<7B3J8`1>wap8Au#HcMVbv$?iLlCHpw;<**a zI1sLhXC01}AT8WpvD}=%RqS(n#tUiUiZ1LE17$lJ$A3YIaPl_V)WQ17`N1k2hD@s6 zDKP#@m*vj+UMx|!oo#}}a9ku=bRo?)99tv{t$k&aZP~DsY+V^_>R#lt$?D4Z1(Z!w z98G{_BcI|+*u-9j%P?{`#R@hH8!@YWNYxvtS-lp=)j-Xv&mj5_2EJK+2+|qAmcMUM ze%}=c{yybzZ_EE0DOLd${6`$$10#6$^&44h1?3+kI`vVkcuxnCjwdSBEzH*l&?$)t zPa~uUz7s)s4xYPk+#;T5@qCKoLtyUTS)M3^b@`%Y^)Fo@lF9wMhTX$Xec-fS27}p> z$8sFK2s#;r-^B9-jt4;txyiOE5Oo{GSwl+oR#d+eSptD9xmV|tgaenKv)r+3ASIJK zcK1Pl4=`7$J`4EzF1y}x%D83U zH5R;!CNkNURUS1u%F@W#^RNwV;d;aL&y*=<&?kdEbEm99Z*1u7nECeI zgK#KpA|a2&s*6o$_impRwDhv}gkKudgZ7@KhGPqCpZr2I-mI`I+)HECWPkE{3OEuZ zXUo#;(wM#?rubxfBS`AAQJ2Q_6)`&r_z37rWiN~AOJ(<-!deXIO6786_Rs0Tnh?a- za2DcTVOGNL5%31cXE*E0m|hPUaw-QDAZtiBMksD1seplt$$|dddt*7rBeZ)bWKToC z0Jx*^yocjm@mz-I0FM2jRR|; z4fM&+hj7dQF(K2(KiA+}1+*aZEt`%L7*#!x@TjYffi^m zj{d;$W?NSF@z0!arpUJ}WMXIuT&F@r?iH(Ah|;)^5j77EGlBa6p4#Vd@B(5&7G6lm zVth}7hD(JFq2HXq8T%?cP0wW#0>T^cT#4gy@qC774vt5~^BtZyajXN`CCm9rqm?7< z4Ehl{o`^L37I5jT7 z*ItgLGJey9>|!Fy`-h!U;MBMVUysAcRtnh-L>v!EMB(gv>j~lKely&IHcOsr~==eSh!! zyUgCqRI{|q)TC)DO{LOm2uUJ|HnbvJq7sS{5kmGn@(4xtvS$rXWf$3(N65Zq&;Ea3 z*E#2&ulPOx@9XuMIm>lj=Q{g(pEFmIM^v}TbAwgnWa?IZOG_m0>GG?0!RzEKB`s&4 zxDu?AggGiVQ;e&2WhWEPOrZVFT^Q~Vi}X8RV)zu~3QuEyw#o+0`B7`y*``K7f0l4^ z+l^(7{#^AVMe zoc3pI*xTksI<$I%6JB%Bfo?5KTVmx<@;Y@zAe{Gz?sBsfv* zdc|I=Sz>G>+Xb?Zjz=n24+vtxEA1@o%VlzPg|A>Cv_Vd;KDboSuD@DzA)bx7782AS zIl8Z~ImgtkLu_UBm;N%CUX&pI$kDK0C*hw3?Fi_P9MxgU1R4!cETrFC0bCJ046&Rs z58CX_q7nX2gP=KK@A=7^11#Hg&?I)I4F}~+aafe4gajA%ue&T!RzXjS)R366I0%$)m3d0D% z0Jey;VBxu2THb=L0^kl(vIl2dE?(}^= zN7qjFPO{J(Y|9C13VN4ddNIcxuvjZ4{O%kb-uq8V@Uo|TcTNjEU!nI&-fc7xz3$G@ zJ;$b#IJlK#ZcNi9n)^&JUU@N53|823JKiME-Eq0?G}Mm%R^+r2`8Si!mx6X0&Waq} zBE9x-zWf1A2;@c+NX-#+v>-Kz0o7(JmWjrN1hz6KvtS4%ZxUX?DE_R2@Ci^Qqc2As z#U`6qUieF%mcq{<{RB`9|J8qyasZG zEK!Hc%p>WIfS#M^KEXtqI|mmd=FLp;4=AbUCaRB0crAh1dzlgwI#WD6d?J%yCt=GP z)@T?;3R9S48Kh(l#G7_e4kUTuP1Zw7*+lhV)v;`onFx8|A6ed~JMXP8S?_eaiAG^5 zmf;9%5mC1}+IbtDsFSk1Uvl1i*^t~)_=T1zo+Etqo#m%JpKO(pt}T6!wMfwQ&u97c zYhh)awy%rlfo!l3*o73mz}A=(C{kKvFUYBBEV38mbd&lc<#e$vLgr-ARdK=prae-6 z*@8cX08~mZQ!opkkaf#mIbGF*g5N7guQMwMX-$IOIYm=pkXqO~N8b%Kw`upzX(iJH z)0X$n(PLOmJf-<&4ni?N(P5lcU#YEylXrGJh+^$!04 zTZ@kU+&}?Zg%n7;=5j`f&K*K>f+N;p}Oh18WADE*%Mg`5sz;aNIb~19_=IAzj zCLmf$n%Yam%O955wlyg_p5;#YU0`#|U%HHHp>wvjIeLN5BFf<$P^5{}Hm9>B(*8%Y zg$nY{mzcCOG3jzl!s`g~G}(4A$#xtLhXI|*wKp-#JvQO}fLlt!avFr*JZbaV=d`$Q z7}ekzyuzso?|W#2N3eW^&@NPB4z$Vr0B~2 zd{^$%zh~3dH#gx5Z4=_Bw96cAxPO*+z4LxJ_C7hwdq3y>R_uL^^_B`e(|NlJEN3F+ zWMlY57S+ET)u@do<7KWdBdSlcLQ);G>ak8&f49lOUbrM+_nf>1q_Iv{e<$&N1&!0y zn&~vmAXjL0x_T(KF+h9o{5Uh5DOU?4a+$8~joilR>JpeP1=?%Bg5gErh2L3qWV$*L z1~*+zThagbbTxXxlE^~}!e+KG0MCatBfzJW4`ng+FE>-sn#*0R)nuIJ4r<- z)Uy6nX3v>Y$?rS>zO5P4Rlhb$E&6Vg9wYfCV-5mU?6V&}4`qBAjru+5OjP_snRbm$ z+Cv$0vXMsT5hKqlUqC$$R%djprs^`2QVf^%=P$hzIa+U5XDUTb(-~AcpvAty9|q07z>CIPA}L0i_ug9DDtP5$3a-i&FG7c{<4jrp*aXeG;Kd`%2=%Ir zo^d$?annKN<_q{t2frpK(q#QRqoa_9nF((v(0`Tfduf^V_xJ&fOV>*{*JqkbIP0N$ z9OzN*2jiaFnOa!BV0kA0Hh6W@@(<{L6CT;Lbd-tM{Oy)=u zNOeCBqN9Q8?&xSeEr$~>x{nYZ(fvl~SBUUvu_epaJ)LhIby8V>rnR*tCiPcmS-fe< zo+vXoqi55$E+V2!dyF=DIyj@R0)0dvPXn2C49@79ZkLl-HURD9gxTQCZe2;Oij$dz zfIPnffkQIdt1ZM~jyOKRsydGPeDH`pMz0`fkP^L7)B<5@VI26)L9 zL2F0x`N4z~A=VL+6^3!s_S}UZV+Z`AK2*g+~hOm(YJM!lUuF3EA#+fSgEhIZjh0 zVP25Qoa@3YoyRZ)Xqb+U6*{Y>i;#pl(}g(<`h5ZK0{=BkSuZzD%UzbAVTCo(?CUSM zFq27BRy4-5kTTPS?kK~UCp+}-T&AKiA!OX)Qf{NMW2ceQu1m}=M)k!CvDG+37v_yU4OwP8FSKhFvNp^ z7X7IhjuDHTw7nd|#eiX~45Rm;vbwi$9;zqUUZ%>;Uv?Xd0y4Uhz>H%b$z$%nT(u)uJ10w za0;h&Pc-UkkyvR^_CkvS@122H&bS0Bz;PKm$ zEfX?X23`-z<4PvWz|*!P+aP4J44gWPya8VNUP~g&!2Bx5qwwsp^x}HDJ!$&;Jt5s4 z=xn}?gOSvV{Ic8sLIfe3F zzn8V>LTlxCCg?|#adOtPh0*XnB-{m>a8GEJary@9mmnntu7yp0ZjhGQeTz)Ta!sjRBFhyTrMif z{f}p&!F=GQ_qL%+m7zO0mdZFLPKd=4l{T5oL8N3LZw}lH&q`1xO}L{AW0Px857}B(T5B;~mi%zzRWH+WPyIa>ha^19O^glV)QJS%Hk)#9L zm98nPUt_(caMZt@ZTTkKlCf!~WvIM{Bnh^p^(y3PX;bOWwH4c6I(NKn7Ph3@OS91S z9M&5_C*M%$Vu7P`3a#PN+_~9^7wfP?*Wi2WV)}j)^d{7`r8dY-PfsEM8^Wm zzD~VW$nC@&DP*#*GZ>OVN+$a{qqZYkEM&5;a~vecDw*u-jJIU2I^8E^vafR)B$o(T z`UguQ`#Mw!xdY(iIFiF8l3%Awhm!qTyB~#T4ba+Ma6Y>wAXmt=cK>WST~TihUsmm2 zwVgTx#M{*FU#wTw9RNF9r@(V2n{-TL)8-CwV{f984px@CF) z)yo?)ILmK~V_g=r9-8H?tijh-Dq2@Oa4;%8Z?eE2i|RUfc|P4uQoMUt9OToj7t?0p zzNTO+H8pr8-E3V4mKh3Uw)3j-tM7EAX){jbC<20aD#vew6@0c6ydhmLf(!I~!&7Np zpztcL?gZ_cv~DK&lDn$Jnsl#5+6Nu&g*DJFwQ}V|gwifecNW^hrXAI{|L>?^zCinT zTE9Rm*fas3Ytp)>R#R|O6Kpr7?fPWJ)vWgf=UD~XJE7;Ldx%i4VuE}PGS7x7@zXHp zr8{Yux?49d-BVUkkA&r&{Kxb=%Aut>=)8!3ln|}$F1C;h}gOpL}VhKBO(Z zUxaB--5mj4ffv4E$>fr*8F*9LM40w;O@6WwjNY?Ue+<>$Q7CwFGu=@RHK5*}HCag=;7XL($ECtZ7`@JQEw zKlJwkFZ#ohxvrf9NM87yb(F!~Uhv3Floj%@WFaOyR`lnt#OFcB*YQvCf^^y$o74_ z0{OEW?0rD+6_y(?{2Sy7ZQ@s4iZ3IkfITK||f5EQlCeIyiGbeEcryhZ3j-yP(JlV0oUw9;QYN6i&@ane> z#Km4Sr`9@t%F_0S@JL25w+{PRcR3F5yLBhI!a-T?O^J)mxM-|(m!=rEOd`jYU0Iu! z?#WD-Efpy)={z_c-GdA*c>AN{5TI9*&$DzKs%G{jg>9kGNqqhd&A%i*;dPcs;f<7Fn(hdI*zG-9I%KSX7u;JV$8jK%QQ7(845Gw|_DA2YGreLQCU#Iu5fzs`Uws z8mwU7o7Rt@TBoBy2o5^q^*l6B3!O~SYAqe*Ug%CqMV}sJt5NzY&hG+kA{<>K2dSbz zsZwtVk5s7!=m!8VeTWq-RmTkRcD62zP2)g~h+s}CY9;E)5brS9Cy9u##*!^SL{Ge> zfuK}R*u%P8yBE61E`e}dBVql4mhd{}`6n>Ld6gw7{X1@)xi8VZvsQb>;Qh6{&mh?vR*&VN|W{JAOh%(ofa9#8L@|v|?z0%fF zwIRRQdYE=Pzx0tS!^;r*z1+i0oYm z^7M{^Eh!x#K83?NkbchcPmq#Ru~f!>8;xXt4uUl2Hl}pE*?k-i9DnJ`b;+rk-WTvD z9|ORbO~SMGr=#UJQ(2?sx2&I6Ue+AJPZ_~Qww6}LDz~3%Rema^2gK4#sSLn0CQqfb zF&ToxuD~=VPo=amc@l@Uz(npD6S>Y;C%pFH8a(|KXnXN&N?Vu7?f$W~sMzfQ zRDIBvRK^`%Yt}%f+|8bxuhSE4aC?ceBdJ^{aA|h;K$)s`Ggtu#) z23q&HadMHB#_6|4!f=Qslww{=5(>i{7N5pg_x+^!4}D1@zJ&JYR7f=2mzZon=%M{R z?|d9HiK?`TZujw6CBLu!YX!JAJAnsr+eHi&=3t zORu8c>%7#C(w+Z6GJFm+r{-I7mIHbt;H*@p{&<&D*N{^{bIQ?iPQ!9!=TsZv(VT+* zTEMkamP~W1Sai79y3pB3P?x15)2l(g9;iAiVs)ko4F%^>r%u;p6fmIbI697F|ARWK zojONCe+2N-uVkyE3m5mq>Nt~4F=iX7=z9?%1?K|T7m0}QTFW2>Cy)5pf^yV)>yDjK z!hw?c)1|YRN#^%~PBVXIs#en8E5C!mWH3CX2lzIxGo#dZRH#a>;(o5V4@lvmy5;ul^FK34zhasq$Mn#wB{hetPB7{D3zFpLFO|!p-`%g{Kq9%(PNH{Ivb$tk?G237 zR?z8a{EtfRDnp1LZsK?n$Xi!O0LLVCMJ4A}I!@4g;!Kk5*ksOL1St1H58AmURHdol zwG)jBgC6dLLz7gnXr^(f9KXc#R?TFf`!oxv!HG%TJnw?A&LD5uE;!Cg>M64^I1C4s zTgW>UHy z!S8mElB=rAZK`rP6|}+q$;`R4h^t&kJ@xj4cQ^>n#PU3br^OELXf!@qga@tsmYT66f7o$-6blX2Z#A-IzTQ z!N&mInEe{VhagwT^uwDXn-DYy`um(H>W=Git7v0^`S51cc4Wnf*B#f(A-Pn^WXE-( zC39oM-a;ljt`9@u>#1(&Cw9=7W=MIlgc;pA-Wv$2oUm5J)+mis5jOD?D0`=UXvN zZNjuhNMkv^!us00wCjkuZ~h-iMb(}zw>OHm@koBPfPkqqtNZHgtsHm z#5@MW6p$-CnwSf%m=-oMr=F6Xn9Hs2KUXBzDCC`L3Qm=kai_?Lle4|`{bw02K|5Kh zYAfSMkr5~8UjI{uOVXj+>Cu>^Q~oEvNmTh33l7&o*h`>erQIhVB=h2H6~7z61MVJF>MxCi{geAh}-2WWR9093##3 z8y^dq>=!-@$y=Ya9zXNl%wVka1a#wvzv^TYtnLQm;dJoHGdcI}!ZSCf|D*HlG z&$Il5_-{aE)xX%JIu&2tUf7f@Zy;}WzlVoQK;9)XhkiM!Hv=7w!;wI@7+$m8A|Ewa zlg(1Lm6FX?OM1#-fQz8N5O`(stePXujZG~rSMXXgU!PaI58``(KCiYJ!`nb#Rx7)g zZ#uvzdG*jqa{P_2tbOkkBON7C^h~bl=l1s{Zf2BmQmnNzxm*ZdOg1^51koOR00H&` zp1#m`sT~RNT@?-M!dWfn1@jm6!QeVfYxyjj!=N zW(EGG5pv2>@oN7-+Gf~V5l-U^eC=()`A0VC_~aeF6XK4~nc|Mmy~F38-wr|8`@fNBf0?X) z2m0VDyrTR0LIJv5@oBjd7s*#W_ZHaZflr23!u3g*c@M?3yxjrUZNS`t;s`@d$e8rC z5mBc4c`(T}G%v&O63{z9e#7t!(97Vf*Cf2wzB!2!u>MLj200x$=n;FJ%zCL z9yIlC^1LgFNa6u3^KqUBit}FNOIug+lqUEr%ny3tyc+)%An1T){|9&(31&M<|olkt`d0=@-@Iby$U{v19_Dxf(5Ji{ zUFc1_1v;)7x!`o@MFj68zjA(5ch zjC^G!a6Vpwa@UM}0Kt1euNiSPf#*!+woJs=jHDl-jRtznh@%Q)dRK(pi%p#&?Fi(j zDRZ_>-@vQ76*YLuYp*kG%8Y<+7|)$I4!!u)3$b9)@xa&~zFX$I_Xy)9F)5TS=!Mp#KhNI#sMC z`oN@9>$oXzxGgK4c7dS35Xu{Gj)n?vssENvlcAjmG@Tq(6w_~?PUk>+HgLaai52{R zKjp>v=SiB3ukAq0u330%r7d|1kJ}M-Hn`|HyClR~*>%>_j9;p*@w~co zT{HZBvQl2Kc@-%yfm9#F*2m58v}H7G-zTeEKp*UbSF6Xk{uJbjPs`D`#LaLY%f*G1 z*TUsRnJEk4(#2Xh)&tWFJHpU&CYL0_be}LuGyEkCp95`%n?BB10BAGZ2gA<5G{b}9 zaJNdhQIy&2!kq-sI3cV(98IgP^SmwRpz+aIuEzOFP%LjK-XAx^LK6g0zP_LM9{!tv zzMpvI6I_%A^!>zf|4DfJ18sC2cNEKU1(Np@k2#CzNTd5BtmH8$>jo6wU;oTr;02*OOLvC2=zeV^6Xb%G#VMi6k^xH>x5v1n= z`Dt7FP#lq}6-3yzrFTJd2hc+DHHObYu8=ggrH+;Fw1w5Rr5&DPX%lEVt&PPyQ+7J_ zkTNOhGy(c?K-1|g3}*t9PCLixv{piK1>+V7ZUUN4j)q!msofevTrf65`#jKea#T@F zzkNFW0O@zY{i1ocVEm7^wDx4G{Z^FxQ`&%2uv9#af`Cn1+lIu==l#z%HlJ@=Pdokl zx99zGp8J#_mC`G{Q}S+ZyLdXY8JZv`m3bLDeI0jqLKy(`Vc|>dRllu)?DXRNU|npZuK!bJc~yC(@ZzA=0p0h@G-Uw z471@KfztM2VZt*H3lrXQOD403Jt6s9cswtBUlxt}hgsptL`srrTwG$DDV|8V=Y{({ z!_h3z_`L80Y~w)WCSUPNVtvXK1D!}^KQA0+Z0zNQ-!H7jOhnRU)?M>6HFOnYDmz`F zkC2=zPURhVJ~?*`UJD8IOc0F2@-&A3fLtMKeljk~?!~jUdSQPe%-hqkmp#iY8z}p3 z7zTh`AxjARTx_#}?v?e8#Y_`1&xO&qi_k(gS?`199-w<=j*gDNa)dVPNAzN)$-F_?6eN|?J zUbZl#r(Kef-J7?Kma4qYhK_Z6=3$0I+^{X(>Er(Q$gk8mcIAhMJy~WYYj_} zWa-HaNZ-O|6Od0OdnWY|Z{HWWI1DtIDo*;X^GR4w5GUEm>y>OSJ9!(hKL(OFZ()JV zMlBheT!}(N}_oEH7brUMxef6l`K|4Fm(Q9D-pa&`qwhtvJtf zrZ@u2qr$Bk0hG8M`dfk5`b;EjuuQI@y?ikZ-vT`31Wxi&3|nF?ovDSCbAG|fsAx9y z!E=ypLgb4eSc_#Fh9AXp7nas9bJGC`Zosk!hJhgQCYEC{90|PWZ5v3|t3boe(?zY1 zhp@J#NvY#Zz+PX{DRCkmtKq%{sHO*5D$jGKE|xyHG%9T;X)Buk2K_HUHLZSy$qi6V z_r$QfSVYsKF&qh0(@QX12)wAb4MZM@(uRH2TwJfWu5!a6jYxRWJh_!yt{!J#E0?|A zZ3&XGDdTjbbUiJ)wTJ9Q!gxUf?S^F=hVOxvE+-)KHv#Ul*KV)!sTM$;ib|7Sajjnb zsV!>eDJmL;0JZrPo`U!Ir7TP90m#8gJusHIXvy4CJp?&8spr2E7cHCHo7%Ovsa*+f znAU1E#8jh61bQIQLcPoe&G!whDbxofo1BV#E!4qld<74k7V7=53;|lGFT$`uEK;aj zzs}$vXrca(73X=*lwGLTU5sdHI;TND6?nB$s5cYxW0zzVE$D`G}quvap( z#fkd{hOdE&D}S5f1XSEE82STm$mg~llEFj`T{p>WMhR}r&>}JIa}!45#b1r#JAZh6 zhg#ojR>I9DmR}Cf^fUZ&3O4Q8e2`I3)XrMs=I8kzjU*Y9=rF1L{z3E~>mzd>C1ZRa zOPNUdOXXC$8C0x~s%21dBFaw$I;dD5^_D@!>F+S_24+yPJ{ly0ig(^+&IQc);h9L! zqlE7hbzrV?e>T$7I=kc02beP{<;mclT%$(iGHyp}zr>9)UWjy*aWABI0~uv(jC7Ro z9@aO+iBZPJNJklae!$ciq+~>~yNy@cE6S(Ac`?er^$IC{cwGd|g&1}i@gt+gNVw(t%lq`Bgwok=@f+5(mDICDMmcOA&y zc<%-HMQf~V_wI%H4qpb%mGfZv@Jf>B-m&E2mPj}9X2EwXkhJ(P(hKze!1_JV3f3~u zByQw6lLRBb;G?McM$ua;*sKp}8i5w!YcO05vt z+J6SoCm>gR^jiD!kGL}pXw)4i-3b2fTKg4vUk~`{{rdaH^6N$ZcTw|tkuUe_KMmQF zLVA+iSU=Vh_7_%u!4FZ>Cm=16TklKcw)=$KP5%Q7Ujn`5e!k`LJZFmg33to=u^%(| z0D8;)?HFzb=9c>0vzDaW#^GkC|J>{?z@tOZ`PG*u(znYBF z4EoAuIE(t$r16m`{T3DP^)H)2pQFd8qL|!`U-AhV4m5*$W9S7uy(2y+$Arx=ppXO% zlTDj1MTFcDKM|sXL9Y1d9r3HN-2(KE_~=uviV%z35q}hx$w1c_olIT@w$h!7+!4P~ zG?X>QS0R5H*gN7S47nrzPn>=RdPn@2&nW3Y?})F8Rox1)yCc5p^Muy|=pFHngt6Fm zAYIxxkRkz zqt$p_X#)i7fUYY!8rEVh_21UtzJT^KpzBJGDvIe{BDw{~CSTC$1N%#T^g`f064!_E zXc9C@mbIe{l@yY&L4rT0LBA6SeuDVEuW5rpuFxhb@jhxR6CaRhkEQoF?7M(OcP#sU z%a9u+cEQs0J04WQ(n7B8e>x6wD`Ju-72k0+fyuJ&6+iMRAJD9EWb~JDwKAGZ)_f#| zPO@eT^zQ?cHJf7D&Xk=swGxnIP39+Ba-dnWBZf}EWX%#=x42u8o-odu10mQSXx2Cy z9^10ie_Qgq2-@?3W{snYVtSVcE^D5F^eG^}o`XrT@dTdO8^bnSzXB~TC+T)+RIY@i zn^T=4vx3L*S-LIZ%>cnYSVsNA>NW^gVj2G%vj^Zs|FPV0?>+4^Qw$~4vYW}^5tgFS zR3U!+g2H53$tFmG4g4AR2iIML;6W^BVVDo1LoN45d+5%;eh(sR6f{m7ODSBms``## zi=^INyAGa5L2g4+U%QvqN$p-r{-p5%`U%^yw%ub+X-#gQC}^E*@r6WRzOddI`kugx z7Fn|Fwvk?&fniVE{PC?4sVpe7Sj=iF^e6)DAOszBwgBk80Gl7O5@?IL5ySJqh#POiB`daXfS-?AKjp;z0K<1c#kKT8j)8_o+&~Pw0xog3#ajk> zUd7EL$(M&Cy`asPK1sn=Ft14*9_fQaKl`EgIY`NY_phyBZX|3@F*+(L%0qBa%gOQ;LFiotf)-eMCPJ?j zC@I8}E3}ConDz)muQy2Sisdy78^p3NmaC)CI|n4jVmX&r7*7F-DOmPRgYqnnv{b6%tj^@gNM&$Q_(foqn#Y1-GpY(06n5OC^z)FgAzIKnJculTQGSQys=0C_H5_))H6tip^0{BWO_L&7`#5ZiVLM9L%%MZr z&i!9(oH^_%$2eD^tvzQ5%i90N!ma^fEg|nV6V?YeGN`-~%iO%sn*|a#VEF{Y+hVy3 z%gOnncPvP(#gbDHdVh%JIV@LVIUnfFIY*Y6l=r>yl_YaRDzkVw$t*YL>`+Lt1jX`M zrlSkJjnKun<(!NEe4t-8JDQ|d)dCt8;U|hLS%m)#nvZ}N=Gm;4Mfg+jwxiN$_bhie zQZ*_%4sr*v!LF%H`xREj+M>{_0;=L%8x=N1CHPi}jP4nngZ~1cdj^gs^qk3+Mp3tk z$Q5-TgZ@$AMOE9WB}-;TtxMwIHi}xir818=wLXD$3sAL|#3}5tbRDbJrU|JFR4qrt zFu_u1tF_XpH3s@oz>At~rxxq@R;`t>TJ;1M3`}JXyuqf{>9C#(RIS@$wZ>JV(HFRxqL(`+NTFxZBz5IgRQ<;$RtYxmO zIP{tUy{+lVSVd=QZ&(^ru|KqZfvW4Mn4JBCx?eeUCqh3Sc+qE;EPF%9OTS?2q3j5S zA6U!Kfn4;4mQplH?C_^7qFt>!u?-8XNTDBX-DNwem30@P$7i|kXx(L->6|S2eY4!J zweFO?aL+9FHP)R;UF7OsJYw5yM{KfWCd+5MDJYKudg1rBS8B<5?;*&4LD4d_biH#R8Wb0)_ejEUNhhPOmkTD@=&8|OAs{&BWVeELNz zK+0VDQ)`i@H^Lm|HS&`ZeY0}#h2Pret$I-h>m9Fwbo@u;QRcf? zGabh}k}xKY*M1@Ha|^ALjN|(^r?mkkvhtzh_rtJF0%rXFX&k0AWrbOFx)XCQ3=97v z=1y#@Vli8-7>;RJQ!HkWsNhK_<~0~z`HPr8vHc#4`6(9TOtF~3Q9&U!RwGqY7J6+! zW2E-Mwl^?Kj8!)0B5xSQAs84HjfAyCwyJW)rMc`=>AISuOe-ZziY2n+$*)YFp_~$z zdS{B&859+j$a9pO1UjfFk{Pu{3HgGoG3X8Xizt#02Bh+hj62qZ{v&MEcR; zPxyQ;zT@#d8sCDYebA#U${z%8fiKe{Yl&7Y!-?PTcKuC0C6c#;Dc{d76Ax3qFGmU< znMD2LrVul@)OXH?YiHwM+eo^>k#2izds5jS86^x+$1Dbw`{ZBblCv_+bxFpUGL6p7 zqD(PKrqkRrD;d`TFPgZ$sM;s~9xlV}F)|JNHEbrQD1AA^ZoZNIHS8ftUocBf5d0qI z3~I%DMsfnFAa4RLe$-qTnDptVr|C$)^+a5&cKCh}Hj}gQz8s%7;y%b0_n{RhXG4v+ zPs8TI;KXeWt+?{{S)B-849&%emzmV$e764lrE>Pgl#~}ky(jz@qJAUj|Bj_~)B3)5 z&>E_$Zy4DhLA6B^N*kSNmYm&4Yr;o=!KN@X4Q5T{Khx%QD3}RCOh)x<r0#f_nU zKUnboK?u4r+@Xh02@J-orK?)>a+H;!elAOC(e;UYv$^gyTnv2fDS)rRXtVerB=M7( zjQsqi@=%^xDrgAHH{f(0>Czr(BhwIel}2V|b?BV{`VSjr_=}X=^Ijlw<}2qtLfu1o zwQcCV49eumx&th=ADiM8twCX_K1uW|v_AuVlBlYNDFtZxDa`)CvQKk1?bn@zp%FaT z#CH!!1_J%Ww05M?h>ruH4Gs;Pyal~}Vmb|)DL_9l-HhQ`kSk<*_wPQI)6G=&g-`GP zUDYo1ZU^Q|)bZOzd8Uxb-M_CvvPsG0?%%be|C%yOg-q`LE!iRT3W0e7ZsT@jPY9WO ziMk&oLxe2)*BB!y{t{I;J-qtEtiCcb=lZ*ao_EFFE@cigS$`n{&IXl5=Xl-)chT;1 zcg4}69)S1~_s@a853#|@;{1>`F}l@XFf(j&0-SmcdvSX@7La(I`r8{r53$JY(I;X! z0eDelV-#1QwJ*5}q^mSDYyh6O7L|h|!X|T2TUTiwK){_qzbdS&W#$BOg-kCiU1B+1 z27QfMdRgf&kZl8IQD^IRN!kqY`tf0P2Z|Cfi#tU&SzXcXFJ!W~a|k4(l}r|Ss9}&Eh&2AZN4Rv7wNppVdTdF_qg1e7naIdrAZGkYWgdHFYCI~`t2grS-kbS z(`df+lIu?QO0%A0BeJ)Z*h@>=v~xZ0r+c05XNKhs1ak{2+yr!$dqJr0*}Q~(BhU{a z_p-UdvvSsCv?Fe3hSd*9+~h;ZpP~N&c&VRTu@rAfSy>{`U_sb=9svirt?4~F(tChh z@kunt?wm&~&JLUCC!C`ZI1=cGfAcY%26BZ&Km2O!|UcA#1$+_y}7>nrS$mHx1_PFF$t0h)r2bU1F)@ z%a5->@+CmSeF4LBz+8TOndONO0&h*43a{h7%}=?;gb2K6<5Df$X4hW0S5k z;vI|%OPAkIOyz;p?+NW&34SA%${h(B=$m(=FpL0NZnnnKoGC6hym_}!q)EA14E+Tn zK+4U18152_l$-A{Yz1Dl#ftieH}6t!y%=~6HrAAMDI=GJr9X@KAMxteg_{*Y@CBAb zF&qT?jj;^JGtXr1>F-4Hn3J-)iW~lE8%t@1TTAyTqw#lsjEB03>8~?pUusiOsP=GF zPi{vwWOrNOejem`2OBC@iu<{;a9MM9o~NLkEFV{#+7|sg+riHLP@BO{=TPqpX(gAh zbPl`7D56l;M>>ZCbSGx|q{-Y+7`7A^-qU)9!BoZD`yi{z%91nYMpji=wt*~FSyf@Z z$kG@3+JyQ-A9p%6g^xq$zEr=$J7pwa7Pb_c5?H<*xdQFsg$@c8jc$=fH5U3?pf{#oZdYQ|P-r2_Z?~@^!HZJQ?bV9}{>o z?9l*|xgj_m>Q!MXEfYrKfrvgm5W&~SeoJbi5%EW&MWgTJ7g#B5!#KnaFS)!$euSxb< zqJsn}qQ6KK31!x0S+2g;6r3;~QC}qrCG85Xu2D;cSjgHbyI_4Up$(S*UL4GOi7E-k zB+ds3O`IEjxryr=XoN|VYD*$&5HThW;-zsY^SX+tiW6uMg4YwiB$7XZj?Bd2^@Lso zWRmUmMEf||CPR`*6r~a>v-_S{C2nsfG}}#(ZzVLZZIHsDL6&%3C4iy#(;>)BDZaGI zCb;JkSw-%-L_Zm*o3Nit>=lP?irgv}w(P!0*e@iaBSf3-vaccz8xzrVb=YDZUQ9%~ zc;Ed8>+n({V)??R(56Hr;W1YC_hnN$cqEaWXWJlVuKM$r$}JB?T0I^~=wSabnwEz_ zJALc!kwj;?S@jPbegQ?A_m3oc4}!gKedzT9{T5iMcGuaoLGI+8oWmotCzYeY?FnBr z^5u07lR&rI1X8)TC+fCKlW8tZka}WMC!^t6iFGvkrH2`FR_d#7 zln&Zi_P#Gp1k?VbtVlYNJ6umm=s9Qe8sqGQ&KH|bMaG;&#h)bq@Y|m-?5;Agl4{_l?FIvot=%x=9j!lI6b6x{InQg46DLHaKPUCl5z34a;rg=E_5pMjK2VymqirbQMvZ5|7}t`bW57qW73g9*3j zBNGA6Ti5r)6Me>WWuSe-4&7Mf0eLfb zhw`SNTtv;p;W%LKu(;VM{sImgK&3~m{*pC6nG4?$XszkrJ@h&P-9bLos>d-uD1-Zg z{Piq0>Tcd|&};*`;pphte1k6D2kp5NyDLC5*U=dVY%4qxD|TKu)-tu-+w&fP zSlSSG39c7jV12vn<#{hz-&2usyLFe_veQ3Ui@b{NMQyC@Km;O8&R;c4Z_A2%%j*jJ3N9O~DA)tutwNEh0z4N8^Fm`d6*< zc{n5fJ!wJaTk-3h`1wK4M)C85hAi<5toX9^jpFaM;=6kF9jvnz-@gv=Ct2|&>#X)C z1-cejsM?<`+P+TO)NEy^{zcj2jWk#@e0&s4wyaAX z>*Qdk#&}K+24pF6gjM9E?G&L{c@=#dkT%vz`@~5b8+2=wHa6&Iq|r7UYGn1BViV_R z(q1A(PvcdLY=Nx4R@RvHHi`OXYu49kCTE^@2`aUf)68x#ty%XW@X3AXdj;l-Xl-cr z4w{O#Uiy-IOnW7t2@s;s1SM!=Lp;lc*d{x~HYP;gBHt0(a!Y%sqb<*lX}O81S3Z3Q zXiE)k)#Vbh=ecR8zqHu~+ftSWdV%F!>eb1hNJ~L!&|i}4B^;gy{W@5Fd$W8*AJCSy z=<=t>6UKMGR)=~^GfM*E=PzC0!uZbDtSITpG5|1PeCKPH%*J6RFfWk(;OnCuPvNiu z)Q`vt*sJ&`O>keD;QSRxFI+~|#HE8Qm3!sA7*GZu`q}{(EfFWrJHq@!ou8hxQU1`c zk&>~E0KNc~4FTI#c;+qK75V$~IGznl&Cc`^K-=wF8-nl6Lx7NI zBYG(QV}PFgaWs5h1dTMD2P0b>&dZ^>6nN>GR**KFEF?o|RQbe@)e~J2B<27V^ykTi~xzMG6Mf$Kvi)x32!_!qRPikl||5;3%G9iFRIY$Nvz9f6(jT= zldkeop8WPO|47#jETw3t`;OmU(sd1z?f~Wj?sxnia@}>GKB2cGFc)yYvib!*t|GU19dq?$UxdI&jmZj8_v1X8%E1H<`u0%~HKL`2Ms%go*3H%s*n`KWAgH!QVk*v4GHKgJkPZ_$0-W`>~13m-QFC;Af6~ znk?-N+0W4b1cJ_3s`|0%0LtW16(@kh*;bV0_rj!~(ekhdv;zSvP!i;=mafqh2lT=D+QjMoXY9z}ZKz%c+Fd(3 z4lh}b?2%@F;gOL+X@5#5;C{S6P0(g!Ag7)-#X+r-pkDE#w}eej*Y$;^m$1s|y4Nio z5BWhCkBw&He>_li98Dso&Q|AHr_OEA-vYe!f!XSqvDz20K1D1I1h4wh(a&0aUWR8Q zP<_6M^=W`E)~8?q`<6iUaWq`SWvR3EIauUM^6Uxy?!Zg;_=`TeUz)N`zUNFX^MW`0 zXqm{6<0D7If27C=PqsnH-Q{vOg_%cr;X>;!cUW(1bWgj|QOc<3Ccn%E_no28F@Cy( zb(9%_SALu=JrI zLD2-ET4=*MPj=hT(X#uS5MGaQH?XAMA|dEyl4+L+Et|`sn?wzHXe3z&>2u zcr5ug(=nZnbrwj8QWLGJbmKBhz143q_jxjA3SPfJvkl~mPhuu6)w?oR1L0AY>obNO zM?$Zu(!jU=`istT@z+s_c_7KGB0HbRb0%&1U<+3J(eo0ttRjylkdZ)Fk>_EUBNkaj zei*|V;DrNiAh`_TJ~BG!d5QzF-2brdbD_V>y35*3OCp2Li8-%J9xB_DS>AosdxU7j{$k6+}L{ zct=?@rlXV77IpVF;Bo#?+oSba?D{!&l9s#q8Ni(ln zPD3P5%9W0;%aLC4WTmL7mg61CIp%Z+;mWa$x;Im}9cx~7lXHDW=VN!)_|>&K0N=63 zS8k&+zGKz5TGqakhnUbcc86wZGEOzAF{(@|UPA9Ds!X=8xz)+1V9EW=f`wc+Xe95a z(`1uY`!#4<$tjiOu$m3T#j9&i4NmqkTtj27K3QCS8Z?!ZtFLl(nKZ>q_Ak*hEp^Ax zl_i^+wFB9-=sXK+mv67}y-u=XmTcNzGDS2kGm*KtIj&`z0yWhd%Nm_;n~1g3h;@G) zNg7N?y|JtYb2l&9xwVGrMftWxIZ!t`Mnrjk{#m5a`49h+g+`kMd(5IuVV7;OHifE< zH+Xab%dV{po~49tZH}7!Hk*GmQdhmo-b(?cvat0Il53gWIDbH0>vh~judrHIJl5j$ z0O-+;=oeO(3R(5Q(93`xTXqpQO~MYlhh918b+}j9CRc*{5Zf#2GTAF^tBu%|dvI1A z^!Qj9YxGmzwtF&|1>>J!&{#M+XdyjlS((w1PgzId+97JaiH1V%j9CEbT%etnBjfWd z%aGk^H4z@^v^GNjJmBpYOQwCghBP`3sX;k$jbM#rN}i70c6FZr-Ng@j!q*$}O^ zyxH;dG)4EcG55Vy62U>4_a%bD^cI1?1~l&+8TW5mhHQnO6CTOClD+84fEV5W4=Ebv zSv78AWS{qn8A0eON+$99chq=(@?{72<@B|bvZB)Uuat@J4W$YO+Omv!*QK7Fv!ENU-xQhfRN%s&e@8L{j7#OBxcgH?fdTw6J-;lfv*JzWpv1#5>8k;_3eor6`OSv{Iv#?DEVS`meaw~#OI(TzkQlq}SwQi|2+`4=7 z2sddu%Wm-0bYcIX(7eV?-`*#O0<*|Y)=$D;_grylFTIHFUt!rbfapbi1yZG7mB>jVR*AxCV1$WZp`t1x)!E4k#ER~{ZLGdKDRI6oeQZ4Pp zLcf@e&o<{hO4x%cNtGd9(IcT~3&Uu|ULo zgI|-PakUO0Hrn|?UlUb&(%d(>(pbvC)#Z|Kt0|thf!ulY0zG7f#=k~aMZUuEGtgsb z8+Fr23}#UTbdwf$ixtg%qp-qd)r7Z? z-DSSJw$c5l-K@K9*vQ7V`xEWswE1ed&jiNsSbzS~(QngqYV|#?oh04w1o{(bkazI> z<9goL#PjysC-eq`hCY47t)VNt*J8g4^gGy!{4c{Z6Q<2EuAm#`bI@uunTQ61-ztV+ zfT}Uf>bTI1cc=^P-gRmWs1-GSMf8^vu_8ptK zNA4ebM*y#OELI^QFn5_)uuslT=*&mHmDm7Y-W5H=66+~*_BT|*{!LEwPW1$x^v0s;UJJ%PmQ1w!#ss8u`h{8U z8HyqD#Xb7Bb&r+a%2K5H)s>W>N39tVjD^Q^fVJ(V=ypDG@=17Ve{cGoTD_FWtJ`B3 zT&+yEd3DUys!q5%X+dwjgB0pcTEJWP5_7c{*lI1XUfs3Q|2H)fHpCK|c4!Q@X&>S8 z20zZo&o9!68r){)hoXK7)*)z?~I)Jb^R>8`ti+EP+mxvWlt*i64Y%`2(XNj;j= zHkY(8eqF6!E8};YKe`#7&GP-BD|h4l@H72+7WXhx*OLrRj|6Uj8`0^g}6nxBDwQK)jFNT&(`=HdOcgwuqg*V{=SxFpX`XCCbnB z^Vhy$BE?`)fBw?*-eY-tnt0aUh0{O^W^XB=GmasMLcdJn_b3kcfKH*&h+XV7z*a2sx}omn=Ss5x5+S?Pw77+-L%f4_&U!K6E*1gDWat_==Uk8_POV zkW9g)OHEf;0rfcdYili!P>D?=%G%!Sp^Q%Q1EM?Toi>=(`2NT6ce+-Rc};ssoa&eP zlmAdNaj%}+AM?XHIO(FXeMBSMMKUL;7W)QWe>A&;+)go#d#!f4VR2zMk?U0q$YuYIo68#*MknNso+2Cfop6@+^SjC6LnEf2KTyPQ0)c{5 zTJ9Uw(`o6S& zuUG2%wu|UYxh>shC=Ya$+j?mzb^V6p`F4xB637Y8^KH#pukLrMcIhj|Q$AnQFkUhG z)eS47EAC*lzu$UB9ZbSY2NuRg0|Vt;@t2S@T5J=QPI6OO34Vj=Z!n=;qA~dBvVxXfGZ$$KevPNLKg) z9ThIsO-S9sX>HWf;{cQ@kRf#VSfWHM-q72qT480PG_epaNqH=KfYBTJG$|i8!AoX% z>ea+~^`nf1_Xq6~k2tUU1Cv}sPeN)q4X^K<*EHi*a5zy4PY;?5lfpHgJ~y0iEMCPQ zZL!VqOS;0GkS$p`dWeJWI+(c3@pqHBctgJ;eK@IIni%Bhe7}=qa$)x!)kkj$^6FBw zE8)*Zq^vbcLm2*SR?anbe(s|J>!Jb(zpl}+<-1?Wl<@2RrrdNJjps)u$7J%PQa;k~ zyt-0qQTSF%5tG>9Jm2bKIXmI`lHuIqJYO=U`VN04%~Hj5|3Qgx<)^e$?=rxtnBJt6 zmcR43aZ@qZygh&>;u%VH#q=(+Htltkhs@_K!Nl)J^N*=Z&FAzghv0Q0{l?)Sn1ZFp zL3{)Vg6UY^!>~y#bFrK~lGSJsEW+|5hEK$DC6<4W;-Cab+<;}^Xa+7Iu^P+0814jm z*z6apg6}Ox>!4*>rsy+Nkk!(y(0l=Ow(97(=-6^Vu0Ngs6K$QX){Y6i9e@{2xzc#M z^;xN|;Y*fR_BBTl4*gsvanRQk1AYw8+1ni6)|WdbWYKd}v+tPj4YbRsnCo}c5jfXq zSUK`K`y3<3o?Vlr#Qk+BE>Ee-PnIn&wKOOZI{jZqhg;NL&y_s>v(fT0 zDy;9BO|-wYNMxFkZyK3#ab$-7U)tB7m?g#QC~rQ`vo5A!SDk~%^^T@ z>rzX{EM0Pocc1T*0wcNg3^W^n=9Z%iJZH+zt($~L))o?DL(d0Z`e7?r*A{dyeYthv z1FASsqg}we&tHfLSzD-ueFqT{F1BQ{h7h7X$sx_Vg#0ZFx)1Vaafui$}$W{ z9E0T`4EuoOBedY>*iil0WI`t`2Nvf&CTT7ga=rllbHF6}burWC90>O+&UF70LP_)= zA^KK?ORMDQ60r#h`jaZsN_ZsEcN`aboq!jedZY1nRfN`Ch0zX6a9nc6ky2x{; z>v$al=TX9~=XD%m6tko> zo`z|$Fv$_2OJKMV=y{zNFgycv+sO$?#R4pU;}N0M1g2QPrbeyRjVYSwwr_DJkdi0a zxg%6{KvTofaigK-$WDzfMK#IJ!=axn(xdw=S$1}6t!=O#+$1F-PAHCMxDYRd^BfnV zqYJ%8lZlNKAZb}N#CM>7OGBKpU5JwY;dGnZ^10YW@KEn$2agXr~ zPOK7Nd4WK_>lmA@i}c3w z<4np{qHqje$%!Nw2u{LsFoxk`ITOnslR|G7kXVdmIfiARzR5}>LgM5dwv-vacdKz} zZT=yAF2d7E>)dpp5MB&n)!ztL3gHfaAzZPT3(KraZ7i{xg{9y=yf&l5+aUN4mX?#* zXa0bpI4n)A1lLTQN4SZ}c)SY5%fKs^fZACyw%|)p z@WE7`iux6TpMeHabvOs`fCfJZ!$8n;F5JSCn1|s^T;_qq`B)yt@E{oVFD$KW0H#A{ z#CsKv^6Pl^MA`!Dds!UMpNQunSK`Iu-U|M0LC|K9N>6Ge=NuE0;NZb@^Rp#cD)4G^ zMCet3Vj0IdvFuO?-QskP_Du8eKMgQXl)#tR!2Q_7z*m34nsiAZO00nTdZ4O2i{VL7 zCO3!Q6Eiy#>rsYzZMsx10u85-W`JMEqelDQyoU`z<0eNn1DQi+xQnf1vNH_sE6HfckT z481`>n>0t4@SI8YC0uD>)(Vd_X-lBL9C-DGj~JbFSPKX9wwFH5E?}wjd5zM4e2^;y z|0ccf4@hsyH-U#CY?4TqPx&vzaK1=CVteUD+0s`vO5bBNBk;8*MHZWXl#Jm&B7G!Y z&minRP&)}r6-n0mGv!>z%gpe-LlI#~?k=dPzD{`Q#(kTIq>fMp{Q`%=vJT041(oYYL5%O8ld0Se-`WMOmUoB1eq<8oHD|k1pNe{@je&B zSz?iRZ@};b@QOtT?{TNnc!>qyT4?yGX;1?Ve|HQGK%?y#_ zw7>j0E86$*g4DC0oCI#Ewz6DV z4_Z{@JTHkTGn{>(-y4{On`cRBYON_wxax|irKlhYcRUQo0Zq8eFK^8mvUUZ!M+{8yI$%cNFM+MD2Z0}gj3gS+bV*;BPXu#%!u>lZg+d&Pbo<%8V@>;HsrIQ*sMe-QEm|Btu#j<2Hl z{+?RdXZBvu-|Klj|2+5g`XuMfoO7n1otd58C2AG67fE8T!hC!| z!n_LXU0|ogg+V&Yq#$RqG`F z`$O}+0Qu`cly4_Wd#Sp#n*4l}E)pfl_Y){Q25i1Rf%pj6deYD>Nrk3PscdXUV2T)7q15Pj|1UpnowN9e`d}N9 z4zv{vz0WJim< z%(AAdRWGLgQN{C-od;|cKMwJzFjB=ILu>*3YDu{ks4){$aV_zDtSw*NOGy~m@|^)O zKmw$SopPFrmB(on--zt>AiPHtimTXTW$k`t*|hd5l}K0d8jmWjP1JfUtOb5!m^L%n zTLR76z_hNzO;E&wwlIqby%CsNVsCp~PmZdo>B$q+*6wo%KMkzi-yrq@TQsK<#AagU z8?ul3yjl&$l~J)4f!DEPOa23z6fRw}pJqS4u zZUV@X?W=*Yrlaz-bpF2D1*^r1e9Pv3siu`4_f6P;@gE{;Dj6yV{u-FiA-00LqSRTH zSfo)C9GNS0I^D0~X;ff!u7J1q}L8%lCkrc6$_m1{T^Vt-!c z++4iN7@{^{^LY?l0CVcK+|B~oH*pGRzAEvWJ2I9xorkJX^6w;SH8QI}N@9YC2&pqK zVXA{*4a~U^!-aVjW;w)d!n_T$7h)Ia`YFuUuSL13y9>spmdl4TNbSXNTT(u`2HigI zb1tS3K|aLs*D+H9L2Z~DAg%#*JX)6iVn@2gI>@CsZSB#3KIWOp%1%p#)();=N%@Urh`dr(YWV`tFUqQ)4-u?F+Kce zKNp;=t-}99m~6}1Xu1Y*EtYJ*A7)F>k>yaW1@seOmqSjBmp7||9r;+1<Tn;6htL`A`H*vf&@-D`N*Efk|@Dsjph_Vv5^5_UG?8D706(u_{8tE5)(1NM!FpVLK8`U*-BQ<9`WSS969OZRaWLxZ5v=~T#p|D{`)ZNAyx_V zIn4VvaFGDTyI_icl|SK!{HZ2?O61QW^5<~=1jq5G(~aymfVz^(ksGzFW`U%4mp5Dz z6tmYLG6&cM--LKU7|F_%n{eJBB`SfWx(e<-5J>9YA{MnUC6bF^;i?%Wk`p--9!PG6 z5~U+p?cS zYy}KF(Jy^HDjj~F3#GR+JRNKnjj;Bk36JKh3Z0KstWw9z{k@&E!rY^Cf6TRR{G|Qf9#)@Q<*x<=Qog{dbFBj1o z?-P}C3tLIR{{rR$h|$9Q08{H$J~;z|KVX(XTn(nY2GhD(@(}*geD4(E%yVFlsN{iM zV5fcMnjA+Dl#=F@pZ|A$e&?zrEz`c0$ln7@b}cM?siIuTFzi>an*UV+f+rBQ389U^ zKLX}Qh~2_8hbg`-VQPSs=mdQT=>&Ha$ddh$y>Uhy6}zcz`C)ajFMA{xAU_4z1^h3u zj-ygh-c7tmax1bo1KaD?LOd^w^t!Jh{tNJL(s_e7BGokIZ28;s!{L&?EC!k^W%L1S z?<9yG!ic@AA+7|GxqLMj7)Rx4*8I=%!$+OD^(ee57UWIAKR|pdjF>z0c2=*zB)-*B zo=BH|3q?9jPB7$Iy*hp>NpAcUXrPB^}nQ^7@@6JgI1e|j-9IQ(M23yNe%=iUD>Ce zOkKB9Gpp_l%u|tuoRYDUq035q@thi8JPV&-EX|B-zLfJP{!jV&{&s>dAcN(=e-~yw z#9Cq2!L+=Cjto*FAM7IJUbyAJ4u@5-Jx9g;_sRUQLR^vzho6xD5!n8F(4AbBfbG8n zAx;G*akH9|Ipcg3#p%tE<3Fr468CH5r%Z|-*GPR>ddO?q#goTq&D`3>HeOke75L=M zQ9};U_Vg;BtWKuRBx)(i-U$3rF!h&n69M=YFpoj30QG0UoTe6X)ItmNgIPoza~D&4 zfG*r<6?5f3Rm4^jF$|F*BGyLobH0i(k)}ekM^`D5tk^#`>1&X@0@zG_0`UQ8{|Yj@ zkuP}_g124GRV({H7;4I1%4G(oaTDSazgdG4ze`lxyA$RR;BSX{9Ac#~-@$ahhm{Yg z{|n61YQdGbKKj9*M7)i}W?<@kCj^6DDZDpIIxJ)q>zqn7a4!x+f4E3G+F`r^0lD zsdpdl2?Tv%&Vx7?bUg=Vt)}MxLDHWSx*Ze=Q~z9|%QZSb%8Qv*lUf-~M3wtV3z%$q za^xBnqq~$6^nsW2A%gxjM72ez74R>GIS*otFjHW@f!G03q7y78K674nL@JqlW9Fz(beKpF_ZrwN=}a9%g?L)LGpAC zQSXqSO5G;my0pb~8KkZ$xB`QZ? zmZ6ZJ38vEMT(aA(pyoo3W-; zti<>A0!c`|uXi~LGlBii-U^7j#e)6n`dZa9W;?lyKkfZG0vmw+-ky`;uD(jUTXWTO zyaHdox3>q`AAtSto|ED#6I<7!{F>v-clT;O!a^R%ul;grte_Dcc_l3<%HkIIS@o#F$7lm! zC&5lBtsWWSLV8F+PS-jZkV)`s$gcw?Th1IfrO=qhk>GVAD0hRuN9a3X?*`X=oHB!y zh}m1h9pR1wG^QLkI7hSW#Z;Vn^MX8c5Ju&^!B8{?1AE?JF2rnLcj%pg#6JwU^9E}X zeIAf?sicvbBKww-^`-??o|06gUcN%=3t(%k!4s^|KuW~A77^_*Lw zkpGw1lGF16>nJ z)utfN|C`{miSGyey)gfU*ec9dFjJqx1pxa&PN$ufVJFICR==G2b;+W9kn<13e*>nj zJVUorQ{-Aeidm;uts-6aVq%)E#ytUlBFub$j{bHGOn4@W@KZiS7m!Wt(lvUTL`RItrBO~QJDokLv*CTn~>iK zY=M7-*bSlrcUB8b10*F^;NoXk`T|>ECxZu3=~`NX*sFF#_9$Qr?4%O0yo$#K9*XE- zAiqNCP^05)ER$^TM5gUcbCH=1Y;SrQVl7CCNU`)L+hk6aRhFopgP)fk^cRx90b5Vw z<9c#bW<6b2U+by;vpfw0Y(1R?aR!J|xhl5M`H+lynu)*+VC%`r1jbSS=ooh+yByeh za#CR|e_%arKy*EDzwl_yMw@8+M*M+YraiVtH(!t}8_v?G^pi;EJyqpR{|zbS`9%GR z!Ck<=9On7wI57%>>tN1%o=sXX`WBeh!3zG~0(&FKmL=N>YLsm|D#3pvKX*g}jLNd@ zD`dU^cG=eWKR5wkmu(k7Oav*>vCFnk;kE#~Y&$o$=_ohX_gS_bBKBq3cF0-|aRa+- zI~k(4FtY7%0Yn8biQa1J)-J{zhoa2%rnffXIT|i2wrKWe>nvWa;XS0vHmevQfuKiY9U_y7QE&fC~#!5I;pQn)p$GBMg#{(VBT))}mA=SJCb%f_X?^18i2FgjfaaQv|bPWk9QYkb|Otp&wjF`cV3*t^-A1!(fVjW0& z+aoJ-L)Ikz*8Df<#CcRq%9zug@zwJF7;@(Ebn3$HCQ+>U`QsR4ez&4*pF1HF9;wms zFq#<;1Jmpz3e}oozfSE0{a}74E4x6U+;6U~S>oiNRHDaaLGDT4x{gmC0(-am2Z(RL z!S=4UDi~9$RH=!6+^l{|T0m}aAG4mF7EmO{!nP_I=P%cJ^lkdc=`Yg)IS#d9YtQk4Fny7MeGX&Vvtxk@bX+bL=7v%Jn z-Yjc@gI`OS1|T{m`n($SjH9%$R%w|i$;`An3f+KR7nDOx1a?Vq6T}U`G+RU_hLGBA znp3n32h2qSe?))$oj?oCUvMkoS&DW*i!0M9Z!XoG9xIRgd$AQbTE8X@LbO zTnB6mtcG|J*cSK{;$slKYIJ&>2S?R$xjuu_m$IRfe4T5qKpwPpQrwh2AbDBl%#q|} znbQLKGGM~RDz@J;r{gvaE$Jp5S3l8HcI1!jg?$sH|A1!0tK4!3Mtc!;DhB%ie;~{a z5c5FENEm&0TaSWG7WrxxVKY*=GwWG5cR>F?Gj7OCK%9>zRJ5>X-LjcUA5JiR%d6S((iTh}&P zzWTjzh)F)B>J59bdH$L*eRg{|>>0e~Y5T4y<&^};&#OGT1(mdbs4L0!3@OHKFnb|( z2y-9I&2O*-0NG+8`};_fzqoRFQ{^RPSP;2Ckog5z3+>(KHwi3a6fW4SGVRSWN*K6IyY!jjz0iHo#fmx2tiR7r{dzfJ1%1cXrx5TPT zOOp6(@%F_vAQDHbJ-KRBM^s zd`=KwJi=psh$>CqwI}J=O+I@sG&xqI#1orlPm$MUl%NT%5KzVD zVLBKH)A(JkkKo{JM(1`_N>de@RPOS;Q(Mv*Y9loW@v}fl6BvKt=%6kCXAy82$ddQ; zJ3C=awNg9&;-b23G33iT`|m}51+cH{e+yz0NbJ!}$m{w`5T#g|Zst_)a1&PjEwZQg zQiFv9v#5+d8Y(Y|Kubb#Smcm#B&X#LmWr9HLMEo%6(e_4;Y!Jx)KTtxTvcnlZd!uWE#C4ioiCbs0i;L|3y2d9~YxL}&c%CdOP1VV!ZKGiAlIX5k!z@l@sgR7m z6wPGaY#vX;+Fy9_fypn6lP|k-9K%rKxm{y_UgcqjQI1ta9YGmd0slFeyC4>UW*cBS zA8kx!YnpT;%!%)FZwHiYff1KevcnQgs(*xF>S}LPm;J5@m~yoJKeF?Fmrf;D*?ZAm z4(wId$pt1&MVfMz-6cA5mHi3%9|6}TH7r-z=$`no8iFH|q;iru6UeMh>Yxv37hsce za^zn%WZ211k{T#Fl2m`>`vMbwosm@J1bLs#-xPA0Ms&8?^u5G*DS7vjs`h`Mk~;SP zKw}E!-AbcXoHfPKWH3J&+IP9mB#{e%-FTg#GMpgmNQQU;xh=q-#QzW20yvq#I4ZLM zwWT4Y0OxGsDO+GV-mXSOktyZ`8uCW1gf!(g?)>I?dDlw`E=KG>n0y8Vb6|dh_(hl-Vd{U(NC3$P)RGLc zXy3+#@ZL&|D{$Fuofm$H?ernNE|@qT*!`OE5Tk*qKZaV~s>&@@c^<74j3weeL{-p@{FTgUHJ#))o3RzD;4@C@|(nTEh+uCv67=oTn_8y)vzW13E>}sEqU!vs99i3 z-U*^3NE)qWTXK`MUpv5zoS!mf^7LtE6=)IroLkzHA9(_GBnE~8U!FvL6k;ieo;itT&1(TUIn%@JDc3V<6Y%j#9DzyN^Dq1!U7fsmwmw{%|rTeRMe{ZwI!eK85&L80n+IXB@Qw$qlNX z?xQY*ykmRiw1 zdWf>NkD6N2Nn6M1II7g8!{gGnvz~~huE2KI^B^XGu$wBz4Vd}(^qqIGyOJICd)>gm z(O%SnqCQU4Lm0SEEWQA<3*swK@&=4tOt#wpeM-Kx{|5$p`G3q8+*1YF&p*xbMJ;oF zmqnU?O`R$$j*xCj)HGx+1pa22We}AhC1SxhglvI(AJ`4%tYnly&p0Z_6}@pHyjo1k z2J@fD{|@X1bEE%Kv%q$Sp%8-r=d#t5oVvD?F|#q6x?nI{DxwWa5*tsWO)0&Yr={Y1IQ@rTC>^VUf zoh&ia%bYCAb{lKb9H#0~mU#`hzp#%9M;(~Z>29`V${LoFrp~3dYNdIVGmfUpS`+m% zCD;X;odUC)8C#w9qm~}P%5(_Tyq5e|p*4b`Fncht3j`Bk%D&=u39w%S zp6-;*ZYl8c?3_(fG4g?!k;n`MwxKSM#v=5Mf z53pOUMx%zRC2!QdUW3w9d=OP1b^mHLSFM9TY61SJ<65PBBa{8fC*YzwsCM2v_AZ$Nxc$bUib5zNHz z*gyus*Dy7AamoY)Kf&AxF;^I`yKmZm&$b$9-Bdq%El-gp1}P&8wr9zKU9h!&Ln|u0 zAU~?P*o_TwQ7j&Q>%rnd^_kyDISxrx@f-H^O(h8}0)8>fUWjjnsRA?V2VPAQzZ8VLHsdPLs7)2*-qRushM^|C$@#bxh_o z;n*M9{|ENUa0$dz5M8f~mX+gu{V2-5+$yI_FOlojvk0vQ_ImXz#9ojRF?+r0x|e6d zfz3_6n(>UI@}l0rqsoc!C^0G5tFg$B2KIWj5MrJ%azpeDhz-Dmp_=-)>s8`mtpeGZ zEXS%|L`aNIXTgkvI7^uM zFs1+Flo=?#6{ha5-958T&2XTrKYnaP-VeuOrEw2VZy+}i__bhegt%Uq6wEUaPl3X= zFq>lo1*aNQ?NiV5rxE-I@xO_}c$fzJ@EyP(4ATvwi!l9Q#zBk`rYp>i5DP#`ECp8* z@;2P-Ah-dh+0Wd>0Kqbt+aYcR?H`2cEb_CaUX!79!$;OsasH29>Tsa zPO3A)RW7UjE?KhAUiU$yH%Li@eE@qd+?Ak>Jb>*KIRHYud+7RMqVES%$mXO~PFzzm zAC$p-MZ^ve9061K2S=GeVuR*D3SJvg*~E%!YdU@NU5&MUGd!aD0j|buj%Q3Jd_wz* ze0EZN`z7R}?BEIPS*Y54$rnGbviAv;@^GS#BMXOvX2-#-BDdX+C%4^T-X`>Q5cG#> z_$QqMWXnStyVM-bgM$BFcFs;|9~rSJ39-ZVY@`PQJ6vyuxC!78@JVc-Lu zEq#c@d%zxsbuxkJgN)2Zjv#0D!dvYxUdIMZa$t?9KJ>yXWi8Plwse$gYs*YJn|Y0) zl(_@C?ZCjn8S+jl7((Fr#GVI&2{4a9JPc~dMoc!N-&ip47L*^UrBm1t%OHtdz z@{X#f^6>`I@5ufN?A*gi1+ix4gzPA3Hko^r{!M!TlRQxqh^heFWwI~Oxk*$pb)tW? z_+i~pl~v}6sGR`pTI))PnZn3g>jQ{4L7}X%PFD*U7)sq0v*RVZibtE!v;}s*@ivIX zz-}@2L2P+fI*)8IeoyF^;QwWd@rpQ+nUV-wjOTPAn=(!92h|ZD`e!Z!j|7)8uQC)?PWU0i0525(1eGp zjJy$?yF@ub^LQOJ&>lWGgEQPFF;Vj^rYa&+(S4=NV+V=pD%B9Fn>0ajJMs!w*+J(t z_=_qcFVBv)L0t%&{!)o<8}wkGmIiikuTw2nio?i_+Xk&5emt=4>0|=qsLV<(m98r7 z`5f}k0Mq(sHR^hK*)5aVpDBwP`HScuoxD>|G#?;pH(J|4@HEVdAT)P?Y&m7%l%PgY zgnR0Fm-j$PP8s}x%#R``dzwxT|9&oVoHBSyvL#d735n2*1JOP1p_&WNILfv*e?%$k zM3m%y)%7SW0QP>>8i>`v-mlsQ@d=1d8I+US1af3g8B_^FlK}RVK{>=|VdRv-7KqKj zo-&xISzzKinq)a;kmydba>}4XR%qG-d&u`$X@!C!5{?B0?9dQFn!8k zeq2gNxfYXC25(C#rD`rmdnSlZ8GNKl#yIL9rwmpge77h>>xAq>qqgM3+)Blj$$^0* zrBss4>u78cEqltqiE`yor8sXW%@rkSfjubv0Bj4?&JIm6uq|*b#4#XRJ0B9~VXf2> zCkwKqhuF0rI%={zR#4j)QV(s9=y^Q0I|^iyNfarY3d9wPiZBiwn7e!pvd z)ge6zWL2DKqJq+Q+h{l!_QXUDmsLk!8_q)S_1$h!@o(RnMD$5=!C>PD8FYh_yT8qYV%* z3M0;-O)50afprGw#CbL2$ScmET5pmSXK+0-3q($i967lx(?{fR2KSM@v@>`L!6!iS zLN%Cn2A9UAbW}Xxa0c6?lu|VxqrDYG&R}C)A&&ZoGw`Z}=5JAmoWaj=GLDKXlX2Zm zN+roOL8}pnTEL0&0RUBx^M=w*q9iTQ3xyuQw!mbF^MGxEn;{m1$Qcy1bPj2O)Dq61 zNP37kgLMeK0IV}`a?IAoN6z3&NlKhS^*nAu0FHmCF>wZe5$&A84;kUHGx%1s-<0&6 zGbm6&aR$d~xHyB;G+dm)IW~MhXYhPR^nuP`s>bc-3}is<)d&+)@t9_u9ODL8Z%Wn^ z6wBbU&cG?Msi7t^71bG>x}P&R4+E3Lh;;_PsG4;Kby`IYaDX##`r-^0WXPMcb>zLZ zDy5ylz<#vGheX{)GB<+YOPI6rLo)zaXW*1LS4b23ch~bO`=TVyU==d=h@8v}oE$f! zL=I>0mQ;px#RgSFQy)ZK@i@%|Yh|V4{)(GxNekSK!g63+U=zef zU|V1>#2yeigP^r@27RQKa0aE)L&O<0C=AU(z&Zmb$0Pp8$+}^$Bqh#ZA~IuvNtCHE zaRw>OIA^deBRqBnA8Gd6si4dZj0%b~=$$r@=%(S~493~;{hYx=8PNwigV7qdpEHmF z^@T>5n2N_VT=!72yFjrFF6#`OA}`8S6Pb$Y49?ll8EnMBYhuJYgRfQ1I)mK9 z{?!>ceQ^deGvrNKm2!6FROydMmu159r_mbqh}uUo--DnGW>68%0A$O1cbyV9eWa;Z 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

kv0I=52e>7|VZ@_?NC;7q~3 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 z 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≠xZq8G;rlDmu!|q?M(b2T!Mz_lCgU)^Z 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/__init__.py b/venv/lib/python3.12/site-packages/_pytest/__init__.py deleted file mode 100644 index 8a406c5..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -__all__ = ["__version__", "version_tuple"] - -try: - from ._version import version as __version__, version_tuple -except ImportError: # pragma: no cover - # broken installation, we don't even try - # unknown only works because we do poor mans version compare - __version__ = "unknown" - version_tuple = (0, 0, "unknown") # type:ignore[assignment] diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index c7778aa17fd41eae359eac370a0fbbd0053dd829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412 zcmXw!Jxjwt7{{N>U6a081$7YWQ?L`oxDi<41fO5@8Nm-EEe;i#%a7tZ`Zs_0ZH zsXkz$IZUr;OZuGN$%gc$;14c6ks^$}NW%^n9qPF^H0VVwDGvAc4`}E{d^c#^wi`_z zQl=|Bj3{HSa3jX{g5ES+^`#Sg{8%mO1?eB*k(Mz=2n`EsZ*-8~>04uBqVgB14M^>G mXf6K$LFKUtE9?F9;p+C|#W<(IG+fY~PuV4S$(8UsD&apeUvG2( diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/_argcomplete.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/_argcomplete.cpython-312.pyc deleted file mode 100644 index da7b2647bd7db7483962241118c763c6dffae81c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5021 zcmb7IZEPIH8J@k{JKwE8^WnHQxD3I?zR12yVjxw%kR5--5S%nIpqx~#*0*za>+J0w zvwOK*xKu%kge_H#5tU*jB;0?Af&@raLF%8Dzx{)oP~0VvK&>kA&tRlh`P07d?5=$_ z(1?|8W_D)w{e0ec-nqZDwkiak*U#=Pe%VIIKky}db=ncs4G^F&H;xo5VN{<3u(gkqDV2deb$cCvHc4KG`IT z%9W23;-SEbC=*>r=*ISr0*B2}| zbb6~E$;*1%H95Ph7J107cHE^$vK_U^6NI((5#EWqu;|=R8%PF2T?wU>$a(VXGgWda zdY)9JREPG*1R*1)X;i~#p{#L-(W>DV@hwJ}L-X$2!k9hVzcVURjDRY%TFo;dx&nN#C4ncaUn9uDC^* z(`^O|whN0)r%svW49%oDTW2W{bfRMAgnBNosSOGZ2t9dU5UToKTMH24^|f zticqRgaH$OiGs)@yih4I%RPfe;%PwxsX7D5YX)}a4U;*c)r8E|qUO??T>%++30Tx< zRdB3;nZZg(zHB=N3aOb25EC36Uz5C%({N=FtWRx@b_6jB%%yulPD?AX%wDSHU6>aW zM`uPxkMC8`RZP>Vofq_Vme(rg<~MZjVMU>o+GW=_Lt4{y)I+cyIAL3PqmWin7uDt} za2li*s(Gw`UwAT);w=nP!>}OywKlD!>Go*}(Lm zFUAI1ifoe%_{XqZ;BP}*n5F<5um=a~==O7G#>dBAJfj@*A0Gz=W-$(^2CId7Qzyrb zvMWMlTkt6Z8Rq6PII9NR!Rcu|5v1C_K>Oew$`bfZC_mAPHuS_$RT89PtY^xXHK4;ZVX%X^z#ZtvOu>;2aP%m<%%qKVTfr?Z7A@-P(V10W<^A^@8=*e z;bkLbKn!xw1N{<$93vjH0;C6#u3U^e!%<2azW@sQDeZd&1s_gLpPLyubt*G9KKkP1 z)HT|lcLI^{d5G0a3fp+6h5m(MrP z?GkOwlGG>(4YwuF!EI>{ggyb8jc(gU=PHgHq|q(hME1t)BXS;OM2L5wu{E0@oCSO~ zk|PF_pB($~i_L_EQ3&x3PO%DjAczR9+WZ3LMxp3Zt*X_8sn5Z=mMdb~ZHOocn%PQ0 zKwKPq1DXlQEi$v5ub8x2WEPM_gXKUSy99!U5zU>HZ#Z^Im;PK-Y{l}| zzZ=H?Cj|Niszn2&ge-~)J|!T*az&f=Jqu%zg2d~7JeAQz{sD^kp@_Fx1|sL}ilqmyhcSD8G_5Ii+|zCp5>Mz*GK2c%EJE!8rlnO=!@Z zsX0#CYxe62n;XpW;v7-|x2AJJ=_%yGaTI>*JE6Hj>QbGkVgZ{Pxg~+VJPG4e#FHIn z=EaMHpHcc?CQ}5jX69_oF4-2lY-Hg0cHp#!$%{}sWlUo>I7Wuk2M%VS(qKbnEq6gH zFejq|GMVFM8iO7(m6uRe!!le|z5K{`^-YJ1r$7V;>-ei=^^qs%atGVRX=b z+n%~~JE-M=^mwVW1a(h%P(A zFE{&oJfy*6bqF#cSG+FI?b_TEj_UDx6ulgNA(3Anl}TMbM^cIDuh4NE@#0DQ9!SrA z^ z3u~z+j+W)90>`NI6d%x73VX_Cq2x7T8kz+H(j^C>h^IF^9Imtkg9uBP9}FUY@ic68 z{sqld^3Ueh>xUK&T|csLWa-J}9m_kH_N_Gc-Rpkz?X&N^{MO6wsBft^U%J!#)bII+ z)eov4zWTwdE4`z4x=$=T_eFQl{Bx_FUGvK7&fW7(tIchT`IY8Jmv`NqSb6;5m%F-` zURoY~EBo%j_YU1U^xlzMNB-LT%xXv1jkY)1-gcKKZqEGfg*%TOyxTFn+Ol&oxA4OJ z#A>4bdfP(VZ{4MdH|uv3efM^BEj7LQ*f&H@rsqfQwePrIU8r8avT$YT7kAqqTkY7f zcfO5qvw-EH}3#dQ_>8$3G9OhoT_?? zs+MfM0@n@IYf;r#Dw-LrG^wg?=U`f%wQZ9l9KoqB=a?9H44WsRxkUtBVRsH!Tq2q& z7&y;BbB+96?)zGnV*SfwYXrLY$JVi1i|>l{EIDfgx|=!Cy{~^X{DJW;&iEve8VJ>J zCFS_XfY-LQT!EY?E`=QPVJ=84FeC&e75V)j3?SictbJd?tHYlP??%GECM3xJsp#|s zoNQg12~~^}UJu}6CQdpB4u$51qta{9Dy|(CD7PfOADBAGG5}@!wjzzAeN5bhK)*`v zC3bz5peqTwyys7ye@jdXBW%$Jw)y&?VmClS-U0(Ygw4~?G;kBdMe_V(PnVl@}h7V_VzSbVDlpA@L?p_ zJSB=)QHXdlyJWaLgY)gGs##DPi3_#^5NjLRa=rJ37iuA91-2d}j`~17&PQPm?dtpi znzg7TN#8_{OY-`!BqDWuPLiJ!A3CygI#j@{``o%I^Jl%%@oC4$)w3##cHl+ zq-Uhb{E{80<|Rl+5i^kR(`32D9UotoT2!2wpBEp0iyg|mC5R9$DJ{rJ1uD%hv$tKR-K%Dp5uN>AKGJ4JxgyHIPNkh za)X@6i-s^i$g{U$(15owY#bE^1)k!BuxZphXl8yB{FXrr^PAzf4qBPt0>5q0#{5?J ziw29B-v+;Z(9Zlt@H++_%x?%64;G7d(SdrLgHD9m#bWqfgD&QGhTWqjgC#7jD_lBS zHdw~|?yzUHe6XDPOTrbSm4lVcUmC6&tsbmq{xbM$25Xq#1ApycE%TR$>qhGb>zThI z+%VcW*vR~qVee?uU=#CK!M|#774uhzn@3v)TbREl+&bDe*v9;|@V5`PGk;xp^{8*q z2Y>zG8nI!pBUowRg2f|W(1ttr78^zHdrjZPsMBNM`Z;mc>zvrEg?v|u;I#K(7faKE zG_6{i!EP4ThOqW*SPu(ZjWAy}Y%L30gRqWlSg+U_tQWgP!>}NBzb*`}6MKTyVpp&z z=m@S4)(jh}(E|EI{943sKu>DX=HBn}O4F3|EdRRKg={-F2Ajn7!Br@!3pqFB#cayf zuvsm4Bg);vLN^6lkYoL@S=@}UC&mrFE%DX^qhsOVXfP5B#6r=CH#+Q%oeX-10z+`e zr0AKD7?iqyMy(m}@oC|?KoEXW#c84jI`ot7wzbD!dUA^4TkYUJUdETi#M#=)p~nswFkTwv%_ z-~{C;I)ZdcV*}mjV6#^#R~=6=B%w1=Y24dfRCMHINcQGJhN75)Py|7NSinnz!6rh< z-!5x25tLouX7>ta#wnV>`+MsOr1MZ-vYI2iPPiHZ@U zL-I?jPsUSM}|2TIN=?Vf`M32^d28qC!-tr_MriJb$bKHqo-qf*)e)@ zFu1j-*`{^$I9e=rQ)Z=0n8F@;EI7ovRR#cY0#s#q71Dl7d;5KBbOkS16);z71{4fd{@%< zutBVXzlz0GtNG1h4Z^C$da)MonsJA(A#K`20Bs+(s2~N$q_oY?mLujaZSiAm174(g zG0mU34w#k&2We|Im03w7wPO_1W+{jj8W|Wes#8R;jQsSsv z1n1Ai81SW@P8>JRUFQdUMyUe1q*dfJ!|@4eK@Nt8rPUPTBZt}`3vj%6K0AsHHX7_1 zi3Xyh(MT{J>e&;G$fv_G1fB^-&h&&s$9u3bPevo_yL;F5$bgq!V+zQUd;H3lRhDuV z-j9u^t$shPV!uD`WMkK@eLqFD*T6Z?eQf4zmDA&k)}~Z-)0FU*GgVnXC4AkngjjA! z>lk&{gg-Voe+Ey%;AGb|28SD=G|Qd|AW2yLYH5?k34Vl1TlR?AL6({)j3XM#m6u9e zn^GC-(RN^7{Dd*T9v*vZf}22XEL3gRVN6GS{~iWW7${{!14sf;7a0mNxEAnY{IQ+@ zDrtV`**Y2oOdpd%X8?(|W`mDNZKyw8#1`35I2e$8CN}%&au(#r@>GsRW$~qLCxS5r zsHe>#nWEEnmQPvDSSrS$u$)^YY|Ug>iqy?&1Nc%`eB8~N-<=CNfE4nJa4@%y?A(@B zB+EJzWu0@!ZpP-zIv2|JPFYj-lBB&hVXvKecG2#eJNbU}dUUaSXUgHac<92Rnf*6} zsY8p7jX!afPH&kxHWyoTZJ4)ikk+E??5=^Iqh-t%#y8>loQ0t+Cd#8em`2LI>=`!f zZ(@&z%V&3~zX&+a|@`~1(n(6{fv7yNq< zyl^<}DGWQd``M#?hoz0^zElhcSvQlPfe8gljY&Zq@lp$dW!f@qEwWW05sZqLDAS*} zf{s$seQ*lqzp^G-*_Ej5nv;_~{fVCb`HKAyIisz5YG2A-HM1$A*Lv4=hNaOt%K^3gEzTR8lbAd~VodStx)h*4yjZw1_vOpk7pU9sn8lz>;h;vy0K1Ja@(|6Ssz;hr{Eb+|;WchT^tKoNN z15zXuc?F#;(~_BcOmO@KXSv7Z}opRg~NJ3?@X6j{ur`&xQy-08pF=0d4ZqFy%q)0}5T7 z%PK|z+(9yV#{pl0=RoatdOU!(b2aODTjU$%w(@0U4gtqhmNshNP&B#Go>>g~cWZQ8 zKoo=G)~(*n-D~sEk+Faj7-c=oAtSUN51y7|)c63JAz_EH{sH$O!jwJ(-j`qQdHH2f zL{tJ=+MR6$%N{rt^vWRJ*f7!nGP03Twd2v#l6Q;s5DrJrDo3>1 z6Xhhx_CY>!-H^7j8T3a_r7h?hs+0i=Xj7z(;b0_fLSRfz7agO6yiby%5<}3_){$r^ zLW@Y+N@-1_r?5b9Ca~>K8#pacY}yDWMc$qS41%bas zd79yz=Tfe+i@$#1*ORWcgsW{fmTcdZXy5f0Ew|(!`SMQ70xUE;0`n+=jQ}Al%br|s zCXF@#7QGRnWAr_v*4vH1J!4q}Mh{iVVVgq+QJ{ZXUY|Hg%L z#xHVb`DQMbWfH`)NAR$rg_G#mHVhfQh}>s6B{jg`+d1%;MSoPZl;J)(u!pr#2=yZ1 z0nw`Wo(1=aVBHYmDS^3&|m>ImifWqTn3ETXC6e#!4tJj zYQqcLbtKz+04k+FAOtZyfYzu(MOL~-Ljc%}+l1zZR1!gLdUj;ey!4sr=#hP0Tfl#? z1|vgJ5%6{Zh{Tt$2-8Az3_wU2k)v?K(SRr&pn$Qa@KOr}=; zPTB4f?hnd$n~Z;IgYN^AX}8nzL6MRCPUe=B>~1xF(89w_o7f!d@72}7?jC!u5+=Cp z(IYLstEQ2_444!moAn6{J+xTM32M_gqF0*^k^^Xw$J!u-TXv(yl4T9Wr&c=8#mcnU z5s&7}y(bK!S+u-o)ez`O6N6NhxfGgD1l#XDy9RA0%@gL0fG`v05fU3LdnQcZRpB9| zE++b?8N^Vqy+W|}|1l_HjV}a58rDWYCo)b9{Ns>>Xwn>DkD(#re1rezWyDKo z7VHpw3`K^*rwQ74Bfu&NQ6d7z8x8@N3j?bK@EQijJjA3pKuYtlts~MQER^`Fq3CJw zKIi~YuwE56W61R@c9tDF_i!N4Rq*=k+6o$wuhk@2A)-*=AD;4ctwHBi>~HWM^D1N`hG{x`#Y}hNOtT> zbnIH_cxv9gI_36UwqLR*-A!P~%x$>onRhoWx_3OVa)@)dlMY|P;ahZc+(m)FCudsc zf;V?Bx^@tlH`^L0yX}%~rg_dXZCh}!o!XtTa;0St0MQXwa@lgpG9&zMF~RxRu6)QD&_>Xl2QD0#uh@FaGynY2sRN6SV?S|}W=x3t?2`&D$N&1+!gBDoV|+Ht z6Ssu<=Z;Jr__5%J`!up4?W` zo^H#Jdh7R=82`e}!yQrq6td<~v~Gm1gwTq793XiTJPJKTE+(*&;N&B8476zxd2c=T zB2YQCO_K)E1a_oBuO0xcJcRLAD&L$fpBS8324=2VIn+=~32<%kS>uOP4t8z_s8lHM z7s8X2O$Sm2UjdL%py+6KV|5drMYK?XoVYt~d!cXl-h+MJqhj9PE$TiIib0wOf;QgT z>{aT_lf!vQK1Q;?Au6`JXiZVv!PuT)cXl7y-B0Kb+sH+18~S6xbFs8jsmZ_R(7=(t zfg_B9NZXYJ$BD_4_Go4JQHGXIMUm2W+M%OCKcmW=+4d>l#!>l1x`cHeefL9n$ikOl zP|_GiINq>_(BSTsV9Ae=Mwa26=k8b3T#j6d%)XMSST|))S<8~vhJ>}@?O(rXnYT79 zT6f*AuD{xFr6F0pHc`FyM%_a7jwxr#xtVCVilntEVFfyN18JKUty}Kbd9My!8A#Tx zPt>iyF|bg#XWm+!vQ{UptqE)EV%yd`)@_W>TH%M#Hf&pJG33CYd_50IBe*Y*F zT*L41`@aIzS&b1$Qkgb{jw_@Y5oBqX-_J06cACh3KVx!9rHEn#FC*R3!trP{EcH-& zNFxHW3~9&7s3>irWW;DrJHTVZG^^pn{7f6cVMv=5)(eBn3YaEzS2{t?X>w?&rG9b< zCMdj9FZsx!qU90nvESq}X0EbfTD*MX(uvuPixs}}2c}{Rf-hB3pC8yibqs+>TT?$T zRN!6LI4@M;y_Y}0KQx+54XLWS412eAD(~&P*!#Y%c*%tLjFU5$q@H~0A!jpfoHb|Y zbwgyYTW49|k`XB~283rS;CldH_3Q>pQGH`Cd)+!h39GXSt0`e=Y7cnoX464_b~wY{ zH<6mYKSXkRQ~FXsYIrklZvB>rT(PNW#+aek94f%;Rt0-~xOa)ZG7V*>vYF-#hu3V& z61_5Oc&ecc@Eh+r&k}oQ%q6DUX?cmmE7MkQYM7QY9A2}V*lSK)qOXs46q&Xw(?Eki zgum=VYlWVrXW``J*`h@>Kmu!olv-e1ITap?rl3iWy9a5mIZu_v0?~^#UH0t0=NQ|F zR6$;pK&AzyfdcjgVH4DXB`>R;iCE!N9{HqYj{{;Mx`4e3}ZSbK@qZg zKjb`e%nv!Le>e~d13SSkV#F0=Fi=$*51$r%yiTWeSxIREDP%(C!IP-+LOxoY>e(|%4eFlhnA)huz4P%dnm`l%y z+&B5l{G6srOFW$IG1!~D0+O_H?6TO5d$J8iylFvN9a2p8 z$FgMClm+7=yl$Nk_GU>r?M#;WaUz(qW0Wg?q$=mvd?O@zU-pdDFAKnDtWgWoFI%fU zpOh0x9U;q3!aR7jGIH-p6ZPSudB|`A68@I}n~8KBp>ulKbHQ?klQ&M7Mp~Ce;1fA? z=2&Z!T$86fVUD$F`A0~$x$Mzaj%1iHUoyOPKtQX|BFw+Y)k390SqH#-5YDr>v)msV z&+cw>-~|s?V(3!-3J` zVqiynmmZu@R4@FaV4G_|$Peul&?Md4!%<*G@(y^E68;WtlWEL;ah{tATphkLJZGJ6 zSbJVM8NtGqh-;d*5W^h0Z3TU!jYx;?5;3X2!7Jcnf_n*znW4W3UH)7!oMGUD=ic%_ z2F`|z^&0#sGwI-kM4vHj=w2&*16k8WIQC-%FoU8@wRyej2-votfP&z;F=N%Y&SKIp4Sr1C1gOU`w2XeuPuq;J9}6GZ^Jlb&6>6za2PURq-57^iSDjd}J@54!v6mU66EX<3Q_Ho6cN!L&dZ+dP!K$jeJb7s{ zS-Ck;xp`{;N7aofciH8lOGQ8RtOd&TvCUNDoZ9o&(-{X>T=r3M<&5p!O?Qgdq+C_R z$e;CGtAD3H*|a;+wEMPece+L)@SCZu|yq7DA)x~nx;YNpMp`lhQdU3n>4zcEq2 zak_}ro2=Y+yK>vz+J*(JmNSbD`xa~WrK%cIo~p|SFC9#JRwq2Glb%fp&!(hjXTr1d zZdKQu`2Ohi(S@q*^E;mZ*k~vxOmX`zetPesXUqMX=44GrqNZcog3yMRe>Pd`OYc`z zL(qEp+@*7~TcIX#zp^1&=}T1l=9=DbyWX}~+51st(`?hbN3Z$c@h?_xd|1qtS3EQ# z8kwb`yL)evTVA=?lf!R6JvS@0| z7&=VO8-0Ir=zE7Aa_|xo>U}_g3MNRohwztuv{P(}gxz_Vpjk8$CI~!G(8v8mK4=MA zX-`7m&yH@A-k^;p zZL{pA%%X4*rzjgqMd7|)taP0AU_nc$Klj#C!Z^cATl7<($k2M$m^n`Ush55V;c^WL+wwpH1AlRLvG7AF7 zt$hjncl8mEtoTxK(%pI6-FbsgxO?xoJ3p#yNqOp%o|c5CW%lGv&#mJC8daqk&QMYc z7~%FPE9Q^TPG8aE>{Xg#iFI6W*Rq{J4sMEY@&hVNp0JJs(Ze7isxx}oxGf6t+{-3V`d_i~H%Z8`9*LeLnJ-(l43~}0kqVz2FCxXt%ZE*HQv?Y5)P&|HZ`q7sW zI)#=!pcT+pdZcXtF6D|p-=(vL9+YKQd>oafN5|0aU-rbZbj$>&)g+p=o)8WX5Mvnt zR565y({=^lWD?&3be8}ULw9$=BZO%WH@%ENTP0X*oQuA-oW@Km_Ad$q-z}!Bq@d`Zq|V@k5o7)zv z`xh$uS+J}8;>4R132SYtqxb#o*S9A-wk0~Y&2Jx=f9{2aj>AafN^RaYB`jK7Q(e9E zu1z&GviJS067$|gdsC`yO|orQqHWhg+f!3}7ah$hM`_aGO*p)Y?BuSyd3NuD+c)2_ z`{zbOu`^@h9IF^0Em(fEr5Iqi56?<;q@IKrw3x0w4ajY1bezQL{1U((7&<&yI@yhj zO4LWps_TjDUKxoue%tU?tpHtU2!U{qIZ3{yy+A|>_Kehr$YT+8T@VjwrlOYb?v7Qja=yq{HJNxTE_kRPQ>R9Rw?hfIDMgeZY za-pTdmdhD+^DH>h}*!pqQD8@NS=8+sx6WV}7Q z-9JC!I+`PbT7izcN{L1axU8yqP+}>p8&IJCK z?VNY)gv^xfOQP6`olX_t+iBhE#Fc#h2cE ziD3C&cGqOz)q__K-gd0X7&&LH0*~|OEIZ${0;8a=aPGd)@auQ{=>EKsS(dr@+ zLE#g&9laTw6W+I9x8FFj*uFK6j$%CdqlWZ46r<>1H%s=e5Ucg07%g#5 zS|_*_7+tOvTBuXwg!MhQMtv@4kI{iDmMm-a-w$`(}-d|xouoYB8 zEV}HfIFVfqBy(J0gvyuKsfd4k6$A11R?&MZ5V+|c?6a1G#77`g2aT;=mhU8j24~rz7hdVI{Aux zdKi}(Cn0q*DMYGS2}uhS&(PMiKukk21c4hh@kZ}z6|wQY!a`6Kd;3{|KAdfTj~1kh za)I$WXuE3-fToj5sIV?|defEpgl{COX$Z*F1YEqXfMp6c3ZzU)BoKqA-SG<2oyw0> z!hOXGI?V(&Z&ORmq}&h@r59+_{yjN_VCUi6&r+%q^{CNG42se-l#GaUO+>`VC>ngE zUQXi|1Sx!4={6N`pPc_f&QIaUgtLwc*<8H>83F#1{2v;Y{R?m4B%eqsIYp46JG)?bMd1@{{bLp9+ zr#Ip0o!@d`-qU->^Ys13we#!uCK~rDiSDE^FWxK_>Bjzfch{o($y9CqwCPgdlJ$PBEtChfeadbhcqMjF6oY^Nw@yd?ebsL;}+1r8==~x)_NT&0Qx2hkfi+bnrR-rpX zl(o*;c4{+rQTqy|7H1ot^)U2YryT9{QF))jfO_>jZ?WNi&bIxqQGZ44D*MDQ*&4Y`bPt(RHKHi0ic~^VF+78yr)$Lcd zCu=(rwH@=FJ8l^kYN6>^m4dy2*wwFI`RZ+ZH_?skqHA5kfjezapoOoc}})lgQj5pNAY` zz$p@X;Q*)>iMZ_2e<7sF(Jso;nPh=ADAO*q7l01^qG^61m!`s9&63ks1dE4tB2!nR|eEl*`n zH`Rz9IO0!a`A{12h*r{)XAe`O{H$0JOQ>vI+?QpL#H<=9v0_BnfGAiFgF>f~n}MRV zljRkGiZLEAh|#RDpn(4GL5_HdHW^u&$`oy&KEwgEXwreY%cGY@lNFtbiq5QDK!YcD z8=7X@u64fCnOwClv1;9oowuG^Sk=GKu%EOs6`s)%>BrPMhOzzxzJlY4Hg_}rmTsWp z$032G*%0_i_=6P^khxE&{B|9Z7zcKiw<;SwjJg_xafQpm2&^q|f)g{89N@5$ev8`wAu{CQ_6qAh)zdq5Al18m z>Y0>+&u_@#^SHYHL<0ZIo&Z;O`oN5M_0*M9w>@j__pG0O1}rf9JNDb2PQvIn0AH=D zOIG$KDtlAz>ZIG7aC;ZrtCpa0;bchXnuL4J+_q%LlZlQe7dmz>xOY7;8LEKd_FZb4 z+7Il%xI|$oCmn4GN89Z99Y^ndx*kPrW+e<`ee?8UTi+cA#+<hr0)ygS z#24!O(0a^QfF`3+kFLNnUU^{iOF-GgQ8sMdg%Sg^~gf^j%0U#qPzdR zs*ftoAO-6DeR`?DofcjJaQ{CDh&OzG1Ky?TXsph2cU|Sv!9-I(ZkR2)j?G(-F$|=D zEuB4E{~0+}BqLV1^0fjP0mTgsJz->o?sc&|^J7G6=&Et3q=s&s9#j>Dyt7-^9Et|3 zwe}I*^qB@El59!;2nQE(RPE77cwC}E$)^#df1-4`lbI%qffMO7_zI?q(Aju>cB)jc zR)FqbqnSF6bdQJbXGQM^7wu~v!T+t!i;fG9q_rwxt(s|kukD5>*}FHVl@jdA#zpA0N-iWdy-= zfG32V-h{E!`+*}L*)B8f<5T6;Gp$$GTv?MSZ_OAfBoD`?PZh@|FWt;}k)PWFUCXDx z_jICTCtcBbk-xR~!}9-J^B-ywdx6nYz{h5rsh?N+Pc0)&J2GX;bR!G40+BTgK>a-$ z&$a^I%b(nmU+Eqs)cm0Ig)85LrPILSfv8G<6IgMn9GE#2x_)_DhggiXPSN!kY29Lp zSSpr@p7+XsX&Wj~YNc3(QdP7HSJta>1G6TlW~s*qfLx(BFNF>|t%tJY<)Eds>=A2- zR>`wjL}FV#bh{S3in{meHD36NpT7eN~4lg z*6MK>U!@ANwNVzvUS=djx0l&@9Sw}*4r&)eZIqnMx?b$$Y1~&22ACN>$OIL0uc~od zFs5Ut$9iHg-zS1^-A%2E49D$oHHuC81!gIJh?=Af0W-dfX!TMoYXY-rqBIa(@9h0o zC4+K5fGo@sFWJiu+_MdI`N<{XCI$=*Y(jN2T zdK(!O!lVJZFHUi<$l2F>jZ2n2>sN>x)1V^JVi$K%CBAL-9YLXZ84=h5x?MuDJ9DP=t zmBP{u*tGq~p)dIR29A-DLTLvT=-ERN%dBhx2?!!mX@;5BCuX6#V1;%?qHL+qyr)fU zwMri$5A^+vXq@y9lpi+9x%j3RnfYU7@X7iLrjD70DrDcUW}*sM8&($+Fkl)MHXdoq z(8*|M2&UY!&4N~h6e-nsUxImb?vL>&uYrTZ6MQY`Jkl_^(ksu;IRdFQ%}oilkp2A9W-+n}bRY?>;TrY2)BI6KrdR-`G-PgBm)R8l#O zy5&@)T$L$jNvgOiBk;wWGR3Se8_Mxy%TXFrohp7ZV`I@KL_4_Z)$>Am%Hnz3aJA@4 zQNpt7Ze7FG{ww`gpS|+zd!_H!T(7xtFyVV@e(%wRI^b~CDWT|%gRdT(?wD`iGQaca z`GbqXv235+DQk1eRgo%gOSy4nq&!vJmvN!8pMwEqRt`bpITW0G1ohdu_ZmDap@4cs zv*cR=4_D6-6qkMEGBWf;2Ky&@W+@g-oJa3qGTkcUfTG*RryZo7=~rp95LgdG2fKbd%qSVorOHzr@5 zOj;UlTN-B1T$_AnGTHvb?e-_`S-bwuRXelq-2)4*?s-@Sv%A<(0$WcaXTf07fzJkW z9v)CRaFs`oIGMmN7vv1}f?t&7Twq{zjz>M5Hy`8Guv_5PYDr8-=5b5P9<+JN#Cg`W z7^bXP;8pL{MAR$6K#{%ZrE-6rVaI`D$<4&Q^@|0*XoaAp`E` zG$n_S^gQ=bSyd7&)-vdC+z`QRT`1dje&6fQVhbdNs)SIL6q*u3)4QwZHZ6ch_4J~! zbET*|!cI14bl;EJrZ1Q^)Tqqbufg-HYyp)*(I-cYD}t0ZS3_GEr=nss%vVHmNF@$O zx)R5@8$QLb;WJPz_KvCs43}F9Q_LCSjD^;lYMzjt>WVE3*dsfgvmwSRTES8n1hksj zLNZSnI1?p{Uciq&&p06~@E9`zj1EMYfkoKqQ3vTH3NZG7T2cdc@jmrBy}qtg2D7WlGNfrigZUm_08?*~J|fb|meM347zby(1xXr0k`6 zK|&*2Mg^;fz#ZH3MJVc5Sv`vBPuYXrPH!9V6JS<%C zddNA-*U_HTpb8mfnJ|2d`?djKT7V5JlJBrbwW5a$9AD(#D%0#!`ONW6d+|FFVIZMw z8IpMvhID8+72$adAyv@hE_LO0Gx*O?BZ=(M41A^-{6_w*UU1FXG4PkDS=vbso5@x1 zk*$(2%x2)HF@U)5qPQb)fNrouVKqx4DlKC7RB6(%M-)-LCa_a<ZGE zWcgL3h32z%M${!Nbu(YNZSg9aWj8t&T6Wy(x!v+SsiEbha%I(*w_nu(RR7D>u zeN}y#`=goM-Ofly|6;cqU9-JTiY;Eq_t4bf`T?{ z=r`tJ(!N5;_6d98>U^t8;NJQsL__)W*QT^E-(~aXm~edF8kMGVvxbzPJ7Zd3CW}{G z6OQF;Vxkzm`!agxoN$g1&|CIsV?b9`^7gM&ciywsva&6)>5tij?OU8!j2b(ZRfkWl z#*xlP<3#7Tgm35R+P(E_r048&W$}N@m})6}HC9Aik${pd)Zpk?Y&^}c`Hb(1mnjI8 zBDP_sSzD!o)0w~^6J9+9PgZyZemrB~sY@-taaxnveI8yFWmOl5vS5eCf}fKh-UZN% zZzDG|C6G^YD2mv1taWtG<;exKOKtc~EKaUMW<_*W-8akMEcrq8_pATB_U)!bHAE?N zdcRiQ$j?|B`FKw&e$z<%%_AuA;eeuF3(}YmK-E-B+KL4+G49CAur+S*dgF=(zAU4G zerfM7&ivy3t__f1dMx2EogwR5?U?gn*R^ zjg6G%$7B}@1tO6DC<-V{EPk9?F!oHzn*%N&D)AeKj%itwk3t z7cBE`Fa0Qt%S}Z;dEv>VeO1D~YPL6FZ#};^WwD>1AbZrpM~>33?FWy;>A4ub5KcN< z63&+M{XkKF_h_=bCxQR=9;8Q0_Px4qYW=*sbxugQI~RqnyJgi_QnN>{4ZbsYLs)3t zxLDn{P}cVljDglE%Ux&5bbGS2HBkz)*bAi{3(ihhQ`2f`NH`m22RXvHSo`tGjU^B(7 zkYTz@72Ak2u`BjF?v@8Ikl31Wp&ekBILfFeT?zcRcd?$o@ye^OygrHM&$N(eVD`vD z&64qQ9K$eAygr{sB0_YF_NvvJY7DOFPakTcny;bDvsH_1ybj$au6`YX5tIn#8t z>q^(0Wua#6LPal3V5p5)KhrwjxZ%e0e{$@5$Nu;W$&G!9jeWNQ^BeZhR~@+HemY~P z!oa0*C}s?NTO}qgIZmq(c3ZJNX^DaMUS{Aem`RLF-CkSSb2Zc8$^D4@D)m^PE};ZegGSQVA827f3&+qsVm1 zs0I&3SLgDuU)uqvlSCoZTtaPN$VFwRh}fq=n3{*4EMY8Zw-%vth-C@TlamN?NnVVB zVi+b{J4%7&)SSfv*u+x{*1A|nInR+pM{Syy6)5o*h0KwYWg0M6U)o5pr-^DJ{(u62 zE>OA-`eb{wpFY=;L(Cl55mHFO9TFK_!GBKv4YN&?r~N3xXOE6 z-94_BdEizc@TZ*pAGp?gT+Kah)jh8I9@ln{^WNi{?s3iRf9E}}>mJu~kL%FFk*qBv z*h+=-&P;`=N|@(7U^5ylDc*A4^G3z16;nrNJ&SzXCx)X2etU)^7t$<4J2{q&K;NH? z3BA1Y0SD)klYA-fdBDN>WK9T2KL3DYuTQ>U?BM(HMQ-NH{AS)fb1cK*H76|5D-+{Q zyqhfT;YH%Ho6R@R-Rw$i*q`V)utb3m(5|BC4U2qL#$e=k@syw5a{_*&25)LnwGxGe zZ?I(y4&FPxBg5e}8+=GFN}_~k8j4X{1=I1v5Q^nbkgcx`PLQV%Chn?qusJ^OX`UVH7e*IsMwz5jh-VS$9_rDOGdtDcvnAJY&0 z@oAp&?6-k!5B-tT5qmC{Iznxu9e!IF{{C0P_`R(cQ;O&aK2E1Kf2jy``^9Fof zKK6T}`2z)A1?>02@9*-nKM(#uSAhLK_zSxV*`E)8QCAWB3*ZlS1=;V1Khzase*pgC zu448V!e7!=!u}%oOS?+hAB>g_ly{Z0KNPJPSk|?S{l)Mv?^@3Ol4#{XRaX`JOQS0W zs=KP$Uly$ysO_p{e>wasyH>KlA{rj3>#Ae_GWhGe>e;^>{)VmwhoqFKezdco@H1oRYF!u6v{Y+YZqi za)Yw0*C{u?=>E3WJzZ;@(u0!R^r9rMQe0=A)Pl2K-$wt@)3uIMu13n{yQFO8lr2cP zMrk$jw{hrNgs%IxQ!BGwZk5~Qc6t3PuCDbQzX9chELbn?!H*?qygzZ!|8!5La<%;u6RMa5b<<$2f^)97Q@e`!=JUX=Wch@#fyBlfu zSkrcGm-ou|%hk$uWe1gkK6(Isv6FM`LyrAM{qEzi0|+~~pp;!ot$avXiE;wUE>V)~ zM31|)G9S$9!`(S)_fU$Qv=3#a-J6q^YnYSva8}y;bJ8v>_u;Ix4~#fl9!;)&Oi^1C zN<0ycC*;_0q8%?qRl_}zp~SG-KX^Jkp!D=b2K(a!Z9gU0cU*O3%AOdE4-XB+)Py1* z9a7XtqCYm+;>Z+sDgy|Os3V8^qY46C4-Agr<;ClGLWM8?L1mEA$LL2M|LE_5*LOH! z1pAH-QF)Ol5>6NBROp5A^f*Z$aG zZ~tj3w=WiZrhj0F%X%!L#ufT-QBR-J^GtVtd}xH4j*z_G{^!tMs&m2d;Zw(y&kl=- z{Qa?LROt~Fc5BUYqqYN->(PFycJ!({|1gbQ47$!^(mT9UoraL9RY z_`dBGF%D^w9QksA?3V*_;TuKY_ULIxq?TYuChs)&Pc)g|+A2^$$#~*uy`oklWyU+8 zB>G~qx&l9vn+)8^#ukd-8IBDq;aG3DR~`i%Mh9b~8c13^8E>SA`Ztp&E4`87Xd;t` zLL<*c)J$GaU#!1JiD%q>N^~gcY>j99{PFId*kC-N)>0Mnw0b2gkM{usdxjI?-k2IT z>brX|*5X!IQBn_Q%eZCqrMdF%@jxnyaIMpy`;FvfOyKwk} zqwRgM0j2#+ED{?)dy@U_z^gcFjKF7=!Dri}{ioW2LVdBpO>G-Cw#R`DtwWKXXCkMS zczd@%u6C`uZ9^lOkO(rrt8T)Vn(!BY3eI_HHc)cu=*6Ssho=Lp&L5n0=cnCeDRq{ZddSfqH$04dL{+ay2|ZjoqY-)|0G=}%l4OUOh^cz>iFknlI46y`MqCY2LT4qU zMoD!!q^A&mR(j6$lyuh7;*Ma_mkt7ssuJ#rML{kGBH{jc7^9R4N;n=1C;B3ZaDO5k zNhBf|tMPDx!YI9}VlWb|>W>wK@qjeRQ6z{BhEMbl%CWQYwgQeYiXM(req_c_9UuZh zX~oCFiT(klEqpu{?(fBC3Ac&j$uW_G%jxY`K^(R8z-Xh~vwfg(;lu4mHCm}qBM7yh zRn}#t>W@Z6Ig$QoxPLGVJnxSU$HQkMBd97hA>%pQKe%b5N|5hp@u)R;XM97^NCJ30 zkST~KB5ERjwm;FA@#$aB_zyF<4yr1VQgsLN#EE`{)s2+B3?oK>w)<>MeI^2gAC%Sm z5Vf6BZi91Px)YLo{+C9dA5G`grt)gX&(7qno^!hLi*E#0%y}eV^DpjrrO=Aok|V$P zy+CNrh4%;X0P?=(UM+nqf0OIC9h+PkF9w$q8OR}S27cW^rCxGy=G83Qx*@<3uedg?E_F1pkT5MrBDXP9v|bCGY*Z=d#@BT=ZQ z9Caj$bpM%6va${;w6MRR2r-4^cb!#E_QkMrm{H4+AP$|$`3tlFQT@vRXPHF7q$ z0!nx|j(E;?^5o}^A=|nW$fKMix{rFEIC)a5VJGOxkQzIMy3w#_dUaL_M?lj~$Fy&p zJSh(kZ9I809D7z#nF2A{3ipC;@Ha3m^{D+rm|aofK4lPuhq9hLdFa4?X1^3<27NlapfVVdWZ#G+ztX#Z1{8^Wk-!scsxO+ z6A9$v&MN(?JgCG$(D?I~o>IbbMHyhK92<;|gij%!swIb2q>l|Ci1H1_5?mVSEzw^= zNqZvr5UOKo$+|G+@PWt(iUQro934lu#fHF*$Y^g2d zkzO`g*Q~xWi6GHnhG$PCj=a=t@gXs(h>u0Wa({0xU^58j0u|`%@9E>ON1~XW29(Gk zAd{6wfS&-bDnrr!9x%j&XJ~XZcDla@-{jo&kBxLk`+Jq1k)Ej1*0ZyJus^{#(cS|b zO(@;`qh71`PB4#=0aS~q>rO6!ri;Uaz&x5~dK3T=+*KQLfpaHBQ_T=C@h4BN3!ege zbQ)8Vr~u{XE|0{+T)Kiuk%!MPszSUl)q7}I9YSyFGwE>!08b=_;yc^hPopb_Pqp>L z28i)N`c_$a7T)&$cpMya`-b(K#H6Nf1ue)F4~-0sbOZh4VEDTG2YX{38SklK0&T{H z@z;~hZ4lKh#ozod;e6F`MY`yU`$r*s5X+-ynk8@(vg4d{5ZuN&XTo5Y?Rb`i!Lyh% zgB@K51vjV`KC3k@#9j9yMvj5 zjN|N2{~AwALB`o1qtz9yg-)oEA*{JFZWEeco&dD9qfi1Iv!b=Zde3)Jj zU3|#=l@3&=0@d?=Z>V5S^5z$)oAIfPQ$3Y&o;}qPV9rV<-bW=aD3jM0iG#yb)x8vS zKLr)^V+H`jHQ1x52PmMpTbr}ADd6x?S`Puf#P-mz<2N9UHODS40ccGSLX>(80qWy$ zbV%MWAX&W>=+vi?;X%su&)@)1ch*aR;H6y`ccuOHDS!RMwi*B0H_pBppW1bFrv0&5 zUlF*pK&`#)-m12-iYqmjYtqH_?-tizJM{e{ z-#v2v;h*@+$IiT7pRV7Us^2=}-$n(w1D=9g)lzZoD?P9FzuZ4rHXUkvasP{l-$O|J z)#S^`$<5Qn>k;y>HRKBqGq5|aIx>D*bD!0)G@wM(=m@RfupsX-hAdh}$kl+q`DPG- zM10%rt@X9xvP-qEc2a|-#tf8*0e6eJ)Vd3<_?2r=1kkl&lKxv&G)FwWK{VpMB*&ZsOyXki>8;1T&^?AELrf=th+4zrsIm^oEzzg zR$3l2-KhIal_e5CpFf6twCJ!rdcLR8>T{lR-o%p7J+so19Y04sW*f3{hZm-_&FwXF zk4PiZKX+mI=;{!Hh$3xSJrEhhYFlk7&Xhef7&|-I9Z^rmy9dD}#IX`r)OGk4k0>$t zX_?K-piJRVbog}tpq4*Vq;XtFM0pvXs+{hRV|L8=AtmU>d>t7Cl`V%jVyOFcGdROP<<|7of5W|e#$7dA7EYJ7rOMjQ zAGuMuVtn7L55N5Ibm8jrhi2WyX?Io1T{XUSs$tWNd-I%E@*t=><*puoGF`JHRkLHp zy^})yX?I=9T{q)y$P|^He{j|fDTWp>n^*MG=b!)lR9^jTX=S>!HC5U=UD|%pcfobx z_zj=`Qo+T7v~PLJw|u;G##dtrx$di(%aeQ!e-$Tuec?dpK#7AuXFM*=H&68Xilj(T za7d)w=yEA;*{OISaCc=1O1(y?J1aDA#M9!<_z%)-tH>l6yeg@6C^3h~(YNStp70Q> zV1odH+$=#%j!Rb^9S~Nz!A^?l33SyRSE9Yyi+nesc`}q$g*FO#1)qu&mBG~ElR{-< z2d+GF`H|^hc*+-MBAru1BEww64z3~Ug}3#wtE;_K$Ru{)V_Y2>$Egh7Vun46Vl#Qf zA=Ahl!LO{=s1%#q7-CGmL8%C==cPGn%%#s={G8wq(!tfK;Oa@&+9N2fDjII~<7;fbc87yE`6@CF1bK5%e&+yp)Zc?h6ux1I`x%qm?A9$YV zJk+{f{Rar@M0Y=ocP3BcJ2Qn$&$<(RkV2jA1J~(+_5hR>9Ys{ByIZhYdHZNZ0b##W zO;UdJQBO1yM;{4+tYAacFC#8lVl=i*FNCGty6;mk(7h zimrBcs27o^#jBF?PYkUCht8hKo0eq`UP_6^O-`eZ+nzzw7dJNL%oDhrUrsVR$ro|V!b^-JN|!T^^bTSYpEHge3ivVE)hou68{-MO6U76v@72P*2+QMf zP^Cd7Mh$%w^RhaekzRl7bW~=p<9bt7ZekR<)Zc=mxASWhu&|w! zE?JV(PNpf}M|ivujy~ou7LG+`e9H|~4X1+PiQ?&C!<4Uq+uV|G#moSG(m>CQtA8+| za=pGn5nrV*(5$WDf>~581J0}My{AF`x(9Fd`?f}Se$|y$K!;n zjkm}V2ulUnBkbFV$>m8v^rbGh;_mX`54=cM9=H>!%O|^)d`tr#sHzL(GRTeHU4DcG z5S9mjA;Nrk7inSn@CW4rC7<)TWj}t0w73BL#T@RG3*j%3izuD!fGRwQ-=!!kgm)R< z#dw!%`AXogP?pK1FB;g~wS2_UQl2S35F1R80QHa>8#p{TG@R(j;W`M5iC>*x&h0h% zB9qd+-~gpdJ}h|How^V=+=~KPR5wUsImnK||Dt#jVuCd$9j;s#4%2GAAGA+Mbi*fG z<0solVSDuWK@y69PVp4urqzO`?h`ySIIf7CtXNR}HVXeeR5o4$2NbfXd^Yf@d6zQ? zQG-(xHRLprkcJ5Y%@L&E)o@?%6&CJ?=R&MDy1SEA3%`vij^o~;?-STCq=Tgw`~sPX zJIeVoeU-m_H{iAdSpB3>gOHVl8U)3mxH2rqNSd?`a``xnIRaIP9qQ_FY06F<27fE#jrI1%m4yBD zb2qeIe~$bkXrC-*M5&?s$Jv`Dk5S(GwXQ z#1s-vsKbL$r$D!`GhNX_oS=fzAW@r8aspqq3<<9A%`=)&NeVn@OCpg|)-7*DS304&(s}~YR zGxn#br}}Tn*$gKKHSs%_9xg>VsKmvFfgbnY=rac4$obZXnqhgJWJi02w&O4H8EtC4 zX-=*G1feaJR*sQYx9aO~NJ+JfId75kZ^&UDlsFFc2jsj+&R%jXa*0#GY_WY@)yuS{5@!r(>*#Vmdiy_xN#2zI&pR!gf=cyV%Js7&4MuSl5+l!V&lw ztGG$(r_dbrDRR2tV3k1Q{ioFNKP6ue{)~qL=$T&yXCV&_L5UlG9uk<~FR#l7PSusk z?}%xuyN;aFs3ac#+QgnU*}~rDn~3FQL73Ub4}80#k%3ckWKXihC=WU?5%x<;OtpJn z444ILkWApfZOnp+g6c@nVFuOfdU_?HVl4GI^SAn+yr#!vl&H2mTm^tK@t@ zp9;eP4wNoC|LA)g_D{L@pMMC>g<&{j2{_}YuX+WHDN9bPb+ySnEq*L8tRO?fR~%R_ zyJaty%y}?w^L7WFzSQLdJgRu+DF z8Lun?SXW3`vn-QoO;Ln*Dc(W6%kU22U5 zJilQS3ntb``4{S!ptP%HKj~o=lxmh`d36Ey-@| zL46&npqI|Jl3Itd@q9$lIBoFneUwgDGX73gv18=(R7m+mud1FpI| zlFhq5cP@gfaHtEK~W?*_KKE>CX$&W@`)z8QNru5`>>-53BzPKQTqz#EV5? zg8iU@rY_cH)-^ftAk-}oC)kZc5rs`KQv5iI&FQnyrH+do=|Dp&(C~4455_65OJU@U zw;6O8A2e;>U%(HxeWy^%GwOU+if?$BhNwYx%_KZT&7X!(cG@YXV7{Yuj&8=I)87{y zBhpn@M{=#k#bZ3dLX0aNrV+I>tUNa)L?oI``{&Ljo$JC^U1G%C#FsPfGqBu42vf)( zBSifPoH$imr-~4HLze+PlNhbZ+6Ch%C%z8Vo!^c8(8`JtGQKqxsGD=S^9yeJx2OGk zQ~tfPfub?@75`=bc;~B6z5LX~v(q(g5J?3J?s$-FHc+>aKc_W6lfU!uEWYc&ByJ#V z2K2M$MBBjw)V3phT7E(Fx~T^IV8()>6G>Vi|0nqX*c{?{Fll+!{~~^8%~gVE@yx@d z$|6DIf|3;rpvpxy6RNkNNT9kekoHxjd{yJyrW!ZT__o~e1;64N>%8*R<)-JpL9zl0h)ptW{)KutXu8G?ZIzavp5Ut?SqnK^gxoz$^B&4@+MUi$euIsXO@ zve6KNZ6Ito%5pHm7*MmQ!o3YB`##Z_ zN01|v%P@^*?1vUYZFmTs#1R&q^dOB5M{y>I>RKM1B+{lvu$F+Ucm!+tAMxX=n+GcQ zt$GImDuuTAM6dF&{7VWY-cpQLW-WNoeuu)WgO;+}^eZiTw$PY8hImWA9-HwUpY;bX z-FNZ6@m25o!`L&EJB0IJ%b)SB!Q^$}u+ghD;Hmd3s_nE1yPqgX{>A)D!HdBeU#0d-7@wtmwJBficw)u}t6NT$9e!Oiwqn)3%7Vlat03`D zsQzCk=MTv-l+a>T_U9B_VxE4@Ezk25jK}A&x3FL$K2NW?5(;Y2{2qk6<|Mo( zpSZT^E!VZ}SG)P=+hy|MG*Ec3yv_vyskz)-$8J5LqaCwMxykvL z-QY2m)r|CZxk!X)dGs#{mWj-HXtcwAoJr1Q_yuc343YZ(z{$a7=7fSK2-=7T>Ld)l z4@rT+I)l@YDr%T6YWk3@jVhsCFaMgYT*2JWd}j zMphElmY;w0w%d&%6L5KiaSo@+86!IHKTj;Ob&SA_$px7#jF}*VC0h_LY&7yTTM(b@ zgY-3DAt`NvCWEDvUY5`n$R#pafcRniA$0}ts|dde@g@mv5#D6`5o8H%2v)D9nV_*j zO$cCo}b~zFHHn)UfgeebW>v#C% zDY62@KD#g;264uRRUxF7y|Rtj72ybv_Y1&W;AoD~Resjm)m8+QWz8gmSvIA+CUa-E zRma3#JKu2W+b~g*UoR;^QgVKBzC?2YKXN`&m*~H+ zU?6^*pTtVtCp%!J2^6CT7H=Ne%Vz^<6K?j`uthb@$>2OIsSVj*2mP$jXZyVtppr8*vJp(sh=lDSjxINLVbinzDUlmlS8tQmQodm z=1A&;@WWVzm;M$3q6}vAS_|l^{YMUpQPuFgQ|L9z`w5*ZVC3h;N>eV+w zHIt5+(3;uG@a(ei?DDGF+WI?wZ*>u6n=6t+%U{_Ad+{6f>n1;SE%E))?~YE_9~g6g zB?z-}tr(BgudveL5CDtc3UdU-*RWUw0Z0Iw|#fp?{56Poxij557a*z z`N7EarpHAC(5we9J~(zDUDlE+Ynj}h4s4!Vfm|Q3x!A?>{Wa1LYaR$6bh!SV(B=eq;&~D{uP7ijdXp&faq`Zq9i$nm1NSam;$<4<}#%yj9r_(@m`lwlp z4k!aLm6WHtHm!|?%j*A4prb{22h=nFg?4>JG2rkP0K$<$j&rv8i^`{h^Jf}R5tJ4s#s3(BLN!yWh-5P z?KX8cWW+90Mr_NPdnG7t`>K)`#AQNnuKW` zOy2qMD<~sjTs9D=06Iks$2|07=PC{|(s(ysS*QkZmi38s{^4gIZ-^Lrhf=j-OzOk}&aYL%OfkbWoVA>x} z`NLEGbubM{2OCqt#!2^g3a=Kv8{BduRC2|4**9MHYR$_vGojTwzuB2CUy~|dGZR>A z5XtJ4uX@H;OTSq~bT<`&F-86#Xw$t-kw7N9L2Ssn5pOefo*{nF@|ehG8YtKeAe3l7 zbnTE{tDB~mMR$n@l9gY=m!s8TEFh&q)|6*rixnv-VRG35A}N#)ZxdcTjuhF_R!#Y! zi^u-XX+~}*7Dc{N&Umals&wmyynO#gjVe}bc{ok!VTZ*xHs)cThXD5Cz-~wc#=nr zy?AoLVp^9`P7!!lGk8s&P?J$wDC9)vb>AB1K!nbr*dm?G zi@lkDPClBq#Psl|YRJEr*WcmPQq&vssg;`jyXP@W&v7++eNHdD1v4o?1g3_yVYHqLtG{bss}{VptUH!^aofOl#XqhEUq%N@4fxQgJx7q|)J;9r*Dj zf&~pj9P`9SP#}!-0(9P{-40qxnk+G4qm!2ZjPN*#n}2a$`iZt{9^BK4msd=jn67NS z?rY<51!mwpmHs?AFOXA1-(ebJsyeu<1b!|2<(^@gdrf6 zK_z+HjS>CxkkivnyJg$OIHn9a<5w`aE z@lZn%LVIBguopHDp`JX20nVI~cDZUkj~qa$g)e%c7b&8zu&uk$ zkBF~mIuab`?NN$RCfTu`6b_1`YTSTBv@O9Me~apB*{&mqZj< z+!KZeWF|*z!dB)0zj(CG>1q=~bPGqL=v)yL%_GT*oK_g};Qtrd;~^x#I9x&2+CF}L z*~i_TLj&o%TsfNJX-g%kNZ)~9D7h_s2~B7?_zae=<<>8A@L$u1X)xl$!O+65(MR}e z2l#8|PGoz!icrd7d3p`=Qe%UA#!Y*6vwFc&Z{8ea11;X@ivvKVcojZECi0~)PW;s6 zPmL#DeeUJwrplV9gDq3O7H$cDWFW`Bo!Y|fp^=t*mW57F#AXM*rZ_-5K}TzA<`e2V z0vI8PW_y?McXvbkhSm&_Ik6SUMwEx@T&&f(Y^?LwKR3P^yYKZwXDr?GYvM@oPa8c? zUo`rH2zE~09p?k~{V|ARv9bB0*uG!hFjO?haiVJWFTyE8X^_oEyt4XfHMO507}f#c zBU@@Zvt~heY2iL<`W9~b9h{h3Gh4lK{1Hg$e81tFJpOjW+iS1M-|zcw-yN5e4yMCy z@!8`~nmxz-1&5?}rJW^%sWa5O*r~RmQFI*k@L)pk=S|ektbSI>;4WF3 z+rOM6h*a~-xOq2%+_UK*AFNP59b7%-TP+3^6{SB05`I!O$4P_AbLv)Wm3P=wnUj{F zHtIISa^3j&j2zG!v$I$|WQ}@$c$QAaF+)138VZuR~dN2=`p!A6{J<+B)qWw~7>Ld#LV_!?v(icvY<^m^-? zwFCtPT12)#JIlh!Kw!P zhxEgf1f$Um?qPS*yDp5`YWD|@7AA|<4pjdfA6nRVLK#<2EnJBNm|}|?AiI0$wTC8l zO+G8A-nFOSE}jbRpYrYJvDmWAmXrL4$gUEPC#>MuD6WNoO|o9Gk#;@(^wZCc0dn?}^94#zmA6{RG1VvM4*udlMhbAHIF@er%~0+6!*gz@ zXXW@IVn|m`R`BcEfqD8h=W}?9$4hBTYcXwPT{GT1u{Bk-h62`5Kpk1f;Wde4_wj;y zc}?5fiQ6ui#?4mLjz62KST)B#Ht%}t$<*cp{NrYRc;15)b43nM^Y~UOpm~D#(l%3> z&EvWs3tg%fUK6m_!)vYpA0gvB`j*#)`f&6b5xs_@4>-mf?jZhvLr_C%bq^YBJT&g< zng2&{YcKoAq< zY-t5ExmhneUY9VQCd>ITI3I3Ln?1*aP&-o1ij3??f5I-9MEM zo=gQ#lB%DN1-8C~{$JPwEVa?lz$?<`QKtZR;1iEMc~z_I!|fLMSz->`&f>CcI`OV$ z`Sd!PZ*>LgWfQ)1S#;VeG06WN1wjJC5@YTy76=-vKWj&2f~>(d&qYmEXCn{JDTn6W zjNMLscLbk6-;tE}OMVjnZ~x+UtpmxJVU~_B^jV~T!ufwyLOik|; zKI|4}jE_1Pbc70)#}0HRrw2W#lXKo<2bvobN%uVJ>~&&}b|m*cMykMJ+;)O9P{>3w z-iK2>F#6gt@C>~l9kS2o7?HA%#L>E{unmVS7SM?lLNXu*or9_-owqQ-1Jr*90UcN>lrFon_wwH9(nfJe>wEqptrOFMnpB`>yk{m*ZyShR zRb%@vJa-`|rY6F&97f$3izN8^J2Ms?YP_T z*vz~4fC6rSo*x|nh(I68L4XuO1Oiasi#gUJdCG)@(k`ptYjXPC8r@0VegXwAMyPRR z)l8r!x6|n!D-oFX*Szbm(TTbiT(?T^@IdXt?lwp^38R=~bF*_D;wGH5j6y)+uYZJb-2Ht)Ib6IvXtuDAWKWiM8$VM|ZsK675P59FFqRY2nMzS{7 zjD&AuL60igHgB3mNgM6Bj^Q>5IazuZNBu>jG-r%p7U94S4YM)@Ptrvz2kGQQF_o}7 zkf#zRGgbsEq5`teYef!v#F%s;6o;PM2(&3T(3H4q)B+ zrK1*{TO{nuM;BoY46+hN1(wD$Ov}#XwiA80BMiq%ihI6r&rJ`XIf*miaRD7&c%$D! z0|Ok~#-ahTO>j~UL8z_J!krVuJJZJZ7ss4kcr7n%~JO&zW^@3f;0oU4na#KU37LtGk}{x^D*FY`l1#WK z8?POh3GSHk?V!*d@8(w{7>C)tvS#A($pbT08{SO5UH4Ae%(f0wp8^$(zkF)hhHI;? zRZW%enl9Kq<=!oL3{=v1^tpPT#FrMKR}%}o^vfVf;04vNlBakSpV&SJ(G_j7%SR|e zSm;$CuVPiRA8%4H2k@rD&MS1QkJHri--Q0@x3LKCqq%euy*dXe8+LsxI6vq4v`Wrg{!B?&zpxWspw4#BJI*|Cc;rnXg=gSQO*z?AWP91m{@F{4tylN7t^h4KdPN>eG%RS-B<|J>Vor^=fkqEbznU_rpKk7yl#QgG(lKzMha=m0Hs^2af>+OM@%kMn0~|$%hi|d7wDp0 z!(>R-$B~lFlrYCEtAXSpFuP|TZ56DY-MjyS8+ZOJTtw2m&in_B+h3h*-Q+^Ru_hnh zmD_@_1{+OAZiSB)4BViT>vb4u5_7kZm@DW2wU?aJ$K_ z{#rVCDiu6MD{&mPH{O`8TA!*~f2}dS@xj!_2XSziW}UDQl+;fQ$`=`wSOFVIfdK8% zX)~_lCG{lbu{>(SV(LjdqZ&I!MiOGx)eh6~Ua;%y}4Bb1Y zFV7fubomfp?4I#!dFXgZD?~E^lwf2`uE_1sw(Q7n5O_891MN#_O8J{+{Hte6S72d^ zZ3=WeQR&Kw#&rF*RQZh9MB79mWK*4rUD|o_OgPd59KABEMO7(3F{F37X%k# zsb~mcze!Un*fbSvP5D}H)NQ=B`TM)RyKB1cenE?9!yehSr+sZHU)y!6K_c3v_elZ(}HuRnej_sJV9-j5=T^rwvNFn}}6`R~`IiOx`@YSZvXW zMA-@jwI4NDIH+uIK>R&w{2HWR6el*P0-N6|oeFHe9@uTR-@fUG^rmao#!utXXC)pU z1T4#wt-8~Z-w92oR&8yb;I^p?T1@H|!zxDSS+uM_q$XA)fwqy?+;5ilHKcqE6Z^0G znwOYr4<}vimV6a zn(1WxSRm_B$tnv1WW~Kp9k1Zq8YN<$t+qa0yD3$>DP4PCs`kEg?SrY>2QM6*4Y#Mm z+fw0e>G1wkc>fesUV#dB4^}Cb`B==x4qMhgQ#d@B)skejrIk6c?^8QTr-XKfacs&*AFiyOLP6GN zsiBIA1gipQP(}~;3K4{6+dyXJBnlbEz1yd;$VbO7Tr;l|`W6UL3P?0U4-gC2fW_!N za?fjET&XJ70eq&tnpnX3hgh$J?--b~(gIU!f|~@^Mu38MInyl82t>S19nNb`2bxoX z=IenqG=F3ni#y)`k0fF_=f%bij!# zODr@tQz9FmFyK~af!o3)e?gF|XUIYEw*YRdQ-Rgj11*0Ga5H#d4Ox7;DVr5t)U%*r z$y!TGEu6!DHJfR!2~G4^lM1Z49$5E3Kr{2O%Yp9}v2?FGLanT^v@(~E_{*gm*^&yh zTo0@@8;JwgJ8~}sbOR9@@HhVozP8kD@VIQDYSE>R4S%PzLQq^f)DWg$L*0X~X^)X<2zV>-RbiqZoWt^I5-VA7-)0@BQM}gu$3oeJMD;-*s z3ayz5t$Qz6$v^4XpX;F}jHXc4FK&6HkO*EP)h~J5?>-!D zxz#reT__J(8{Sp_8ryTa&bddOcIW=!$VS(wOPAo%09+)M80_h|=B%{krqn}D#msY0;BGXWgm z0Y4%1W#1wO_#1sm9CvGZ539cyo{uyJto`}eb-zwzRi}9>%PsunDa}8#fy}B zJ+SeYyu^N?Zr@tR>+XGSY4U+;cz@sBxUbpu`^_%+JJnAU#PT(TT1?H6AsF+{K0r*M zx2eF#$(R`S;?Y(2>PvU)dLXys3Yie!MPiBgkBqoFdY|)*y40FckKL&+c5?)*;#}rt zRUo`ut^E+WoujyU-dqZja7eV41_jR!xJf0bQB}TE78=If04(-E@p%i}azIv~xQW;W zWMV+fMKqD|X_y_)c%esC2I*c9M)BVy?2b`xwhST^rz<0d;xs=qo@*8hRpR#G?g1#t zx-|sQhE1}?Li`s`T0w(=)KfeNe&R15>wmp$#=nYDd{rv2Y9`Q}!4=yN8aNLkKD%s1 zdRcpFS^M;|4HqA}uz##{wxlv$(wHh~oGw{)VgGx zx*j4)Sf~^R4uvIu#f^PoU(LRijvS087&PE-{uG?02sUuR*dDt@f|apGl!bANj_-op zZGa)jS)5w(6w*=1bFQbPvkt)zbl|Q!Qbt2Y_*Lqdb~xE`!AzM3T1{^Zf`!z{27CDD zBx)kax9X6;2|`dk2k ze!JtFo^^SXdF_AeaB`EjUVYUTNTn7aQPKs1E1NWH76H+-6N%}{Sl5=D)jmRujKs zXpp|dx`517YAt+5895b$2?zE;(V+puLy2UweH$01+>BOgm&O|N^L3xNX#NwZy86!u zT`g-uV@Pv-aTFbk@D>}=If=HTy6PKLCh625@M|K#oTPv{_&WI5BDEX85qAzRV@vuW zVVFTD2YgzjZCP!#z^tKih*W18U(!-ZSX&NK>@(z${!erXiNytD#d{}G6u}ml#Am7J zDfR_&OfHO8{k#sr9fM*a6zxBiDboDfnn)${GW9Ygtt1~)MiTLcAUh@S`Pwkw~>De^#>1&%(P1`8prujg=XZ?JI!_zeHb$iy*(e-O6 zW$QdruA2);-cZ_8n?g=!k!RK9Q&Za>Otn6ATf&cdm*ic^!E@oPWPZ;UIv@(K$piel z_SDqgqp2;A-KH=t6MVO7acS&$;|zA=Is=}PYlm-3cu{f5;BwuwGjGeCei8C)jjw#9(@foPiF#HOck-O8+Wq0aVIOzvY|uX`A$|Z3>J&o3^5OH zaVM*ncIpx`!c0$`cvH;#Z*li3PPQRKMcnF&I5I>mQi5l~#`g^mQWVQUtqh!aqqCu1 zB_nw)C7B|PW@#feIeL^gW^3nG!iEXPUL=Fusfhu0>f+vY3xZDZ&8{cKsg^nEVMN6u z1xuioL6>93+vq;ne8?08iB(zY@FtC}IyA>T4hJDDe+OBT=C8rYKKB4?LyE@(R+%=G zXuojyJ8j7_76-YP2Y|6RVnl9o?Y3c}3_~3Cp>i35C|$porxMeX3G@iX315E7ZN||H zS{R?!guS-fPnq`nW&b43T-yNsuh32tV!4_XalNZ6-geHTUts?+e1N`^0q^IWrlJ2kx&o z;aN=AcK%V*^o07yPVi@5;Ic@(vDm>y4fI7k+4d61B?5EYyBVrLXNIe&{s?(Yt8GC3 z`vi2h#Afi@+O52ZG=_fGfISq>;K0zQ-DitI|M~t!V5311S&c`hBF5fZ z={bj;Msw7WglM$KX^y*5N@v% z4qM5rhA&PZ#VS-x-rvCw<6scI$9keL$?ZhC_(?=(byy>ojaSZHK9^p$Ewyah^s*h= z(vgHIweJRMCvY!o6E;fnO4AY``i}HXGl4a;)!_>VzI+7IlYp32at4qaU!_{k)0uLM zbs<1zL&nZI7uy2#{A%Q&k}c0t!@&^GK`udEhO!}JU?0g(h>5a1c1IRuchiT;h1QG5 zyqB9cVe4yO-in<*25SMHakS%?X$I42sBS?GO=NFG#f2R(Md4Zo6M32TumJ_ro<9LpmXYpS>Wqv}6aK$|FF|!0l2)xrH*EuJ`Bqta$0Mm7kBmhx1Za03 z(=l^cB(Kw!R=GN?aX)Oj1aI%bGTFfM8w6 zu%=y>8c<;f%=CV3DzNr?pq2DbI2{74U$EY>CBR3x{`Z3&EaOKF$Jxs z!FaZhPI~SijQ7jBF$Ga!(BD(hSkE(UY6Q*f0L`SuM#c-u-P?a!?LlBBA98K6RfvTG z+Aau45F$gG#2`mx>eD-V!HCu)&QZrbilR-0mIATOW%AbULld3Mb6H8>s&SJ z@SIU$s7*@{^PxwDu_#1CwI_Q7m|H^=28Tq8@&ws;@q-PqbhjLUMGu<|g1fRlIfu_U z?es-DYfh?B(rU4awAflswlxDr=aQFYjJR2A;E9AVuN>q}U@#tlF@ZVEV1mTQ6JsA; z3>*&Z!EkgCF%1}KWLjthF~4K(KU=_+!LDo|f}t9DHqsxZ9d_Yo`ypae{u-FMPltC2c}ClQvC!8@`W{@E$R!?pE<#61 zYTNDF+OYRcR$7@n?c5ng-oDtNNJ%^(cHZ&+HWCF44JVofU|MpyQEXovOf=W`DbZ-G zzJ*e3AVNav1pQnk6_sE5 z%*D^73tLi!ErL)^Z9Xtvc<}t88x@VOA5T@Zys_rmY3wzw=s16L)?JWxSESq(W1pXK zuby?6rrlL3ch!u$dbXhQU3VpiRHodOGwv0fc6rLZ{JOj9ujXmGd|{twU!J1}wJ@H) zrxyk&$YatSgI=sQ=>=aAs-Y6i%YQ=zLx>nHWP|Zm+tT|hARFQ~)Q?9uxQxFM${`^1 zG3bX4i0_4pocge2B;#SA@I};ighYL30r8+kFDRU-q53C?f1OCk5U};$NXQeZinTNA zcD;3a>hULLDxUlpL`3~#eEsjqhmgwOBfC*;l8>d>4a;3FxR3bc229(6?bvuypJsC; zG-C23EB3{>jb7P8HU5`oHZY3F#7ybwixJ1sD_aOg4E!D^X;M>VzFpkJ%CDy zOXT?6DboMIbP8fL8XqbxYck%%$Pn0cm6kq23dF`Sq7j^9JIhp(Nn}d&c%0XQ6H~AyN)~GK zkRG9l;p1vK6-x3fXvnoX3}Pi67v?)`xk?h3OtENNH&*vJodu`$#8uiOD-4=8k?%fo zo+d{n=O8%=a$X|m3OTQmGfU1NlQT_@$3PjHaWX}TSRxX|!Mw6U8XaMx#L8k`5TByd zGUek%GA(dbMmpkCc?MDmjVxld4}7}@V)AfQ*`vOXSp1jb7eM~zTn>lhJ!!*_q~ae* zp&v>4{J-FRso{O8{(Y(9eW~(&srr4X>V0Vi|Hsee?@M90|0lV1oO0d!QtSIts$aYw3r=lPB~Z^+>te{xR3YtlVWulZF0NAX>>_pNGR=!k`;d_HtEU$#o29ZI=cuI^MS`fb&yR08Ubeo3jkEQM-p>@-uVE;D6| zDhxekeUZ;^ie@?Vi2BITseHXv3e_pq>MmvLaa5@Gp{K3-e6DPJ^&(@MpRamPs9vof zdM@8;l|sRUxo^QxP}#0}l^v=l2klNkyA#mvMaw=w--!1byzeh~m+{_I@cszio0aF3 zTD3&onO!xFQ+L@OI)E___S=+Q=yOQft?W^3O8vW{(y(scATYL9ZB+JQgqG|GrKsCs z!qs1-G+uUuS~q+ZPz(D=%6`mo7<+d_X|ne26uZWvwitdd2N;`XQ?%DdlxF3?O`D02 zF+mrumP|3_AbyA5k$zzRR(1~hIIv0!p||ldrW;CWn1XD^0@kVw*ENkpTK*$*;atjC(v?2tr+@t9u}*_ zsp|x&>q%>6H?vKlrdFGZybaCQF9FP@IuhEIo1W3Ecf^$cb{6FNg2 z4Bk46)jz8it6SA-lWuYxbz13GeORXtSU-n#bxqi!Hi7T)B^La~WbJbksljAI9#b_v zhCG@a9*Lx4eX)2fHGwxpZTgb1*&P%N_j3^~GOVUljb8NFKq8VF)l|Gl&qY#$$i=qA z1Tt59Bp#3S#i_}8T1}{0EK1eg$>&vkk)ZOqkrd{O#8I~Qj*jrY#l07v>j<}>>1cnZ ztNS#4+&eL%z7V1L?B^5cPhTbhYdjfIsIoJLAq-o%7r!1u0_cO2rAfVs;5i$6RsE)( z(q1+k8lN_r6?2?ANaWCOZ3~j?ER}1UViw8vu%Iw`vMYfFV;1?678w~)H93`(M>KUL zqN#E`GC6^lXyuqw zry1pk-OYo^VYPWE8A%Q&6Y6BFxjmWCN8>3}j;V>U=6I~Hd4z9LOVhza&3Y`Q?jMOn zUyTf?dUF^ps-9{#x23enXP(@-{>&=@MeO-aCD#R?dj+Z+P&-^XIC53!?|I!X0$wmpH7ouwZ6cLFPQcP7k4fDnrBY0ddfcbwBFg) zw3u4n*1A;Hx+JxJ9R<0aA)WpEqhMUnVGFZB&(G{W2{` zj_Gm)ax1%TUPsuF8zT9#qV@wPihL;sHjU^LiD;3G2h}oOQjzgSIg(IhC8_F(`V>Y( zT`VC_#MHPFY?Q(0>juMYkyLg#KG0Kq%viE12S-y8ZvYFa$1vVV4Bcr8@Jy_qUi!7< zu$+~}Elr2(b-8ae7RT11_h@!8I{2HUPh>0^Q}}qX;gO_@ zesvvKt~(lR;(d+cFsLQBzRsYi?ZXyp`;icJr6MV?RRi7%_=&gjgp4!24#^CAP{zFF zE1o@R&z=Pcr^b&x=YQtBE!|H3&FJ!h^GnkCuTzzX59znoiKLLK@@xVM3V?#B7k`E% ztCY|4y}6_hZ6GH?&_E0_I8Qi0#4s?Il>1a{pNaH*Yf|H=$u;D7sR`I2#BdZDWig%8 zN0tSNIyWN9@B_KLQ`q8M?Jx#_jmz{JBtV;kd28l@uw5T}&b;qjX*ii~IQe1ga>JP= z=?q7i;fRiEpoeIow8=5#|G_Amqi(tYZFv?Pa^QmvPac6cv)W_YHpPZWOmBFGxc9Zb za$1}c-q`MDQ??ETlk`NTTC+)lSW4o0v3EH5`C8UtGMG&K%GX-o~Ll19-Bk@%?Ep=n7iXg6HBJtN=Au=OVlNA@c_zUoit zG!sdjtl;%vx_B~*;Xn%QXzRmI|1J{9-IDF|FD;ksnK^UUU3_)mTJlPAesI}WzwB<9 zIk{RKSSj9_F5bCPygyyMf2MQQS-j+|&e-hkgR2#l*Sp{9UO2K`v3Is3<6;%t=GBE4 z79&3nE$ujvE}=4Uo^(2%k%ul7_riYd+U^qCQ8b z`T8l_DARqvp-miRnr%vY%XYPiduTZf^k6n_&r7i9os%cBLM$;l+y`4V*)PL%868#= zDP11bp=d@&LF{ z5HdNNs6Ob@$h?FNHK7|$Q-A1&2y!+Y$-W^nO~kmGFnpv9Vtu12mD`Jkm{2bT?b?(0 zR_mYvifOd44lu!8aierJ1#_~nMi|-1H04;L*@=T}nrP2suo3+9cagy0Ev=e&E$oAd zQrbGx^@*oqwWRcmif!+__w`%9R`g^av z{n~r4zy12+>&rDyepvnAJOB2~auqaD#TOo5#=$CU{?TrC7kyspUoEd#DX;suyl&NB zc0KS`V19qvU%z0ywrLsz3$8^MOIi|bJna;hbAG4XcIW47f zLRWEJX0J;_B^YnRW3kjJW|b_an0A7Vy%6?fr*C+`;x@fu3Kl_%93B3o5QH$Fp-QWi z&!?aY6zBVHi*-}vxbVkv>2>>*Qz=rMTiLWTMGgXg5V-JIJv85xGqoe%VnJ$tGv(}I zP!BmPAeB>R{Whoyd71)wwzxEGpGF|h#-<#KIK|$vDbkev9rhzhvA^%IW+JtsIH&F3 zwqN~IGruI{l#DlW7V<31g=9j|zUrJ2bCv?EyJ1*=WUWu+xiD)Z_6#ORt&z~~9*+TeS_t^`EGfV7- zT^$}tO=u*2Z`cf5(*f-pC>DCm58cPf#vdQiPE6L4$p{A&>X!3s({Zxs;`)iETpyC5 zI(a^S&%T;r_nE8G@wvAcf7d#%bp9~5Qh7LyKks2EscU0b#@?-7scuf=ucVp!bY1Cs zxB9)Bw`N>*G^C;H$`-~>1vc_!%0mD8X%&i>e@@x!=9q}oZ&FJU)xS~MKRqHAg0Oe!}>|f zhfUTnyk?$NX3oKg&OJg>(6Ab~=3lSZG?m5`RC7)@@W^ciT_+kL;YN=cs3_ThYmHR? zckt5dWa=JvGmF^Xx{+@%my?0Bu-i4FutxbDt7g`pjTgn~pjE4tvpOuHfIfysN(ETdu{a+lOvPZucyC+g2;8|H&@8i|#Wd|2N}A$A>ya z&)y82EM-40Ejjt5`16{|lgGrLAG4#pj>(DPh~n1BWeGUW&hC!cC@WAJK48(yMxCbzMR3g zU&@rcj%3nyaoi9O92$QpxKU0$6pE2)4}~IR2}97=Q7=(0r(QTwTs;kuzrNwglf%ty zs}&cu8E)vkgbw#yHFkv)$wYWWiy?%E0|^9GqOn*w*B<7zz|CtIz7RKC3i_-YL8JA2 zM!n0B%rM%t$FDqor|R)#&+#ScxEXp8AuHFdiI{<}X%7mdayMHO_mi{UFa;j$Rx+c(`8yfC}&RsPb5AYkfgnnhy&d+e@Zu-&ia; zs>`)wO(vN&)MqE(Z^B(4tVQ@7{)p+PSlpD?I2tOwI>K zUL#`MDfyC#cT9XKl1P!yl68I7A)24AAw>L)(BZdQ;jJ?nmB7w}TWv;Thx*v|-aqhV5+c6(q_SMdc6tdm5(7xdBnD!mKRln>zHY?us)LGq3&cvX(C(Cnejl}c%b2^;9OPfVnEv+4L@RK}W7zYgq z;k;-bXhwE}wN8x=4^QNdI3qZ50Erfya+nOkcL6+M9*82I#QmnM|8t(gOV~af3YcdQ zpa3#Ix$lGFaB4e2M-@3=Cp+e)LG0xva$-zMh>{1#JI2Q8d>M4!r$!?*8+zqN+&B!5 zNpv+n24CAe*5L#}#LG{`2r%;q<5EORP<#vC7xxF@e3|p)0fY2_=^n>&tm71uj=Fe*Ts_fPdd*L3T5{+Bb!Q6|fYkVEzn|X4~*s-)a=5+9c>i zcVeJr-IGJ7RmdGkJvs`=Q$dzIA@ZrMVI-;RvA+03Fv}%MR$@aUaZ=;-$YUQwqKNot z=1}XxAzvy0(kKgO9j&~3)~!*C_Bui@MWVW8ABPPgs6*>Gm7f?mT8+h{=Laa%3`Iaz9N5nL6P{};yDr3Hfa zM+6vm6&>bjxZ%#N6+s3w(8G_F5z^)3xcQ`EAkYwEh7-YFD)WIhL~*spXmCn!+|BfV zj{@8`2lH3Vbloj3n``-g=sqjA7tIPVL(8|$*Dckw-0EE}J2vaQ>j}&ay!-7to~G5Z z>g)U7+Be(&iPwL(ta`p~etJ<^E^C=};(TNFNz|_T0$0RL6$bi;t;~Js3*VO2; z-n6&(lggd*6U&vspB%m2{?jKQm5a{{Ys^;cTN9;{q70MVMGxQyk~E)KscJ}9HQaFq zSAG6#gI5M;MVL}EPn$B@lFL{ElknsG`XLI}+4`_7_%+*iJ*QeU4!X2yhw}VQJZycT z?MdZqCr~xXg$<82isncACYDs5*G&2^42mKUY8Sv2QQHM@MlPf&PX1*ZV*ZGRkQ7b! z@x$=n$S)L)l!s#jgNQJZID~nAXu_%eIekWi97X|z?2_!|cX964 zzOZ$6Z*ZtML5BA+T*h!@I>XldL_bmG! z$UUF^!>aM4n)Op?w<+k5g?Fb*ATHO-MOTumX<7beffsdE++v{&7s*2fOW4cQAEhmRh>6&8qO z*$VP;W`gmBc(R7`?Cf2XlL&z4R>BVp)Cg2wf5EaF=*HV{l79)A5ZC!gfCp!bb%!23 z@M!j~h^5uMy&XNh;dAGE+s{4Q0qz>W25DrQa%F_D1>a~M6(s)QO*+vq7|yz)L|TcM zn07~dA8jXyxah9Z4Eu*NW^c+!qP^;FN#)$wd}`sv<&ynNuKi!Fda8)bs#Z%Xzvm+| zt1`)K)*E1d<-|R>&@Af-pyP zqgnz;9*ad_rCNbi7}pjpv@}^aY;fsI=f^eLp8_g)|0JUdy?-x9k=5xh(0Yzg)PMr` z57-F+JJ(*n^7_2KTvE5>ssj^N5OxBelvEII0$CQUsAAXMb>g20bt1wIc98-G<>Qt6lfD?aQUf+bZl;; z@=)c?u5qZS-?YV>Y3I#C^T#pplxPJ!MZWiB=irPK`^|k+h|~3GHtgp44edxyp#FAr zPZ9>`jxKR()lx~#YSp$m&+74~{;KPPt`7&7kDpueo}2BMJF`-;J6*ARLHW0_AIDbq z98Ke|;<458Ewd&O1%)Qle(-K|pWWfG9#5up08J7>BZp4&Q}O{NCemvdT7k z*2Hq0?_vb(5AlY(#1-|k?u=w}H!N&fJhZs$mTj>i{YXoOq2{&(>)zb}@+m6&{6yP5 zQFNECZkIDW4<5X=>z4MDhIH_8Uh#SHp8Gh2DP0rM8@7wPG*g7qJ)7VzT{xLx$QH+O zSMm7|T#p!C2YxvM$#a4@xx0OC3|Lks70bP9#*>}k5%#@>O^U+4nd z%+l0mq5*xyALYc?n>YaIp7ftj3?j-%F$})#$8anxH#`)ABroU|fJr0*2d6+x8(!Q5 zfbypSsm?^R<=c_H=XmQq!pq+m^~Y??|2I zN-4@6e45KZLsD^5M|%e~=1HL~scUEGjTUVlO2Ugw4dS9Zzk+8t03VzHjns-s79{mG za%N0o@KA}&M6H+-x=W>9Lt@xQCOFL)eshShIu0|7{;@&V=%R{ATAawrslT0{(P|VN z(CR7KLbXx{0lbagYbbeyDoeuQNCIv+zoZ9xHN4q>nShY(PvTN1zlw`BG{F~$;BH3* zmwBu@!O;7IU%fUjj2@=>+i89gVK?o0di@0@bmGZRYP5MO zeH)447#+d9DgscN!lRekELD4ZdY{L?Q-tZCD|&dGlZPw$k%#I0lmE?q7jCX|vq~ew z!PMED!#MvDHNfKdV`Q9U4)EjHhpyx1&94(09lsKx>gTbyuq6b+U=5!#&!?>PQ|9}W zxj$t^pRpbMZ_8(_@-w#WGq#ndD4<5>uUme_JilV@Oc|40pGo`vPAvUQs)xtqD4y;8 z&dW2lPwZZ^faqC?|JuNnfoq8?i5XAEWfOMHsq^hikF+dpZ%J3Sg5`xBx3_`ig&hw{ z1;IC0alQJj>IV$P&&#&2l+~uoYG)j?&Sh4Mu!H1W5zEtJ`P|sY;*L+H9iLa%u2kymmDG}P2!cE}z9262EV$BDK`^`^FGklWqqz^yjnRaM7k1HvhciWP;RRv7Kf@?r ztXSiDW{W6v3GJ~y8BL4HvUmVhg2PF{4e(u$0m7fEK#?Ygov!#~S-nZq;N zGAGU+eIvY9%zK=*xiQa~#hzPri!Y^j9U+h%w-0|<{$cdPEgw8dkUQ>eWi<$2zcciY zqOHNUTD^6#?I-7PUakN1Uwz!zKGQZ^KKqSXefIRsbXuyoPkolyEhv$9}8JWT)&i# z|4(V#11Vsyp08i1UFcib^LFzChSy92Y;#(echO2u3kxq1v7Q!weg8!VP|CgIU(}a& M9h81?)Q$B20V`|&F#rGn diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/debugging.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/debugging.cpython-312.pyc deleted file mode 100644 index 271749654f7c48df90e746590c9ca6874815721e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18082 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 C&hnT5 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/deprecated.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/deprecated.cpython-312.pyc deleted file mode 100644 index b81bae72bd2756ae9e3e0d3a470814e17b8d9930..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4686 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/faulthandler.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/faulthandler.cpython-312.pyc deleted file mode 100644 index 54c9189531c2c96660b94c07de54ba2d20285752..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4474 zcmbssTWk~A_1>AWJ$7s-HVJu>I3XfyAP$cZHd27{NLFYeAP7inR&pKBBylqKxOXOj zK!O5ViKVIp{A^OGQsHZZpc4J#v-Gz=_Sz`XkVr_2)b5{)`+-oU_MEZDP9Stw>Xm&T z=bZaE?=ye%cw7Y9oeLck%uUFTxUibNG%5U!60%4nB2k5eiz5wFbIpZ07&(Pc2w{OD zj)%D|Y%}Lnv4`yd6BI{642verrZ^L>u*;m=m8yh0>^A2P#gp)cy_9f7_R6+Kxco`! z0pV&BR$uwSZ@#nRdh>unp>9$42(PPuN3le{qBUc|}uu(ul4 z4RF4F@_@y7Wt3{9ny0=eToEGqWjCB6NZarwu($Rbq5Q_CPoMF$?g>Z`o75m}->|3o z7w)Owu%~5~1{;6E!-j*@aDE{tWfs*{1`GR$d`&-n4reFT5LFZaGC3+~fjBG!x~%B|Jvt?8frQF{ zdLo((jGR6@c<$0jK$Bx?5-4>wFcwe7wF#qkEIO?qjiksdqQ?`mI<5b`cr_uwog)5Fagoa`pfMJeKR$J@JXx;FM z6KX8V(h1wFb!Gg-&hp*pbWeGU1JllgVTSrN=+(zy;A3$`4!R8YMy(i}su{dAoicpm zvL4ZNNoFj9lu6YP)RdewY#KU*(O_jE*X@WOQz(QdxXFo&=+w zwJ0LE!(Jp0@~jq~$MEHb*ScGZ#MIQRhMEfm0?da<%W#UCpJp=a1aK4lwO>QGKwb&; zZ|dq7FF&}PYw6Cm^knPyEex-9?|&Bh%g$`~(8AE2Gq=vSR#i^3W)<76cmZqP+QxO% zmD#MfY_>;;d?kwO5q~MTOeZT=5`+yq;jg8jGp*z`YPlgJG~|S)H;%T4ecul}8pt?$Rz>eU_g#0c zt~(=!R>a%rYM|OS1Ez zLy1m(22yc-9LH`$Ho6F$>t!3$MeCrgBG?$$Nmx7Br$t02%W_z7`?4`)!J+A94K02+-gN&)n;Nq%LdkGRuDy1@Amd>Rx zYeRxCToEfMMS_%t;4vC_94W>H(;& zyq&oH_b>c*V9g)M`a9C@j@9bAZ$0nU+)aNtvC?ud({eCf)%%tRwyuAPq-NW_n|E)n zRCi{oJG0fheh_!%oq&0-VQ9Y{+E4y``1l_F#cm4yrod1x42}ZfBGK`&W&@YoA~ZMDz- zKof>TXR}IF(+vUAd;;DzJiLi%v}<&;0@SVKOQ>-^V0;VPw%9c5rY-PW=IgRGV+@?f z%8E{%0s-~Raksi9D7h73o}c5lieqzhj(b|p;}m>PBHwX~loFsv0e{deKf^op5Lqh*JBO)-V(`KkSB!RM?yHrc7>tw)!H5#oLF&!1Xfh@%k*$zH zf%U@~pqXNc$GY)EJWNAn1fUh8Vtpwpvgst2WRVn8bv33c4DItI(*Fj!e~@G2uh z@>)zbYjR*4n01*Z6pd@LRN|Q(ho`d>$ixO#8%y?8-X5_IWrIL^1<6Z1Lq-2F&ydcs zq8<+JU>L(0)^rRNYuNQ!R0=~?Gc;=WATvKJ3~%ZCB2vNIS0a>%^=!85R=;59}4wPA?)buo@!9%6KAG zbShKVCi9PpsaDew--`nYRhm}hqwGBFK?!Pp=<__K^c8WMKi4{GStpG@63;qmUnhIl zN$Wc4fXvmhcj@zoLz(71+2-yvX;|$#^zhm<;nB@(*Wonj%-e1B$kOFJfnixF;E=De z(?N~0KxD8 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/fixtures.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/fixtures.cpython-312.pyc deleted file mode 100644 index d321eaecbf2a6bb8d97be95d2cf7a4f3d46cb5a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70639 zcmd443v?XEc_!NPeqv_u8oYtQ`wj5@CMAmCn*=F>l*Ezf@en;A0pdaR3`h|g$dE$E z!VdqGmKaYhi!>$px-_62Sggt%_3)>LR_vf>)9pM6h0Sh}2F7y|&uoK}Te-R7k zAzbV)W?>h?UcZ-x-3XWXOIX;0aH+qPh4T?E^Ov!30m9|}auzN`xWZq-!bJ#I`YTzu z7~v{^6$^V2uJ%{6a0$XS{u&l8McC)}v2Yo}wfsWu)`|I&rK3qT2;BR1Q z6~m1qP5vept{iS2Y4NwPa23L>{#F*Q9&Q_H_qVff&2Yy^r@xbheF%5?yI8mu;ckC7 z3)dmM%D;+*>k(e|MM)o z3gMmpoh-b1_=S;O{#`7*2H_rm4-2my-aWF%zlVj_4euS<=ikS|>k;1X-_ODu5I*2P zz``4c4~`u2A7bH62p{$zX5r1ly(35bM_70Z!bkl_S$OO4izCPU$8VUos(YJa&)GMj4g=$%fpQo^JVaPA)MBRXa^743o_n$)Us*peQs+t`0W>aLk&Y8XP3#t;*ro%@j$2?Ep8b4(51dcr150VxM?iJR!a$9zai7#g|dikoXGv4J{H+vht0h zAF=1qcdv@Ol>QwSU(MZG|(npX! z8XA8h{Q`S?45{Zst!k?OqWC)I>48ug+Ag8(Z-`+rg3k#f&Ocxl#}Ri){1x#6eka6> z;v3>6EcP$d_V>guqrPd{Re0@a?`y2R|1xc;4ZVYLt!2e#y2k;wXgVj@s~n77&JGEzl_=O6}AGeW7J<#N8KO0q-*`wUt?AYy{)>m zLktZB$A=^0V1ERUCNcE-cnAS&c>Mf%DHIMPY&;r_oW*b6aVgjzIvwmkcl;7ov@UJf zIeLlm?g|bM2Tu=El(9b;rh<$;yg=LD&}c{sM#dyWTG+#2KfSX*f@uB@5A!U>Lxb#n z*WvL9B_9r+KR-BnhTiBMI~IzJOQRG%ay~LRHX0nJa33{!w4XJoFT}p$`1pC=8l|Cm z$4?&J9oV&R_pXEcd-vic3njc1q(+%ejG`zCjE(^cA>cR@iVTE@2S-DrV|euJ8IwkW zkw{3~{YL-b=m5nzkB6j@K{Vi4=sXqTQlDRz2JvB(BQU^T3k0PzRH!R(^im`gj=U`4 zi+GM;I2@89fzi+f_G}uU0+BTj^#`O-a5yk9K1!YC)*?nik+Wl>5=E&feKa`2nr%a_ z!4c&Z`i9}L{vdS|vO5REfiqbnVeUP0yl?k$q*%vL`|wzh3U!8q10m##;A`m{@&ZSP z$IqO(ME5}|#=L86bYPH1!+bO-q4fy4`p<^?&jkj<=h^qsYbW>bKGYM~v;URjCywn# zgz<1tI)`5;UP5EhL42I@D847uKgK4=O=KJh4pI*o!{-Li(+kIU_Z<%$IdOc~k;7Dw zGk7{YHas2)o#!*saT+};g@)C~ef#(B3-s+ea&&hea+~`4$Jjiz_Cvj;;oSxr64 z47UeZaxWT$XiFdFI`1nRP3OMzq5d_9w;o1sP@krqdj{XY^uw$f9uKA6%F`YsQ6G0v z(Wl48N5$i<`m}jK8k-1>qP^phu>kev;OTHbtvU5lFh=1~9b&EvA%Q4Hzy1WM$dEzQ zZ$oUzh>(FomyE5ZwC89zG%k)Q_4b4YCh7vp!>%C407zaK3;EUTW}Zst^|LfgCrV74 z17YfuUX*7I1Zd_20%?07Fft~N4^!9~2)sTX99B}?fk1F{bPV$WpBN4VBx=n~;Suh_ z=SREGj*W!6hsJ_qBV(hXiNS8n4ypx_7eb>Kx`zi(cVkkV9UEQSwR%l=7%QXmJfKJL zOeowP;M1jhfcI*+>-;5YKZ<3yAq2vCxP4i8P`EK++?aCaUp_3osHUeaVLn`Gv&3LR zzd}bKgCJ1f(%+*7+^!1|EiEdj@G~j|wAf3+ORhJ{IeR6mrRi)9srNkdeaG>ZBmlM<2j6V(lwvmTY8XiztS zNmJA)?TgsdJW-?8F@|wn*d0as5MzC)Ir#6njToQ~q&b(z)6=98WmZ3}Oi6dO@|mUT zuA;n1L%HbwyS(`Ewmcru?4N}!xv<2EJyM`Qj2yXRWhm9D8>DObVN z-c&{1`#Wyzm~TtAZI#=$-aeJ6I2bpUeqzsGv^rxie>HEmPqzBv4V!N7{eJI9y>}Z9 zJSZr;-Zj$|vplp2jsh*$-K<=Rh677x!Rns+Qp#O;EqWyyw^pPa1yj9z1@)sTX%lPb zvgxO-n{DXjtm&tVXwz?qrs#@mT##xoY?c+#c#K%pxLlJ-opKo5>>6@RE!5DMy9O+c z9MdJ&^n6Nf9<_y;-=Dd*9A!MEwt`G8YUpRKEk_wosjWz@BlG*r+Ps;3YG^1&8JXH5 zgdDRgs#9Zi!X=?q&lhTI9?%}XDzQXqBVZdy+N$oFX~J2Qby$Id(ng?#BWcsFVc036EJa(C%EC00u`cV9l3nm%#g%D0ryReS_^!K=W^Po-`BW5dIteqhyUD^MdS zi_@;<+nV$;BKxVw)XRYYJwN(m+^=JG(ssP^5_L5Axi+S-?vgNw?FoOz-0$`Xr@+<1 zCS=O>ey$BorEu`(Hw57|z@tg?q$O%b2{|^p3%aoWfbfnkYRR1*H4`2aH4JGRVCL(h z<}-q}O-uPBUNfmQ6Xy6zR4MNPHkECezlq}^9#7v5UEw4 zqe7%k4G%S_q0H}4Qzop2)cTZ}Lv40W8PN8;(K^gzSJXMwqUO!~=9)o~HZ?u!QcIo8 zi{`!U!r13s5F~pvkN3?PUDU3O)~`l7wYT)59wXkRJu5vKb%Gv~?Uv z6_KiG!=M;$Ed|lg4~hs0l$Xfav1zbF-^u zM^)0%bl1`J!0LL?)-iP;Ro5`JKUGwD{m9IbPX)WFE@n;DwkB)W$hB*dwVUMHO^Mnq zp9)r6yX>rr?VWxlRaidP@}2Gvy5+*vvU7E+xjVM++L0?qX7|d@hE#P+vYIx&g}t|r zC90o~9a(H?pFfgl*%sTEbXLmF%GsA?XJg7)k#yF{&bqlx_naLmw|92%uDdx^>Pwck z%cbqf(r&r5d%^OD#ow>~s5())Z`zbtHsAHsE#;#v_##_=(pn~4%aYa_*;;eo zTDw$?)-P2GB{fNJx9shnI>K7hC0BPPs#kp~G@7=_*7BHTx@^fVb&n1D)ddd)eSX1`RVb~UMp5qAwp2rl?5usTW?gJAg5Npt!GUDMX1QVWqNjC! z<0FH<(G_>r0$X?1#vL6CCGl-9%Bx>YwQRqAMsC>?Z{8b2Z{Bq_{J5+>RnwU&DNB{s zEEcaxd28k@vbQBw;!BlPr;17+=iAC%u>(s*LhIVOD7{2O;BJuJt5U1C#yyR5XYP8s z9v;-;(>W1p7&|?bE>_luijWaQCL}GRrU}|GY+w%p+0=A~Du`%Q0YUtTMhQfTgw?B@ ze-##jkTXmi;JiGavNA?ky}mKY*9%sHZ*agj81ac?q3~#P#20!4tBKO2;9xi;+G!1h z-slf89$>gD?N!h|r7VI{#INXWHA+OoO0=U&@6xRUH<0mcJ!Fyb9zcd=4Uv8o86V&; z+>G0l@EGIcS+siY+$z! z4OZYmLB~)kq6ztxYl{XA&JY-z0J2BxT=flXs^AGs8nQatFr;h>nLI$wG~^`{t8UgR zLV`{EUn`ro5eS(fCu(D)VU6k-^{=~H269a+Fc3F6vtK6E7=^g*FY} z*nkf^Ti6HYh7a4akL^&{R0k(Qq7R$E_y`ylVc*5GgZ*cH;9K{fWeX;9HslLq*BTrc zL_W3|clEY6X5X2k9NUeT8n%(~an_w2^qN(rJ38J(%s$l1QOC zN_OpJ%ucXqcS{nO{#NOIN;^w8R)M}h%r{O4--CfHgx*LSXtTD`(g}d?5~j&atDG*r z&9Tip`%|?|jygk{#|wXpzc4yb_$%QvY;;(%`5GjbjZI7X5|cMoSaN;)%=VZSAiAtJ zrhjY|8r$dBe0R&uEy?z+a{Jaq`}Rb`j!y-b%_}>7*yLVKx%010UYW#ZBM)(@s)o69@yazbhE%@yy~g)DZ*=Imi6*@1DGQGTFIZ?%W>t z?oe}d+~|<=o3e7my&KiE_8aYTeq*Yl=KW1KHceZzGTpYuy*p+7+ zg$s2QE;1m@#yL04|025cI#F{v{OL2x9$@1Pz!0bLK;=alpE^SO1iLajf(mGe+KcLW zzNmorcM}a4(Wtkan6w7KfH`Z-OEE*AS)vwDQca-q6sjj`LCF9HlUCGbC9pL_Y~&SJ z)U37&%dpfaT-}SmL8I{O)?hcw)NG4rbY3K1EgsaDE~<}cU@RB#`cMJqY76=V=_S11 z>X5eLN1`5-C`;N%B01pP(%6VL#igHTDFg@7#ZqWY0?RVMaPdGe!qzlj&(9-UtDTK& zIu9^`3IGxhDM8xJv!A|1C^zCcmZ}3kl&wCIt=F`XRr#A#o1MQvtqIe1$`&QN@s*jk ztR2$tAq&*dgz&#XU`j~s-aBGpA~sWA0g#Yz0PB_Nid9b;f!Y`HH<)yW@7`&WS|r!HUd~C!b2O%T5_QF$6lepd%bF=YIb~1 zOysvu9awa@7p+yZL-U=tYyPb9FFJqJnXtYB#Ef=zy|SxIzk`pFzKh#LK9e84%4CII z`vI^{E#sZgW=~`ID2f}fCEWRidAXKW46PM5FSWIz=D-#!WOxtAk8I$eV9l`Ymu|0W^(wn7$xuc-=sZ_|yro z=_dUF(i>@j4>8+Z@{kJb!jK zq4{fNXLHiIMs}`QSa;vK3FBki{Lp~+8UEC-EDw||2p0VD&IIQ46*pK>hD?X%#G8b$ zD?%T@u1v>>x^pN&(np29Ec8^xg?_=ECAH8*M3Y8#l$MZY1#q`AsV1ks>Y96I@l)msOf?bHsaR`@?UqgBBC*naZRj<8u2qSmOL7y+XvqmEomCG}0lOtXRAVUF79OM8TCdHwn`LcjhL*ki=F zhze-E?y5DKH>1DmFoGE}nHMQmTLdNtW&>TAvOanvQo+rFG{3eb0=JK}bu5`g~Iiw0>^eMl$<1 z&PzKcT9!ds720=gBN_j2ct@9(6KbGBm2gb>vL_5^BqhZ2`Vo3umOSV$hP?J}VL(q6WciOR;N?NsR^C4R+* zHVO$l+sXoGq_OeyX%|#Cpr>(0-QWlTWehLc)6%*?S~r+>F~pcMu|`OLggm*JEYGun zV4uZqP#6}%leiIv=@hJan$+Oi^>d+LZ<~Mp*Sdfl#+-|FjlbSFwP&%QWY+YJj;VvG zR%|t?s*d>+a@E?nu{>4LGG8oLbTe6BaSH4KcdD!^=K91{mMW}H7B#I+ zHXHwq&WL;3BGD`YR-_8?kMZYa3zn8R+fIm{!)783;dkYw;$u+fVC2S4o%9#TlO^?+ zuHl*8PSI?jwgAs@6kOYWWjltGZDUX;FolQ5B4KGSlKb(eUFrt+=q#eLH9tazkWtkw z4Vgr)1F}4hVc8*bh~WarVZ+M%%mzQ`WV z4&4terY^?1B<5on>Oo-n4sx}Ra5|4gf)E=EL*GTBEjR69TuOyW0={CncUjlcN3pJ* zLYHJSiPT+YQkSiUk!$Z(Au#baq%jC~wS63AE0y0#S6KmS6OJe z-+_3*P$670v>Jndg<&`b#j26>pu~O4#?wa>g)e)+eZf(Y<;mt#ciHU>3&d?#aMU+8 zI(*3|g~ajx6~%R^oQ6umPYhPvj#=3{d6v3o^*pB7`QdR!{hHqTvL=t-{IBd^<&Tz5!bcj%t)aLkyrmP1f* zW3_CpVsQPYUOJ9OQ#T*NuXLDhy>ufEB(SH5BpsngVsuKt1O=&xZvUBXgz>RbI8yN+ z=#g$g>Wh5{e3`gb?xN{kvxU?9u8bv&RoJ8pOJ@zUeY4h??u4-x{Hs~R%;to#GUWxO zJ7&AhB7;ksDpKyUNpR?6OGt` zuy;VK*mBwIH-*e%hiJ>vFSa1Y6tadGp)jBq?OADdq&Y5YWRKq=Izu*;mWR?@*oBhG0J$_qkLgt^i zN^C$}D=V!r)Fw9Jk4DofHY2{BO3_BH1u-3BE85>CTGjUBsdMNxK1s6gi2XwLGY>00 zYZTj1)+&^4!zi>Py!w*4b+r^nu8F_g33$aYGtRG8mgR2+7{Y;xV|#ut+R4Sv`qr!;Y%F;?zyQ;+ce#0>96q396)Fi zAgpbM88Ph0iKlGr2(&S!;{q-MOdz9_3aV9rJ(_Z5F(%bTtR~?XIW=5qkeoaB<3pbQP8isFk^CY4KCg_6<^i1BFr8FA@Q zMuGOeEE&Z?%9y9|{s|E!O?!^jl5RfVQ*6p3*Cbg=FvnOU%^B z#xAW^OGT~N?w~KtwM{2V_VD@?8ly{1m?k(rhH|0wYxPcFx@WCTRW!zo_pGH4+Pc{9 zqPODu=*(!$c-4{Gyp^KLQ_ZWB%{%1g9Wh7B*PirklYQHgzMZmfXTrCOa#W?-I`D!! z)x9~{y;JVqne2X1?tYPyDnEtrJCB3==TPx7oLrrGkGhcZG;${wCf)~y=!yM(q$uvg zhK7aJL5LaQX?5xXt?TgB^^=w!1-SM&g%tHz3Mx9$bzRsq*|3?I;sfZZ2WU?=J#`k( z6GbaJmC^dYfp2(38z__Kc#5vQdF9Qd+b6qyajTDg_OdUgRlwHSA0x1Ao#j+i%OzRO zMN6n_l(;&%D2gm4F(H@yRDC}euP>uGspcX`01>%vqO+H1GwO8`^93Q(z7SFYWtiin z08t9`>w={17QR~g8@l~1-3akZn*j-dqjIG1zfz1{92^(`dP^2FdcF*xL{EDAVS+a* zcIV7mfZ>UX6{C}#_**pXiOgkk@&fO)nDjQu-ln8?t?XT!^zM|sI}`cD-Un5mcO~ze z{e(=bY3>DG^T7^HzB}gGR^H37ic04US^Wi zUS&PH;{>pEY4{Rt6^eQ!^aOmw%lEZ#JQn?pt$=HNt9{F*rLA2c>hs7thD}X^QfyvJ zKS6ET)43nd6NM`}jOzFvbrkL5%4|-$Yl*Sb@SXM#+7s@sxV4L~WWu!>)vawJh!BkU zW1aAA6!X;OOgUCuQJt8PTYPJ^mX)CT=Q-6x4-|? z5+eX_u4pAaMs>vZKw6H?Z76pS=+sh0{RB2LlB>M!jv5_87AdZ6#^-u40L}>Mjj)Th zX7zn&l^S!`th7oWW!xFka^bpne@&AW1OshHjD^bA=xKTk(v5bcG-)X-tBQ6t>Az9R zWlAYfrqZFYv2)|+xmexA7Oo;l&w4Fw17BnwC07JnxTa zT!`+};7N__u1UI^WOq~C+VtcHYWw3`c&Y!0Rp~PI{gT)7n#%bn_vqm)-SoYyC5Z=pM>{ z`VfKj`M+*}NX)w8dbZ`xvydD@k|bwt!lRE_GEQt^<{iEk;(~z>NE&~w;35*sjfS4l zglb=dg%(!#YVZJwug=g;iH%S(l!cxgbjg7M>IFiyVx))hky$Flqx49luc1LG4QN3& z8pJf4CR7NlEx+M#lI8%B%2{(DUbRMctidFR*KfLA^!@UW%5OXG9EsN+PZXSpJ5QwY zi<9}aa(-Y;K-Ub;d9pMJm#J!kTdz$DpbuaVsWRMt{Yl8sRsA%q z;%)mC;VM!UGzx-F(2TM%zYk($t-*Q!ea`J3BvHbdw^3ZR27|^=xF$zfhDY*$~^e z2%h35_Efmxu5$yVT(*s$GpWxz#ihb*{SLz)>2?^F;j0>){ZlqdxyMK(`NjWF7jZ7c zioxuyN0}Lyk5haq%>F6Yu7Qo41V>h&OLz$rrAkRpKyJ2(|H(Cc9v#fq@DmUmuC1Qj zH+f}$LsNlliI=V2ZL$NH1J>@=+dbbu@X>+W+wOcRUi)&Q;FY-Z6=;8}pu1Iex87?0 zZr9DOWZQFc+j9x`^GSD)?CyzMd!Agd+Ej@C@0$u5`v+Aj7aP2G^5gK+0$S)!qnp@Z zNz|8Vi$dE^cu52FDNy&x?e*8tf+q%tBA+0UsMv=zG=$tQ8=AecV=o(;&9@uA-}X`4 z?aDiWc1!Cm)Q6TlF`^VX z;ax#WC2^5SthZ-uKsV$sU-4-U~P};ghdzmKqPDo9-+@&Ax zXo!A2O`k=}gKCE$g#n5#`p&N2oria~bai#Le({SL*)--g2Z44BSb+D33IyxXQ_Ci` z0}86cmw2X$@)aYVmFA-HR^SQozpvS@*pk*ts1nbZv+Bz$HWB++(a+FpK^Ar=8$ zFp&*-4c9wlkn#F4vP42xD2>cw&15W-a`bWd%#$6gilzF;!x1QEz{nBuFfe|@a6+=Y zBZ*H$79uLaA~mnz*g~6|E0{7jHkU4?#RAeMOu)>b+dtMzueQ%Li4>Zt&!oQco@}BvYg;KsnD; z=K;-`1M`U*XuPkkX4bIqOYlGO1odaOlaZSh79qWjSmtJFfQxpRs6qu#?<0|C%b^89 z!l>b4<+bpWfGRt+mOB1rl%@bG;swNvoZR>VsWj}7*Y8P`?2S27CG|v#?A5_)5GIl0 z`y)3-?z-Dkt)0o%?Q$!aWr@~3)5hz0GkLQx>}z@ms$?&h`!AdHMpQ`}kAQ}fuV!B4O z4>NyC8hpxHFYpO993;V$nknqNFc{QwYCAG%|3Dl&HUgU`Qq?s$l zf9Fmv3A*lsI^6RP>K+>q4}8#5&a=+zWOrNK+QvZs=PJLe2hKz|0&r>>RMEIl@C^;9 z@-!|~l(`6Dd?&P*U*J2z!7zJ+Hj@=s249@ik8T9NN(1P44;@3>$+;HvT?34<^k*R0 zf*q$J%X-5Qv8zSqWKt^aATAc?WWA&DvQ7%4MwPFHt;VgEllfhyt??9|xGDq!^n>{4 zFYq#-5>|-`U#%b`nFL3I`)|IPbFXK#NpY75-hiUEsm`0gvdxGI2mO?r=F$pW8NRIr zDB$r$q0XJ$Q}KD4LUSmBh)SD{EF+VJjdCHTid@(gcXojtR`RJ}v3ZyD<~(nzsy11* zPOe(F@N%MR`;7gw#lpr<1tSu`9vi${*qmx?o!>dXcEK2LSU-Juv7&wc@E@-K{*I4! zBq|QvD>{(!6ffD3{qu(gA-`hDgmOQJu{zNs^|G~o?!Y~3cdBWXs&O~F5s{e4acfx^ zsDbc~D_@wg?QAx@o8PIwr9$oHkp8vRJJXGYFxrPdULR5yC&8_fqhe`Qt#whRx zE;jnlO{j?OvN@HVqmQN&he)XcZ_JWvX^WW`U8S=n-)_6->P$Hct{uK|c(yrN-YJ)N z-g9=Pyj4kWr|j*F?R{(#++~#UzN-^b5}W&)>xv6XGg;aI+W4T+R{SxX<}pSVI89FX zM8ITnvIKx+>T;o@lSaTKLoNi83|HSi0a3Immk=A8;(K$aM44k(*p20O7sOL7S!Sdj zd>6aa*|Z)yQh2*SjnDilWy4&6{;6|TCrs-`dozx9Ce5NA)@r(3?G|<8x=Cx6r51F@ zMWcq4+hBWjAZnBLiKd(uTZWwaU525`OdHiugeVPmLA0-|lOdlHmGyJWtkrIh)T;?m zyJ);+$$TN&^`9b*YHChLK1!m<%zq~xS-G)uti0e} zAvnI`g5OGl1h^PZp&Q!8pR(^!&n>6gdst7x(C+M19tH!^lbK`8D+56pb^-ICqdIhx zrjx?7{;EaA5$c82Q2V(E8^M#P9hQq@+-C!@7E)7E-*rLCmNgsHmQ1=&3RnN{Oj$oo zyVTsRdBJupq+N_B;|uyS`+$!;U6K_AsoxC`)G-}c&aMIa&AE=i=9v>=J8^jEQVbwC zLapEq!2DFU?+R*!j5&zm-A^=6NZl7Q`H3+E2NAHc2$J;oX`}$t`AJ*VcqkBCK>3hoZRsOSnu$rGR+LQ}U#s>A z5gnsrK1CxL6e>1(c&J7Og^1)-(wmcZyRu1Vz1;lfWV80d;OG|n@@yn}r?@R|P9B&3 zA2dQr;MQ8tNtC~#h=X+dI^BMqZj*HTGTms^ORF&*xucLadSrZ+FHi^vnkY(6U!=!F zbR#H7PQu6=Nrd_E>OYru5`{y~p_vlzX3Am(>x6Y(+RS}%OaFzU9q{)Ii=GRi0Hyl*t+3eyW)|NZO*Tg>(`8wSps0&W|WJ-5mDeT9+vM`L`Hgb<+Sox@lNOY}*OJJue+V*kz2@a> zey?1*Zrbz{*nX~ODacq{LGM?@4yMZLlVxpkS=&NGylg}4z+z*^{3{DlID=?B7Z%q63~c-2qLLSflVQ>v`?{i+*PsfzmdpS$tgVpZ*2%e!CT)XS0uIUWhd!h$86 zkYDt;K*%qi?wf18?`c6fi={Q>)a6|_$l=nqY13k5eX??uT)AqYc;WT$l_n~;OxqT# z+vYbX+qcVb6jQxp8amspN#82jw`w|XNpH&ExY*R1Dy>)CmRbM6{XKVb)joOEzC`JM z=mIr+r;jW-4aKX`)HR#F=S2^^@4n$qmDVLo+fe6XDM%r*(_MJw4+7r{B-bC7*B?%l z_NGeV60Px(!@S1J8(x}e_>YTgQcllw<7_cJ&iL<;A2P2!W`}1pTOs#|HfNbH`fkO| ziiOZU>$WAm(YE7()0=cw%g*Y#iMX@+o^#Curzh!bgg>^qp@p{l&h4K)zN8a8)#SVZ zBVO^2r}hw{D-A=LSFu|(moFp z%JG}deeJ>zx;^{08~&}MYrjqS*j%u`Uii4(v2Tmvv6g<}UXTM9; z72@v^L6Kjg3WOo7s+HFj9Yl;uJhbM)US@z3?(qRkAnJptgTatKz)!HpPw16v+!0 zv?(m7Ok?N+A;94P;{XAS`k$g9H>uiEy!!Wm7my|vl451j+8|pS?lm5}Z|&o# z)q$BbW?X`ZWcs2pl`=1au?;UqxWnPcQ_|tL^8y;sc9>7O7@S*xx5ST&X;>zfV}Xa%j*u(V?a(-KJn-9l(4pj19vS z);9po;uwkzZ?W%@a8MXn?P=rC*x+b7Kfu#CMnPwFu>Ds0@Ay`TJs#kP@9H>$OOX7y z!7V!UB3Eb%OZ$-Wgj_j$3;ixlg$pPSGr=i13#SL~Isk_XQjW6OBX=F`58$_F^UUVi z)fV!MISESz7z2; z=vv^vVD17r7U;%aQ&#=oZ6+vES_Eguld>s7*x5Y7;b)jfVDXUT3E`EOIzJ$F`YNPO zPZ4>5tw^X1yE23;bCv=}d0Fal#*D6{IxnP7)J*ew#g&UC2_IM*t1)WMWtIgZ2YpS~ zq-7M^<&%~y&2){VhRYM(5J7|$7sNL3f()&9#AEJzS0q!cb-*}*HKDE-kTPF0VjVIT z=7gs)yrmHcE}@UU#&Ba;(xFdVoziCfaQuo0PsWmxXk}$7iEN?AU!$9kZa+^qLIGQC zY$B#jgy@7Bh)i3Qd7IWl`JJ4YFl()}?tI!v_q*Yk%K85Tny4hg zgV4=W0F7}{J6|Q2uS%4!`BbpkUe?79q`W>dGmhfRIY zx$EJdB3Zvyu3ww1-zwK{owh6%!2#!YoF6#nPbZ32&*&Z$d8c)Yg^1){JDmB~4qZ7E zFKeHFeWB_0>hHDPK9k(hEAQxyA3YxLIw6;xxbJ*vsgSA%;^irhIoXV6S`f>4?KBD5 zwEjB2c9~66E z!k4VLw27@B^=27jZ%Eo0y^1)C=&(V(zcV~C9T3tAMvgBQ7P zQ}1->y}o;n+Qp)>*~V`i0^;rPd~^5p-kDz6QTJfyZtl9}N>3`U;F}?GJ|pMV14S=t zoI9RuTrW4SUx*|(?v*$0O%(3C((_}u&2325t&!{2EbLAcZh;dU@`O9P``ahJ^Xdn$ z0-wg_z?E-fJ)gJ>p&oCu$BU07i(it9U&2u@)9ZLD5N5CaF{Lu)`IzHLs83UZEe{_8 zbY=yH9HEsL!8blwCEJ$cIc!uKr5$jfKpnYKv5j<-C7kgT2t1)#tS0;y>PsTWNUGlg zy{i2;_si}Laq9-w+?(8GfJCe>;AF?ClIQ96V~Q|x1d;p-v83Lc=ByaP8yWe^(^}VX z3i>d;-isSfJP3$m{W!PBczSGXSo)OWtmh@*AX0?8_T!!ih;rsC4D2JB@QHYrjDY5v zo+3RKQiY`M$wB$AQ5=1mL<@pxDRLuPg2rhxmklxulc{M*<&=v!n^F^%K^U||OB3fr z;nqR7cDn7SI1*OzU4#f$iI7mf2nhF(2)IiXly3yLv~8DqoB>xKJ4?wVZ{T3_7=_~M zEr!JKuV7d%3lH@slXb}@Y=%$ILR0BN(GvaKX?R3GOKpPL^{HNOs(oZYXo*5VYbj(j zLF-~}?TtYQxlCRq86n_0X4gYx?ABiCUb5z!>gMa01pLI;?0Q7MOHE3F&9i3mj@PVZ zZ)P<-)SFEWN*qE<9#*W`RISBTD{&SR+(fg&5Lzl=`HZIBIwg{VtWlsoO^wqc+$NeD zl{AF#>GU}UQ`KzOeBpfme5p*^9-fsv2!T@M-O!@M=}j$5R-p_0ek_o>I$6T^d$SRcAEZHbz7woP_4hl6mO~rHT<_#Zg zek35cR9R#yN)^MPY_20-(IppmFBuSnM#jdkOC**)n3#a1WfpQt)UBl?l%Xp2ziGzhP0S*TXE<63MnDB7P5b(A$KI|tE`qk7$mN|7$H#+rzudY3uv&cl^Y^Acz>n=W)G10Q1 z-d|B1!O7l!LMZ9Nf@WZzfqG&pF2jVf+_}>3o$;ao>6wwezwCw_R1Uk~QIbF#yKo4F zg*-xKyeW{WXO=ew$P@z^yBK(^4ruQJ`6fWO;zABhWequsRwUyQIW&w4IdY-rLcpQE zha5zGueeZ#Q;k9n0>UdUAqE`~|xG zH@cBRVylG{m26yd4JnOgn0igY-Z}36DIz8cGm;C8i5JKV^6 zFqL0L{*dV0gLu_ya4{7$ExzHv$F*_yp}6%B-#6wfBl2PH| z3ejX{M(XW+7S-ZG^5K@P_{$K8iIPkgbY*LITj_IX){~+NQy3|gt))q8qik)Q8@z8_ z#X%`GR=o&nu*Ux>0>7ktnvOv3ae-A9{KDt*K9?c-b5Rv2&8{{e^P7w0j|v&XgbdLg z(deTqfI(lYCFNOY9AP=o#r5aWaiE<^BEgY4>P|=#NaO_c59ifEJVbu{cxS&%sV0aZ zpb$*hm8#F`r}qi9gq8G_SbLIMQ=OW9F{ zLq&)t*dXJ-V?&DA%=NOfe$i9Lg$OEPkgVG**KNMD?w)5K_|iTF2gAIjuL8rCbFLo7!X3I5`k8XV(C4#gP$%c&`b9}?`9Mk#^KJL&^?aNwWZ z9~vHp!J$q9pPR3%=Q(5|X%XA}{+b}s9DUwp;r}uoUn&wRe4plfO&cHN*DjgxOGHWW zl7&Lhq$^yqQOGWM%a$Azatg(*OL-LXz$|`=-URvvWTKElt8}Kry4m_iKn4!$mdpmz z>Sfp#o(bE+&ywA4+RiW-`XvMgzrbI9V#4o3c+}p`moT-vAFb6cb?15XJffDP6WH`^ zB3w&`nA1qO{W8OSllla$5x9)9TsHYFKrhIFq!q?94yJhy+g**;SztXsV*840@(?vQD`VfCX))RGC&RaG_aP*M@NOejl)JnC~=lE zy?^jxzYhMUDT@hYQcF=!dxKgH5tQu8g-T^9GimQGE5kZz(?g~J8GxDb`z@kr0;Peg zuN{91WesxB!miATZ)n|4<&YHnB;0Ec5na0C`cQeEbg(+iQ3sW+)(^!K$Fm$)=WrvJb`fmgJP8iyxre%JkE~xQULa}OVCQc3IenTyF(m3i7?YZ+{jyb+%pt&wO zbCoRS4Q*Fz$^2%iNNJAM)!NkG2_W;VTo(^TFgyA6CG(e{QpG&f2^3m&Y26#ysO~E$WTIQ)+hqe;FjygIBeeHP5osF%Uc$(xgt^t<+3>-JDTPnEEOUU_>3hz4Y;BJUzh9*H2a5% z_1FO6F)B>%xiZdB6=7YL4U13F!ihlbB_vM3;Fa6IG*391S&__cVWQNYDO=V4LH#)I zSl{8B*kEVoCe7Sf!q?fUloIy6N|qp`Msli|)9E-CoixFqAvMy~TFa#`Y#aLmnopnkrvwrw=s`gsJ1W z*eOV9e@0dPduoM|UcgtASzZ7(g^*8;q;1;hOD4+B)SQe|6p69uc$P5DdEb*4!!dCH zxHfSos-8Kon`jny05Jk{xvB<=IqK=p@FsG-a;7qw-zw*~Ci8LTP-ooJ1@V?O@0#<9 z^P7EgS?m0|WcxO`eOsb<`#tLpoHu>#?3J@IL(1WbJqP3!tgHIjHPZ*c?k|Psi#%I3 zyj@ha%$Fvr)?De0?U~-Qq<7?1FA@R0TCQ0Ad!2Wzi8cG7&_83HHch|&5NGF=&Nj}O zXWy8+IDg@`?&ie&aJ+QuJvN}9&FFN7V>^? zoIbZ$UOg)%YgWrOs~6gDzmcffmnh#qZAllF<5a)vhi4AYHQX<1Ub5f~Lhg&`6z$nd zvb!baJ)HC&m%Ybv=-%~1Glw9fC@GjRAX8Z#T)B08&@op%|7P5~b=r_}y5ogi$-?z= zA?zyuVDNi`e`3CKDe?S^i4DgRg?+NKkB&t_oxAy4?xDeKDuJ@toMC2iiG{nj^WUCBANT#>Fbgw2 zEb=|}w3&`6ev7HteiWu%DyI497^1QX8Rjt`+B}4^ft-OqeAPETku%_w!ZSWgv%tr# zlRO!NKWc|pVtO{hTd~n^zhs3hn>s_c2A~FYKYZt{MqWgx(R)hvo5u*Xj{&7F-rv{7bymWI0q+N z?PH{ts_oAFie@61Rw9>Bud?<^uVHj1EXr=m4C;;pNi;wkoFi@~rliuE$JVDbL#yHE z=|(FA9I*4lgAu6;rDHL}Ih^8$fK-nOeQ^xns2Vj+KNgnAk8fsOsajL-Qdwq>N=QM< zLiMcBn@ZawV{j2NLM}!$&x$M1lCDga)3mT2qhV9R1DxtIJTpuRmyNMKDW~h&-Ya{j z_s~}KjU)G+4N$GLHNp{M(&LjozNDu~_B72!5}uBj=@W-X$-hXB7jYVIcf4Q~d^4JE z2S2iY-}R9zv1wm?R7+WC;xyq_%gR`e+ZDh(AlPy(!V}*dq*60e5I8rAiwnQ1Ov{wHQ+7MGj&|ET(MlWrL1-eOk3Vt zLq2Nej(_LW2d5GhYss{Ix4eG$$2xia{&@KT*>m8&^&n$&fUmS-3nDs!?>-aM$wl7AyU2RMSq5U=Wv<0RpNRZAvBVTS^f&O#w8 z6q0A_XR4NL^u(EW6mqKZdGzEWww;?ol^)X}-Ru{Z1o~YtK4!n10moWEjIG=-?=G6O zOlqYu2N?N_^IW5PtYSDo<;q$FC!o5hZ45bCIGQvHg)3L))HASCG)4~8Dh;&0GHe{k z#z01{ywsJiu2p(RG}1lF?xG2HT1uOk;;g0jbKMrc3JqKAcD7U%okR<#B_zC@Ho>Y@ z1j*3H$SAIpNJ6|Nam_rAY5+Sy7BTIYO z%FZt0xAEdQO@=R`9=PPrubh1~k>C3EfhqDuTu?M!H2vcAg*n~K#Pl%4%2WFm^NOyW zx^gO+S1ae$&b24fHd;!(?0Mf>E}uTX;jZJ@;|( ze=r{5Q{cBy<>%!AWjo!24|!DyGsA@CM+It3J+eg2Ju|>!)%Kx`2A8OdX!}}5dI@G4 ztf2|r;RsR2W$h%e5!g!`20_SwTlb4#@qv}*Kt^_Dlp8VIXrZwy7gUdEFdf!g2G#Nk z_K~`r7HJw24!el4Pk73gP%p6SpKLW4DU5NUqJsih6y;#pxz!TTj;HL5-_kr4iNZU2 zja6an?V9kykr($IaA`0E9|A#cd&IyCHWb2o_$kt~lq9NK+Jzfzd7w3$&g+Yeo!<|L z&nBm|7bD3L{#Qvp_kYNX2*v&|CC8D=P+HlMpls*Y(Jo%)6n;mqEp zOlasJk%w;PDd~x+pHCKEYO(ArcMLb`-7e24cMs)f87J ziyGyk#(PcMZ@>BR{zTDBF#vyPf-@&PC+}HF$;DY7H?_$Rl+b_uGnzf zk?{85Y?rbIxvXpM0&X!EbcT_Y&aw4?4%Ja*1(kD_q;IY4TN|%g7hiWEUUe{0a43F^ zJigIZ__FTvFiqjxju(oA9~RZW02=`fR3hGpKUz8p&43Ay9^qHEgfcTJu|PBhLjX2C z%=oAbc449!*ul)1sbiS4l(oAu5xWM{z}Mgl6WDAvkf20@ECoJ$3^i^X@|tyOvEo(JQ7-(7 zt;z5kx+Vk8@*{nEoIg6uT>4Jb?@~gq5^>hy+r=C$pX%@hnBsje49HGtqMQITx3f~S zh&b)1`Ji4JDZ;m98v~IfaLtHjmmjd60krD&7p~3#QPGe~U`&3aGJtX=($9dI+8zRC zwE)0c8)5N4Dh4Yq=7~y~=js+6HNKGb^*uQRTjFGS}4 z09BZUZ%)Fo3GqOg9U;Z2bAs5EUH08?ka-?tdQk6CO&S&N)i8j>X_dhUP0*IM4)sOW z-5rYW>(+^*S_!C%JH#1>o0Ooh86(&Htjf8Q8q9AlVGN0|O@y|rf>oH)w%u>^hnU+e z>8tdGj2rk>^b|)MK|_(L!$*{)^?>w05S!M8R^sbL0qPTOmZD8F>5uX5dl-uF6yCxt zh6pwvK(W9#|Jt3Vd-?lg=Eok$yQc@<>%Zry!}MO#>+%Z!62@m6pk~)`+ngwT4o4XO zoy7>%RXaTSP96U2afRS4{uJ77`HQX+%6~-nmq$+g=t9aLAKG>{8Gc}@+*xb*L9GelezZ=zN|eweVrgb`N&MLEA@D6D z1OIF>FZd}ycA~$dSr+*hv?4Y zMHhbuWw_4h)L0(J@9a%C1j_|D?aAbKhdg3AX`-pjCvYbR1@eLNRRFs}Vt^&0xSicAX4XqVP;f_d3cAcT8V)Y5E26L}; z36B%DJ*sTxb6qp}92Z03ekpBY{>1=TiQk{L4Tb~Ul)lx=RN>f+Nju3HSS44ufee#b zY(v4^!;e+n&KR8GD%cwMBIDq(kpSF$Nt`l1NbgP3jV7AZM7Jc}*yJPjB2G@qvR&r3 zHGCegn8IxKvZAz!o6D}|Q5l5S0^mk?(!Foxhqe;Asa+JN>GaPy zJxL;tj`VkQ`w4E@l1v(b36CX+72x2p*1qhB^?Z&~fF#UN)hgx#_ip-_fM-VBOV!#=Xg>Zq zO-1TI5Jb4RE*@zxPUL4T7j9N97?JlAh2cQE$J=!K1dsr z7433Gd$OV%$80AmR+HGV^qYIg13(EfCJO2v7C>t+}G;j{(l?}4tZB#~aS2y|}~ zq@qq(v3JYP?%V4=E{Qw4?>S!t5UFd5_1tq-r)p|rJ@=iJpFOS;O34*kz7GYIR!qN{ zs;-$e{NrbEcb4z_2gpnQ8HIixChd*O&KJDGOzqBX!tYY(`$pV;u+8>Dq2Y%n;|ngs z4{avI{Lp2hm_h@Ey_qsm!!u+quRcrWqLLcKqvYqqK;@=9%hu44;Yg`y zL6{#MWymFO$wC-3ZVouY8uypCsnw!*IZU8Mj15d` zv)t*S^k-PUtuBtObkQPbSPr4%Tp?Ful1WTe+14L~FO~qjSu<#nb`iaaLxtfQhZ(XH zv|(@}U9zEP(LS*I!WC#nt^7`b=B#f_YC&_1TnJ-zkQ7+qf+ma}I9`?oX z;oF*U*Z;VrcCPK#(7lq)vS%}MtkNudns3>XFkEV(!wuR$YXA7+y_T2ndtMEn{WsQOVA z0t|UuhC^yLA|mP}8<8Q@vhu>J&hdSS&GB`J)liH~IV#!14O~~L2Cn!D_4M%V#6R&d zT$2aMPuQTy!aJbn%s42FN?{}dBO9JTU8#rEV-2Z?RQuP>)Ilw14t8Vr&ZK*v?A`~5 zG-Uri+wgwdjkY=QJLf()2Ns9N&P;t-N44tr^h$#$v$brc1n?YUxyX+sMBJ#9QBRBo z-$ijuDmY5{nBG4jrQAf7XcuXO64;m2QiwF;8H8b+dx;jb#NfbL3LT|47~Xx1LJT_5 z?f)Qb_XXr2rIv1J|HB}VR>H%Q?WQdcN?Vpp_(e>9*=*rV-jao$AWejuQwrGycl(lq zLO8X&c>2Wbq4}1DUAMgp+wXM5*Y?V7N8&G@h!>xb-7hWWQ8pJ9R0@uJS*z@6TXIvJ z2dK(YK7|SdmzNBq8)vO^Ub(bozCK>sDHn7tSZ~+gF1};^*egGO6y7xCRWHU1UX-23 z9vbv6`%)pjTS~&qG73S-FNeLW4mOwBhMsu-|9blp;I_{D&i8N;7YUF6L5Kt?@FqnP z)J2J=E=r`RTTXQNkYiI60ZEi~^?|Y^nu_JbjX_siQ8_BA@vh-Ev!{Gvzuwu zq}g?6w_7|xHef{BVOwXK+3vQGsB98XI=jFB_q_vvASc_M**D~S5AS{NyTAYS{SPud zz$I&`G&jtg$O^d39$2JHHdG7C*omxw%k0TTx@0$s<|oB?H9U6UI%lCz;ne^p4R$hi z#D#Y+b!r}GKocCDEG+&JdihbL$)g;3N~?+kfR~%GNRVmaaiZ8(X;BcO5*Oqq;89@a zX9R{DcZi=S{LsD7S^u@<^KzN0&x#s z-4=mAbnGR-|IE3OlPnSh3$=$GhjIL3@!Uwd!5!Wx-VoU40~e^+3A2(A8t&7>5!i)5 z?#!ghs*}Ag@(MS0bZiv*vrs2RklHA76L^GtdMlm_qan$S83XM#CYWQg3=bZVH9U+` z0hcoP#fc3{$V_~sR?GH+mAG1_AG>ViU`OL&RLQsW-;j0_!MT5r z^du05ue9sk*Sat7N|%(UN~&*_RHq#kDMyX$s7W|l7pj}y=)TdNs$L;i17)OEZjo1R zNmdUaxFxh1s}d$(wh}&bwDj0gb5~8j2rtO4?(f^v?kcY35${MftdSemq#F9=hJFY< z9wQTFe`CVkaHm>v6qc-B4Hsz$YkA_0GdIrMa&@Ka+EaBa4xiq0=6Cq2v5qlzj7ru+2GbxoQ9;+wmqo2N0+ohN^P68=eJRJoZfDksNs8|v_}bVqN-e-QROiE zqJCklLB?@`);WUxA&9~Ocv)m}OvV`y4al5MaZi)9-Z+k?ootD?;fyhQF`BVLYJfQG z5a2UjVl934eM+*M?qayhRFLp=n7o{5Vpy;S`nvx%B`0EsytG{i!z=%<=|?H{-g6j* z1f?PnA$>@vzr~4dI1>O<4$dEZK(Fa^h~PszZU7&wLYe#WP#O*uJuR}Qg`6_fLwUR0 zpDOQ`%e&`FlI6XOFiyExC{S0o4FBiN9jWHWWc*nhVwUOBnW(;}{$%{vTc_VVJ$LlI zQ}3R-Z5>Qk2V<7l`PW=v6U_Aw$^=ixY~S4ZWW^?cBr3L5_O#Bz8PW2~yR!znx$I7P zLwp_NtiEJV_26J8r03rD4&A<20f+Xf_M%%0V8`9(yUx>MqsHokHx?W%~`?>OAkp5NFfiemnP8wxWIsm_*>9d_PH z2ZR(rSRk+?TF^SZDirC35{@ddyGG6-z7#h9sm>Rbs3tHO(zf?0lnx6OKpk@`h+1pT zh7m7peM043_@KhXD7Rq3B_reRrx5da<<)cZq3-#vRF8SK40blX(>vBULMSKOC$v?WY!oXkaW+MyDai~op6x^l!p$YdhWw_T5? z1|ec9=D{Iic}H`yc&G#_4z>tl66k6T_})z4hb@O35hs3?d|GaB+f(|EO(oI}l_5VD zaSjw;7HSG1|>*8 zr&&WtmD|G+p5bZ{8exognoO(>uX7hyQ7M>amm%eNHq@;(zK|cM8m8SUVV;*>BX5yj zQ_&!W40Rlst57>?S8yoEOf1H-lXxI(ejb7^sZ~cgIc$SbXW7G+6PgNwUWCpxg^hVJ zF2J7TdIbW?vhJN&$vkza#5E6luDKTvwsBwenyMcuXSGZJ8ifr_tXBzgL`&mni-IYV zQ`%gOzftH7lIwnGcR`Cz!wQU7p4i-~;D%O;m^A`S0sRE>L`!ienL3RQ#4#lR$axqw z!er!_{>4k&O|3)f$FRfudz7_?E6i5VL?JN2=MAIe(XHH5JO^mh5Y-<8n^z3N5sjb% zCxwNFyFNk&aMxF-;L{;Rdup1E_k9UJf>?cNI^rl$--OgJpD3f|4)P5=9=lb+AStcXH<_2Se; z@ZU4rQ-Lly02f7&)lWZm%MrL!)e!GZR&~O<65em!2U6~5WcM@hl#bkBL_v;if6g4+ zx`mGJm=)TyAh}~M2F0LS!un$m^~YX1J&qH6qC%_<4a_5q@Z;(sG{Yn&31x!O|3w|j zq@zT@@^x8FNthIs_-5YSOvXyUU-}iLD-eeg=wR^U4eGBs{Q6zm?r;u@Nz*{OW997X zZ>@cMZDPaT+Z~Tz9s)yz7%vQ>7rB~6b*4es)`*ny;J2|lyAV6b>%xE@SAYH9ldU-I`Hoa=9D`~3BnySqH_|mL^%iQn-y0C71+sx&`L`h4m zXEZnk%K-s$YZ?*&yD{~A0EdWJ|g)A74B}s zR+twok+tA|LWYZkra-*=(Ip&*AwPEfhN7kajf92yvuxSvL*y-qD1>D?l-D3Ck~OFg zH@Wbb#2iqo!X7Bp9F+1A%?NUKs9WGli;oV7NG-JUFme}j3V|EXFvVtqCB#|)Rw%7h zoK_=Rwz43Vz=15>9)d9{-zh>wBAgNb0~>(kLx!$Ick2XcClvtR9qN3+5dfH=UQA*3 zAe9NADPc~u+NescR3HLMKr0YLv=liCWok$rnZxeU5rSn0Txda zA3(PEFw$qi7(^p;loN)UbUz4sddU! zr4d=~YSZXr0O=@5?X!#r;EV_TCbiqq3Zz51CdaMjdqxj(<$Bs5VTj(vX5MVP#lca8O$D~E0lPcY~M`} zVtIg2EUC3KyvYUx6-9Nlfrtj9$HBRU*C8`DaStDEP`ke2@L^UBn(}Q}03$F9Y3~do z1)FSm&3^DnsQx+&Kky^RBKS$O5^0sl?0BG5m9k?iQCngx=;z2uaKcy@Ba9hkqJCas zFklflyoe$*bOFA|~jH!lYCT9*b2ef{P z@-@Vl0EZB#Fa~3gDWO<3o;L>>l-Z-;4ox3WD(ZU%L6liNHXg!YU_PId0F3ywqpY+# zFd|G1z)Fp!rNeml5KE&Cs~VA&Q|fvPcN`5KkZ2QzdP$vkG{soXqX@5q<;Dp+sw1zQ zw#gGkx1)|)e<8Oa%oJDyuuj(|B>)r&1ja_0F24dLYvD;z%5FDSgVum&#?} zdn_CZqCtqYL>ZF+MFC={FMX^=qf(5tB4MrS`2rSF<7M5;Ymna-$g~3RC4kPFhU(*<+F@4^0U}%0?XCqvH6>iTK5kIen+K zU9a8Y!%AkuD$hfyHv+WKYQski4QmxUe7IkcVkw`sQSuF~c^|g|5A&%m{Td_>#IZyZ zLo4!Ai9P8bh$186ijA)E z{E_%gi%tfHjjx-3Uu5#rueR-Dm^wJpt_}n6icaz|Y^zG+9!2%olZR5qm(5uIO0TlKgbr~ z%PvM_=n-a=l}8j7Uw8@;fGFR6jCRmEnp@RzI)nRoSD@F{3nQn1=lWpitxRizP7H1i zA3bxXjSmzgMMuYuwd>HD(vAUzvH;)wZ3r9n9LKgbU<>2OnP{Y;J-9KrJpU{DG89ru z$I`Q+8zfRS%-s%g=4LF}F&MjOFv^gOF;h;@)s0gdVPVR;He&%mhV&w@ceQQsklMSs zeUE2!Al9nk7)(}Ru7cG|2NMCC_huY9Bs>!VPxS0o=mrIPt5A+XaS&7t7&Cf@fjFQT zBBCKcK8$RcI4xs34i8?Cyjh@wk7!b8y#r0lZMd5^d>9FMUrKJII7E#n2{!bxOm>=w zX=`P=)C1=Z>C!=j4>MQ%oOovrM37E9)D7#!S+ri4l9B`Ri0KgggB~)617Q>7isUb} zq?omJ*g*18l1M@VX+cT{OwVc`nYskVWQIuTQ49Qxnh%x17!8JAVI#h^<6AeJn`1LP zQm*Cb#M27oSO*!W2k#WaGnjl8uZ=t6RV1qhq|f<6t!1PV#%}v?T1ocO}JQx6+qN&Amuj6A6SXVT9(R_ObR?5x zm23$w!M97p)ri%ZQzNYxa-N~bYLK@6qOm>5%+*Hz9&?h<2X(H|+Qh^m+8Kll5Mb`s z3y`W3Pm}R6*t9vOP!S5@f&>gID2s3K9JxCJjRoZ%&}`VeIeLnSP4KRu;aD)Lwsu0* zBwhmzpwYzRW5kUDH?YJEZsZc2EUVm#Qg}~wr)y9PL#j3aTpe7iuw1a0GlDiq=b(!O zdf}1vBmz8--9%u|$oL4MmabEgQP@h4flJ`rFPtZjbHZgLID`a4oHp43g##rDmr5&9 zLn(4(5Z;wREQTZ9EJGq7I67jq+avNoH*t{zSRjP)B0(x>CQ8h@gRrZ-lpdh&4k`BqBgR$?4}r@W z2@*w6drqEV4gm7G$6U^dDbcXBYQL-ft?WXFA|VwLXy0L$DXFxfW96ySi`X676@*U~ zULCAO))>AHc;#t)mDP3-+!jkfUDL&@bQW6IG$|=gaPDW6cg`vUXQ9o0*1zN=A$Ss| zL>M~WY>12srm;fl9RRf5TU=)$i&r3z$ch$s{DAft@M7VC6dIC;Ym^-QEu9WlwGQxB zLHR@mKx3>(e#NZB!kWgz7}ZEq-Y#CFVp^al$_wiay*Cgc>edw_K}_6kRVqcb;9L?j z?-T>**bm;1&pFxj8r}T>r%c%}fq{qw+77HdeCmK0!z4m5Tpq=ESXpmuxHF|^Po6tA zcADoXA=+-_7$!hOQg!L6ggjk((!th@2=}mx=)UBBm#C8?NCE0ZF$=A0e&h6w(`3Av z-ZID{G2H10{Yekq)qqegbxoVDJFYpnjX``v(!C;UG_14J`+ByiaJ6izj7OnNS-WIw z*KBxh_XpO^oRS_zS$R`MqxJp=-Y{p{1`LNb74T3w7;~gNhx+5^nEIo!=+L84g$J42 ztAhmN!=OH?iYYB3G+&YZM@-A2<&hU3H54HfdW-mRLeM~^=CF}^4mMI0tIRx7kB2Jj zhV{wC$EsXO8k%|gCzglkq{)P-JDnf)PF&_?S|9%bCGCw&+=7kaxyq@9Gi^*GQ__zc?{|h zQSc|A<#{;r2T}%WpQlg^Bn8|EyvWo0z_guty&fuWqGN~yUu^-BYV;!#Pt&5D zKpEhdDuj-%gf)=%Ri}Kdvac0^oP4cG-#W5w>V;=I&ywpKu5Czpnq&{fYN-6cv-VD~ zGZh?^gM;bHn(NP8dj`w1z9QYU?5#a-?!jJNeZ{rXY5UA(tkv@7l)FQAcg*hmz`d3% zoO-img1aeUZRCsfWz=CbcQNVPQ|J=FbrZY|;Eo>@D;5ye$bUtbGb^T)KJ(rNi?w=?M47B6nWX&2aA5;Qzp1;B?8k|*%2@Bml@I3-nxKM=2r05w*VaAk=J z`=Z}8o)@{pS&>bBu(tmJUuR52!)1)LB&akjH?A1DSPXD+8F1xO2KN7X$WR zF^z#Q)Gienx@7AcT($!)ZJ?gU)@r+*hp=x!#=N^o5mO2PyK;Q`6kcS?_1Y=aniQlI zAL6BIi#SR-Owx&U_{((1l%5GwOKJM~70UV}y89YVQBrP1r>F;4xhm6(qK?pfMyqQ( z|MeeJr_da|EWl}v)BF0i_#pIe&9?&^?^MBQFnWovnROcRS*1sQ4cJ7C1b?*|3Tvno`YzHks5jEnxFyAl*NBUN2&e;a$!I*gsiPhiubIn0_33`CkU<-9J*SOG!2b^ z4GI)T%|(%}P?UmG#VR@Fsr6H@Oqs~Yl!*{93OcTukCI}JR6pGUfZ6%L*Fmv(6aO#y zs>F=qzo9;-Im#``iq%v^m%;|3LQMr52)Ih8wmmIeIj{N}K#IDY6h`v0cBNZ=OQEqG zBrhcH0t%*pp2@Hqmj``*zOEVY} zKP$7e5m^>G3j zPX1d90NSGxewUW)k5N9T;_^!9=NsI%O?TV@_?#TRF`RUF#WoY7EWi4~)C(zBP<935 zwXhX}XTI{_o!Vf${4M{R{#1RBTu+|HpMUrH)S8|0nw`n|UCG+r@Z)X~ywx-Nzq|oH z248?~&uy&AxK7RvTw!ytZ?b0s~!4Dri96ay{?mF_?SN@UHO|JRiv8n+rd8Klo zP55r_K$Y;LD#t*x@kdP}o!e{!tBpTeCF0EbGjFZaN^Qjd;#YCv_(xyq#n!p5ZU;=X zjA5dphO@=iJLW2ek`8kE42K5wlg6#!?p_46`2)js!f-TQ_9^WyPNKnAR(jbK8X^*`ofycR`Gjg zoc>JQY_a^niaQplECga!Ypv9brjF(UWz>a(`2UIldDZc%6J&>>7`c(_AP*!GeOGYk ze2+S~uQ`kROI0MckWF=-`z zUshvVnE9e8CXZKZjfuPgT;QW?EM7SjHtS9f!v-C6qlX;mAy)7wd!9Q`SE`BTRO!txAurIIy|kp7aLRZUDw3@o#D8P5wLHcAj2S^qjzzR6GwQn0 zDJ$hGT^pZ$@VB&%+EE_J&vaD~6liG=B0qS1iMo}yJS)@Qwv@M9_IA%1Kk%-;hv*DF zoYA?1Pcl|e!Axr=j|kVg)(_UZbHWBPee2>4W;Y4W{=BtYp2P#80gQH*Ir6hb%6*?xVy-Qs5b!I zQ`&N;ih0Sn}|62v$C8GTM4xf9e~fH=fM`wD-)8!+X1}2jN=~s`w;?Y_O&9*CIe@ zvT9|_xzN8Q=7M`{m@Af5zV4yNOIF@0TY1N~BvBno`nuuXqy~Xqtfi}`OVXa|ndfCs zJCvE}_KfW5qT9L#)dYFIH(570?Z|lQ(%pU2kH@#k-p-E@WxgYRgzTeNA{zAv-c>LM zEL{yvV3$uVFj=-T>$liK-xxrkXj|x=tv{y=JR;a?Q`UOfS|2|(e;{G4zir(DrzaHL z6p@y@&||NfUNw_J+qm``kWNdjuNGQk*o8E{VtS4ITZ73h zJOHNNg&~^>Z=v{FcoY)`PiZnaBKL{l(6L0!6eFjVrdMEIT$G6@A`S>^4jmsBNdU8a zCPyHkkvgdL0Z#A~^YH!h8k7!pzwnrXgT-R$!-$t$%!3e~lA1!n0SuvFY>^17ILkFq zkO)5+&_93_??RaHZ2)#lyKQ3kHtrM~L{|jHTwn-b%m8u-W_G7@1eo}(z^HVk=_op+v(`m5Ip=rCO?uW;q5x z%c{p7Fu@-Ow2Fm8EkJ3Ww2uTTnxt@IR{`KvI1W`?4bI5Xb2<|H)XeOd_KIhhJHCdL zuTS>%AsWPv@9jwV4!-aG>zco;k$nfJw#5dg>){tD#zQ*fAv5YyCQ(|6o39x(nG)db zCE$01fMB;8!S#ZmNRixm5+o+40#YLR5$~E8>23hMrqIEcITDhX5UCLL{DvOTWJ!K% zZ4+|-r6No+ddlFy5(12Jzg*Kh?@iWhyzSn2&xq$-i1bBol_*uC8ha05&}wKDk5kQF z!U<+q)MW0d=BISWP{wO?M`S)kV5cu;?E20(7cc#g-ZLu&%2&^h;UQIW`~rQi1}q&$ z7Ex~Au6GN;D?%>{UddDz?SzS@-)6FuP`~^P84|X!7;OIUn8=Nf|NH*GX#8F+Bs(@g zq2^$!s#C7&ye~A^s$<(0Y8q2DtL2*2shVEuysBi)=Gg9!Jmf>Cd_l)qi}x5L|2x~`4Ky-o*O-q?F%FANGR+aCy)O5eRQ1U@5%xF)_V z)zBk1^xX3F043e4MdtU~QF~6IeE}_gh&g3=B#1Y;Dt7t=26YDe?V21?^gBqaZj@1u zxf^Ag%S3(idKjC~V@EHN^MdF^XYtV~o_aNn5=ok16zU1aE0dnqn0absiW`y)F>kSX zOc${>tT|uCnHVk|C7u%{tV+bT^aCAW8WtXKs8>|F4$x*Q4*rP2x%ddsSWMoovvHzu zjN-y-jF|pr5OF7;#TvV0(b4FnNe`o4lpRu9BSB&hM}}=!Vu&4@gD6dSE~v8gOC>p; zk2U%KC2LN3)`$He1F`RcWFI_C;UPJTKSv8{)U=S?Yukn>zgByW5yCD*33AXRX6ifa zYgkVN^iNm7n7Ry(>;+}L|GhFeQkn)m4&FzvC z<#nsM=~u)n)r@Sxj#^JF*WamkQ3K+ZHo&`UvHDun5=4q_+5^_vEGbe0TaAPxdFe&8O=Rsm4<>9c4@5=Va!l|EPv*<${txNI*cUHmv-B7EiKwMx z68DHg6Decb3k@QvlM?gIx`(y`jL*vwr1%Klkt{X1+NvsT} zV4zspiv3K7cgB?RcgXm2bfldXn$$C8<*toyTbHG=N#eZYMa0Fg>|GQ>wq>zF+QX=x zY5&H-w+_8|=(cP5+=2P0ZuM+UyZu0Jo~3YC-85%PR`kRM?o>9%N0XJyVi3I6&K$kn zvhKELJwt;FuF9(~zV>3es+K}vPMd(~JPq;2_{C(!3dDn~Zb~n0#7hX`(v|+SFF*mp zC^0-urkB*Gz17!uUfcPg+*VTt$5K87T1ojjWM4ufLSDS#~z3oXchB@;Tq12Ig1JOG)RJ zlyisd-0^s z&~*}WKIanSKBz`P@j)p_%|$V+VD>MxXJRKJkd8iS9IPD_BRWM4FM8Bj{!(1IiacGhxX?3saZ+5RrO;7UoubkA+!bwE5H3b*buZ zxfWvtGro6v!W6Ii<3ANZYSu<0>$_^eRDvaFW4jy!97<3Ng)zdF&>X3 zx7{E| zB}~^0`l+dx;->ii zH*K@4=Ztet&7XMR^Sv{2&)&rHy>iFn3D@JY?K6uG%4G3`*lw=Q9uf`awz<{w<{#L< zXO~w&HizHuo4^B_+mLZ%`+Uzm<3{sSVtRFNmff%bzw{*AZzwhQi|MNBtdZR`wep(< zTlsX`OkaHT#wNL}&Fo4aEt}bYty{J= zJTT)0AGjwmw&1pC$w=KarXS<3T?}z)%ars2J?p0vZ3IhyLnjNq$zYdR)oYJRgoq>) zP8mBkpT`mB?Iav65HQJ!~j#H5+NK!2EBL|V3&KLC6Ocds>5a_;XA36 zPHeWZ*~_Ln3H783I+56k&tm`>#f<|A;v`}tB$7sQKe(Szl_mN~t0q&bIP(dy@QN(n zB0T(XW}iQUsvSr{Vk0Et8xSi*eLHqWT1rpK)F)8NL-V8{rLCt^1DyzfN=0i<52Azln$e4zA zMJ`IS^!qz>dXG-uq|;S8F({j$yVX>>BPV8U4!CA9;7E+l;=J+jHH?{H{u;>%BJ-BV zosuw*E?=iC863w}CG#DDg+X_2Ix!gg8A|e5IuYFc#JZj<;%}7BA_=k-qR#=M1L=$6 zPXzZ*gtDIqwx0<0p9rqILgQVb_O7t>uHa{9-(8{Ru29AP0(XUK_LD!USMTu?$&en& zf-H^y?*zx+31xSMC3l79yF&L}q2sR5a#v`*E3~sSlC|9xma)Gk^%XKi=}3cDxbM6x zbg?t)gG^Sihj@-0kO0Z>5cO<;MwY4kt|{h-rFF7tY1}{CID2tEaC7|q1Bu5zD|hcp zEZZm7?@yTaL&?o;xa=g6Ty5H9Td;Z;tYwJTf>`#pvU`A)7HE=~?RbLc3vjyw=kFzHB9g z7&pJ=defD_PHEY4*}MYSPz(TX)((g>+v5k|?7F)@v8-Qi-Yf^UBm;v90nTIwL~(uE z<-PjS)Js_-`>_l-g53-uL?qoTm~D$dUgG-fZi7X%%(P%HNwmbDN`$t`%|nayBkRRR zR_uxC{jq1{k|mc-Sxb%Rn>ByS{x*D-<95D>U2Z=0e)!LyTcju1?P59d^2eLsTK48L zc}W)#zG#_inmhO2#Jdyl^9!txeA`OI$Fx@Ce!){UW1bn0Z+&a$n>*)BU>8@<9g>&# zCz|@@rJED}&9Y}p){KNe-@fXZ=D0T=PIPWcv}}^=`xDjua^>c13B9%o7W<-&?z|nM zk9-W7uiLNLX9g4QpzNs68u9eED+~!gtuT6R6`bW+8{OGaY^<3EaXOr^SIg#_MF&0q z9G2yhM8`UK{}z|rG{X6}xCEbRGbJ4N-WFSaVQ3WhidliqG)Y>s?7=T~i_e+Gwf6)% zXSX;6L&*a}m$+fNZc)I6QkG=tK^B}Qz3UP8i8D2e0$r82bo=0}xKu=3=FdG4=$aiA zO^EPBWD{LyFD$Zawya#NPM3FOjdbmW{t~VW=JG`|u8VCp@qn21`^1X07lawE3vlLc z#uc4Z>dBVS9Xh{a(MESGS$&2KqJ6q*CLou$EDH2PsTAF2_nG`+6{0-Mte4$wStI>e z1@Z;g1#|tP8Q1KZY80oXpdYI?WR1A8YT=sgE5RUx+9A*H{@E6}9vV3-=eEy}&L6zF z{rxB8!2^j62jtZU6aIs8#S^j(oHo8t*49j0e2rYaY<3_4KFhm&u5Er`zUOA!`)lMa z`x5K+$t(9Ky!+*{1G4$xBIcei>osE5!oTZNGe_l0@boQNBcAZwhGqt)cgbZznJSN` zS!bo#o-V7+8gX6lc4W=CqOUBKizRfo96gj4OY$HF%>zG813z_C8}BU>J==`|wxfTy zi95w~duQ5Pg{*8&gs8ahafsHm4;%Zq;vsxbWlQMRDjt^;*VL!8nyrbFezo4htcY0T|pXh5x!V!#jCmbte z^UB3a_Vkbe;4o{f0!Xz8a6asCAr1nNSK3zkz=fyxR)c?yUAzsbgVCv;31tObW}moE j7aFx{_Bky0JC6N@aq>9Cro1feQe{3oPGE|<&sCk diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/freeze_support.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/freeze_support.cpython-312.pyc deleted file mode 100644 index daed9624af955ee4c7ba311c515dbcc8d6b56d05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1860 zcmZux&2Jk;6rb^aIgXt)N%PrCUI?mfDX|5qAW~6)QUwrgh1$}CA*{B$<7D0Su9;mY zb+i_tszi`_NG>!;9MV%j1u4h=2}NA65-DLJ5>k68H>cqMIq_z_OTx!U`{wQYo;SZY zKcrF#1naXa&(EC`5PHmhq7@IBgWJH|LpmxV9qTa@7cuOd8LMzb4l@}KJYVDkUI1Pw z3c!nmC*m;pmSVbehc8MUNbl6+L?9x;*RUAVd==%m#p_ps$Z!x7GRk%-ELgVG3RGQlh%Vo#%hkF|K<&<{ zuI$X&H4~&HA;U5(&8+EdEA5sN9FF8^4DwyhalWLqU45R#_j?or4yizgl&~?m7-bjC zj_A}(*I|ybe0aSuXIDs}Y^!#~wxC~yH*JdOZHGXLVaWcdqeO99W!i#KA4wdN?>(vky+se?{Q^zu753$pT!XXE})rdggykY zG{lC~hGU=G?Z64KQ-*F2#CoDc~PXdwcc|rknBt#>ilg(B%QUMw@)dDEOc-1T&z!+H1 z8UT?1o#Abb!DwnV>VVv==M#a7fp=n3tRM+S$;TCkMP$utFPdcTOcsz{V4MvgPthMRJp)MS`kC*2BK53fzM9yU z(!1RQpYyFa8cOdBW}1VU<>c<*==vM0pL{LtWG9>1$%hlo?9_5;ncq#H*-1|{(-WK5 zHmA4J=bj-!kel&S%Xs$*)(Lr^13^nfeZy;KSI4)K>HSWK_ou^V?)Lei^CK9ZSJrSzQFL2_ zJ_>HVN*rH=4PIx;-ciak!roCjzz7>EKXEB|(yxJa(1LFe?P5ySn8Wz1?TeVA8Te(d zuJaL)7Kbt3k71m6jFNlk)E*k#Lqjc5#Jy`L*R(H(4-l}e0o2#OFN|P$H`Ti`u_o*c kWt&6UAN#V+RIbH={MTf6i|OHDV%M_v>CEpE`~~^{0)-mf(*OVf diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/helpconfig.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/helpconfig.cpython-312.pyc deleted file mode 100644 index 11a728a11944ecc3e895e43c8c3c19884dc875a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12028 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%0De&KE{ih+XImKWPr#rFGR zXrXZx!3MQ;Hejf&U@p~if-K}5vLoxr zfQLEf6W*)rgO|o}TpzcHb8>d8^Ar_GG;qy;!}qL~qtx;&slK^<^EhHv{=G%lG1U za*iM0TEbJgXT_|Lb!MIG^P4$;)(@)$o0SVx$C?e4=-{~z8U*fxzk9;FKq6Tm(I^L~ zB7E+1_B|5Edv)HYORc>-09-wDyQ4#HL~Iv?L&S#PD9+&s#a{3LJ(k$JA>2^6$s zYpO-=BsY1>?bZ?&ti&$ze!^|0%`id;uaa@39C3a_PKcU0`vX(qzfH-y9y1KlP-nT= zk+_NjQxl*U{aHPIiQN%WO-}U2M$DunPA?IF9r}h+X^(h`;yF6i%WNmZQ$GGgCNGsr z>(WI<8o<#TJMzrfq+JZPX8 zMOBHu6G2QfHZy^=y7mpl%P?q{a8oa$$TXfzO~uu8ikw8Xl6BxzyG{zk2TV{xbvTGrcbnT#rVFU@X&W zWwGh_m!-(%Nn!vJoKY2w0)}>LzP>Z(kDovq*u)e${`%11xxwRonU3>{PNQ)YKvY_3 zaVa{fr&-b+*nq`X!b17v%zkT(8K_xl2rFD;sdW}Rc9S&CJhS%5CP^9l3r`)$?897| zf`srCQm$;qWK?|z#~zYCGoh5y!Z;4Mnlt+!8-V;g&ZU&cMwHq!bGyj-z%g_zhU0kR z2jQ4dV)2nUxxeJLrd3Mq(#b(=QdJ>ea6pyfBNDBYGVEahTa&R=Hv&+GuRDU2H`3ba zRANRlCu99|j?mpR)oqE;5T~PR3Iu2wk5!WnNtD{O<9t3`YlymX2?>Vig!%(495XUE zMQYe1=%83!r5u~##tyNLFTJKO9-&39##!gcWFj#gm-R86K4S^fp@;?#9aT9VLmFcU zygjL^Y1ObNl$0URlyrU&)iuKo_nnS1*w-83S~HG*kI;&x&1%^6X~PvuCnl3A&G49; zBSM&*W}T%@Og~T{IkLkdoRNd)@B~pZU^h|BVgQqDmzmp@4FQ`3XRsEF%vsqXB|C%N zP?*P=N#Y9?pW?4w!w#I~el64?G%o}@^TEzSus0vA5$q{&4<>1^fn@ohRD0;4n^Ws9|V%N2;tKzo%b&U)9htJQ6MQ`0gX6g8~AAjN9`L!=_wST_4o!)XKyy=+xFi%o^LytZ+K?a_iVAT{d)3Ra;fiT_nou(-A9+d|HeXc zrSZ+V{@>7vgo(+u#NY6&hB}LFolD1;PAtBR(5q(8LSM1I@p}KY{>4*ELpNTzSHJsP zJDS%HgJEmO_%fR<0WABvR)rnk+8jRTY#%ZhO|8J<*fsAVE)qXn^R9)Cg`vgHg|my% zC1G)DIkfYh*u7>4)YqG&dHIahvg|vuDjY3O@#3m*%zD6ag?k%9M~K|VZRz;5{YHDC zWlz3k&&{)UZ7VH@Y4&6MoWC@+Z!uTcb|8;m=)m2sIoCb$MVk5;|Fz(;vTjDeifb%Q zooP$po2SYFBs;)_Dl_%>hIq0Zi{QI6#3G|+9D)VE`KorpUh+053Q=QEI3q8g(<2(N z!ScUi`9=1eu>2yNFDdQ;ksnF+67Kab1Bbe$D-vir@Z?)7P<0L2* zKVkwx|7*ymLz(Uagi78ovcAfMYWOD9^tck!*{2vRBZBc~so!C0uQ94SEk!L59_ZC{ zj8r5n9=_C~B)O%wOocUy29=8c#9y03L8;vUPV|r}tl5#T*-@xDl&?9oQuD&>*)Lr+ zMbS^WzvYI5tKu`oww>Q{c6WIG+}x>!zWcQ;i#wNg-yA91O_$b)*lklAJyttQP>(_SG~1?2=5<>8?5e)9Dv=!WdF9MSC8NPs zeGRZzIXPQ@Ci7>|`tB2GEytADL)>_k4CHt@-&lGl#70(?ask+P$E|&bxLK!cTn2OoQwn=-^U zCHuI^+ET8usK&nRqMfXgjkh+S`Wfo%YZ#VLbl}t`shQ5lx3AKQB6#J}lQz-x-q zna@7}{Ezr+l&mZ5#Ztm?%NMRKizA;VZzK!t&wkPVthE~#e*F1JVdr!CozE@rcz(Iz z(5iU&ceOj0rdDcu=UiWUYfIa#Y1OyAd}JUYZ&}{WJ6FYSmhtb(hq?-(gZa?GmC&q)B_CDF z)3YS65wN~F>@|~iDy=4!wk7+d&S=@#-D@ExY{)H`-jXMV1qtex9Me)vl|B+*FhBh{s{RwYprSbKzfi#N^8ADT9#G?2^C_P9E?^$IFJU6Ouf1mD8v6O=y8dM@wB~g4 gHA{_zqvmGcow{GLku_`0wPrJJX7fW1RmP700Xr7qT>t<8 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/hookspec.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/hookspec.cpython-312.pyc deleted file mode 100644 index b52604bd2d4a085bcdcbd0210bdf9bc6d0d86df2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34844 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/legacypath.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/legacypath.cpython-312.pyc deleted file mode 100644 index 59535dbc15a9735aa6a8c45ca8f63ba9bf51cc83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25041 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 V?LWmMKb9Y{1P1=lMtMxg{67w|hz$S$ diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/logging.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/logging.cpython-312.pyc deleted file mode 100644 index b026922e4f74b5c2ee200d3b9c36e6b0845fdf5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40971 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/nodes.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/nodes.cpython-312.pyc deleted file mode 100644 index a89d3e829d3e93254a044860f114bd53ee177b10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31023 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/nose.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/nose.cpython-312.pyc deleted file mode 100644 index ee872fb846d69a33ca498884f5a5118ff5896422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2005 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/pastebin.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/pastebin.cpython-312.pyc deleted file mode 100644 index a8071bb59ab79195568d473862ca5a5f4b87291a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5700 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 ZOZuRj-!$Es<`B_)i00ZJP{fGp{{@Ukn|J^K diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/pytester.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/pytester.cpython-312.pyc deleted file mode 100644 index 652c0e11fcbcd6dc413fe5095420b5f1bd436a2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85088 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 z 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 E8@*3T)c^nh diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/pytester_assertions.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/pytester_assertions.cpython-312.pyc deleted file mode 100644 index d0dda6fc17d45e266f0c2f56bb1f97e1ddff0226..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2478 zcmah~&2QXP5Px2KZLfDX`{AVdY~z&D*8Rx#g9C!7QYjKu4nZnGNDI=+S-&Jsz4r3# zZIj@Y0zxXiZN;HMszf;v)PH~@cP@uC~)bC8GAQrqE>n9H~!7MnR)AZ zGxL7UW)%YC-mR01gDFD(M5Z?ex?oq~2zf|MQYI#6CTy;jC?`0?JYc@eM_2$Xl!XW< z0Vm7J2#bKlvKV2>mTGcYj<5_kRZejv75&U(W{M`MKvTo8Exbi4)6{$dxmQc(d6b(9 zRm?QZ49u+AH?Nqvuao6;>~)`-gWx|wK`Zuoz%CEA1(-#cD&?sXdG6ms=(pb-0KeIl zK7D9)>L#`8lxcOlv0ypcybEx}r=CyQyPCJ?Hf&RKTwj}`n(Z1UH8t1KEZ@`IyUyf4 z7*?GNh4-zh4{!Oyx^KCTVI%&Ce%_!?l>$!AHtKc+K6YRoB-tCTZPTiMi`HF+rpher z8FQiRHvFnvqh2W14bP)yD0#Q7dL4i`Z&)_I8TA{?nW+l+7rG+}Zyx6EDiAnjt|4!9r@@DWZ0a*(=xmJm;xCINZU_52mL zLUev+R_9q7L@a|O3j{uqx2dBm472pmVpynDd}dVXoKd~KXqmK92^B^SyZiZR#Jvzi z3*9it?woH}4g^G|%XNq+H9hpN?Tr_omKGtDr6t#JYpz3Ats+0@e5K@BKD}6n|6wdpuT+VX0TrU0sNi`pJY;XOz7l3*wtHS|2)53{^k#vq zkxoAuKE5doJU@43OE|MO-Ab>Q|0)i&mcA`LRgbm4*jC?o8nZi+kQdi(b`&x?vGK_- z;#Tg1wVUm<+FJfCJ-#XEkB5F2^v(46F8C#(NEvgP7fQ>$^jPl2Mu%PZF{8H5$T^8p$Iy#3MDNBQ@lG4KwvfY$|b{ z211Yw#7L43q%TKa^A+iR>j3)C6nt_Z1?eu5Uu%~+V3&#PWUz~o5~QQ*NK6x`2}RGY z-n$;9j^-~KJ`k#Tkg(Rgg)OC9@0tNcZZPex2YK&5g>Xa9$Y}Hc82X#&&&cTxgtEU4 zPf^_|sNA`BpW2r5akSt)&}u$j+8n&JRk*w*U%{1wl1?&_dTWOla$<)E>rRGb^PMcB zKGIj{F~fm&*VBu zctcWwQwfobPE&{!L}^4BT+JeiH%F8wxxtoqzt$-rS0shub@f5EgS)_8AS(Y30E(jc EKgDcIjQ{`u diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/python.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/python.cpython-312.pyc deleted file mode 100644 index 54412cf4dd0640bed1dc758a5a7745b8b3c6e49d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82456 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 DI=-K% diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/python_api.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/python_api.cpython-312.pyc deleted file mode 100644 index 02c038fb8cac1649c4adf20ce80a7cdf9ca6c380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43267 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

GT22bMjbT)SLvgdGVsXtNCV6y2&_EZ5pb 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/python_path.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/python_path.cpython-312.pyc deleted file mode 100644 index a2057e6b4b5946f417c81bb51e38cc1ec3b34556..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1574 zcmaJ>&u<$=6rR~#uebiuxJ?@{DtJL@q*c>c5H0}(s^AbIB}GuR$O2hQW)iQv-d)X( zt-4C3M5>fVs+3k#vL!fh45SAR9QX$~aVexxt8I~xdg8W;IrYSw@!APdo00duH*emX z_vZU%{Chs1K`_=nf2;PJg3vQD8H`k7^nL-Og9swnMU}qB6%2F5#SNvRVBu52Rx2vl z8dXV(;6;t-H?@kUAd2g<%3$NZCh7ae7EbJAR7r9&H?^%Ku%aK4n;qunhPn9zx#>2x zj{hTenzwMIf9!jU&XTY`vsp-4qz8#+lsB2TkaQwT>mXJ5dQ%`eXc^THuF4PuXb^>{ zOX$9~rS)AHwUL#Yk1|1<*L*Lqc`Zr_8D2kqfe=%gCil&-9ZrdfrA8WW2Q<=Z)D5CE zp^J9Y<)TZQ5XW;Y%mfReC~rRhqFnPEv|RUXzu|lIx>JTzg^&Qw7WGC)?Rd2$fF#!ncJ=|NTmOVXBuK9p7+4$AU;GB zkQM$zgWv(T1N{m5`W!+xFi((1s4h4$)?GUgNj~HV0C?) zRAB?|*sg>|a1gTBASNerWSnH}Tot_q8+0NKDn8aQxmpg?~C_yRHs{!d`M{4yVa`XdSTkeGeg zZYayj(G;}cuHJt0=$IGLw5$y310@$EB}$(XE5%Mj+;OS{4^Tl^2}!A`vZ diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/recwarn.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/recwarn.cpython-312.pyc deleted file mode 100644 index b84ff6ff1015579342c5be66d6580cd69333e0f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13872 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 bW#UZsyQYWuK(21n5{F+Jul+XFFune7!4i;F diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/reports.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/reports.cpython-312.pyc deleted file mode 100644 index 9e69658a1bc9a9bad1011ea72e07b22851256645..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24588 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 U?7!)|*?-gj-JXZ+o-L^V4XETc_5c6? diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/runner.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/runner.cpython-312.pyc deleted file mode 100644 index 2fec3dda9611c95c37151ae41750f04a8a52cd07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22417 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/scope.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/scope.cpython-312.pyc deleted file mode 100644 index 00320cb7401f8e2e7969dbe4f8e4e22b36d220aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3740 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/setuponly.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/setuponly.cpython-312.pyc deleted file mode 100644 index a7084f3f30f27ca8a867b133d8f020080e998462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4929 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/skipping.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/skipping.cpython-312.pyc deleted file mode 100644 index a20cedc507a85241751f4fb3df2e79938160eaeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13463 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%0D&|o*i}S<>1pLkt# zCl>6&2(=P;Rg$D=4rCwn&e0J~=mBCFW!b5@^LIxi85az>Uo%5znlPaBqAjSkAR zR9uil_A!EP2<9ePO$IE{H+~PlU{@gk5YFTg{Trr!<9QTRc-Z*g# zEXDlFnZ6qhi+Nj@3&nW;iKYBgvHVl<;u-)eC|oh~MY##W=j0|FB&&e=Y>xfX)sV=8 z=0J%nZ>n{sV9{9>cjdFngV&E-JF-;X5-V?6bZtqPa_!sWC8aa1*LPmqIkRc@^nB5l zi6hGuwX>&g3b*PPD)vvbFBg=|_~sfH3bswQCF*VV?O5P_%RkWuexK~zE2k$$sOa*_Ox9F^k7u3w2iWT?(JeRm~r*=&2o99cwHVF4)Z_kaKXnvn)bVo6q#=qS>WS# zmHp^G^Xf&XKY?aJ=pmv1!S~R``bmnNSu2gWZp%WyveNdtLQ6DIc zUf*ag_~DKH1TGbdaokazk0-yRBtaBstx&F=^Ag5S>? z(W5|u=JxvoVQ>qBS^#G$R5e4X?g6UBT(1$$LPo)Z<9ErgdEdR<`ti1j1B-mU4vS!G z9F{gHz^PbCfT8esuX_5F0;iL4uy)}R46LD~4F>H~;Z=@iK~3spm8u|Prm!b-8;M(*LA3b1EN zcv|igx21N1k2?!zr0f0H`eROSyrklK$+eQnWA{ocuW!1xX|_LBx^=#!b>i6PR^lm* z7nDq&zIuAvf7L&Ga*i$(Y@KLZ&MTU+zP0C$t14k7rM35o*Z$Y~IxK8*S?LYYfL7%@u?eeM+RQYdndmW5ZDX;0ibQ9O)r z7<~*s1rL!Zikt7b+;2P+w`aX^6ilTzo&^hL>V=us*{oQZ@1}XaY+J0LHRjsB$Zyvr zH6mCesnIWm(rP6iWYt%c)NoP7?m;ui>5TWCaP^atr>4v@DPube__lC*)`d)$Rd8*T zl+CH09-~Pz_GFV%C;u^CvS+3-se>|j@5U^T)j@V-GSER5&;d=E@n)pRAvsecStXI9 zR`6SyLBk}sLQ)f1KofyqXUw)rVxuNX`L~!R0y!NOm?la|_)Pc=-EjE}o{R`y*XZt) zG-o^D@iLrkpS41qd7EhjCV`%VsFRLhwgMy6BkgIaP6y%JE6{Ia9UfwI;oJZ@%?igE zxcSv(Hroj(uD$lOcxKpjpGByoE9kix)Q&5rf@cIwr8$qA#eK~*Y=d)-}P9*Uq18V zY{y*v&H9C+or|8GDF1gQs$gJ=MiAgkT;MATm5%fTsiLlt8pwT2YM>)%jYm9X8K8uq z)ha@zBB`^zF6-O*HFW)AZJ=&X!<31<;}*P=NY!^)DsUmjsz42l=Y`ZW*kH2uEX%ytM| zT7z{p2>uOQvXz4C0(&933zF^*&}Dc_<_8zV&>+1CApZeB1^3c8`7FD7wss-AVf^r~ zY}w1e`r*m&%(t$;a_yCm_{Ho)^TMIe8u#4lTxfiHo_~7$;KgGXj$M8YZfRzE0e(uI ze(maOOGVyTk$0(R>z$&lx1RWL_uuSZ7P2P#XAWO)zt$eh-uO#l6P#`L9OmYWwvG=Q zEa*g+%rFI49y|>)x3{-H!ipP!z?B~XD?URwU5P=#`jF|_PWq}wA_mJLdGe#n(6ANFJ*qG;gnj~8ffFL3rew?V-!jF6e$DCu4Oxk z{24dRv9}aP!&T`YG$&PGXHJm$e_|fy@Fm6TK!Mjm-+)Ay@o!=dnftMf%=jN3{_I4c zKZ0n@BZs_o{0k2(Li7?qeSwgF0nu;pb;Uhk+P=v?WZbt;&jBwtj~|ZPvd6!(-1O8( z`3p^L^FrGMf5kEB`2OygP&M1|>#xeVi^8T)c{>PQcitb;!#fSY?n2S;6qJImAILi3 zh8J!~eD`Y83WY7>@Pn{vbq?286$MKVU!gw2)v>XE>4~q7u@8?P>%zF{7jN!c+b>+-X6z|Bo2m65f$QAW^k#0gmOfqmG8trR z9|e~`-bL&Z>34xB@a)0CPnPH(!^f!S^vUPkLD`4+P)|FMEbUr=bx% zIVVaBL`+KlYjz%pMMut(qdev)UvN~8A3#I*QNiiF_}YcnmTV<4Tgj5G=8mlPv+q2+RJ$WqyJM+#R}B7(cEQsRSG=%l!u%)Bc$VkN=}V`teJk#CU)ghM zPrRUf`jxA%Oti(_1@rFe8yjzS{_Ld>URv6IIJW)p?ZU;4&&Mn4r_4Wa-m7ewGJoG0 zud2U({@QscamBN8uAG`YHB)~lON_ecm2D!tUDhY`5!(c0Hc9#`R$cnzlj5X|r=^*tG)PZ;nTgVWU4R-h zy#3?b>7PQ4*UVO4JEt?O#+`&hWM+Uur-{y9-@|4coq9-)#+})8-2;PgK+u0X5)2&~tS>g3B_yQ@8nXdDW@aS&W zvXc*Wec+6P_u~|8EQ;qktz>PD4_-pzvu{L)Cw8sKsMlSC@b0P`T#s;@<;2=7qc#lp zUJ6B%O!F9J$*rldYdPH}N5?35&-DrO=}WIrJXEAfgxv4VA8y+X`MbOsx7itd_ZM*()~Wj4~A*cgp-X5z3N%ob>!^B!KI>K6g~=uZF` z*I9`}3|=>m`xV*t39)}d+@BD~C&Y7?Y`9Cx?~<~+r1&l=`jj~Tja0M3rn{u^E~&hW zpYUIEm(;WJnuOKES!Z5M5J=|u6-*NKwR#aGSOiI;ojbyDr8Augg6Ukop5Ch0(~n-b z-8%ox&f7aA@(Pge=& znUN9%lG$@N`FGB*U^ek&rsh^|M*_s$j%0KE%q@iGYJxyAC)_M}&%J`#L@RMOPMn=O zH*2~2omh6mLbi9@3655iW2$wLD^8efTobl}WR8bhHm(U#may{A^AQZ_ElZfPxWgP0 zhw1Fd{FeQ(hNthdFN81G0X`Sg4T?G6?7;+q1g;eGKghn1*(5CF5<9Fg%q|>+=jM@H bFMPD^w)u9)M|)#?zZq*i0q@H>{lxy?cpw)T diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/stash.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/stash.cpython-312.pyc deleted file mode 100644 index fa9a70c30e38311c9c2e348409e259761814199f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4435 zcmb_gO>7&-6`uVgDeB*nV^>bBwWK1ZYg0|rps5-c5aPga9Sf)>2MAMxTI~+SwU@i{ z?9eh*B~V)fu?rNDfdH~^F3^JwU)-C|z4XwF()5rLHBg|v^i(D?(88yFZV>qs>lK%e?NJ z%*$|-XTAZmM@G{&tJ-?dmVTr+b=|ezT;D&alGEzObXdd7be&kz`;70>JAIaiT=*`D zbG0S@o+BVymqI@Z>(;Dv;&MHsUgvqOuFci8Gj1|`QZ{{MTf?YtFwP2^#|pZq6%0== zm^CA33c_>cPxJGwVdm#;KenCFjux(PSK8H>d$t3OeU;a289|tG11FBBk}mW4Y}Upz zZSNT)jw9E1B>FG=vTVyTwTT#%c2<1M08GPZkFYV*R&9*N&+5xWMMBOGGFU4RB zy4Ip9*cJpd@}iH`@7O8JW#28^Wwlq@W1X~1k+AsFbfMeGOB zv9&&G(k3599*^@gDCeh=jh4@Y_#QvC5Jc|PsVO^QUeZPzQ4wv*R{PmLZO7nlG1<#` z)s$GCD`B=|JJ8HaL3Pm&?PVvF3bVV?!;=0Hh-%AeO)r?}$iEd7jtie-f*x zeT=16=C~u(UT@A9@asItea&#j?dhbmjFwKRo~>k&jHWzLaZ{kN6h%ylxLeMA0M+H= zxt(SUQ55X9BOMtk%ee?R5(IvT^{Y4%8TV^D{GLi_D%Dl0u>@-+h(Q#CYe{ZuFVqKW zeVT4xhTmg~!eiV1Qr<|cT3(acoT&1)tAb1615`D~|Kjl+d;>Y8?e;?}lrtq9tFkJ~RAl)|7<>Ah=M)wE;WcFbzvhZ^!ZEeuj?J%zBVBAjts#~hLh zqvO@U-_`*X8_Z{`tOzN2YB+0W#358LkQwu!6jNVY97IVcg&+E|SX}8-@=-rf$>V=EaD-;C;7M) z(RPx$==d>G^!)sJUVBG~NYDw8TnG?4@=zSUDv`4#5-oc3ZJq!R@OvL9QQlc zn0!!ZeH+3C>jKXb9A?=#lh7s41QWPUuIjG-KAUCB?1u3^Th@Tk%)SVnq+FcPnhq|S zb$?je+pGx>ZHyL_4?7w2P57~sF$NG==}MRa@gf~^_-1+`y&&&V* zOaGy-m`19RU(PfPNYCRQSpM8hvyZzE8lP$hjr~EHg4KToB}A(lucx#Ch>5ybw7QJE6*Aie|T! zfdsK_O@YkwCoVLm(`y}NwvaEOTlMA;m+#Ua{=jh&) zvpZUC|9G!s>tM?qX>tO$Hd=H=2P6tw_`FK$dtJpfA0G+Q@k3ncR}Qq&p%z| zBV)(77y7s#s2i3#fboTp)9XgSLzUXZ5scG$MBzgPZ3v~e6^g2cWR^tncSP~sjnj8d zf8Kv=GjmKuk<$fb=$YJ*=*L^o;s`PqbV!OJDqf+2z6F!SdW@tADrmzC`T`LrsG!&d zvA%B7(JUza)eS$C;&p1F&lxqRI-S%#Ull5l-=mSfbtdqw^RC7QkFK5DGBxYXMoPEF z@7{Qz-TP^SL45q0dOaE5qFN(kS>I~4LVR#-i{aJiOIb(OZ`{}JpcBLgKUS~DZ#)@% zGW}%uw?Eh-ZDSy99l2Y+f9>AY27~x`TD_he+oD?IfMtzt4?X%o($J%gKHZwQpLsC& z>uz#n;;~7NOf)jOHFkIC8RRh)<4mrnp29T`UnGKvksM5Pjtcr;gh*3C(ABYS_0~qzY@gRP4g+dFHL;V*5k!CR&L^@hl4DUrl?;UV6$7so%&`hTq{viuDYw|7bHi wx|aSj#jKuNZ~x-mHSN!4cOpDXWwfDN%j?%}uRLQA|Mk)(O&j})QK^FX583=@*#H0l diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/stepwise.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/stepwise.cpython-312.pyc deleted file mode 100644 index 507e7030b27d422523f8f59022f9c9dd3071332b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5736 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/terminal.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/terminal.cpython-312.pyc deleted file mode 100644 index 05a10b349787b8e13fdf9db7d8cd6200d700c53f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70181 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

>Bh=;-GbZ^OoE>A5Fw)zP*$GVkG0f zR@9_%x;Fcr(Z_Yl31JJ)*=piY^Lj$H)%=ov-tq(ePx6m1z{~2ql@{G&{P#hL84Gl5 zG;@dee~s737zq`bvB`!XN&O3YW<*c$IDUu%CUtEac>Vp}M7U7xo_|7>ZY^GE>K#w=ELLu!*;2@QyppPa25{0ozU{HTRk5#j%>`QDp z+W^vWd*6P2;dQ~?B3fGR!@N%exxD8Bcil~bWe;{7C4X1_Nwv_jXUVcBUDNoZ>RZ*Kr8;bin4+d%7ga{T{jo8A>c@^$ zQE%9EA69~TW3BPCDNkqE0>Oc^`0XPLN1{!49W^)^6ovB&m|(1o9fD7qmG14yo<*O~ zbqG_2#~m?Hx_90G11tse~+7 z&jU2Z_+k_8=ZHTgWrCu=GaZ8hw+m@ZV#$wDH#6C#SuvNHGye;r?QIl<9G9uzuA%4} zBg#w#K*3oWB7-Oj)vVbrcsfLL2L?tY7=Df1`T+-7`1a0)ol#rtaLV3}b-`W;3zkJc zutn;lp6jiGy+<(iB#d&*J|YQ3)j##4{4J8QXe?0afI_9P6o5@v{vFD#^M;&zHRxcB zT1r}cI^|AmBaF~jk)IlrRj^sz_~dxI^?y0$9*WcbpmIH^oI5sG`x^AxGwl#lzYNnU zBV>l_>Lxi2$A>}?w_b&(4kHzsGs|?p={K~}pi>y1dx-jj$Qs)|Y8X$H%I~79zo4wo zakbtm#lNCl3Z|(asIRb#D=Wt+E`xzW$U7DsASdIByL;K)C%XHfQ*`&G-0H^Cd(1^_Z%CfA`+Yw!*z->&Y7Jt;6g%c`ij04 z8^GsrLCSQ+Y6K3g1Pk5+s__F1#hh+ZYb&0|YpULdK2}#78sMxZZ2G`?nm(Wnvw7~M zvZ)~)kb-Jps1=4q8V#JEy)a7fhtVKyUw|!|nqn{-*(;cWl9KT<3S-y)o1J(A>`%I6 zJT{2oyXb&9LkKFdVmr7oo4 zD)rP}lq8CAMT*~=PZ#^6b&;y*sI1@pwX+0{C`IRnj}7sIKXxoRd&33UBIjbYP%57k zXadzRg{G1Vv57bGJ~nkmcAnsOfw6R8M#=yW+$YWcr4k>bak=JT9J+IZ6 zN0~w!ZX>8ZHsrp;5H=WZ7*-*GYshFa*nS|bMgz34Z)V5!HeV(rjf~vKRsaqzm2ERa z+{w29c=hruU~n{eNnoRlUrO4cpx%Pfh2{y)CKHPnCcdBS3oOaubmhF`Q?na+mvNxwoD&8N6+1@)2H{C)> zI}TvDOTx|-nBjc=uV05VP2w3E3Bmbs?~=Pyv~=QB?~OOEzkxYRAMOl~=W08%WN(pc zv!^QCgvxfIWOMicX%>88CvfvFZ{*5dXMjvN$PZyFNz0${L-cabQm{bu_wVU_{uu@D zQW{(Q?1~;46Ld&+7H?%x#p&tE5Kjb^F_Tbja^fuG!!jmdz0ujSCXnWD`GXUu%ri9? zZLDOioRhAYGLz{JX{5?(O{N3%&`;WMW{jh7BgFp;v@26MqSykb^Q^RJ@c)B~5zop@ zhTw=$wg5T$m9=`sYtq_T2B{}Ab~R&Sny158Z~&FPePX)()pPQukhYu|Up9vjojj=r z+h=FsxR~~y8CN#*-1G%}4Q2|Qzl$7M#mTg`Oz9Y)(*9iOsqu-I+Tq0%V>?7&t%mZ| zcc8<#Az3$CM;Y$yjoB|=k5s;4O_oeaAzAC#MET8>UnF*Tm)s~jIVa;IB3F??tHXVWZUg|n=3C@5{K)E7g-C>ap1 zI7=cIL}$Ik;Rn97$rf(F*|ni)bF3TQ|2zVmaN0JBQ16+kz#hF07VDkGWN_70^3ck8 z3a+^!_pCq%l}aX?zBe)i1(3cs289!%I0tut-SP9c-OvZ=d!=%_zBq1-58bvx>xB9$ hP5S28x1h7qH^-sULL?Ozqesdm9ioKcD~i}4{{Lfi2f6?N diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/threadexception.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/threadexception.cpython-312.pyc deleted file mode 100644 index 6d82f2679b540b1ed2f707c7ed3423854a80e44c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4521 zcmcH+U2hc0v1fMn+iS1Qp22*1f+2Vz>>h-~7a&}~F(lz|E}RLlif%HVX|uDQo!#`z zV%9OpK`3V;P8=^WD2c)&7KtuD;Z8ih7xU>Z zq8TVkIZ42^fEg@?av_dOfQNHojt2pcZCcNiE7$ zr^ImKhh@hoS*i)RggjbH1B65xgZg!Lz0Yt$3$37BrU zWI6P*BNtUmy-1nNsew%P88Ty>RrdMhiVXxY8Cr|TTg{hBlbIM_dJB|*`@n*7Ni{3f zW0O@`tJqGdC?hQ#XUQ5!=1^E*bb>N!X;jv#nn^SASf28|+7@KPmd9CXl3K8P*)%l6 zF{|=a9>z`{nA@&IFB^{CCY2}nx*{=ZR~Vz3BOCCW;Lw(B>c~z>RxK`6X}o|0Q+Y$n zbBQQkcftUJ8`D(J$RlvBr^zqM1lLoUjpFjXKp~9kvbSYJ)U!4iM{TfnKMKI%xiq)Q&-7? zFq#%!2`}MBm6E9|=(h{-qHStU*hncqKbOsyiZoj&sik7cqSHneo|RoO9hkgCtxH+c z7|)igPQGM)J+uEn);1ivuMCj{ENo{LSfRF)^)%=!FjKC&5k)a9!%>v!9qU>;)1=u6 zve-!gvt;?u(K+d6botG(IqBWbI$lj{#A(EduYw*J%##^mwF;_)C15%&uukkm)(suU zZRC?>hFortYht?pC4!-<27%U&0syH}n?Rf>OTlPui{xNso;U!#R#+``V-7_1XJ<$u z)TC|oEq=wf`eDnBwc-}*f*n{d0#u@BTJNe+MWGNT8Q5XqCD&~d?L~GO zz%2Q+Z^u&KzFOZtFh}Qd|G@93?@r&0K8|c%?%FUH=bCUM7$P0W4{jJS2$pV$PmOC5 zY|?DL&3*ziU^7x^uB_^3#UGGsV9mAG9A9lM1-|I~Gvud%ru8LHADduvhKa><2FY`V zEjWRRooxePqnH>UJZ*u~V#xh(PV3RUiu`E+vt*@%BvZGp-nhEhm99n7sI9AauX@_* z+r|~xk-YJJt~BsUsDvOdOI)t$O}eo8)H@B*Jj0N}`T;BuE+SV3 zKam6UF8jv-u9K%?PcTv+6oY4ldPE5J)kA?`Y9$s8_WreJ^PPkD616RvT2FQ*2s0}o z0(1Ln-GeJ(97afY-<@r><^lQE4D}pZ02)}`n z^>=|Q;*6+E1-waHbI=)hD|9rmR=+S)pl7#Z8z19S{%4;tE@hTwWd zbYAgh2`OO6X=@I?INl2AbZu=$Z0^%^O zx*ggiKn@s!DK`T0PZ;b=xd1x^C$x*dp-p@Z{s6M?0O6027`=&o8^D*K&o#x_*d~qx ze=T%)*X%e5ff=VIQo4ungpL&o%K~tNSa{exdBO9pmfj~+9LVBN&El0$Ds{37~~wB+6nVkpfBCwYN`<5=>OAwewCG({OS)KKT@Zk#FLMZ8WI5UKH5SZ%9~aRHw^Q(3uNc5L*bR zm^CGg0yA|QZw*m%+4&iT|J?E-yn0!4ozql-KG$&XnUeDwK;ZmDzV?Bq0~dM_CQ)zI zr!-S3rETK5?((o8N^j5xm}onR3)oWpT`^TD$(JJjs-$U33&|Omv$zx&F?cJKJQ|HZ z#zt8Fp=RkNn{pG=&UM@kI;t1j-Ot@jU-S!T55EDKHxO=pjPaefgM<552p_D`>owZ{ M6TZLd>pdtx0{D%sp#T5? diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/tmpdir.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/tmpdir.cpython-312.pyc deleted file mode 100644 index d1c2b16dea93bdf91bd6afffe8fe12e0a5ba05c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9330 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/unittest.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/unittest.cpython-312.pyc deleted file mode 100644 index 0ca2b40353938f72ec399988b9c62c28eb36150c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18003 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 MXM_hFGKQi57ZUeCtN;K2 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/unraisableexception.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/unraisableexception.cpython-312.pyc deleted file mode 100644 index 42596f05097df51ad08dc49b409b460f6ea4ceb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4551 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/__pycache__/warnings.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/__pycache__/warnings.cpython-312.pyc deleted file mode 100644 index 8476bd1a0c397d767c25673c814708579bee86d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6641 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 R2W8njP%{VJW`Q#I@_&6M9W(#{ diff --git a/venv/lib/python3.12/site-packages/_pytest/_argcomplete.py b/venv/lib/python3.12/site-packages/_pytest/_argcomplete.py deleted file mode 100644 index 120f09f..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/_argcomplete.py +++ /dev/null @@ -1,116 +0,0 @@ -"""Allow bash-completion for argparse with argcomplete if installed. - -Needs argcomplete>=0.5.6 for python 3.2/3.3 (older versions fail -to find the magic string, so _ARGCOMPLETE env. var is never set, and -this does not need special code). - -Function try_argcomplete(parser) should be called directly before -the call to ArgumentParser.parse_args(). - -The filescompleter is what you normally would use on the positional -arguments specification, in order to get "dirname/" after "dirn" -instead of the default "dirname ": - - optparser.add_argument(Config._file_or_dir, nargs='*').completer=filescompleter - -Other, application specific, completers should go in the file -doing the add_argument calls as they need to be specified as .completer -attributes as well. (If argcomplete is not installed, the function the -attribute points to will not be used). - -SPEEDUP -======= - -The generic argcomplete script for bash-completion -(/etc/bash_completion.d/python-argcomplete.sh) -uses a python program to determine startup script generated by pip. -You can speed up completion somewhat by changing this script to include - # PYTHON_ARGCOMPLETE_OK -so the python-argcomplete-check-easy-install-script does not -need to be called to find the entry point of the code and see if that is -marked with PYTHON_ARGCOMPLETE_OK. - -INSTALL/DEBUGGING -================= - -To include this support in another application that has setup.py generated -scripts: - -- Add the line: - # PYTHON_ARGCOMPLETE_OK - near the top of the main python entry point. - -- Include in the file calling parse_args(): - from _argcomplete import try_argcomplete, filescompleter - Call try_argcomplete just before parse_args(), and optionally add - filescompleter to the positional arguments' add_argument(). - -If things do not work right away: - -- Switch on argcomplete debugging with (also helpful when doing custom - completers): - export _ARC_DEBUG=1 - -- Run: - python-argcomplete-check-easy-install-script $(which appname) - echo $? - will echo 0 if the magic line has been found, 1 if not. - -- Sometimes it helps to find early on errors using: - _ARGCOMPLETE=1 _ARC_DEBUG=1 appname - which should throw a KeyError: 'COMPLINE' (which is properly set by the - global argcomplete script). -""" -import argparse -import os -import sys -from glob import glob -from typing import Any -from typing import List -from typing import Optional - - -class FastFilesCompleter: - """Fast file completer class.""" - - def __init__(self, directories: bool = True) -> None: - self.directories = directories - - def __call__(self, prefix: str, **kwargs: Any) -> List[str]: - # Only called on non option completions. - if os.path.sep in prefix[1:]: - prefix_dir = len(os.path.dirname(prefix) + os.path.sep) - else: - prefix_dir = 0 - completion = [] - globbed = [] - if "*" not in prefix and "?" not in prefix: - # We are on unix, otherwise no bash. - if not prefix or prefix[-1] == os.path.sep: - globbed.extend(glob(prefix + ".*")) - prefix += "*" - globbed.extend(glob(prefix)) - for x in sorted(globbed): - if os.path.isdir(x): - x += "/" - # Append stripping the prefix (like bash, not like compgen). - completion.append(x[prefix_dir:]) - return completion - - -if os.environ.get("_ARGCOMPLETE"): - try: - import argcomplete.completers - except ImportError: - sys.exit(-1) - filescompleter: Optional[FastFilesCompleter] = FastFilesCompleter() - - def try_argcomplete(parser: argparse.ArgumentParser) -> None: - argcomplete.autocomplete(parser, always_complete_options=False) - -else: - - def try_argcomplete(parser: argparse.ArgumentParser) -> None: - pass - - filescompleter = None diff --git a/venv/lib/python3.12/site-packages/_pytest/_code/__init__.py b/venv/lib/python3.12/site-packages/_pytest/_code/__init__.py deleted file mode 100644 index 511d0dd..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/_code/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Python inspection/code generation API.""" -from .code import Code -from .code import ExceptionInfo -from .code import filter_traceback -from .code import Frame -from .code import getfslineno -from .code import Traceback -from .code import TracebackEntry -from .source import getrawcode -from .source import Source - -__all__ = [ - "Code", - "ExceptionInfo", - "filter_traceback", - "Frame", - "getfslineno", - "getrawcode", - "Traceback", - "TracebackEntry", - "Source", -] diff --git a/venv/lib/python3.12/site-packages/_pytest/_code/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/_code/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 1e1a6c0feecce7193543c884a1997baad23caa17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/_code/__pycache__/source.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/_code/__pycache__/source.cpython-312.pyc deleted file mode 100644 index 521b3f28bbe9e0510cf5deda55f8ff1b4e6d4b02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11413 zcmcIqdu$uWnV;n@-=rvs5+%{LM9H!(+IrZQ9mnz`abzj69Xsd9P7^f=OLJEeWr|dH zSCOSssOlOh)wng?G-nF&ooO@&%V>)#hXZQhdWZCi9`4Y8$VjP}tqS;X{p0%2fsPC` z^&N2ceY4ypCDTdK!wtxp*?I4L-~7JE?5~_o8-ehxms>_0TL}4ge9%HgA+z?^3?VlN zPk1Im2Gx`qWazVD&_GjmkfkX%$kEg|XoS=dF^!oA%?$QoBbG7ipq1u1$lC^OG;f5w zeb7$xCdfMm9W-x-ymQb=^A^Zg3|7#*74oh@7efr>dBWSS5Z?YngSyheO5Pz<2o9mL z0SbhwAp@pE2Htsv8?5HNe1+iVT|y1C;zoBC-mWAWGVzsHjDsG&O0Wub*cV#b)!Y!r zSHmdvyj!T^YXma7x1?hsOJ}cw`K#18(ap`X`Etc2f0dwYaRz7AGV4=u}%Q<%A; ze63IgZ^qKGZF~c)cheN(-~4-A!x=xLI4*=GAtVRH@bHKX&z2LiAOFb&b4{IFd41pjw04FfO1s

  • lN;Yg#ia0w8jbj3Dnq1YoJGk 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/_code/code.py b/venv/lib/python3.12/site-packages/_pytest/_code/code.py deleted file mode 100644 index 97985de..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/_code/code.py +++ /dev/null @@ -1,1292 +0,0 @@ -import ast -import inspect -import os -import re -import sys -import traceback -from inspect import CO_VARARGS -from inspect import CO_VARKEYWORDS -from io import StringIO -from pathlib import Path -from traceback import format_exception_only -from types import CodeType -from types import FrameType -from types import TracebackType -from typing import Any -from typing import Callable -from typing import ClassVar -from typing import Dict -from typing import Generic -from typing import Iterable -from typing import List -from typing import Mapping -from typing import Optional -from typing import overload -from typing import Pattern -from typing import Sequence -from typing import Set -from typing import Tuple -from typing import Type -from typing import TYPE_CHECKING -from typing import TypeVar -from typing import Union -from weakref import ref - -import attr -import pluggy - -import _pytest -from _pytest._code.source import findsource -from _pytest._code.source import getrawcode -from _pytest._code.source import getstatementrange_ast -from _pytest._code.source import Source -from _pytest._io import TerminalWriter -from _pytest._io.saferepr import safeformat -from _pytest._io.saferepr import saferepr -from _pytest.compat import final -from _pytest.compat import get_real_func -from _pytest.deprecated import check_ispytest -from _pytest.pathlib import absolutepath -from _pytest.pathlib import bestrelpath - -if TYPE_CHECKING: - from typing_extensions import Literal - from typing_extensions import SupportsIndex - from weakref import ReferenceType - - _TracebackStyle = Literal["long", "short", "line", "no", "native", "value", "auto"] - -if sys.version_info[:2] < (3, 11): - from exceptiongroup import BaseExceptionGroup - - -class Code: - """Wrapper around Python code objects.""" - - __slots__ = ("raw",) - - def __init__(self, obj: CodeType) -> None: - self.raw = obj - - @classmethod - def from_function(cls, obj: object) -> "Code": - return cls(getrawcode(obj)) - - def __eq__(self, other): - return self.raw == other.raw - - # Ignore type because of https://github.com/python/mypy/issues/4266. - __hash__ = None # type: ignore - - @property - def firstlineno(self) -> int: - return self.raw.co_firstlineno - 1 - - @property - def name(self) -> str: - return self.raw.co_name - - @property - def path(self) -> Union[Path, str]: - """Return a path object pointing to source code, or an ``str`` in - case of ``OSError`` / non-existing file.""" - if not self.raw.co_filename: - return "" - try: - p = absolutepath(self.raw.co_filename) - # maybe don't try this checking - if not p.exists(): - raise OSError("path check failed.") - return p - except OSError: - # XXX maybe try harder like the weird logic - # in the standard lib [linecache.updatecache] does? - return self.raw.co_filename - - @property - def fullsource(self) -> Optional["Source"]: - """Return a _pytest._code.Source object for the full source file of the code.""" - full, _ = findsource(self.raw) - return full - - def source(self) -> "Source": - """Return a _pytest._code.Source object for the code object's source only.""" - # return source only for that part of code - return Source(self.raw) - - def getargs(self, var: bool = False) -> Tuple[str, ...]: - """Return a tuple with the argument names for the code object. - - If 'var' is set True also return the names of the variable and - keyword arguments when present. - """ - # Handy shortcut for getting args. - raw = self.raw - argcount = raw.co_argcount - if var: - argcount += raw.co_flags & CO_VARARGS - argcount += raw.co_flags & CO_VARKEYWORDS - return raw.co_varnames[:argcount] - - -class Frame: - """Wrapper around a Python frame holding f_locals and f_globals - in which expressions can be evaluated.""" - - __slots__ = ("raw",) - - def __init__(self, frame: FrameType) -> None: - self.raw = frame - - @property - def lineno(self) -> int: - return self.raw.f_lineno - 1 - - @property - def f_globals(self) -> Dict[str, Any]: - return self.raw.f_globals - - @property - def f_locals(self) -> Dict[str, Any]: - return self.raw.f_locals - - @property - def code(self) -> Code: - return Code(self.raw.f_code) - - @property - def statement(self) -> "Source": - """Statement this frame is at.""" - if self.code.fullsource is None: - return Source("") - return self.code.fullsource.getstatement(self.lineno) - - def eval(self, code, **vars): - """Evaluate 'code' in the frame. - - 'vars' are optional additional local variables. - - Returns the result of the evaluation. - """ - f_locals = self.f_locals.copy() - f_locals.update(vars) - return eval(code, self.f_globals, f_locals) - - def repr(self, object: object) -> str: - """Return a 'safe' (non-recursive, one-line) string repr for 'object'.""" - return saferepr(object) - - def getargs(self, var: bool = False): - """Return a list of tuples (name, value) for all arguments. - - If 'var' is set True, also include the variable and keyword arguments - when present. - """ - retval = [] - for arg in self.code.getargs(var): - try: - retval.append((arg, self.f_locals[arg])) - except KeyError: - pass # this can occur when using Psyco - return retval - - -class TracebackEntry: - """A single entry in a Traceback.""" - - __slots__ = ("_rawentry", "_excinfo", "_repr_style") - - def __init__( - self, - rawentry: TracebackType, - excinfo: Optional["ReferenceType[ExceptionInfo[BaseException]]"] = None, - ) -> None: - self._rawentry = rawentry - self._excinfo = excinfo - self._repr_style: Optional['Literal["short", "long"]'] = None - - @property - def lineno(self) -> int: - return self._rawentry.tb_lineno - 1 - - def set_repr_style(self, mode: "Literal['short', 'long']") -> None: - assert mode in ("short", "long") - self._repr_style = mode - - @property - def frame(self) -> Frame: - return Frame(self._rawentry.tb_frame) - - @property - def relline(self) -> int: - return self.lineno - self.frame.code.firstlineno - - def __repr__(self) -> str: - return "" % (self.frame.code.path, self.lineno + 1) - - @property - def statement(self) -> "Source": - """_pytest._code.Source object for the current statement.""" - source = self.frame.code.fullsource - assert source is not None - return source.getstatement(self.lineno) - - @property - def path(self) -> Union[Path, str]: - """Path to the source code.""" - return self.frame.code.path - - @property - def locals(self) -> Dict[str, Any]: - """Locals of underlying frame.""" - return self.frame.f_locals - - def getfirstlinesource(self) -> int: - return self.frame.code.firstlineno - - def getsource( - self, astcache: Optional[Dict[Union[str, Path], ast.AST]] = None - ) -> Optional["Source"]: - """Return failing source code.""" - # we use the passed in astcache to not reparse asttrees - # within exception info printing - source = self.frame.code.fullsource - if source is None: - return None - key = astnode = None - if astcache is not None: - key = self.frame.code.path - if key is not None: - astnode = astcache.get(key, None) - start = self.getfirstlinesource() - try: - astnode, _, end = getstatementrange_ast( - self.lineno, source, astnode=astnode - ) - except SyntaxError: - end = self.lineno + 1 - else: - if key is not None and astcache is not None: - astcache[key] = astnode - return source[start:end] - - source = property(getsource) - - def ishidden(self) -> bool: - """Return True if the current frame has a var __tracebackhide__ - resolving to True. - - If __tracebackhide__ is a callable, it gets called with the - ExceptionInfo instance and can decide whether to hide the traceback. - - Mostly for internal use. - """ - tbh: Union[ - bool, Callable[[Optional[ExceptionInfo[BaseException]]], bool] - ] = False - for maybe_ns_dct in (self.frame.f_locals, self.frame.f_globals): - # in normal cases, f_locals and f_globals are dictionaries - # however via `exec(...)` / `eval(...)` they can be other types - # (even incorrect types!). - # as such, we suppress all exceptions while accessing __tracebackhide__ - try: - tbh = maybe_ns_dct["__tracebackhide__"] - except Exception: - pass - else: - break - if tbh and callable(tbh): - return tbh(None if self._excinfo is None else self._excinfo()) - return tbh - - def __str__(self) -> str: - name = self.frame.code.name - try: - line = str(self.statement).lstrip() - except KeyboardInterrupt: - raise - except BaseException: - line = "???" - # This output does not quite match Python's repr for traceback entries, - # but changing it to do so would break certain plugins. See - # https://github.com/pytest-dev/pytest/pull/7535/ for details. - return " File %r:%d in %s\n %s\n" % ( - str(self.path), - self.lineno + 1, - name, - line, - ) - - @property - def name(self) -> str: - """co_name of underlying code.""" - return self.frame.code.raw.co_name - - -class Traceback(List[TracebackEntry]): - """Traceback objects encapsulate and offer higher level access to Traceback entries.""" - - def __init__( - self, - tb: Union[TracebackType, Iterable[TracebackEntry]], - excinfo: Optional["ReferenceType[ExceptionInfo[BaseException]]"] = None, - ) -> None: - """Initialize from given python traceback object and ExceptionInfo.""" - self._excinfo = excinfo - if isinstance(tb, TracebackType): - - def f(cur: TracebackType) -> Iterable[TracebackEntry]: - cur_: Optional[TracebackType] = cur - while cur_ is not None: - yield TracebackEntry(cur_, excinfo=excinfo) - cur_ = cur_.tb_next - - super().__init__(f(tb)) - else: - super().__init__(tb) - - def cut( - self, - path: Optional[Union["os.PathLike[str]", str]] = None, - lineno: Optional[int] = None, - firstlineno: Optional[int] = None, - excludepath: Optional["os.PathLike[str]"] = None, - ) -> "Traceback": - """Return a Traceback instance wrapping part of this Traceback. - - By providing any combination of path, lineno and firstlineno, the - first frame to start the to-be-returned traceback is determined. - - This allows cutting the first part of a Traceback instance e.g. - for formatting reasons (removing some uninteresting bits that deal - with handling of the exception/traceback). - """ - path_ = None if path is None else os.fspath(path) - excludepath_ = None if excludepath is None else os.fspath(excludepath) - for x in self: - code = x.frame.code - codepath = code.path - if path is not None and str(codepath) != path_: - continue - if ( - excludepath is not None - and isinstance(codepath, Path) - and excludepath_ in (str(p) for p in codepath.parents) # type: ignore[operator] - ): - continue - if lineno is not None and x.lineno != lineno: - continue - if firstlineno is not None and x.frame.code.firstlineno != firstlineno: - continue - return Traceback(x._rawentry, self._excinfo) - return self - - @overload - def __getitem__(self, key: "SupportsIndex") -> TracebackEntry: - ... - - @overload - def __getitem__(self, key: slice) -> "Traceback": - ... - - def __getitem__( - self, key: Union["SupportsIndex", slice] - ) -> Union[TracebackEntry, "Traceback"]: - if isinstance(key, slice): - return self.__class__(super().__getitem__(key)) - else: - return super().__getitem__(key) - - def filter( - self, fn: Callable[[TracebackEntry], bool] = lambda x: not x.ishidden() - ) -> "Traceback": - """Return a Traceback instance with certain items removed - - fn is a function that gets a single argument, a TracebackEntry - instance, and should return True when the item should be added - to the Traceback, False when not. - - By default this removes all the TracebackEntries which are hidden - (see ishidden() above). - """ - return Traceback(filter(fn, self), self._excinfo) - - def getcrashentry(self) -> TracebackEntry: - """Return last non-hidden traceback entry that lead to the exception of a traceback.""" - for i in range(-1, -len(self) - 1, -1): - entry = self[i] - if not entry.ishidden(): - return entry - return self[-1] - - def recursionindex(self) -> Optional[int]: - """Return the index of the frame/TracebackEntry where recursion originates if - appropriate, None if no recursion occurred.""" - cache: Dict[Tuple[Any, int, int], List[Dict[str, Any]]] = {} - for i, entry in enumerate(self): - # id for the code.raw is needed to work around - # the strange metaprogramming in the decorator lib from pypi - # which generates code objects that have hash/value equality - # XXX needs a test - key = entry.frame.code.path, id(entry.frame.code.raw), entry.lineno - # print "checking for recursion at", key - values = cache.setdefault(key, []) - if values: - f = entry.frame - loc = f.f_locals - for otherloc in values: - if otherloc == loc: - return i - values.append(entry.frame.f_locals) - return None - - -E = TypeVar("E", bound=BaseException, covariant=True) - - -@final -@attr.s(repr=False, init=False, auto_attribs=True) -class ExceptionInfo(Generic[E]): - """Wraps sys.exc_info() objects and offers help for navigating the traceback.""" - - _assert_start_repr: ClassVar = "AssertionError('assert " - - _excinfo: Optional[Tuple[Type["E"], "E", TracebackType]] - _striptext: str - _traceback: Optional[Traceback] - - def __init__( - self, - excinfo: Optional[Tuple[Type["E"], "E", TracebackType]], - striptext: str = "", - traceback: Optional[Traceback] = None, - *, - _ispytest: bool = False, - ) -> None: - check_ispytest(_ispytest) - self._excinfo = excinfo - self._striptext = striptext - self._traceback = traceback - - @classmethod - def from_exc_info( - cls, - exc_info: Tuple[Type[E], E, TracebackType], - exprinfo: Optional[str] = None, - ) -> "ExceptionInfo[E]": - """Return an ExceptionInfo for an existing exc_info tuple. - - .. warning:: - - Experimental API - - :param exprinfo: - A text string helping to determine if we should strip - ``AssertionError`` from the output. Defaults to the exception - message/``__str__()``. - """ - _striptext = "" - if exprinfo is None and isinstance(exc_info[1], AssertionError): - exprinfo = getattr(exc_info[1], "msg", None) - if exprinfo is None: - exprinfo = saferepr(exc_info[1]) - if exprinfo and exprinfo.startswith(cls._assert_start_repr): - _striptext = "AssertionError: " - - return cls(exc_info, _striptext, _ispytest=True) - - @classmethod - def from_current( - cls, exprinfo: Optional[str] = None - ) -> "ExceptionInfo[BaseException]": - """Return an ExceptionInfo matching the current traceback. - - .. warning:: - - Experimental API - - :param exprinfo: - A text string helping to determine if we should strip - ``AssertionError`` from the output. Defaults to the exception - message/``__str__()``. - """ - tup = sys.exc_info() - assert tup[0] is not None, "no current exception" - assert tup[1] is not None, "no current exception" - assert tup[2] is not None, "no current exception" - exc_info = (tup[0], tup[1], tup[2]) - return ExceptionInfo.from_exc_info(exc_info, exprinfo) - - @classmethod - def for_later(cls) -> "ExceptionInfo[E]": - """Return an unfilled ExceptionInfo.""" - return cls(None, _ispytest=True) - - def fill_unfilled(self, exc_info: Tuple[Type[E], E, TracebackType]) -> None: - """Fill an unfilled ExceptionInfo created with ``for_later()``.""" - assert self._excinfo is None, "ExceptionInfo was already filled" - self._excinfo = exc_info - - @property - def type(self) -> Type[E]: - """The exception class.""" - assert ( - self._excinfo is not None - ), ".type can only be used after the context manager exits" - return self._excinfo[0] - - @property - def value(self) -> E: - """The exception value.""" - assert ( - self._excinfo is not None - ), ".value can only be used after the context manager exits" - return self._excinfo[1] - - @property - def tb(self) -> TracebackType: - """The exception raw traceback.""" - assert ( - self._excinfo is not None - ), ".tb can only be used after the context manager exits" - return self._excinfo[2] - - @property - def typename(self) -> str: - """The type name of the exception.""" - assert ( - self._excinfo is not None - ), ".typename can only be used after the context manager exits" - return self.type.__name__ - - @property - def traceback(self) -> Traceback: - """The traceback.""" - if self._traceback is None: - self._traceback = Traceback(self.tb, excinfo=ref(self)) - return self._traceback - - @traceback.setter - def traceback(self, value: Traceback) -> None: - self._traceback = value - - def __repr__(self) -> str: - if self._excinfo is None: - return "" - return "<{} {} tblen={}>".format( - self.__class__.__name__, saferepr(self._excinfo[1]), len(self.traceback) - ) - - def exconly(self, tryshort: bool = False) -> str: - """Return the exception as a string. - - When 'tryshort' resolves to True, and the exception is an - AssertionError, only the actual exception part of the exception - representation is returned (so 'AssertionError: ' is removed from - the beginning). - """ - lines = format_exception_only(self.type, self.value) - text = "".join(lines) - text = text.rstrip() - if tryshort: - if text.startswith(self._striptext): - text = text[len(self._striptext) :] - return text - - def errisinstance( - self, exc: Union[Type[BaseException], Tuple[Type[BaseException], ...]] - ) -> bool: - """Return True if the exception is an instance of exc. - - Consider using ``isinstance(excinfo.value, exc)`` instead. - """ - return isinstance(self.value, exc) - - def _getreprcrash(self) -> "ReprFileLocation": - exconly = self.exconly(tryshort=True) - entry = self.traceback.getcrashentry() - path, lineno = entry.frame.code.raw.co_filename, entry.lineno - return ReprFileLocation(path, lineno + 1, exconly) - - def getrepr( - self, - showlocals: bool = False, - style: "_TracebackStyle" = "long", - abspath: bool = False, - tbfilter: bool = True, - funcargs: bool = False, - truncate_locals: bool = True, - chain: bool = True, - ) -> Union["ReprExceptionInfo", "ExceptionChainRepr"]: - """Return str()able representation of this exception info. - - :param bool showlocals: - Show locals per traceback entry. - Ignored if ``style=="native"``. - - :param str style: - long|short|no|native|value traceback style. - - :param bool abspath: - If paths should be changed to absolute or left unchanged. - - :param bool tbfilter: - Hide entries that contain a local variable ``__tracebackhide__==True``. - Ignored if ``style=="native"``. - - :param bool funcargs: - Show fixtures ("funcargs" for legacy purposes) per traceback entry. - - :param bool truncate_locals: - With ``showlocals==True``, make sure locals can be safely represented as strings. - - :param bool chain: - If chained exceptions in Python 3 should be shown. - - .. versionchanged:: 3.9 - - Added the ``chain`` parameter. - """ - if style == "native": - return ReprExceptionInfo( - ReprTracebackNative( - traceback.format_exception( - self.type, self.value, self.traceback[0]._rawentry - ) - ), - self._getreprcrash(), - ) - - fmt = FormattedExcinfo( - showlocals=showlocals, - style=style, - abspath=abspath, - tbfilter=tbfilter, - funcargs=funcargs, - truncate_locals=truncate_locals, - chain=chain, - ) - return fmt.repr_excinfo(self) - - def match(self, regexp: Union[str, Pattern[str]]) -> "Literal[True]": - """Check whether the regular expression `regexp` matches the string - representation of the exception using :func:`python:re.search`. - - If it matches `True` is returned, otherwise an `AssertionError` is raised. - """ - __tracebackhide__ = True - value = str(self.value) - msg = f"Regex pattern did not match.\n Regex: {regexp!r}\n Input: {value!r}" - if regexp == value: - msg += "\n Did you mean to `re.escape()` the regex?" - assert re.search(regexp, value), msg - # Return True to allow for "assert excinfo.match()". - return True - - -@attr.s(auto_attribs=True) -class FormattedExcinfo: - """Presenting information about failing Functions and Generators.""" - - # for traceback entries - flow_marker: ClassVar = ">" - fail_marker: ClassVar = "E" - - showlocals: bool = False - style: "_TracebackStyle" = "long" - abspath: bool = True - tbfilter: bool = True - funcargs: bool = False - truncate_locals: bool = True - chain: bool = True - astcache: Dict[Union[str, Path], ast.AST] = attr.ib( - factory=dict, init=False, repr=False - ) - - def _getindent(self, source: "Source") -> int: - # Figure out indent for the given source. - try: - s = str(source.getstatement(len(source) - 1)) - except KeyboardInterrupt: - raise - except BaseException: - try: - s = str(source[-1]) - except KeyboardInterrupt: - raise - except BaseException: - return 0 - return 4 + (len(s) - len(s.lstrip())) - - def _getentrysource(self, entry: TracebackEntry) -> Optional["Source"]: - source = entry.getsource(self.astcache) - if source is not None: - source = source.deindent() - return source - - def repr_args(self, entry: TracebackEntry) -> Optional["ReprFuncArgs"]: - if self.funcargs: - args = [] - for argname, argvalue in entry.frame.getargs(var=True): - args.append((argname, saferepr(argvalue))) - return ReprFuncArgs(args) - return None - - def get_source( - self, - source: Optional["Source"], - line_index: int = -1, - excinfo: Optional[ExceptionInfo[BaseException]] = None, - short: bool = False, - ) -> List[str]: - """Return formatted and marked up source lines.""" - lines = [] - if source is None or line_index >= len(source.lines): - source = Source("???") - line_index = 0 - if line_index < 0: - line_index += len(source) - space_prefix = " " - if short: - lines.append(space_prefix + source.lines[line_index].strip()) - else: - for line in source.lines[:line_index]: - lines.append(space_prefix + line) - lines.append(self.flow_marker + " " + source.lines[line_index]) - for line in source.lines[line_index + 1 :]: - lines.append(space_prefix + line) - if excinfo is not None: - indent = 4 if short else self._getindent(source) - lines.extend(self.get_exconly(excinfo, indent=indent, markall=True)) - return lines - - def get_exconly( - self, - excinfo: ExceptionInfo[BaseException], - indent: int = 4, - markall: bool = False, - ) -> List[str]: - lines = [] - indentstr = " " * indent - # Get the real exception information out. - exlines = excinfo.exconly(tryshort=True).split("\n") - failindent = self.fail_marker + indentstr[1:] - for line in exlines: - lines.append(failindent + line) - if not markall: - failindent = indentstr - return lines - - def repr_locals(self, locals: Mapping[str, object]) -> Optional["ReprLocals"]: - if self.showlocals: - lines = [] - keys = [loc for loc in locals if loc[0] != "@"] - keys.sort() - for name in keys: - value = locals[name] - if name == "__builtins__": - lines.append("__builtins__ = ") - else: - # This formatting could all be handled by the - # _repr() function, which is only reprlib.Repr in - # disguise, so is very configurable. - if self.truncate_locals: - str_repr = saferepr(value) - else: - str_repr = safeformat(value) - # if len(str_repr) < 70 or not isinstance(value, (list, tuple, dict)): - lines.append(f"{name:<10} = {str_repr}") - # else: - # self._line("%-10s =\\" % (name,)) - # # XXX - # pprint.pprint(value, stream=self.excinfowriter) - return ReprLocals(lines) - return None - - def repr_traceback_entry( - self, - entry: TracebackEntry, - excinfo: Optional[ExceptionInfo[BaseException]] = None, - ) -> "ReprEntry": - lines: List[str] = [] - style = entry._repr_style if entry._repr_style is not None else self.style - if style in ("short", "long"): - source = self._getentrysource(entry) - if source is None: - source = Source("???") - line_index = 0 - else: - line_index = entry.lineno - entry.getfirstlinesource() - short = style == "short" - reprargs = self.repr_args(entry) if not short else None - s = self.get_source(source, line_index, excinfo, short=short) - lines.extend(s) - if short: - message = "in %s" % (entry.name) - else: - message = excinfo and excinfo.typename or "" - entry_path = entry.path - path = self._makepath(entry_path) - reprfileloc = ReprFileLocation(path, entry.lineno + 1, message) - localsrepr = self.repr_locals(entry.locals) - return ReprEntry(lines, reprargs, localsrepr, reprfileloc, style) - elif style == "value": - if excinfo: - lines.extend(str(excinfo.value).split("\n")) - return ReprEntry(lines, None, None, None, style) - else: - if excinfo: - lines.extend(self.get_exconly(excinfo, indent=4)) - return ReprEntry(lines, None, None, None, style) - - def _makepath(self, path: Union[Path, str]) -> str: - if not self.abspath and isinstance(path, Path): - try: - np = bestrelpath(Path.cwd(), path) - except OSError: - return str(path) - if len(np) < len(str(path)): - return np - return str(path) - - def repr_traceback(self, excinfo: ExceptionInfo[BaseException]) -> "ReprTraceback": - traceback = excinfo.traceback - if self.tbfilter: - traceback = traceback.filter() - - if isinstance(excinfo.value, RecursionError): - traceback, extraline = self._truncate_recursive_traceback(traceback) - else: - extraline = None - - last = traceback[-1] - entries = [] - if self.style == "value": - reprentry = self.repr_traceback_entry(last, excinfo) - entries.append(reprentry) - return ReprTraceback(entries, None, style=self.style) - - for index, entry in enumerate(traceback): - einfo = (last == entry) and excinfo or None - reprentry = self.repr_traceback_entry(entry, einfo) - entries.append(reprentry) - return ReprTraceback(entries, extraline, style=self.style) - - def _truncate_recursive_traceback( - self, traceback: Traceback - ) -> Tuple[Traceback, Optional[str]]: - """Truncate the given recursive traceback trying to find the starting - point of the recursion. - - The detection is done by going through each traceback entry and - finding the point in which the locals of the frame are equal to the - locals of a previous frame (see ``recursionindex()``). - - Handle the situation where the recursion process might raise an - exception (for example comparing numpy arrays using equality raises a - TypeError), in which case we do our best to warn the user of the - error and show a limited traceback. - """ - try: - recursionindex = traceback.recursionindex() - except Exception as e: - max_frames = 10 - extraline: Optional[str] = ( - "!!! Recursion error detected, but an error occurred locating the origin of recursion.\n" - " The following exception happened when comparing locals in the stack frame:\n" - " {exc_type}: {exc_msg}\n" - " Displaying first and last {max_frames} stack frames out of {total}." - ).format( - exc_type=type(e).__name__, - exc_msg=str(e), - max_frames=max_frames, - total=len(traceback), - ) - # Type ignored because adding two instances of a List subtype - # currently incorrectly has type List instead of the subtype. - traceback = traceback[:max_frames] + traceback[-max_frames:] # type: ignore - else: - if recursionindex is not None: - extraline = "!!! Recursion detected (same locals & position)" - traceback = traceback[: recursionindex + 1] - else: - extraline = None - - return traceback, extraline - - def repr_excinfo( - self, excinfo: ExceptionInfo[BaseException] - ) -> "ExceptionChainRepr": - repr_chain: List[ - Tuple[ReprTraceback, Optional[ReprFileLocation], Optional[str]] - ] = [] - e: Optional[BaseException] = excinfo.value - excinfo_: Optional[ExceptionInfo[BaseException]] = excinfo - descr = None - seen: Set[int] = set() - while e is not None and id(e) not in seen: - seen.add(id(e)) - if excinfo_: - # Fall back to native traceback as a temporary workaround until - # full support for exception groups added to ExceptionInfo. - # See https://github.com/pytest-dev/pytest/issues/9159 - if isinstance(e, BaseExceptionGroup): - reprtraceback: Union[ - ReprTracebackNative, ReprTraceback - ] = ReprTracebackNative( - traceback.format_exception( - type(excinfo_.value), - excinfo_.value, - excinfo_.traceback[0]._rawentry, - ) - ) - else: - reprtraceback = self.repr_traceback(excinfo_) - reprcrash: Optional[ReprFileLocation] = ( - excinfo_._getreprcrash() if self.style != "value" else None - ) - else: - # Fallback to native repr if the exception doesn't have a traceback: - # ExceptionInfo objects require a full traceback to work. - reprtraceback = ReprTracebackNative( - traceback.format_exception(type(e), e, None) - ) - reprcrash = None - - repr_chain += [(reprtraceback, reprcrash, descr)] - if e.__cause__ is not None and self.chain: - e = e.__cause__ - excinfo_ = ( - ExceptionInfo.from_exc_info((type(e), e, e.__traceback__)) - if e.__traceback__ - else None - ) - descr = "The above exception was the direct cause of the following exception:" - elif ( - e.__context__ is not None and not e.__suppress_context__ and self.chain - ): - e = e.__context__ - excinfo_ = ( - ExceptionInfo.from_exc_info((type(e), e, e.__traceback__)) - if e.__traceback__ - else None - ) - descr = "During handling of the above exception, another exception occurred:" - else: - e = None - repr_chain.reverse() - return ExceptionChainRepr(repr_chain) - - -@attr.s(eq=False, auto_attribs=True) -class TerminalRepr: - def __str__(self) -> str: - # FYI this is called from pytest-xdist's serialization of exception - # information. - io = StringIO() - tw = TerminalWriter(file=io) - self.toterminal(tw) - return io.getvalue().strip() - - def __repr__(self) -> str: - return f"<{self.__class__} instance at {id(self):0x}>" - - def toterminal(self, tw: TerminalWriter) -> None: - raise NotImplementedError() - - -# This class is abstract -- only subclasses are instantiated. -@attr.s(eq=False) -class ExceptionRepr(TerminalRepr): - # Provided by subclasses. - reprcrash: Optional["ReprFileLocation"] - reprtraceback: "ReprTraceback" - - def __attrs_post_init__(self) -> None: - self.sections: List[Tuple[str, str, str]] = [] - - def addsection(self, name: str, content: str, sep: str = "-") -> None: - self.sections.append((name, content, sep)) - - def toterminal(self, tw: TerminalWriter) -> None: - for name, content, sep in self.sections: - tw.sep(sep, name) - tw.line(content) - - -@attr.s(eq=False, auto_attribs=True) -class ExceptionChainRepr(ExceptionRepr): - chain: Sequence[Tuple["ReprTraceback", Optional["ReprFileLocation"], Optional[str]]] - - def __attrs_post_init__(self) -> None: - super().__attrs_post_init__() - # reprcrash and reprtraceback of the outermost (the newest) exception - # in the chain. - self.reprtraceback = self.chain[-1][0] - self.reprcrash = self.chain[-1][1] - - def toterminal(self, tw: TerminalWriter) -> None: - for element in self.chain: - element[0].toterminal(tw) - if element[2] is not None: - tw.line("") - tw.line(element[2], yellow=True) - super().toterminal(tw) - - -@attr.s(eq=False, auto_attribs=True) -class ReprExceptionInfo(ExceptionRepr): - reprtraceback: "ReprTraceback" - reprcrash: "ReprFileLocation" - - def toterminal(self, tw: TerminalWriter) -> None: - self.reprtraceback.toterminal(tw) - super().toterminal(tw) - - -@attr.s(eq=False, auto_attribs=True) -class ReprTraceback(TerminalRepr): - reprentries: Sequence[Union["ReprEntry", "ReprEntryNative"]] - extraline: Optional[str] - style: "_TracebackStyle" - - entrysep: ClassVar = "_ " - - def toterminal(self, tw: TerminalWriter) -> None: - # The entries might have different styles. - for i, entry in enumerate(self.reprentries): - if entry.style == "long": - tw.line("") - entry.toterminal(tw) - if i < len(self.reprentries) - 1: - next_entry = self.reprentries[i + 1] - if ( - entry.style == "long" - or entry.style == "short" - and next_entry.style == "long" - ): - tw.sep(self.entrysep) - - if self.extraline: - tw.line(self.extraline) - - -class ReprTracebackNative(ReprTraceback): - def __init__(self, tblines: Sequence[str]) -> None: - self.style = "native" - self.reprentries = [ReprEntryNative(tblines)] - self.extraline = None - - -@attr.s(eq=False, auto_attribs=True) -class ReprEntryNative(TerminalRepr): - lines: Sequence[str] - - style: ClassVar["_TracebackStyle"] = "native" - - def toterminal(self, tw: TerminalWriter) -> None: - tw.write("".join(self.lines)) - - -@attr.s(eq=False, auto_attribs=True) -class ReprEntry(TerminalRepr): - lines: Sequence[str] - reprfuncargs: Optional["ReprFuncArgs"] - reprlocals: Optional["ReprLocals"] - reprfileloc: Optional["ReprFileLocation"] - style: "_TracebackStyle" - - def _write_entry_lines(self, tw: TerminalWriter) -> None: - """Write the source code portions of a list of traceback entries with syntax highlighting. - - Usually entries are lines like these: - - " x = 1" - "> assert x == 2" - "E assert 1 == 2" - - This function takes care of rendering the "source" portions of it (the lines without - the "E" prefix) using syntax highlighting, taking care to not highlighting the ">" - character, as doing so might break line continuations. - """ - - if not self.lines: - return - - # separate indents and source lines that are not failures: we want to - # highlight the code but not the indentation, which may contain markers - # such as "> assert 0" - fail_marker = f"{FormattedExcinfo.fail_marker} " - indent_size = len(fail_marker) - indents: List[str] = [] - source_lines: List[str] = [] - failure_lines: List[str] = [] - for index, line in enumerate(self.lines): - is_failure_line = line.startswith(fail_marker) - if is_failure_line: - # from this point on all lines are considered part of the failure - failure_lines.extend(self.lines[index:]) - break - else: - if self.style == "value": - source_lines.append(line) - else: - indents.append(line[:indent_size]) - source_lines.append(line[indent_size:]) - - tw._write_source(source_lines, indents) - - # failure lines are always completely red and bold - for line in failure_lines: - tw.line(line, bold=True, red=True) - - def toterminal(self, tw: TerminalWriter) -> None: - if self.style == "short": - assert self.reprfileloc is not None - self.reprfileloc.toterminal(tw) - self._write_entry_lines(tw) - if self.reprlocals: - self.reprlocals.toterminal(tw, indent=" " * 8) - return - - if self.reprfuncargs: - self.reprfuncargs.toterminal(tw) - - self._write_entry_lines(tw) - - if self.reprlocals: - tw.line("") - self.reprlocals.toterminal(tw) - if self.reprfileloc: - if self.lines: - tw.line("") - self.reprfileloc.toterminal(tw) - - def __str__(self) -> str: - return "{}\n{}\n{}".format( - "\n".join(self.lines), self.reprlocals, self.reprfileloc - ) - - -@attr.s(eq=False, auto_attribs=True) -class ReprFileLocation(TerminalRepr): - path: str = attr.ib(converter=str) - lineno: int - message: str - - def toterminal(self, tw: TerminalWriter) -> None: - # Filename and lineno output for each entry, using an output format - # that most editors understand. - msg = self.message - i = msg.find("\n") - if i != -1: - msg = msg[:i] - tw.write(self.path, bold=True, red=True) - tw.line(f":{self.lineno}: {msg}") - - -@attr.s(eq=False, auto_attribs=True) -class ReprLocals(TerminalRepr): - lines: Sequence[str] - - def toterminal(self, tw: TerminalWriter, indent="") -> None: - for line in self.lines: - tw.line(indent + line) - - -@attr.s(eq=False, auto_attribs=True) -class ReprFuncArgs(TerminalRepr): - args: Sequence[Tuple[str, object]] - - def toterminal(self, tw: TerminalWriter) -> None: - if self.args: - linesofar = "" - for name, value in self.args: - ns = f"{name} = {value}" - if len(ns) + len(linesofar) + 2 > tw.fullwidth: - if linesofar: - tw.line(linesofar) - linesofar = ns - else: - if linesofar: - linesofar += ", " + ns - else: - linesofar = ns - if linesofar: - tw.line(linesofar) - tw.line("") - - -def getfslineno(obj: object) -> Tuple[Union[str, Path], int]: - """Return source location (path, lineno) for the given object. - - If the source cannot be determined return ("", -1). - - The line number is 0-based. - """ - # xxx let decorators etc specify a sane ordering - # NOTE: this used to be done in _pytest.compat.getfslineno, initially added - # in 6ec13a2b9. It ("place_as") appears to be something very custom. - obj = get_real_func(obj) - if hasattr(obj, "place_as"): - obj = obj.place_as # type: ignore[attr-defined] - - try: - code = Code.from_function(obj) - except TypeError: - try: - fn = inspect.getsourcefile(obj) or inspect.getfile(obj) # type: ignore[arg-type] - except TypeError: - return "", -1 - - fspath = fn and absolutepath(fn) or "" - lineno = -1 - if fspath: - try: - _, lineno = findsource(obj) - except OSError: - pass - return fspath, lineno - - return code.path, code.firstlineno - - -# Relative paths that we use to filter traceback entries from appearing to the user; -# see filter_traceback. -# note: if we need to add more paths than what we have now we should probably use a list -# for better maintenance. - -_PLUGGY_DIR = Path(pluggy.__file__.rstrip("oc")) -# pluggy is either a package or a single module depending on the version -if _PLUGGY_DIR.name == "__init__.py": - _PLUGGY_DIR = _PLUGGY_DIR.parent -_PYTEST_DIR = Path(_pytest.__file__).parent - - -def filter_traceback(entry: TracebackEntry) -> bool: - """Return True if a TracebackEntry instance should be included in tracebacks. - - We hide traceback entries of: - - * dynamically generated code (no code to show up for it); - * internal traceback from pytest or its internal libraries, py and pluggy. - """ - # entry.path might sometimes return a str object when the entry - # points to dynamically generated code. - # See https://bitbucket.org/pytest-dev/py/issues/71. - raw_filename = entry.frame.code.raw.co_filename - is_generated = "<" in raw_filename and ">" in raw_filename - if is_generated: - return False - - # entry.path might point to a non-existing file, in which case it will - # also return a str object. See #1133. - p = Path(entry.path) - - parents = p.parents - if _PLUGGY_DIR in parents: - return False - if _PYTEST_DIR in parents: - return False - - return True diff --git a/venv/lib/python3.12/site-packages/_pytest/_code/source.py b/venv/lib/python3.12/site-packages/_pytest/_code/source.py deleted file mode 100644 index 208cfb8..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/_code/source.py +++ /dev/null @@ -1,217 +0,0 @@ -import ast -import inspect -import textwrap -import tokenize -import types -import warnings -from bisect import bisect_right -from typing import Iterable -from typing import Iterator -from typing import List -from typing import Optional -from typing import overload -from typing import Tuple -from typing import Union - - -class Source: - """An immutable object holding a source code fragment. - - When using Source(...), the source lines are deindented. - """ - - def __init__(self, obj: object = None) -> None: - if not obj: - self.lines: List[str] = [] - elif isinstance(obj, Source): - self.lines = obj.lines - elif isinstance(obj, (tuple, list)): - self.lines = deindent(x.rstrip("\n") for x in obj) - elif isinstance(obj, str): - self.lines = deindent(obj.split("\n")) - else: - try: - rawcode = getrawcode(obj) - src = inspect.getsource(rawcode) - except TypeError: - src = inspect.getsource(obj) # type: ignore[arg-type] - self.lines = deindent(src.split("\n")) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, Source): - return NotImplemented - return self.lines == other.lines - - # Ignore type because of https://github.com/python/mypy/issues/4266. - __hash__ = None # type: ignore - - @overload - def __getitem__(self, key: int) -> str: - ... - - @overload - def __getitem__(self, key: slice) -> "Source": - ... - - def __getitem__(self, key: Union[int, slice]) -> Union[str, "Source"]: - if isinstance(key, int): - return self.lines[key] - else: - if key.step not in (None, 1): - raise IndexError("cannot slice a Source with a step") - newsource = Source() - newsource.lines = self.lines[key.start : key.stop] - return newsource - - def __iter__(self) -> Iterator[str]: - return iter(self.lines) - - def __len__(self) -> int: - return len(self.lines) - - def strip(self) -> "Source": - """Return new Source object with trailing and leading blank lines removed.""" - start, end = 0, len(self) - while start < end and not self.lines[start].strip(): - start += 1 - while end > start and not self.lines[end - 1].strip(): - end -= 1 - source = Source() - source.lines[:] = self.lines[start:end] - return source - - def indent(self, indent: str = " " * 4) -> "Source": - """Return a copy of the source object with all lines indented by the - given indent-string.""" - newsource = Source() - newsource.lines = [(indent + line) for line in self.lines] - return newsource - - def getstatement(self, lineno: int) -> "Source": - """Return Source statement which contains the given linenumber - (counted from 0).""" - start, end = self.getstatementrange(lineno) - return self[start:end] - - def getstatementrange(self, lineno: int) -> Tuple[int, int]: - """Return (start, end) tuple which spans the minimal statement region - which containing the given lineno.""" - if not (0 <= lineno < len(self)): - raise IndexError("lineno out of range") - ast, start, end = getstatementrange_ast(lineno, self) - return start, end - - def deindent(self) -> "Source": - """Return a new Source object deindented.""" - newsource = Source() - newsource.lines[:] = deindent(self.lines) - return newsource - - def __str__(self) -> str: - return "\n".join(self.lines) - - -# -# helper functions -# - - -def findsource(obj) -> Tuple[Optional[Source], int]: - try: - sourcelines, lineno = inspect.findsource(obj) - except Exception: - return None, -1 - source = Source() - source.lines = [line.rstrip() for line in sourcelines] - return source, lineno - - -def getrawcode(obj: object, trycall: bool = True) -> types.CodeType: - """Return code object for given function.""" - try: - return obj.__code__ # type: ignore[attr-defined,no-any-return] - except AttributeError: - pass - if trycall: - call = getattr(obj, "__call__", None) - if call and not isinstance(obj, type): - return getrawcode(call, trycall=False) - raise TypeError(f"could not get code object for {obj!r}") - - -def deindent(lines: Iterable[str]) -> List[str]: - return textwrap.dedent("\n".join(lines)).splitlines() - - -def get_statement_startend2(lineno: int, node: ast.AST) -> Tuple[int, Optional[int]]: - # Flatten all statements and except handlers into one lineno-list. - # AST's line numbers start indexing at 1. - values: List[int] = [] - for x in ast.walk(node): - if isinstance(x, (ast.stmt, ast.ExceptHandler)): - # Before Python 3.8, the lineno of a decorated class or function pointed at the decorator. - # Since Python 3.8, the lineno points to the class/def, so need to include the decorators. - if isinstance(x, (ast.ClassDef, ast.FunctionDef, ast.AsyncFunctionDef)): - for d in x.decorator_list: - values.append(d.lineno - 1) - values.append(x.lineno - 1) - for name in ("finalbody", "orelse"): - val: Optional[List[ast.stmt]] = getattr(x, name, None) - if val: - # Treat the finally/orelse part as its own statement. - values.append(val[0].lineno - 1 - 1) - values.sort() - insert_index = bisect_right(values, lineno) - start = values[insert_index - 1] - if insert_index >= len(values): - end = None - else: - end = values[insert_index] - return start, end - - -def getstatementrange_ast( - lineno: int, - source: Source, - assertion: bool = False, - astnode: Optional[ast.AST] = None, -) -> Tuple[ast.AST, int, int]: - if astnode is None: - content = str(source) - # See #4260: - # Don't produce duplicate warnings when compiling source to find AST. - with warnings.catch_warnings(): - warnings.simplefilter("ignore") - astnode = ast.parse(content, "source", "exec") - - start, end = get_statement_startend2(lineno, astnode) - # We need to correct the end: - # - ast-parsing strips comments - # - there might be empty lines - # - we might have lesser indented code blocks at the end - if end is None: - end = len(source.lines) - - if end > start + 1: - # Make sure we don't span differently indented code blocks - # by using the BlockFinder helper used which inspect.getsource() uses itself. - block_finder = inspect.BlockFinder() - # If we start with an indented line, put blockfinder to "started" mode. - block_finder.started = source.lines[start][0].isspace() - it = ((x + "\n") for x in source.lines[start:end]) - try: - for tok in tokenize.generate_tokens(lambda: next(it)): - block_finder.tokeneater(*tok) - except (inspect.EndOfBlock, IndentationError): - end = block_finder.last + start - except Exception: - pass - - # The end might still point to a comment or empty line, correct it. - while end: - line = source.lines[end - 1].lstrip() - if line.startswith("#") or not line: - end -= 1 - else: - break - return astnode, start, end diff --git a/venv/lib/python3.12/site-packages/_pytest/_io/__init__.py b/venv/lib/python3.12/site-packages/_pytest/_io/__init__.py deleted file mode 100644 index db001e9..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/_io/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from .terminalwriter import get_terminal_width -from .terminalwriter import TerminalWriter - - -__all__ = [ - "TerminalWriter", - "get_terminal_width", -] diff --git a/venv/lib/python3.12/site-packages/_pytest/_io/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/_io/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 73eddf009348cd7a6ac907c3bb30be773f3c8aa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmXw#u}Z{15QcX*i5HZ+LJ-7KY$BLNZNSi}=_U?$Cm5(6!2KOw! zfCR3xx-M|tRZjG7ikWZz|A%4sYdG8|Snm&~#V5|6e%Tef-zI}Xxt0I8(|h^uB3-jpVrDsgN3AL-vwpJ3}eO6iisOLE?YBslu^kGsG- KU~dB(qWud`H&;>s diff --git a/venv/lib/python3.12/site-packages/_pytest/_io/__pycache__/saferepr.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/_io/__pycache__/saferepr.cpython-312.pyc deleted file mode 100644 index 5205d36ab5f9dde7798e420177b88adb3310f6be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7544 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/_io/__pycache__/wcwidth.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/_io/__pycache__/wcwidth.cpython-312.pyc deleted file mode 100644 index 5b95effb0b23fbe58fe5fb577fe7b24d4896c4db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1662 zcmbVM&1)M+6rY)0X(g>Tl4F-RDQzY;HCC~$Iv+iSf^iaZNDWD#1w(N+yJKtZ)s8!} zvb#p6f(EK2rRbI%bLb%@hyEcw*$LR)q!4I(&`pVb%B6j?l0QqK^ufM2^FH>ynfH71 zi)G~y(08|nDu3z-{jN59lgrkFmj zyXm|7(_Z*&$~E@&nY;RII>M!FTUlpHIL`W_Hs{z*g|%H!#n_3{f`v5^IKAH{|IvV} zZwG<)Aqw|xb+ng$9lN-W9r86 zPbB_@NGlcBe!jv&CaPY*XoauRsvShs;eM?eNNNj41IAqD(vVZvlgqvxQJXpyTi6bS zQ7?dPH{SLqaybfgE4g$@$0w;bPs0j3>@R7+L%J-yAhhrJY~o17M`Lu7azW42dEgvE z#X+p>`nD+?t^JK+s&xW7gFKT0D=0Rq*o0zVD&_!-$+Xk{3#de5@+pHafEB(L;WX%sjxx#{#vhUp~FGpd82NxzL&zGeavhiixS+WJ_Xb;2ddBh#mFt?p|l z00vJ1UdIO$xTv~uj9db^?dh+eFHR%0PQtwh1=Y#^%xZPb#oal@DAMY@qMiS1Ih_@V{PWzw8+D;0ayJX;%vZ0 z)%LwLmNdPj3wT*joJug!g&tXTq`FFg9TlgPH3OQi1BLAveDXT51_BsZCmL5@T7z5G z(1tbi_|lVe&#bXGNKXwk@k?uJ)GH|HenLq^Qrp|i7 zhB1DDPX30@zD^@zHZOepeuoTWt0_AOL`%L=Vn;)ynCLq str: - try: - return repr(obj) - except (KeyboardInterrupt, SystemExit): - raise - except BaseException: - return f'{type(obj).__name__}("{obj}")' - - -def _format_repr_exception(exc: BaseException, obj: object) -> str: - try: - exc_info = _try_repr_or_str(exc) - except (KeyboardInterrupt, SystemExit): - raise - except BaseException as exc: - exc_info = f"unpresentable exception ({_try_repr_or_str(exc)})" - return "<[{} raised in repr()] {} object at 0x{:x}>".format( - exc_info, type(obj).__name__, id(obj) - ) - - -def _ellipsize(s: str, maxsize: int) -> str: - if len(s) > maxsize: - i = max(0, (maxsize - 3) // 2) - j = max(0, maxsize - 3 - i) - return s[:i] + "..." + s[len(s) - j :] - return s - - -class SafeRepr(reprlib.Repr): - """ - repr.Repr that limits the resulting size of repr() and includes - information on exceptions raised during the call. - """ - - def __init__(self, maxsize: Optional[int], use_ascii: bool = False) -> None: - """ - :param maxsize: - If not None, will truncate the resulting repr to that specific size, using ellipsis - somewhere in the middle to hide the extra text. - If None, will not impose any size limits on the returning repr. - """ - super().__init__() - # ``maxstring`` is used by the superclass, and needs to be an int; using a - # very large number in case maxsize is None, meaning we want to disable - # truncation. - self.maxstring = maxsize if maxsize is not None else 1_000_000_000 - self.maxsize = maxsize - self.use_ascii = use_ascii - - def repr(self, x: object) -> str: - try: - if self.use_ascii: - s = ascii(x) - else: - s = super().repr(x) - - except (KeyboardInterrupt, SystemExit): - raise - except BaseException as exc: - s = _format_repr_exception(exc, x) - if self.maxsize is not None: - s = _ellipsize(s, self.maxsize) - return s - - def repr_instance(self, x: object, level: int) -> str: - try: - s = repr(x) - except (KeyboardInterrupt, SystemExit): - raise - except BaseException as exc: - s = _format_repr_exception(exc, x) - if self.maxsize is not None: - s = _ellipsize(s, self.maxsize) - return s - - -def safeformat(obj: object) -> str: - """Return a pretty printed string for the given object. - - Failing __repr__ functions of user instances will be represented - with a short exception info. - """ - try: - return pprint.pformat(obj) - except Exception as exc: - return _format_repr_exception(exc, obj) - - -# Maximum size of overall repr of objects to display during assertion errors. -DEFAULT_REPR_MAX_SIZE = 240 - - -def saferepr( - obj: object, maxsize: Optional[int] = DEFAULT_REPR_MAX_SIZE, use_ascii: bool = False -) -> str: - """Return a size-limited safe repr-string for the given object. - - Failing __repr__ functions of user instances will be represented - with a short exception info and 'saferepr' generally takes - care to never raise exceptions itself. - - This function is a wrapper around the Repr/reprlib functionality of the - stdlib. - """ - - return SafeRepr(maxsize, use_ascii).repr(obj) - - -def saferepr_unlimited(obj: object, use_ascii: bool = True) -> str: - """Return an unlimited-size safe repr-string for the given object. - - As with saferepr, failing __repr__ functions of user instances - will be represented with a short exception info. - - This function is a wrapper around simple repr. - - Note: a cleaner solution would be to alter ``saferepr``this way - when maxsize=None, but that might affect some other code. - """ - try: - if use_ascii: - return ascii(obj) - return repr(obj) - except Exception as exc: - return _format_repr_exception(exc, obj) - - -class AlwaysDispatchingPrettyPrinter(pprint.PrettyPrinter): - """PrettyPrinter that always dispatches (regardless of width).""" - - def _format( - self, - object: object, - stream: IO[str], - indent: int, - allowance: int, - context: Dict[int, Any], - level: int, - ) -> None: - # Type ignored because _dispatch is private. - p = self._dispatch.get(type(object).__repr__, None) # type: ignore[attr-defined] - - objid = id(object) - if objid in context or p is None: - # Type ignored because _format is private. - super()._format( # type: ignore[misc] - object, - stream, - indent, - allowance, - context, - level, - ) - return - - context[objid] = 1 - p(self, object, stream, indent, allowance, context, level + 1) - del context[objid] - - -def _pformat_dispatch( - object: object, - indent: int = 1, - width: int = 80, - depth: Optional[int] = None, - *, - compact: bool = False, -) -> str: - return AlwaysDispatchingPrettyPrinter( - indent=indent, width=width, depth=depth, compact=compact - ).pformat(object) diff --git a/venv/lib/python3.12/site-packages/_pytest/_io/terminalwriter.py b/venv/lib/python3.12/site-packages/_pytest/_io/terminalwriter.py deleted file mode 100644 index 379035d..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/_io/terminalwriter.py +++ /dev/null @@ -1,233 +0,0 @@ -"""Helper functions for writing to terminals and files.""" -import os -import shutil -import sys -from typing import Optional -from typing import Sequence -from typing import TextIO - -from .wcwidth import wcswidth -from _pytest.compat import final - - -# This code was initially copied from py 1.8.1, file _io/terminalwriter.py. - - -def get_terminal_width() -> int: - width, _ = shutil.get_terminal_size(fallback=(80, 24)) - - # The Windows get_terminal_size may be bogus, let's sanify a bit. - if width < 40: - width = 80 - - return width - - -def should_do_markup(file: TextIO) -> bool: - if os.environ.get("PY_COLORS") == "1": - return True - if os.environ.get("PY_COLORS") == "0": - return False - if "NO_COLOR" in os.environ: - return False - if "FORCE_COLOR" in os.environ: - return True - return ( - hasattr(file, "isatty") and file.isatty() and os.environ.get("TERM") != "dumb" - ) - - -@final -class TerminalWriter: - _esctable = dict( - black=30, - red=31, - green=32, - yellow=33, - blue=34, - purple=35, - cyan=36, - white=37, - Black=40, - Red=41, - Green=42, - Yellow=43, - Blue=44, - Purple=45, - Cyan=46, - White=47, - bold=1, - light=2, - blink=5, - invert=7, - ) - - def __init__(self, file: Optional[TextIO] = None) -> None: - if file is None: - file = sys.stdout - if hasattr(file, "isatty") and file.isatty() and sys.platform == "win32": - try: - import colorama - except ImportError: - pass - else: - file = colorama.AnsiToWin32(file).stream - assert file is not None - self._file = file - self.hasmarkup = should_do_markup(file) - self._current_line = "" - self._terminal_width: Optional[int] = None - self.code_highlight = True - - @property - def fullwidth(self) -> int: - if self._terminal_width is not None: - return self._terminal_width - return get_terminal_width() - - @fullwidth.setter - def fullwidth(self, value: int) -> None: - self._terminal_width = value - - @property - def width_of_current_line(self) -> int: - """Return an estimate of the width so far in the current line.""" - return wcswidth(self._current_line) - - def markup(self, text: str, **markup: bool) -> str: - for name in markup: - if name not in self._esctable: - raise ValueError(f"unknown markup: {name!r}") - if self.hasmarkup: - esc = [self._esctable[name] for name, on in markup.items() if on] - if esc: - text = "".join("\x1b[%sm" % cod for cod in esc) + text + "\x1b[0m" - return text - - def sep( - self, - sepchar: str, - title: Optional[str] = None, - fullwidth: Optional[int] = None, - **markup: bool, - ) -> None: - if fullwidth is None: - fullwidth = self.fullwidth - # The goal is to have the line be as long as possible - # under the condition that len(line) <= fullwidth. - if sys.platform == "win32": - # If we print in the last column on windows we are on a - # new line but there is no way to verify/neutralize this - # (we may not know the exact line width). - # So let's be defensive to avoid empty lines in the output. - fullwidth -= 1 - if title is not None: - # we want 2 + 2*len(fill) + len(title) <= fullwidth - # i.e. 2 + 2*len(sepchar)*N + len(title) <= fullwidth - # 2*len(sepchar)*N <= fullwidth - len(title) - 2 - # N <= (fullwidth - len(title) - 2) // (2*len(sepchar)) - N = max((fullwidth - len(title) - 2) // (2 * len(sepchar)), 1) - fill = sepchar * N - line = f"{fill} {title} {fill}" - else: - # we want len(sepchar)*N <= fullwidth - # i.e. N <= fullwidth // len(sepchar) - line = sepchar * (fullwidth // len(sepchar)) - # In some situations there is room for an extra sepchar at the right, - # in particular if we consider that with a sepchar like "_ " the - # trailing space is not important at the end of the line. - if len(line) + len(sepchar.rstrip()) <= fullwidth: - line += sepchar.rstrip() - - self.line(line, **markup) - - def write(self, msg: str, *, flush: bool = False, **markup: bool) -> None: - if msg: - current_line = msg.rsplit("\n", 1)[-1] - if "\n" in msg: - self._current_line = current_line - else: - self._current_line += current_line - - msg = self.markup(msg, **markup) - - try: - self._file.write(msg) - except UnicodeEncodeError: - # Some environments don't support printing general Unicode - # strings, due to misconfiguration or otherwise; in that case, - # print the string escaped to ASCII. - # When the Unicode situation improves we should consider - # letting the error propagate instead of masking it (see #7475 - # for one brief attempt). - msg = msg.encode("unicode-escape").decode("ascii") - self._file.write(msg) - - if flush: - self.flush() - - def line(self, s: str = "", **markup: bool) -> None: - self.write(s, **markup) - self.write("\n") - - def flush(self) -> None: - self._file.flush() - - def _write_source(self, lines: Sequence[str], indents: Sequence[str] = ()) -> None: - """Write lines of source code possibly highlighted. - - Keeping this private for now because the API is clunky. We should discuss how - to evolve the terminal writer so we can have more precise color support, for example - being able to write part of a line in one color and the rest in another, and so on. - """ - if indents and len(indents) != len(lines): - raise ValueError( - "indents size ({}) should have same size as lines ({})".format( - len(indents), len(lines) - ) - ) - if not indents: - indents = [""] * len(lines) - source = "\n".join(lines) - new_lines = self._highlight(source).splitlines() - for indent, new_line in zip(indents, new_lines): - self.line(indent + new_line) - - def _highlight(self, source: str) -> str: - """Highlight the given source code if we have markup support.""" - from _pytest.config.exceptions import UsageError - - if not self.hasmarkup or not self.code_highlight: - return source - try: - from pygments.formatters.terminal import TerminalFormatter - from pygments.lexers.python import PythonLexer - from pygments import highlight - import pygments.util - except ImportError: - return source - else: - try: - highlighted: str = highlight( - source, - PythonLexer(), - TerminalFormatter( - bg=os.getenv("PYTEST_THEME_MODE", "dark"), - style=os.getenv("PYTEST_THEME"), - ), - ) - return highlighted - except pygments.util.ClassNotFound: - raise UsageError( - "PYTEST_THEME environment variable had an invalid value: '{}'. " - "Only valid pygment styles are allowed.".format( - os.getenv("PYTEST_THEME") - ) - ) - except pygments.util.OptionError: - raise UsageError( - "PYTEST_THEME_MODE environment variable had an invalid value: '{}'. " - "The only allowed values are 'dark' and 'light'.".format( - os.getenv("PYTEST_THEME_MODE") - ) - ) diff --git a/venv/lib/python3.12/site-packages/_pytest/_io/wcwidth.py b/venv/lib/python3.12/site-packages/_pytest/_io/wcwidth.py deleted file mode 100644 index e5c7bf4..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/_io/wcwidth.py +++ /dev/null @@ -1,55 +0,0 @@ -import unicodedata -from functools import lru_cache - - -@lru_cache(100) -def wcwidth(c: str) -> int: - """Determine how many columns are needed to display a character in a terminal. - - Returns -1 if the character is not printable. - Returns 0, 1 or 2 for other characters. - """ - o = ord(c) - - # ASCII fast path. - if 0x20 <= o < 0x07F: - return 1 - - # Some Cf/Zp/Zl characters which should be zero-width. - if ( - o == 0x0000 - or 0x200B <= o <= 0x200F - or 0x2028 <= o <= 0x202E - or 0x2060 <= o <= 0x2063 - ): - return 0 - - category = unicodedata.category(c) - - # Control characters. - if category == "Cc": - return -1 - - # Combining characters with zero width. - if category in ("Me", "Mn"): - return 0 - - # Full/Wide east asian characters. - if unicodedata.east_asian_width(c) in ("F", "W"): - return 2 - - return 1 - - -def wcswidth(s: str) -> int: - """Determine how many columns are needed to display a string in a terminal. - - Returns -1 if the string contains non-printable characters. - """ - width = 0 - for c in unicodedata.normalize("NFC", s): - wc = wcwidth(c) - if wc < 0: - return -1 - width += wc - return width diff --git a/venv/lib/python3.12/site-packages/_pytest/_py/__init__.py b/venv/lib/python3.12/site-packages/_pytest/_py/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/_pytest/_py/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/_py/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index a35383ce02a9a34208a8bfd48e17ced31eed4c0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 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 str: - return "{}.{} {!r}: {} ".format( - self.__class__.__module__, - self.__class__.__name__, - self.__class__.__doc__, - " ".join(map(str, self.args)), - # repr(self.args) - ) - - def __str__(self) -> str: - s = "[{}]: {}".format( - self.__class__.__doc__, - " ".join(map(str, self.args)), - ) - return s - - -_winerrnomap = { - 2: errno.ENOENT, - 3: errno.ENOENT, - 17: errno.EEXIST, - 18: errno.EXDEV, - 13: errno.EBUSY, # empty cd drive, but ENOMEDIUM seems unavailiable - 22: errno.ENOTDIR, - 20: errno.ENOTDIR, - 267: errno.ENOTDIR, - 5: errno.EACCES, # anything better? -} - - -class ErrorMaker: - """lazily provides Exception classes for each possible POSIX errno - (as defined per the 'errno' module). All such instances - subclass EnvironmentError. - """ - - _errno2class: dict[int, type[Error]] = {} - - def __getattr__(self, name: str) -> type[Error]: - if name[0] == "_": - raise AttributeError(name) - eno = getattr(errno, name) - cls = self._geterrnoclass(eno) - setattr(self, name, cls) - return cls - - def _geterrnoclass(self, eno: int) -> type[Error]: - try: - return self._errno2class[eno] - except KeyError: - clsname = errno.errorcode.get(eno, "UnknownErrno%d" % (eno,)) - errorcls = type( - clsname, - (Error,), - {"__module__": "py.error", "__doc__": os.strerror(eno)}, - ) - self._errno2class[eno] = errorcls - return errorcls - - def checked_call( - self, func: Callable[P, R], *args: P.args, **kwargs: P.kwargs - ) -> R: - """Call a function and raise an errno-exception if applicable.""" - __tracebackhide__ = True - try: - return func(*args, **kwargs) - except Error: - raise - except OSError as value: - if not hasattr(value, "errno"): - raise - errno = value.errno - if sys.platform == "win32": - try: - cls = self._geterrnoclass(_winerrnomap[errno]) - except KeyError: - raise value - else: - # we are not on Windows, or we got a proper OSError - cls = self._geterrnoclass(errno) - - raise cls(f"{func.__name__}{args!r}") - - -_error_maker = ErrorMaker() -checked_call = _error_maker.checked_call - - -def __getattr__(attr: str) -> type[Error]: - return getattr(_error_maker, attr) # type: ignore[no-any-return] diff --git a/venv/lib/python3.12/site-packages/_pytest/_py/path.py b/venv/lib/python3.12/site-packages/_pytest/_py/path.py deleted file mode 100644 index 00f1515..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/_py/path.py +++ /dev/null @@ -1,1474 +0,0 @@ -"""local path implementation.""" -from __future__ import annotations - -import atexit -import fnmatch -import importlib.util -import io -import os -import posixpath -import sys -import uuid -import warnings -from contextlib import contextmanager -from os.path import abspath -from os.path import dirname -from os.path import exists -from os.path import isabs -from os.path import isdir -from os.path import isfile -from os.path import islink -from os.path import normpath -from stat import S_ISDIR -from stat import S_ISLNK -from stat import S_ISREG -from typing import Any -from typing import Callable -from typing import overload -from typing import TYPE_CHECKING - -from . import error - -if TYPE_CHECKING: - from typing import Literal - -# Moved from local.py. -iswin32 = sys.platform == "win32" or (getattr(os, "_name", False) == "nt") - - -class Checkers: - _depend_on_existence = "exists", "link", "dir", "file" - - def __init__(self, path): - self.path = path - - def dotfile(self): - return self.path.basename.startswith(".") - - def ext(self, arg): - if not arg.startswith("."): - arg = "." + arg - return self.path.ext == arg - - def basename(self, arg): - return self.path.basename == arg - - def basestarts(self, arg): - return self.path.basename.startswith(arg) - - def relto(self, arg): - return self.path.relto(arg) - - def fnmatch(self, arg): - return self.path.fnmatch(arg) - - def endswith(self, arg): - return str(self.path).endswith(arg) - - def _evaluate(self, kw): - from .._code.source import getrawcode - - for name, value in kw.items(): - invert = False - meth = None - try: - meth = getattr(self, name) - except AttributeError: - if name[:3] == "not": - invert = True - try: - meth = getattr(self, name[3:]) - except AttributeError: - pass - if meth is None: - raise TypeError(f"no {name!r} checker available for {self.path!r}") - try: - if getrawcode(meth).co_argcount > 1: - if (not meth(value)) ^ invert: - return False - else: - if bool(value) ^ bool(meth()) ^ invert: - return False - except (error.ENOENT, error.ENOTDIR, error.EBUSY): - # EBUSY feels not entirely correct, - # but its kind of necessary since ENOMEDIUM - # is not accessible in python - for name in self._depend_on_existence: - if name in kw: - if kw.get(name): - return False - name = "not" + name - if name in kw: - if not kw.get(name): - return False - return True - - _statcache: Stat - - def _stat(self) -> Stat: - try: - return self._statcache - except AttributeError: - try: - self._statcache = self.path.stat() - except error.ELOOP: - self._statcache = self.path.lstat() - return self._statcache - - def dir(self): - return S_ISDIR(self._stat().mode) - - def file(self): - return S_ISREG(self._stat().mode) - - def exists(self): - return self._stat() - - def link(self): - st = self.path.lstat() - return S_ISLNK(st.mode) - - -class NeverRaised(Exception): - pass - - -class Visitor: - def __init__(self, fil, rec, ignore, bf, sort): - if isinstance(fil, str): - fil = FNMatcher(fil) - if isinstance(rec, str): - self.rec: Callable[[LocalPath], bool] = FNMatcher(rec) - elif not hasattr(rec, "__call__") and rec: - self.rec = lambda path: True - else: - self.rec = rec - self.fil = fil - self.ignore = ignore - self.breadthfirst = bf - self.optsort = sort and sorted or (lambda x: x) - - def gen(self, path): - try: - entries = path.listdir() - except self.ignore: - return - rec = self.rec - dirs = self.optsort( - [p for p in entries if p.check(dir=1) and (rec is None or rec(p))] - ) - if not self.breadthfirst: - for subdir in dirs: - for p in self.gen(subdir): - yield p - for p in self.optsort(entries): - if self.fil is None or self.fil(p): - yield p - if self.breadthfirst: - for subdir in dirs: - for p in self.gen(subdir): - yield p - - -class FNMatcher: - def __init__(self, pattern): - self.pattern = pattern - - def __call__(self, path): - pattern = self.pattern - - if ( - pattern.find(path.sep) == -1 - and iswin32 - and pattern.find(posixpath.sep) != -1 - ): - # Running on Windows, the pattern has no Windows path separators, - # and the pattern has one or more Posix path separators. Replace - # the Posix path separators with the Windows path separator. - pattern = pattern.replace(posixpath.sep, path.sep) - - if pattern.find(path.sep) == -1: - name = path.basename - else: - name = str(path) # path.strpath # XXX svn? - if not os.path.isabs(pattern): - pattern = "*" + path.sep + pattern - return fnmatch.fnmatch(name, pattern) - - -def map_as_list(func, iter): - return list(map(func, iter)) - - -class Stat: - if TYPE_CHECKING: - - @property - def size(self) -> int: - ... - - @property - def mtime(self) -> float: - ... - - def __getattr__(self, name: str) -> Any: - return getattr(self._osstatresult, "st_" + name) - - def __init__(self, path, osstatresult): - self.path = path - self._osstatresult = osstatresult - - @property - def owner(self): - if iswin32: - raise NotImplementedError("XXX win32") - import pwd - - entry = error.checked_call(pwd.getpwuid, self.uid) - return entry[0] - - @property - def group(self): - """Return group name of file.""" - if iswin32: - raise NotImplementedError("XXX win32") - import grp - - entry = error.checked_call(grp.getgrgid, self.gid) - return entry[0] - - def isdir(self): - return S_ISDIR(self._osstatresult.st_mode) - - def isfile(self): - return S_ISREG(self._osstatresult.st_mode) - - def islink(self): - self.path.lstat() - return S_ISLNK(self._osstatresult.st_mode) - - -def getuserid(user): - import pwd - - if not isinstance(user, int): - user = pwd.getpwnam(user)[2] - return user - - -def getgroupid(group): - import grp - - if not isinstance(group, int): - group = grp.getgrnam(group)[2] - return group - - -class LocalPath: - """Object oriented interface to os.path and other local filesystem - related information. - """ - - class ImportMismatchError(ImportError): - """raised on pyimport() if there is a mismatch of __file__'s""" - - sep = os.sep - - def __init__(self, path=None, expanduser=False): - """Initialize and return a local Path instance. - - Path can be relative to the current directory. - If path is None it defaults to the current working directory. - If expanduser is True, tilde-expansion is performed. - Note that Path instances always carry an absolute path. - Note also that passing in a local path object will simply return - the exact same path object. Use new() to get a new copy. - """ - if path is None: - self.strpath = error.checked_call(os.getcwd) - else: - try: - path = os.fspath(path) - except TypeError: - raise ValueError( - "can only pass None, Path instances " - "or non-empty strings to LocalPath" - ) - if expanduser: - path = os.path.expanduser(path) - self.strpath = abspath(path) - - if sys.platform != "win32": - - def chown(self, user, group, rec=0): - """Change ownership to the given user and group. - user and group may be specified by a number or - by a name. if rec is True change ownership - recursively. - """ - uid = getuserid(user) - gid = getgroupid(group) - if rec: - for x in self.visit(rec=lambda x: x.check(link=0)): - if x.check(link=0): - error.checked_call(os.chown, str(x), uid, gid) - error.checked_call(os.chown, str(self), uid, gid) - - def readlink(self) -> str: - """Return value of a symbolic link.""" - # https://github.com/python/mypy/issues/12278 - return error.checked_call(os.readlink, self.strpath) # type: ignore[arg-type,return-value] - - def mklinkto(self, oldname): - """Posix style hard link to another name.""" - error.checked_call(os.link, str(oldname), str(self)) - - def mksymlinkto(self, value, absolute=1): - """Create a symbolic link with the given value (pointing to another name).""" - if absolute: - error.checked_call(os.symlink, str(value), self.strpath) - else: - base = self.common(value) - # with posix local paths '/' is always a common base - relsource = self.__class__(value).relto(base) - reldest = self.relto(base) - n = reldest.count(self.sep) - target = self.sep.join(("..",) * n + (relsource,)) - error.checked_call(os.symlink, target, self.strpath) - - def __div__(self, other): - return self.join(os.fspath(other)) - - __truediv__ = __div__ # py3k - - @property - def basename(self): - """Basename part of path.""" - return self._getbyspec("basename")[0] - - @property - def dirname(self): - """Dirname part of path.""" - return self._getbyspec("dirname")[0] - - @property - def purebasename(self): - """Pure base name of the path.""" - return self._getbyspec("purebasename")[0] - - @property - def ext(self): - """Extension of the path (including the '.').""" - return self._getbyspec("ext")[0] - - def read_binary(self): - """Read and return a bytestring from reading the path.""" - with self.open("rb") as f: - return f.read() - - def read_text(self, encoding): - """Read and return a Unicode string from reading the path.""" - with self.open("r", encoding=encoding) as f: - return f.read() - - def read(self, mode="r"): - """Read and return a bytestring from reading the path.""" - with self.open(mode) as f: - return f.read() - - def readlines(self, cr=1): - """Read and return a list of lines from the path. if cr is False, the - newline will be removed from the end of each line.""" - mode = "r" - - if not cr: - content = self.read(mode) - return content.split("\n") - else: - f = self.open(mode) - try: - return f.readlines() - finally: - f.close() - - def load(self): - """(deprecated) return object unpickled from self.read()""" - f = self.open("rb") - try: - import pickle - - return error.checked_call(pickle.load, f) - finally: - f.close() - - def move(self, target): - """Move this path to target.""" - if target.relto(self): - raise error.EINVAL(target, "cannot move path into a subdirectory of itself") - try: - self.rename(target) - except error.EXDEV: # invalid cross-device link - self.copy(target) - self.remove() - - def fnmatch(self, pattern): - """Return true if the basename/fullname matches the glob-'pattern'. - - valid pattern characters:: - - * matches everything - ? matches any single character - [seq] matches any character in seq - [!seq] matches any char not in seq - - If the pattern contains a path-separator then the full path - is used for pattern matching and a '*' is prepended to the - pattern. - - if the pattern doesn't contain a path-separator the pattern - is only matched against the basename. - """ - return FNMatcher(pattern)(self) - - def relto(self, relpath): - """Return a string which is the relative part of the path - to the given 'relpath'. - """ - if not isinstance(relpath, (str, LocalPath)): - raise TypeError(f"{relpath!r}: not a string or path object") - strrelpath = str(relpath) - if strrelpath and strrelpath[-1] != self.sep: - strrelpath += self.sep - # assert strrelpath[-1] == self.sep - # assert strrelpath[-2] != self.sep - strself = self.strpath - if sys.platform == "win32" or getattr(os, "_name", None) == "nt": - if os.path.normcase(strself).startswith(os.path.normcase(strrelpath)): - return strself[len(strrelpath) :] - elif strself.startswith(strrelpath): - return strself[len(strrelpath) :] - return "" - - def ensure_dir(self, *args): - """Ensure the path joined with args is a directory.""" - return self.ensure(*args, **{"dir": True}) - - def bestrelpath(self, dest): - """Return a string which is a relative path from self - (assumed to be a directory) to dest such that - self.join(bestrelpath) == dest and if not such - path can be determined return dest. - """ - try: - if self == dest: - return os.curdir - base = self.common(dest) - if not base: # can be the case on windows - return str(dest) - self2base = self.relto(base) - reldest = dest.relto(base) - if self2base: - n = self2base.count(self.sep) + 1 - else: - n = 0 - lst = [os.pardir] * n - if reldest: - lst.append(reldest) - target = dest.sep.join(lst) - return target - except AttributeError: - return str(dest) - - def exists(self): - return self.check() - - def isdir(self): - return self.check(dir=1) - - def isfile(self): - return self.check(file=1) - - def parts(self, reverse=False): - """Return a root-first list of all ancestor directories - plus the path itself. - """ - current = self - lst = [self] - while 1: - last = current - current = current.dirpath() - if last == current: - break - lst.append(current) - if not reverse: - lst.reverse() - return lst - - def common(self, other): - """Return the common part shared with the other path - or None if there is no common part. - """ - last = None - for x, y in zip(self.parts(), other.parts()): - if x != y: - return last - last = x - return last - - def __add__(self, other): - """Return new path object with 'other' added to the basename""" - return self.new(basename=self.basename + str(other)) - - def visit(self, fil=None, rec=None, ignore=NeverRaised, bf=False, sort=False): - """Yields all paths below the current one - - fil is a filter (glob pattern or callable), if not matching the - path will not be yielded, defaulting to None (everything is - returned) - - rec is a filter (glob pattern or callable) that controls whether - a node is descended, defaulting to None - - ignore is an Exception class that is ignoredwhen calling dirlist() - on any of the paths (by default, all exceptions are reported) - - bf if True will cause a breadthfirst search instead of the - default depthfirst. Default: False - - sort if True will sort entries within each directory level. - """ - yield from Visitor(fil, rec, ignore, bf, sort).gen(self) - - def _sortlist(self, res, sort): - if sort: - if hasattr(sort, "__call__"): - warnings.warn( - DeprecationWarning( - "listdir(sort=callable) is deprecated and breaks on python3" - ), - stacklevel=3, - ) - res.sort(sort) - else: - res.sort() - - def __fspath__(self): - return self.strpath - - def __hash__(self): - s = self.strpath - if iswin32: - s = s.lower() - return hash(s) - - def __eq__(self, other): - s1 = os.fspath(self) - try: - s2 = os.fspath(other) - except TypeError: - return False - if iswin32: - s1 = s1.lower() - try: - s2 = s2.lower() - except AttributeError: - return False - return s1 == s2 - - def __ne__(self, other): - return not (self == other) - - def __lt__(self, other): - return os.fspath(self) < os.fspath(other) - - def __gt__(self, other): - return os.fspath(self) > os.fspath(other) - - def samefile(self, other): - """Return True if 'other' references the same file as 'self'.""" - other = os.fspath(other) - if not isabs(other): - other = abspath(other) - if self == other: - return True - if not hasattr(os.path, "samefile"): - return False - return error.checked_call(os.path.samefile, self.strpath, other) - - def remove(self, rec=1, ignore_errors=False): - """Remove a file or directory (or a directory tree if rec=1). - if ignore_errors is True, errors while removing directories will - be ignored. - """ - if self.check(dir=1, link=0): - if rec: - # force remove of readonly files on windows - if iswin32: - self.chmod(0o700, rec=1) - import shutil - - error.checked_call( - shutil.rmtree, self.strpath, ignore_errors=ignore_errors - ) - else: - error.checked_call(os.rmdir, self.strpath) - else: - if iswin32: - self.chmod(0o700) - error.checked_call(os.remove, self.strpath) - - def computehash(self, hashtype="md5", chunksize=524288): - """Return hexdigest of hashvalue for this file.""" - try: - try: - import hashlib as mod - except ImportError: - if hashtype == "sha1": - hashtype = "sha" - mod = __import__(hashtype) - hash = getattr(mod, hashtype)() - except (AttributeError, ImportError): - raise ValueError(f"Don't know how to compute {hashtype!r} hash") - f = self.open("rb") - try: - while 1: - buf = f.read(chunksize) - if not buf: - return hash.hexdigest() - hash.update(buf) - finally: - f.close() - - def new(self, **kw): - """Create a modified version of this path. - the following keyword arguments modify various path parts:: - - a:/some/path/to/a/file.ext - xx drive - xxxxxxxxxxxxxxxxx dirname - xxxxxxxx basename - xxxx purebasename - xxx ext - """ - obj = object.__new__(self.__class__) - if not kw: - obj.strpath = self.strpath - return obj - drive, dirname, basename, purebasename, ext = self._getbyspec( - "drive,dirname,basename,purebasename,ext" - ) - if "basename" in kw: - if "purebasename" in kw or "ext" in kw: - raise ValueError("invalid specification %r" % kw) - else: - pb = kw.setdefault("purebasename", purebasename) - try: - ext = kw["ext"] - except KeyError: - pass - else: - if ext and not ext.startswith("."): - ext = "." + ext - kw["basename"] = pb + ext - - if "dirname" in kw and not kw["dirname"]: - kw["dirname"] = drive - else: - kw.setdefault("dirname", dirname) - kw.setdefault("sep", self.sep) - obj.strpath = normpath("%(dirname)s%(sep)s%(basename)s" % kw) - return obj - - def _getbyspec(self, spec: str) -> list[str]: - """See new for what 'spec' can be.""" - res = [] - parts = self.strpath.split(self.sep) - - args = filter(None, spec.split(",")) - for name in args: - if name == "drive": - res.append(parts[0]) - elif name == "dirname": - res.append(self.sep.join(parts[:-1])) - else: - basename = parts[-1] - if name == "basename": - res.append(basename) - else: - i = basename.rfind(".") - if i == -1: - purebasename, ext = basename, "" - else: - purebasename, ext = basename[:i], basename[i:] - if name == "purebasename": - res.append(purebasename) - elif name == "ext": - res.append(ext) - else: - raise ValueError("invalid part specification %r" % name) - return res - - def dirpath(self, *args, **kwargs): - """Return the directory path joined with any given path arguments.""" - if not kwargs: - path = object.__new__(self.__class__) - path.strpath = dirname(self.strpath) - if args: - path = path.join(*args) - return path - return self.new(basename="").join(*args, **kwargs) - - def join(self, *args: os.PathLike[str], abs: bool = False) -> LocalPath: - """Return a new path by appending all 'args' as path - components. if abs=1 is used restart from root if any - of the args is an absolute path. - """ - sep = self.sep - strargs = [os.fspath(arg) for arg in args] - strpath = self.strpath - if abs: - newargs: list[str] = [] - for arg in reversed(strargs): - if isabs(arg): - strpath = arg - strargs = newargs - break - newargs.insert(0, arg) - # special case for when we have e.g. strpath == "/" - actual_sep = "" if strpath.endswith(sep) else sep - for arg in strargs: - arg = arg.strip(sep) - if iswin32: - # allow unix style paths even on windows. - arg = arg.strip("/") - arg = arg.replace("/", sep) - strpath = strpath + actual_sep + arg - actual_sep = sep - obj = object.__new__(self.__class__) - obj.strpath = normpath(strpath) - return obj - - def open(self, mode="r", ensure=False, encoding=None): - """Return an opened file with the given mode. - - If ensure is True, create parent directories if needed. - """ - if ensure: - self.dirpath().ensure(dir=1) - if encoding: - return error.checked_call(io.open, self.strpath, mode, encoding=encoding) - return error.checked_call(open, self.strpath, mode) - - def _fastjoin(self, name): - child = object.__new__(self.__class__) - child.strpath = self.strpath + self.sep + name - return child - - def islink(self): - return islink(self.strpath) - - def check(self, **kw): - """Check a path for existence and properties. - - Without arguments, return True if the path exists, otherwise False. - - valid checkers:: - - file=1 # is a file - file=0 # is not a file (may not even exist) - dir=1 # is a dir - link=1 # is a link - exists=1 # exists - - You can specify multiple checker definitions, for example:: - - path.check(file=1, link=1) # a link pointing to a file - """ - if not kw: - return exists(self.strpath) - if len(kw) == 1: - if "dir" in kw: - return not kw["dir"] ^ isdir(self.strpath) - if "file" in kw: - return not kw["file"] ^ isfile(self.strpath) - if not kw: - kw = {"exists": 1} - return Checkers(self)._evaluate(kw) - - _patternchars = set("*?[" + os.path.sep) - - def listdir(self, fil=None, sort=None): - """List directory contents, possibly filter by the given fil func - and possibly sorted. - """ - if fil is None and sort is None: - names = error.checked_call(os.listdir, self.strpath) - return map_as_list(self._fastjoin, names) - if isinstance(fil, str): - if not self._patternchars.intersection(fil): - child = self._fastjoin(fil) - if exists(child.strpath): - return [child] - return [] - fil = FNMatcher(fil) - names = error.checked_call(os.listdir, self.strpath) - res = [] - for name in names: - child = self._fastjoin(name) - if fil is None or fil(child): - res.append(child) - self._sortlist(res, sort) - return res - - def size(self) -> int: - """Return size of the underlying file object""" - return self.stat().size - - def mtime(self) -> float: - """Return last modification time of the path.""" - return self.stat().mtime - - def copy(self, target, mode=False, stat=False): - """Copy path to target. - - If mode is True, will copy copy permission from path to target. - If stat is True, copy permission, last modification - time, last access time, and flags from path to target. - """ - if self.check(file=1): - if target.check(dir=1): - target = target.join(self.basename) - assert self != target - copychunked(self, target) - if mode: - copymode(self.strpath, target.strpath) - if stat: - copystat(self, target) - else: - - def rec(p): - return p.check(link=0) - - for x in self.visit(rec=rec): - relpath = x.relto(self) - newx = target.join(relpath) - newx.dirpath().ensure(dir=1) - if x.check(link=1): - newx.mksymlinkto(x.readlink()) - continue - elif x.check(file=1): - copychunked(x, newx) - elif x.check(dir=1): - newx.ensure(dir=1) - if mode: - copymode(x.strpath, newx.strpath) - if stat: - copystat(x, newx) - - def rename(self, target): - """Rename this path to target.""" - target = os.fspath(target) - return error.checked_call(os.rename, self.strpath, target) - - def dump(self, obj, bin=1): - """Pickle object into path location""" - f = self.open("wb") - import pickle - - try: - error.checked_call(pickle.dump, obj, f, bin) - finally: - f.close() - - def mkdir(self, *args): - """Create & return the directory joined with args.""" - p = self.join(*args) - error.checked_call(os.mkdir, os.fspath(p)) - return p - - def write_binary(self, data, ensure=False): - """Write binary data into path. If ensure is True create - missing parent directories. - """ - if ensure: - self.dirpath().ensure(dir=1) - with self.open("wb") as f: - f.write(data) - - def write_text(self, data, encoding, ensure=False): - """Write text data into path using the specified encoding. - If ensure is True create missing parent directories. - """ - if ensure: - self.dirpath().ensure(dir=1) - with self.open("w", encoding=encoding) as f: - f.write(data) - - def write(self, data, mode="w", ensure=False): - """Write data into path. If ensure is True create - missing parent directories. - """ - if ensure: - self.dirpath().ensure(dir=1) - if "b" in mode: - if not isinstance(data, bytes): - raise ValueError("can only process bytes") - else: - if not isinstance(data, str): - if not isinstance(data, bytes): - data = str(data) - else: - data = data.decode(sys.getdefaultencoding()) - f = self.open(mode) - try: - f.write(data) - finally: - f.close() - - def _ensuredirs(self): - parent = self.dirpath() - if parent == self: - return self - if parent.check(dir=0): - parent._ensuredirs() - if self.check(dir=0): - try: - self.mkdir() - except error.EEXIST: - # race condition: file/dir created by another thread/process. - # complain if it is not a dir - if self.check(dir=0): - raise - return self - - def ensure(self, *args, **kwargs): - """Ensure that an args-joined path exists (by default as - a file). if you specify a keyword argument 'dir=True' - then the path is forced to be a directory path. - """ - p = self.join(*args) - if kwargs.get("dir", 0): - return p._ensuredirs() - else: - p.dirpath()._ensuredirs() - if not p.check(file=1): - p.open("w").close() - return p - - @overload - def stat(self, raising: Literal[True] = ...) -> Stat: - ... - - @overload - def stat(self, raising: Literal[False]) -> Stat | None: - ... - - def stat(self, raising: bool = True) -> Stat | None: - """Return an os.stat() tuple.""" - if raising: - return Stat(self, error.checked_call(os.stat, self.strpath)) - try: - return Stat(self, os.stat(self.strpath)) - except KeyboardInterrupt: - raise - except Exception: - return None - - def lstat(self) -> Stat: - """Return an os.lstat() tuple.""" - return Stat(self, error.checked_call(os.lstat, self.strpath)) - - def setmtime(self, mtime=None): - """Set modification time for the given path. if 'mtime' is None - (the default) then the file's mtime is set to current time. - - Note that the resolution for 'mtime' is platform dependent. - """ - if mtime is None: - return error.checked_call(os.utime, self.strpath, mtime) - try: - return error.checked_call(os.utime, self.strpath, (-1, mtime)) - except error.EINVAL: - return error.checked_call(os.utime, self.strpath, (self.atime(), mtime)) - - def chdir(self): - """Change directory to self and return old current directory""" - try: - old = self.__class__() - except error.ENOENT: - old = None - error.checked_call(os.chdir, self.strpath) - return old - - @contextmanager - def as_cwd(self): - """ - Return a context manager, which changes to the path's dir during the - managed "with" context. - On __enter__ it returns the old dir, which might be ``None``. - """ - old = self.chdir() - try: - yield old - finally: - if old is not None: - old.chdir() - - def realpath(self): - """Return a new path which contains no symbolic links.""" - return self.__class__(os.path.realpath(self.strpath)) - - def atime(self): - """Return last access time of the path.""" - return self.stat().atime - - def __repr__(self): - return "local(%r)" % self.strpath - - def __str__(self): - """Return string representation of the Path.""" - return self.strpath - - def chmod(self, mode, rec=0): - """Change permissions to the given mode. If mode is an - integer it directly encodes the os-specific modes. - if rec is True perform recursively. - """ - if not isinstance(mode, int): - raise TypeError(f"mode {mode!r} must be an integer") - if rec: - for x in self.visit(rec=rec): - error.checked_call(os.chmod, str(x), mode) - error.checked_call(os.chmod, self.strpath, mode) - - def pypkgpath(self): - """Return the Python package path by looking for the last - directory upwards which still contains an __init__.py. - Return None if a pkgpath can not be determined. - """ - pkgpath = None - for parent in self.parts(reverse=True): - if parent.isdir(): - if not parent.join("__init__.py").exists(): - break - if not isimportable(parent.basename): - break - pkgpath = parent - return pkgpath - - def _ensuresyspath(self, ensuremode, path): - if ensuremode: - s = str(path) - if ensuremode == "append": - if s not in sys.path: - sys.path.append(s) - else: - if s != sys.path[0]: - sys.path.insert(0, s) - - def pyimport(self, modname=None, ensuresyspath=True): - """Return path as an imported python module. - - If modname is None, look for the containing package - and construct an according module name. - The module will be put/looked up in sys.modules. - if ensuresyspath is True then the root dir for importing - the file (taking __init__.py files into account) will - be prepended to sys.path if it isn't there already. - If ensuresyspath=="append" the root dir will be appended - if it isn't already contained in sys.path. - if ensuresyspath is False no modification of syspath happens. - - Special value of ensuresyspath=="importlib" is intended - purely for using in pytest, it is capable only of importing - separate .py files outside packages, e.g. for test suite - without any __init__.py file. It effectively allows having - same-named test modules in different places and offers - mild opt-in via this option. Note that it works only in - recent versions of python. - """ - if not self.check(): - raise error.ENOENT(self) - - if ensuresyspath == "importlib": - if modname is None: - modname = self.purebasename - spec = importlib.util.spec_from_file_location(modname, str(self)) - if spec is None or spec.loader is None: - raise ImportError( - f"Can't find module {modname} at location {str(self)}" - ) - mod = importlib.util.module_from_spec(spec) - spec.loader.exec_module(mod) - return mod - - pkgpath = None - if modname is None: - pkgpath = self.pypkgpath() - if pkgpath is not None: - pkgroot = pkgpath.dirpath() - names = self.new(ext="").relto(pkgroot).split(self.sep) - if names[-1] == "__init__": - names.pop() - modname = ".".join(names) - else: - pkgroot = self.dirpath() - modname = self.purebasename - - self._ensuresyspath(ensuresyspath, pkgroot) - __import__(modname) - mod = sys.modules[modname] - if self.basename == "__init__.py": - return mod # we don't check anything as we might - # be in a namespace package ... too icky to check - modfile = mod.__file__ - assert modfile is not None - if modfile[-4:] in (".pyc", ".pyo"): - modfile = modfile[:-1] - elif modfile.endswith("$py.class"): - modfile = modfile[:-9] + ".py" - if modfile.endswith(os.path.sep + "__init__.py"): - if self.basename != "__init__.py": - modfile = modfile[:-12] - try: - issame = self.samefile(modfile) - except error.ENOENT: - issame = False - if not issame: - ignore = os.getenv("PY_IGNORE_IMPORTMISMATCH") - if ignore != "1": - raise self.ImportMismatchError(modname, modfile, self) - return mod - else: - try: - return sys.modules[modname] - except KeyError: - # we have a custom modname, do a pseudo-import - import types - - mod = types.ModuleType(modname) - mod.__file__ = str(self) - sys.modules[modname] = mod - try: - with open(str(self), "rb") as f: - exec(f.read(), mod.__dict__) - except BaseException: - del sys.modules[modname] - raise - return mod - - def sysexec(self, *argv: os.PathLike[str], **popen_opts: Any) -> str: - """Return stdout text from executing a system child process, - where the 'self' path points to executable. - The process is directly invoked and not through a system shell. - """ - from subprocess import Popen, PIPE - - popen_opts.pop("stdout", None) - popen_opts.pop("stderr", None) - proc = Popen( - [str(self)] + [str(arg) for arg in argv], - **popen_opts, - stdout=PIPE, - stderr=PIPE, - ) - stdout: str | bytes - stdout, stderr = proc.communicate() - ret = proc.wait() - if isinstance(stdout, bytes): - stdout = stdout.decode(sys.getdefaultencoding()) - if ret != 0: - if isinstance(stderr, bytes): - stderr = stderr.decode(sys.getdefaultencoding()) - raise RuntimeError( - ret, - ret, - str(self), - stdout, - stderr, - ) - return stdout - - @classmethod - def sysfind(cls, name, checker=None, paths=None): - """Return a path object found by looking at the systems - underlying PATH specification. If the checker is not None - it will be invoked to filter matching paths. If a binary - cannot be found, None is returned - Note: This is probably not working on plain win32 systems - but may work on cygwin. - """ - if isabs(name): - p = local(name) - if p.check(file=1): - return p - else: - if paths is None: - if iswin32: - paths = os.environ["Path"].split(";") - if "" not in paths and "." not in paths: - paths.append(".") - try: - systemroot = os.environ["SYSTEMROOT"] - except KeyError: - pass - else: - paths = [ - path.replace("%SystemRoot%", systemroot) for path in paths - ] - else: - paths = os.environ["PATH"].split(":") - tryadd = [] - if iswin32: - tryadd += os.environ["PATHEXT"].split(os.pathsep) - tryadd.append("") - - for x in paths: - for addext in tryadd: - p = local(x).join(name, abs=True) + addext - try: - if p.check(file=1): - if checker: - if not checker(p): - continue - return p - except error.EACCES: - pass - return None - - @classmethod - def _gethomedir(cls): - try: - x = os.environ["HOME"] - except KeyError: - try: - x = os.environ["HOMEDRIVE"] + os.environ["HOMEPATH"] - except KeyError: - return None - return cls(x) - - # """ - # special class constructors for local filesystem paths - # """ - @classmethod - def get_temproot(cls): - """Return the system's temporary directory - (where tempfiles are usually created in) - """ - import tempfile - - return local(tempfile.gettempdir()) - - @classmethod - def mkdtemp(cls, rootdir=None): - """Return a Path object pointing to a fresh new temporary directory - (which we created ourself). - """ - import tempfile - - if rootdir is None: - rootdir = cls.get_temproot() - return cls(error.checked_call(tempfile.mkdtemp, dir=str(rootdir))) - - @classmethod - def make_numbered_dir( - cls, prefix="session-", rootdir=None, keep=3, lock_timeout=172800 - ): # two days - """Return unique directory with a number greater than the current - maximum one. The number is assumed to start directly after prefix. - if keep is true directories with a number less than (maxnum-keep) - will be removed. If .lock files are used (lock_timeout non-zero), - algorithm is multi-process safe. - """ - if rootdir is None: - rootdir = cls.get_temproot() - - nprefix = prefix.lower() - - def parse_num(path): - """Parse the number out of a path (if it matches the prefix)""" - nbasename = path.basename.lower() - if nbasename.startswith(nprefix): - try: - return int(nbasename[len(nprefix) :]) - except ValueError: - pass - - def create_lockfile(path): - """Exclusively create lockfile. Throws when failed""" - mypid = os.getpid() - lockfile = path.join(".lock") - if hasattr(lockfile, "mksymlinkto"): - lockfile.mksymlinkto(str(mypid)) - else: - fd = error.checked_call( - os.open, str(lockfile), os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o644 - ) - with os.fdopen(fd, "w") as f: - f.write(str(mypid)) - return lockfile - - def atexit_remove_lockfile(lockfile): - """Ensure lockfile is removed at process exit""" - mypid = os.getpid() - - def try_remove_lockfile(): - # in a fork() situation, only the last process should - # remove the .lock, otherwise the other processes run the - # risk of seeing their temporary dir disappear. For now - # we remove the .lock in the parent only (i.e. we assume - # that the children finish before the parent). - if os.getpid() != mypid: - return - try: - lockfile.remove() - except error.Error: - pass - - atexit.register(try_remove_lockfile) - - # compute the maximum number currently in use with the prefix - lastmax = None - while True: - maxnum = -1 - for path in rootdir.listdir(): - num = parse_num(path) - if num is not None: - maxnum = max(maxnum, num) - - # make the new directory - try: - udir = rootdir.mkdir(prefix + str(maxnum + 1)) - if lock_timeout: - lockfile = create_lockfile(udir) - atexit_remove_lockfile(lockfile) - except (error.EEXIST, error.ENOENT, error.EBUSY): - # race condition (1): another thread/process created the dir - # in the meantime - try again - # race condition (2): another thread/process spuriously acquired - # lock treating empty directory as candidate - # for removal - try again - # race condition (3): another thread/process tried to create the lock at - # the same time (happened in Python 3.3 on Windows) - # https://ci.appveyor.com/project/pytestbot/py/build/1.0.21/job/ffi85j4c0lqwsfwa - if lastmax == maxnum: - raise - lastmax = maxnum - continue - break - - def get_mtime(path): - """Read file modification time""" - try: - return path.lstat().mtime - except error.Error: - pass - - garbage_prefix = prefix + "garbage-" - - def is_garbage(path): - """Check if path denotes directory scheduled for removal""" - bn = path.basename - return bn.startswith(garbage_prefix) - - # prune old directories - udir_time = get_mtime(udir) - if keep and udir_time: - for path in rootdir.listdir(): - num = parse_num(path) - if num is not None and num <= (maxnum - keep): - try: - # try acquiring lock to remove directory as exclusive user - if lock_timeout: - create_lockfile(path) - except (error.EEXIST, error.ENOENT, error.EBUSY): - path_time = get_mtime(path) - if not path_time: - # assume directory doesn't exist now - continue - if abs(udir_time - path_time) < lock_timeout: - # assume directory with lockfile exists - # and lock timeout hasn't expired yet - continue - - # path dir locked for exclusive use - # and scheduled for removal to avoid another thread/process - # treating it as a new directory or removal candidate - garbage_path = rootdir.join(garbage_prefix + str(uuid.uuid4())) - try: - path.rename(garbage_path) - garbage_path.remove(rec=1) - except KeyboardInterrupt: - raise - except Exception: # this might be error.Error, WindowsError ... - pass - if is_garbage(path): - try: - path.remove(rec=1) - except KeyboardInterrupt: - raise - except Exception: # this might be error.Error, WindowsError ... - pass - - # make link... - try: - username = os.environ["USER"] # linux, et al - except KeyError: - try: - username = os.environ["USERNAME"] # windows - except KeyError: - username = "current" - - src = str(udir) - dest = src[: src.rfind("-")] + "-" + username - try: - os.unlink(dest) - except OSError: - pass - try: - os.symlink(src, dest) - except (OSError, AttributeError, NotImplementedError): - pass - - return udir - - -def copymode(src, dest): - """Copy permission from src to dst.""" - import shutil - - shutil.copymode(src, dest) - - -def copystat(src, dest): - """Copy permission, last modification time, - last access time, and flags from src to dst.""" - import shutil - - shutil.copystat(str(src), str(dest)) - - -def copychunked(src, dest): - chunksize = 524288 # half a meg of bytes - fsrc = src.open("rb") - try: - fdest = dest.open("wb") - try: - while 1: - buf = fsrc.read(chunksize) - if not buf: - break - fdest.write(buf) - finally: - fdest.close() - finally: - fsrc.close() - - -def isimportable(name): - if name and (name[0].isalpha() or name[0] == "_"): - name = name.replace("_", "") - return not name or name.isalnum() - - -local = LocalPath diff --git a/venv/lib/python3.12/site-packages/_pytest/_version.py b/venv/lib/python3.12/site-packages/_pytest/_version.py deleted file mode 100644 index e06dfeb..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/_version.py +++ /dev/null @@ -1,4 +0,0 @@ -# file generated by setuptools_scm -# don't change, don't track in version control -__version__ = version = '7.2.2' -__version_tuple__ = version_tuple = (7, 2, 2) diff --git a/venv/lib/python3.12/site-packages/_pytest/assertion/__init__.py b/venv/lib/python3.12/site-packages/_pytest/assertion/__init__.py deleted file mode 100644 index a46e581..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/assertion/__init__.py +++ /dev/null @@ -1,181 +0,0 @@ -"""Support for presenting detailed information in failing assertions.""" -import sys -from typing import Any -from typing import Generator -from typing import List -from typing import Optional -from typing import TYPE_CHECKING - -from _pytest.assertion import rewrite -from _pytest.assertion import truncate -from _pytest.assertion import util -from _pytest.assertion.rewrite import assertstate_key -from _pytest.config import Config -from _pytest.config import hookimpl -from _pytest.config.argparsing import Parser -from _pytest.nodes import Item - -if TYPE_CHECKING: - from _pytest.main import Session - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("debugconfig") - group.addoption( - "--assert", - action="store", - dest="assertmode", - choices=("rewrite", "plain"), - default="rewrite", - metavar="MODE", - help=( - "Control assertion debugging tools.\n" - "'plain' performs no assertion debugging.\n" - "'rewrite' (the default) rewrites assert statements in test modules" - " on import to provide assert expression information." - ), - ) - parser.addini( - "enable_assertion_pass_hook", - type="bool", - default=False, - help="Enables the pytest_assertion_pass hook. " - "Make sure to delete any previously generated pyc cache files.", - ) - - -def register_assert_rewrite(*names: str) -> None: - """Register one or more module names to be rewritten on import. - - This function will make sure that this module or all modules inside - the package will get their assert statements rewritten. - Thus you should make sure to call this before the module is - actually imported, usually in your __init__.py if you are a plugin - using a package. - - :param names: The module names to register. - """ - for name in names: - if not isinstance(name, str): - msg = "expected module names as *args, got {0} instead" # type: ignore[unreachable] - raise TypeError(msg.format(repr(names))) - for hook in sys.meta_path: - if isinstance(hook, rewrite.AssertionRewritingHook): - importhook = hook - break - else: - # TODO(typing): Add a protocol for mark_rewrite() and use it - # for importhook and for PytestPluginManager.rewrite_hook. - importhook = DummyRewriteHook() # type: ignore - importhook.mark_rewrite(*names) - - -class DummyRewriteHook: - """A no-op import hook for when rewriting is disabled.""" - - def mark_rewrite(self, *names: str) -> None: - pass - - -class AssertionState: - """State for the assertion plugin.""" - - def __init__(self, config: Config, mode) -> None: - self.mode = mode - self.trace = config.trace.root.get("assertion") - self.hook: Optional[rewrite.AssertionRewritingHook] = None - - -def install_importhook(config: Config) -> rewrite.AssertionRewritingHook: - """Try to install the rewrite hook, raise SystemError if it fails.""" - config.stash[assertstate_key] = AssertionState(config, "rewrite") - config.stash[assertstate_key].hook = hook = rewrite.AssertionRewritingHook(config) - sys.meta_path.insert(0, hook) - config.stash[assertstate_key].trace("installed rewrite import hook") - - def undo() -> None: - hook = config.stash[assertstate_key].hook - if hook is not None and hook in sys.meta_path: - sys.meta_path.remove(hook) - - config.add_cleanup(undo) - return hook - - -def pytest_collection(session: "Session") -> None: - # This hook is only called when test modules are collected - # so for example not in the managing process of pytest-xdist - # (which does not collect test modules). - assertstate = session.config.stash.get(assertstate_key, None) - if assertstate: - if assertstate.hook is not None: - assertstate.hook.set_session(session) - - -@hookimpl(tryfirst=True, hookwrapper=True) -def pytest_runtest_protocol(item: Item) -> Generator[None, None, None]: - """Setup the pytest_assertrepr_compare and pytest_assertion_pass hooks. - - The rewrite module will use util._reprcompare if it exists to use custom - reporting via the pytest_assertrepr_compare hook. This sets up this custom - comparison for the test. - """ - - ihook = item.ihook - - def callbinrepr(op, left: object, right: object) -> Optional[str]: - """Call the pytest_assertrepr_compare hook and prepare the result. - - This uses the first result from the hook and then ensures the - following: - * Overly verbose explanations are truncated unless configured otherwise - (eg. if running in verbose mode). - * Embedded newlines are escaped to help util.format_explanation() - later. - * If the rewrite mode is used embedded %-characters are replaced - to protect later % formatting. - - The result can be formatted by util.format_explanation() for - pretty printing. - """ - hook_result = ihook.pytest_assertrepr_compare( - config=item.config, op=op, left=left, right=right - ) - for new_expl in hook_result: - if new_expl: - new_expl = truncate.truncate_if_required(new_expl, item) - new_expl = [line.replace("\n", "\\n") for line in new_expl] - res = "\n~".join(new_expl) - if item.config.getvalue("assertmode") == "rewrite": - res = res.replace("%", "%%") - return res - return None - - saved_assert_hooks = util._reprcompare, util._assertion_pass - util._reprcompare = callbinrepr - util._config = item.config - - if ihook.pytest_assertion_pass.get_hookimpls(): - - def call_assertion_pass_hook(lineno: int, orig: str, expl: str) -> None: - ihook.pytest_assertion_pass(item=item, lineno=lineno, orig=orig, expl=expl) - - util._assertion_pass = call_assertion_pass_hook - - yield - - util._reprcompare, util._assertion_pass = saved_assert_hooks - util._config = None - - -def pytest_sessionfinish(session: "Session") -> None: - assertstate = session.config.stash.get(assertstate_key, None) - if assertstate: - if assertstate.hook is not None: - assertstate.hook.set_session(None) - - -def pytest_assertrepr_compare( - config: Config, op: str, left: Any, right: Any -) -> Optional[List[str]]: - return util.assertrepr_compare(config=config, op=op, left=left, right=right) diff --git a/venv/lib/python3.12/site-packages/_pytest/assertion/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/assertion/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index b110b8255035c5717c1a52c03321c46a24f40784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9176 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

    n`sxsEb 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 jxoENPb612Yx(D5;jcJE>}dX9+An4p diff --git a/venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py b/venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py deleted file mode 100644 index cb64a33..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py +++ /dev/null @@ -1,1112 +0,0 @@ -"""Rewrite assertion AST to produce nice error messages.""" -import ast -import errno -import functools -import importlib.abc -import importlib.machinery -import importlib.util -import io -import itertools -import marshal -import os -import struct -import sys -import tokenize -import types -from pathlib import Path -from pathlib import PurePath -from typing import Callable -from typing import Dict -from typing import IO -from typing import Iterable -from typing import Iterator -from typing import List -from typing import Optional -from typing import Sequence -from typing import Set -from typing import Tuple -from typing import TYPE_CHECKING -from typing import Union - -from _pytest._io.saferepr import DEFAULT_REPR_MAX_SIZE -from _pytest._io.saferepr import saferepr -from _pytest._version import version -from _pytest.assertion import util -from _pytest.assertion.util import ( # noqa: F401 - format_explanation as _format_explanation, -) -from _pytest.config import Config -from _pytest.main import Session -from _pytest.pathlib import absolutepath -from _pytest.pathlib import fnmatch_ex -from _pytest.stash import StashKey - -if TYPE_CHECKING: - from _pytest.assertion import AssertionState - - -assertstate_key = StashKey["AssertionState"]() - - -# pytest caches rewritten pycs in pycache dirs -PYTEST_TAG = f"{sys.implementation.cache_tag}-pytest-{version}" -PYC_EXT = ".py" + (__debug__ and "c" or "o") -PYC_TAIL = "." + PYTEST_TAG + PYC_EXT - - -class AssertionRewritingHook(importlib.abc.MetaPathFinder, importlib.abc.Loader): - """PEP302/PEP451 import hook which rewrites asserts.""" - - def __init__(self, config: Config) -> None: - self.config = config - try: - self.fnpats = config.getini("python_files") - except ValueError: - self.fnpats = ["test_*.py", "*_test.py"] - self.session: Optional[Session] = None - self._rewritten_names: Dict[str, Path] = {} - self._must_rewrite: Set[str] = set() - # flag to guard against trying to rewrite a pyc file while we are already writing another pyc file, - # which might result in infinite recursion (#3506) - self._writing_pyc = False - self._basenames_to_check_rewrite = {"conftest"} - self._marked_for_rewrite_cache: Dict[str, bool] = {} - self._session_paths_checked = False - - def set_session(self, session: Optional[Session]) -> None: - self.session = session - self._session_paths_checked = False - - # Indirection so we can mock calls to find_spec originated from the hook during testing - _find_spec = importlib.machinery.PathFinder.find_spec - - def find_spec( - self, - name: str, - path: Optional[Sequence[Union[str, bytes]]] = None, - target: Optional[types.ModuleType] = None, - ) -> Optional[importlib.machinery.ModuleSpec]: - if self._writing_pyc: - return None - state = self.config.stash[assertstate_key] - if self._early_rewrite_bailout(name, state): - return None - state.trace("find_module called for: %s" % name) - - # Type ignored because mypy is confused about the `self` binding here. - spec = self._find_spec(name, path) # type: ignore - if ( - # the import machinery could not find a file to import - spec is None - # this is a namespace package (without `__init__.py`) - # there's nothing to rewrite there - or spec.origin is None - # we can only rewrite source files - or not isinstance(spec.loader, importlib.machinery.SourceFileLoader) - # if the file doesn't exist, we can't rewrite it - or not os.path.exists(spec.origin) - ): - return None - else: - fn = spec.origin - - if not self._should_rewrite(name, fn, state): - return None - - return importlib.util.spec_from_file_location( - name, - fn, - loader=self, - submodule_search_locations=spec.submodule_search_locations, - ) - - def create_module( - self, spec: importlib.machinery.ModuleSpec - ) -> Optional[types.ModuleType]: - return None # default behaviour is fine - - def exec_module(self, module: types.ModuleType) -> None: - assert module.__spec__ is not None - assert module.__spec__.origin is not None - fn = Path(module.__spec__.origin) - state = self.config.stash[assertstate_key] - - self._rewritten_names[module.__name__] = fn - - # The requested module looks like a test file, so rewrite it. This is - # the most magical part of the process: load the source, rewrite the - # asserts, and load the rewritten source. We also cache the rewritten - # module code in a special pyc. We must be aware of the possibility of - # concurrent pytest processes rewriting and loading pycs. To avoid - # tricky race conditions, we maintain the following invariant: The - # cached pyc is always a complete, valid pyc. Operations on it must be - # atomic. POSIX's atomic rename comes in handy. - write = not sys.dont_write_bytecode - cache_dir = get_cache_dir(fn) - if write: - ok = try_makedirs(cache_dir) - if not ok: - write = False - state.trace(f"read only directory: {cache_dir}") - - cache_name = fn.name[:-3] + PYC_TAIL - pyc = cache_dir / cache_name - # Notice that even if we're in a read-only directory, I'm going - # to check for a cached pyc. This may not be optimal... - co = _read_pyc(fn, pyc, state.trace) - if co is None: - state.trace(f"rewriting {fn!r}") - source_stat, co = _rewrite_test(fn, self.config) - if write: - self._writing_pyc = True - try: - _write_pyc(state, co, source_stat, pyc) - finally: - self._writing_pyc = False - else: - state.trace(f"found cached rewritten pyc for {fn}") - exec(co, module.__dict__) - - def _early_rewrite_bailout(self, name: str, state: "AssertionState") -> bool: - """A fast way to get out of rewriting modules. - - Profiling has shown that the call to PathFinder.find_spec (inside of - the find_spec from this class) is a major slowdown, so, this method - tries to filter what we're sure won't be rewritten before getting to - it. - """ - if self.session is not None and not self._session_paths_checked: - self._session_paths_checked = True - for initial_path in self.session._initialpaths: - # Make something as c:/projects/my_project/path.py -> - # ['c:', 'projects', 'my_project', 'path.py'] - parts = str(initial_path).split(os.path.sep) - # add 'path' to basenames to be checked. - self._basenames_to_check_rewrite.add(os.path.splitext(parts[-1])[0]) - - # Note: conftest already by default in _basenames_to_check_rewrite. - parts = name.split(".") - if parts[-1] in self._basenames_to_check_rewrite: - return False - - # For matching the name it must be as if it was a filename. - path = PurePath(*parts).with_suffix(".py") - - for pat in self.fnpats: - # if the pattern contains subdirectories ("tests/**.py" for example) we can't bail out based - # on the name alone because we need to match against the full path - if os.path.dirname(pat): - return False - if fnmatch_ex(pat, path): - return False - - if self._is_marked_for_rewrite(name, state): - return False - - state.trace(f"early skip of rewriting module: {name}") - return True - - def _should_rewrite(self, name: str, fn: str, state: "AssertionState") -> bool: - # always rewrite conftest files - if os.path.basename(fn) == "conftest.py": - state.trace(f"rewriting conftest file: {fn!r}") - return True - - if self.session is not None: - if self.session.isinitpath(absolutepath(fn)): - state.trace(f"matched test file (was specified on cmdline): {fn!r}") - return True - - # modules not passed explicitly on the command line are only - # rewritten if they match the naming convention for test files - fn_path = PurePath(fn) - for pat in self.fnpats: - if fnmatch_ex(pat, fn_path): - state.trace(f"matched test file {fn!r}") - return True - - return self._is_marked_for_rewrite(name, state) - - def _is_marked_for_rewrite(self, name: str, state: "AssertionState") -> bool: - try: - return self._marked_for_rewrite_cache[name] - except KeyError: - for marked in self._must_rewrite: - if name == marked or name.startswith(marked + "."): - state.trace(f"matched marked file {name!r} (from {marked!r})") - self._marked_for_rewrite_cache[name] = True - return True - - self._marked_for_rewrite_cache[name] = False - return False - - def mark_rewrite(self, *names: str) -> None: - """Mark import names as needing to be rewritten. - - The named module or package as well as any nested modules will - be rewritten on import. - """ - already_imported = ( - set(names).intersection(sys.modules).difference(self._rewritten_names) - ) - for name in already_imported: - mod = sys.modules[name] - if not AssertionRewriter.is_rewrite_disabled( - mod.__doc__ or "" - ) and not isinstance(mod.__loader__, type(self)): - self._warn_already_imported(name) - self._must_rewrite.update(names) - self._marked_for_rewrite_cache.clear() - - def _warn_already_imported(self, name: str) -> None: - from _pytest.warning_types import PytestAssertRewriteWarning - - self.config.issue_config_time_warning( - PytestAssertRewriteWarning( - "Module already imported so cannot be rewritten: %s" % name - ), - stacklevel=5, - ) - - def get_data(self, pathname: Union[str, bytes]) -> bytes: - """Optional PEP302 get_data API.""" - with open(pathname, "rb") as f: - return f.read() - - if sys.version_info >= (3, 10): - - if sys.version_info >= (3, 12): - from importlib.resources.abc import TraversableResources - else: - from importlib.abc import TraversableResources - - def get_resource_reader(self, name: str) -> TraversableResources: # type: ignore - if sys.version_info < (3, 11): - from importlib.readers import FileReader - else: - from importlib.resources.readers import FileReader - - return FileReader( # type:ignore[no-any-return] - types.SimpleNamespace(path=self._rewritten_names[name]) - ) - - -def _write_pyc_fp( - fp: IO[bytes], source_stat: os.stat_result, co: types.CodeType -) -> None: - # Technically, we don't have to have the same pyc format as - # (C)Python, since these "pycs" should never be seen by builtin - # import. However, there's little reason to deviate. - fp.write(importlib.util.MAGIC_NUMBER) - # https://www.python.org/dev/peps/pep-0552/ - flags = b"\x00\x00\x00\x00" - fp.write(flags) - # as of now, bytecode header expects 32-bit numbers for size and mtime (#4903) - mtime = int(source_stat.st_mtime) & 0xFFFFFFFF - size = source_stat.st_size & 0xFFFFFFFF - # " bool: - proc_pyc = f"{pyc}.{os.getpid()}" - try: - with open(proc_pyc, "wb") as fp: - _write_pyc_fp(fp, source_stat, co) - except OSError as e: - state.trace(f"error writing pyc file at {proc_pyc}: errno={e.errno}") - return False - - try: - os.replace(proc_pyc, pyc) - except OSError as e: - state.trace(f"error writing pyc file at {pyc}: {e}") - # we ignore any failure to write the cache file - # there are many reasons, permission-denied, pycache dir being a - # file etc. - return False - return True - - -def _rewrite_test(fn: Path, config: Config) -> Tuple[os.stat_result, types.CodeType]: - """Read and rewrite *fn* and return the code object.""" - stat = os.stat(fn) - source = fn.read_bytes() - strfn = str(fn) - tree = ast.parse(source, filename=strfn) - rewrite_asserts(tree, source, strfn, config) - co = compile(tree, strfn, "exec", dont_inherit=True) - return stat, co - - -def _read_pyc( - source: Path, pyc: Path, trace: Callable[[str], None] = lambda x: None -) -> Optional[types.CodeType]: - """Possibly read a pytest pyc containing rewritten code. - - Return rewritten code if successful or None if not. - """ - try: - fp = open(pyc, "rb") - except OSError: - return None - with fp: - try: - stat_result = os.stat(source) - mtime = int(stat_result.st_mtime) - size = stat_result.st_size - data = fp.read(16) - except OSError as e: - trace(f"_read_pyc({source}): OSError {e}") - return None - # Check for invalid or out of date pyc file. - if len(data) != (16): - trace("_read_pyc(%s): invalid pyc (too short)" % source) - return None - if data[:4] != importlib.util.MAGIC_NUMBER: - trace("_read_pyc(%s): invalid pyc (bad magic number)" % source) - return None - if data[4:8] != b"\x00\x00\x00\x00": - trace("_read_pyc(%s): invalid pyc (unsupported flags)" % source) - return None - mtime_data = data[8:12] - if int.from_bytes(mtime_data, "little") != mtime & 0xFFFFFFFF: - trace("_read_pyc(%s): out of date" % source) - return None - size_data = data[12:16] - if int.from_bytes(size_data, "little") != size & 0xFFFFFFFF: - trace("_read_pyc(%s): invalid pyc (incorrect size)" % source) - return None - try: - co = marshal.load(fp) - except Exception as e: - trace(f"_read_pyc({source}): marshal.load error {e}") - return None - if not isinstance(co, types.CodeType): - trace("_read_pyc(%s): not a code object" % source) - return None - return co - - -def rewrite_asserts( - mod: ast.Module, - source: bytes, - module_path: Optional[str] = None, - config: Optional[Config] = None, -) -> None: - """Rewrite the assert statements in mod.""" - AssertionRewriter(module_path, config, source).run(mod) - - -def _saferepr(obj: object) -> str: - r"""Get a safe repr of an object for assertion error messages. - - The assertion formatting (util.format_explanation()) requires - newlines to be escaped since they are a special character for it. - Normally assertion.util.format_explanation() does this but for a - custom repr it is possible to contain one of the special escape - sequences, especially '\n{' and '\n}' are likely to be present in - JSON reprs. - """ - maxsize = _get_maxsize_for_saferepr(util._config) - return saferepr(obj, maxsize=maxsize).replace("\n", "\\n") - - -def _get_maxsize_for_saferepr(config: Optional[Config]) -> Optional[int]: - """Get `maxsize` configuration for saferepr based on the given config object.""" - verbosity = config.getoption("verbose") if config is not None else 0 - if verbosity >= 2: - return None - if verbosity >= 1: - return DEFAULT_REPR_MAX_SIZE * 10 - return DEFAULT_REPR_MAX_SIZE - - -def _format_assertmsg(obj: object) -> str: - r"""Format the custom assertion message given. - - For strings this simply replaces newlines with '\n~' so that - util.format_explanation() will preserve them instead of escaping - newlines. For other objects saferepr() is used first. - """ - # reprlib appears to have a bug which means that if a string - # contains a newline it gets escaped, however if an object has a - # .__repr__() which contains newlines it does not get escaped. - # However in either case we want to preserve the newline. - replaces = [("\n", "\n~"), ("%", "%%")] - if not isinstance(obj, str): - obj = saferepr(obj) - replaces.append(("\\n", "\n~")) - - for r1, r2 in replaces: - obj = obj.replace(r1, r2) - - return obj - - -def _should_repr_global_name(obj: object) -> bool: - if callable(obj): - return False - - try: - return not hasattr(obj, "__name__") - except Exception: - return True - - -def _format_boolop(explanations: Iterable[str], is_or: bool) -> str: - explanation = "(" + (is_or and " or " or " and ").join(explanations) + ")" - return explanation.replace("%", "%%") - - -def _call_reprcompare( - ops: Sequence[str], - results: Sequence[bool], - expls: Sequence[str], - each_obj: Sequence[object], -) -> str: - for i, res, expl in zip(range(len(ops)), results, expls): - try: - done = not res - except Exception: - done = True - if done: - break - if util._reprcompare is not None: - custom = util._reprcompare(ops[i], each_obj[i], each_obj[i + 1]) - if custom is not None: - return custom - return expl - - -def _call_assertion_pass(lineno: int, orig: str, expl: str) -> None: - if util._assertion_pass is not None: - util._assertion_pass(lineno, orig, expl) - - -def _check_if_assertion_pass_impl() -> bool: - """Check if any plugins implement the pytest_assertion_pass hook - in order not to generate explanation unnecessarily (might be expensive).""" - return True if util._assertion_pass else False - - -UNARY_MAP = {ast.Not: "not %s", ast.Invert: "~%s", ast.USub: "-%s", ast.UAdd: "+%s"} - -BINOP_MAP = { - ast.BitOr: "|", - ast.BitXor: "^", - ast.BitAnd: "&", - ast.LShift: "<<", - ast.RShift: ">>", - ast.Add: "+", - ast.Sub: "-", - ast.Mult: "*", - ast.Div: "/", - ast.FloorDiv: "//", - ast.Mod: "%%", # escaped for string formatting - ast.Eq: "==", - ast.NotEq: "!=", - ast.Lt: "<", - ast.LtE: "<=", - ast.Gt: ">", - ast.GtE: ">=", - ast.Pow: "**", - ast.Is: "is", - ast.IsNot: "is not", - ast.In: "in", - ast.NotIn: "not in", - ast.MatMult: "@", -} - - -def traverse_node(node: ast.AST) -> Iterator[ast.AST]: - """Recursively yield node and all its children in depth-first order.""" - yield node - for child in ast.iter_child_nodes(node): - yield from traverse_node(child) - - -@functools.lru_cache(maxsize=1) -def _get_assertion_exprs(src: bytes) -> Dict[int, str]: - """Return a mapping from {lineno: "assertion test expression"}.""" - ret: Dict[int, str] = {} - - depth = 0 - lines: List[str] = [] - assert_lineno: Optional[int] = None - seen_lines: Set[int] = set() - - def _write_and_reset() -> None: - nonlocal depth, lines, assert_lineno, seen_lines - assert assert_lineno is not None - ret[assert_lineno] = "".join(lines).rstrip().rstrip("\\") - depth = 0 - lines = [] - assert_lineno = None - seen_lines = set() - - tokens = tokenize.tokenize(io.BytesIO(src).readline) - for tp, source, (lineno, offset), _, line in tokens: - if tp == tokenize.NAME and source == "assert": - assert_lineno = lineno - elif assert_lineno is not None: - # keep track of depth for the assert-message `,` lookup - if tp == tokenize.OP and source in "([{": - depth += 1 - elif tp == tokenize.OP and source in ")]}": - depth -= 1 - - if not lines: - lines.append(line[offset:]) - seen_lines.add(lineno) - # a non-nested comma separates the expression from the message - elif depth == 0 and tp == tokenize.OP and source == ",": - # one line assert with message - if lineno in seen_lines and len(lines) == 1: - offset_in_trimmed = offset + len(lines[-1]) - len(line) - lines[-1] = lines[-1][:offset_in_trimmed] - # multi-line assert with message - elif lineno in seen_lines: - lines[-1] = lines[-1][:offset] - # multi line assert with escapd newline before message - else: - lines.append(line[:offset]) - _write_and_reset() - elif tp in {tokenize.NEWLINE, tokenize.ENDMARKER}: - _write_and_reset() - elif lines and lineno not in seen_lines: - lines.append(line) - seen_lines.add(lineno) - - return ret - - -class AssertionRewriter(ast.NodeVisitor): - """Assertion rewriting implementation. - - The main entrypoint is to call .run() with an ast.Module instance, - this will then find all the assert statements and rewrite them to - provide intermediate values and a detailed assertion error. See - http://pybites.blogspot.be/2011/07/behind-scenes-of-pytests-new-assertion.html - for an overview of how this works. - - The entry point here is .run() which will iterate over all the - statements in an ast.Module and for each ast.Assert statement it - finds call .visit() with it. Then .visit_Assert() takes over and - is responsible for creating new ast statements to replace the - original assert statement: it rewrites the test of an assertion - to provide intermediate values and replace it with an if statement - which raises an assertion error with a detailed explanation in - case the expression is false and calls pytest_assertion_pass hook - if expression is true. - - For this .visit_Assert() uses the visitor pattern to visit all the - AST nodes of the ast.Assert.test field, each visit call returning - an AST node and the corresponding explanation string. During this - state is kept in several instance attributes: - - :statements: All the AST statements which will replace the assert - statement. - - :variables: This is populated by .variable() with each variable - used by the statements so that they can all be set to None at - the end of the statements. - - :variable_counter: Counter to create new unique variables needed - by statements. Variables are created using .variable() and - have the form of "@py_assert0". - - :expl_stmts: The AST statements which will be executed to get - data from the assertion. This is the code which will construct - the detailed assertion message that is used in the AssertionError - or for the pytest_assertion_pass hook. - - :explanation_specifiers: A dict filled by .explanation_param() - with %-formatting placeholders and their corresponding - expressions to use in the building of an assertion message. - This is used by .pop_format_context() to build a message. - - :stack: A stack of the explanation_specifiers dicts maintained by - .push_format_context() and .pop_format_context() which allows - to build another %-formatted string while already building one. - - This state is reset on every new assert statement visited and used - by the other visitors. - """ - - def __init__( - self, module_path: Optional[str], config: Optional[Config], source: bytes - ) -> None: - super().__init__() - self.module_path = module_path - self.config = config - if config is not None: - self.enable_assertion_pass_hook = config.getini( - "enable_assertion_pass_hook" - ) - else: - self.enable_assertion_pass_hook = False - self.source = source - - def run(self, mod: ast.Module) -> None: - """Find all assert statements in *mod* and rewrite them.""" - if not mod.body: - # Nothing to do. - return - - # We'll insert some special imports at the top of the module, but after any - # docstrings and __future__ imports, so first figure out where that is. - doc = getattr(mod, "docstring", None) - expect_docstring = doc is None - if doc is not None and self.is_rewrite_disabled(doc): - return - pos = 0 - lineno = 1 - for item in mod.body: - if ( - expect_docstring - and isinstance(item, ast.Expr) - and isinstance(item.value, ast.Str) - ): - doc = item.value.s - if self.is_rewrite_disabled(doc): - return - expect_docstring = False - elif ( - isinstance(item, ast.ImportFrom) - and item.level == 0 - and item.module == "__future__" - ): - pass - else: - break - pos += 1 - # Special case: for a decorated function, set the lineno to that of the - # first decorator, not the `def`. Issue #4984. - if isinstance(item, ast.FunctionDef) and item.decorator_list: - lineno = item.decorator_list[0].lineno - else: - lineno = item.lineno - # Now actually insert the special imports. - if sys.version_info >= (3, 10): - aliases = [ - ast.alias("builtins", "@py_builtins", lineno=lineno, col_offset=0), - ast.alias( - "_pytest.assertion.rewrite", - "@pytest_ar", - lineno=lineno, - col_offset=0, - ), - ] - else: - aliases = [ - ast.alias("builtins", "@py_builtins"), - ast.alias("_pytest.assertion.rewrite", "@pytest_ar"), - ] - imports = [ - ast.Import([alias], lineno=lineno, col_offset=0) for alias in aliases - ] - mod.body[pos:pos] = imports - - # Collect asserts. - nodes: List[ast.AST] = [mod] - while nodes: - node = nodes.pop() - for name, field in ast.iter_fields(node): - if isinstance(field, list): - new: List[ast.AST] = [] - for i, child in enumerate(field): - if isinstance(child, ast.Assert): - # Transform assert. - new.extend(self.visit(child)) - else: - new.append(child) - if isinstance(child, ast.AST): - nodes.append(child) - setattr(node, name, new) - elif ( - isinstance(field, ast.AST) - # Don't recurse into expressions as they can't contain - # asserts. - and not isinstance(field, ast.expr) - ): - nodes.append(field) - - @staticmethod - def is_rewrite_disabled(docstring: str) -> bool: - return "PYTEST_DONT_REWRITE" in docstring - - def variable(self) -> str: - """Get a new variable.""" - # Use a character invalid in python identifiers to avoid clashing. - name = "@py_assert" + str(next(self.variable_counter)) - self.variables.append(name) - return name - - def assign(self, expr: ast.expr) -> ast.Name: - """Give *expr* a name.""" - name = self.variable() - self.statements.append(ast.Assign([ast.Name(name, ast.Store())], expr)) - return ast.Name(name, ast.Load()) - - def display(self, expr: ast.expr) -> ast.expr: - """Call saferepr on the expression.""" - return self.helper("_saferepr", expr) - - def helper(self, name: str, *args: ast.expr) -> ast.expr: - """Call a helper in this module.""" - py_name = ast.Name("@pytest_ar", ast.Load()) - attr = ast.Attribute(py_name, name, ast.Load()) - return ast.Call(attr, list(args), []) - - def builtin(self, name: str) -> ast.Attribute: - """Return the builtin called *name*.""" - builtin_name = ast.Name("@py_builtins", ast.Load()) - return ast.Attribute(builtin_name, name, ast.Load()) - - def explanation_param(self, expr: ast.expr) -> str: - """Return a new named %-formatting placeholder for expr. - - This creates a %-formatting placeholder for expr in the - current formatting context, e.g. ``%(py0)s``. The placeholder - and expr are placed in the current format context so that it - can be used on the next call to .pop_format_context(). - """ - specifier = "py" + str(next(self.variable_counter)) - self.explanation_specifiers[specifier] = expr - return "%(" + specifier + ")s" - - def push_format_context(self) -> None: - """Create a new formatting context. - - The format context is used for when an explanation wants to - have a variable value formatted in the assertion message. In - this case the value required can be added using - .explanation_param(). Finally .pop_format_context() is used - to format a string of %-formatted values as added by - .explanation_param(). - """ - self.explanation_specifiers: Dict[str, ast.expr] = {} - self.stack.append(self.explanation_specifiers) - - def pop_format_context(self, expl_expr: ast.expr) -> ast.Name: - """Format the %-formatted string with current format context. - - The expl_expr should be an str ast.expr instance constructed from - the %-placeholders created by .explanation_param(). This will - add the required code to format said string to .expl_stmts and - return the ast.Name instance of the formatted string. - """ - current = self.stack.pop() - if self.stack: - self.explanation_specifiers = self.stack[-1] - keys = [ast.Str(key) for key in current.keys()] - format_dict = ast.Dict(keys, list(current.values())) - form = ast.BinOp(expl_expr, ast.Mod(), format_dict) - name = "@py_format" + str(next(self.variable_counter)) - if self.enable_assertion_pass_hook: - self.format_variables.append(name) - self.expl_stmts.append(ast.Assign([ast.Name(name, ast.Store())], form)) - return ast.Name(name, ast.Load()) - - def generic_visit(self, node: ast.AST) -> Tuple[ast.Name, str]: - """Handle expressions we don't have custom code for.""" - assert isinstance(node, ast.expr) - res = self.assign(node) - return res, self.explanation_param(self.display(res)) - - def visit_Assert(self, assert_: ast.Assert) -> List[ast.stmt]: - """Return the AST statements to replace the ast.Assert instance. - - This rewrites the test of an assertion to provide - intermediate values and replace it with an if statement which - raises an assertion error with a detailed explanation in case - the expression is false. - """ - if isinstance(assert_.test, ast.Tuple) and len(assert_.test.elts) >= 1: - from _pytest.warning_types import PytestAssertRewriteWarning - import warnings - - # TODO: This assert should not be needed. - assert self.module_path is not None - warnings.warn_explicit( - PytestAssertRewriteWarning( - "assertion is always true, perhaps remove parentheses?" - ), - category=None, - filename=self.module_path, - lineno=assert_.lineno, - ) - - self.statements: List[ast.stmt] = [] - self.variables: List[str] = [] - self.variable_counter = itertools.count() - - if self.enable_assertion_pass_hook: - self.format_variables: List[str] = [] - - self.stack: List[Dict[str, ast.expr]] = [] - self.expl_stmts: List[ast.stmt] = [] - self.push_format_context() - # Rewrite assert into a bunch of statements. - top_condition, explanation = self.visit(assert_.test) - - negation = ast.UnaryOp(ast.Not(), top_condition) - - if self.enable_assertion_pass_hook: # Experimental pytest_assertion_pass hook - msg = self.pop_format_context(ast.Str(explanation)) - - # Failed - if assert_.msg: - assertmsg = self.helper("_format_assertmsg", assert_.msg) - gluestr = "\n>assert " - else: - assertmsg = ast.Str("") - gluestr = "assert " - err_explanation = ast.BinOp(ast.Str(gluestr), ast.Add(), msg) - err_msg = ast.BinOp(assertmsg, ast.Add(), err_explanation) - err_name = ast.Name("AssertionError", ast.Load()) - fmt = self.helper("_format_explanation", err_msg) - exc = ast.Call(err_name, [fmt], []) - raise_ = ast.Raise(exc, None) - statements_fail = [] - statements_fail.extend(self.expl_stmts) - statements_fail.append(raise_) - - # Passed - fmt_pass = self.helper("_format_explanation", msg) - orig = _get_assertion_exprs(self.source)[assert_.lineno] - hook_call_pass = ast.Expr( - self.helper( - "_call_assertion_pass", - ast.Num(assert_.lineno), - ast.Str(orig), - fmt_pass, - ) - ) - # If any hooks implement assert_pass hook - hook_impl_test = ast.If( - self.helper("_check_if_assertion_pass_impl"), - self.expl_stmts + [hook_call_pass], - [], - ) - statements_pass = [hook_impl_test] - - # Test for assertion condition - main_test = ast.If(negation, statements_fail, statements_pass) - self.statements.append(main_test) - if self.format_variables: - variables = [ - ast.Name(name, ast.Store()) for name in self.format_variables - ] - clear_format = ast.Assign(variables, ast.NameConstant(None)) - self.statements.append(clear_format) - - else: # Original assertion rewriting - # Create failure message. - body = self.expl_stmts - self.statements.append(ast.If(negation, body, [])) - if assert_.msg: - assertmsg = self.helper("_format_assertmsg", assert_.msg) - explanation = "\n>assert " + explanation - else: - assertmsg = ast.Str("") - explanation = "assert " + explanation - template = ast.BinOp(assertmsg, ast.Add(), ast.Str(explanation)) - msg = self.pop_format_context(template) - fmt = self.helper("_format_explanation", msg) - err_name = ast.Name("AssertionError", ast.Load()) - exc = ast.Call(err_name, [fmt], []) - raise_ = ast.Raise(exc, None) - - body.append(raise_) - - # Clear temporary variables by setting them to None. - if self.variables: - variables = [ast.Name(name, ast.Store()) for name in self.variables] - clear = ast.Assign(variables, ast.NameConstant(None)) - self.statements.append(clear) - # Fix locations (line numbers/column offsets). - for stmt in self.statements: - for node in traverse_node(stmt): - ast.copy_location(node, assert_) - return self.statements - - def visit_Name(self, name: ast.Name) -> Tuple[ast.Name, str]: - # Display the repr of the name if it's a local variable or - # _should_repr_global_name() thinks it's acceptable. - locs = ast.Call(self.builtin("locals"), [], []) - inlocs = ast.Compare(ast.Str(name.id), [ast.In()], [locs]) - dorepr = self.helper("_should_repr_global_name", name) - test = ast.BoolOp(ast.Or(), [inlocs, dorepr]) - expr = ast.IfExp(test, self.display(name), ast.Str(name.id)) - return name, self.explanation_param(expr) - - def visit_BoolOp(self, boolop: ast.BoolOp) -> Tuple[ast.Name, str]: - res_var = self.variable() - expl_list = self.assign(ast.List([], ast.Load())) - app = ast.Attribute(expl_list, "append", ast.Load()) - is_or = int(isinstance(boolop.op, ast.Or)) - body = save = self.statements - fail_save = self.expl_stmts - levels = len(boolop.values) - 1 - self.push_format_context() - # Process each operand, short-circuiting if needed. - for i, v in enumerate(boolop.values): - if i: - fail_inner: List[ast.stmt] = [] - # cond is set in a prior loop iteration below - self.expl_stmts.append(ast.If(cond, fail_inner, [])) # noqa - self.expl_stmts = fail_inner - self.push_format_context() - res, expl = self.visit(v) - body.append(ast.Assign([ast.Name(res_var, ast.Store())], res)) - expl_format = self.pop_format_context(ast.Str(expl)) - call = ast.Call(app, [expl_format], []) - self.expl_stmts.append(ast.Expr(call)) - if i < levels: - cond: ast.expr = res - if is_or: - cond = ast.UnaryOp(ast.Not(), cond) - inner: List[ast.stmt] = [] - self.statements.append(ast.If(cond, inner, [])) - self.statements = body = inner - self.statements = save - self.expl_stmts = fail_save - expl_template = self.helper("_format_boolop", expl_list, ast.Num(is_or)) - expl = self.pop_format_context(expl_template) - return ast.Name(res_var, ast.Load()), self.explanation_param(expl) - - def visit_UnaryOp(self, unary: ast.UnaryOp) -> Tuple[ast.Name, str]: - pattern = UNARY_MAP[unary.op.__class__] - operand_res, operand_expl = self.visit(unary.operand) - res = self.assign(ast.UnaryOp(unary.op, operand_res)) - return res, pattern % (operand_expl,) - - def visit_BinOp(self, binop: ast.BinOp) -> Tuple[ast.Name, str]: - symbol = BINOP_MAP[binop.op.__class__] - left_expr, left_expl = self.visit(binop.left) - right_expr, right_expl = self.visit(binop.right) - explanation = f"({left_expl} {symbol} {right_expl})" - res = self.assign(ast.BinOp(left_expr, binop.op, right_expr)) - return res, explanation - - def visit_Call(self, call: ast.Call) -> Tuple[ast.Name, str]: - new_func, func_expl = self.visit(call.func) - arg_expls = [] - new_args = [] - new_kwargs = [] - for arg in call.args: - res, expl = self.visit(arg) - arg_expls.append(expl) - new_args.append(res) - for keyword in call.keywords: - res, expl = self.visit(keyword.value) - new_kwargs.append(ast.keyword(keyword.arg, res)) - if keyword.arg: - arg_expls.append(keyword.arg + "=" + expl) - else: # **args have `arg` keywords with an .arg of None - arg_expls.append("**" + expl) - - expl = "{}({})".format(func_expl, ", ".join(arg_expls)) - new_call = ast.Call(new_func, new_args, new_kwargs) - res = self.assign(new_call) - res_expl = self.explanation_param(self.display(res)) - outer_expl = f"{res_expl}\n{{{res_expl} = {expl}\n}}" - return res, outer_expl - - def visit_Starred(self, starred: ast.Starred) -> Tuple[ast.Starred, str]: - # A Starred node can appear in a function call. - res, expl = self.visit(starred.value) - new_starred = ast.Starred(res, starred.ctx) - return new_starred, "*" + expl - - def visit_Attribute(self, attr: ast.Attribute) -> Tuple[ast.Name, str]: - if not isinstance(attr.ctx, ast.Load): - return self.generic_visit(attr) - value, value_expl = self.visit(attr.value) - res = self.assign(ast.Attribute(value, attr.attr, ast.Load())) - res_expl = self.explanation_param(self.display(res)) - pat = "%s\n{%s = %s.%s\n}" - expl = pat % (res_expl, res_expl, value_expl, attr.attr) - return res, expl - - def visit_Compare(self, comp: ast.Compare) -> Tuple[ast.expr, str]: - self.push_format_context() - left_res, left_expl = self.visit(comp.left) - if isinstance(comp.left, (ast.Compare, ast.BoolOp)): - left_expl = f"({left_expl})" - res_variables = [self.variable() for i in range(len(comp.ops))] - load_names = [ast.Name(v, ast.Load()) for v in res_variables] - store_names = [ast.Name(v, ast.Store()) for v in res_variables] - it = zip(range(len(comp.ops)), comp.ops, comp.comparators) - expls = [] - syms = [] - results = [left_res] - for i, op, next_operand in it: - next_res, next_expl = self.visit(next_operand) - if isinstance(next_operand, (ast.Compare, ast.BoolOp)): - next_expl = f"({next_expl})" - results.append(next_res) - sym = BINOP_MAP[op.__class__] - syms.append(ast.Str(sym)) - expl = f"{left_expl} {sym} {next_expl}" - expls.append(ast.Str(expl)) - res_expr = ast.Compare(left_res, [op], [next_res]) - self.statements.append(ast.Assign([store_names[i]], res_expr)) - left_res, left_expl = next_res, next_expl - # Use pytest.assertion.util._reprcompare if that's available. - expl_call = self.helper( - "_call_reprcompare", - ast.Tuple(syms, ast.Load()), - ast.Tuple(load_names, ast.Load()), - ast.Tuple(expls, ast.Load()), - ast.Tuple(results, ast.Load()), - ) - if len(comp.ops) > 1: - res: ast.expr = ast.BoolOp(ast.And(), load_names) - else: - res = load_names[0] - return res, self.explanation_param(self.pop_format_context(expl_call)) - - -def try_makedirs(cache_dir: Path) -> bool: - """Attempt to create the given directory and sub-directories exist. - - Returns True if successful or if it already exists. - """ - try: - os.makedirs(cache_dir, exist_ok=True) - except (FileNotFoundError, NotADirectoryError, FileExistsError): - # One of the path components was not a directory: - # - we're in a zip file - # - it is a file - return False - except PermissionError: - return False - except OSError as e: - # as of now, EROFS doesn't have an equivalent OSError-subclass - if e.errno == errno.EROFS: - return False - raise - return True - - -def get_cache_dir(file_path: Path) -> Path: - """Return the cache directory to write .pyc files for the given .py file path.""" - if sys.version_info >= (3, 8) and sys.pycache_prefix: - # given: - # prefix = '/tmp/pycs' - # path = '/home/user/proj/test_app.py' - # we want: - # '/tmp/pycs/home/user/proj' - return Path(sys.pycache_prefix) / Path(*file_path.parts[1:-1]) - else: - # classic pycache directory - return file_path.parent / "__pycache__" diff --git a/venv/lib/python3.12/site-packages/_pytest/assertion/truncate.py b/venv/lib/python3.12/site-packages/_pytest/assertion/truncate.py deleted file mode 100644 index ce148dc..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/assertion/truncate.py +++ /dev/null @@ -1,94 +0,0 @@ -"""Utilities for truncating assertion output. - -Current default behaviour is to truncate assertion explanations at -~8 terminal lines, unless running in "-vv" mode or running on CI. -""" -from typing import List -from typing import Optional - -from _pytest.assertion import util -from _pytest.nodes import Item - - -DEFAULT_MAX_LINES = 8 -DEFAULT_MAX_CHARS = 8 * 80 -USAGE_MSG = "use '-vv' to show" - - -def truncate_if_required( - explanation: List[str], item: Item, max_length: Optional[int] = None -) -> List[str]: - """Truncate this assertion explanation if the given test item is eligible.""" - if _should_truncate_item(item): - return _truncate_explanation(explanation) - return explanation - - -def _should_truncate_item(item: Item) -> bool: - """Whether or not this test item is eligible for truncation.""" - verbose = item.config.option.verbose - return verbose < 2 and not util.running_on_ci() - - -def _truncate_explanation( - input_lines: List[str], - max_lines: Optional[int] = None, - max_chars: Optional[int] = None, -) -> List[str]: - """Truncate given list of strings that makes up the assertion explanation. - - Truncates to either 8 lines, or 640 characters - whichever the input reaches - first. The remaining lines will be replaced by a usage message. - """ - - if max_lines is None: - max_lines = DEFAULT_MAX_LINES - if max_chars is None: - max_chars = DEFAULT_MAX_CHARS - - # Check if truncation required - input_char_count = len("".join(input_lines)) - if len(input_lines) <= max_lines and input_char_count <= max_chars: - return input_lines - - # Truncate first to max_lines, and then truncate to max_chars if max_chars - # is exceeded. - truncated_explanation = input_lines[:max_lines] - truncated_explanation = _truncate_by_char_count(truncated_explanation, max_chars) - - # Add ellipsis to final line - truncated_explanation[-1] = truncated_explanation[-1] + "..." - - # Append useful message to explanation - truncated_line_count = len(input_lines) - len(truncated_explanation) - truncated_line_count += 1 # Account for the part-truncated final line - msg = "...Full output truncated" - if truncated_line_count == 1: - msg += f" ({truncated_line_count} line hidden)" - else: - msg += f" ({truncated_line_count} lines hidden)" - msg += f", {USAGE_MSG}" - truncated_explanation.extend(["", str(msg)]) - return truncated_explanation - - -def _truncate_by_char_count(input_lines: List[str], max_chars: int) -> List[str]: - # Check if truncation required - if len("".join(input_lines)) <= max_chars: - return input_lines - - # Find point at which input length exceeds total allowed length - iterated_char_count = 0 - for iterated_index, input_line in enumerate(input_lines): - if iterated_char_count + len(input_line) > max_chars: - break - iterated_char_count += len(input_line) - - # Create truncated explanation with modified final line - truncated_result = input_lines[:iterated_index] - final_line = input_lines[iterated_index] - if final_line: - final_line_truncate_point = max_chars - iterated_char_count - final_line = final_line[:final_line_truncate_point] - truncated_result.append(final_line) - return truncated_result diff --git a/venv/lib/python3.12/site-packages/_pytest/assertion/util.py b/venv/lib/python3.12/site-packages/_pytest/assertion/util.py deleted file mode 100644 index fc5dfdb..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/assertion/util.py +++ /dev/null @@ -1,522 +0,0 @@ -"""Utilities for assertion debugging.""" -import collections.abc -import os -import pprint -from typing import AbstractSet -from typing import Any -from typing import Callable -from typing import Iterable -from typing import List -from typing import Mapping -from typing import Optional -from typing import Sequence -from unicodedata import normalize - -import _pytest._code -from _pytest import outcomes -from _pytest._io.saferepr import _pformat_dispatch -from _pytest._io.saferepr import saferepr -from _pytest._io.saferepr import saferepr_unlimited -from _pytest.config import Config - -# The _reprcompare attribute on the util module is used by the new assertion -# interpretation code and assertion rewriter to detect this plugin was -# loaded and in turn call the hooks defined here as part of the -# DebugInterpreter. -_reprcompare: Optional[Callable[[str, object, object], Optional[str]]] = None - -# Works similarly as _reprcompare attribute. Is populated with the hook call -# when pytest_runtest_setup is called. -_assertion_pass: Optional[Callable[[int, str, str], None]] = None - -# Config object which is assigned during pytest_runtest_protocol. -_config: Optional[Config] = None - - -def format_explanation(explanation: str) -> str: - r"""Format an explanation. - - Normally all embedded newlines are escaped, however there are - three exceptions: \n{, \n} and \n~. The first two are intended - cover nested explanations, see function and attribute explanations - for examples (.visit_Call(), visit_Attribute()). The last one is - for when one explanation needs to span multiple lines, e.g. when - displaying diffs. - """ - lines = _split_explanation(explanation) - result = _format_lines(lines) - return "\n".join(result) - - -def _split_explanation(explanation: str) -> List[str]: - r"""Return a list of individual lines in the explanation. - - This will return a list of lines split on '\n{', '\n}' and '\n~'. - Any other newlines will be escaped and appear in the line as the - literal '\n' characters. - """ - raw_lines = (explanation or "").split("\n") - lines = [raw_lines[0]] - for values in raw_lines[1:]: - if values and values[0] in ["{", "}", "~", ">"]: - lines.append(values) - else: - lines[-1] += "\\n" + values - return lines - - -def _format_lines(lines: Sequence[str]) -> List[str]: - """Format the individual lines. - - This will replace the '{', '}' and '~' characters of our mini formatting - language with the proper 'where ...', 'and ...' and ' + ...' text, taking - care of indentation along the way. - - Return a list of formatted lines. - """ - result = list(lines[:1]) - stack = [0] - stackcnt = [0] - for line in lines[1:]: - if line.startswith("{"): - if stackcnt[-1]: - s = "and " - else: - s = "where " - stack.append(len(result)) - stackcnt[-1] += 1 - stackcnt.append(0) - result.append(" +" + " " * (len(stack) - 1) + s + line[1:]) - elif line.startswith("}"): - stack.pop() - stackcnt.pop() - result[stack[-1]] += line[1:] - else: - assert line[0] in ["~", ">"] - stack[-1] += 1 - indent = len(stack) if line.startswith("~") else len(stack) - 1 - result.append(" " * indent + line[1:]) - assert len(stack) == 1 - return result - - -def issequence(x: Any) -> bool: - return isinstance(x, collections.abc.Sequence) and not isinstance(x, str) - - -def istext(x: Any) -> bool: - return isinstance(x, str) - - -def isdict(x: Any) -> bool: - return isinstance(x, dict) - - -def isset(x: Any) -> bool: - return isinstance(x, (set, frozenset)) - - -def isnamedtuple(obj: Any) -> bool: - return isinstance(obj, tuple) and getattr(obj, "_fields", None) is not None - - -def isdatacls(obj: Any) -> bool: - return getattr(obj, "__dataclass_fields__", None) is not None - - -def isattrs(obj: Any) -> bool: - return getattr(obj, "__attrs_attrs__", None) is not None - - -def isiterable(obj: Any) -> bool: - try: - iter(obj) - return not istext(obj) - except TypeError: - return False - - -def has_default_eq( - obj: object, -) -> bool: - """Check if an instance of an object contains the default eq - - First, we check if the object's __eq__ attribute has __code__, - if so, we check the equally of the method code filename (__code__.co_filename) - to the default one generated by the dataclass and attr module - for dataclasses the default co_filename is , for attrs class, the __eq__ should contain "attrs eq generated" - """ - # inspired from https://github.com/willmcgugan/rich/blob/07d51ffc1aee6f16bd2e5a25b4e82850fb9ed778/rich/pretty.py#L68 - if hasattr(obj.__eq__, "__code__") and hasattr(obj.__eq__.__code__, "co_filename"): - code_filename = obj.__eq__.__code__.co_filename - - if isattrs(obj): - return "attrs generated eq" in code_filename - - return code_filename == "" # data class - return True - - -def assertrepr_compare( - config, op: str, left: Any, right: Any, use_ascii: bool = False -) -> Optional[List[str]]: - """Return specialised explanations for some operators/operands.""" - verbose = config.getoption("verbose") - - # Strings which normalize equal are often hard to distinguish when printed; use ascii() to make this easier. - # See issue #3246. - use_ascii = ( - isinstance(left, str) - and isinstance(right, str) - and normalize("NFD", left) == normalize("NFD", right) - ) - - if verbose > 1: - left_repr = saferepr_unlimited(left, use_ascii=use_ascii) - right_repr = saferepr_unlimited(right, use_ascii=use_ascii) - else: - # XXX: "15 chars indentation" is wrong - # ("E AssertionError: assert "); should use term width. - maxsize = ( - 80 - 15 - len(op) - 2 - ) // 2 # 15 chars indentation, 1 space around op - - left_repr = saferepr(left, maxsize=maxsize, use_ascii=use_ascii) - right_repr = saferepr(right, maxsize=maxsize, use_ascii=use_ascii) - - summary = f"{left_repr} {op} {right_repr}" - - explanation = None - try: - if op == "==": - explanation = _compare_eq_any(left, right, verbose) - elif op == "not in": - if istext(left) and istext(right): - explanation = _notin_text(left, right, verbose) - except outcomes.Exit: - raise - except Exception: - explanation = [ - "(pytest_assertion plugin: representation of details failed: {}.".format( - _pytest._code.ExceptionInfo.from_current()._getreprcrash() - ), - " Probably an object has a faulty __repr__.)", - ] - - if not explanation: - return None - - return [summary] + explanation - - -def _compare_eq_any(left: Any, right: Any, verbose: int = 0) -> List[str]: - explanation = [] - if istext(left) and istext(right): - explanation = _diff_text(left, right, verbose) - else: - from _pytest.python_api import ApproxBase - - if isinstance(left, ApproxBase) or isinstance(right, ApproxBase): - # Although the common order should be obtained == expected, this ensures both ways - approx_side = left if isinstance(left, ApproxBase) else right - other_side = right if isinstance(left, ApproxBase) else left - - explanation = approx_side._repr_compare(other_side) - elif type(left) == type(right) and ( - isdatacls(left) or isattrs(left) or isnamedtuple(left) - ): - # Note: unlike dataclasses/attrs, namedtuples compare only the - # field values, not the type or field names. But this branch - # intentionally only handles the same-type case, which was often - # used in older code bases before dataclasses/attrs were available. - explanation = _compare_eq_cls(left, right, verbose) - elif issequence(left) and issequence(right): - explanation = _compare_eq_sequence(left, right, verbose) - elif isset(left) and isset(right): - explanation = _compare_eq_set(left, right, verbose) - elif isdict(left) and isdict(right): - explanation = _compare_eq_dict(left, right, verbose) - - if isiterable(left) and isiterable(right): - expl = _compare_eq_iterable(left, right, verbose) - explanation.extend(expl) - - return explanation - - -def _diff_text(left: str, right: str, verbose: int = 0) -> List[str]: - """Return the explanation for the diff between text. - - Unless --verbose is used this will skip leading and trailing - characters which are identical to keep the diff minimal. - """ - from difflib import ndiff - - explanation: List[str] = [] - - if verbose < 1: - i = 0 # just in case left or right has zero length - for i in range(min(len(left), len(right))): - if left[i] != right[i]: - break - if i > 42: - i -= 10 # Provide some context - explanation = [ - "Skipping %s identical leading characters in diff, use -v to show" % i - ] - left = left[i:] - right = right[i:] - if len(left) == len(right): - for i in range(len(left)): - if left[-i] != right[-i]: - break - if i > 42: - i -= 10 # Provide some context - explanation += [ - "Skipping {} identical trailing " - "characters in diff, use -v to show".format(i) - ] - left = left[:-i] - right = right[:-i] - keepends = True - if left.isspace() or right.isspace(): - left = repr(str(left)) - right = repr(str(right)) - explanation += ["Strings contain only whitespace, escaping them using repr()"] - # "right" is the expected base against which we compare "left", - # see https://github.com/pytest-dev/pytest/issues/3333 - explanation += [ - line.strip("\n") - for line in ndiff(right.splitlines(keepends), left.splitlines(keepends)) - ] - return explanation - - -def _surrounding_parens_on_own_lines(lines: List[str]) -> None: - """Move opening/closing parenthesis/bracket to own lines.""" - opening = lines[0][:1] - if opening in ["(", "[", "{"]: - lines[0] = " " + lines[0][1:] - lines[:] = [opening] + lines - closing = lines[-1][-1:] - if closing in [")", "]", "}"]: - lines[-1] = lines[-1][:-1] + "," - lines[:] = lines + [closing] - - -def _compare_eq_iterable( - left: Iterable[Any], right: Iterable[Any], verbose: int = 0 -) -> List[str]: - if verbose <= 0 and not running_on_ci(): - return ["Use -v to get more diff"] - # dynamic import to speedup pytest - import difflib - - left_formatting = pprint.pformat(left).splitlines() - right_formatting = pprint.pformat(right).splitlines() - - # Re-format for different output lengths. - lines_left = len(left_formatting) - lines_right = len(right_formatting) - if lines_left != lines_right: - left_formatting = _pformat_dispatch(left).splitlines() - right_formatting = _pformat_dispatch(right).splitlines() - - if lines_left > 1 or lines_right > 1: - _surrounding_parens_on_own_lines(left_formatting) - _surrounding_parens_on_own_lines(right_formatting) - - explanation = ["Full diff:"] - # "right" is the expected base against which we compare "left", - # see https://github.com/pytest-dev/pytest/issues/3333 - explanation.extend( - line.rstrip() for line in difflib.ndiff(right_formatting, left_formatting) - ) - return explanation - - -def _compare_eq_sequence( - left: Sequence[Any], right: Sequence[Any], verbose: int = 0 -) -> List[str]: - comparing_bytes = isinstance(left, bytes) and isinstance(right, bytes) - explanation: List[str] = [] - len_left = len(left) - len_right = len(right) - for i in range(min(len_left, len_right)): - if left[i] != right[i]: - if comparing_bytes: - # when comparing bytes, we want to see their ascii representation - # instead of their numeric values (#5260) - # using a slice gives us the ascii representation: - # >>> s = b'foo' - # >>> s[0] - # 102 - # >>> s[0:1] - # b'f' - left_value = left[i : i + 1] - right_value = right[i : i + 1] - else: - left_value = left[i] - right_value = right[i] - - explanation += [f"At index {i} diff: {left_value!r} != {right_value!r}"] - break - - if comparing_bytes: - # when comparing bytes, it doesn't help to show the "sides contain one or more - # items" longer explanation, so skip it - - return explanation - - len_diff = len_left - len_right - if len_diff: - if len_diff > 0: - dir_with_more = "Left" - extra = saferepr(left[len_right]) - else: - len_diff = 0 - len_diff - dir_with_more = "Right" - extra = saferepr(right[len_left]) - - if len_diff == 1: - explanation += [f"{dir_with_more} contains one more item: {extra}"] - else: - explanation += [ - "%s contains %d more items, first extra item: %s" - % (dir_with_more, len_diff, extra) - ] - return explanation - - -def _compare_eq_set( - left: AbstractSet[Any], right: AbstractSet[Any], verbose: int = 0 -) -> List[str]: - explanation = [] - diff_left = left - right - diff_right = right - left - if diff_left: - explanation.append("Extra items in the left set:") - for item in diff_left: - explanation.append(saferepr(item)) - if diff_right: - explanation.append("Extra items in the right set:") - for item in diff_right: - explanation.append(saferepr(item)) - return explanation - - -def _compare_eq_dict( - left: Mapping[Any, Any], right: Mapping[Any, Any], verbose: int = 0 -) -> List[str]: - explanation: List[str] = [] - set_left = set(left) - set_right = set(right) - common = set_left.intersection(set_right) - same = {k: left[k] for k in common if left[k] == right[k]} - if same and verbose < 2: - explanation += ["Omitting %s identical items, use -vv to show" % len(same)] - elif same: - explanation += ["Common items:"] - explanation += pprint.pformat(same).splitlines() - diff = {k for k in common if left[k] != right[k]} - if diff: - explanation += ["Differing items:"] - for k in diff: - explanation += [saferepr({k: left[k]}) + " != " + saferepr({k: right[k]})] - extra_left = set_left - set_right - len_extra_left = len(extra_left) - if len_extra_left: - explanation.append( - "Left contains %d more item%s:" - % (len_extra_left, "" if len_extra_left == 1 else "s") - ) - explanation.extend( - pprint.pformat({k: left[k] for k in extra_left}).splitlines() - ) - extra_right = set_right - set_left - len_extra_right = len(extra_right) - if len_extra_right: - explanation.append( - "Right contains %d more item%s:" - % (len_extra_right, "" if len_extra_right == 1 else "s") - ) - explanation.extend( - pprint.pformat({k: right[k] for k in extra_right}).splitlines() - ) - return explanation - - -def _compare_eq_cls(left: Any, right: Any, verbose: int) -> List[str]: - if not has_default_eq(left): - return [] - if isdatacls(left): - import dataclasses - - all_fields = dataclasses.fields(left) - fields_to_check = [info.name for info in all_fields if info.compare] - elif isattrs(left): - all_fields = left.__attrs_attrs__ - fields_to_check = [field.name for field in all_fields if getattr(field, "eq")] - elif isnamedtuple(left): - fields_to_check = left._fields - else: - assert False - - indent = " " - same = [] - diff = [] - for field in fields_to_check: - if getattr(left, field) == getattr(right, field): - same.append(field) - else: - diff.append(field) - - explanation = [] - if same or diff: - explanation += [""] - if same and verbose < 2: - explanation.append("Omitting %s identical items, use -vv to show" % len(same)) - elif same: - explanation += ["Matching attributes:"] - explanation += pprint.pformat(same).splitlines() - if diff: - explanation += ["Differing attributes:"] - explanation += pprint.pformat(diff).splitlines() - for field in diff: - field_left = getattr(left, field) - field_right = getattr(right, field) - explanation += [ - "", - "Drill down into differing attribute %s:" % field, - ("%s%s: %r != %r") % (indent, field, field_left, field_right), - ] - explanation += [ - indent + line - for line in _compare_eq_any(field_left, field_right, verbose) - ] - return explanation - - -def _notin_text(term: str, text: str, verbose: int = 0) -> List[str]: - index = text.find(term) - head = text[:index] - tail = text[index + len(term) :] - correct_text = head + tail - diff = _diff_text(text, correct_text, verbose) - newdiff = ["%s is contained here:" % saferepr(term, maxsize=42)] - for line in diff: - if line.startswith("Skipping"): - continue - if line.startswith("- "): - continue - if line.startswith("+ "): - newdiff.append(" " + line[2:]) - else: - newdiff.append(line) - return newdiff - - -def running_on_ci() -> bool: - """Check if we're currently running on a CI system.""" - env_vars = ["CI", "BUILD_NUMBER"] - return any(var in os.environ for var in env_vars) diff --git a/venv/lib/python3.12/site-packages/_pytest/cacheprovider.py b/venv/lib/python3.12/site-packages/_pytest/cacheprovider.py deleted file mode 100644 index c236dd4..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/cacheprovider.py +++ /dev/null @@ -1,579 +0,0 @@ -"""Implementation of the cache provider.""" -# This plugin was not named "cache" to avoid conflicts with the external -# pytest-cache version. -import json -import os -from pathlib import Path -from typing import Dict -from typing import Generator -from typing import Iterable -from typing import List -from typing import Optional -from typing import Set -from typing import Union - -import attr - -from .pathlib import resolve_from_str -from .pathlib import rm_rf -from .reports import CollectReport -from _pytest import nodes -from _pytest._io import TerminalWriter -from _pytest.compat import final -from _pytest.config import Config -from _pytest.config import ExitCode -from _pytest.config import hookimpl -from _pytest.config.argparsing import Parser -from _pytest.deprecated import check_ispytest -from _pytest.fixtures import fixture -from _pytest.fixtures import FixtureRequest -from _pytest.main import Session -from _pytest.python import Module -from _pytest.python import Package -from _pytest.reports import TestReport - -README_CONTENT = """\ -# pytest cache directory # - -This directory contains data from the pytest's cache plugin, -which provides the `--lf` and `--ff` options, as well as the `cache` fixture. - -**Do not** commit this to version control. - -See [the docs](https://docs.pytest.org/en/stable/how-to/cache.html) for more information. -""" - -CACHEDIR_TAG_CONTENT = b"""\ -Signature: 8a477f597d28d172789f06886806bc55 -# This file is a cache directory tag created by pytest. -# For information about cache directory tags, see: -# https://bford.info/cachedir/spec.html -""" - - -@final -@attr.s(init=False, auto_attribs=True) -class Cache: - _cachedir: Path = attr.ib(repr=False) - _config: Config = attr.ib(repr=False) - - # Sub-directory under cache-dir for directories created by `mkdir()`. - _CACHE_PREFIX_DIRS = "d" - - # Sub-directory under cache-dir for values created by `set()`. - _CACHE_PREFIX_VALUES = "v" - - def __init__( - self, cachedir: Path, config: Config, *, _ispytest: bool = False - ) -> None: - check_ispytest(_ispytest) - self._cachedir = cachedir - self._config = config - - @classmethod - def for_config(cls, config: Config, *, _ispytest: bool = False) -> "Cache": - """Create the Cache instance for a Config. - - :meta private: - """ - check_ispytest(_ispytest) - cachedir = cls.cache_dir_from_config(config, _ispytest=True) - if config.getoption("cacheclear") and cachedir.is_dir(): - cls.clear_cache(cachedir, _ispytest=True) - return cls(cachedir, config, _ispytest=True) - - @classmethod - def clear_cache(cls, cachedir: Path, _ispytest: bool = False) -> None: - """Clear the sub-directories used to hold cached directories and values. - - :meta private: - """ - check_ispytest(_ispytest) - for prefix in (cls._CACHE_PREFIX_DIRS, cls._CACHE_PREFIX_VALUES): - d = cachedir / prefix - if d.is_dir(): - rm_rf(d) - - @staticmethod - def cache_dir_from_config(config: Config, *, _ispytest: bool = False) -> Path: - """Get the path to the cache directory for a Config. - - :meta private: - """ - check_ispytest(_ispytest) - return resolve_from_str(config.getini("cache_dir"), config.rootpath) - - def warn(self, fmt: str, *, _ispytest: bool = False, **args: object) -> None: - """Issue a cache warning. - - :meta private: - """ - check_ispytest(_ispytest) - import warnings - from _pytest.warning_types import PytestCacheWarning - - warnings.warn( - PytestCacheWarning(fmt.format(**args) if args else fmt), - self._config.hook, - stacklevel=3, - ) - - def mkdir(self, name: str) -> Path: - """Return a directory path object with the given name. - - If the directory does not yet exist, it will be created. You can use - it to manage files to e.g. store/retrieve database dumps across test - sessions. - - .. versionadded:: 7.0 - - :param name: - Must be a string not containing a ``/`` separator. - Make sure the name contains your plugin or application - identifiers to prevent clashes with other cache users. - """ - path = Path(name) - if len(path.parts) > 1: - raise ValueError("name is not allowed to contain path separators") - res = self._cachedir.joinpath(self._CACHE_PREFIX_DIRS, path) - res.mkdir(exist_ok=True, parents=True) - return res - - def _getvaluepath(self, key: str) -> Path: - return self._cachedir.joinpath(self._CACHE_PREFIX_VALUES, Path(key)) - - def get(self, key: str, default): - """Return the cached value for the given key. - - If no value was yet cached or the value cannot be read, the specified - default is returned. - - :param key: - Must be a ``/`` separated value. Usually the first - name is the name of your plugin or your application. - :param default: - The value to return in case of a cache-miss or invalid cache value. - """ - path = self._getvaluepath(key) - try: - with path.open("r", encoding="UTF-8") as f: - return json.load(f) - except (ValueError, OSError): - return default - - def set(self, key: str, value: object) -> None: - """Save value for the given key. - - :param key: - Must be a ``/`` separated value. Usually the first - name is the name of your plugin or your application. - :param value: - Must be of any combination of basic python types, - including nested types like lists of dictionaries. - """ - path = self._getvaluepath(key) - try: - if path.parent.is_dir(): - cache_dir_exists_already = True - else: - cache_dir_exists_already = self._cachedir.exists() - path.parent.mkdir(exist_ok=True, parents=True) - except OSError: - self.warn("could not create cache path {path}", path=path, _ispytest=True) - return - if not cache_dir_exists_already: - self._ensure_supporting_files() - data = json.dumps(value, ensure_ascii=False, indent=2) - try: - f = path.open("w", encoding="UTF-8") - except OSError: - self.warn("cache could not write path {path}", path=path, _ispytest=True) - else: - with f: - f.write(data) - - def _ensure_supporting_files(self) -> None: - """Create supporting files in the cache dir that are not really part of the cache.""" - readme_path = self._cachedir / "README.md" - readme_path.write_text(README_CONTENT, encoding="UTF-8") - - gitignore_path = self._cachedir.joinpath(".gitignore") - msg = "# Created by pytest automatically.\n*\n" - gitignore_path.write_text(msg, encoding="UTF-8") - - cachedir_tag_path = self._cachedir.joinpath("CACHEDIR.TAG") - cachedir_tag_path.write_bytes(CACHEDIR_TAG_CONTENT) - - -class LFPluginCollWrapper: - def __init__(self, lfplugin: "LFPlugin") -> None: - self.lfplugin = lfplugin - self._collected_at_least_one_failure = False - - @hookimpl(hookwrapper=True) - def pytest_make_collect_report(self, collector: nodes.Collector): - if isinstance(collector, Session): - out = yield - res: CollectReport = out.get_result() - - # Sort any lf-paths to the beginning. - lf_paths = self.lfplugin._last_failed_paths - - res.result = sorted( - res.result, - # use stable sort to priorize last failed - key=lambda x: x.path in lf_paths, - reverse=True, - ) - return - - elif isinstance(collector, Module): - if collector.path in self.lfplugin._last_failed_paths: - out = yield - res = out.get_result() - result = res.result - lastfailed = self.lfplugin.lastfailed - - # Only filter with known failures. - if not self._collected_at_least_one_failure: - if not any(x.nodeid in lastfailed for x in result): - return - self.lfplugin.config.pluginmanager.register( - LFPluginCollSkipfiles(self.lfplugin), "lfplugin-collskip" - ) - self._collected_at_least_one_failure = True - - session = collector.session - result[:] = [ - x - for x in result - if x.nodeid in lastfailed - # Include any passed arguments (not trivial to filter). - or session.isinitpath(x.path) - # Keep all sub-collectors. - or isinstance(x, nodes.Collector) - ] - return - yield - - -class LFPluginCollSkipfiles: - def __init__(self, lfplugin: "LFPlugin") -> None: - self.lfplugin = lfplugin - - @hookimpl - def pytest_make_collect_report( - self, collector: nodes.Collector - ) -> Optional[CollectReport]: - # Packages are Modules, but _last_failed_paths only contains - # test-bearing paths and doesn't try to include the paths of their - # packages, so don't filter them. - if isinstance(collector, Module) and not isinstance(collector, Package): - if collector.path not in self.lfplugin._last_failed_paths: - self.lfplugin._skipped_files += 1 - - return CollectReport( - collector.nodeid, "passed", longrepr=None, result=[] - ) - return None - - -class LFPlugin: - """Plugin which implements the --lf (run last-failing) option.""" - - def __init__(self, config: Config) -> None: - self.config = config - active_keys = "lf", "failedfirst" - self.active = any(config.getoption(key) for key in active_keys) - assert config.cache - self.lastfailed: Dict[str, bool] = config.cache.get("cache/lastfailed", {}) - self._previously_failed_count: Optional[int] = None - self._report_status: Optional[str] = None - self._skipped_files = 0 # count skipped files during collection due to --lf - - if config.getoption("lf"): - self._last_failed_paths = self.get_last_failed_paths() - config.pluginmanager.register( - LFPluginCollWrapper(self), "lfplugin-collwrapper" - ) - - def get_last_failed_paths(self) -> Set[Path]: - """Return a set with all Paths()s of the previously failed nodeids.""" - rootpath = self.config.rootpath - result = {rootpath / nodeid.split("::")[0] for nodeid in self.lastfailed} - return {x for x in result if x.exists()} - - def pytest_report_collectionfinish(self) -> Optional[str]: - if self.active and self.config.getoption("verbose") >= 0: - return "run-last-failure: %s" % self._report_status - return None - - def pytest_runtest_logreport(self, report: TestReport) -> None: - if (report.when == "call" and report.passed) or report.skipped: - self.lastfailed.pop(report.nodeid, None) - elif report.failed: - self.lastfailed[report.nodeid] = True - - def pytest_collectreport(self, report: CollectReport) -> None: - passed = report.outcome in ("passed", "skipped") - if passed: - if report.nodeid in self.lastfailed: - self.lastfailed.pop(report.nodeid) - self.lastfailed.update((item.nodeid, True) for item in report.result) - else: - self.lastfailed[report.nodeid] = True - - @hookimpl(hookwrapper=True, tryfirst=True) - def pytest_collection_modifyitems( - self, config: Config, items: List[nodes.Item] - ) -> Generator[None, None, None]: - yield - - if not self.active: - return - - if self.lastfailed: - previously_failed = [] - previously_passed = [] - for item in items: - if item.nodeid in self.lastfailed: - previously_failed.append(item) - else: - previously_passed.append(item) - self._previously_failed_count = len(previously_failed) - - if not previously_failed: - # Running a subset of all tests with recorded failures - # only outside of it. - self._report_status = "%d known failures not in selected tests" % ( - len(self.lastfailed), - ) - else: - if self.config.getoption("lf"): - items[:] = previously_failed - config.hook.pytest_deselected(items=previously_passed) - else: # --failedfirst - items[:] = previously_failed + previously_passed - - noun = "failure" if self._previously_failed_count == 1 else "failures" - suffix = " first" if self.config.getoption("failedfirst") else "" - self._report_status = "rerun previous {count} {noun}{suffix}".format( - count=self._previously_failed_count, suffix=suffix, noun=noun - ) - - if self._skipped_files > 0: - files_noun = "file" if self._skipped_files == 1 else "files" - self._report_status += " (skipped {files} {files_noun})".format( - files=self._skipped_files, files_noun=files_noun - ) - else: - self._report_status = "no previously failed tests, " - if self.config.getoption("last_failed_no_failures") == "none": - self._report_status += "deselecting all items." - config.hook.pytest_deselected(items=items[:]) - items[:] = [] - else: - self._report_status += "not deselecting items." - - def pytest_sessionfinish(self, session: Session) -> None: - config = self.config - if config.getoption("cacheshow") or hasattr(config, "workerinput"): - return - - assert config.cache is not None - saved_lastfailed = config.cache.get("cache/lastfailed", {}) - if saved_lastfailed != self.lastfailed: - config.cache.set("cache/lastfailed", self.lastfailed) - - -class NFPlugin: - """Plugin which implements the --nf (run new-first) option.""" - - def __init__(self, config: Config) -> None: - self.config = config - self.active = config.option.newfirst - assert config.cache is not None - self.cached_nodeids = set(config.cache.get("cache/nodeids", [])) - - @hookimpl(hookwrapper=True, tryfirst=True) - def pytest_collection_modifyitems( - self, items: List[nodes.Item] - ) -> Generator[None, None, None]: - yield - - if self.active: - new_items: Dict[str, nodes.Item] = {} - other_items: Dict[str, nodes.Item] = {} - for item in items: - if item.nodeid not in self.cached_nodeids: - new_items[item.nodeid] = item - else: - other_items[item.nodeid] = item - - items[:] = self._get_increasing_order( - new_items.values() - ) + self._get_increasing_order(other_items.values()) - self.cached_nodeids.update(new_items) - else: - self.cached_nodeids.update(item.nodeid for item in items) - - def _get_increasing_order(self, items: Iterable[nodes.Item]) -> List[nodes.Item]: - return sorted(items, key=lambda item: item.path.stat().st_mtime, reverse=True) # type: ignore[no-any-return] - - def pytest_sessionfinish(self) -> None: - config = self.config - if config.getoption("cacheshow") or hasattr(config, "workerinput"): - return - - if config.getoption("collectonly"): - return - - assert config.cache is not None - config.cache.set("cache/nodeids", sorted(self.cached_nodeids)) - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("general") - group.addoption( - "--lf", - "--last-failed", - action="store_true", - dest="lf", - help="Rerun only the tests that failed " - "at the last run (or all if none failed)", - ) - group.addoption( - "--ff", - "--failed-first", - action="store_true", - dest="failedfirst", - help="Run all tests, but run the last failures first. " - "This may re-order tests and thus lead to " - "repeated fixture setup/teardown.", - ) - group.addoption( - "--nf", - "--new-first", - action="store_true", - dest="newfirst", - help="Run tests from new files first, then the rest of the tests " - "sorted by file mtime", - ) - group.addoption( - "--cache-show", - action="append", - nargs="?", - dest="cacheshow", - help=( - "Show cache contents, don't perform collection or tests. " - "Optional argument: glob (default: '*')." - ), - ) - group.addoption( - "--cache-clear", - action="store_true", - dest="cacheclear", - help="Remove all cache contents at start of test run", - ) - cache_dir_default = ".pytest_cache" - if "TOX_ENV_DIR" in os.environ: - cache_dir_default = os.path.join(os.environ["TOX_ENV_DIR"], cache_dir_default) - parser.addini("cache_dir", default=cache_dir_default, help="Cache directory path") - group.addoption( - "--lfnf", - "--last-failed-no-failures", - action="store", - dest="last_failed_no_failures", - choices=("all", "none"), - default="all", - help="Which tests to run with no previously (known) failures", - ) - - -def pytest_cmdline_main(config: Config) -> Optional[Union[int, ExitCode]]: - if config.option.cacheshow and not config.option.help: - from _pytest.main import wrap_session - - return wrap_session(config, cacheshow) - return None - - -@hookimpl(tryfirst=True) -def pytest_configure(config: Config) -> None: - config.cache = Cache.for_config(config, _ispytest=True) - config.pluginmanager.register(LFPlugin(config), "lfplugin") - config.pluginmanager.register(NFPlugin(config), "nfplugin") - - -@fixture -def cache(request: FixtureRequest) -> Cache: - """Return a cache object that can persist state between testing sessions. - - cache.get(key, default) - cache.set(key, value) - - Keys must be ``/`` separated strings, where the first part is usually the - name of your plugin or application to avoid clashes with other cache users. - - Values can be any object handled by the json stdlib module. - """ - assert request.config.cache is not None - return request.config.cache - - -def pytest_report_header(config: Config) -> Optional[str]: - """Display cachedir with --cache-show and if non-default.""" - if config.option.verbose > 0 or config.getini("cache_dir") != ".pytest_cache": - assert config.cache is not None - cachedir = config.cache._cachedir - # TODO: evaluate generating upward relative paths - # starting with .., ../.. if sensible - - try: - displaypath = cachedir.relative_to(config.rootpath) - except ValueError: - displaypath = cachedir - return f"cachedir: {displaypath}" - return None - - -def cacheshow(config: Config, session: Session) -> int: - from pprint import pformat - - assert config.cache is not None - - tw = TerminalWriter() - tw.line("cachedir: " + str(config.cache._cachedir)) - if not config.cache._cachedir.is_dir(): - tw.line("cache is empty") - return 0 - - glob = config.option.cacheshow[0] - if glob is None: - glob = "*" - - dummy = object() - basedir = config.cache._cachedir - vdir = basedir / Cache._CACHE_PREFIX_VALUES - tw.sep("-", "cache values for %r" % glob) - for valpath in sorted(x for x in vdir.rglob(glob) if x.is_file()): - key = str(valpath.relative_to(vdir)) - val = config.cache.get(key, dummy) - if val is dummy: - tw.line("%s contains unreadable content, will be ignored" % key) - else: - tw.line("%s contains:" % key) - for line in pformat(val).splitlines(): - tw.line(" " + line) - - ddir = basedir / Cache._CACHE_PREFIX_DIRS - if ddir.is_dir(): - contents = sorted(ddir.rglob(glob)) - tw.sep("-", "cache directories for %r" % glob) - for p in contents: - # if p.is_dir(): - # print("%s/" % p.relative_to(basedir)) - if p.is_file(): - key = str(p.relative_to(basedir)) - tw.line(f"{key} is a file of length {p.stat().st_size:d}") - return 0 diff --git a/venv/lib/python3.12/site-packages/_pytest/capture.py b/venv/lib/python3.12/site-packages/_pytest/capture.py deleted file mode 100644 index 6131a46..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/capture.py +++ /dev/null @@ -1,1014 +0,0 @@ -"""Per-test stdout/stderr capturing mechanism.""" -import contextlib -import functools -import io -import os -import sys -from io import UnsupportedOperation -from tempfile import TemporaryFile -from typing import Any -from typing import AnyStr -from typing import Generator -from typing import Generic -from typing import Iterator -from typing import Optional -from typing import TextIO -from typing import Tuple -from typing import TYPE_CHECKING -from typing import Union - -from _pytest.compat import final -from _pytest.config import Config -from _pytest.config import hookimpl -from _pytest.config.argparsing import Parser -from _pytest.deprecated import check_ispytest -from _pytest.fixtures import fixture -from _pytest.fixtures import SubRequest -from _pytest.nodes import Collector -from _pytest.nodes import File -from _pytest.nodes import Item - -if TYPE_CHECKING: - from typing_extensions import Literal - - _CaptureMethod = Literal["fd", "sys", "no", "tee-sys"] - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("general") - group._addoption( - "--capture", - action="store", - default="fd", - metavar="method", - choices=["fd", "sys", "no", "tee-sys"], - help="Per-test capturing method: one of fd|sys|no|tee-sys", - ) - group._addoption( - "-s", - action="store_const", - const="no", - dest="capture", - help="Shortcut for --capture=no", - ) - - -def _colorama_workaround() -> None: - """Ensure colorama is imported so that it attaches to the correct stdio - handles on Windows. - - colorama uses the terminal on import time. So if something does the - first import of colorama while I/O capture is active, colorama will - fail in various ways. - """ - if sys.platform.startswith("win32"): - try: - import colorama # noqa: F401 - except ImportError: - pass - - -def _windowsconsoleio_workaround(stream: TextIO) -> None: - """Workaround for Windows Unicode console handling. - - Python 3.6 implemented Unicode console handling for Windows. This works - by reading/writing to the raw console handle using - ``{Read,Write}ConsoleW``. - - The problem is that we are going to ``dup2`` over the stdio file - descriptors when doing ``FDCapture`` and this will ``CloseHandle`` the - handles used by Python to write to the console. Though there is still some - weirdness and the console handle seems to only be closed randomly and not - on the first call to ``CloseHandle``, or maybe it gets reopened with the - same handle value when we suspend capturing. - - The workaround in this case will reopen stdio with a different fd which - also means a different handle by replicating the logic in - "Py_lifecycle.c:initstdio/create_stdio". - - :param stream: - In practice ``sys.stdout`` or ``sys.stderr``, but given - here as parameter for unittesting purposes. - - See https://github.com/pytest-dev/py/issues/103. - """ - if not sys.platform.startswith("win32") or hasattr(sys, "pypy_version_info"): - return - - # Bail out if ``stream`` doesn't seem like a proper ``io`` stream (#2666). - if not hasattr(stream, "buffer"): # type: ignore[unreachable] - return - - buffered = hasattr(stream.buffer, "raw") - raw_stdout = stream.buffer.raw if buffered else stream.buffer # type: ignore[attr-defined] - - if not isinstance(raw_stdout, io._WindowsConsoleIO): # type: ignore[attr-defined] - return - - def _reopen_stdio(f, mode): - if not buffered and mode[0] == "w": - buffering = 0 - else: - buffering = -1 - - return io.TextIOWrapper( - open(os.dup(f.fileno()), mode, buffering), - f.encoding, - f.errors, - f.newlines, - f.line_buffering, - ) - - sys.stdin = _reopen_stdio(sys.stdin, "rb") - sys.stdout = _reopen_stdio(sys.stdout, "wb") - sys.stderr = _reopen_stdio(sys.stderr, "wb") - - -@hookimpl(hookwrapper=True) -def pytest_load_initial_conftests(early_config: Config): - ns = early_config.known_args_namespace - if ns.capture == "fd": - _windowsconsoleio_workaround(sys.stdout) - _colorama_workaround() - pluginmanager = early_config.pluginmanager - capman = CaptureManager(ns.capture) - pluginmanager.register(capman, "capturemanager") - - # Make sure that capturemanager is properly reset at final shutdown. - early_config.add_cleanup(capman.stop_global_capturing) - - # Finally trigger conftest loading but while capturing (issue #93). - capman.start_global_capturing() - outcome = yield - capman.suspend_global_capture() - if outcome.excinfo is not None: - out, err = capman.read_global_capture() - sys.stdout.write(out) - sys.stderr.write(err) - - -# IO Helpers. - - -class EncodedFile(io.TextIOWrapper): - __slots__ = () - - @property - def name(self) -> str: - # Ensure that file.name is a string. Workaround for a Python bug - # fixed in >=3.7.4: https://bugs.python.org/issue36015 - return repr(self.buffer) - - @property - def mode(self) -> str: - # TextIOWrapper doesn't expose a mode, but at least some of our - # tests check it. - return self.buffer.mode.replace("b", "") - - -class CaptureIO(io.TextIOWrapper): - def __init__(self) -> None: - super().__init__(io.BytesIO(), encoding="UTF-8", newline="", write_through=True) - - def getvalue(self) -> str: - assert isinstance(self.buffer, io.BytesIO) - return self.buffer.getvalue().decode("UTF-8") - - -class TeeCaptureIO(CaptureIO): - def __init__(self, other: TextIO) -> None: - self._other = other - super().__init__() - - def write(self, s: str) -> int: - super().write(s) - return self._other.write(s) - - -class DontReadFromInput: - encoding = None - - def read(self, *args): - raise OSError( - "pytest: reading from stdin while output is captured! Consider using `-s`." - ) - - readline = read - readlines = read - __next__ = read - - def __iter__(self): - return self - - def fileno(self) -> int: - raise UnsupportedOperation("redirected stdin is pseudofile, has no fileno()") - - def flush(self) -> None: - raise UnsupportedOperation("redirected stdin is pseudofile, has no flush()") - - def isatty(self) -> bool: - return False - - def close(self) -> None: - pass - - def readable(self) -> bool: - return False - - def seek(self, offset: int) -> int: - raise UnsupportedOperation("redirected stdin is pseudofile, has no seek(int)") - - def seekable(self) -> bool: - return False - - def tell(self) -> int: - raise UnsupportedOperation("redirected stdin is pseudofile, has no tell()") - - def truncate(self, size: int) -> None: - raise UnsupportedOperation("cannont truncate stdin") - - def write(self, *args) -> None: - raise UnsupportedOperation("cannot write to stdin") - - def writelines(self, *args) -> None: - raise UnsupportedOperation("Cannot write to stdin") - - def writable(self) -> bool: - return False - - @property - def buffer(self): - return self - - -# Capture classes. - - -patchsysdict = {0: "stdin", 1: "stdout", 2: "stderr"} - - -class NoCapture: - EMPTY_BUFFER = None - __init__ = start = done = suspend = resume = lambda *args: None - - -class SysCaptureBinary: - - EMPTY_BUFFER = b"" - - def __init__(self, fd: int, tmpfile=None, *, tee: bool = False) -> None: - name = patchsysdict[fd] - self._old = getattr(sys, name) - self.name = name - if tmpfile is None: - if name == "stdin": - tmpfile = DontReadFromInput() - else: - tmpfile = CaptureIO() if not tee else TeeCaptureIO(self._old) - self.tmpfile = tmpfile - self._state = "initialized" - - def repr(self, class_name: str) -> str: - return "<{} {} _old={} _state={!r} tmpfile={!r}>".format( - class_name, - self.name, - hasattr(self, "_old") and repr(self._old) or "", - self._state, - self.tmpfile, - ) - - def __repr__(self) -> str: - return "<{} {} _old={} _state={!r} tmpfile={!r}>".format( - self.__class__.__name__, - self.name, - hasattr(self, "_old") and repr(self._old) or "", - self._state, - self.tmpfile, - ) - - def _assert_state(self, op: str, states: Tuple[str, ...]) -> None: - assert ( - self._state in states - ), "cannot {} in state {!r}: expected one of {}".format( - op, self._state, ", ".join(states) - ) - - def start(self) -> None: - self._assert_state("start", ("initialized",)) - setattr(sys, self.name, self.tmpfile) - self._state = "started" - - def snap(self): - self._assert_state("snap", ("started", "suspended")) - self.tmpfile.seek(0) - res = self.tmpfile.buffer.read() - self.tmpfile.seek(0) - self.tmpfile.truncate() - return res - - def done(self) -> None: - self._assert_state("done", ("initialized", "started", "suspended", "done")) - if self._state == "done": - return - setattr(sys, self.name, self._old) - del self._old - self.tmpfile.close() - self._state = "done" - - def suspend(self) -> None: - self._assert_state("suspend", ("started", "suspended")) - setattr(sys, self.name, self._old) - self._state = "suspended" - - def resume(self) -> None: - self._assert_state("resume", ("started", "suspended")) - if self._state == "started": - return - setattr(sys, self.name, self.tmpfile) - self._state = "started" - - def writeorg(self, data) -> None: - self._assert_state("writeorg", ("started", "suspended")) - self._old.flush() - self._old.buffer.write(data) - self._old.buffer.flush() - - -class SysCapture(SysCaptureBinary): - EMPTY_BUFFER = "" # type: ignore[assignment] - - def snap(self): - res = self.tmpfile.getvalue() - self.tmpfile.seek(0) - self.tmpfile.truncate() - return res - - def writeorg(self, data): - self._assert_state("writeorg", ("started", "suspended")) - self._old.write(data) - self._old.flush() - - -class FDCaptureBinary: - """Capture IO to/from a given OS-level file descriptor. - - snap() produces `bytes`. - """ - - EMPTY_BUFFER = b"" - - def __init__(self, targetfd: int) -> None: - self.targetfd = targetfd - - try: - os.fstat(targetfd) - except OSError: - # FD capturing is conceptually simple -- create a temporary file, - # redirect the FD to it, redirect back when done. But when the - # target FD is invalid it throws a wrench into this lovely scheme. - # - # Tests themselves shouldn't care if the FD is valid, FD capturing - # should work regardless of external circumstances. So falling back - # to just sys capturing is not a good option. - # - # Further complications are the need to support suspend() and the - # possibility of FD reuse (e.g. the tmpfile getting the very same - # target FD). The following approach is robust, I believe. - self.targetfd_invalid: Optional[int] = os.open(os.devnull, os.O_RDWR) - os.dup2(self.targetfd_invalid, targetfd) - else: - self.targetfd_invalid = None - self.targetfd_save = os.dup(targetfd) - - if targetfd == 0: - self.tmpfile = open(os.devnull, encoding="utf-8") - self.syscapture = SysCapture(targetfd) - else: - self.tmpfile = EncodedFile( - TemporaryFile(buffering=0), - encoding="utf-8", - errors="replace", - newline="", - write_through=True, - ) - if targetfd in patchsysdict: - self.syscapture = SysCapture(targetfd, self.tmpfile) - else: - self.syscapture = NoCapture() - - self._state = "initialized" - - def __repr__(self) -> str: - return "<{} {} oldfd={} _state={!r} tmpfile={!r}>".format( - self.__class__.__name__, - self.targetfd, - self.targetfd_save, - self._state, - self.tmpfile, - ) - - def _assert_state(self, op: str, states: Tuple[str, ...]) -> None: - assert ( - self._state in states - ), "cannot {} in state {!r}: expected one of {}".format( - op, self._state, ", ".join(states) - ) - - def start(self) -> None: - """Start capturing on targetfd using memorized tmpfile.""" - self._assert_state("start", ("initialized",)) - os.dup2(self.tmpfile.fileno(), self.targetfd) - self.syscapture.start() - self._state = "started" - - def snap(self): - self._assert_state("snap", ("started", "suspended")) - self.tmpfile.seek(0) - res = self.tmpfile.buffer.read() - self.tmpfile.seek(0) - self.tmpfile.truncate() - return res - - def done(self) -> None: - """Stop capturing, restore streams, return original capture file, - seeked to position zero.""" - self._assert_state("done", ("initialized", "started", "suspended", "done")) - if self._state == "done": - return - os.dup2(self.targetfd_save, self.targetfd) - os.close(self.targetfd_save) - if self.targetfd_invalid is not None: - if self.targetfd_invalid != self.targetfd: - os.close(self.targetfd) - os.close(self.targetfd_invalid) - self.syscapture.done() - self.tmpfile.close() - self._state = "done" - - def suspend(self) -> None: - self._assert_state("suspend", ("started", "suspended")) - if self._state == "suspended": - return - self.syscapture.suspend() - os.dup2(self.targetfd_save, self.targetfd) - self._state = "suspended" - - def resume(self) -> None: - self._assert_state("resume", ("started", "suspended")) - if self._state == "started": - return - self.syscapture.resume() - os.dup2(self.tmpfile.fileno(), self.targetfd) - self._state = "started" - - def writeorg(self, data): - """Write to original file descriptor.""" - self._assert_state("writeorg", ("started", "suspended")) - os.write(self.targetfd_save, data) - - -class FDCapture(FDCaptureBinary): - """Capture IO to/from a given OS-level file descriptor. - - snap() produces text. - """ - - # Ignore type because it doesn't match the type in the superclass (bytes). - EMPTY_BUFFER = "" # type: ignore - - def snap(self): - self._assert_state("snap", ("started", "suspended")) - self.tmpfile.seek(0) - res = self.tmpfile.read() - self.tmpfile.seek(0) - self.tmpfile.truncate() - return res - - def writeorg(self, data): - """Write to original file descriptor.""" - super().writeorg(data.encode("utf-8")) # XXX use encoding of original stream - - -# MultiCapture - - -# This class was a namedtuple, but due to mypy limitation[0] it could not be -# made generic, so was replaced by a regular class which tries to emulate the -# pertinent parts of a namedtuple. If the mypy limitation is ever lifted, can -# make it a namedtuple again. -# [0]: https://github.com/python/mypy/issues/685 -@final -@functools.total_ordering -class CaptureResult(Generic[AnyStr]): - """The result of :method:`CaptureFixture.readouterr`.""" - - __slots__ = ("out", "err") - - def __init__(self, out: AnyStr, err: AnyStr) -> None: - self.out: AnyStr = out - self.err: AnyStr = err - - def __len__(self) -> int: - return 2 - - def __iter__(self) -> Iterator[AnyStr]: - return iter((self.out, self.err)) - - def __getitem__(self, item: int) -> AnyStr: - return tuple(self)[item] - - def _replace( - self, *, out: Optional[AnyStr] = None, err: Optional[AnyStr] = None - ) -> "CaptureResult[AnyStr]": - return CaptureResult( - out=self.out if out is None else out, err=self.err if err is None else err - ) - - def count(self, value: AnyStr) -> int: - return tuple(self).count(value) - - def index(self, value) -> int: - return tuple(self).index(value) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, (CaptureResult, tuple)): - return NotImplemented - return tuple(self) == tuple(other) - - def __hash__(self) -> int: - return hash(tuple(self)) - - def __lt__(self, other: object) -> bool: - if not isinstance(other, (CaptureResult, tuple)): - return NotImplemented - return tuple(self) < tuple(other) - - def __repr__(self) -> str: - return f"CaptureResult(out={self.out!r}, err={self.err!r})" - - -class MultiCapture(Generic[AnyStr]): - _state = None - _in_suspended = False - - def __init__(self, in_, out, err) -> None: - self.in_ = in_ - self.out = out - self.err = err - - def __repr__(self) -> str: - return "".format( - self.out, - self.err, - self.in_, - self._state, - self._in_suspended, - ) - - def start_capturing(self) -> None: - self._state = "started" - if self.in_: - self.in_.start() - if self.out: - self.out.start() - if self.err: - self.err.start() - - def pop_outerr_to_orig(self) -> Tuple[AnyStr, AnyStr]: - """Pop current snapshot out/err capture and flush to orig streams.""" - out, err = self.readouterr() - if out: - self.out.writeorg(out) - if err: - self.err.writeorg(err) - return out, err - - def suspend_capturing(self, in_: bool = False) -> None: - self._state = "suspended" - if self.out: - self.out.suspend() - if self.err: - self.err.suspend() - if in_ and self.in_: - self.in_.suspend() - self._in_suspended = True - - def resume_capturing(self) -> None: - self._state = "started" - if self.out: - self.out.resume() - if self.err: - self.err.resume() - if self._in_suspended: - self.in_.resume() - self._in_suspended = False - - def stop_capturing(self) -> None: - """Stop capturing and reset capturing streams.""" - if self._state == "stopped": - raise ValueError("was already stopped") - self._state = "stopped" - if self.out: - self.out.done() - if self.err: - self.err.done() - if self.in_: - self.in_.done() - - def is_started(self) -> bool: - """Whether actively capturing -- not suspended or stopped.""" - return self._state == "started" - - def readouterr(self) -> CaptureResult[AnyStr]: - out = self.out.snap() if self.out else "" - err = self.err.snap() if self.err else "" - return CaptureResult(out, err) - - -def _get_multicapture(method: "_CaptureMethod") -> MultiCapture[str]: - if method == "fd": - return MultiCapture(in_=FDCapture(0), out=FDCapture(1), err=FDCapture(2)) - elif method == "sys": - return MultiCapture(in_=SysCapture(0), out=SysCapture(1), err=SysCapture(2)) - elif method == "no": - return MultiCapture(in_=None, out=None, err=None) - elif method == "tee-sys": - return MultiCapture( - in_=None, out=SysCapture(1, tee=True), err=SysCapture(2, tee=True) - ) - raise ValueError(f"unknown capturing method: {method!r}") - - -# CaptureManager and CaptureFixture - - -class CaptureManager: - """The capture plugin. - - Manages that the appropriate capture method is enabled/disabled during - collection and each test phase (setup, call, teardown). After each of - those points, the captured output is obtained and attached to the - collection/runtest report. - - There are two levels of capture: - - * global: enabled by default and can be suppressed by the ``-s`` - option. This is always enabled/disabled during collection and each test - phase. - - * fixture: when a test function or one of its fixture depend on the - ``capsys`` or ``capfd`` fixtures. In this case special handling is - needed to ensure the fixtures take precedence over the global capture. - """ - - def __init__(self, method: "_CaptureMethod") -> None: - self._method = method - self._global_capturing: Optional[MultiCapture[str]] = None - self._capture_fixture: Optional[CaptureFixture[Any]] = None - - def __repr__(self) -> str: - return "".format( - self._method, self._global_capturing, self._capture_fixture - ) - - def is_capturing(self) -> Union[str, bool]: - if self.is_globally_capturing(): - return "global" - if self._capture_fixture: - return "fixture %s" % self._capture_fixture.request.fixturename - return False - - # Global capturing control - - def is_globally_capturing(self) -> bool: - return self._method != "no" - - def start_global_capturing(self) -> None: - assert self._global_capturing is None - self._global_capturing = _get_multicapture(self._method) - self._global_capturing.start_capturing() - - def stop_global_capturing(self) -> None: - if self._global_capturing is not None: - self._global_capturing.pop_outerr_to_orig() - self._global_capturing.stop_capturing() - self._global_capturing = None - - def resume_global_capture(self) -> None: - # During teardown of the python process, and on rare occasions, capture - # attributes can be `None` while trying to resume global capture. - if self._global_capturing is not None: - self._global_capturing.resume_capturing() - - def suspend_global_capture(self, in_: bool = False) -> None: - if self._global_capturing is not None: - self._global_capturing.suspend_capturing(in_=in_) - - def suspend(self, in_: bool = False) -> None: - # Need to undo local capsys-et-al if it exists before disabling global capture. - self.suspend_fixture() - self.suspend_global_capture(in_) - - def resume(self) -> None: - self.resume_global_capture() - self.resume_fixture() - - def read_global_capture(self) -> CaptureResult[str]: - assert self._global_capturing is not None - return self._global_capturing.readouterr() - - # Fixture Control - - def set_fixture(self, capture_fixture: "CaptureFixture[Any]") -> None: - if self._capture_fixture: - current_fixture = self._capture_fixture.request.fixturename - requested_fixture = capture_fixture.request.fixturename - capture_fixture.request.raiseerror( - "cannot use {} and {} at the same time".format( - requested_fixture, current_fixture - ) - ) - self._capture_fixture = capture_fixture - - def unset_fixture(self) -> None: - self._capture_fixture = None - - def activate_fixture(self) -> None: - """If the current item is using ``capsys`` or ``capfd``, activate - them so they take precedence over the global capture.""" - if self._capture_fixture: - self._capture_fixture._start() - - def deactivate_fixture(self) -> None: - """Deactivate the ``capsys`` or ``capfd`` fixture of this item, if any.""" - if self._capture_fixture: - self._capture_fixture.close() - - def suspend_fixture(self) -> None: - if self._capture_fixture: - self._capture_fixture._suspend() - - def resume_fixture(self) -> None: - if self._capture_fixture: - self._capture_fixture._resume() - - # Helper context managers - - @contextlib.contextmanager - def global_and_fixture_disabled(self) -> Generator[None, None, None]: - """Context manager to temporarily disable global and current fixture capturing.""" - do_fixture = self._capture_fixture and self._capture_fixture._is_started() - if do_fixture: - self.suspend_fixture() - do_global = self._global_capturing and self._global_capturing.is_started() - if do_global: - self.suspend_global_capture() - try: - yield - finally: - if do_global: - self.resume_global_capture() - if do_fixture: - self.resume_fixture() - - @contextlib.contextmanager - def item_capture(self, when: str, item: Item) -> Generator[None, None, None]: - self.resume_global_capture() - self.activate_fixture() - try: - yield - finally: - self.deactivate_fixture() - self.suspend_global_capture(in_=False) - - out, err = self.read_global_capture() - item.add_report_section(when, "stdout", out) - item.add_report_section(when, "stderr", err) - - # Hooks - - @hookimpl(hookwrapper=True) - def pytest_make_collect_report(self, collector: Collector): - if isinstance(collector, File): - self.resume_global_capture() - outcome = yield - self.suspend_global_capture() - out, err = self.read_global_capture() - rep = outcome.get_result() - if out: - rep.sections.append(("Captured stdout", out)) - if err: - rep.sections.append(("Captured stderr", err)) - else: - yield - - @hookimpl(hookwrapper=True) - def pytest_runtest_setup(self, item: Item) -> Generator[None, None, None]: - with self.item_capture("setup", item): - yield - - @hookimpl(hookwrapper=True) - def pytest_runtest_call(self, item: Item) -> Generator[None, None, None]: - with self.item_capture("call", item): - yield - - @hookimpl(hookwrapper=True) - def pytest_runtest_teardown(self, item: Item) -> Generator[None, None, None]: - with self.item_capture("teardown", item): - yield - - @hookimpl(tryfirst=True) - def pytest_keyboard_interrupt(self) -> None: - self.stop_global_capturing() - - @hookimpl(tryfirst=True) - def pytest_internalerror(self) -> None: - self.stop_global_capturing() - - -class CaptureFixture(Generic[AnyStr]): - """Object returned by the :fixture:`capsys`, :fixture:`capsysbinary`, - :fixture:`capfd` and :fixture:`capfdbinary` fixtures.""" - - def __init__( - self, captureclass, request: SubRequest, *, _ispytest: bool = False - ) -> None: - check_ispytest(_ispytest) - self.captureclass = captureclass - self.request = request - self._capture: Optional[MultiCapture[AnyStr]] = None - self._captured_out = self.captureclass.EMPTY_BUFFER - self._captured_err = self.captureclass.EMPTY_BUFFER - - def _start(self) -> None: - if self._capture is None: - self._capture = MultiCapture( - in_=None, - out=self.captureclass(1), - err=self.captureclass(2), - ) - self._capture.start_capturing() - - def close(self) -> None: - if self._capture is not None: - out, err = self._capture.pop_outerr_to_orig() - self._captured_out += out - self._captured_err += err - self._capture.stop_capturing() - self._capture = None - - def readouterr(self) -> CaptureResult[AnyStr]: - """Read and return the captured output so far, resetting the internal - buffer. - - :returns: - The captured content as a namedtuple with ``out`` and ``err`` - string attributes. - """ - captured_out, captured_err = self._captured_out, self._captured_err - if self._capture is not None: - out, err = self._capture.readouterr() - captured_out += out - captured_err += err - self._captured_out = self.captureclass.EMPTY_BUFFER - self._captured_err = self.captureclass.EMPTY_BUFFER - return CaptureResult(captured_out, captured_err) - - def _suspend(self) -> None: - """Suspend this fixture's own capturing temporarily.""" - if self._capture is not None: - self._capture.suspend_capturing() - - def _resume(self) -> None: - """Resume this fixture's own capturing temporarily.""" - if self._capture is not None: - self._capture.resume_capturing() - - def _is_started(self) -> bool: - """Whether actively capturing -- not disabled or closed.""" - if self._capture is not None: - return self._capture.is_started() - return False - - @contextlib.contextmanager - def disabled(self) -> Generator[None, None, None]: - """Temporarily disable capturing while inside the ``with`` block.""" - capmanager = self.request.config.pluginmanager.getplugin("capturemanager") - with capmanager.global_and_fixture_disabled(): - yield - - -# The fixtures. - - -@fixture -def capsys(request: SubRequest) -> Generator[CaptureFixture[str], None, None]: - r"""Enable text capturing of writes to ``sys.stdout`` and ``sys.stderr``. - - The captured output is made available via ``capsys.readouterr()`` method - calls, which return a ``(out, err)`` namedtuple. - ``out`` and ``err`` will be ``text`` objects. - - Returns an instance of :class:`CaptureFixture[str] `. - - Example: - - .. code-block:: python - - def test_output(capsys): - print("hello") - captured = capsys.readouterr() - assert captured.out == "hello\n" - """ - capman = request.config.pluginmanager.getplugin("capturemanager") - capture_fixture = CaptureFixture[str](SysCapture, request, _ispytest=True) - capman.set_fixture(capture_fixture) - capture_fixture._start() - yield capture_fixture - capture_fixture.close() - capman.unset_fixture() - - -@fixture -def capsysbinary(request: SubRequest) -> Generator[CaptureFixture[bytes], None, None]: - r"""Enable bytes capturing of writes to ``sys.stdout`` and ``sys.stderr``. - - The captured output is made available via ``capsysbinary.readouterr()`` - method calls, which return a ``(out, err)`` namedtuple. - ``out`` and ``err`` will be ``bytes`` objects. - - Returns an instance of :class:`CaptureFixture[bytes] `. - - Example: - - .. code-block:: python - - def test_output(capsysbinary): - print("hello") - captured = capsysbinary.readouterr() - assert captured.out == b"hello\n" - """ - capman = request.config.pluginmanager.getplugin("capturemanager") - capture_fixture = CaptureFixture[bytes](SysCaptureBinary, request, _ispytest=True) - capman.set_fixture(capture_fixture) - capture_fixture._start() - yield capture_fixture - capture_fixture.close() - capman.unset_fixture() - - -@fixture -def capfd(request: SubRequest) -> Generator[CaptureFixture[str], None, None]: - r"""Enable text capturing of writes to file descriptors ``1`` and ``2``. - - The captured output is made available via ``capfd.readouterr()`` method - calls, which return a ``(out, err)`` namedtuple. - ``out`` and ``err`` will be ``text`` objects. - - Returns an instance of :class:`CaptureFixture[str] `. - - Example: - - .. code-block:: python - - def test_system_echo(capfd): - os.system('echo "hello"') - captured = capfd.readouterr() - assert captured.out == "hello\n" - """ - capman = request.config.pluginmanager.getplugin("capturemanager") - capture_fixture = CaptureFixture[str](FDCapture, request, _ispytest=True) - capman.set_fixture(capture_fixture) - capture_fixture._start() - yield capture_fixture - capture_fixture.close() - capman.unset_fixture() - - -@fixture -def capfdbinary(request: SubRequest) -> Generator[CaptureFixture[bytes], None, None]: - r"""Enable bytes capturing of writes to file descriptors ``1`` and ``2``. - - The captured output is made available via ``capfd.readouterr()`` method - calls, which return a ``(out, err)`` namedtuple. - ``out`` and ``err`` will be ``byte`` objects. - - Returns an instance of :class:`CaptureFixture[bytes] `. - - Example: - - .. code-block:: python - - def test_system_echo(capfdbinary): - os.system('echo "hello"') - captured = capfdbinary.readouterr() - assert captured.out == b"hello\n" - - """ - capman = request.config.pluginmanager.getplugin("capturemanager") - capture_fixture = CaptureFixture[bytes](FDCaptureBinary, request, _ispytest=True) - capman.set_fixture(capture_fixture) - capture_fixture._start() - yield capture_fixture - capture_fixture.close() - capman.unset_fixture() diff --git a/venv/lib/python3.12/site-packages/_pytest/compat.py b/venv/lib/python3.12/site-packages/_pytest/compat.py deleted file mode 100644 index 211407b..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/compat.py +++ /dev/null @@ -1,417 +0,0 @@ -"""Python version compatibility code.""" -import enum -import functools -import inspect -import os -import sys -from inspect import Parameter -from inspect import signature -from pathlib import Path -from typing import Any -from typing import Callable -from typing import Generic -from typing import NoReturn -from typing import Optional -from typing import Tuple -from typing import TYPE_CHECKING -from typing import TypeVar -from typing import Union - -import attr - -import py - -# fmt: off -# Workaround for https://github.com/sphinx-doc/sphinx/issues/10351. -# If `overload` is imported from `compat` instead of from `typing`, -# Sphinx doesn't recognize it as `overload` and the API docs for -# overloaded functions look good again. But type checkers handle -# it fine. -# fmt: on -if True: - from typing import overload as overload - -if TYPE_CHECKING: - from typing_extensions import Final - - -_T = TypeVar("_T") -_S = TypeVar("_S") - -#: constant to prepare valuing pylib path replacements/lazy proxies later on -# intended for removal in pytest 8.0 or 9.0 - -# fmt: off -# intentional space to create a fake difference for the verification -LEGACY_PATH = py.path. local -# fmt: on - - -def legacy_path(path: Union[str, "os.PathLike[str]"]) -> LEGACY_PATH: - """Internal wrapper to prepare lazy proxies for legacy_path instances""" - return LEGACY_PATH(path) - - -# fmt: off -# Singleton type for NOTSET, as described in: -# https://www.python.org/dev/peps/pep-0484/#support-for-singleton-types-in-unions -class NotSetType(enum.Enum): - token = 0 -NOTSET: "Final" = NotSetType.token # noqa: E305 -# fmt: on - -if sys.version_info >= (3, 8): - import importlib.metadata - - importlib_metadata = importlib.metadata -else: - import importlib_metadata as importlib_metadata # noqa: F401 - - -def _format_args(func: Callable[..., Any]) -> str: - return str(signature(func)) - - -def is_generator(func: object) -> bool: - genfunc = inspect.isgeneratorfunction(func) - return genfunc and not iscoroutinefunction(func) - - -def iscoroutinefunction(func: object) -> bool: - """Return True if func is a coroutine function (a function defined with async - def syntax, and doesn't contain yield), or a function decorated with - @asyncio.coroutine. - - Note: copied and modified from Python 3.5's builtin couroutines.py to avoid - importing asyncio directly, which in turns also initializes the "logging" - module as a side-effect (see issue #8). - """ - return inspect.iscoroutinefunction(func) or getattr(func, "_is_coroutine", False) - - -def is_async_function(func: object) -> bool: - """Return True if the given function seems to be an async function or - an async generator.""" - return iscoroutinefunction(func) or inspect.isasyncgenfunction(func) - - -def getlocation(function, curdir: Optional[str] = None) -> str: - function = get_real_func(function) - fn = Path(inspect.getfile(function)) - lineno = function.__code__.co_firstlineno - if curdir is not None: - try: - relfn = fn.relative_to(curdir) - except ValueError: - pass - else: - return "%s:%d" % (relfn, lineno + 1) - return "%s:%d" % (fn, lineno + 1) - - -def num_mock_patch_args(function) -> int: - """Return number of arguments used up by mock arguments (if any).""" - patchings = getattr(function, "patchings", None) - if not patchings: - return 0 - - mock_sentinel = getattr(sys.modules.get("mock"), "DEFAULT", object()) - ut_mock_sentinel = getattr(sys.modules.get("unittest.mock"), "DEFAULT", object()) - - return len( - [ - p - for p in patchings - if not p.attribute_name - and (p.new is mock_sentinel or p.new is ut_mock_sentinel) - ] - ) - - -def getfuncargnames( - function: Callable[..., Any], - *, - name: str = "", - is_method: bool = False, - cls: Optional[type] = None, -) -> Tuple[str, ...]: - """Return the names of a function's mandatory arguments. - - Should return the names of all function arguments that: - * Aren't bound to an instance or type as in instance or class methods. - * Don't have default values. - * Aren't bound with functools.partial. - * Aren't replaced with mocks. - - The is_method and cls arguments indicate that the function should - be treated as a bound method even though it's not unless, only in - the case of cls, the function is a static method. - - The name parameter should be the original name in which the function was collected. - """ - # TODO(RonnyPfannschmidt): This function should be refactored when we - # revisit fixtures. The fixture mechanism should ask the node for - # the fixture names, and not try to obtain directly from the - # function object well after collection has occurred. - - # The parameters attribute of a Signature object contains an - # ordered mapping of parameter names to Parameter instances. This - # creates a tuple of the names of the parameters that don't have - # defaults. - try: - parameters = signature(function).parameters - except (ValueError, TypeError) as e: - from _pytest.outcomes import fail - - fail( - f"Could not determine arguments of {function!r}: {e}", - pytrace=False, - ) - - arg_names = tuple( - p.name - for p in parameters.values() - if ( - p.kind is Parameter.POSITIONAL_OR_KEYWORD - or p.kind is Parameter.KEYWORD_ONLY - ) - and p.default is Parameter.empty - ) - if not name: - name = function.__name__ - - # If this function should be treated as a bound method even though - # it's passed as an unbound method or function, remove the first - # parameter name. - if is_method or ( - # Not using `getattr` because we don't want to resolve the staticmethod. - # Not using `cls.__dict__` because we want to check the entire MRO. - cls - and not isinstance( - inspect.getattr_static(cls, name, default=None), staticmethod - ) - ): - arg_names = arg_names[1:] - # Remove any names that will be replaced with mocks. - if hasattr(function, "__wrapped__"): - arg_names = arg_names[num_mock_patch_args(function) :] - return arg_names - - -def get_default_arg_names(function: Callable[..., Any]) -> Tuple[str, ...]: - # Note: this code intentionally mirrors the code at the beginning of - # getfuncargnames, to get the arguments which were excluded from its result - # because they had default values. - return tuple( - p.name - for p in signature(function).parameters.values() - if p.kind in (Parameter.POSITIONAL_OR_KEYWORD, Parameter.KEYWORD_ONLY) - and p.default is not Parameter.empty - ) - - -_non_printable_ascii_translate_table = { - i: f"\\x{i:02x}" for i in range(128) if i not in range(32, 127) -} -_non_printable_ascii_translate_table.update( - {ord("\t"): "\\t", ord("\r"): "\\r", ord("\n"): "\\n"} -) - - -def _translate_non_printable(s: str) -> str: - return s.translate(_non_printable_ascii_translate_table) - - -STRING_TYPES = bytes, str - - -def _bytes_to_ascii(val: bytes) -> str: - return val.decode("ascii", "backslashreplace") - - -def ascii_escaped(val: Union[bytes, str]) -> str: - r"""If val is pure ASCII, return it as an str, otherwise, escape - bytes objects into a sequence of escaped bytes: - - b'\xc3\xb4\xc5\xd6' -> r'\xc3\xb4\xc5\xd6' - - and escapes unicode objects into a sequence of escaped unicode - ids, e.g.: - - r'4\nV\U00043efa\x0eMXWB\x1e\u3028\u15fd\xcd\U0007d944' - - Note: - The obvious "v.decode('unicode-escape')" will return - valid UTF-8 unicode if it finds them in bytes, but we - want to return escaped bytes for any byte, even if they match - a UTF-8 string. - """ - if isinstance(val, bytes): - ret = _bytes_to_ascii(val) - else: - ret = val.encode("unicode_escape").decode("ascii") - return _translate_non_printable(ret) - - -@attr.s -class _PytestWrapper: - """Dummy wrapper around a function object for internal use only. - - Used to correctly unwrap the underlying function object when we are - creating fixtures, because we wrap the function object ourselves with a - decorator to issue warnings when the fixture function is called directly. - """ - - obj = attr.ib() - - -def get_real_func(obj): - """Get the real function object of the (possibly) wrapped object by - functools.wraps or functools.partial.""" - start_obj = obj - for i in range(100): - # __pytest_wrapped__ is set by @pytest.fixture when wrapping the fixture function - # to trigger a warning if it gets called directly instead of by pytest: we don't - # want to unwrap further than this otherwise we lose useful wrappings like @mock.patch (#3774) - new_obj = getattr(obj, "__pytest_wrapped__", None) - if isinstance(new_obj, _PytestWrapper): - obj = new_obj.obj - break - new_obj = getattr(obj, "__wrapped__", None) - if new_obj is None: - break - obj = new_obj - else: - from _pytest._io.saferepr import saferepr - - raise ValueError( - ("could not find real function of {start}\nstopped at {current}").format( - start=saferepr(start_obj), current=saferepr(obj) - ) - ) - if isinstance(obj, functools.partial): - obj = obj.func - return obj - - -def get_real_method(obj, holder): - """Attempt to obtain the real function object that might be wrapping - ``obj``, while at the same time returning a bound method to ``holder`` if - the original object was a bound method.""" - try: - is_method = hasattr(obj, "__func__") - obj = get_real_func(obj) - except Exception: # pragma: no cover - return obj - if is_method and hasattr(obj, "__get__") and callable(obj.__get__): - obj = obj.__get__(holder) - return obj - - -def getimfunc(func): - try: - return func.__func__ - except AttributeError: - return func - - -def safe_getattr(object: Any, name: str, default: Any) -> Any: - """Like getattr but return default upon any Exception or any OutcomeException. - - Attribute access can potentially fail for 'evil' Python objects. - See issue #214. - It catches OutcomeException because of #2490 (issue #580), new outcomes - are derived from BaseException instead of Exception (for more details - check #2707). - """ - from _pytest.outcomes import TEST_OUTCOME - - try: - return getattr(object, name, default) - except TEST_OUTCOME: - return default - - -def safe_isclass(obj: object) -> bool: - """Ignore any exception via isinstance on Python 3.""" - try: - return inspect.isclass(obj) - except Exception: - return False - - -if TYPE_CHECKING: - if sys.version_info >= (3, 8): - from typing import final as final - else: - from typing_extensions import final as final -elif sys.version_info >= (3, 8): - from typing import final as final -else: - - def final(f): - return f - - -if sys.version_info >= (3, 8): - from functools import cached_property as cached_property -else: - from typing import Type - - class cached_property(Generic[_S, _T]): - __slots__ = ("func", "__doc__") - - def __init__(self, func: Callable[[_S], _T]) -> None: - self.func = func - self.__doc__ = func.__doc__ - - @overload - def __get__( - self, instance: None, owner: Optional[Type[_S]] = ... - ) -> "cached_property[_S, _T]": - ... - - @overload - def __get__(self, instance: _S, owner: Optional[Type[_S]] = ...) -> _T: - ... - - def __get__(self, instance, owner=None): - if instance is None: - return self - value = instance.__dict__[self.func.__name__] = self.func(instance) - return value - - -# Perform exhaustiveness checking. -# -# Consider this example: -# -# MyUnion = Union[int, str] -# -# def handle(x: MyUnion) -> int { -# if isinstance(x, int): -# return 1 -# elif isinstance(x, str): -# return 2 -# else: -# raise Exception('unreachable') -# -# Now suppose we add a new variant: -# -# MyUnion = Union[int, str, bytes] -# -# After doing this, we must remember ourselves to go and update the handle -# function to handle the new variant. -# -# With `assert_never` we can do better: -# -# // raise Exception('unreachable') -# return assert_never(x) -# -# Now, if we forget to handle the new variant, the type-checker will emit a -# compile-time error, instead of the runtime error we would have gotten -# previously. -# -# This also work for Enums (if you use `is` to compare) and Literals. -def assert_never(value: NoReturn) -> NoReturn: - assert False, f"Unhandled value: {value} ({type(value).__name__})" diff --git a/venv/lib/python3.12/site-packages/_pytest/config/__init__.py b/venv/lib/python3.12/site-packages/_pytest/config/__init__.py deleted file mode 100644 index bd2611d..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/config/__init__.py +++ /dev/null @@ -1,1747 +0,0 @@ -"""Command line options, ini-file and conftest.py processing.""" -import argparse -import collections.abc -import copy -import enum -import glob -import inspect -import os -import re -import shlex -import sys -import types -import warnings -from functools import lru_cache -from pathlib import Path -from textwrap import dedent -from types import FunctionType -from types import TracebackType -from typing import Any -from typing import Callable -from typing import cast -from typing import Dict -from typing import Generator -from typing import IO -from typing import Iterable -from typing import Iterator -from typing import List -from typing import Optional -from typing import Sequence -from typing import Set -from typing import TextIO -from typing import Tuple -from typing import Type -from typing import TYPE_CHECKING -from typing import Union - -import attr -from pluggy import HookimplMarker -from pluggy import HookspecMarker -from pluggy import PluginManager - -import _pytest._code -import _pytest.deprecated -import _pytest.hookspec -from .exceptions import PrintHelp as PrintHelp -from .exceptions import UsageError as UsageError -from .findpaths import determine_setup -from _pytest._code import ExceptionInfo -from _pytest._code import filter_traceback -from _pytest._io import TerminalWriter -from _pytest.compat import final -from _pytest.compat import importlib_metadata -from _pytest.outcomes import fail -from _pytest.outcomes import Skipped -from _pytest.pathlib import absolutepath -from _pytest.pathlib import bestrelpath -from _pytest.pathlib import import_path -from _pytest.pathlib import ImportMode -from _pytest.pathlib import resolve_package_path -from _pytest.stash import Stash -from _pytest.warning_types import PytestConfigWarning -from _pytest.warning_types import warn_explicit_for - -if TYPE_CHECKING: - - from _pytest._code.code import _TracebackStyle - from _pytest.terminal import TerminalReporter - from .argparsing import Argument - - -_PluggyPlugin = object -"""A type to represent plugin objects. - -Plugins can be any namespace, so we can't narrow it down much, but we use an -alias to make the intent clear. - -Ideally this type would be provided by pluggy itself. -""" - - -hookimpl = HookimplMarker("pytest") -hookspec = HookspecMarker("pytest") - - -@final -class ExitCode(enum.IntEnum): - """Encodes the valid exit codes by pytest. - - Currently users and plugins may supply other exit codes as well. - - .. versionadded:: 5.0 - """ - - #: Tests passed. - OK = 0 - #: Tests failed. - TESTS_FAILED = 1 - #: pytest was interrupted. - INTERRUPTED = 2 - #: An internal error got in the way. - INTERNAL_ERROR = 3 - #: pytest was misused. - USAGE_ERROR = 4 - #: pytest couldn't find tests. - NO_TESTS_COLLECTED = 5 - - -class ConftestImportFailure(Exception): - def __init__( - self, - path: Path, - excinfo: Tuple[Type[Exception], Exception, TracebackType], - ) -> None: - super().__init__(path, excinfo) - self.path = path - self.excinfo = excinfo - - def __str__(self) -> str: - return "{}: {} (from {})".format( - self.excinfo[0].__name__, self.excinfo[1], self.path - ) - - -def filter_traceback_for_conftest_import_failure( - entry: _pytest._code.TracebackEntry, -) -> bool: - """Filter tracebacks entries which point to pytest internals or importlib. - - Make a special case for importlib because we use it to import test modules and conftest files - in _pytest.pathlib.import_path. - """ - return filter_traceback(entry) and "importlib" not in str(entry.path).split(os.sep) - - -def main( - args: Optional[Union[List[str], "os.PathLike[str]"]] = None, - plugins: Optional[Sequence[Union[str, _PluggyPlugin]]] = None, -) -> Union[int, ExitCode]: - """Perform an in-process test run. - - :param args: List of command line arguments. - :param plugins: List of plugin objects to be auto-registered during initialization. - - :returns: An exit code. - """ - try: - try: - config = _prepareconfig(args, plugins) - except ConftestImportFailure as e: - exc_info = ExceptionInfo.from_exc_info(e.excinfo) - tw = TerminalWriter(sys.stderr) - tw.line(f"ImportError while loading conftest '{e.path}'.", red=True) - exc_info.traceback = exc_info.traceback.filter( - filter_traceback_for_conftest_import_failure - ) - exc_repr = ( - exc_info.getrepr(style="short", chain=False) - if exc_info.traceback - else exc_info.exconly() - ) - formatted_tb = str(exc_repr) - for line in formatted_tb.splitlines(): - tw.line(line.rstrip(), red=True) - return ExitCode.USAGE_ERROR - else: - try: - ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main( - config=config - ) - try: - return ExitCode(ret) - except ValueError: - return ret - finally: - config._ensure_unconfigure() - except UsageError as e: - tw = TerminalWriter(sys.stderr) - for msg in e.args: - tw.line(f"ERROR: {msg}\n", red=True) - return ExitCode.USAGE_ERROR - - -def console_main() -> int: - """The CLI entry point of pytest. - - This function is not meant for programmable use; use `main()` instead. - """ - # https://docs.python.org/3/library/signal.html#note-on-sigpipe - try: - code = main() - sys.stdout.flush() - return code - except BrokenPipeError: - # Python flushes standard streams on exit; redirect remaining output - # to devnull to avoid another BrokenPipeError at shutdown - devnull = os.open(os.devnull, os.O_WRONLY) - os.dup2(devnull, sys.stdout.fileno()) - return 1 # Python exits with error code 1 on EPIPE - - -class cmdline: # compatibility namespace - main = staticmethod(main) - - -def filename_arg(path: str, optname: str) -> str: - """Argparse type validator for filename arguments. - - :path: Path of filename. - :optname: Name of the option. - """ - if os.path.isdir(path): - raise UsageError(f"{optname} must be a filename, given: {path}") - return path - - -def directory_arg(path: str, optname: str) -> str: - """Argparse type validator for directory arguments. - - :path: Path of directory. - :optname: Name of the option. - """ - if not os.path.isdir(path): - raise UsageError(f"{optname} must be a directory, given: {path}") - return path - - -# Plugins that cannot be disabled via "-p no:X" currently. -essential_plugins = ( - "mark", - "main", - "runner", - "fixtures", - "helpconfig", # Provides -p. -) - -default_plugins = essential_plugins + ( - "python", - "terminal", - "debugging", - "unittest", - "capture", - "skipping", - "legacypath", - "tmpdir", - "monkeypatch", - "recwarn", - "pastebin", - "nose", - "assertion", - "junitxml", - "doctest", - "cacheprovider", - "freeze_support", - "setuponly", - "setupplan", - "stepwise", - "warnings", - "logging", - "reports", - "python_path", - *(["unraisableexception", "threadexception"] if sys.version_info >= (3, 8) else []), - "faulthandler", -) - -builtin_plugins = set(default_plugins) -builtin_plugins.add("pytester") -builtin_plugins.add("pytester_assertions") - - -def get_config( - args: Optional[List[str]] = None, - plugins: Optional[Sequence[Union[str, _PluggyPlugin]]] = None, -) -> "Config": - # subsequent calls to main will create a fresh instance - pluginmanager = PytestPluginManager() - config = Config( - pluginmanager, - invocation_params=Config.InvocationParams( - args=args or (), - plugins=plugins, - dir=Path.cwd(), - ), - ) - - if args is not None: - # Handle any "-p no:plugin" args. - pluginmanager.consider_preparse(args, exclude_only=True) - - for spec in default_plugins: - pluginmanager.import_plugin(spec) - - return config - - -def get_plugin_manager() -> "PytestPluginManager": - """Obtain a new instance of the - :py:class:`pytest.PytestPluginManager`, with default plugins - already loaded. - - This function can be used by integration with other tools, like hooking - into pytest to run tests into an IDE. - """ - return get_config().pluginmanager - - -def _prepareconfig( - args: Optional[Union[List[str], "os.PathLike[str]"]] = None, - plugins: Optional[Sequence[Union[str, _PluggyPlugin]]] = None, -) -> "Config": - if args is None: - args = sys.argv[1:] - elif isinstance(args, os.PathLike): - args = [os.fspath(args)] - elif not isinstance(args, list): - msg = ( # type:ignore[unreachable] - "`args` parameter expected to be a list of strings, got: {!r} (type: {})" - ) - raise TypeError(msg.format(args, type(args))) - - config = get_config(args, plugins) - pluginmanager = config.pluginmanager - try: - if plugins: - for plugin in plugins: - if isinstance(plugin, str): - pluginmanager.consider_pluginarg(plugin) - else: - pluginmanager.register(plugin) - config = pluginmanager.hook.pytest_cmdline_parse( - pluginmanager=pluginmanager, args=args - ) - return config - except BaseException: - config._ensure_unconfigure() - raise - - -def _get_directory(path: Path) -> Path: - """Get the directory of a path - itself if already a directory.""" - if path.is_file(): - return path.parent - else: - return path - - -def _get_legacy_hook_marks( - method: Any, - hook_type: str, - opt_names: Tuple[str, ...], -) -> Dict[str, bool]: - if TYPE_CHECKING: - # abuse typeguard from importlib to avoid massive method type union thats lacking a alias - assert inspect.isroutine(method) - known_marks: set[str] = {m.name for m in getattr(method, "pytestmark", [])} - must_warn: list[str] = [] - opts: dict[str, bool] = {} - for opt_name in opt_names: - opt_attr = getattr(method, opt_name, AttributeError) - if opt_attr is not AttributeError: - must_warn.append(f"{opt_name}={opt_attr}") - opts[opt_name] = True - elif opt_name in known_marks: - must_warn.append(f"{opt_name}=True") - opts[opt_name] = True - else: - opts[opt_name] = False - if must_warn: - hook_opts = ", ".join(must_warn) - message = _pytest.deprecated.HOOK_LEGACY_MARKING.format( - type=hook_type, - fullname=method.__qualname__, - hook_opts=hook_opts, - ) - warn_explicit_for(cast(FunctionType, method), message) - return opts - - -@final -class PytestPluginManager(PluginManager): - """A :py:class:`pluggy.PluginManager ` with - additional pytest-specific functionality: - - * Loading plugins from the command line, ``PYTEST_PLUGINS`` env variable and - ``pytest_plugins`` global variables found in plugins being loaded. - * ``conftest.py`` loading during start-up. - """ - - def __init__(self) -> None: - import _pytest.assertion - - super().__init__("pytest") - - # -- State related to local conftest plugins. - # All loaded conftest modules. - self._conftest_plugins: Set[types.ModuleType] = set() - # All conftest modules applicable for a directory. - # This includes the directory's own conftest modules as well - # as those of its parent directories. - self._dirpath2confmods: Dict[Path, List[types.ModuleType]] = {} - # Cutoff directory above which conftests are no longer discovered. - self._confcutdir: Optional[Path] = None - # If set, conftest loading is skipped. - self._noconftest = False - - # _getconftestmodules()'s call to _get_directory() causes a stat - # storm when it's called potentially thousands of times in a test - # session (#9478), often with the same path, so cache it. - self._get_directory = lru_cache(256)(_get_directory) - - self._duplicatepaths: Set[Path] = set() - - # plugins that were explicitly skipped with pytest.skip - # list of (module name, skip reason) - # previously we would issue a warning when a plugin was skipped, but - # since we refactored warnings as first citizens of Config, they are - # just stored here to be used later. - self.skipped_plugins: List[Tuple[str, str]] = [] - - self.add_hookspecs(_pytest.hookspec) - self.register(self) - if os.environ.get("PYTEST_DEBUG"): - err: IO[str] = sys.stderr - encoding: str = getattr(err, "encoding", "utf8") - try: - err = open( - os.dup(err.fileno()), - mode=err.mode, - buffering=1, - encoding=encoding, - ) - except Exception: - pass - self.trace.root.setwriter(err.write) - self.enable_tracing() - - # Config._consider_importhook will set a real object if required. - self.rewrite_hook = _pytest.assertion.DummyRewriteHook() - # Used to know when we are importing conftests after the pytest_configure stage. - self._configured = False - - def parse_hookimpl_opts(self, plugin: _PluggyPlugin, name: str): - # pytest hooks are always prefixed with "pytest_", - # so we avoid accessing possibly non-readable attributes - # (see issue #1073). - if not name.startswith("pytest_"): - return - # Ignore names which can not be hooks. - if name == "pytest_plugins": - return - - opts = super().parse_hookimpl_opts(plugin, name) - if opts is not None: - return opts - - method = getattr(plugin, name) - # Consider only actual functions for hooks (#3775). - if not inspect.isroutine(method): - return - # Collect unmarked hooks as long as they have the `pytest_' prefix. - return _get_legacy_hook_marks( - method, "impl", ("tryfirst", "trylast", "optionalhook", "hookwrapper") - ) - - def parse_hookspec_opts(self, module_or_class, name: str): - opts = super().parse_hookspec_opts(module_or_class, name) - if opts is None: - method = getattr(module_or_class, name) - if name.startswith("pytest_"): - opts = _get_legacy_hook_marks( - method, - "spec", - ("firstresult", "historic"), - ) - return opts - - def register( - self, plugin: _PluggyPlugin, name: Optional[str] = None - ) -> Optional[str]: - if name in _pytest.deprecated.DEPRECATED_EXTERNAL_PLUGINS: - warnings.warn( - PytestConfigWarning( - "{} plugin has been merged into the core, " - "please remove it from your requirements.".format( - name.replace("_", "-") - ) - ) - ) - return None - ret: Optional[str] = super().register(plugin, name) - if ret: - self.hook.pytest_plugin_registered.call_historic( - kwargs=dict(plugin=plugin, manager=self) - ) - - if isinstance(plugin, types.ModuleType): - self.consider_module(plugin) - return ret - - def getplugin(self, name: str): - # Support deprecated naming because plugins (xdist e.g.) use it. - plugin: Optional[_PluggyPlugin] = self.get_plugin(name) - return plugin - - def hasplugin(self, name: str) -> bool: - """Return whether a plugin with the given name is registered.""" - return bool(self.get_plugin(name)) - - def pytest_configure(self, config: "Config") -> None: - """:meta private:""" - # XXX now that the pluginmanager exposes hookimpl(tryfirst...) - # we should remove tryfirst/trylast as markers. - config.addinivalue_line( - "markers", - "tryfirst: mark a hook implementation function such that the " - "plugin machinery will try to call it first/as early as possible. " - "DEPRECATED, use @pytest.hookimpl(tryfirst=True) instead.", - ) - config.addinivalue_line( - "markers", - "trylast: mark a hook implementation function such that the " - "plugin machinery will try to call it last/as late as possible. " - "DEPRECATED, use @pytest.hookimpl(trylast=True) instead.", - ) - self._configured = True - - # - # Internal API for local conftest plugin handling. - # - def _set_initial_conftests( - self, namespace: argparse.Namespace, rootpath: Path - ) -> None: - """Load initial conftest files given a preparsed "namespace". - - As conftest files may add their own command line options which have - arguments ('--my-opt somepath') we might get some false positives. - All builtin and 3rd party plugins will have been loaded, however, so - common options will not confuse our logic here. - """ - current = Path.cwd() - self._confcutdir = ( - absolutepath(current / namespace.confcutdir) - if namespace.confcutdir - else None - ) - self._noconftest = namespace.noconftest - self._using_pyargs = namespace.pyargs - testpaths = namespace.file_or_dir - foundanchor = False - for testpath in testpaths: - path = str(testpath) - # remove node-id syntax - i = path.find("::") - if i != -1: - path = path[:i] - anchor = absolutepath(current / path) - if anchor.exists(): # we found some file object - self._try_load_conftest(anchor, namespace.importmode, rootpath) - foundanchor = True - if not foundanchor: - self._try_load_conftest(current, namespace.importmode, rootpath) - - def _is_in_confcutdir(self, path: Path) -> bool: - """Whether a path is within the confcutdir. - - When false, should not load conftest. - """ - if self._confcutdir is None: - return True - return path not in self._confcutdir.parents - - def _try_load_conftest( - self, anchor: Path, importmode: Union[str, ImportMode], rootpath: Path - ) -> None: - self._getconftestmodules(anchor, importmode, rootpath) - # let's also consider test* subdirs - if anchor.is_dir(): - for x in anchor.glob("test*"): - if x.is_dir(): - self._getconftestmodules(x, importmode, rootpath) - - def _getconftestmodules( - self, path: Path, importmode: Union[str, ImportMode], rootpath: Path - ) -> Sequence[types.ModuleType]: - if self._noconftest: - return [] - - directory = self._get_directory(path) - - # Optimization: avoid repeated searches in the same directory. - # Assumes always called with same importmode and rootpath. - existing_clist = self._dirpath2confmods.get(directory) - if existing_clist is not None: - return existing_clist - - # XXX these days we may rather want to use config.rootpath - # and allow users to opt into looking into the rootdir parent - # directories instead of requiring to specify confcutdir. - clist = [] - for parent in reversed((directory, *directory.parents)): - if self._is_in_confcutdir(parent): - conftestpath = parent / "conftest.py" - if conftestpath.is_file(): - mod = self._importconftest(conftestpath, importmode, rootpath) - clist.append(mod) - self._dirpath2confmods[directory] = clist - return clist - - def _rget_with_confmod( - self, - name: str, - path: Path, - importmode: Union[str, ImportMode], - rootpath: Path, - ) -> Tuple[types.ModuleType, Any]: - modules = self._getconftestmodules(path, importmode, rootpath=rootpath) - for mod in reversed(modules): - try: - return mod, getattr(mod, name) - except AttributeError: - continue - raise KeyError(name) - - def _importconftest( - self, conftestpath: Path, importmode: Union[str, ImportMode], rootpath: Path - ) -> types.ModuleType: - existing = self.get_plugin(str(conftestpath)) - if existing is not None: - return cast(types.ModuleType, existing) - - pkgpath = resolve_package_path(conftestpath) - if pkgpath is None: - _ensure_removed_sysmodule(conftestpath.stem) - - try: - mod = import_path(conftestpath, mode=importmode, root=rootpath) - except Exception as e: - assert e.__traceback__ is not None - exc_info = (type(e), e, e.__traceback__) - raise ConftestImportFailure(conftestpath, exc_info) from e - - self._check_non_top_pytest_plugins(mod, conftestpath) - - self._conftest_plugins.add(mod) - dirpath = conftestpath.parent - if dirpath in self._dirpath2confmods: - for path, mods in self._dirpath2confmods.items(): - if dirpath in path.parents or path == dirpath: - assert mod not in mods - mods.append(mod) - self.trace(f"loading conftestmodule {mod!r}") - self.consider_conftest(mod) - return mod - - def _check_non_top_pytest_plugins( - self, - mod: types.ModuleType, - conftestpath: Path, - ) -> None: - if ( - hasattr(mod, "pytest_plugins") - and self._configured - and not self._using_pyargs - ): - msg = ( - "Defining 'pytest_plugins' in a non-top-level conftest is no longer supported:\n" - "It affects the entire test suite instead of just below the conftest as expected.\n" - " {}\n" - "Please move it to a top level conftest file at the rootdir:\n" - " {}\n" - "For more information, visit:\n" - " https://docs.pytest.org/en/stable/deprecations.html#pytest-plugins-in-non-top-level-conftest-files" - ) - fail(msg.format(conftestpath, self._confcutdir), pytrace=False) - - # - # API for bootstrapping plugin loading - # - # - - def consider_preparse( - self, args: Sequence[str], *, exclude_only: bool = False - ) -> None: - """:meta private:""" - i = 0 - n = len(args) - while i < n: - opt = args[i] - i += 1 - if isinstance(opt, str): - if opt == "-p": - try: - parg = args[i] - except IndexError: - return - i += 1 - elif opt.startswith("-p"): - parg = opt[2:] - else: - continue - if exclude_only and not parg.startswith("no:"): - continue - self.consider_pluginarg(parg) - - def consider_pluginarg(self, arg: str) -> None: - """:meta private:""" - if arg.startswith("no:"): - name = arg[3:] - if name in essential_plugins: - raise UsageError("plugin %s cannot be disabled" % name) - - # PR #4304: remove stepwise if cacheprovider is blocked. - if name == "cacheprovider": - self.set_blocked("stepwise") - self.set_blocked("pytest_stepwise") - - self.set_blocked(name) - if not name.startswith("pytest_"): - self.set_blocked("pytest_" + name) - else: - name = arg - # Unblock the plugin. None indicates that it has been blocked. - # There is no interface with pluggy for this. - if self._name2plugin.get(name, -1) is None: - del self._name2plugin[name] - if not name.startswith("pytest_"): - if self._name2plugin.get("pytest_" + name, -1) is None: - del self._name2plugin["pytest_" + name] - self.import_plugin(arg, consider_entry_points=True) - - def consider_conftest(self, conftestmodule: types.ModuleType) -> None: - """:meta private:""" - self.register(conftestmodule, name=conftestmodule.__file__) - - def consider_env(self) -> None: - """:meta private:""" - self._import_plugin_specs(os.environ.get("PYTEST_PLUGINS")) - - def consider_module(self, mod: types.ModuleType) -> None: - """:meta private:""" - self._import_plugin_specs(getattr(mod, "pytest_plugins", [])) - - def _import_plugin_specs( - self, spec: Union[None, types.ModuleType, str, Sequence[str]] - ) -> None: - plugins = _get_plugin_specs_as_list(spec) - for import_spec in plugins: - self.import_plugin(import_spec) - - def import_plugin(self, modname: str, consider_entry_points: bool = False) -> None: - """Import a plugin with ``modname``. - - If ``consider_entry_points`` is True, entry point names are also - considered to find a plugin. - """ - # Most often modname refers to builtin modules, e.g. "pytester", - # "terminal" or "capture". Those plugins are registered under their - # basename for historic purposes but must be imported with the - # _pytest prefix. - assert isinstance(modname, str), ( - "module name as text required, got %r" % modname - ) - if self.is_blocked(modname) or self.get_plugin(modname) is not None: - return - - importspec = "_pytest." + modname if modname in builtin_plugins else modname - self.rewrite_hook.mark_rewrite(importspec) - - if consider_entry_points: - loaded = self.load_setuptools_entrypoints("pytest11", name=modname) - if loaded: - return - - try: - __import__(importspec) - except ImportError as e: - raise ImportError( - f'Error importing plugin "{modname}": {e.args[0]}' - ).with_traceback(e.__traceback__) from e - - except Skipped as e: - self.skipped_plugins.append((modname, e.msg or "")) - else: - mod = sys.modules[importspec] - self.register(mod, modname) - - -def _get_plugin_specs_as_list( - specs: Union[None, types.ModuleType, str, Sequence[str]] -) -> List[str]: - """Parse a plugins specification into a list of plugin names.""" - # None means empty. - if specs is None: - return [] - # Workaround for #3899 - a submodule which happens to be called "pytest_plugins". - if isinstance(specs, types.ModuleType): - return [] - # Comma-separated list. - if isinstance(specs, str): - return specs.split(",") if specs else [] - # Direct specification. - if isinstance(specs, collections.abc.Sequence): - return list(specs) - raise UsageError( - "Plugins may be specified as a sequence or a ','-separated string of plugin names. Got: %r" - % specs - ) - - -def _ensure_removed_sysmodule(modname: str) -> None: - try: - del sys.modules[modname] - except KeyError: - pass - - -class Notset: - def __repr__(self): - return "" - - -notset = Notset() - - -def _iter_rewritable_modules(package_files: Iterable[str]) -> Iterator[str]: - """Given an iterable of file names in a source distribution, return the "names" that should - be marked for assertion rewrite. - - For example the package "pytest_mock/__init__.py" should be added as "pytest_mock" in - the assertion rewrite mechanism. - - This function has to deal with dist-info based distributions and egg based distributions - (which are still very much in use for "editable" installs). - - Here are the file names as seen in a dist-info based distribution: - - pytest_mock/__init__.py - pytest_mock/_version.py - pytest_mock/plugin.py - pytest_mock.egg-info/PKG-INFO - - Here are the file names as seen in an egg based distribution: - - src/pytest_mock/__init__.py - src/pytest_mock/_version.py - src/pytest_mock/plugin.py - src/pytest_mock.egg-info/PKG-INFO - LICENSE - setup.py - - We have to take in account those two distribution flavors in order to determine which - names should be considered for assertion rewriting. - - More information: - https://github.com/pytest-dev/pytest-mock/issues/167 - """ - package_files = list(package_files) - seen_some = False - for fn in package_files: - is_simple_module = "/" not in fn and fn.endswith(".py") - is_package = fn.count("/") == 1 and fn.endswith("__init__.py") - if is_simple_module: - module_name, _ = os.path.splitext(fn) - # we ignore "setup.py" at the root of the distribution - # as well as editable installation finder modules made by setuptools - if module_name != "setup" and not module_name.startswith("__editable__"): - seen_some = True - yield module_name - elif is_package: - package_name = os.path.dirname(fn) - seen_some = True - yield package_name - - if not seen_some: - # At this point we did not find any packages or modules suitable for assertion - # rewriting, so we try again by stripping the first path component (to account for - # "src" based source trees for example). - # This approach lets us have the common case continue to be fast, as egg-distributions - # are rarer. - new_package_files = [] - for fn in package_files: - parts = fn.split("/") - new_fn = "/".join(parts[1:]) - if new_fn: - new_package_files.append(new_fn) - if new_package_files: - yield from _iter_rewritable_modules(new_package_files) - - -def _args_converter(args: Iterable[str]) -> Tuple[str, ...]: - return tuple(args) - - -@final -class Config: - """Access to configuration values, pluginmanager and plugin hooks. - - :param PytestPluginManager pluginmanager: - A pytest PluginManager. - - :param InvocationParams invocation_params: - Object containing parameters regarding the :func:`pytest.main` - invocation. - """ - - @final - @attr.s(frozen=True, auto_attribs=True) - class InvocationParams: - """Holds parameters passed during :func:`pytest.main`. - - The object attributes are read-only. - - .. versionadded:: 5.1 - - .. note:: - - Note that the environment variable ``PYTEST_ADDOPTS`` and the ``addopts`` - ini option are handled by pytest, not being included in the ``args`` attribute. - - Plugins accessing ``InvocationParams`` must be aware of that. - """ - - args: Tuple[str, ...] = attr.ib(converter=_args_converter) - """The command-line arguments as passed to :func:`pytest.main`.""" - plugins: Optional[Sequence[Union[str, _PluggyPlugin]]] - """Extra plugins, might be `None`.""" - dir: Path - """The directory from which :func:`pytest.main` was invoked.""" - - class ArgsSource(enum.Enum): - """Indicates the source of the test arguments. - - .. versionadded:: 7.2 - """ - - #: Command line arguments. - ARGS = enum.auto() - #: Invocation directory. - INCOVATION_DIR = enum.auto() - #: 'testpaths' configuration value. - TESTPATHS = enum.auto() - - def __init__( - self, - pluginmanager: PytestPluginManager, - *, - invocation_params: Optional[InvocationParams] = None, - ) -> None: - from .argparsing import Parser, FILE_OR_DIR - - if invocation_params is None: - invocation_params = self.InvocationParams( - args=(), plugins=None, dir=Path.cwd() - ) - - self.option = argparse.Namespace() - """Access to command line option as attributes. - - :type: argparse.Namespace - """ - - self.invocation_params = invocation_params - """The parameters with which pytest was invoked. - - :type: InvocationParams - """ - - _a = FILE_OR_DIR - self._parser = Parser( - usage=f"%(prog)s [options] [{_a}] [{_a}] [...]", - processopt=self._processopt, - _ispytest=True, - ) - self.pluginmanager = pluginmanager - """The plugin manager handles plugin registration and hook invocation. - - :type: PytestPluginManager - """ - - self.stash = Stash() - """A place where plugins can store information on the config for their - own use. - - :type: Stash - """ - # Deprecated alias. Was never public. Can be removed in a few releases. - self._store = self.stash - - from .compat import PathAwareHookProxy - - self.trace = self.pluginmanager.trace.root.get("config") - self.hook = PathAwareHookProxy(self.pluginmanager.hook) - self._inicache: Dict[str, Any] = {} - self._override_ini: Sequence[str] = () - self._opt2dest: Dict[str, str] = {} - self._cleanup: List[Callable[[], None]] = [] - self.pluginmanager.register(self, "pytestconfig") - self._configured = False - self.hook.pytest_addoption.call_historic( - kwargs=dict(parser=self._parser, pluginmanager=self.pluginmanager) - ) - self.args_source = Config.ArgsSource.ARGS - self.args: List[str] = [] - - if TYPE_CHECKING: - from _pytest.cacheprovider import Cache - - self.cache: Optional[Cache] = None - - @property - def rootpath(self) -> Path: - """The path to the :ref:`rootdir `. - - :type: pathlib.Path - - .. versionadded:: 6.1 - """ - return self._rootpath - - @property - def inipath(self) -> Optional[Path]: - """The path to the :ref:`configfile `. - - :type: Optional[pathlib.Path] - - .. versionadded:: 6.1 - """ - return self._inipath - - def add_cleanup(self, func: Callable[[], None]) -> None: - """Add a function to be called when the config object gets out of - use (usually coinciding with pytest_unconfigure).""" - self._cleanup.append(func) - - def _do_configure(self) -> None: - assert not self._configured - self._configured = True - with warnings.catch_warnings(): - warnings.simplefilter("default") - self.hook.pytest_configure.call_historic(kwargs=dict(config=self)) - - def _ensure_unconfigure(self) -> None: - if self._configured: - self._configured = False - self.hook.pytest_unconfigure(config=self) - self.hook.pytest_configure._call_history = [] - while self._cleanup: - fin = self._cleanup.pop() - fin() - - def get_terminal_writer(self) -> TerminalWriter: - terminalreporter: TerminalReporter = self.pluginmanager.get_plugin( - "terminalreporter" - ) - return terminalreporter._tw - - def pytest_cmdline_parse( - self, pluginmanager: PytestPluginManager, args: List[str] - ) -> "Config": - try: - self.parse(args) - except UsageError: - - # Handle --version and --help here in a minimal fashion. - # This gets done via helpconfig normally, but its - # pytest_cmdline_main is not called in case of errors. - if getattr(self.option, "version", False) or "--version" in args: - from _pytest.helpconfig import showversion - - showversion(self) - elif ( - getattr(self.option, "help", False) or "--help" in args or "-h" in args - ): - self._parser._getparser().print_help() - sys.stdout.write( - "\nNOTE: displaying only minimal help due to UsageError.\n\n" - ) - - raise - - return self - - def notify_exception( - self, - excinfo: ExceptionInfo[BaseException], - option: Optional[argparse.Namespace] = None, - ) -> None: - if option and getattr(option, "fulltrace", False): - style: _TracebackStyle = "long" - else: - style = "native" - excrepr = excinfo.getrepr( - funcargs=True, showlocals=getattr(option, "showlocals", False), style=style - ) - res = self.hook.pytest_internalerror(excrepr=excrepr, excinfo=excinfo) - if not any(res): - for line in str(excrepr).split("\n"): - sys.stderr.write("INTERNALERROR> %s\n" % line) - sys.stderr.flush() - - def cwd_relative_nodeid(self, nodeid: str) -> str: - # nodeid's are relative to the rootpath, compute relative to cwd. - if self.invocation_params.dir != self.rootpath: - fullpath = self.rootpath / nodeid - nodeid = bestrelpath(self.invocation_params.dir, fullpath) - return nodeid - - @classmethod - def fromdictargs(cls, option_dict, args) -> "Config": - """Constructor usable for subprocesses.""" - config = get_config(args) - config.option.__dict__.update(option_dict) - config.parse(args, addopts=False) - for x in config.option.plugins: - config.pluginmanager.consider_pluginarg(x) - return config - - def _processopt(self, opt: "Argument") -> None: - for name in opt._short_opts + opt._long_opts: - self._opt2dest[name] = opt.dest - - if hasattr(opt, "default"): - if not hasattr(self.option, opt.dest): - setattr(self.option, opt.dest, opt.default) - - @hookimpl(trylast=True) - def pytest_load_initial_conftests(self, early_config: "Config") -> None: - self.pluginmanager._set_initial_conftests( - early_config.known_args_namespace, rootpath=early_config.rootpath - ) - - def _initini(self, args: Sequence[str]) -> None: - ns, unknown_args = self._parser.parse_known_and_unknown_args( - args, namespace=copy.copy(self.option) - ) - rootpath, inipath, inicfg = determine_setup( - ns.inifilename, - ns.file_or_dir + unknown_args, - rootdir_cmd_arg=ns.rootdir or None, - config=self, - ) - self._rootpath = rootpath - self._inipath = inipath - self.inicfg = inicfg - self._parser.extra_info["rootdir"] = str(self.rootpath) - self._parser.extra_info["inifile"] = str(self.inipath) - self._parser.addini("addopts", "Extra command line options", "args") - self._parser.addini("minversion", "Minimally required pytest version") - self._parser.addini( - "required_plugins", - "Plugins that must be present for pytest to run", - type="args", - default=[], - ) - self._override_ini = ns.override_ini or () - - def _consider_importhook(self, args: Sequence[str]) -> None: - """Install the PEP 302 import hook if using assertion rewriting. - - Needs to parse the --assert= option from the commandline - and find all the installed plugins to mark them for rewriting - by the importhook. - """ - ns, unknown_args = self._parser.parse_known_and_unknown_args(args) - mode = getattr(ns, "assertmode", "plain") - if mode == "rewrite": - import _pytest.assertion - - try: - hook = _pytest.assertion.install_importhook(self) - except SystemError: - mode = "plain" - else: - self._mark_plugins_for_rewrite(hook) - self._warn_about_missing_assertion(mode) - - def _mark_plugins_for_rewrite(self, hook) -> None: - """Given an importhook, mark for rewrite any top-level - modules or packages in the distribution package for - all pytest plugins.""" - self.pluginmanager.rewrite_hook = hook - - if os.environ.get("PYTEST_DISABLE_PLUGIN_AUTOLOAD"): - # We don't autoload from setuptools entry points, no need to continue. - return - - package_files = ( - str(file) - for dist in importlib_metadata.distributions() - if any(ep.group == "pytest11" for ep in dist.entry_points) - for file in dist.files or [] - ) - - for name in _iter_rewritable_modules(package_files): - hook.mark_rewrite(name) - - def _validate_args(self, args: List[str], via: str) -> List[str]: - """Validate known args.""" - self._parser._config_source_hint = via # type: ignore - try: - self._parser.parse_known_and_unknown_args( - args, namespace=copy.copy(self.option) - ) - finally: - del self._parser._config_source_hint # type: ignore - - return args - - def _preparse(self, args: List[str], addopts: bool = True) -> None: - if addopts: - env_addopts = os.environ.get("PYTEST_ADDOPTS", "") - if len(env_addopts): - args[:] = ( - self._validate_args(shlex.split(env_addopts), "via PYTEST_ADDOPTS") - + args - ) - self._initini(args) - if addopts: - args[:] = ( - self._validate_args(self.getini("addopts"), "via addopts config") + args - ) - - self.known_args_namespace = self._parser.parse_known_args( - args, namespace=copy.copy(self.option) - ) - self._checkversion() - self._consider_importhook(args) - self.pluginmanager.consider_preparse(args, exclude_only=False) - if not os.environ.get("PYTEST_DISABLE_PLUGIN_AUTOLOAD"): - # Don't autoload from setuptools entry point. Only explicitly specified - # plugins are going to be loaded. - self.pluginmanager.load_setuptools_entrypoints("pytest11") - self.pluginmanager.consider_env() - - self.known_args_namespace = self._parser.parse_known_args( - args, namespace=copy.copy(self.known_args_namespace) - ) - - self._validate_plugins() - self._warn_about_skipped_plugins() - - if self.known_args_namespace.strict: - self.issue_config_time_warning( - _pytest.deprecated.STRICT_OPTION, stacklevel=2 - ) - - if self.known_args_namespace.confcutdir is None and self.inipath is not None: - confcutdir = str(self.inipath.parent) - self.known_args_namespace.confcutdir = confcutdir - try: - self.hook.pytest_load_initial_conftests( - early_config=self, args=args, parser=self._parser - ) - except ConftestImportFailure as e: - if self.known_args_namespace.help or self.known_args_namespace.version: - # we don't want to prevent --help/--version to work - # so just let is pass and print a warning at the end - self.issue_config_time_warning( - PytestConfigWarning(f"could not load initial conftests: {e.path}"), - stacklevel=2, - ) - else: - raise - - @hookimpl(hookwrapper=True) - def pytest_collection(self) -> Generator[None, None, None]: - # Validate invalid ini keys after collection is done so we take in account - # options added by late-loading conftest files. - yield - self._validate_config_options() - - def _checkversion(self) -> None: - import pytest - - minver = self.inicfg.get("minversion", None) - if minver: - # Imported lazily to improve start-up time. - from packaging.version import Version - - if not isinstance(minver, str): - raise pytest.UsageError( - "%s: 'minversion' must be a single value" % self.inipath - ) - - if Version(minver) > Version(pytest.__version__): - raise pytest.UsageError( - "%s: 'minversion' requires pytest-%s, actual pytest-%s'" - % ( - self.inipath, - minver, - pytest.__version__, - ) - ) - - def _validate_config_options(self) -> None: - for key in sorted(self._get_unknown_ini_keys()): - self._warn_or_fail_if_strict(f"Unknown config option: {key}\n") - - def _validate_plugins(self) -> None: - required_plugins = sorted(self.getini("required_plugins")) - if not required_plugins: - return - - # Imported lazily to improve start-up time. - from packaging.version import Version - from packaging.requirements import InvalidRequirement, Requirement - - plugin_info = self.pluginmanager.list_plugin_distinfo() - plugin_dist_info = {dist.project_name: dist.version for _, dist in plugin_info} - - missing_plugins = [] - for required_plugin in required_plugins: - try: - req = Requirement(required_plugin) - except InvalidRequirement: - missing_plugins.append(required_plugin) - continue - - if req.name not in plugin_dist_info: - missing_plugins.append(required_plugin) - elif not req.specifier.contains( - Version(plugin_dist_info[req.name]), prereleases=True - ): - missing_plugins.append(required_plugin) - - if missing_plugins: - raise UsageError( - "Missing required plugins: {}".format(", ".join(missing_plugins)), - ) - - def _warn_or_fail_if_strict(self, message: str) -> None: - if self.known_args_namespace.strict_config: - raise UsageError(message) - - self.issue_config_time_warning(PytestConfigWarning(message), stacklevel=3) - - def _get_unknown_ini_keys(self) -> List[str]: - parser_inicfg = self._parser._inidict - return [name for name in self.inicfg if name not in parser_inicfg] - - def parse(self, args: List[str], addopts: bool = True) -> None: - # Parse given cmdline arguments into this config object. - assert ( - self.args == [] - ), "can only parse cmdline args at most once per Config object" - self.hook.pytest_addhooks.call_historic( - kwargs=dict(pluginmanager=self.pluginmanager) - ) - self._preparse(args, addopts=addopts) - # XXX deprecated hook: - self.hook.pytest_cmdline_preparse(config=self, args=args) - self._parser.after_preparse = True # type: ignore - try: - source = Config.ArgsSource.ARGS - args = self._parser.parse_setoption( - args, self.option, namespace=self.option - ) - if not args: - if self.invocation_params.dir == self.rootpath: - source = Config.ArgsSource.TESTPATHS - testpaths: List[str] = self.getini("testpaths") - if self.known_args_namespace.pyargs: - args = testpaths - else: - args = [] - for path in testpaths: - args.extend(sorted(glob.iglob(path, recursive=True))) - if not args: - source = Config.ArgsSource.INCOVATION_DIR - args = [str(self.invocation_params.dir)] - self.args = args - self.args_source = source - except PrintHelp: - pass - - def issue_config_time_warning(self, warning: Warning, stacklevel: int) -> None: - """Issue and handle a warning during the "configure" stage. - - During ``pytest_configure`` we can't capture warnings using the ``catch_warnings_for_item`` - function because it is not possible to have hookwrappers around ``pytest_configure``. - - This function is mainly intended for plugins that need to issue warnings during - ``pytest_configure`` (or similar stages). - - :param warning: The warning instance. - :param stacklevel: stacklevel forwarded to warnings.warn. - """ - if self.pluginmanager.is_blocked("warnings"): - return - - cmdline_filters = self.known_args_namespace.pythonwarnings or [] - config_filters = self.getini("filterwarnings") - - with warnings.catch_warnings(record=True) as records: - warnings.simplefilter("always", type(warning)) - apply_warning_filters(config_filters, cmdline_filters) - warnings.warn(warning, stacklevel=stacklevel) - - if records: - frame = sys._getframe(stacklevel - 1) - location = frame.f_code.co_filename, frame.f_lineno, frame.f_code.co_name - self.hook.pytest_warning_recorded.call_historic( - kwargs=dict( - warning_message=records[0], - when="config", - nodeid="", - location=location, - ) - ) - - def addinivalue_line(self, name: str, line: str) -> None: - """Add a line to an ini-file option. The option must have been - declared but might not yet be set in which case the line becomes - the first line in its value.""" - x = self.getini(name) - assert isinstance(x, list) - x.append(line) # modifies the cached list inline - - def getini(self, name: str): - """Return configuration value from an :ref:`ini file `. - - If the specified name hasn't been registered through a prior - :func:`parser.addini ` call (usually from a - plugin), a ValueError is raised. - """ - try: - return self._inicache[name] - except KeyError: - self._inicache[name] = val = self._getini(name) - return val - - # Meant for easy monkeypatching by legacypath plugin. - # Can be inlined back (with no cover removed) once legacypath is gone. - def _getini_unknown_type(self, name: str, type: str, value: Union[str, List[str]]): - msg = f"unknown configuration type: {type}" - raise ValueError(msg, value) # pragma: no cover - - def _getini(self, name: str): - try: - description, type, default = self._parser._inidict[name] - except KeyError as e: - raise ValueError(f"unknown configuration value: {name!r}") from e - override_value = self._get_override_ini_value(name) - if override_value is None: - try: - value = self.inicfg[name] - except KeyError: - if default is not None: - return default - if type is None: - return "" - return [] - else: - value = override_value - # Coerce the values based on types. - # - # Note: some coercions are only required if we are reading from .ini files, because - # the file format doesn't contain type information, but when reading from toml we will - # get either str or list of str values (see _parse_ini_config_from_pyproject_toml). - # For example: - # - # ini: - # a_line_list = "tests acceptance" - # in this case, we need to split the string to obtain a list of strings. - # - # toml: - # a_line_list = ["tests", "acceptance"] - # in this case, we already have a list ready to use. - # - if type == "paths": - # TODO: This assert is probably not valid in all cases. - assert self.inipath is not None - dp = self.inipath.parent - input_values = shlex.split(value) if isinstance(value, str) else value - return [dp / x for x in input_values] - elif type == "args": - return shlex.split(value) if isinstance(value, str) else value - elif type == "linelist": - if isinstance(value, str): - return [t for t in map(lambda x: x.strip(), value.split("\n")) if t] - else: - return value - elif type == "bool": - return _strtobool(str(value).strip()) - elif type == "string": - return value - elif type is None: - return value - else: - return self._getini_unknown_type(name, type, value) - - def _getconftest_pathlist( - self, name: str, path: Path, rootpath: Path - ) -> Optional[List[Path]]: - try: - mod, relroots = self.pluginmanager._rget_with_confmod( - name, path, self.getoption("importmode"), rootpath - ) - except KeyError: - return None - assert mod.__file__ is not None - modpath = Path(mod.__file__).parent - values: List[Path] = [] - for relroot in relroots: - if isinstance(relroot, os.PathLike): - relroot = Path(relroot) - else: - relroot = relroot.replace("/", os.sep) - relroot = absolutepath(modpath / relroot) - values.append(relroot) - return values - - def _get_override_ini_value(self, name: str) -> Optional[str]: - value = None - # override_ini is a list of "ini=value" options. - # Always use the last item if multiple values are set for same ini-name, - # e.g. -o foo=bar1 -o foo=bar2 will set foo to bar2. - for ini_config in self._override_ini: - try: - key, user_ini_value = ini_config.split("=", 1) - except ValueError as e: - raise UsageError( - "-o/--override-ini expects option=value style (got: {!r}).".format( - ini_config - ) - ) from e - else: - if key == name: - value = user_ini_value - return value - - def getoption(self, name: str, default=notset, skip: bool = False): - """Return command line option value. - - :param name: Name of the option. You may also specify - the literal ``--OPT`` option instead of the "dest" option name. - :param default: Default value if no option of that name exists. - :param skip: If True, raise pytest.skip if option does not exists - or has a None value. - """ - name = self._opt2dest.get(name, name) - try: - val = getattr(self.option, name) - if val is None and skip: - raise AttributeError(name) - return val - except AttributeError as e: - if default is not notset: - return default - if skip: - import pytest - - pytest.skip(f"no {name!r} option found") - raise ValueError(f"no option named {name!r}") from e - - def getvalue(self, name: str, path=None): - """Deprecated, use getoption() instead.""" - return self.getoption(name) - - def getvalueorskip(self, name: str, path=None): - """Deprecated, use getoption(skip=True) instead.""" - return self.getoption(name, skip=True) - - def _warn_about_missing_assertion(self, mode: str) -> None: - if not _assertion_supported(): - if mode == "plain": - warning_text = ( - "ASSERTIONS ARE NOT EXECUTED" - " and FAILING TESTS WILL PASS. Are you" - " using python -O?" - ) - else: - warning_text = ( - "assertions not in test modules or" - " plugins will be ignored" - " because assert statements are not executed " - "by the underlying Python interpreter " - "(are you using python -O?)\n" - ) - self.issue_config_time_warning( - PytestConfigWarning(warning_text), - stacklevel=3, - ) - - def _warn_about_skipped_plugins(self) -> None: - for module_name, msg in self.pluginmanager.skipped_plugins: - self.issue_config_time_warning( - PytestConfigWarning(f"skipped plugin {module_name!r}: {msg}"), - stacklevel=2, - ) - - -def _assertion_supported() -> bool: - try: - assert False - except AssertionError: - return True - else: - return False # type: ignore[unreachable] - - -def create_terminal_writer( - config: Config, file: Optional[TextIO] = None -) -> TerminalWriter: - """Create a TerminalWriter instance configured according to the options - in the config object. - - Every code which requires a TerminalWriter object and has access to a - config object should use this function. - """ - tw = TerminalWriter(file=file) - - if config.option.color == "yes": - tw.hasmarkup = True - elif config.option.color == "no": - tw.hasmarkup = False - - if config.option.code_highlight == "yes": - tw.code_highlight = True - elif config.option.code_highlight == "no": - tw.code_highlight = False - - return tw - - -def _strtobool(val: str) -> bool: - """Convert a string representation of truth to True or False. - - True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values - are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if - 'val' is anything else. - - .. note:: Copied from distutils.util. - """ - val = val.lower() - if val in ("y", "yes", "t", "true", "on", "1"): - return True - elif val in ("n", "no", "f", "false", "off", "0"): - return False - else: - raise ValueError(f"invalid truth value {val!r}") - - -@lru_cache(maxsize=50) -def parse_warning_filter( - arg: str, *, escape: bool -) -> Tuple["warnings._ActionKind", str, Type[Warning], str, int]: - """Parse a warnings filter string. - - This is copied from warnings._setoption with the following changes: - - * Does not apply the filter. - * Escaping is optional. - * Raises UsageError so we get nice error messages on failure. - """ - __tracebackhide__ = True - error_template = dedent( - f"""\ - while parsing the following warning configuration: - - {arg} - - This error occurred: - - {{error}} - """ - ) - - parts = arg.split(":") - if len(parts) > 5: - doc_url = ( - "https://docs.python.org/3/library/warnings.html#describing-warning-filters" - ) - error = dedent( - f"""\ - Too many fields ({len(parts)}), expected at most 5 separated by colons: - - action:message:category:module:line - - For more information please consult: {doc_url} - """ - ) - raise UsageError(error_template.format(error=error)) - - while len(parts) < 5: - parts.append("") - action_, message, category_, module, lineno_ = (s.strip() for s in parts) - try: - action: "warnings._ActionKind" = warnings._getaction(action_) # type: ignore[attr-defined] - except warnings._OptionError as e: - raise UsageError(error_template.format(error=str(e))) - try: - category: Type[Warning] = _resolve_warning_category(category_) - except Exception: - exc_info = ExceptionInfo.from_current() - exception_text = exc_info.getrepr(style="native") - raise UsageError(error_template.format(error=exception_text)) - if message and escape: - message = re.escape(message) - if module and escape: - module = re.escape(module) + r"\Z" - if lineno_: - try: - lineno = int(lineno_) - if lineno < 0: - raise ValueError("number is negative") - except ValueError as e: - raise UsageError( - error_template.format(error=f"invalid lineno {lineno_!r}: {e}") - ) - else: - lineno = 0 - return action, message, category, module, lineno - - -def _resolve_warning_category(category: str) -> Type[Warning]: - """ - Copied from warnings._getcategory, but changed so it lets exceptions (specially ImportErrors) - propagate so we can get access to their tracebacks (#9218). - """ - __tracebackhide__ = True - if not category: - return Warning - - if "." not in category: - import builtins as m - - klass = category - else: - module, _, klass = category.rpartition(".") - m = __import__(module, None, None, [klass]) - cat = getattr(m, klass) - if not issubclass(cat, Warning): - raise UsageError(f"{cat} is not a Warning subclass") - return cast(Type[Warning], cat) - - -def apply_warning_filters( - config_filters: Iterable[str], cmdline_filters: Iterable[str] -) -> None: - """Applies pytest-configured filters to the warnings module""" - # Filters should have this precedence: cmdline options, config. - # Filters should be applied in the inverse order of precedence. - for arg in config_filters: - warnings.filterwarnings(*parse_warning_filter(arg, escape=False)) - - for arg in cmdline_filters: - warnings.filterwarnings(*parse_warning_filter(arg, escape=True)) diff --git a/venv/lib/python3.12/site-packages/_pytest/config/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/config/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 749a18fdb77f85deb3baf2b3055e42b6cabcdd1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74119 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 Y2|;k#k2dI8ysP}ctlkyqDg&JVA0t2~CIA2c diff --git a/venv/lib/python3.12/site-packages/_pytest/config/__pycache__/argparsing.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/config/__pycache__/argparsing.cpython-312.pyc deleted file mode 100644 index 761836d40003d1872af32c432fe96b28c7145309..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26864 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 Yj2ZUvl?#t8H|<{9 diff --git a/venv/lib/python3.12/site-packages/_pytest/config/__pycache__/compat.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/config/__pycache__/compat.cpython-312.pyc deleted file mode 100644 index e203ea65ce58b32c65dfc8cc2a83200ac8edce42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2900 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 value to display in case - there's an error processing the command line arguments. - """ - - prog: Optional[str] = None - - def __init__( - self, - usage: Optional[str] = None, - processopt: Optional[Callable[["Argument"], None]] = None, - *, - _ispytest: bool = False, - ) -> None: - check_ispytest(_ispytest) - self._anonymous = OptionGroup("Custom options", parser=self, _ispytest=True) - self._groups: List[OptionGroup] = [] - self._processopt = processopt - self._usage = usage - self._inidict: Dict[str, Tuple[str, Optional[str], Any]] = {} - self._ininames: List[str] = [] - self.extra_info: Dict[str, Any] = {} - - def processoption(self, option: "Argument") -> None: - if self._processopt: - if option.dest: - self._processopt(option) - - def getgroup( - self, name: str, description: str = "", after: Optional[str] = None - ) -> "OptionGroup": - """Get (or create) a named option Group. - - :param name: Name of the option group. - :param description: Long description for --help output. - :param after: Name of another group, used for ordering --help output. - :returns: The option group. - - The returned group object has an ``addoption`` method with the same - signature as :func:`parser.addoption ` but - will be shown in the respective group in the output of - ``pytest --help``. - """ - for group in self._groups: - if group.name == name: - return group - group = OptionGroup(name, description, parser=self, _ispytest=True) - i = 0 - for i, grp in enumerate(self._groups): - if grp.name == after: - break - self._groups.insert(i + 1, group) - return group - - def addoption(self, *opts: str, **attrs: Any) -> None: - """Register a command line option. - - :param opts: - Option names, can be short or long options. - :param attrs: - Same attributes as the argparse library's :py:func:`add_argument() - ` function accepts. - - After command line parsing, options are available on the pytest config - object via ``config.option.NAME`` where ``NAME`` is usually set - by passing a ``dest`` attribute, for example - ``addoption("--long", dest="NAME", ...)``. - """ - self._anonymous.addoption(*opts, **attrs) - - def parse( - self, - args: Sequence[Union[str, "os.PathLike[str]"]], - namespace: Optional[argparse.Namespace] = None, - ) -> argparse.Namespace: - from _pytest._argcomplete import try_argcomplete - - self.optparser = self._getparser() - try_argcomplete(self.optparser) - strargs = [os.fspath(x) for x in args] - return self.optparser.parse_args(strargs, namespace=namespace) - - def _getparser(self) -> "MyOptionParser": - from _pytest._argcomplete import filescompleter - - optparser = MyOptionParser(self, self.extra_info, prog=self.prog) - groups = self._groups + [self._anonymous] - for group in groups: - if group.options: - desc = group.description or group.name - arggroup = optparser.add_argument_group(desc) - for option in group.options: - n = option.names() - a = option.attrs() - arggroup.add_argument(*n, **a) - file_or_dir_arg = optparser.add_argument(FILE_OR_DIR, nargs="*") - # bash like autocompletion for dirs (appending '/') - # Type ignored because typeshed doesn't know about argcomplete. - file_or_dir_arg.completer = filescompleter # type: ignore - return optparser - - def parse_setoption( - self, - args: Sequence[Union[str, "os.PathLike[str]"]], - option: argparse.Namespace, - namespace: Optional[argparse.Namespace] = None, - ) -> List[str]: - parsedoption = self.parse(args, namespace=namespace) - for name, value in parsedoption.__dict__.items(): - setattr(option, name, value) - return cast(List[str], getattr(parsedoption, FILE_OR_DIR)) - - def parse_known_args( - self, - args: Sequence[Union[str, "os.PathLike[str]"]], - namespace: Optional[argparse.Namespace] = None, - ) -> argparse.Namespace: - """Parse the known arguments at this point. - - :returns: An argparse namespace object. - """ - return self.parse_known_and_unknown_args(args, namespace=namespace)[0] - - def parse_known_and_unknown_args( - self, - args: Sequence[Union[str, "os.PathLike[str]"]], - namespace: Optional[argparse.Namespace] = None, - ) -> Tuple[argparse.Namespace, List[str]]: - """Parse the known arguments at this point, and also return the - remaining unknown arguments. - - :returns: - A tuple containing an argparse namespace object for the known - arguments, and a list of the unknown arguments. - """ - optparser = self._getparser() - strargs = [os.fspath(x) for x in args] - return optparser.parse_known_args(strargs, namespace=namespace) - - def addini( - self, - name: str, - help: str, - type: Optional[ - "Literal['string', 'paths', 'pathlist', 'args', 'linelist', 'bool']" - ] = None, - default: Any = None, - ) -> None: - """Register an ini-file option. - - :param name: - Name of the ini-variable. - :param type: - Type of the variable. Can be: - - * ``string``: a string - * ``bool``: a boolean - * ``args``: a list of strings, separated as in a shell - * ``linelist``: a list of strings, separated by line breaks - * ``paths``: a list of :class:`pathlib.Path`, separated as in a shell - * ``pathlist``: a list of ``py.path``, separated as in a shell - - .. versionadded:: 7.0 - The ``paths`` variable type. - - Defaults to ``string`` if ``None`` or not passed. - :param default: - Default value if no ini-file option exists but is queried. - - The value of ini-variables can be retrieved via a call to - :py:func:`config.getini(name) `. - """ - assert type in (None, "string", "paths", "pathlist", "args", "linelist", "bool") - self._inidict[name] = (help, type, default) - self._ininames.append(name) - - -class ArgumentError(Exception): - """Raised if an Argument instance is created with invalid or - inconsistent arguments.""" - - def __init__(self, msg: str, option: Union["Argument", str]) -> None: - self.msg = msg - self.option_id = str(option) - - def __str__(self) -> str: - if self.option_id: - return f"option {self.option_id}: {self.msg}" - else: - return self.msg - - -class Argument: - """Class that mimics the necessary behaviour of optparse.Option. - - It's currently a least effort implementation and ignoring choices - and integer prefixes. - - https://docs.python.org/3/library/optparse.html#optparse-standard-option-types - """ - - _typ_map = {"int": int, "string": str, "float": float, "complex": complex} - - def __init__(self, *names: str, **attrs: Any) -> None: - """Store params in private vars for use in add_argument.""" - self._attrs = attrs - self._short_opts: List[str] = [] - self._long_opts: List[str] = [] - if "%default" in (attrs.get("help") or ""): - warnings.warn(ARGUMENT_PERCENT_DEFAULT, stacklevel=3) - try: - typ = attrs["type"] - except KeyError: - pass - else: - # This might raise a keyerror as well, don't want to catch that. - if isinstance(typ, str): - if typ == "choice": - warnings.warn( - ARGUMENT_TYPE_STR_CHOICE.format(typ=typ, names=names), - stacklevel=4, - ) - # argparse expects a type here take it from - # the type of the first element - attrs["type"] = type(attrs["choices"][0]) - else: - warnings.warn( - ARGUMENT_TYPE_STR.format(typ=typ, names=names), stacklevel=4 - ) - attrs["type"] = Argument._typ_map[typ] - # Used in test_parseopt -> test_parse_defaultgetter. - self.type = attrs["type"] - else: - self.type = typ - try: - # Attribute existence is tested in Config._processopt. - self.default = attrs["default"] - except KeyError: - pass - self._set_opt_strings(names) - dest: Optional[str] = attrs.get("dest") - if dest: - self.dest = dest - elif self._long_opts: - self.dest = self._long_opts[0][2:].replace("-", "_") - else: - try: - self.dest = self._short_opts[0][1:] - except IndexError as e: - self.dest = "???" # Needed for the error repr. - raise ArgumentError("need a long or short option", self) from e - - def names(self) -> List[str]: - return self._short_opts + self._long_opts - - def attrs(self) -> Mapping[str, Any]: - # Update any attributes set by processopt. - attrs = "default dest help".split() - attrs.append(self.dest) - for attr in attrs: - try: - self._attrs[attr] = getattr(self, attr) - except AttributeError: - pass - if self._attrs.get("help"): - a = self._attrs["help"] - a = a.replace("%default", "%(default)s") - # a = a.replace('%prog', '%(prog)s') - self._attrs["help"] = a - return self._attrs - - def _set_opt_strings(self, opts: Sequence[str]) -> None: - """Directly from optparse. - - Might not be necessary as this is passed to argparse later on. - """ - for opt in opts: - if len(opt) < 2: - raise ArgumentError( - "invalid option string %r: " - "must be at least two characters long" % opt, - self, - ) - elif len(opt) == 2: - if not (opt[0] == "-" and opt[1] != "-"): - raise ArgumentError( - "invalid short option string %r: " - "must be of the form -x, (x any non-dash char)" % opt, - self, - ) - self._short_opts.append(opt) - else: - if not (opt[0:2] == "--" and opt[2] != "-"): - raise ArgumentError( - "invalid long option string %r: " - "must start with --, followed by non-dash" % opt, - self, - ) - self._long_opts.append(opt) - - def __repr__(self) -> str: - args: List[str] = [] - if self._short_opts: - args += ["_short_opts: " + repr(self._short_opts)] - if self._long_opts: - args += ["_long_opts: " + repr(self._long_opts)] - args += ["dest: " + repr(self.dest)] - if hasattr(self, "type"): - args += ["type: " + repr(self.type)] - if hasattr(self, "default"): - args += ["default: " + repr(self.default)] - return "Argument({})".format(", ".join(args)) - - -class OptionGroup: - """A group of options shown in its own section.""" - - def __init__( - self, - name: str, - description: str = "", - parser: Optional[Parser] = None, - *, - _ispytest: bool = False, - ) -> None: - check_ispytest(_ispytest) - self.name = name - self.description = description - self.options: List[Argument] = [] - self.parser = parser - - def addoption(self, *opts: str, **attrs: Any) -> None: - """Add an option to this group. - - If a shortened version of a long option is specified, it will - be suppressed in the help. ``addoption('--twowords', '--two-words')`` - results in help showing ``--two-words`` only, but ``--twowords`` gets - accepted **and** the automatic destination is in ``args.twowords``. - - :param opts: - Option names, can be short or long options. - :param attrs: - Same attributes as the argparse library's :py:func:`add_argument() - ` function accepts. - """ - conflict = set(opts).intersection( - name for opt in self.options for name in opt.names() - ) - if conflict: - raise ValueError("option names %s already added" % conflict) - option = Argument(*opts, **attrs) - self._addoption_instance(option, shortupper=False) - - def _addoption(self, *opts: str, **attrs: Any) -> None: - option = Argument(*opts, **attrs) - self._addoption_instance(option, shortupper=True) - - def _addoption_instance(self, option: "Argument", shortupper: bool = False) -> None: - if not shortupper: - for opt in option._short_opts: - if opt[0] == "-" and opt[1].islower(): - raise ValueError("lowercase shortoptions reserved") - if self.parser: - self.parser.processoption(option) - self.options.append(option) - - -class MyOptionParser(argparse.ArgumentParser): - def __init__( - self, - parser: Parser, - extra_info: Optional[Dict[str, Any]] = None, - prog: Optional[str] = None, - ) -> None: - self._parser = parser - super().__init__( - prog=prog, - usage=parser._usage, - add_help=False, - formatter_class=DropShorterLongHelpFormatter, - allow_abbrev=False, - ) - # extra_info is a dict of (param -> value) to display if there's - # an usage error to provide more contextual information to the user. - self.extra_info = extra_info if extra_info else {} - - def error(self, message: str) -> NoReturn: - """Transform argparse error message into UsageError.""" - msg = f"{self.prog}: error: {message}" - - if hasattr(self._parser, "_config_source_hint"): - # Type ignored because the attribute is set dynamically. - msg = f"{msg} ({self._parser._config_source_hint})" # type: ignore - - raise UsageError(self.format_usage() + msg) - - # Type ignored because typeshed has a very complex type in the superclass. - def parse_args( # type: ignore - self, - args: Optional[Sequence[str]] = None, - namespace: Optional[argparse.Namespace] = None, - ) -> argparse.Namespace: - """Allow splitting of positional arguments.""" - parsed, unrecognized = self.parse_known_args(args, namespace) - if unrecognized: - for arg in unrecognized: - if arg and arg[0] == "-": - lines = ["unrecognized arguments: %s" % (" ".join(unrecognized))] - for k, v in sorted(self.extra_info.items()): - lines.append(f" {k}: {v}") - self.error("\n".join(lines)) - getattr(parsed, FILE_OR_DIR).extend(unrecognized) - return parsed - - if sys.version_info[:2] < (3, 9): # pragma: no cover - # Backport of https://github.com/python/cpython/pull/14316 so we can - # disable long --argument abbreviations without breaking short flags. - def _parse_optional( - self, arg_string: str - ) -> Optional[Tuple[Optional[argparse.Action], str, Optional[str]]]: - if not arg_string: - return None - if not arg_string[0] in self.prefix_chars: - return None - if arg_string in self._option_string_actions: - action = self._option_string_actions[arg_string] - return action, arg_string, None - if len(arg_string) == 1: - return None - if "=" in arg_string: - option_string, explicit_arg = arg_string.split("=", 1) - if option_string in self._option_string_actions: - action = self._option_string_actions[option_string] - return action, option_string, explicit_arg - if self.allow_abbrev or not arg_string.startswith("--"): - option_tuples = self._get_option_tuples(arg_string) - if len(option_tuples) > 1: - msg = gettext( - "ambiguous option: %(option)s could match %(matches)s" - ) - options = ", ".join(option for _, option, _ in option_tuples) - self.error(msg % {"option": arg_string, "matches": options}) - elif len(option_tuples) == 1: - (option_tuple,) = option_tuples - return option_tuple - if self._negative_number_matcher.match(arg_string): - if not self._has_negative_number_optionals: - return None - if " " in arg_string: - return None - return None, arg_string, None - - -class DropShorterLongHelpFormatter(argparse.HelpFormatter): - """Shorten help for long options that differ only in extra hyphens. - - - Collapse **long** options that are the same except for extra hyphens. - - Shortcut if there are only two options and one of them is a short one. - - Cache result on the action object as this is called at least 2 times. - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - # Use more accurate terminal width. - if "width" not in kwargs: - kwargs["width"] = _pytest._io.get_terminal_width() - super().__init__(*args, **kwargs) - - def _format_action_invocation(self, action: argparse.Action) -> str: - orgstr = super()._format_action_invocation(action) - if orgstr and orgstr[0] != "-": # only optional arguments - return orgstr - res: Optional[str] = getattr(action, "_formatted_action_invocation", None) - if res: - return res - options = orgstr.split(", ") - if len(options) == 2 and (len(options[0]) == 2 or len(options[1]) == 2): - # a shortcut for '-h, --help' or '--abc', '-a' - action._formatted_action_invocation = orgstr # type: ignore - return orgstr - return_list = [] - short_long: Dict[str, str] = {} - for option in options: - if len(option) == 2 or option[2] == " ": - continue - if not option.startswith("--"): - raise ArgumentError( - 'long optional argument without "--": [%s]' % (option), option - ) - xxoption = option[2:] - shortened = xxoption.replace("-", "") - if shortened not in short_long or len(short_long[shortened]) < len( - xxoption - ): - short_long[shortened] = xxoption - # now short_long has been filled out to the longest with dashes - # **and** we keep the right option ordering from add_argument - for option in options: - if len(option) == 2 or option[2] == " ": - return_list.append(option) - if option[2:] == short_long.get(option.replace("-", "")): - return_list.append(option.replace(" ", "=", 1)) - formatted_action_invocation = ", ".join(return_list) - action._formatted_action_invocation = formatted_action_invocation # type: ignore - return formatted_action_invocation - - def _split_lines(self, text, width): - """Wrap lines after splitting on original newlines. - - This allows to have explicit line breaks in the help text. - """ - import textwrap - - lines = [] - for line in text.splitlines(): - lines.extend(textwrap.wrap(line.strip(), width)) - return lines diff --git a/venv/lib/python3.12/site-packages/_pytest/config/compat.py b/venv/lib/python3.12/site-packages/_pytest/config/compat.py deleted file mode 100644 index ba267d2..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/config/compat.py +++ /dev/null @@ -1,71 +0,0 @@ -import functools -import warnings -from pathlib import Path -from typing import Optional - -from ..compat import LEGACY_PATH -from ..compat import legacy_path -from ..deprecated import HOOK_LEGACY_PATH_ARG -from _pytest.nodes import _check_path - -# hookname: (Path, LEGACY_PATH) -imply_paths_hooks = { - "pytest_ignore_collect": ("collection_path", "path"), - "pytest_collect_file": ("file_path", "path"), - "pytest_pycollect_makemodule": ("module_path", "path"), - "pytest_report_header": ("start_path", "startdir"), - "pytest_report_collectionfinish": ("start_path", "startdir"), -} - - -class PathAwareHookProxy: - """ - this helper wraps around hook callers - until pluggy supports fixingcalls, this one will do - - it currently doesn't return full hook caller proxies for fixed hooks, - this may have to be changed later depending on bugs - """ - - def __init__(self, hook_caller): - self.__hook_caller = hook_caller - - def __dir__(self): - return dir(self.__hook_caller) - - def __getattr__(self, key, _wraps=functools.wraps): - hook = getattr(self.__hook_caller, key) - if key not in imply_paths_hooks: - self.__dict__[key] = hook - return hook - else: - path_var, fspath_var = imply_paths_hooks[key] - - @_wraps(hook) - def fixed_hook(**kw): - - path_value: Optional[Path] = kw.pop(path_var, None) - fspath_value: Optional[LEGACY_PATH] = kw.pop(fspath_var, None) - if fspath_value is not None: - warnings.warn( - HOOK_LEGACY_PATH_ARG.format( - pylib_path_arg=fspath_var, pathlib_path_arg=path_var - ), - stacklevel=2, - ) - if path_value is not None: - if fspath_value is not None: - _check_path(path_value, fspath_value) - else: - fspath_value = legacy_path(path_value) - else: - assert fspath_value is not None - path_value = Path(fspath_value) - - kw[path_var] = path_value - kw[fspath_var] = fspath_value - return hook(**kw) - - fixed_hook.__name__ = key - self.__dict__[key] = fixed_hook - return fixed_hook diff --git a/venv/lib/python3.12/site-packages/_pytest/config/exceptions.py b/venv/lib/python3.12/site-packages/_pytest/config/exceptions.py deleted file mode 100644 index 4f1320e..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/config/exceptions.py +++ /dev/null @@ -1,11 +0,0 @@ -from _pytest.compat import final - - -@final -class UsageError(Exception): - """Error in pytest usage or invocation.""" - - -class PrintHelp(Exception): - """Raised when pytest should print its help to skip the rest of the - argument parsing and validation.""" diff --git a/venv/lib/python3.12/site-packages/_pytest/config/findpaths.py b/venv/lib/python3.12/site-packages/_pytest/config/findpaths.py deleted file mode 100644 index 234b9e1..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/config/findpaths.py +++ /dev/null @@ -1,225 +0,0 @@ -import os -import sys -from pathlib import Path -from typing import Dict -from typing import Iterable -from typing import List -from typing import Optional -from typing import Sequence -from typing import Tuple -from typing import TYPE_CHECKING -from typing import Union - -import iniconfig - -from .exceptions import UsageError -from _pytest.outcomes import fail -from _pytest.pathlib import absolutepath -from _pytest.pathlib import commonpath - -if TYPE_CHECKING: - from . import Config - - -def _parse_ini_config(path: Path) -> iniconfig.IniConfig: - """Parse the given generic '.ini' file using legacy IniConfig parser, returning - the parsed object. - - Raise UsageError if the file cannot be parsed. - """ - try: - return iniconfig.IniConfig(str(path)) - except iniconfig.ParseError as exc: - raise UsageError(str(exc)) from exc - - -def load_config_dict_from_file( - filepath: Path, -) -> Optional[Dict[str, Union[str, List[str]]]]: - """Load pytest configuration from the given file path, if supported. - - Return None if the file does not contain valid pytest configuration. - """ - - # Configuration from ini files are obtained from the [pytest] section, if present. - if filepath.suffix == ".ini": - iniconfig = _parse_ini_config(filepath) - - if "pytest" in iniconfig: - return dict(iniconfig["pytest"].items()) - else: - # "pytest.ini" files are always the source of configuration, even if empty. - if filepath.name == "pytest.ini": - return {} - - # '.cfg' files are considered if they contain a "[tool:pytest]" section. - elif filepath.suffix == ".cfg": - iniconfig = _parse_ini_config(filepath) - - if "tool:pytest" in iniconfig.sections: - return dict(iniconfig["tool:pytest"].items()) - elif "pytest" in iniconfig.sections: - # If a setup.cfg contains a "[pytest]" section, we raise a failure to indicate users that - # plain "[pytest]" sections in setup.cfg files is no longer supported (#3086). - fail(CFG_PYTEST_SECTION.format(filename="setup.cfg"), pytrace=False) - - # '.toml' files are considered if they contain a [tool.pytest.ini_options] table. - elif filepath.suffix == ".toml": - if sys.version_info >= (3, 11): - import tomllib - else: - import tomli as tomllib - - toml_text = filepath.read_text(encoding="utf-8") - try: - config = tomllib.loads(toml_text) - except tomllib.TOMLDecodeError as exc: - raise UsageError(f"{filepath}: {exc}") from exc - - result = config.get("tool", {}).get("pytest", {}).get("ini_options", None) - if result is not None: - # TOML supports richer data types than ini files (strings, arrays, floats, ints, etc), - # however we need to convert all scalar values to str for compatibility with the rest - # of the configuration system, which expects strings only. - def make_scalar(v: object) -> Union[str, List[str]]: - return v if isinstance(v, list) else str(v) - - return {k: make_scalar(v) for k, v in result.items()} - - return None - - -def locate_config( - args: Iterable[Path], -) -> Tuple[Optional[Path], Optional[Path], Dict[str, Union[str, List[str]]]]: - """Search in the list of arguments for a valid ini-file for pytest, - and return a tuple of (rootdir, inifile, cfg-dict).""" - config_names = [ - "pytest.ini", - ".pytest.ini", - "pyproject.toml", - "tox.ini", - "setup.cfg", - ] - args = [x for x in args if not str(x).startswith("-")] - if not args: - args = [Path.cwd()] - for arg in args: - argpath = absolutepath(arg) - for base in (argpath, *argpath.parents): - for config_name in config_names: - p = base / config_name - if p.is_file(): - ini_config = load_config_dict_from_file(p) - if ini_config is not None: - return base, p, ini_config - return None, None, {} - - -def get_common_ancestor(paths: Iterable[Path]) -> Path: - common_ancestor: Optional[Path] = None - for path in paths: - if not path.exists(): - continue - if common_ancestor is None: - common_ancestor = path - else: - if common_ancestor in path.parents or path == common_ancestor: - continue - elif path in common_ancestor.parents: - common_ancestor = path - else: - shared = commonpath(path, common_ancestor) - if shared is not None: - common_ancestor = shared - if common_ancestor is None: - common_ancestor = Path.cwd() - elif common_ancestor.is_file(): - common_ancestor = common_ancestor.parent - return common_ancestor - - -def get_dirs_from_args(args: Iterable[str]) -> List[Path]: - def is_option(x: str) -> bool: - return x.startswith("-") - - def get_file_part_from_node_id(x: str) -> str: - return x.split("::")[0] - - def get_dir_from_path(path: Path) -> Path: - if path.is_dir(): - return path - return path.parent - - def safe_exists(path: Path) -> bool: - # This can throw on paths that contain characters unrepresentable at the OS level, - # or with invalid syntax on Windows (https://bugs.python.org/issue35306) - try: - return path.exists() - except OSError: - return False - - # These look like paths but may not exist - possible_paths = ( - absolutepath(get_file_part_from_node_id(arg)) - for arg in args - if not is_option(arg) - ) - - return [get_dir_from_path(path) for path in possible_paths if safe_exists(path)] - - -CFG_PYTEST_SECTION = "[pytest] section in {filename} files is no longer supported, change to [tool:pytest] instead." - - -def determine_setup( - inifile: Optional[str], - args: Sequence[str], - rootdir_cmd_arg: Optional[str] = None, - config: Optional["Config"] = None, -) -> Tuple[Path, Optional[Path], Dict[str, Union[str, List[str]]]]: - rootdir = None - dirs = get_dirs_from_args(args) - if inifile: - inipath_ = absolutepath(inifile) - inipath: Optional[Path] = inipath_ - inicfg = load_config_dict_from_file(inipath_) or {} - if rootdir_cmd_arg is None: - rootdir = inipath_.parent - else: - ancestor = get_common_ancestor(dirs) - rootdir, inipath, inicfg = locate_config([ancestor]) - if rootdir is None and rootdir_cmd_arg is None: - for possible_rootdir in (ancestor, *ancestor.parents): - if (possible_rootdir / "setup.py").is_file(): - rootdir = possible_rootdir - break - else: - if dirs != [ancestor]: - rootdir, inipath, inicfg = locate_config(dirs) - if rootdir is None: - if config is not None: - cwd = config.invocation_params.dir - else: - cwd = Path.cwd() - rootdir = get_common_ancestor([cwd, ancestor]) - if is_fs_root(rootdir): - rootdir = ancestor - if rootdir_cmd_arg: - rootdir = absolutepath(os.path.expandvars(rootdir_cmd_arg)) - if not rootdir.is_dir(): - raise UsageError( - "Directory '{}' not found. Check your '--rootdir' option.".format( - rootdir - ) - ) - assert rootdir is not None - return rootdir, inipath, inicfg or {} - - -def is_fs_root(p: Path) -> bool: - r""" - Return True if the given path is pointing to the root of the - file system ("/" on Unix and "C:\\" on Windows for example). - """ - return os.path.splitdrive(str(p))[1] == os.sep diff --git a/venv/lib/python3.12/site-packages/_pytest/debugging.py b/venv/lib/python3.12/site-packages/_pytest/debugging.py deleted file mode 100644 index a3f8080..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/debugging.py +++ /dev/null @@ -1,391 +0,0 @@ -"""Interactive debugging with PDB, the Python Debugger.""" -import argparse -import functools -import sys -import types -import unittest -from typing import Any -from typing import Callable -from typing import Generator -from typing import List -from typing import Optional -from typing import Tuple -from typing import Type -from typing import TYPE_CHECKING -from typing import Union - -from _pytest import outcomes -from _pytest._code import ExceptionInfo -from _pytest.config import Config -from _pytest.config import ConftestImportFailure -from _pytest.config import hookimpl -from _pytest.config import PytestPluginManager -from _pytest.config.argparsing import Parser -from _pytest.config.exceptions import UsageError -from _pytest.nodes import Node -from _pytest.reports import BaseReport - -if TYPE_CHECKING: - from _pytest.capture import CaptureManager - from _pytest.runner import CallInfo - - -def _validate_usepdb_cls(value: str) -> Tuple[str, str]: - """Validate syntax of --pdbcls option.""" - try: - modname, classname = value.split(":") - except ValueError as e: - raise argparse.ArgumentTypeError( - f"{value!r} is not in the format 'modname:classname'" - ) from e - return (modname, classname) - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("general") - group._addoption( - "--pdb", - dest="usepdb", - action="store_true", - help="Start the interactive Python debugger on errors or KeyboardInterrupt", - ) - group._addoption( - "--pdbcls", - dest="usepdb_cls", - metavar="modulename:classname", - type=_validate_usepdb_cls, - help="Specify a custom interactive Python debugger for use with --pdb." - "For example: --pdbcls=IPython.terminal.debugger:TerminalPdb", - ) - group._addoption( - "--trace", - dest="trace", - action="store_true", - help="Immediately break when running each test", - ) - - -def pytest_configure(config: Config) -> None: - import pdb - - if config.getvalue("trace"): - config.pluginmanager.register(PdbTrace(), "pdbtrace") - if config.getvalue("usepdb"): - config.pluginmanager.register(PdbInvoke(), "pdbinvoke") - - pytestPDB._saved.append( - (pdb.set_trace, pytestPDB._pluginmanager, pytestPDB._config) - ) - pdb.set_trace = pytestPDB.set_trace - pytestPDB._pluginmanager = config.pluginmanager - pytestPDB._config = config - - # NOTE: not using pytest_unconfigure, since it might get called although - # pytest_configure was not (if another plugin raises UsageError). - def fin() -> None: - ( - pdb.set_trace, - pytestPDB._pluginmanager, - pytestPDB._config, - ) = pytestPDB._saved.pop() - - config.add_cleanup(fin) - - -class pytestPDB: - """Pseudo PDB that defers to the real pdb.""" - - _pluginmanager: Optional[PytestPluginManager] = None - _config: Optional[Config] = None - _saved: List[ - Tuple[Callable[..., None], Optional[PytestPluginManager], Optional[Config]] - ] = [] - _recursive_debug = 0 - _wrapped_pdb_cls: Optional[Tuple[Type[Any], Type[Any]]] = None - - @classmethod - def _is_capturing(cls, capman: Optional["CaptureManager"]) -> Union[str, bool]: - if capman: - return capman.is_capturing() - return False - - @classmethod - def _import_pdb_cls(cls, capman: Optional["CaptureManager"]): - if not cls._config: - import pdb - - # Happens when using pytest.set_trace outside of a test. - return pdb.Pdb - - usepdb_cls = cls._config.getvalue("usepdb_cls") - - if cls._wrapped_pdb_cls and cls._wrapped_pdb_cls[0] == usepdb_cls: - return cls._wrapped_pdb_cls[1] - - if usepdb_cls: - modname, classname = usepdb_cls - - try: - __import__(modname) - mod = sys.modules[modname] - - # Handle --pdbcls=pdb:pdb.Pdb (useful e.g. with pdbpp). - parts = classname.split(".") - pdb_cls = getattr(mod, parts[0]) - for part in parts[1:]: - pdb_cls = getattr(pdb_cls, part) - except Exception as exc: - value = ":".join((modname, classname)) - raise UsageError( - f"--pdbcls: could not import {value!r}: {exc}" - ) from exc - else: - import pdb - - pdb_cls = pdb.Pdb - - wrapped_cls = cls._get_pdb_wrapper_class(pdb_cls, capman) - cls._wrapped_pdb_cls = (usepdb_cls, wrapped_cls) - return wrapped_cls - - @classmethod - def _get_pdb_wrapper_class(cls, pdb_cls, capman: Optional["CaptureManager"]): - import _pytest.config - - # Type ignored because mypy doesn't support "dynamic" - # inheritance like this. - class PytestPdbWrapper(pdb_cls): # type: ignore[valid-type,misc] - _pytest_capman = capman - _continued = False - - def do_debug(self, arg): - cls._recursive_debug += 1 - ret = super().do_debug(arg) - cls._recursive_debug -= 1 - return ret - - def do_continue(self, arg): - ret = super().do_continue(arg) - if cls._recursive_debug == 0: - assert cls._config is not None - tw = _pytest.config.create_terminal_writer(cls._config) - tw.line() - - capman = self._pytest_capman - capturing = pytestPDB._is_capturing(capman) - if capturing: - if capturing == "global": - tw.sep(">", "PDB continue (IO-capturing resumed)") - else: - tw.sep( - ">", - "PDB continue (IO-capturing resumed for %s)" - % capturing, - ) - assert capman is not None - capman.resume() - else: - tw.sep(">", "PDB continue") - assert cls._pluginmanager is not None - cls._pluginmanager.hook.pytest_leave_pdb(config=cls._config, pdb=self) - self._continued = True - return ret - - do_c = do_cont = do_continue - - def do_quit(self, arg): - """Raise Exit outcome when quit command is used in pdb. - - This is a bit of a hack - it would be better if BdbQuit - could be handled, but this would require to wrap the - whole pytest run, and adjust the report etc. - """ - ret = super().do_quit(arg) - - if cls._recursive_debug == 0: - outcomes.exit("Quitting debugger") - - return ret - - do_q = do_quit - do_exit = do_quit - - def setup(self, f, tb): - """Suspend on setup(). - - Needed after do_continue resumed, and entering another - breakpoint again. - """ - ret = super().setup(f, tb) - if not ret and self._continued: - # pdb.setup() returns True if the command wants to exit - # from the interaction: do not suspend capturing then. - if self._pytest_capman: - self._pytest_capman.suspend_global_capture(in_=True) - return ret - - def get_stack(self, f, t): - stack, i = super().get_stack(f, t) - if f is None: - # Find last non-hidden frame. - i = max(0, len(stack) - 1) - while i and stack[i][0].f_locals.get("__tracebackhide__", False): - i -= 1 - return stack, i - - return PytestPdbWrapper - - @classmethod - def _init_pdb(cls, method, *args, **kwargs): - """Initialize PDB debugging, dropping any IO capturing.""" - import _pytest.config - - if cls._pluginmanager is None: - capman: Optional[CaptureManager] = None - else: - capman = cls._pluginmanager.getplugin("capturemanager") - if capman: - capman.suspend(in_=True) - - if cls._config: - tw = _pytest.config.create_terminal_writer(cls._config) - tw.line() - - if cls._recursive_debug == 0: - # Handle header similar to pdb.set_trace in py37+. - header = kwargs.pop("header", None) - if header is not None: - tw.sep(">", header) - else: - capturing = cls._is_capturing(capman) - if capturing == "global": - tw.sep(">", f"PDB {method} (IO-capturing turned off)") - elif capturing: - tw.sep( - ">", - "PDB %s (IO-capturing turned off for %s)" - % (method, capturing), - ) - else: - tw.sep(">", f"PDB {method}") - - _pdb = cls._import_pdb_cls(capman)(**kwargs) - - if cls._pluginmanager: - cls._pluginmanager.hook.pytest_enter_pdb(config=cls._config, pdb=_pdb) - return _pdb - - @classmethod - def set_trace(cls, *args, **kwargs) -> None: - """Invoke debugging via ``Pdb.set_trace``, dropping any IO capturing.""" - frame = sys._getframe().f_back - _pdb = cls._init_pdb("set_trace", *args, **kwargs) - _pdb.set_trace(frame) - - -class PdbInvoke: - def pytest_exception_interact( - self, node: Node, call: "CallInfo[Any]", report: BaseReport - ) -> None: - capman = node.config.pluginmanager.getplugin("capturemanager") - if capman: - capman.suspend_global_capture(in_=True) - out, err = capman.read_global_capture() - sys.stdout.write(out) - sys.stdout.write(err) - assert call.excinfo is not None - - if not isinstance(call.excinfo.value, unittest.SkipTest): - _enter_pdb(node, call.excinfo, report) - - def pytest_internalerror(self, excinfo: ExceptionInfo[BaseException]) -> None: - tb = _postmortem_traceback(excinfo) - post_mortem(tb) - - -class PdbTrace: - @hookimpl(hookwrapper=True) - def pytest_pyfunc_call(self, pyfuncitem) -> Generator[None, None, None]: - wrap_pytest_function_for_tracing(pyfuncitem) - yield - - -def wrap_pytest_function_for_tracing(pyfuncitem): - """Change the Python function object of the given Function item by a - wrapper which actually enters pdb before calling the python function - itself, effectively leaving the user in the pdb prompt in the first - statement of the function.""" - _pdb = pytestPDB._init_pdb("runcall") - testfunction = pyfuncitem.obj - - # we can't just return `partial(pdb.runcall, testfunction)` because (on - # python < 3.7.4) runcall's first param is `func`, which means we'd get - # an exception if one of the kwargs to testfunction was called `func`. - @functools.wraps(testfunction) - def wrapper(*args, **kwargs): - func = functools.partial(testfunction, *args, **kwargs) - _pdb.runcall(func) - - pyfuncitem.obj = wrapper - - -def maybe_wrap_pytest_function_for_tracing(pyfuncitem): - """Wrap the given pytestfunct item for tracing support if --trace was given in - the command line.""" - if pyfuncitem.config.getvalue("trace"): - wrap_pytest_function_for_tracing(pyfuncitem) - - -def _enter_pdb( - node: Node, excinfo: ExceptionInfo[BaseException], rep: BaseReport -) -> BaseReport: - # XXX we re-use the TerminalReporter's terminalwriter - # because this seems to avoid some encoding related troubles - # for not completely clear reasons. - tw = node.config.pluginmanager.getplugin("terminalreporter")._tw - tw.line() - - showcapture = node.config.option.showcapture - - for sectionname, content in ( - ("stdout", rep.capstdout), - ("stderr", rep.capstderr), - ("log", rep.caplog), - ): - if showcapture in (sectionname, "all") and content: - tw.sep(">", "captured " + sectionname) - if content[-1:] == "\n": - content = content[:-1] - tw.line(content) - - tw.sep(">", "traceback") - rep.toterminal(tw) - tw.sep(">", "entering PDB") - tb = _postmortem_traceback(excinfo) - rep._pdbshown = True # type: ignore[attr-defined] - post_mortem(tb) - return rep - - -def _postmortem_traceback(excinfo: ExceptionInfo[BaseException]) -> types.TracebackType: - from doctest import UnexpectedException - - if isinstance(excinfo.value, UnexpectedException): - # A doctest.UnexpectedException is not useful for post_mortem. - # Use the underlying exception instead: - return excinfo.value.exc_info[2] - elif isinstance(excinfo.value, ConftestImportFailure): - # A config.ConftestImportFailure is not useful for post_mortem. - # Use the underlying exception instead: - return excinfo.value.excinfo[2] - else: - assert excinfo._excinfo is not None - return excinfo._excinfo[2] - - -def post_mortem(t: types.TracebackType) -> None: - p = pytestPDB._init_pdb("post_mortem") - p.reset() - p.interaction(None, t) - if p.quitting: - outcomes.exit("Quitting debugger") diff --git a/venv/lib/python3.12/site-packages/_pytest/deprecated.py b/venv/lib/python3.12/site-packages/_pytest/deprecated.py deleted file mode 100644 index b9c10df..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/deprecated.py +++ /dev/null @@ -1,146 +0,0 @@ -"""Deprecation messages and bits of code used elsewhere in the codebase that -is planned to be removed in the next pytest release. - -Keeping it in a central location makes it easy to track what is deprecated and should -be removed when the time comes. - -All constants defined in this module should be either instances of -:class:`PytestWarning`, or :class:`UnformattedWarning` -in case of warnings which need to format their messages. -""" -from warnings import warn - -from _pytest.warning_types import PytestDeprecationWarning -from _pytest.warning_types import PytestRemovedIn8Warning -from _pytest.warning_types import UnformattedWarning - -# set of plugins which have been integrated into the core; we use this list to ignore -# them during registration to avoid conflicts -DEPRECATED_EXTERNAL_PLUGINS = { - "pytest_catchlog", - "pytest_capturelog", - "pytest_faulthandler", -} - -NOSE_SUPPORT = UnformattedWarning( - PytestRemovedIn8Warning, - "Support for nose tests is deprecated and will be removed in a future release.\n" - "{nodeid} is using nose method: `{method}` ({stage})\n" - "See docs: https://docs.pytest.org/en/stable/deprecations.html#support-for-tests-written-for-nose", -) - -NOSE_SUPPORT_METHOD = UnformattedWarning( - PytestRemovedIn8Warning, - "Support for nose tests is deprecated and will be removed in a future release.\n" - "{nodeid} is using nose-specific method: `{method}(self)`\n" - "To remove this warning, rename it to `{method}_method(self)`\n" - "See docs: https://docs.pytest.org/en/stable/deprecations.html#support-for-tests-written-for-nose", -) - - -# This can be* removed pytest 8, but it's harmless and common, so no rush to remove. -# * If you're in the future: "could have been". -YIELD_FIXTURE = PytestDeprecationWarning( - "@pytest.yield_fixture is deprecated.\n" - "Use @pytest.fixture instead; they are the same." -) - -WARNING_CMDLINE_PREPARSE_HOOK = PytestRemovedIn8Warning( - "The pytest_cmdline_preparse hook is deprecated and will be removed in a future release. \n" - "Please use pytest_load_initial_conftests hook instead." -) - -FSCOLLECTOR_GETHOOKPROXY_ISINITPATH = PytestRemovedIn8Warning( - "The gethookproxy() and isinitpath() methods of FSCollector and Package are deprecated; " - "use self.session.gethookproxy() and self.session.isinitpath() instead. " -) - -STRICT_OPTION = PytestRemovedIn8Warning( - "The --strict option is deprecated, use --strict-markers instead." -) - -# This deprecation is never really meant to be removed. -PRIVATE = PytestDeprecationWarning("A private pytest class or function was used.") - -ARGUMENT_PERCENT_DEFAULT = PytestRemovedIn8Warning( - 'pytest now uses argparse. "%default" should be changed to "%(default)s"', -) - -ARGUMENT_TYPE_STR_CHOICE = UnformattedWarning( - PytestRemovedIn8Warning, - "`type` argument to addoption() is the string {typ!r}." - " For choices this is optional and can be omitted, " - " but when supplied should be a type (for example `str` or `int`)." - " (options: {names})", -) - -ARGUMENT_TYPE_STR = UnformattedWarning( - PytestRemovedIn8Warning, - "`type` argument to addoption() is the string {typ!r}, " - " but when supplied should be a type (for example `str` or `int`)." - " (options: {names})", -) - - -HOOK_LEGACY_PATH_ARG = UnformattedWarning( - PytestRemovedIn8Warning, - "The ({pylib_path_arg}: py.path.local) argument is deprecated, please use ({pathlib_path_arg}: pathlib.Path)\n" - "see https://docs.pytest.org/en/latest/deprecations.html" - "#py-path-local-arguments-for-hooks-replaced-with-pathlib-path", -) - -NODE_CTOR_FSPATH_ARG = UnformattedWarning( - PytestRemovedIn8Warning, - "The (fspath: py.path.local) argument to {node_type_name} is deprecated. " - "Please use the (path: pathlib.Path) argument instead.\n" - "See https://docs.pytest.org/en/latest/deprecations.html" - "#fspath-argument-for-node-constructors-replaced-with-pathlib-path", -) - -WARNS_NONE_ARG = PytestRemovedIn8Warning( - "Passing None has been deprecated.\n" - "See https://docs.pytest.org/en/latest/how-to/capture-warnings.html" - "#additional-use-cases-of-warnings-in-tests" - " for alternatives in common use cases." -) - -KEYWORD_MSG_ARG = UnformattedWarning( - PytestRemovedIn8Warning, - "pytest.{func}(msg=...) is now deprecated, use pytest.{func}(reason=...) instead", -) - -INSTANCE_COLLECTOR = PytestRemovedIn8Warning( - "The pytest.Instance collector type is deprecated and is no longer used. " - "See https://docs.pytest.org/en/latest/deprecations.html#the-pytest-instance-collector", -) -HOOK_LEGACY_MARKING = UnformattedWarning( - PytestDeprecationWarning, - "The hook{type} {fullname} uses old-style configuration options (marks or attributes).\n" - "Please use the pytest.hook{type}({hook_opts}) decorator instead\n" - " to configure the hooks.\n" - " See https://docs.pytest.org/en/latest/deprecations.html" - "#configuring-hook-specs-impls-using-markers", -) - -# You want to make some `__init__` or function "private". -# -# def my_private_function(some, args): -# ... -# -# Do this: -# -# def my_private_function(some, args, *, _ispytest: bool = False): -# check_ispytest(_ispytest) -# ... -# -# Change all internal/allowed calls to -# -# my_private_function(some, args, _ispytest=True) -# -# All other calls will get the default _ispytest=False and trigger -# the warning (possibly error in the future). - - -def check_ispytest(ispytest: bool) -> None: - if not ispytest: - warn(PRIVATE, stacklevel=3) diff --git a/venv/lib/python3.12/site-packages/_pytest/doctest.py b/venv/lib/python3.12/site-packages/_pytest/doctest.py deleted file mode 100644 index 771f089..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/doctest.py +++ /dev/null @@ -1,752 +0,0 @@ -"""Discover and run doctests in modules and test files.""" -import bdb -import inspect -import os -import platform -import sys -import traceback -import types -import warnings -from contextlib import contextmanager -from pathlib import Path -from typing import Any -from typing import Callable -from typing import Dict -from typing import Generator -from typing import Iterable -from typing import List -from typing import Optional -from typing import Pattern -from typing import Sequence -from typing import Tuple -from typing import Type -from typing import TYPE_CHECKING -from typing import Union - -from _pytest import outcomes -from _pytest._code.code import ExceptionInfo -from _pytest._code.code import ReprFileLocation -from _pytest._code.code import TerminalRepr -from _pytest._io import TerminalWriter -from _pytest.compat import safe_getattr -from _pytest.config import Config -from _pytest.config.argparsing import Parser -from _pytest.fixtures import fixture -from _pytest.fixtures import FixtureRequest -from _pytest.nodes import Collector -from _pytest.nodes import Item -from _pytest.outcomes import OutcomeException -from _pytest.outcomes import skip -from _pytest.pathlib import fnmatch_ex -from _pytest.pathlib import import_path -from _pytest.python import Module -from _pytest.python_api import approx -from _pytest.warning_types import PytestWarning - -if TYPE_CHECKING: - import doctest - -DOCTEST_REPORT_CHOICE_NONE = "none" -DOCTEST_REPORT_CHOICE_CDIFF = "cdiff" -DOCTEST_REPORT_CHOICE_NDIFF = "ndiff" -DOCTEST_REPORT_CHOICE_UDIFF = "udiff" -DOCTEST_REPORT_CHOICE_ONLY_FIRST_FAILURE = "only_first_failure" - -DOCTEST_REPORT_CHOICES = ( - DOCTEST_REPORT_CHOICE_NONE, - DOCTEST_REPORT_CHOICE_CDIFF, - DOCTEST_REPORT_CHOICE_NDIFF, - DOCTEST_REPORT_CHOICE_UDIFF, - DOCTEST_REPORT_CHOICE_ONLY_FIRST_FAILURE, -) - -# Lazy definition of runner class -RUNNER_CLASS = None -# Lazy definition of output checker class -CHECKER_CLASS: Optional[Type["doctest.OutputChecker"]] = None - - -def pytest_addoption(parser: Parser) -> None: - parser.addini( - "doctest_optionflags", - "Option flags for doctests", - type="args", - default=["ELLIPSIS"], - ) - parser.addini( - "doctest_encoding", "Encoding used for doctest files", default="utf-8" - ) - group = parser.getgroup("collect") - group.addoption( - "--doctest-modules", - action="store_true", - default=False, - help="Run doctests in all .py modules", - dest="doctestmodules", - ) - group.addoption( - "--doctest-report", - type=str.lower, - default="udiff", - help="Choose another output format for diffs on doctest failure", - choices=DOCTEST_REPORT_CHOICES, - dest="doctestreport", - ) - group.addoption( - "--doctest-glob", - action="append", - default=[], - metavar="pat", - help="Doctests file matching pattern, default: test*.txt", - dest="doctestglob", - ) - group.addoption( - "--doctest-ignore-import-errors", - action="store_true", - default=False, - help="Ignore doctest ImportErrors", - dest="doctest_ignore_import_errors", - ) - group.addoption( - "--doctest-continue-on-failure", - action="store_true", - default=False, - help="For a given doctest, continue to run after the first failure", - dest="doctest_continue_on_failure", - ) - - -def pytest_unconfigure() -> None: - global RUNNER_CLASS - - RUNNER_CLASS = None - - -def pytest_collect_file( - file_path: Path, - parent: Collector, -) -> Optional[Union["DoctestModule", "DoctestTextfile"]]: - config = parent.config - if file_path.suffix == ".py": - if config.option.doctestmodules and not any( - (_is_setup_py(file_path), _is_main_py(file_path)) - ): - mod: DoctestModule = DoctestModule.from_parent(parent, path=file_path) - return mod - elif _is_doctest(config, file_path, parent): - txt: DoctestTextfile = DoctestTextfile.from_parent(parent, path=file_path) - return txt - return None - - -def _is_setup_py(path: Path) -> bool: - if path.name != "setup.py": - return False - contents = path.read_bytes() - return b"setuptools" in contents or b"distutils" in contents - - -def _is_doctest(config: Config, path: Path, parent: Collector) -> bool: - if path.suffix in (".txt", ".rst") and parent.session.isinitpath(path): - return True - globs = config.getoption("doctestglob") or ["test*.txt"] - return any(fnmatch_ex(glob, path) for glob in globs) - - -def _is_main_py(path: Path) -> bool: - return path.name == "__main__.py" - - -class ReprFailDoctest(TerminalRepr): - def __init__( - self, reprlocation_lines: Sequence[Tuple[ReprFileLocation, Sequence[str]]] - ) -> None: - self.reprlocation_lines = reprlocation_lines - - def toterminal(self, tw: TerminalWriter) -> None: - for reprlocation, lines in self.reprlocation_lines: - for line in lines: - tw.line(line) - reprlocation.toterminal(tw) - - -class MultipleDoctestFailures(Exception): - def __init__(self, failures: Sequence["doctest.DocTestFailure"]) -> None: - super().__init__() - self.failures = failures - - -def _init_runner_class() -> Type["doctest.DocTestRunner"]: - import doctest - - class PytestDoctestRunner(doctest.DebugRunner): - """Runner to collect failures. - - Note that the out variable in this case is a list instead of a - stdout-like object. - """ - - def __init__( - self, - checker: Optional["doctest.OutputChecker"] = None, - verbose: Optional[bool] = None, - optionflags: int = 0, - continue_on_failure: bool = True, - ) -> None: - super().__init__(checker=checker, verbose=verbose, optionflags=optionflags) - self.continue_on_failure = continue_on_failure - - def report_failure( - self, - out, - test: "doctest.DocTest", - example: "doctest.Example", - got: str, - ) -> None: - failure = doctest.DocTestFailure(test, example, got) - if self.continue_on_failure: - out.append(failure) - else: - raise failure - - def report_unexpected_exception( - self, - out, - test: "doctest.DocTest", - example: "doctest.Example", - exc_info: Tuple[Type[BaseException], BaseException, types.TracebackType], - ) -> None: - if isinstance(exc_info[1], OutcomeException): - raise exc_info[1] - if isinstance(exc_info[1], bdb.BdbQuit): - outcomes.exit("Quitting debugger") - failure = doctest.UnexpectedException(test, example, exc_info) - if self.continue_on_failure: - out.append(failure) - else: - raise failure - - return PytestDoctestRunner - - -def _get_runner( - checker: Optional["doctest.OutputChecker"] = None, - verbose: Optional[bool] = None, - optionflags: int = 0, - continue_on_failure: bool = True, -) -> "doctest.DocTestRunner": - # We need this in order to do a lazy import on doctest - global RUNNER_CLASS - if RUNNER_CLASS is None: - RUNNER_CLASS = _init_runner_class() - # Type ignored because the continue_on_failure argument is only defined on - # PytestDoctestRunner, which is lazily defined so can't be used as a type. - return RUNNER_CLASS( # type: ignore - checker=checker, - verbose=verbose, - optionflags=optionflags, - continue_on_failure=continue_on_failure, - ) - - -class DoctestItem(Item): - def __init__( - self, - name: str, - parent: "Union[DoctestTextfile, DoctestModule]", - runner: Optional["doctest.DocTestRunner"] = None, - dtest: Optional["doctest.DocTest"] = None, - ) -> None: - super().__init__(name, parent) - self.runner = runner - self.dtest = dtest - self.obj = None - self.fixture_request: Optional[FixtureRequest] = None - - @classmethod - def from_parent( # type: ignore - cls, - parent: "Union[DoctestTextfile, DoctestModule]", - *, - name: str, - runner: "doctest.DocTestRunner", - dtest: "doctest.DocTest", - ): - # incompatible signature due to imposed limits on subclass - """The public named constructor.""" - return super().from_parent(name=name, parent=parent, runner=runner, dtest=dtest) - - def setup(self) -> None: - if self.dtest is not None: - self.fixture_request = _setup_fixtures(self) - globs = dict(getfixture=self.fixture_request.getfixturevalue) - for name, value in self.fixture_request.getfixturevalue( - "doctest_namespace" - ).items(): - globs[name] = value - self.dtest.globs.update(globs) - - def runtest(self) -> None: - assert self.dtest is not None - assert self.runner is not None - _check_all_skipped(self.dtest) - self._disable_output_capturing_for_darwin() - failures: List["doctest.DocTestFailure"] = [] - # Type ignored because we change the type of `out` from what - # doctest expects. - self.runner.run(self.dtest, out=failures) # type: ignore[arg-type] - if failures: - raise MultipleDoctestFailures(failures) - - def _disable_output_capturing_for_darwin(self) -> None: - """Disable output capturing. Otherwise, stdout is lost to doctest (#985).""" - if platform.system() != "Darwin": - return - capman = self.config.pluginmanager.getplugin("capturemanager") - if capman: - capman.suspend_global_capture(in_=True) - out, err = capman.read_global_capture() - sys.stdout.write(out) - sys.stderr.write(err) - - # TODO: Type ignored -- breaks Liskov Substitution. - def repr_failure( # type: ignore[override] - self, - excinfo: ExceptionInfo[BaseException], - ) -> Union[str, TerminalRepr]: - import doctest - - failures: Optional[ - Sequence[Union[doctest.DocTestFailure, doctest.UnexpectedException]] - ] = None - if isinstance( - excinfo.value, (doctest.DocTestFailure, doctest.UnexpectedException) - ): - failures = [excinfo.value] - elif isinstance(excinfo.value, MultipleDoctestFailures): - failures = excinfo.value.failures - - if failures is None: - return super().repr_failure(excinfo) - - reprlocation_lines = [] - for failure in failures: - example = failure.example - test = failure.test - filename = test.filename - if test.lineno is None: - lineno = None - else: - lineno = test.lineno + example.lineno + 1 - message = type(failure).__name__ - # TODO: ReprFileLocation doesn't expect a None lineno. - reprlocation = ReprFileLocation(filename, lineno, message) # type: ignore[arg-type] - checker = _get_checker() - report_choice = _get_report_choice(self.config.getoption("doctestreport")) - if lineno is not None: - assert failure.test.docstring is not None - lines = failure.test.docstring.splitlines(False) - # add line numbers to the left of the error message - assert test.lineno is not None - lines = [ - "%03d %s" % (i + test.lineno + 1, x) for (i, x) in enumerate(lines) - ] - # trim docstring error lines to 10 - lines = lines[max(example.lineno - 9, 0) : example.lineno + 1] - else: - lines = [ - "EXAMPLE LOCATION UNKNOWN, not showing all tests of that example" - ] - indent = ">>>" - for line in example.source.splitlines(): - lines.append(f"??? {indent} {line}") - indent = "..." - if isinstance(failure, doctest.DocTestFailure): - lines += checker.output_difference( - example, failure.got, report_choice - ).split("\n") - else: - inner_excinfo = ExceptionInfo.from_exc_info(failure.exc_info) - lines += ["UNEXPECTED EXCEPTION: %s" % repr(inner_excinfo.value)] - lines += [ - x.strip("\n") for x in traceback.format_exception(*failure.exc_info) - ] - reprlocation_lines.append((reprlocation, lines)) - return ReprFailDoctest(reprlocation_lines) - - def reportinfo(self) -> Tuple[Union["os.PathLike[str]", str], Optional[int], str]: - assert self.dtest is not None - return self.path, self.dtest.lineno, "[doctest] %s" % self.name - - -def _get_flag_lookup() -> Dict[str, int]: - import doctest - - return dict( - DONT_ACCEPT_TRUE_FOR_1=doctest.DONT_ACCEPT_TRUE_FOR_1, - DONT_ACCEPT_BLANKLINE=doctest.DONT_ACCEPT_BLANKLINE, - NORMALIZE_WHITESPACE=doctest.NORMALIZE_WHITESPACE, - ELLIPSIS=doctest.ELLIPSIS, - IGNORE_EXCEPTION_DETAIL=doctest.IGNORE_EXCEPTION_DETAIL, - COMPARISON_FLAGS=doctest.COMPARISON_FLAGS, - ALLOW_UNICODE=_get_allow_unicode_flag(), - ALLOW_BYTES=_get_allow_bytes_flag(), - NUMBER=_get_number_flag(), - ) - - -def get_optionflags(parent): - optionflags_str = parent.config.getini("doctest_optionflags") - flag_lookup_table = _get_flag_lookup() - flag_acc = 0 - for flag in optionflags_str: - flag_acc |= flag_lookup_table[flag] - return flag_acc - - -def _get_continue_on_failure(config): - continue_on_failure = config.getvalue("doctest_continue_on_failure") - if continue_on_failure: - # We need to turn off this if we use pdb since we should stop at - # the first failure. - if config.getvalue("usepdb"): - continue_on_failure = False - return continue_on_failure - - -class DoctestTextfile(Module): - obj = None - - def collect(self) -> Iterable[DoctestItem]: - import doctest - - # Inspired by doctest.testfile; ideally we would use it directly, - # but it doesn't support passing a custom checker. - encoding = self.config.getini("doctest_encoding") - text = self.path.read_text(encoding) - filename = str(self.path) - name = self.path.name - globs = {"__name__": "__main__"} - - optionflags = get_optionflags(self) - - runner = _get_runner( - verbose=False, - optionflags=optionflags, - checker=_get_checker(), - continue_on_failure=_get_continue_on_failure(self.config), - ) - - parser = doctest.DocTestParser() - test = parser.get_doctest(text, globs, name, filename, 0) - if test.examples: - yield DoctestItem.from_parent( - self, name=test.name, runner=runner, dtest=test - ) - - -def _check_all_skipped(test: "doctest.DocTest") -> None: - """Raise pytest.skip() if all examples in the given DocTest have the SKIP - option set.""" - import doctest - - all_skipped = all(x.options.get(doctest.SKIP, False) for x in test.examples) - if all_skipped: - skip("all tests skipped by +SKIP option") - - -def _is_mocked(obj: object) -> bool: - """Return if an object is possibly a mock object by checking the - existence of a highly improbable attribute.""" - return ( - safe_getattr(obj, "pytest_mock_example_attribute_that_shouldnt_exist", None) - is not None - ) - - -@contextmanager -def _patch_unwrap_mock_aware() -> Generator[None, None, None]: - """Context manager which replaces ``inspect.unwrap`` with a version - that's aware of mock objects and doesn't recurse into them.""" - real_unwrap = inspect.unwrap - - def _mock_aware_unwrap( - func: Callable[..., Any], *, stop: Optional[Callable[[Any], Any]] = None - ) -> Any: - try: - if stop is None or stop is _is_mocked: - return real_unwrap(func, stop=_is_mocked) - _stop = stop - return real_unwrap(func, stop=lambda obj: _is_mocked(obj) or _stop(func)) - except Exception as e: - warnings.warn( - "Got %r when unwrapping %r. This is usually caused " - "by a violation of Python's object protocol; see e.g. " - "https://github.com/pytest-dev/pytest/issues/5080" % (e, func), - PytestWarning, - ) - raise - - inspect.unwrap = _mock_aware_unwrap - try: - yield - finally: - inspect.unwrap = real_unwrap - - -class DoctestModule(Module): - def collect(self) -> Iterable[DoctestItem]: - import doctest - - class MockAwareDocTestFinder(doctest.DocTestFinder): - """A hackish doctest finder that overrides stdlib internals to fix a stdlib bug. - - https://github.com/pytest-dev/pytest/issues/3456 - https://bugs.python.org/issue25532 - """ - - def _find_lineno(self, obj, source_lines): - """Doctest code does not take into account `@property`, this - is a hackish way to fix it. https://bugs.python.org/issue17446 - - Wrapped Doctests will need to be unwrapped so the correct - line number is returned. This will be reported upstream. #8796 - """ - if isinstance(obj, property): - obj = getattr(obj, "fget", obj) - - if hasattr(obj, "__wrapped__"): - # Get the main obj in case of it being wrapped - obj = inspect.unwrap(obj) - - # Type ignored because this is a private function. - return super()._find_lineno( # type:ignore[misc] - obj, - source_lines, - ) - - def _find( - self, tests, obj, name, module, source_lines, globs, seen - ) -> None: - if _is_mocked(obj): - return - with _patch_unwrap_mock_aware(): - - # Type ignored because this is a private function. - super()._find( # type:ignore[misc] - tests, obj, name, module, source_lines, globs, seen - ) - - if self.path.name == "conftest.py": - module = self.config.pluginmanager._importconftest( - self.path, - self.config.getoption("importmode"), - rootpath=self.config.rootpath, - ) - else: - try: - module = import_path( - self.path, - root=self.config.rootpath, - mode=self.config.getoption("importmode"), - ) - except ImportError: - if self.config.getvalue("doctest_ignore_import_errors"): - skip("unable to import module %r" % self.path) - else: - raise - # Uses internal doctest module parsing mechanism. - finder = MockAwareDocTestFinder() - optionflags = get_optionflags(self) - runner = _get_runner( - verbose=False, - optionflags=optionflags, - checker=_get_checker(), - continue_on_failure=_get_continue_on_failure(self.config), - ) - - for test in finder.find(module, module.__name__): - if test.examples: # skip empty doctests - yield DoctestItem.from_parent( - self, name=test.name, runner=runner, dtest=test - ) - - -def _setup_fixtures(doctest_item: DoctestItem) -> FixtureRequest: - """Used by DoctestTextfile and DoctestItem to setup fixture information.""" - - def func() -> None: - pass - - doctest_item.funcargs = {} # type: ignore[attr-defined] - fm = doctest_item.session._fixturemanager - doctest_item._fixtureinfo = fm.getfixtureinfo( # type: ignore[attr-defined] - node=doctest_item, func=func, cls=None, funcargs=False - ) - fixture_request = FixtureRequest(doctest_item, _ispytest=True) - fixture_request._fillfixtures() - return fixture_request - - -def _init_checker_class() -> Type["doctest.OutputChecker"]: - import doctest - import re - - class LiteralsOutputChecker(doctest.OutputChecker): - # Based on doctest_nose_plugin.py from the nltk project - # (https://github.com/nltk/nltk) and on the "numtest" doctest extension - # by Sebastien Boisgerault (https://github.com/boisgera/numtest). - - _unicode_literal_re = re.compile(r"(\W|^)[uU]([rR]?[\'\"])", re.UNICODE) - _bytes_literal_re = re.compile(r"(\W|^)[bB]([rR]?[\'\"])", re.UNICODE) - _number_re = re.compile( - r""" - (?P - (?P - (?P [+-]?\d*)\.(?P\d+) - | - (?P [+-]?\d+)\. - ) - (?: - [Ee] - (?P [+-]?\d+) - )? - | - (?P [+-]?\d+) - (?: - [Ee] - (?P [+-]?\d+) - ) - ) - """, - re.VERBOSE, - ) - - def check_output(self, want: str, got: str, optionflags: int) -> bool: - if super().check_output(want, got, optionflags): - return True - - allow_unicode = optionflags & _get_allow_unicode_flag() - allow_bytes = optionflags & _get_allow_bytes_flag() - allow_number = optionflags & _get_number_flag() - - if not allow_unicode and not allow_bytes and not allow_number: - return False - - def remove_prefixes(regex: Pattern[str], txt: str) -> str: - return re.sub(regex, r"\1\2", txt) - - if allow_unicode: - want = remove_prefixes(self._unicode_literal_re, want) - got = remove_prefixes(self._unicode_literal_re, got) - - if allow_bytes: - want = remove_prefixes(self._bytes_literal_re, want) - got = remove_prefixes(self._bytes_literal_re, got) - - if allow_number: - got = self._remove_unwanted_precision(want, got) - - return super().check_output(want, got, optionflags) - - def _remove_unwanted_precision(self, want: str, got: str) -> str: - wants = list(self._number_re.finditer(want)) - gots = list(self._number_re.finditer(got)) - if len(wants) != len(gots): - return got - offset = 0 - for w, g in zip(wants, gots): - fraction: Optional[str] = w.group("fraction") - exponent: Optional[str] = w.group("exponent1") - if exponent is None: - exponent = w.group("exponent2") - precision = 0 if fraction is None else len(fraction) - if exponent is not None: - precision -= int(exponent) - if float(w.group()) == approx(float(g.group()), abs=10**-precision): - # They're close enough. Replace the text we actually - # got with the text we want, so that it will match when we - # check the string literally. - got = ( - got[: g.start() + offset] + w.group() + got[g.end() + offset :] - ) - offset += w.end() - w.start() - (g.end() - g.start()) - return got - - return LiteralsOutputChecker - - -def _get_checker() -> "doctest.OutputChecker": - """Return a doctest.OutputChecker subclass that supports some - additional options: - - * ALLOW_UNICODE and ALLOW_BYTES options to ignore u'' and b'' - prefixes (respectively) in string literals. Useful when the same - doctest should run in Python 2 and Python 3. - - * NUMBER to ignore floating-point differences smaller than the - precision of the literal number in the doctest. - - An inner class is used to avoid importing "doctest" at the module - level. - """ - global CHECKER_CLASS - if CHECKER_CLASS is None: - CHECKER_CLASS = _init_checker_class() - return CHECKER_CLASS() - - -def _get_allow_unicode_flag() -> int: - """Register and return the ALLOW_UNICODE flag.""" - import doctest - - return doctest.register_optionflag("ALLOW_UNICODE") - - -def _get_allow_bytes_flag() -> int: - """Register and return the ALLOW_BYTES flag.""" - import doctest - - return doctest.register_optionflag("ALLOW_BYTES") - - -def _get_number_flag() -> int: - """Register and return the NUMBER flag.""" - import doctest - - return doctest.register_optionflag("NUMBER") - - -def _get_report_choice(key: str) -> int: - """Return the actual `doctest` module flag value. - - We want to do it as late as possible to avoid importing `doctest` and all - its dependencies when parsing options, as it adds overhead and breaks tests. - """ - import doctest - - return { - DOCTEST_REPORT_CHOICE_UDIFF: doctest.REPORT_UDIFF, - DOCTEST_REPORT_CHOICE_CDIFF: doctest.REPORT_CDIFF, - DOCTEST_REPORT_CHOICE_NDIFF: doctest.REPORT_NDIFF, - DOCTEST_REPORT_CHOICE_ONLY_FIRST_FAILURE: doctest.REPORT_ONLY_FIRST_FAILURE, - DOCTEST_REPORT_CHOICE_NONE: 0, - }[key] - - -@fixture(scope="session") -def doctest_namespace() -> Dict[str, Any]: - """Fixture that returns a :py:class:`dict` that will be injected into the - namespace of doctests. - - Usually this fixture is used in conjunction with another ``autouse`` fixture: - - .. code-block:: python - - @pytest.fixture(autouse=True) - def add_np(doctest_namespace): - doctest_namespace["np"] = numpy - - For more details: :ref:`doctest_namespace`. - """ - return dict() diff --git a/venv/lib/python3.12/site-packages/_pytest/faulthandler.py b/venv/lib/python3.12/site-packages/_pytest/faulthandler.py deleted file mode 100644 index b9c9255..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/faulthandler.py +++ /dev/null @@ -1,97 +0,0 @@ -import io -import os -import sys -from typing import Generator -from typing import TextIO - -import pytest -from _pytest.config import Config -from _pytest.config.argparsing import Parser -from _pytest.nodes import Item -from _pytest.stash import StashKey - - -fault_handler_stderr_key = StashKey[TextIO]() -fault_handler_originally_enabled_key = StashKey[bool]() - - -def pytest_addoption(parser: Parser) -> None: - help = ( - "Dump the traceback of all threads if a test takes " - "more than TIMEOUT seconds to finish" - ) - parser.addini("faulthandler_timeout", help, default=0.0) - - -def pytest_configure(config: Config) -> None: - import faulthandler - - stderr_fd_copy = os.dup(get_stderr_fileno()) - config.stash[fault_handler_stderr_key] = open(stderr_fd_copy, "w") - config.stash[fault_handler_originally_enabled_key] = faulthandler.is_enabled() - faulthandler.enable(file=config.stash[fault_handler_stderr_key]) - - -def pytest_unconfigure(config: Config) -> None: - import faulthandler - - faulthandler.disable() - # Close the dup file installed during pytest_configure. - if fault_handler_stderr_key in config.stash: - config.stash[fault_handler_stderr_key].close() - del config.stash[fault_handler_stderr_key] - if config.stash.get(fault_handler_originally_enabled_key, False): - # Re-enable the faulthandler if it was originally enabled. - faulthandler.enable(file=get_stderr_fileno()) - - -def get_stderr_fileno() -> int: - try: - fileno = sys.stderr.fileno() - # The Twisted Logger will return an invalid file descriptor since it is not backed - # by an FD. So, let's also forward this to the same code path as with pytest-xdist. - if fileno == -1: - raise AttributeError() - return fileno - except (AttributeError, io.UnsupportedOperation): - # pytest-xdist monkeypatches sys.stderr with an object that is not an actual file. - # https://docs.python.org/3/library/faulthandler.html#issue-with-file-descriptors - # This is potentially dangerous, but the best we can do. - return sys.__stderr__.fileno() - - -def get_timeout_config_value(config: Config) -> float: - return float(config.getini("faulthandler_timeout") or 0.0) - - -@pytest.hookimpl(hookwrapper=True, trylast=True) -def pytest_runtest_protocol(item: Item) -> Generator[None, None, None]: - timeout = get_timeout_config_value(item.config) - stderr = item.config.stash[fault_handler_stderr_key] - if timeout > 0 and stderr is not None: - import faulthandler - - faulthandler.dump_traceback_later(timeout, file=stderr) - try: - yield - finally: - faulthandler.cancel_dump_traceback_later() - else: - yield - - -@pytest.hookimpl(tryfirst=True) -def pytest_enter_pdb() -> None: - """Cancel any traceback dumping due to timeout before entering pdb.""" - import faulthandler - - faulthandler.cancel_dump_traceback_later() - - -@pytest.hookimpl(tryfirst=True) -def pytest_exception_interact() -> None: - """Cancel any traceback dumping due to an interactive exception being - raised.""" - import faulthandler - - faulthandler.cancel_dump_traceback_later() diff --git a/venv/lib/python3.12/site-packages/_pytest/fixtures.py b/venv/lib/python3.12/site-packages/_pytest/fixtures.py deleted file mode 100644 index 7ef261b..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/fixtures.py +++ /dev/null @@ -1,1677 +0,0 @@ -import functools -import inspect -import os -import sys -import warnings -from collections import defaultdict -from collections import deque -from contextlib import suppress -from pathlib import Path -from types import TracebackType -from typing import Any -from typing import Callable -from typing import cast -from typing import Dict -from typing import Generator -from typing import Generic -from typing import Iterable -from typing import Iterator -from typing import List -from typing import MutableMapping -from typing import NoReturn -from typing import Optional -from typing import Sequence -from typing import Set -from typing import Tuple -from typing import Type -from typing import TYPE_CHECKING -from typing import TypeVar -from typing import Union - -import attr - -import _pytest -from _pytest import nodes -from _pytest._code import getfslineno -from _pytest._code.code import FormattedExcinfo -from _pytest._code.code import TerminalRepr -from _pytest._io import TerminalWriter -from _pytest.compat import _format_args -from _pytest.compat import _PytestWrapper -from _pytest.compat import assert_never -from _pytest.compat import final -from _pytest.compat import get_real_func -from _pytest.compat import get_real_method -from _pytest.compat import getfuncargnames -from _pytest.compat import getimfunc -from _pytest.compat import getlocation -from _pytest.compat import is_generator -from _pytest.compat import NOTSET -from _pytest.compat import overload -from _pytest.compat import safe_getattr -from _pytest.config import _PluggyPlugin -from _pytest.config import Config -from _pytest.config.argparsing import Parser -from _pytest.deprecated import check_ispytest -from _pytest.deprecated import YIELD_FIXTURE -from _pytest.mark import Mark -from _pytest.mark import ParameterSet -from _pytest.mark.structures import MarkDecorator -from _pytest.outcomes import fail -from _pytest.outcomes import skip -from _pytest.outcomes import TEST_OUTCOME -from _pytest.pathlib import absolutepath -from _pytest.pathlib import bestrelpath -from _pytest.scope import HIGH_SCOPES -from _pytest.scope import Scope -from _pytest.stash import StashKey - - -if TYPE_CHECKING: - from typing import Deque - - from _pytest.scope import _ScopeName - from _pytest.main import Session - from _pytest.python import CallSpec2 - from _pytest.python import Metafunc - - -# The value of the fixture -- return/yield of the fixture function (type variable). -FixtureValue = TypeVar("FixtureValue") -# The type of the fixture function (type variable). -FixtureFunction = TypeVar("FixtureFunction", bound=Callable[..., object]) -# The type of a fixture function (type alias generic in fixture value). -_FixtureFunc = Union[ - Callable[..., FixtureValue], Callable[..., Generator[FixtureValue, None, None]] -] -# The type of FixtureDef.cached_result (type alias generic in fixture value). -_FixtureCachedResult = Union[ - Tuple[ - # The result. - FixtureValue, - # Cache key. - object, - None, - ], - Tuple[ - None, - # Cache key. - object, - # Exc info if raised. - Tuple[Type[BaseException], BaseException, TracebackType], - ], -] - - -@attr.s(frozen=True, auto_attribs=True) -class PseudoFixtureDef(Generic[FixtureValue]): - cached_result: "_FixtureCachedResult[FixtureValue]" - _scope: Scope - - -def pytest_sessionstart(session: "Session") -> None: - session._fixturemanager = FixtureManager(session) - - -def get_scope_package(node, fixturedef: "FixtureDef[object]"): - import pytest - - cls = pytest.Package - current = node - fixture_package_name = "{}/{}".format(fixturedef.baseid, "__init__.py") - while current and ( - type(current) is not cls or fixture_package_name != current.nodeid - ): - current = current.parent - if current is None: - return node.session - return current - - -def get_scope_node( - node: nodes.Node, scope: Scope -) -> Optional[Union[nodes.Item, nodes.Collector]]: - import _pytest.python - - if scope is Scope.Function: - return node.getparent(nodes.Item) - elif scope is Scope.Class: - return node.getparent(_pytest.python.Class) - elif scope is Scope.Module: - return node.getparent(_pytest.python.Module) - elif scope is Scope.Package: - return node.getparent(_pytest.python.Package) - elif scope is Scope.Session: - return node.getparent(_pytest.main.Session) - else: - assert_never(scope) - - -# Used for storing artificial fixturedefs for direct parametrization. -name2pseudofixturedef_key = StashKey[Dict[str, "FixtureDef[Any]"]]() - - -def add_funcarg_pseudo_fixture_def( - collector: nodes.Collector, metafunc: "Metafunc", fixturemanager: "FixtureManager" -) -> None: - # This function will transform all collected calls to functions - # if they use direct funcargs (i.e. direct parametrization) - # because we want later test execution to be able to rely on - # an existing FixtureDef structure for all arguments. - # XXX we can probably avoid this algorithm if we modify CallSpec2 - # to directly care for creating the fixturedefs within its methods. - if not metafunc._calls[0].funcargs: - # This function call does not have direct parametrization. - return - # Collect funcargs of all callspecs into a list of values. - arg2params: Dict[str, List[object]] = {} - arg2scope: Dict[str, Scope] = {} - for callspec in metafunc._calls: - for argname, argvalue in callspec.funcargs.items(): - assert argname not in callspec.params - callspec.params[argname] = argvalue - arg2params_list = arg2params.setdefault(argname, []) - callspec.indices[argname] = len(arg2params_list) - arg2params_list.append(argvalue) - if argname not in arg2scope: - scope = callspec._arg2scope.get(argname, Scope.Function) - arg2scope[argname] = scope - callspec.funcargs.clear() - - # Register artificial FixtureDef's so that later at test execution - # time we can rely on a proper FixtureDef to exist for fixture setup. - arg2fixturedefs = metafunc._arg2fixturedefs - for argname, valuelist in arg2params.items(): - # If we have a scope that is higher than function, we need - # to make sure we only ever create an according fixturedef on - # a per-scope basis. We thus store and cache the fixturedef on the - # node related to the scope. - scope = arg2scope[argname] - node = None - if scope is not Scope.Function: - node = get_scope_node(collector, scope) - if node is None: - assert scope is Scope.Class and isinstance( - collector, _pytest.python.Module - ) - # Use module-level collector for class-scope (for now). - node = collector - if node is None: - name2pseudofixturedef = None - else: - default: Dict[str, FixtureDef[Any]] = {} - name2pseudofixturedef = node.stash.setdefault( - name2pseudofixturedef_key, default - ) - if name2pseudofixturedef is not None and argname in name2pseudofixturedef: - arg2fixturedefs[argname] = [name2pseudofixturedef[argname]] - else: - fixturedef = FixtureDef( - fixturemanager=fixturemanager, - baseid="", - argname=argname, - func=get_direct_param_fixture_func, - scope=arg2scope[argname], - params=valuelist, - unittest=False, - ids=None, - ) - arg2fixturedefs[argname] = [fixturedef] - if name2pseudofixturedef is not None: - name2pseudofixturedef[argname] = fixturedef - - -def getfixturemarker(obj: object) -> Optional["FixtureFunctionMarker"]: - """Return fixturemarker or None if it doesn't exist or raised - exceptions.""" - return cast( - Optional[FixtureFunctionMarker], - safe_getattr(obj, "_pytestfixturefunction", None), - ) - - -# Parametrized fixture key, helper alias for code below. -_Key = Tuple[object, ...] - - -def get_parametrized_fixture_keys(item: nodes.Item, scope: Scope) -> Iterator[_Key]: - """Return list of keys for all parametrized arguments which match - the specified scope.""" - assert scope is not Scope.Function - try: - callspec = item.callspec # type: ignore[attr-defined] - except AttributeError: - pass - else: - cs: CallSpec2 = callspec - # cs.indices.items() is random order of argnames. Need to - # sort this so that different calls to - # get_parametrized_fixture_keys will be deterministic. - for argname, param_index in sorted(cs.indices.items()): - if cs._arg2scope[argname] != scope: - continue - if scope is Scope.Session: - key: _Key = (argname, param_index) - elif scope is Scope.Package: - key = (argname, param_index, item.path.parent) - elif scope is Scope.Module: - key = (argname, param_index, item.path) - elif scope is Scope.Class: - item_cls = item.cls # type: ignore[attr-defined] - key = (argname, param_index, item.path, item_cls) - else: - assert_never(scope) - yield key - - -# Algorithm for sorting on a per-parametrized resource setup basis. -# It is called for Session scope first and performs sorting -# down to the lower scopes such as to minimize number of "high scope" -# setups and teardowns. - - -def reorder_items(items: Sequence[nodes.Item]) -> List[nodes.Item]: - argkeys_cache: Dict[Scope, Dict[nodes.Item, Dict[_Key, None]]] = {} - items_by_argkey: Dict[Scope, Dict[_Key, Deque[nodes.Item]]] = {} - for scope in HIGH_SCOPES: - d: Dict[nodes.Item, Dict[_Key, None]] = {} - argkeys_cache[scope] = d - item_d: Dict[_Key, Deque[nodes.Item]] = defaultdict(deque) - items_by_argkey[scope] = item_d - for item in items: - keys = dict.fromkeys(get_parametrized_fixture_keys(item, scope), None) - if keys: - d[item] = keys - for key in keys: - item_d[key].append(item) - items_dict = dict.fromkeys(items, None) - return list( - reorder_items_atscope(items_dict, argkeys_cache, items_by_argkey, Scope.Session) - ) - - -def fix_cache_order( - item: nodes.Item, - argkeys_cache: Dict[Scope, Dict[nodes.Item, Dict[_Key, None]]], - items_by_argkey: Dict[Scope, Dict[_Key, "Deque[nodes.Item]"]], -) -> None: - for scope in HIGH_SCOPES: - for key in argkeys_cache[scope].get(item, []): - items_by_argkey[scope][key].appendleft(item) - - -def reorder_items_atscope( - items: Dict[nodes.Item, None], - argkeys_cache: Dict[Scope, Dict[nodes.Item, Dict[_Key, None]]], - items_by_argkey: Dict[Scope, Dict[_Key, "Deque[nodes.Item]"]], - scope: Scope, -) -> Dict[nodes.Item, None]: - if scope is Scope.Function or len(items) < 3: - return items - ignore: Set[Optional[_Key]] = set() - items_deque = deque(items) - items_done: Dict[nodes.Item, None] = {} - scoped_items_by_argkey = items_by_argkey[scope] - scoped_argkeys_cache = argkeys_cache[scope] - while items_deque: - no_argkey_group: Dict[nodes.Item, None] = {} - slicing_argkey = None - while items_deque: - item = items_deque.popleft() - if item in items_done or item in no_argkey_group: - continue - argkeys = dict.fromkeys( - (k for k in scoped_argkeys_cache.get(item, []) if k not in ignore), None - ) - if not argkeys: - no_argkey_group[item] = None - else: - slicing_argkey, _ = argkeys.popitem() - # We don't have to remove relevant items from later in the - # deque because they'll just be ignored. - matching_items = [ - i for i in scoped_items_by_argkey[slicing_argkey] if i in items - ] - for i in reversed(matching_items): - fix_cache_order(i, argkeys_cache, items_by_argkey) - items_deque.appendleft(i) - break - if no_argkey_group: - no_argkey_group = reorder_items_atscope( - no_argkey_group, argkeys_cache, items_by_argkey, scope.next_lower() - ) - for item in no_argkey_group: - items_done[item] = None - ignore.add(slicing_argkey) - return items_done - - -def get_direct_param_fixture_func(request: "FixtureRequest") -> Any: - return request.param - - -@attr.s(slots=True, auto_attribs=True) -class FuncFixtureInfo: - # Original function argument names. - argnames: Tuple[str, ...] - # Argnames that function immediately requires. These include argnames + - # fixture names specified via usefixtures and via autouse=True in fixture - # definitions. - initialnames: Tuple[str, ...] - names_closure: List[str] - name2fixturedefs: Dict[str, Sequence["FixtureDef[Any]"]] - - def prune_dependency_tree(self) -> None: - """Recompute names_closure from initialnames and name2fixturedefs. - - Can only reduce names_closure, which means that the new closure will - always be a subset of the old one. The order is preserved. - - This method is needed because direct parametrization may shadow some - of the fixtures that were included in the originally built dependency - tree. In this way the dependency tree can get pruned, and the closure - of argnames may get reduced. - """ - closure: Set[str] = set() - working_set = set(self.initialnames) - while working_set: - argname = working_set.pop() - # Argname may be smth not included in the original names_closure, - # in which case we ignore it. This currently happens with pseudo - # FixtureDefs which wrap 'get_direct_param_fixture_func(request)'. - # So they introduce the new dependency 'request' which might have - # been missing in the original tree (closure). - if argname not in closure and argname in self.names_closure: - closure.add(argname) - if argname in self.name2fixturedefs: - working_set.update(self.name2fixturedefs[argname][-1].argnames) - - self.names_closure[:] = sorted(closure, key=self.names_closure.index) - - -class FixtureRequest: - """A request for a fixture from a test or fixture function. - - A request object gives access to the requesting test context and has - an optional ``param`` attribute in case the fixture is parametrized - indirectly. - """ - - def __init__(self, pyfuncitem, *, _ispytest: bool = False) -> None: - check_ispytest(_ispytest) - self._pyfuncitem = pyfuncitem - #: Fixture for which this request is being performed. - self.fixturename: Optional[str] = None - self._scope = Scope.Function - self._fixture_defs: Dict[str, FixtureDef[Any]] = {} - fixtureinfo: FuncFixtureInfo = pyfuncitem._fixtureinfo - self._arg2fixturedefs = fixtureinfo.name2fixturedefs.copy() - self._arg2index: Dict[str, int] = {} - self._fixturemanager: FixtureManager = pyfuncitem.session._fixturemanager - # Notes on the type of `param`: - # -`request.param` is only defined in parametrized fixtures, and will raise - # AttributeError otherwise. Python typing has no notion of "undefined", so - # this cannot be reflected in the type. - # - Technically `param` is only (possibly) defined on SubRequest, not - # FixtureRequest, but the typing of that is still in flux so this cheats. - # - In the future we might consider using a generic for the param type, but - # for now just using Any. - self.param: Any - - @property - def scope(self) -> "_ScopeName": - """Scope string, one of "function", "class", "module", "package", "session".""" - return self._scope.value - - @property - def fixturenames(self) -> List[str]: - """Names of all active fixtures in this request.""" - result = list(self._pyfuncitem._fixtureinfo.names_closure) - result.extend(set(self._fixture_defs).difference(result)) - return result - - @property - def node(self): - """Underlying collection node (depends on current request scope).""" - return self._getscopeitem(self._scope) - - def _getnextfixturedef(self, argname: str) -> "FixtureDef[Any]": - fixturedefs = self._arg2fixturedefs.get(argname, None) - if fixturedefs is None: - # We arrive here because of a dynamic call to - # getfixturevalue(argname) usage which was naturally - # not known at parsing/collection time. - assert self._pyfuncitem.parent is not None - parentid = self._pyfuncitem.parent.nodeid - fixturedefs = self._fixturemanager.getfixturedefs(argname, parentid) - # TODO: Fix this type ignore. Either add assert or adjust types. - # Can this be None here? - self._arg2fixturedefs[argname] = fixturedefs # type: ignore[assignment] - # fixturedefs list is immutable so we maintain a decreasing index. - index = self._arg2index.get(argname, 0) - 1 - if fixturedefs is None or (-index > len(fixturedefs)): - raise FixtureLookupError(argname, self) - self._arg2index[argname] = index - return fixturedefs[index] - - @property - def config(self) -> Config: - """The pytest config object associated with this request.""" - return self._pyfuncitem.config # type: ignore[no-any-return] - - @property - def function(self): - """Test function object if the request has a per-function scope.""" - if self.scope != "function": - raise AttributeError( - f"function not available in {self.scope}-scoped context" - ) - return self._pyfuncitem.obj - - @property - def cls(self): - """Class (can be None) where the test function was collected.""" - if self.scope not in ("class", "function"): - raise AttributeError(f"cls not available in {self.scope}-scoped context") - clscol = self._pyfuncitem.getparent(_pytest.python.Class) - if clscol: - return clscol.obj - - @property - def instance(self): - """Instance (can be None) on which test function was collected.""" - # unittest support hack, see _pytest.unittest.TestCaseFunction. - try: - return self._pyfuncitem._testcase - except AttributeError: - function = getattr(self, "function", None) - return getattr(function, "__self__", None) - - @property - def module(self): - """Python module object where the test function was collected.""" - if self.scope not in ("function", "class", "module"): - raise AttributeError(f"module not available in {self.scope}-scoped context") - return self._pyfuncitem.getparent(_pytest.python.Module).obj - - @property - def path(self) -> Path: - """Path where the test function was collected.""" - if self.scope not in ("function", "class", "module", "package"): - raise AttributeError(f"path not available in {self.scope}-scoped context") - # TODO: Remove ignore once _pyfuncitem is properly typed. - return self._pyfuncitem.path # type: ignore - - @property - def keywords(self) -> MutableMapping[str, Any]: - """Keywords/markers dictionary for the underlying node.""" - node: nodes.Node = self.node - return node.keywords - - @property - def session(self) -> "Session": - """Pytest session object.""" - return self._pyfuncitem.session # type: ignore[no-any-return] - - def addfinalizer(self, finalizer: Callable[[], object]) -> None: - """Add finalizer/teardown function to be called without arguments after - the last test within the requesting test context finished execution.""" - # XXX usually this method is shadowed by fixturedef specific ones. - self._addfinalizer(finalizer, scope=self.scope) - - def _addfinalizer(self, finalizer: Callable[[], object], scope) -> None: - node = self._getscopeitem(scope) - node.addfinalizer(finalizer) - - def applymarker(self, marker: Union[str, MarkDecorator]) -> None: - """Apply a marker to a single test function invocation. - - This method is useful if you don't want to have a keyword/marker - on all function invocations. - - :param marker: - An object created by a call to ``pytest.mark.NAME(...)``. - """ - self.node.add_marker(marker) - - def raiseerror(self, msg: Optional[str]) -> NoReturn: - """Raise a FixtureLookupError exception. - - :param msg: - An optional custom error message. - """ - raise self._fixturemanager.FixtureLookupError(None, self, msg) - - def _fillfixtures(self) -> None: - item = self._pyfuncitem - fixturenames = getattr(item, "fixturenames", self.fixturenames) - for argname in fixturenames: - if argname not in item.funcargs: - item.funcargs[argname] = self.getfixturevalue(argname) - - def getfixturevalue(self, argname: str) -> Any: - """Dynamically run a named fixture function. - - Declaring fixtures via function argument is recommended where possible. - But if you can only decide whether to use another fixture at test - setup time, you may use this function to retrieve it inside a fixture - or test function body. - - This method can be used during the test setup phase or the test run - phase, but during the test teardown phase a fixture's value may not - be available. - - :param argname: - The fixture name. - :raises pytest.FixtureLookupError: - If the given fixture could not be found. - """ - fixturedef = self._get_active_fixturedef(argname) - assert fixturedef.cached_result is not None, ( - f'The fixture value for "{argname}" is not available. ' - "This can happen when the fixture has already been torn down." - ) - return fixturedef.cached_result[0] - - def _get_active_fixturedef( - self, argname: str - ) -> Union["FixtureDef[object]", PseudoFixtureDef[object]]: - try: - return self._fixture_defs[argname] - except KeyError: - try: - fixturedef = self._getnextfixturedef(argname) - except FixtureLookupError: - if argname == "request": - cached_result = (self, [0], None) - return PseudoFixtureDef(cached_result, Scope.Function) - raise - # Remove indent to prevent the python3 exception - # from leaking into the call. - self._compute_fixture_value(fixturedef) - self._fixture_defs[argname] = fixturedef - return fixturedef - - def _get_fixturestack(self) -> List["FixtureDef[Any]"]: - current = self - values: List[FixtureDef[Any]] = [] - while isinstance(current, SubRequest): - values.append(current._fixturedef) # type: ignore[has-type] - current = current._parent_request - values.reverse() - return values - - def _compute_fixture_value(self, fixturedef: "FixtureDef[object]") -> None: - """Create a SubRequest based on "self" and call the execute method - of the given FixtureDef object. - - This will force the FixtureDef object to throw away any previous - results and compute a new fixture value, which will be stored into - the FixtureDef object itself. - """ - # prepare a subrequest object before calling fixture function - # (latter managed by fixturedef) - argname = fixturedef.argname - funcitem = self._pyfuncitem - scope = fixturedef._scope - try: - callspec = funcitem.callspec - except AttributeError: - callspec = None - if callspec is not None and argname in callspec.params: - param = callspec.params[argname] - param_index = callspec.indices[argname] - # If a parametrize invocation set a scope it will override - # the static scope defined with the fixture function. - with suppress(KeyError): - scope = callspec._arg2scope[argname] - else: - param = NOTSET - param_index = 0 - has_params = fixturedef.params is not None - fixtures_not_supported = getattr(funcitem, "nofuncargs", False) - if has_params and fixtures_not_supported: - msg = ( - "{name} does not support fixtures, maybe unittest.TestCase subclass?\n" - "Node id: {nodeid}\n" - "Function type: {typename}" - ).format( - name=funcitem.name, - nodeid=funcitem.nodeid, - typename=type(funcitem).__name__, - ) - fail(msg, pytrace=False) - if has_params: - frame = inspect.stack()[3] - frameinfo = inspect.getframeinfo(frame[0]) - source_path = absolutepath(frameinfo.filename) - source_lineno = frameinfo.lineno - try: - source_path_str = str( - source_path.relative_to(funcitem.config.rootpath) - ) - except ValueError: - source_path_str = str(source_path) - msg = ( - "The requested fixture has no parameter defined for test:\n" - " {}\n\n" - "Requested fixture '{}' defined in:\n{}" - "\n\nRequested here:\n{}:{}".format( - funcitem.nodeid, - fixturedef.argname, - getlocation(fixturedef.func, funcitem.config.rootpath), - source_path_str, - source_lineno, - ) - ) - fail(msg, pytrace=False) - - subrequest = SubRequest( - self, scope, param, param_index, fixturedef, _ispytest=True - ) - - # Check if a higher-level scoped fixture accesses a lower level one. - subrequest._check_scope(argname, self._scope, scope) - try: - # Call the fixture function. - fixturedef.execute(request=subrequest) - finally: - self._schedule_finalizers(fixturedef, subrequest) - - def _schedule_finalizers( - self, fixturedef: "FixtureDef[object]", subrequest: "SubRequest" - ) -> None: - # If fixture function failed it might have registered finalizers. - subrequest.node.addfinalizer(lambda: fixturedef.finish(request=subrequest)) - - def _check_scope( - self, - argname: str, - invoking_scope: Scope, - requested_scope: Scope, - ) -> None: - if argname == "request": - return - if invoking_scope > requested_scope: - # Try to report something helpful. - text = "\n".join(self._factorytraceback()) - fail( - f"ScopeMismatch: You tried to access the {requested_scope.value} scoped " - f"fixture {argname} with a {invoking_scope.value} scoped request object, " - f"involved factories:\n{text}", - pytrace=False, - ) - - def _factorytraceback(self) -> List[str]: - lines = [] - for fixturedef in self._get_fixturestack(): - factory = fixturedef.func - fs, lineno = getfslineno(factory) - if isinstance(fs, Path): - session: Session = self._pyfuncitem.session - p = bestrelpath(session.path, fs) - else: - p = fs - args = _format_args(factory) - lines.append("%s:%d: def %s%s" % (p, lineno + 1, factory.__name__, args)) - return lines - - def _getscopeitem( - self, scope: Union[Scope, "_ScopeName"] - ) -> Union[nodes.Item, nodes.Collector]: - if isinstance(scope, str): - scope = Scope(scope) - if scope is Scope.Function: - # This might also be a non-function Item despite its attribute name. - node: Optional[Union[nodes.Item, nodes.Collector]] = self._pyfuncitem - elif scope is Scope.Package: - # FIXME: _fixturedef is not defined on FixtureRequest (this class), - # but on FixtureRequest (a subclass). - node = get_scope_package(self._pyfuncitem, self._fixturedef) # type: ignore[attr-defined] - else: - node = get_scope_node(self._pyfuncitem, scope) - if node is None and scope is Scope.Class: - # Fallback to function item itself. - node = self._pyfuncitem - assert node, 'Could not obtain a node for scope "{}" for function {!r}'.format( - scope, self._pyfuncitem - ) - return node - - def __repr__(self) -> str: - return "" % (self.node) - - -@final -class SubRequest(FixtureRequest): - """A sub request for handling getting a fixture from a test function/fixture.""" - - def __init__( - self, - request: "FixtureRequest", - scope: Scope, - param: Any, - param_index: int, - fixturedef: "FixtureDef[object]", - *, - _ispytest: bool = False, - ) -> None: - check_ispytest(_ispytest) - self._parent_request = request - self.fixturename = fixturedef.argname - if param is not NOTSET: - self.param = param - self.param_index = param_index - self._scope = scope - self._fixturedef = fixturedef - self._pyfuncitem = request._pyfuncitem - self._fixture_defs = request._fixture_defs - self._arg2fixturedefs = request._arg2fixturedefs - self._arg2index = request._arg2index - self._fixturemanager = request._fixturemanager - - def __repr__(self) -> str: - return f"" - - def addfinalizer(self, finalizer: Callable[[], object]) -> None: - """Add finalizer/teardown function to be called without arguments after - the last test within the requesting test context finished execution.""" - self._fixturedef.addfinalizer(finalizer) - - def _schedule_finalizers( - self, fixturedef: "FixtureDef[object]", subrequest: "SubRequest" - ) -> None: - # If the executing fixturedef was not explicitly requested in the argument list (via - # getfixturevalue inside the fixture call) then ensure this fixture def will be finished - # first. - if fixturedef.argname not in self.fixturenames: - fixturedef.addfinalizer( - functools.partial(self._fixturedef.finish, request=self) - ) - super()._schedule_finalizers(fixturedef, subrequest) - - -@final -class FixtureLookupError(LookupError): - """Could not return a requested fixture (missing or invalid).""" - - def __init__( - self, argname: Optional[str], request: FixtureRequest, msg: Optional[str] = None - ) -> None: - self.argname = argname - self.request = request - self.fixturestack = request._get_fixturestack() - self.msg = msg - - def formatrepr(self) -> "FixtureLookupErrorRepr": - tblines: List[str] = [] - addline = tblines.append - stack = [self.request._pyfuncitem.obj] - stack.extend(map(lambda x: x.func, self.fixturestack)) - msg = self.msg - if msg is not None: - # The last fixture raise an error, let's present - # it at the requesting side. - stack = stack[:-1] - for function in stack: - fspath, lineno = getfslineno(function) - try: - lines, _ = inspect.getsourcelines(get_real_func(function)) - except (OSError, IndexError, TypeError): - error_msg = "file %s, line %s: source code not available" - addline(error_msg % (fspath, lineno + 1)) - else: - addline(f"file {fspath}, line {lineno + 1}") - for i, line in enumerate(lines): - line = line.rstrip() - addline(" " + line) - if line.lstrip().startswith("def"): - break - - if msg is None: - fm = self.request._fixturemanager - available = set() - parentid = self.request._pyfuncitem.parent.nodeid - for name, fixturedefs in fm._arg2fixturedefs.items(): - faclist = list(fm._matchfactories(fixturedefs, parentid)) - if faclist: - available.add(name) - if self.argname in available: - msg = " recursive dependency involving fixture '{}' detected".format( - self.argname - ) - else: - msg = f"fixture '{self.argname}' not found" - msg += "\n available fixtures: {}".format(", ".join(sorted(available))) - msg += "\n use 'pytest --fixtures [testpath]' for help on them." - - return FixtureLookupErrorRepr(fspath, lineno, tblines, msg, self.argname) - - -class FixtureLookupErrorRepr(TerminalRepr): - def __init__( - self, - filename: Union[str, "os.PathLike[str]"], - firstlineno: int, - tblines: Sequence[str], - errorstring: str, - argname: Optional[str], - ) -> None: - self.tblines = tblines - self.errorstring = errorstring - self.filename = filename - self.firstlineno = firstlineno - self.argname = argname - - def toterminal(self, tw: TerminalWriter) -> None: - # tw.line("FixtureLookupError: %s" %(self.argname), red=True) - for tbline in self.tblines: - tw.line(tbline.rstrip()) - lines = self.errorstring.split("\n") - if lines: - tw.line( - f"{FormattedExcinfo.fail_marker} {lines[0].strip()}", - red=True, - ) - for line in lines[1:]: - tw.line( - f"{FormattedExcinfo.flow_marker} {line.strip()}", - red=True, - ) - tw.line() - tw.line("%s:%d" % (os.fspath(self.filename), self.firstlineno + 1)) - - -def fail_fixturefunc(fixturefunc, msg: str) -> NoReturn: - fs, lineno = getfslineno(fixturefunc) - location = f"{fs}:{lineno + 1}" - source = _pytest._code.Source(fixturefunc) - fail(msg + ":\n\n" + str(source.indent()) + "\n" + location, pytrace=False) - - -def call_fixture_func( - fixturefunc: "_FixtureFunc[FixtureValue]", request: FixtureRequest, kwargs -) -> FixtureValue: - if is_generator(fixturefunc): - fixturefunc = cast( - Callable[..., Generator[FixtureValue, None, None]], fixturefunc - ) - generator = fixturefunc(**kwargs) - try: - fixture_result = next(generator) - except StopIteration: - raise ValueError(f"{request.fixturename} did not yield a value") from None - finalizer = functools.partial(_teardown_yield_fixture, fixturefunc, generator) - request.addfinalizer(finalizer) - else: - fixturefunc = cast(Callable[..., FixtureValue], fixturefunc) - fixture_result = fixturefunc(**kwargs) - return fixture_result - - -def _teardown_yield_fixture(fixturefunc, it) -> None: - """Execute the teardown of a fixture function by advancing the iterator - after the yield and ensure the iteration ends (if not it means there is - more than one yield in the function).""" - try: - next(it) - except StopIteration: - pass - else: - fail_fixturefunc(fixturefunc, "fixture function has more than one 'yield'") - - -def _eval_scope_callable( - scope_callable: "Callable[[str, Config], _ScopeName]", - fixture_name: str, - config: Config, -) -> "_ScopeName": - try: - # Type ignored because there is no typing mechanism to specify - # keyword arguments, currently. - result = scope_callable(fixture_name=fixture_name, config=config) # type: ignore[call-arg] - except Exception as e: - raise TypeError( - "Error evaluating {} while defining fixture '{}'.\n" - "Expected a function with the signature (*, fixture_name, config)".format( - scope_callable, fixture_name - ) - ) from e - if not isinstance(result, str): - fail( - "Expected {} to return a 'str' while defining fixture '{}', but it returned:\n" - "{!r}".format(scope_callable, fixture_name, result), - pytrace=False, - ) - return result - - -@final -class FixtureDef(Generic[FixtureValue]): - """A container for a fixture definition.""" - - def __init__( - self, - fixturemanager: "FixtureManager", - baseid: Optional[str], - argname: str, - func: "_FixtureFunc[FixtureValue]", - scope: Union[Scope, "_ScopeName", Callable[[str, Config], "_ScopeName"], None], - params: Optional[Sequence[object]], - unittest: bool = False, - ids: Optional[ - Union[Tuple[Optional[object], ...], Callable[[Any], Optional[object]]] - ] = None, - ) -> None: - self._fixturemanager = fixturemanager - # The "base" node ID for the fixture. - # - # This is a node ID prefix. A fixture is only available to a node (e.g. - # a `Function` item) if the fixture's baseid is a parent of the node's - # nodeid (see the `iterparentnodeids` function for what constitutes a - # "parent" and a "prefix" in this context). - # - # For a fixture found in a Collector's object (e.g. a `Module`s module, - # a `Class`'s class), the baseid is the Collector's nodeid. - # - # For a fixture found in a conftest plugin, the baseid is the conftest's - # directory path relative to the rootdir. - # - # For other plugins, the baseid is the empty string (always matches). - self.baseid = baseid or "" - # Whether the fixture was found from a node or a conftest in the - # collection tree. Will be false for fixtures defined in non-conftest - # plugins. - self.has_location = baseid is not None - # The fixture factory function. - self.func = func - # The name by which the fixture may be requested. - self.argname = argname - if scope is None: - scope = Scope.Function - elif callable(scope): - scope = _eval_scope_callable(scope, argname, fixturemanager.config) - if isinstance(scope, str): - scope = Scope.from_user( - scope, descr=f"Fixture '{func.__name__}'", where=baseid - ) - self._scope = scope - # If the fixture is directly parametrized, the parameter values. - self.params: Optional[Sequence[object]] = params - # If the fixture is directly parametrized, a tuple of explicit IDs to - # assign to the parameter values, or a callable to generate an ID given - # a parameter value. - self.ids = ids - # The names requested by the fixtures. - self.argnames = getfuncargnames(func, name=argname, is_method=unittest) - # Whether the fixture was collected from a unittest TestCase class. - # Note that it really only makes sense to define autouse fixtures in - # unittest TestCases. - self.unittest = unittest - # If the fixture was executed, the current value of the fixture. - # Can change if the fixture is executed with different parameters. - self.cached_result: Optional[_FixtureCachedResult[FixtureValue]] = None - self._finalizers: List[Callable[[], object]] = [] - - @property - def scope(self) -> "_ScopeName": - """Scope string, one of "function", "class", "module", "package", "session".""" - return self._scope.value - - def addfinalizer(self, finalizer: Callable[[], object]) -> None: - self._finalizers.append(finalizer) - - def finish(self, request: SubRequest) -> None: - exc = None - try: - while self._finalizers: - try: - func = self._finalizers.pop() - func() - except BaseException as e: - # XXX Only first exception will be seen by user, - # ideally all should be reported. - if exc is None: - exc = e - if exc: - raise exc - finally: - ihook = request.node.ihook - ihook.pytest_fixture_post_finalizer(fixturedef=self, request=request) - # Even if finalization fails, we invalidate the cached fixture - # value and remove all finalizers because they may be bound methods - # which will keep instances alive. - self.cached_result = None - self._finalizers = [] - - def execute(self, request: SubRequest) -> FixtureValue: - # Get required arguments and register our own finish() - # with their finalization. - for argname in self.argnames: - fixturedef = request._get_active_fixturedef(argname) - if argname != "request": - # PseudoFixtureDef is only for "request". - assert isinstance(fixturedef, FixtureDef) - fixturedef.addfinalizer(functools.partial(self.finish, request=request)) - - my_cache_key = self.cache_key(request) - if self.cached_result is not None: - # note: comparison with `==` can fail (or be expensive) for e.g. - # numpy arrays (#6497). - cache_key = self.cached_result[1] - if my_cache_key is cache_key: - if self.cached_result[2] is not None: - _, val, tb = self.cached_result[2] - raise val.with_traceback(tb) - else: - result = self.cached_result[0] - return result - # We have a previous but differently parametrized fixture instance - # so we need to tear it down before creating a new one. - self.finish(request) - assert self.cached_result is None - - ihook = request.node.ihook - result = ihook.pytest_fixture_setup(fixturedef=self, request=request) - return result - - def cache_key(self, request: SubRequest) -> object: - return request.param_index if not hasattr(request, "param") else request.param - - def __repr__(self) -> str: - return "".format( - self.argname, self.scope, self.baseid - ) - - -def resolve_fixture_function( - fixturedef: FixtureDef[FixtureValue], request: FixtureRequest -) -> "_FixtureFunc[FixtureValue]": - """Get the actual callable that can be called to obtain the fixture - value, dealing with unittest-specific instances and bound methods.""" - fixturefunc = fixturedef.func - if fixturedef.unittest: - if request.instance is not None: - # Bind the unbound method to the TestCase instance. - fixturefunc = fixturedef.func.__get__(request.instance) # type: ignore[union-attr] - else: - # The fixture function needs to be bound to the actual - # request.instance so that code working with "fixturedef" behaves - # as expected. - if request.instance is not None: - # Handle the case where fixture is defined not in a test class, but some other class - # (for example a plugin class with a fixture), see #2270. - if hasattr(fixturefunc, "__self__") and not isinstance( - request.instance, fixturefunc.__self__.__class__ # type: ignore[union-attr] - ): - return fixturefunc - fixturefunc = getimfunc(fixturedef.func) - if fixturefunc != fixturedef.func: - fixturefunc = fixturefunc.__get__(request.instance) # type: ignore[union-attr] - return fixturefunc - - -def pytest_fixture_setup( - fixturedef: FixtureDef[FixtureValue], request: SubRequest -) -> FixtureValue: - """Execution of fixture setup.""" - kwargs = {} - for argname in fixturedef.argnames: - fixdef = request._get_active_fixturedef(argname) - assert fixdef.cached_result is not None - result, arg_cache_key, exc = fixdef.cached_result - request._check_scope(argname, request._scope, fixdef._scope) - kwargs[argname] = result - - fixturefunc = resolve_fixture_function(fixturedef, request) - my_cache_key = fixturedef.cache_key(request) - try: - result = call_fixture_func(fixturefunc, request, kwargs) - except TEST_OUTCOME: - exc_info = sys.exc_info() - assert exc_info[0] is not None - if isinstance( - exc_info[1], skip.Exception - ) and not fixturefunc.__name__.startswith("xunit_setup"): - exc_info[1]._use_item_location = True # type: ignore[attr-defined] - fixturedef.cached_result = (None, my_cache_key, exc_info) - raise - fixturedef.cached_result = (result, my_cache_key, None) - return result - - -def _ensure_immutable_ids( - ids: Optional[Union[Sequence[Optional[object]], Callable[[Any], Optional[object]]]] -) -> Optional[Union[Tuple[Optional[object], ...], Callable[[Any], Optional[object]]]]: - if ids is None: - return None - if callable(ids): - return ids - return tuple(ids) - - -def _params_converter( - params: Optional[Iterable[object]], -) -> Optional[Tuple[object, ...]]: - return tuple(params) if params is not None else None - - -def wrap_function_to_error_out_if_called_directly( - function: FixtureFunction, - fixture_marker: "FixtureFunctionMarker", -) -> FixtureFunction: - """Wrap the given fixture function so we can raise an error about it being called directly, - instead of used as an argument in a test function.""" - message = ( - 'Fixture "{name}" called directly. Fixtures are not meant to be called directly,\n' - "but are created automatically when test functions request them as parameters.\n" - "See https://docs.pytest.org/en/stable/explanation/fixtures.html for more information about fixtures, and\n" - "https://docs.pytest.org/en/stable/deprecations.html#calling-fixtures-directly about how to update your code." - ).format(name=fixture_marker.name or function.__name__) - - @functools.wraps(function) - def result(*args, **kwargs): - fail(message, pytrace=False) - - # Keep reference to the original function in our own custom attribute so we don't unwrap - # further than this point and lose useful wrappings like @mock.patch (#3774). - result.__pytest_wrapped__ = _PytestWrapper(function) # type: ignore[attr-defined] - - return cast(FixtureFunction, result) - - -@final -@attr.s(frozen=True, auto_attribs=True) -class FixtureFunctionMarker: - scope: "Union[_ScopeName, Callable[[str, Config], _ScopeName]]" - params: Optional[Tuple[object, ...]] = attr.ib(converter=_params_converter) - autouse: bool = False - ids: Optional[ - Union[Tuple[Optional[object], ...], Callable[[Any], Optional[object]]] - ] = attr.ib( - default=None, - converter=_ensure_immutable_ids, - ) - name: Optional[str] = None - - def __call__(self, function: FixtureFunction) -> FixtureFunction: - if inspect.isclass(function): - raise ValueError("class fixtures not supported (maybe in the future)") - - if getattr(function, "_pytestfixturefunction", False): - raise ValueError( - "fixture is being applied more than once to the same function" - ) - - function = wrap_function_to_error_out_if_called_directly(function, self) - - name = self.name or function.__name__ - if name == "request": - location = getlocation(function) - fail( - "'request' is a reserved word for fixtures, use another name:\n {}".format( - location - ), - pytrace=False, - ) - - # Type ignored because https://github.com/python/mypy/issues/2087. - function._pytestfixturefunction = self # type: ignore[attr-defined] - return function - - -@overload -def fixture( - fixture_function: FixtureFunction, - *, - scope: "Union[_ScopeName, Callable[[str, Config], _ScopeName]]" = ..., - params: Optional[Iterable[object]] = ..., - autouse: bool = ..., - ids: Optional[ - Union[Sequence[Optional[object]], Callable[[Any], Optional[object]]] - ] = ..., - name: Optional[str] = ..., -) -> FixtureFunction: - ... - - -@overload -def fixture( # noqa: F811 - fixture_function: None = ..., - *, - scope: "Union[_ScopeName, Callable[[str, Config], _ScopeName]]" = ..., - params: Optional[Iterable[object]] = ..., - autouse: bool = ..., - ids: Optional[ - Union[Sequence[Optional[object]], Callable[[Any], Optional[object]]] - ] = ..., - name: Optional[str] = None, -) -> FixtureFunctionMarker: - ... - - -def fixture( # noqa: F811 - fixture_function: Optional[FixtureFunction] = None, - *, - scope: "Union[_ScopeName, Callable[[str, Config], _ScopeName]]" = "function", - params: Optional[Iterable[object]] = None, - autouse: bool = False, - ids: Optional[ - Union[Sequence[Optional[object]], Callable[[Any], Optional[object]]] - ] = None, - name: Optional[str] = None, -) -> Union[FixtureFunctionMarker, FixtureFunction]: - """Decorator to mark a fixture factory function. - - This decorator can be used, with or without parameters, to define a - fixture function. - - The name of the fixture function can later be referenced to cause its - invocation ahead of running tests: test modules or classes can use the - ``pytest.mark.usefixtures(fixturename)`` marker. - - Test functions can directly use fixture names as input arguments in which - case the fixture instance returned from the fixture function will be - injected. - - Fixtures can provide their values to test functions using ``return`` or - ``yield`` statements. When using ``yield`` the code block after the - ``yield`` statement is executed as teardown code regardless of the test - outcome, and must yield exactly once. - - :param scope: - The scope for which this fixture is shared; one of ``"function"`` - (default), ``"class"``, ``"module"``, ``"package"`` or ``"session"``. - - This parameter may also be a callable which receives ``(fixture_name, config)`` - as parameters, and must return a ``str`` with one of the values mentioned above. - - See :ref:`dynamic scope` in the docs for more information. - - :param params: - An optional list of parameters which will cause multiple invocations - of the fixture function and all of the tests using it. The current - parameter is available in ``request.param``. - - :param autouse: - If True, the fixture func is activated for all tests that can see it. - If False (the default), an explicit reference is needed to activate - the fixture. - - :param ids: - Sequence of ids each corresponding to the params so that they are - part of the test id. If no ids are provided they will be generated - automatically from the params. - - :param name: - The name of the fixture. This defaults to the name of the decorated - function. If a fixture is used in the same module in which it is - defined, the function name of the fixture will be shadowed by the - function arg that requests the fixture; one way to resolve this is to - name the decorated function ``fixture_`` and then use - ``@pytest.fixture(name='')``. - """ - fixture_marker = FixtureFunctionMarker( - scope=scope, - params=params, - autouse=autouse, - ids=ids, - name=name, - ) - - # Direct decoration. - if fixture_function: - return fixture_marker(fixture_function) - - return fixture_marker - - -def yield_fixture( - fixture_function=None, - *args, - scope="function", - params=None, - autouse=False, - ids=None, - name=None, -): - """(Return a) decorator to mark a yield-fixture factory function. - - .. deprecated:: 3.0 - Use :py:func:`pytest.fixture` directly instead. - """ - warnings.warn(YIELD_FIXTURE, stacklevel=2) - return fixture( - fixture_function, - *args, - scope=scope, - params=params, - autouse=autouse, - ids=ids, - name=name, - ) - - -@fixture(scope="session") -def pytestconfig(request: FixtureRequest) -> Config: - """Session-scoped fixture that returns the session's :class:`pytest.Config` - object. - - Example:: - - def test_foo(pytestconfig): - if pytestconfig.getoption("verbose") > 0: - ... - - """ - return request.config - - -def pytest_addoption(parser: Parser) -> None: - parser.addini( - "usefixtures", - type="args", - default=[], - help="List of default fixtures to be used with this project", - ) - - -class FixtureManager: - """pytest fixture definitions and information is stored and managed - from this class. - - During collection fm.parsefactories() is called multiple times to parse - fixture function definitions into FixtureDef objects and internal - data structures. - - During collection of test functions, metafunc-mechanics instantiate - a FuncFixtureInfo object which is cached per node/func-name. - This FuncFixtureInfo object is later retrieved by Function nodes - which themselves offer a fixturenames attribute. - - The FuncFixtureInfo object holds information about fixtures and FixtureDefs - relevant for a particular function. An initial list of fixtures is - assembled like this: - - - ini-defined usefixtures - - autouse-marked fixtures along the collection chain up from the function - - usefixtures markers at module/class/function level - - test function funcargs - - Subsequently the funcfixtureinfo.fixturenames attribute is computed - as the closure of the fixtures needed to setup the initial fixtures, - i.e. fixtures needed by fixture functions themselves are appended - to the fixturenames list. - - Upon the test-setup phases all fixturenames are instantiated, retrieved - by a lookup of their FuncFixtureInfo. - """ - - FixtureLookupError = FixtureLookupError - FixtureLookupErrorRepr = FixtureLookupErrorRepr - - def __init__(self, session: "Session") -> None: - self.session = session - self.config: Config = session.config - self._arg2fixturedefs: Dict[str, List[FixtureDef[Any]]] = {} - self._holderobjseen: Set[object] = set() - # A mapping from a nodeid to a list of autouse fixtures it defines. - self._nodeid_autousenames: Dict[str, List[str]] = { - "": self.config.getini("usefixtures"), - } - session.config.pluginmanager.register(self, "funcmanage") - - def _get_direct_parametrize_args(self, node: nodes.Node) -> List[str]: - """Return all direct parametrization arguments of a node, so we don't - mistake them for fixtures. - - Check https://github.com/pytest-dev/pytest/issues/5036. - - These things are done later as well when dealing with parametrization - so this could be improved. - """ - parametrize_argnames: List[str] = [] - for marker in node.iter_markers(name="parametrize"): - if not marker.kwargs.get("indirect", False): - p_argnames, _ = ParameterSet._parse_parametrize_args( - *marker.args, **marker.kwargs - ) - parametrize_argnames.extend(p_argnames) - - return parametrize_argnames - - def getfixtureinfo( - self, node: nodes.Node, func, cls, funcargs: bool = True - ) -> FuncFixtureInfo: - if funcargs and not getattr(node, "nofuncargs", False): - argnames = getfuncargnames(func, name=node.name, cls=cls) - else: - argnames = () - - usefixtures = tuple( - arg for mark in node.iter_markers(name="usefixtures") for arg in mark.args - ) - initialnames = usefixtures + argnames - fm = node.session._fixturemanager - initialnames, names_closure, arg2fixturedefs = fm.getfixtureclosure( - initialnames, node, ignore_args=self._get_direct_parametrize_args(node) - ) - return FuncFixtureInfo(argnames, initialnames, names_closure, arg2fixturedefs) - - def pytest_plugin_registered(self, plugin: _PluggyPlugin) -> None: - nodeid = None - try: - p = absolutepath(plugin.__file__) # type: ignore[attr-defined] - except AttributeError: - pass - else: - # Construct the base nodeid which is later used to check - # what fixtures are visible for particular tests (as denoted - # by their test id). - if p.name.startswith("conftest.py"): - try: - nodeid = str(p.parent.relative_to(self.config.rootpath)) - except ValueError: - nodeid = "" - if nodeid == ".": - nodeid = "" - if os.sep != nodes.SEP: - nodeid = nodeid.replace(os.sep, nodes.SEP) - - self.parsefactories(plugin, nodeid) - - def _getautousenames(self, nodeid: str) -> Iterator[str]: - """Return the names of autouse fixtures applicable to nodeid.""" - for parentnodeid in nodes.iterparentnodeids(nodeid): - basenames = self._nodeid_autousenames.get(parentnodeid) - if basenames: - yield from basenames - - def getfixtureclosure( - self, - fixturenames: Tuple[str, ...], - parentnode: nodes.Node, - ignore_args: Sequence[str] = (), - ) -> Tuple[Tuple[str, ...], List[str], Dict[str, Sequence[FixtureDef[Any]]]]: - # Collect the closure of all fixtures, starting with the given - # fixturenames as the initial set. As we have to visit all - # factory definitions anyway, we also return an arg2fixturedefs - # mapping so that the caller can reuse it and does not have - # to re-discover fixturedefs again for each fixturename - # (discovering matching fixtures for a given name/node is expensive). - - parentid = parentnode.nodeid - fixturenames_closure = list(self._getautousenames(parentid)) - - def merge(otherlist: Iterable[str]) -> None: - for arg in otherlist: - if arg not in fixturenames_closure: - fixturenames_closure.append(arg) - - merge(fixturenames) - - # At this point, fixturenames_closure contains what we call "initialnames", - # which is a set of fixturenames the function immediately requests. We - # need to return it as well, so save this. - initialnames = tuple(fixturenames_closure) - - arg2fixturedefs: Dict[str, Sequence[FixtureDef[Any]]] = {} - lastlen = -1 - while lastlen != len(fixturenames_closure): - lastlen = len(fixturenames_closure) - for argname in fixturenames_closure: - if argname in ignore_args: - continue - if argname in arg2fixturedefs: - continue - fixturedefs = self.getfixturedefs(argname, parentid) - if fixturedefs: - arg2fixturedefs[argname] = fixturedefs - merge(fixturedefs[-1].argnames) - - def sort_by_scope(arg_name: str) -> Scope: - try: - fixturedefs = arg2fixturedefs[arg_name] - except KeyError: - return Scope.Function - else: - return fixturedefs[-1]._scope - - fixturenames_closure.sort(key=sort_by_scope, reverse=True) - return initialnames, fixturenames_closure, arg2fixturedefs - - def pytest_generate_tests(self, metafunc: "Metafunc") -> None: - """Generate new tests based on parametrized fixtures used by the given metafunc""" - - def get_parametrize_mark_argnames(mark: Mark) -> Sequence[str]: - args, _ = ParameterSet._parse_parametrize_args(*mark.args, **mark.kwargs) - return args - - for argname in metafunc.fixturenames: - # Get the FixtureDefs for the argname. - fixture_defs = metafunc._arg2fixturedefs.get(argname) - if not fixture_defs: - # Will raise FixtureLookupError at setup time if not parametrized somewhere - # else (e.g @pytest.mark.parametrize) - continue - - # If the test itself parametrizes using this argname, give it - # precedence. - if any( - argname in get_parametrize_mark_argnames(mark) - for mark in metafunc.definition.iter_markers("parametrize") - ): - continue - - # In the common case we only look at the fixture def with the - # closest scope (last in the list). But if the fixture overrides - # another fixture, while requesting the super fixture, keep going - # in case the super fixture is parametrized (#1953). - for fixturedef in reversed(fixture_defs): - # Fixture is parametrized, apply it and stop. - if fixturedef.params is not None: - metafunc.parametrize( - argname, - fixturedef.params, - indirect=True, - scope=fixturedef.scope, - ids=fixturedef.ids, - ) - break - - # Not requesting the overridden super fixture, stop. - if argname not in fixturedef.argnames: - break - - # Try next super fixture, if any. - - def pytest_collection_modifyitems(self, items: List[nodes.Item]) -> None: - # Separate parametrized setups. - items[:] = reorder_items(items) - - def parsefactories( - self, node_or_obj, nodeid=NOTSET, unittest: bool = False - ) -> None: - if nodeid is not NOTSET: - holderobj = node_or_obj - else: - holderobj = node_or_obj.obj - nodeid = node_or_obj.nodeid - if holderobj in self._holderobjseen: - return - - self._holderobjseen.add(holderobj) - autousenames = [] - for name in dir(holderobj): - # ugly workaround for one of the fspath deprecated property of node - # todo: safely generalize - if isinstance(holderobj, nodes.Node) and name == "fspath": - continue - - # The attribute can be an arbitrary descriptor, so the attribute - # access below can raise. safe_getatt() ignores such exceptions. - obj = safe_getattr(holderobj, name, None) - marker = getfixturemarker(obj) - if not isinstance(marker, FixtureFunctionMarker): - # Magic globals with __getattr__ might have got us a wrong - # fixture attribute. - continue - - if marker.name: - name = marker.name - - # During fixture definition we wrap the original fixture function - # to issue a warning if called directly, so here we unwrap it in - # order to not emit the warning when pytest itself calls the - # fixture function. - obj = get_real_method(obj, holderobj) - - fixture_def = FixtureDef( - fixturemanager=self, - baseid=nodeid, - argname=name, - func=obj, - scope=marker.scope, - params=marker.params, - unittest=unittest, - ids=marker.ids, - ) - - faclist = self._arg2fixturedefs.setdefault(name, []) - if fixture_def.has_location: - faclist.append(fixture_def) - else: - # fixturedefs with no location are at the front - # so this inserts the current fixturedef after the - # existing fixturedefs from external plugins but - # before the fixturedefs provided in conftests. - i = len([f for f in faclist if not f.has_location]) - faclist.insert(i, fixture_def) - if marker.autouse: - autousenames.append(name) - - if autousenames: - self._nodeid_autousenames.setdefault(nodeid or "", []).extend(autousenames) - - def getfixturedefs( - self, argname: str, nodeid: str - ) -> Optional[Sequence[FixtureDef[Any]]]: - """Get a list of fixtures which are applicable to the given node id. - - :param str argname: Name of the fixture to search for. - :param str nodeid: Full node id of the requesting test. - :rtype: Sequence[FixtureDef] - """ - try: - fixturedefs = self._arg2fixturedefs[argname] - except KeyError: - return None - return tuple(self._matchfactories(fixturedefs, nodeid)) - - def _matchfactories( - self, fixturedefs: Iterable[FixtureDef[Any]], nodeid: str - ) -> Iterator[FixtureDef[Any]]: - parentnodeids = set(nodes.iterparentnodeids(nodeid)) - for fixturedef in fixturedefs: - if fixturedef.baseid in parentnodeids: - yield fixturedef diff --git a/venv/lib/python3.12/site-packages/_pytest/freeze_support.py b/venv/lib/python3.12/site-packages/_pytest/freeze_support.py deleted file mode 100644 index 9f8ea23..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/freeze_support.py +++ /dev/null @@ -1,44 +0,0 @@ -"""Provides a function to report all internal modules for using freezing -tools.""" -import types -from typing import Iterator -from typing import List -from typing import Union - - -def freeze_includes() -> List[str]: - """Return a list of module names used by pytest that should be - included by cx_freeze.""" - import _pytest - - result = list(_iter_all_modules(_pytest)) - return result - - -def _iter_all_modules( - package: Union[str, types.ModuleType], - prefix: str = "", -) -> Iterator[str]: - """Iterate over the names of all modules that can be found in the given - package, recursively. - - >>> import _pytest - >>> list(_iter_all_modules(_pytest)) - ['_pytest._argcomplete', '_pytest._code.code', ...] - """ - import os - import pkgutil - - if isinstance(package, str): - path = package - else: - # Type ignored because typeshed doesn't define ModuleType.__path__ - # (only defined on packages). - package_path = package.__path__ # type: ignore[attr-defined] - path, prefix = package_path[0], package.__name__ + "." - for _, name, is_package in pkgutil.iter_modules([path]): - if is_package: - for m in _iter_all_modules(os.path.join(path, name), prefix=name + "."): - yield prefix + m - else: - yield prefix + name diff --git a/venv/lib/python3.12/site-packages/_pytest/helpconfig.py b/venv/lib/python3.12/site-packages/_pytest/helpconfig.py deleted file mode 100644 index 151bc6d..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/helpconfig.py +++ /dev/null @@ -1,265 +0,0 @@ -"""Version info, help messages, tracing configuration.""" -import os -import sys -from argparse import Action -from typing import List -from typing import Optional -from typing import Union - -import pytest -from _pytest.config import Config -from _pytest.config import ExitCode -from _pytest.config import PrintHelp -from _pytest.config.argparsing import Parser - - -class HelpAction(Action): - """An argparse Action that will raise an exception in order to skip the - rest of the argument parsing when --help is passed. - - This prevents argparse from quitting due to missing required arguments - when any are defined, for example by ``pytest_addoption``. - This is similar to the way that the builtin argparse --help option is - implemented by raising SystemExit. - """ - - def __init__(self, option_strings, dest=None, default=False, help=None): - super().__init__( - option_strings=option_strings, - dest=dest, - const=True, - default=default, - nargs=0, - help=help, - ) - - def __call__(self, parser, namespace, values, option_string=None): - setattr(namespace, self.dest, self.const) - - # We should only skip the rest of the parsing after preparse is done. - if getattr(parser._parser, "after_preparse", False): - raise PrintHelp - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("debugconfig") - group.addoption( - "--version", - "-V", - action="count", - default=0, - dest="version", - help="Display pytest version and information about plugins. " - "When given twice, also display information about plugins.", - ) - group._addoption( - "-h", - "--help", - action=HelpAction, - dest="help", - help="Show help message and configuration info", - ) - group._addoption( - "-p", - action="append", - dest="plugins", - default=[], - metavar="name", - help="Early-load given plugin module name or entry point (multi-allowed). " - "To avoid loading of plugins, use the `no:` prefix, e.g. " - "`no:doctest`.", - ) - group.addoption( - "--traceconfig", - "--trace-config", - action="store_true", - default=False, - help="Trace considerations of conftest.py files", - ) - group.addoption( - "--debug", - action="store", - nargs="?", - const="pytestdebug.log", - dest="debug", - metavar="DEBUG_FILE_NAME", - help="Store internal tracing debug information in this log file. " - "This file is opened with 'w' and truncated as a result, care advised. " - "Default: pytestdebug.log.", - ) - group._addoption( - "-o", - "--override-ini", - dest="override_ini", - action="append", - help='Override ini option with "option=value" style, ' - "e.g. `-o xfail_strict=True -o cache_dir=cache`.", - ) - - -@pytest.hookimpl(hookwrapper=True) -def pytest_cmdline_parse(): - outcome = yield - config: Config = outcome.get_result() - - if config.option.debug: - # --debug | --debug was provided. - path = config.option.debug - debugfile = open(path, "w") - debugfile.write( - "versions pytest-%s, " - "python-%s\ncwd=%s\nargs=%s\n\n" - % ( - pytest.__version__, - ".".join(map(str, sys.version_info)), - os.getcwd(), - config.invocation_params.args, - ) - ) - config.trace.root.setwriter(debugfile.write) - undo_tracing = config.pluginmanager.enable_tracing() - sys.stderr.write("writing pytest debug information to %s\n" % path) - - def unset_tracing() -> None: - debugfile.close() - sys.stderr.write("wrote pytest debug information to %s\n" % debugfile.name) - config.trace.root.setwriter(None) - undo_tracing() - - config.add_cleanup(unset_tracing) - - -def showversion(config: Config) -> None: - if config.option.version > 1: - sys.stdout.write( - "This is pytest version {}, imported from {}\n".format( - pytest.__version__, pytest.__file__ - ) - ) - plugininfo = getpluginversioninfo(config) - if plugininfo: - for line in plugininfo: - sys.stdout.write(line + "\n") - else: - sys.stdout.write(f"pytest {pytest.__version__}\n") - - -def pytest_cmdline_main(config: Config) -> Optional[Union[int, ExitCode]]: - if config.option.version > 0: - showversion(config) - return 0 - elif config.option.help: - config._do_configure() - showhelp(config) - config._ensure_unconfigure() - return 0 - return None - - -def showhelp(config: Config) -> None: - import textwrap - - reporter = config.pluginmanager.get_plugin("terminalreporter") - tw = reporter._tw - tw.write(config._parser.optparser.format_help()) - tw.line() - tw.line( - "[pytest] ini-options in the first pytest.ini|tox.ini|setup.cfg file found:" - ) - tw.line() - - columns = tw.fullwidth # costly call - indent_len = 24 # based on argparse's max_help_position=24 - indent = " " * indent_len - for name in config._parser._ininames: - help, type, default = config._parser._inidict[name] - if type is None: - type = "string" - if help is None: - raise TypeError(f"help argument cannot be None for {name}") - spec = f"{name} ({type}):" - tw.write(" %s" % spec) - spec_len = len(spec) - if spec_len > (indent_len - 3): - # Display help starting at a new line. - tw.line() - helplines = textwrap.wrap( - help, - columns, - initial_indent=indent, - subsequent_indent=indent, - break_on_hyphens=False, - ) - - for line in helplines: - tw.line(line) - else: - # Display help starting after the spec, following lines indented. - tw.write(" " * (indent_len - spec_len - 2)) - wrapped = textwrap.wrap(help, columns - indent_len, break_on_hyphens=False) - - if wrapped: - tw.line(wrapped[0]) - for line in wrapped[1:]: - tw.line(indent + line) - - tw.line() - tw.line("Environment variables:") - vars = [ - ("PYTEST_ADDOPTS", "Extra command line options"), - ("PYTEST_PLUGINS", "Comma-separated plugins to load during startup"), - ("PYTEST_DISABLE_PLUGIN_AUTOLOAD", "Set to disable plugin auto-loading"), - ("PYTEST_DEBUG", "Set to enable debug tracing of pytest's internals"), - ] - for name, help in vars: - tw.line(f" {name:<24} {help}") - tw.line() - tw.line() - - tw.line("to see available markers type: pytest --markers") - tw.line("to see available fixtures type: pytest --fixtures") - tw.line( - "(shown according to specified file_or_dir or current dir " - "if not specified; fixtures with leading '_' are only shown " - "with the '-v' option" - ) - - for warningreport in reporter.stats.get("warnings", []): - tw.line("warning : " + warningreport.message, red=True) - return - - -conftest_options = [("pytest_plugins", "list of plugin names to load")] - - -def getpluginversioninfo(config: Config) -> List[str]: - lines = [] - plugininfo = config.pluginmanager.list_plugin_distinfo() - if plugininfo: - lines.append("setuptools registered plugins:") - for plugin, dist in plugininfo: - loc = getattr(plugin, "__file__", repr(plugin)) - content = f"{dist.project_name}-{dist.version} at {loc}" - lines.append(" " + content) - return lines - - -def pytest_report_header(config: Config) -> List[str]: - lines = [] - if config.option.debug or config.option.traceconfig: - lines.append(f"using: pytest-{pytest.__version__}") - - verinfo = getpluginversioninfo(config) - if verinfo: - lines.extend(verinfo) - - if config.option.traceconfig: - lines.append("active plugins:") - items = config.pluginmanager.list_name_plugin() - for name, plugin in items: - if hasattr(plugin, "__file__"): - r = plugin.__file__ - else: - r = repr(plugin) - lines.append(f" {name:<20}: {r}") - return lines diff --git a/venv/lib/python3.12/site-packages/_pytest/hookspec.py b/venv/lib/python3.12/site-packages/_pytest/hookspec.py deleted file mode 100644 index cc0828d..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/hookspec.py +++ /dev/null @@ -1,972 +0,0 @@ -"""Hook specifications for pytest plugins which are invoked by pytest itself -and by builtin plugins.""" -from pathlib import Path -from typing import Any -from typing import Dict -from typing import List -from typing import Mapping -from typing import Optional -from typing import Sequence -from typing import Tuple -from typing import TYPE_CHECKING -from typing import Union - -from pluggy import HookspecMarker - -from _pytest.deprecated import WARNING_CMDLINE_PREPARSE_HOOK - -if TYPE_CHECKING: - import pdb - import warnings - from typing_extensions import Literal - - from _pytest._code.code import ExceptionRepr - from _pytest.code import ExceptionInfo - from _pytest.config import Config - from _pytest.config import ExitCode - from _pytest.config import PytestPluginManager - from _pytest.config import _PluggyPlugin - from _pytest.config.argparsing import Parser - from _pytest.fixtures import FixtureDef - from _pytest.fixtures import SubRequest - from _pytest.main import Session - from _pytest.nodes import Collector - from _pytest.nodes import Item - from _pytest.outcomes import Exit - from _pytest.python import Class - from _pytest.python import Function - from _pytest.python import Metafunc - from _pytest.python import Module - from _pytest.reports import CollectReport - from _pytest.reports import TestReport - from _pytest.runner import CallInfo - from _pytest.terminal import TerminalReporter - from _pytest.compat import LEGACY_PATH - - -hookspec = HookspecMarker("pytest") - -# ------------------------------------------------------------------------- -# Initialization hooks called for every plugin -# ------------------------------------------------------------------------- - - -@hookspec(historic=True) -def pytest_addhooks(pluginmanager: "PytestPluginManager") -> None: - """Called at plugin registration time to allow adding new hooks via a call to - ``pluginmanager.add_hookspecs(module_or_class, prefix)``. - - :param pytest.PytestPluginManager pluginmanager: The pytest plugin manager. - - .. note:: - This hook is incompatible with ``hookwrapper=True``. - """ - - -@hookspec(historic=True) -def pytest_plugin_registered( - plugin: "_PluggyPlugin", manager: "PytestPluginManager" -) -> None: - """A new pytest plugin got registered. - - :param plugin: The plugin module or instance. - :param pytest.PytestPluginManager manager: pytest plugin manager. - - .. note:: - This hook is incompatible with ``hookwrapper=True``. - """ - - -@hookspec(historic=True) -def pytest_addoption(parser: "Parser", pluginmanager: "PytestPluginManager") -> None: - """Register argparse-style options and ini-style config values, - called once at the beginning of a test run. - - .. note:: - - This function should be implemented only in plugins or ``conftest.py`` - files situated at the tests root directory due to how pytest - :ref:`discovers plugins during startup `. - - :param pytest.Parser parser: - To add command line options, call - :py:func:`parser.addoption(...) `. - To add ini-file values call :py:func:`parser.addini(...) - `. - - :param pytest.PytestPluginManager pluginmanager: - The pytest plugin manager, which can be used to install :py:func:`hookspec`'s - or :py:func:`hookimpl`'s and allow one plugin to call another plugin's hooks - to change how command line options are added. - - Options can later be accessed through the - :py:class:`config ` object, respectively: - - - :py:func:`config.getoption(name) ` to - retrieve the value of a command line option. - - - :py:func:`config.getini(name) ` to retrieve - a value read from an ini-style file. - - The config object is passed around on many internal objects via the ``.config`` - attribute or can be retrieved as the ``pytestconfig`` fixture. - - .. note:: - This hook is incompatible with ``hookwrapper=True``. - """ - - -@hookspec(historic=True) -def pytest_configure(config: "Config") -> None: - """Allow plugins and conftest files to perform initial configuration. - - This hook is called for every plugin and initial conftest file - after command line options have been parsed. - - After that, the hook is called for other conftest files as they are - imported. - - .. note:: - This hook is incompatible with ``hookwrapper=True``. - - :param pytest.Config config: The pytest config object. - """ - - -# ------------------------------------------------------------------------- -# Bootstrapping hooks called for plugins registered early enough: -# internal and 3rd party plugins. -# ------------------------------------------------------------------------- - - -@hookspec(firstresult=True) -def pytest_cmdline_parse( - pluginmanager: "PytestPluginManager", args: List[str] -) -> Optional["Config"]: - """Return an initialized :class:`~pytest.Config`, parsing the specified args. - - Stops at first non-None result, see :ref:`firstresult`. - - .. note:: - This hook will only be called for plugin classes passed to the - ``plugins`` arg when using `pytest.main`_ to perform an in-process - test run. - - :param pluginmanager: The pytest plugin manager. - :param args: List of arguments passed on the command line. - :returns: A pytest config object. - """ - - -@hookspec(warn_on_impl=WARNING_CMDLINE_PREPARSE_HOOK) -def pytest_cmdline_preparse(config: "Config", args: List[str]) -> None: - """(**Deprecated**) modify command line arguments before option parsing. - - This hook is considered deprecated and will be removed in a future pytest version. Consider - using :hook:`pytest_load_initial_conftests` instead. - - .. note:: - This hook will not be called for ``conftest.py`` files, only for setuptools plugins. - - :param config: The pytest config object. - :param args: Arguments passed on the command line. - """ - - -@hookspec(firstresult=True) -def pytest_cmdline_main(config: "Config") -> Optional[Union["ExitCode", int]]: - """Called for performing the main command line action. The default - implementation will invoke the configure hooks and runtest_mainloop. - - Stops at first non-None result, see :ref:`firstresult`. - - :param config: The pytest config object. - :returns: The exit code. - """ - - -def pytest_load_initial_conftests( - early_config: "Config", parser: "Parser", args: List[str] -) -> None: - """Called to implement the loading of initial conftest files ahead - of command line option parsing. - - .. note:: - This hook will not be called for ``conftest.py`` files, only for setuptools plugins. - - :param early_config: The pytest config object. - :param args: Arguments passed on the command line. - :param parser: To add command line options. - """ - - -# ------------------------------------------------------------------------- -# collection hooks -# ------------------------------------------------------------------------- - - -@hookspec(firstresult=True) -def pytest_collection(session: "Session") -> Optional[object]: - """Perform the collection phase for the given session. - - Stops at first non-None result, see :ref:`firstresult`. - The return value is not used, but only stops further processing. - - The default collection phase is this (see individual hooks for full details): - - 1. Starting from ``session`` as the initial collector: - - 1. ``pytest_collectstart(collector)`` - 2. ``report = pytest_make_collect_report(collector)`` - 3. ``pytest_exception_interact(collector, call, report)`` if an interactive exception occurred - 4. For each collected node: - - 1. If an item, ``pytest_itemcollected(item)`` - 2. If a collector, recurse into it. - - 5. ``pytest_collectreport(report)`` - - 2. ``pytest_collection_modifyitems(session, config, items)`` - - 1. ``pytest_deselected(items)`` for any deselected items (may be called multiple times) - - 3. ``pytest_collection_finish(session)`` - 4. Set ``session.items`` to the list of collected items - 5. Set ``session.testscollected`` to the number of collected items - - You can implement this hook to only perform some action before collection, - for example the terminal plugin uses it to start displaying the collection - counter (and returns `None`). - - :param session: The pytest session object. - """ - - -def pytest_collection_modifyitems( - session: "Session", config: "Config", items: List["Item"] -) -> None: - """Called after collection has been performed. May filter or re-order - the items in-place. - - :param session: The pytest session object. - :param config: The pytest config object. - :param items: List of item objects. - """ - - -def pytest_collection_finish(session: "Session") -> None: - """Called after collection has been performed and modified. - - :param session: The pytest session object. - """ - - -@hookspec(firstresult=True) -def pytest_ignore_collect( - collection_path: Path, path: "LEGACY_PATH", config: "Config" -) -> Optional[bool]: - """Return True to prevent considering this path for collection. - - This hook is consulted for all files and directories prior to calling - more specific hooks. - - Stops at first non-None result, see :ref:`firstresult`. - - :param collection_path: The path to analyze. - :param path: The path to analyze (deprecated). - :param config: The pytest config object. - - .. versionchanged:: 7.0.0 - The ``collection_path`` parameter was added as a :class:`pathlib.Path` - equivalent of the ``path`` parameter. The ``path`` parameter - has been deprecated. - """ - - -def pytest_collect_file( - file_path: Path, path: "LEGACY_PATH", parent: "Collector" -) -> "Optional[Collector]": - """Create a :class:`~pytest.Collector` for the given path, or None if not relevant. - - The new node needs to have the specified ``parent`` as a parent. - - :param file_path: The path to analyze. - :param path: The path to collect (deprecated). - - .. versionchanged:: 7.0.0 - The ``file_path`` parameter was added as a :class:`pathlib.Path` - equivalent of the ``path`` parameter. The ``path`` parameter - has been deprecated. - """ - - -# logging hooks for collection - - -def pytest_collectstart(collector: "Collector") -> None: - """Collector starts collecting. - - :param collector: - The collector. - """ - - -def pytest_itemcollected(item: "Item") -> None: - """We just collected a test item. - - :param item: - The item. - """ - - -def pytest_collectreport(report: "CollectReport") -> None: - """Collector finished collecting. - - :param report: - The collect report. - """ - - -def pytest_deselected(items: Sequence["Item"]) -> None: - """Called for deselected test items, e.g. by keyword. - - May be called multiple times. - - :param items: - The items. - """ - - -@hookspec(firstresult=True) -def pytest_make_collect_report(collector: "Collector") -> "Optional[CollectReport]": - """Perform :func:`collector.collect() ` and return - a :class:`~pytest.CollectReport`. - - Stops at first non-None result, see :ref:`firstresult`. - - :param collector: - The collector. - """ - - -# ------------------------------------------------------------------------- -# Python test function related hooks -# ------------------------------------------------------------------------- - - -@hookspec(firstresult=True) -def pytest_pycollect_makemodule( - module_path: Path, path: "LEGACY_PATH", parent -) -> Optional["Module"]: - """Return a :class:`pytest.Module` collector or None for the given path. - - This hook will be called for each matching test module path. - The :hook:`pytest_collect_file` hook needs to be used if you want to - create test modules for files that do not match as a test module. - - Stops at first non-None result, see :ref:`firstresult`. - - :param module_path: The path of the module to collect. - :param path: The path of the module to collect (deprecated). - - .. versionchanged:: 7.0.0 - The ``module_path`` parameter was added as a :class:`pathlib.Path` - equivalent of the ``path`` parameter. - - The ``path`` parameter has been deprecated in favor of ``fspath``. - """ - - -@hookspec(firstresult=True) -def pytest_pycollect_makeitem( - collector: Union["Module", "Class"], name: str, obj: object -) -> Union[None, "Item", "Collector", List[Union["Item", "Collector"]]]: - """Return a custom item/collector for a Python object in a module, or None. - - Stops at first non-None result, see :ref:`firstresult`. - - :param collector: - The module/class collector. - :param name: - The name of the object in the module/class. - :param obj: - The object. - :returns: - The created items/collectors. - """ - - -@hookspec(firstresult=True) -def pytest_pyfunc_call(pyfuncitem: "Function") -> Optional[object]: - """Call underlying test function. - - Stops at first non-None result, see :ref:`firstresult`. - - :param pyfuncitem: - The function item. - """ - - -def pytest_generate_tests(metafunc: "Metafunc") -> None: - """Generate (multiple) parametrized calls to a test function. - - :param metafunc: - The :class:`~pytest.Metafunc` helper for the test function. - """ - - -@hookspec(firstresult=True) -def pytest_make_parametrize_id( - config: "Config", val: object, argname: str -) -> Optional[str]: - """Return a user-friendly string representation of the given ``val`` - that will be used by @pytest.mark.parametrize calls, or None if the hook - doesn't know about ``val``. - - The parameter name is available as ``argname``, if required. - - Stops at first non-None result, see :ref:`firstresult`. - - :param config: The pytest config object. - :param val: The parametrized value. - :param str argname: The automatic parameter name produced by pytest. - """ - - -# ------------------------------------------------------------------------- -# runtest related hooks -# ------------------------------------------------------------------------- - - -@hookspec(firstresult=True) -def pytest_runtestloop(session: "Session") -> Optional[object]: - """Perform the main runtest loop (after collection finished). - - The default hook implementation performs the runtest protocol for all items - collected in the session (``session.items``), unless the collection failed - or the ``collectonly`` pytest option is set. - - If at any point :py:func:`pytest.exit` is called, the loop is - terminated immediately. - - If at any point ``session.shouldfail`` or ``session.shouldstop`` are set, the - loop is terminated after the runtest protocol for the current item is finished. - - :param session: The pytest session object. - - Stops at first non-None result, see :ref:`firstresult`. - The return value is not used, but only stops further processing. - """ - - -@hookspec(firstresult=True) -def pytest_runtest_protocol( - item: "Item", nextitem: "Optional[Item]" -) -> Optional[object]: - """Perform the runtest protocol for a single test item. - - The default runtest protocol is this (see individual hooks for full details): - - - ``pytest_runtest_logstart(nodeid, location)`` - - - Setup phase: - - ``call = pytest_runtest_setup(item)`` (wrapped in ``CallInfo(when="setup")``) - - ``report = pytest_runtest_makereport(item, call)`` - - ``pytest_runtest_logreport(report)`` - - ``pytest_exception_interact(call, report)`` if an interactive exception occurred - - - Call phase, if the the setup passed and the ``setuponly`` pytest option is not set: - - ``call = pytest_runtest_call(item)`` (wrapped in ``CallInfo(when="call")``) - - ``report = pytest_runtest_makereport(item, call)`` - - ``pytest_runtest_logreport(report)`` - - ``pytest_exception_interact(call, report)`` if an interactive exception occurred - - - Teardown phase: - - ``call = pytest_runtest_teardown(item, nextitem)`` (wrapped in ``CallInfo(when="teardown")``) - - ``report = pytest_runtest_makereport(item, call)`` - - ``pytest_runtest_logreport(report)`` - - ``pytest_exception_interact(call, report)`` if an interactive exception occurred - - - ``pytest_runtest_logfinish(nodeid, location)`` - - :param item: Test item for which the runtest protocol is performed. - :param nextitem: The scheduled-to-be-next test item (or None if this is the end my friend). - - Stops at first non-None result, see :ref:`firstresult`. - The return value is not used, but only stops further processing. - """ - - -def pytest_runtest_logstart( - nodeid: str, location: Tuple[str, Optional[int], str] -) -> None: - """Called at the start of running the runtest protocol for a single item. - - See :hook:`pytest_runtest_protocol` for a description of the runtest protocol. - - :param nodeid: Full node ID of the item. - :param location: A tuple of ``(filename, lineno, testname)``. - """ - - -def pytest_runtest_logfinish( - nodeid: str, location: Tuple[str, Optional[int], str] -) -> None: - """Called at the end of running the runtest protocol for a single item. - - See :hook:`pytest_runtest_protocol` for a description of the runtest protocol. - - :param nodeid: Full node ID of the item. - :param location: A tuple of ``(filename, lineno, testname)``. - """ - - -def pytest_runtest_setup(item: "Item") -> None: - """Called to perform the setup phase for a test item. - - The default implementation runs ``setup()`` on ``item`` and all of its - parents (which haven't been setup yet). This includes obtaining the - values of fixtures required by the item (which haven't been obtained - yet). - - :param item: - The item. - """ - - -def pytest_runtest_call(item: "Item") -> None: - """Called to run the test for test item (the call phase). - - The default implementation calls ``item.runtest()``. - - :param item: - The item. - """ - - -def pytest_runtest_teardown(item: "Item", nextitem: Optional["Item"]) -> None: - """Called to perform the teardown phase for a test item. - - The default implementation runs the finalizers and calls ``teardown()`` - on ``item`` and all of its parents (which need to be torn down). This - includes running the teardown phase of fixtures required by the item (if - they go out of scope). - - :param item: - The item. - :param nextitem: - The scheduled-to-be-next test item (None if no further test item is - scheduled). This argument is used to perform exact teardowns, i.e. - calling just enough finalizers so that nextitem only needs to call - setup functions. - """ - - -@hookspec(firstresult=True) -def pytest_runtest_makereport( - item: "Item", call: "CallInfo[None]" -) -> Optional["TestReport"]: - """Called to create a :class:`~pytest.TestReport` for each of - the setup, call and teardown runtest phases of a test item. - - See :hook:`pytest_runtest_protocol` for a description of the runtest protocol. - - :param item: The item. - :param call: The :class:`~pytest.CallInfo` for the phase. - - Stops at first non-None result, see :ref:`firstresult`. - """ - - -def pytest_runtest_logreport(report: "TestReport") -> None: - """Process the :class:`~pytest.TestReport` produced for each - of the setup, call and teardown runtest phases of an item. - - See :hook:`pytest_runtest_protocol` for a description of the runtest protocol. - """ - - -@hookspec(firstresult=True) -def pytest_report_to_serializable( - config: "Config", - report: Union["CollectReport", "TestReport"], -) -> Optional[Dict[str, Any]]: - """Serialize the given report object into a data structure suitable for - sending over the wire, e.g. converted to JSON. - - :param config: The pytest config object. - :param report: The report. - """ - - -@hookspec(firstresult=True) -def pytest_report_from_serializable( - config: "Config", - data: Dict[str, Any], -) -> Optional[Union["CollectReport", "TestReport"]]: - """Restore a report object previously serialized with - :hook:`pytest_report_to_serializable`. - - :param config: The pytest config object. - """ - - -# ------------------------------------------------------------------------- -# Fixture related hooks -# ------------------------------------------------------------------------- - - -@hookspec(firstresult=True) -def pytest_fixture_setup( - fixturedef: "FixtureDef[Any]", request: "SubRequest" -) -> Optional[object]: - """Perform fixture setup execution. - - :param fixturdef: - The fixture definition object. - :param request: - The fixture request object. - :returns: - The return value of the call to the fixture function. - - Stops at first non-None result, see :ref:`firstresult`. - - .. note:: - If the fixture function returns None, other implementations of - this hook function will continue to be called, according to the - behavior of the :ref:`firstresult` option. - """ - - -def pytest_fixture_post_finalizer( - fixturedef: "FixtureDef[Any]", request: "SubRequest" -) -> None: - """Called after fixture teardown, but before the cache is cleared, so - the fixture result ``fixturedef.cached_result`` is still available (not - ``None``). - - :param fixturdef: - The fixture definition object. - :param request: - The fixture request object. - """ - - -# ------------------------------------------------------------------------- -# test session related hooks -# ------------------------------------------------------------------------- - - -def pytest_sessionstart(session: "Session") -> None: - """Called after the ``Session`` object has been created and before performing collection - and entering the run test loop. - - :param session: The pytest session object. - """ - - -def pytest_sessionfinish( - session: "Session", - exitstatus: Union[int, "ExitCode"], -) -> None: - """Called after whole test run finished, right before returning the exit status to the system. - - :param session: The pytest session object. - :param exitstatus: The status which pytest will return to the system. - """ - - -def pytest_unconfigure(config: "Config") -> None: - """Called before test process is exited. - - :param config: The pytest config object. - """ - - -# ------------------------------------------------------------------------- -# hooks for customizing the assert methods -# ------------------------------------------------------------------------- - - -def pytest_assertrepr_compare( - config: "Config", op: str, left: object, right: object -) -> Optional[List[str]]: - """Return explanation for comparisons in failing assert expressions. - - Return None for no custom explanation, otherwise return a list - of strings. The strings will be joined by newlines but any newlines - *in* a string will be escaped. Note that all but the first line will - be indented slightly, the intention is for the first line to be a summary. - - :param config: The pytest config object. - :param op: The operator, e.g. `"=="`, `"!="`, `"not in"`. - :param left: The left operand. - :param right: The right operand. - """ - - -def pytest_assertion_pass(item: "Item", lineno: int, orig: str, expl: str) -> None: - """Called whenever an assertion passes. - - .. versionadded:: 5.0 - - Use this hook to do some processing after a passing assertion. - The original assertion information is available in the `orig` string - and the pytest introspected assertion information is available in the - `expl` string. - - This hook must be explicitly enabled by the ``enable_assertion_pass_hook`` - ini-file option: - - .. code-block:: ini - - [pytest] - enable_assertion_pass_hook=true - - You need to **clean the .pyc** files in your project directory and interpreter libraries - when enabling this option, as assertions will require to be re-written. - - :param item: pytest item object of current test. - :param lineno: Line number of the assert statement. - :param orig: String with the original assertion. - :param expl: String with the assert explanation. - """ - - -# ------------------------------------------------------------------------- -# Hooks for influencing reporting (invoked from _pytest_terminal). -# ------------------------------------------------------------------------- - - -def pytest_report_header( - config: "Config", start_path: Path, startdir: "LEGACY_PATH" -) -> Union[str, List[str]]: - """Return a string or list of strings to be displayed as header info for terminal reporting. - - :param config: The pytest config object. - :param start_path: The starting dir. - :param startdir: The starting dir (deprecated). - - .. note:: - - Lines returned by a plugin are displayed before those of plugins which - ran before it. - If you want to have your line(s) displayed first, use - :ref:`trylast=True `. - - .. note:: - - This function should be implemented only in plugins or ``conftest.py`` - files situated at the tests root directory due to how pytest - :ref:`discovers plugins during startup `. - - .. versionchanged:: 7.0.0 - The ``start_path`` parameter was added as a :class:`pathlib.Path` - equivalent of the ``startdir`` parameter. The ``startdir`` parameter - has been deprecated. - """ - - -def pytest_report_collectionfinish( - config: "Config", - start_path: Path, - startdir: "LEGACY_PATH", - items: Sequence["Item"], -) -> Union[str, List[str]]: - """Return a string or list of strings to be displayed after collection - has finished successfully. - - These strings will be displayed after the standard "collected X items" message. - - .. versionadded:: 3.2 - - :param config: The pytest config object. - :param start_path: The starting dir. - :param startdir: The starting dir (deprecated). - :param items: List of pytest items that are going to be executed; this list should not be modified. - - .. note:: - - Lines returned by a plugin are displayed before those of plugins which - ran before it. - If you want to have your line(s) displayed first, use - :ref:`trylast=True `. - - .. versionchanged:: 7.0.0 - The ``start_path`` parameter was added as a :class:`pathlib.Path` - equivalent of the ``startdir`` parameter. The ``startdir`` parameter - has been deprecated. - """ - - -@hookspec(firstresult=True) -def pytest_report_teststatus( - report: Union["CollectReport", "TestReport"], config: "Config" -) -> Tuple[str, str, Union[str, Mapping[str, bool]]]: - """Return result-category, shortletter and verbose word for status - reporting. - - The result-category is a category in which to count the result, for - example "passed", "skipped", "error" or the empty string. - - The shortletter is shown as testing progresses, for example ".", "s", - "E" or the empty string. - - The verbose word is shown as testing progresses in verbose mode, for - example "PASSED", "SKIPPED", "ERROR" or the empty string. - - pytest may style these implicitly according to the report outcome. - To provide explicit styling, return a tuple for the verbose word, - for example ``"rerun", "R", ("RERUN", {"yellow": True})``. - - :param report: The report object whose status is to be returned. - :param config: The pytest config object. - :returns: The test status. - - Stops at first non-None result, see :ref:`firstresult`. - """ - - -def pytest_terminal_summary( - terminalreporter: "TerminalReporter", - exitstatus: "ExitCode", - config: "Config", -) -> None: - """Add a section to terminal summary reporting. - - :param terminalreporter: The internal terminal reporter object. - :param exitstatus: The exit status that will be reported back to the OS. - :param config: The pytest config object. - - .. versionadded:: 4.2 - The ``config`` parameter. - """ - - -@hookspec(historic=True) -def pytest_warning_recorded( - warning_message: "warnings.WarningMessage", - when: "Literal['config', 'collect', 'runtest']", - nodeid: str, - location: Optional[Tuple[str, int, str]], -) -> None: - """Process a warning captured by the internal pytest warnings plugin. - - :param warning_message: - The captured warning. This is the same object produced by :py:func:`warnings.catch_warnings`, and contains - the same attributes as the parameters of :py:func:`warnings.showwarning`. - - :param when: - Indicates when the warning was captured. Possible values: - - * ``"config"``: during pytest configuration/initialization stage. - * ``"collect"``: during test collection. - * ``"runtest"``: during test execution. - - :param nodeid: - Full id of the item. - - :param location: - When available, holds information about the execution context of the captured - warning (filename, linenumber, function). ``function`` evaluates to - when the execution context is at the module level. - - .. versionadded:: 6.0 - """ - - -# ------------------------------------------------------------------------- -# Hooks for influencing skipping -# ------------------------------------------------------------------------- - - -def pytest_markeval_namespace(config: "Config") -> Dict[str, Any]: - """Called when constructing the globals dictionary used for - evaluating string conditions in xfail/skipif markers. - - This is useful when the condition for a marker requires - objects that are expensive or impossible to obtain during - collection time, which is required by normal boolean - conditions. - - .. versionadded:: 6.2 - - :param config: The pytest config object. - :returns: A dictionary of additional globals to add. - """ - - -# ------------------------------------------------------------------------- -# error handling and internal debugging hooks -# ------------------------------------------------------------------------- - - -def pytest_internalerror( - excrepr: "ExceptionRepr", - excinfo: "ExceptionInfo[BaseException]", -) -> Optional[bool]: - """Called for internal errors. - - Return True to suppress the fallback handling of printing an - INTERNALERROR message directly to sys.stderr. - - :param excrepr: The exception repr object. - :param excinfo: The exception info. - """ - - -def pytest_keyboard_interrupt( - excinfo: "ExceptionInfo[Union[KeyboardInterrupt, Exit]]", -) -> None: - """Called for keyboard interrupt. - - :param excinfo: The exception info. - """ - - -def pytest_exception_interact( - node: Union["Item", "Collector"], - call: "CallInfo[Any]", - report: Union["CollectReport", "TestReport"], -) -> None: - """Called when an exception was raised which can potentially be - interactively handled. - - May be called during collection (see :hook:`pytest_make_collect_report`), - in which case ``report`` is a :class:`CollectReport`. - - May be called during runtest of an item (see :hook:`pytest_runtest_protocol`), - in which case ``report`` is a :class:`TestReport`. - - This hook is not called if the exception that was raised is an internal - exception like ``skip.Exception``. - - :param node: - The item or collector. - :param call: - The call information. Contains the exception. - :param report: - The collection or test report. - """ - - -def pytest_enter_pdb(config: "Config", pdb: "pdb.Pdb") -> None: - """Called upon pdb.set_trace(). - - Can be used by plugins to take special action just before the python - debugger enters interactive mode. - - :param config: The pytest config object. - :param pdb: The Pdb instance. - """ - - -def pytest_leave_pdb(config: "Config", pdb: "pdb.Pdb") -> None: - """Called when leaving pdb (e.g. with continue after pdb.set_trace()). - - Can be used by plugins to take special action just after the python - debugger leaves interactive mode. - - :param config: The pytest config object. - :param pdb: The Pdb instance. - """ diff --git a/venv/lib/python3.12/site-packages/_pytest/junitxml.py b/venv/lib/python3.12/site-packages/_pytest/junitxml.py deleted file mode 100644 index 9242d46..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/junitxml.py +++ /dev/null @@ -1,699 +0,0 @@ -"""Report test results in JUnit-XML format, for use with Jenkins and build -integration servers. - -Based on initial code from Ross Lawley. - -Output conforms to -https://github.com/jenkinsci/xunit-plugin/blob/master/src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd -""" -import functools -import os -import platform -import re -import xml.etree.ElementTree as ET -from datetime import datetime -from typing import Callable -from typing import Dict -from typing import List -from typing import Match -from typing import Optional -from typing import Tuple -from typing import Union - -import pytest -from _pytest import nodes -from _pytest import timing -from _pytest._code.code import ExceptionRepr -from _pytest._code.code import ReprFileLocation -from _pytest.config import Config -from _pytest.config import filename_arg -from _pytest.config.argparsing import Parser -from _pytest.fixtures import FixtureRequest -from _pytest.reports import TestReport -from _pytest.stash import StashKey -from _pytest.terminal import TerminalReporter - - -xml_key = StashKey["LogXML"]() - - -def bin_xml_escape(arg: object) -> str: - r"""Visually escape invalid XML characters. - - For example, transforms - 'hello\aworld\b' - into - 'hello#x07world#x08' - Note that the #xABs are *not* XML escapes - missing the ampersand «. - The idea is to escape visually for the user rather than for XML itself. - """ - - def repl(matchobj: Match[str]) -> str: - i = ord(matchobj.group()) - if i <= 0xFF: - return "#x%02X" % i - else: - return "#x%04X" % i - - # The spec range of valid chars is: - # Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] - # For an unknown(?) reason, we disallow #x7F (DEL) as well. - illegal_xml_re = ( - "[^\u0009\u000A\u000D\u0020-\u007E\u0080-\uD7FF\uE000-\uFFFD\u10000-\u10FFFF]" - ) - return re.sub(illegal_xml_re, repl, str(arg)) - - -def merge_family(left, right) -> None: - result = {} - for kl, vl in left.items(): - for kr, vr in right.items(): - if not isinstance(vl, list): - raise TypeError(type(vl)) - result[kl] = vl + vr - left.update(result) - - -families = {} -families["_base"] = {"testcase": ["classname", "name"]} -families["_base_legacy"] = {"testcase": ["file", "line", "url"]} - -# xUnit 1.x inherits legacy attributes. -families["xunit1"] = families["_base"].copy() -merge_family(families["xunit1"], families["_base_legacy"]) - -# xUnit 2.x uses strict base attributes. -families["xunit2"] = families["_base"] - - -class _NodeReporter: - def __init__(self, nodeid: Union[str, TestReport], xml: "LogXML") -> None: - self.id = nodeid - self.xml = xml - self.add_stats = self.xml.add_stats - self.family = self.xml.family - self.duration = 0.0 - self.properties: List[Tuple[str, str]] = [] - self.nodes: List[ET.Element] = [] - self.attrs: Dict[str, str] = {} - - def append(self, node: ET.Element) -> None: - self.xml.add_stats(node.tag) - self.nodes.append(node) - - def add_property(self, name: str, value: object) -> None: - self.properties.append((str(name), bin_xml_escape(value))) - - def add_attribute(self, name: str, value: object) -> None: - self.attrs[str(name)] = bin_xml_escape(value) - - def make_properties_node(self) -> Optional[ET.Element]: - """Return a Junit node containing custom properties, if any.""" - if self.properties: - properties = ET.Element("properties") - for name, value in self.properties: - properties.append(ET.Element("property", name=name, value=value)) - return properties - return None - - def record_testreport(self, testreport: TestReport) -> None: - names = mangle_test_address(testreport.nodeid) - existing_attrs = self.attrs - classnames = names[:-1] - if self.xml.prefix: - classnames.insert(0, self.xml.prefix) - attrs: Dict[str, str] = { - "classname": ".".join(classnames), - "name": bin_xml_escape(names[-1]), - "file": testreport.location[0], - } - if testreport.location[1] is not None: - attrs["line"] = str(testreport.location[1]) - if hasattr(testreport, "url"): - attrs["url"] = testreport.url - self.attrs = attrs - self.attrs.update(existing_attrs) # Restore any user-defined attributes. - - # Preserve legacy testcase behavior. - if self.family == "xunit1": - return - - # Filter out attributes not permitted by this test family. - # Including custom attributes because they are not valid here. - temp_attrs = {} - for key in self.attrs.keys(): - if key in families[self.family]["testcase"]: - temp_attrs[key] = self.attrs[key] - self.attrs = temp_attrs - - def to_xml(self) -> ET.Element: - testcase = ET.Element("testcase", self.attrs, time="%.3f" % self.duration) - properties = self.make_properties_node() - if properties is not None: - testcase.append(properties) - testcase.extend(self.nodes) - return testcase - - def _add_simple(self, tag: str, message: str, data: Optional[str] = None) -> None: - node = ET.Element(tag, message=message) - node.text = bin_xml_escape(data) - self.append(node) - - def write_captured_output(self, report: TestReport) -> None: - if not self.xml.log_passing_tests and report.passed: - return - - content_out = report.capstdout - content_log = report.caplog - content_err = report.capstderr - if self.xml.logging == "no": - return - content_all = "" - if self.xml.logging in ["log", "all"]: - content_all = self._prepare_content(content_log, " Captured Log ") - if self.xml.logging in ["system-out", "out-err", "all"]: - content_all += self._prepare_content(content_out, " Captured Out ") - self._write_content(report, content_all, "system-out") - content_all = "" - if self.xml.logging in ["system-err", "out-err", "all"]: - content_all += self._prepare_content(content_err, " Captured Err ") - self._write_content(report, content_all, "system-err") - content_all = "" - if content_all: - self._write_content(report, content_all, "system-out") - - def _prepare_content(self, content: str, header: str) -> str: - return "\n".join([header.center(80, "-"), content, ""]) - - def _write_content(self, report: TestReport, content: str, jheader: str) -> None: - tag = ET.Element(jheader) - tag.text = bin_xml_escape(content) - self.append(tag) - - def append_pass(self, report: TestReport) -> None: - self.add_stats("passed") - - def append_failure(self, report: TestReport) -> None: - # msg = str(report.longrepr.reprtraceback.extraline) - if hasattr(report, "wasxfail"): - self._add_simple("skipped", "xfail-marked test passes unexpectedly") - else: - assert report.longrepr is not None - reprcrash: Optional[ReprFileLocation] = getattr( - report.longrepr, "reprcrash", None - ) - if reprcrash is not None: - message = reprcrash.message - else: - message = str(report.longrepr) - message = bin_xml_escape(message) - self._add_simple("failure", message, str(report.longrepr)) - - def append_collect_error(self, report: TestReport) -> None: - # msg = str(report.longrepr.reprtraceback.extraline) - assert report.longrepr is not None - self._add_simple("error", "collection failure", str(report.longrepr)) - - def append_collect_skipped(self, report: TestReport) -> None: - self._add_simple("skipped", "collection skipped", str(report.longrepr)) - - def append_error(self, report: TestReport) -> None: - assert report.longrepr is not None - reprcrash: Optional[ReprFileLocation] = getattr( - report.longrepr, "reprcrash", None - ) - if reprcrash is not None: - reason = reprcrash.message - else: - reason = str(report.longrepr) - - if report.when == "teardown": - msg = f'failed on teardown with "{reason}"' - else: - msg = f'failed on setup with "{reason}"' - self._add_simple("error", bin_xml_escape(msg), str(report.longrepr)) - - def append_skipped(self, report: TestReport) -> None: - if hasattr(report, "wasxfail"): - xfailreason = report.wasxfail - if xfailreason.startswith("reason: "): - xfailreason = xfailreason[8:] - xfailreason = bin_xml_escape(xfailreason) - skipped = ET.Element("skipped", type="pytest.xfail", message=xfailreason) - self.append(skipped) - else: - assert isinstance(report.longrepr, tuple) - filename, lineno, skipreason = report.longrepr - if skipreason.startswith("Skipped: "): - skipreason = skipreason[9:] - details = f"{filename}:{lineno}: {skipreason}" - - skipped = ET.Element("skipped", type="pytest.skip", message=skipreason) - skipped.text = bin_xml_escape(details) - self.append(skipped) - self.write_captured_output(report) - - def finalize(self) -> None: - data = self.to_xml() - self.__dict__.clear() - # Type ignored because mypy doesn't like overriding a method. - # Also the return value doesn't match... - self.to_xml = lambda: data # type: ignore[assignment] - - -def _warn_incompatibility_with_xunit2( - request: FixtureRequest, fixture_name: str -) -> None: - """Emit a PytestWarning about the given fixture being incompatible with newer xunit revisions.""" - from _pytest.warning_types import PytestWarning - - xml = request.config.stash.get(xml_key, None) - if xml is not None and xml.family not in ("xunit1", "legacy"): - request.node.warn( - PytestWarning( - "{fixture_name} is incompatible with junit_family '{family}' (use 'legacy' or 'xunit1')".format( - fixture_name=fixture_name, family=xml.family - ) - ) - ) - - -@pytest.fixture -def record_property(request: FixtureRequest) -> Callable[[str, object], None]: - """Add extra properties to the calling test. - - User properties become part of the test report and are available to the - configured reporters, like JUnit XML. - - The fixture is callable with ``name, value``. The value is automatically - XML-encoded. - - Example:: - - def test_function(record_property): - record_property("example_key", 1) - """ - _warn_incompatibility_with_xunit2(request, "record_property") - - def append_property(name: str, value: object) -> None: - request.node.user_properties.append((name, value)) - - return append_property - - -@pytest.fixture -def record_xml_attribute(request: FixtureRequest) -> Callable[[str, object], None]: - """Add extra xml attributes to the tag for the calling test. - - The fixture is callable with ``name, value``. The value is - automatically XML-encoded. - """ - from _pytest.warning_types import PytestExperimentalApiWarning - - request.node.warn( - PytestExperimentalApiWarning("record_xml_attribute is an experimental feature") - ) - - _warn_incompatibility_with_xunit2(request, "record_xml_attribute") - - # Declare noop - def add_attr_noop(name: str, value: object) -> None: - pass - - attr_func = add_attr_noop - - xml = request.config.stash.get(xml_key, None) - if xml is not None: - node_reporter = xml.node_reporter(request.node.nodeid) - attr_func = node_reporter.add_attribute - - return attr_func - - -def _check_record_param_type(param: str, v: str) -> None: - """Used by record_testsuite_property to check that the given parameter name is of the proper - type.""" - __tracebackhide__ = True - if not isinstance(v, str): - msg = "{param} parameter needs to be a string, but {g} given" # type: ignore[unreachable] - raise TypeError(msg.format(param=param, g=type(v).__name__)) - - -@pytest.fixture(scope="session") -def record_testsuite_property(request: FixtureRequest) -> Callable[[str, object], None]: - """Record a new ```` tag as child of the root ````. - - This is suitable to writing global information regarding the entire test - suite, and is compatible with ``xunit2`` JUnit family. - - This is a ``session``-scoped fixture which is called with ``(name, value)``. Example: - - .. code-block:: python - - def test_foo(record_testsuite_property): - record_testsuite_property("ARCH", "PPC") - record_testsuite_property("STORAGE_TYPE", "CEPH") - - :param name: - The property name. - :param value: - The property value. Will be converted to a string. - - .. warning:: - - Currently this fixture **does not work** with the - `pytest-xdist `__ plugin. See - :issue:`7767` for details. - """ - - __tracebackhide__ = True - - def record_func(name: str, value: object) -> None: - """No-op function in case --junitxml was not passed in the command-line.""" - __tracebackhide__ = True - _check_record_param_type("name", name) - - xml = request.config.stash.get(xml_key, None) - if xml is not None: - record_func = xml.add_global_property # noqa - return record_func - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("terminal reporting") - group.addoption( - "--junitxml", - "--junit-xml", - action="store", - dest="xmlpath", - metavar="path", - type=functools.partial(filename_arg, optname="--junitxml"), - default=None, - help="Create junit-xml style report file at given path", - ) - group.addoption( - "--junitprefix", - "--junit-prefix", - action="store", - metavar="str", - default=None, - help="Prepend prefix to classnames in junit-xml output", - ) - parser.addini( - "junit_suite_name", "Test suite name for JUnit report", default="pytest" - ) - parser.addini( - "junit_logging", - "Write captured log messages to JUnit report: " - "one of no|log|system-out|system-err|out-err|all", - default="no", - ) - parser.addini( - "junit_log_passing_tests", - "Capture log information for passing tests to JUnit report: ", - type="bool", - default=True, - ) - parser.addini( - "junit_duration_report", - "Duration time to report: one of total|call", - default="total", - ) # choices=['total', 'call']) - parser.addini( - "junit_family", - "Emit XML for schema: one of legacy|xunit1|xunit2", - default="xunit2", - ) - - -def pytest_configure(config: Config) -> None: - xmlpath = config.option.xmlpath - # Prevent opening xmllog on worker nodes (xdist). - if xmlpath and not hasattr(config, "workerinput"): - junit_family = config.getini("junit_family") - config.stash[xml_key] = LogXML( - xmlpath, - config.option.junitprefix, - config.getini("junit_suite_name"), - config.getini("junit_logging"), - config.getini("junit_duration_report"), - junit_family, - config.getini("junit_log_passing_tests"), - ) - config.pluginmanager.register(config.stash[xml_key]) - - -def pytest_unconfigure(config: Config) -> None: - xml = config.stash.get(xml_key, None) - if xml: - del config.stash[xml_key] - config.pluginmanager.unregister(xml) - - -def mangle_test_address(address: str) -> List[str]: - path, possible_open_bracket, params = address.partition("[") - names = path.split("::") - # Convert file path to dotted path. - names[0] = names[0].replace(nodes.SEP, ".") - names[0] = re.sub(r"\.py$", "", names[0]) - # Put any params back. - names[-1] += possible_open_bracket + params - return names - - -class LogXML: - def __init__( - self, - logfile, - prefix: Optional[str], - suite_name: str = "pytest", - logging: str = "no", - report_duration: str = "total", - family="xunit1", - log_passing_tests: bool = True, - ) -> None: - logfile = os.path.expanduser(os.path.expandvars(logfile)) - self.logfile = os.path.normpath(os.path.abspath(logfile)) - self.prefix = prefix - self.suite_name = suite_name - self.logging = logging - self.log_passing_tests = log_passing_tests - self.report_duration = report_duration - self.family = family - self.stats: Dict[str, int] = dict.fromkeys( - ["error", "passed", "failure", "skipped"], 0 - ) - self.node_reporters: Dict[ - Tuple[Union[str, TestReport], object], _NodeReporter - ] = {} - self.node_reporters_ordered: List[_NodeReporter] = [] - self.global_properties: List[Tuple[str, str]] = [] - - # List of reports that failed on call but teardown is pending. - self.open_reports: List[TestReport] = [] - self.cnt_double_fail_tests = 0 - - # Replaces convenience family with real family. - if self.family == "legacy": - self.family = "xunit1" - - def finalize(self, report: TestReport) -> None: - nodeid = getattr(report, "nodeid", report) - # Local hack to handle xdist report order. - workernode = getattr(report, "node", None) - reporter = self.node_reporters.pop((nodeid, workernode)) - if reporter is not None: - reporter.finalize() - - def node_reporter(self, report: Union[TestReport, str]) -> _NodeReporter: - nodeid: Union[str, TestReport] = getattr(report, "nodeid", report) - # Local hack to handle xdist report order. - workernode = getattr(report, "node", None) - - key = nodeid, workernode - - if key in self.node_reporters: - # TODO: breaks for --dist=each - return self.node_reporters[key] - - reporter = _NodeReporter(nodeid, self) - - self.node_reporters[key] = reporter - self.node_reporters_ordered.append(reporter) - - return reporter - - def add_stats(self, key: str) -> None: - if key in self.stats: - self.stats[key] += 1 - - def _opentestcase(self, report: TestReport) -> _NodeReporter: - reporter = self.node_reporter(report) - reporter.record_testreport(report) - return reporter - - def pytest_runtest_logreport(self, report: TestReport) -> None: - """Handle a setup/call/teardown report, generating the appropriate - XML tags as necessary. - - Note: due to plugins like xdist, this hook may be called in interlaced - order with reports from other nodes. For example: - - Usual call order: - -> setup node1 - -> call node1 - -> teardown node1 - -> setup node2 - -> call node2 - -> teardown node2 - - Possible call order in xdist: - -> setup node1 - -> call node1 - -> setup node2 - -> call node2 - -> teardown node2 - -> teardown node1 - """ - close_report = None - if report.passed: - if report.when == "call": # ignore setup/teardown - reporter = self._opentestcase(report) - reporter.append_pass(report) - elif report.failed: - if report.when == "teardown": - # The following vars are needed when xdist plugin is used. - report_wid = getattr(report, "worker_id", None) - report_ii = getattr(report, "item_index", None) - close_report = next( - ( - rep - for rep in self.open_reports - if ( - rep.nodeid == report.nodeid - and getattr(rep, "item_index", None) == report_ii - and getattr(rep, "worker_id", None) == report_wid - ) - ), - None, - ) - if close_report: - # We need to open new testcase in case we have failure in - # call and error in teardown in order to follow junit - # schema. - self.finalize(close_report) - self.cnt_double_fail_tests += 1 - reporter = self._opentestcase(report) - if report.when == "call": - reporter.append_failure(report) - self.open_reports.append(report) - if not self.log_passing_tests: - reporter.write_captured_output(report) - else: - reporter.append_error(report) - elif report.skipped: - reporter = self._opentestcase(report) - reporter.append_skipped(report) - self.update_testcase_duration(report) - if report.when == "teardown": - reporter = self._opentestcase(report) - reporter.write_captured_output(report) - - for propname, propvalue in report.user_properties: - reporter.add_property(propname, str(propvalue)) - - self.finalize(report) - report_wid = getattr(report, "worker_id", None) - report_ii = getattr(report, "item_index", None) - close_report = next( - ( - rep - for rep in self.open_reports - if ( - rep.nodeid == report.nodeid - and getattr(rep, "item_index", None) == report_ii - and getattr(rep, "worker_id", None) == report_wid - ) - ), - None, - ) - if close_report: - self.open_reports.remove(close_report) - - def update_testcase_duration(self, report: TestReport) -> None: - """Accumulate total duration for nodeid from given report and update - the Junit.testcase with the new total if already created.""" - if self.report_duration == "total" or report.when == self.report_duration: - reporter = self.node_reporter(report) - reporter.duration += getattr(report, "duration", 0.0) - - def pytest_collectreport(self, report: TestReport) -> None: - if not report.passed: - reporter = self._opentestcase(report) - if report.failed: - reporter.append_collect_error(report) - else: - reporter.append_collect_skipped(report) - - def pytest_internalerror(self, excrepr: ExceptionRepr) -> None: - reporter = self.node_reporter("internal") - reporter.attrs.update(classname="pytest", name="internal") - reporter._add_simple("error", "internal error", str(excrepr)) - - def pytest_sessionstart(self) -> None: - self.suite_start_time = timing.time() - - def pytest_sessionfinish(self) -> None: - dirname = os.path.dirname(os.path.abspath(self.logfile)) - # exist_ok avoids filesystem race conditions between checking path existence and requesting creation - os.makedirs(dirname, exist_ok=True) - - with open(self.logfile, "w", encoding="utf-8") as logfile: - suite_stop_time = timing.time() - suite_time_delta = suite_stop_time - self.suite_start_time - - numtests = ( - self.stats["passed"] - + self.stats["failure"] - + self.stats["skipped"] - + self.stats["error"] - - self.cnt_double_fail_tests - ) - logfile.write('') - - suite_node = ET.Element( - "testsuite", - name=self.suite_name, - errors=str(self.stats["error"]), - failures=str(self.stats["failure"]), - skipped=str(self.stats["skipped"]), - tests=str(numtests), - time="%.3f" % suite_time_delta, - timestamp=datetime.fromtimestamp(self.suite_start_time).isoformat(), - hostname=platform.node(), - ) - global_properties = self._get_global_properties_node() - if global_properties is not None: - suite_node.append(global_properties) - for node_reporter in self.node_reporters_ordered: - suite_node.append(node_reporter.to_xml()) - testsuites = ET.Element("testsuites") - testsuites.append(suite_node) - logfile.write(ET.tostring(testsuites, encoding="unicode")) - - def pytest_terminal_summary(self, terminalreporter: TerminalReporter) -> None: - terminalreporter.write_sep("-", f"generated xml file: {self.logfile}") - - def add_global_property(self, name: str, value: object) -> None: - __tracebackhide__ = True - _check_record_param_type("name", name) - self.global_properties.append((name, bin_xml_escape(value))) - - def _get_global_properties_node(self) -> Optional[ET.Element]: - """Return a Junit node containing custom properties, if any.""" - if self.global_properties: - properties = ET.Element("properties") - for name, value in self.global_properties: - properties.append(ET.Element("property", name=name, value=value)) - return properties - return None diff --git a/venv/lib/python3.12/site-packages/_pytest/legacypath.py b/venv/lib/python3.12/site-packages/_pytest/legacypath.py deleted file mode 100644 index f71e7e9..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/legacypath.py +++ /dev/null @@ -1,479 +0,0 @@ -"""Add backward compatibility support for the legacy py path type.""" -import shlex -import subprocess -from pathlib import Path -from typing import List -from typing import Optional -from typing import TYPE_CHECKING -from typing import Union - -import attr -from iniconfig import SectionWrapper - -from _pytest.cacheprovider import Cache -from _pytest.compat import final -from _pytest.compat import LEGACY_PATH -from _pytest.compat import legacy_path -from _pytest.config import Config -from _pytest.config import hookimpl -from _pytest.config import PytestPluginManager -from _pytest.deprecated import check_ispytest -from _pytest.fixtures import fixture -from _pytest.fixtures import FixtureRequest -from _pytest.main import Session -from _pytest.monkeypatch import MonkeyPatch -from _pytest.nodes import Collector -from _pytest.nodes import Item -from _pytest.nodes import Node -from _pytest.pytester import HookRecorder -from _pytest.pytester import Pytester -from _pytest.pytester import RunResult -from _pytest.terminal import TerminalReporter -from _pytest.tmpdir import TempPathFactory - -if TYPE_CHECKING: - from typing_extensions import Final - - import pexpect - - -@final -class Testdir: - """ - Similar to :class:`Pytester`, but this class works with legacy legacy_path objects instead. - - All methods just forward to an internal :class:`Pytester` instance, converting results - to `legacy_path` objects as necessary. - """ - - __test__ = False - - CLOSE_STDIN: "Final" = Pytester.CLOSE_STDIN - TimeoutExpired: "Final" = Pytester.TimeoutExpired - - def __init__(self, pytester: Pytester, *, _ispytest: bool = False) -> None: - check_ispytest(_ispytest) - self._pytester = pytester - - @property - def tmpdir(self) -> LEGACY_PATH: - """Temporary directory where tests are executed.""" - return legacy_path(self._pytester.path) - - @property - def test_tmproot(self) -> LEGACY_PATH: - return legacy_path(self._pytester._test_tmproot) - - @property - def request(self): - return self._pytester._request - - @property - def plugins(self): - return self._pytester.plugins - - @plugins.setter - def plugins(self, plugins): - self._pytester.plugins = plugins - - @property - def monkeypatch(self) -> MonkeyPatch: - return self._pytester._monkeypatch - - def make_hook_recorder(self, pluginmanager) -> HookRecorder: - """See :meth:`Pytester.make_hook_recorder`.""" - return self._pytester.make_hook_recorder(pluginmanager) - - def chdir(self) -> None: - """See :meth:`Pytester.chdir`.""" - return self._pytester.chdir() - - def finalize(self) -> None: - """See :meth:`Pytester._finalize`.""" - return self._pytester._finalize() - - def makefile(self, ext, *args, **kwargs) -> LEGACY_PATH: - """See :meth:`Pytester.makefile`.""" - if ext and not ext.startswith("."): - # pytester.makefile is going to throw a ValueError in a way that - # testdir.makefile did not, because - # pathlib.Path is stricter suffixes than py.path - # This ext arguments is likely user error, but since testdir has - # allowed this, we will prepend "." as a workaround to avoid breaking - # testdir usage that worked before - ext = "." + ext - return legacy_path(self._pytester.makefile(ext, *args, **kwargs)) - - def makeconftest(self, source) -> LEGACY_PATH: - """See :meth:`Pytester.makeconftest`.""" - return legacy_path(self._pytester.makeconftest(source)) - - def makeini(self, source) -> LEGACY_PATH: - """See :meth:`Pytester.makeini`.""" - return legacy_path(self._pytester.makeini(source)) - - def getinicfg(self, source: str) -> SectionWrapper: - """See :meth:`Pytester.getinicfg`.""" - return self._pytester.getinicfg(source) - - def makepyprojecttoml(self, source) -> LEGACY_PATH: - """See :meth:`Pytester.makepyprojecttoml`.""" - return legacy_path(self._pytester.makepyprojecttoml(source)) - - def makepyfile(self, *args, **kwargs) -> LEGACY_PATH: - """See :meth:`Pytester.makepyfile`.""" - return legacy_path(self._pytester.makepyfile(*args, **kwargs)) - - def maketxtfile(self, *args, **kwargs) -> LEGACY_PATH: - """See :meth:`Pytester.maketxtfile`.""" - return legacy_path(self._pytester.maketxtfile(*args, **kwargs)) - - def syspathinsert(self, path=None) -> None: - """See :meth:`Pytester.syspathinsert`.""" - return self._pytester.syspathinsert(path) - - def mkdir(self, name) -> LEGACY_PATH: - """See :meth:`Pytester.mkdir`.""" - return legacy_path(self._pytester.mkdir(name)) - - def mkpydir(self, name) -> LEGACY_PATH: - """See :meth:`Pytester.mkpydir`.""" - return legacy_path(self._pytester.mkpydir(name)) - - def copy_example(self, name=None) -> LEGACY_PATH: - """See :meth:`Pytester.copy_example`.""" - return legacy_path(self._pytester.copy_example(name)) - - def getnode(self, config: Config, arg) -> Optional[Union[Item, Collector]]: - """See :meth:`Pytester.getnode`.""" - return self._pytester.getnode(config, arg) - - def getpathnode(self, path): - """See :meth:`Pytester.getpathnode`.""" - return self._pytester.getpathnode(path) - - def genitems(self, colitems: List[Union[Item, Collector]]) -> List[Item]: - """See :meth:`Pytester.genitems`.""" - return self._pytester.genitems(colitems) - - def runitem(self, source): - """See :meth:`Pytester.runitem`.""" - return self._pytester.runitem(source) - - def inline_runsource(self, source, *cmdlineargs): - """See :meth:`Pytester.inline_runsource`.""" - return self._pytester.inline_runsource(source, *cmdlineargs) - - def inline_genitems(self, *args): - """See :meth:`Pytester.inline_genitems`.""" - return self._pytester.inline_genitems(*args) - - def inline_run(self, *args, plugins=(), no_reraise_ctrlc: bool = False): - """See :meth:`Pytester.inline_run`.""" - return self._pytester.inline_run( - *args, plugins=plugins, no_reraise_ctrlc=no_reraise_ctrlc - ) - - def runpytest_inprocess(self, *args, **kwargs) -> RunResult: - """See :meth:`Pytester.runpytest_inprocess`.""" - return self._pytester.runpytest_inprocess(*args, **kwargs) - - def runpytest(self, *args, **kwargs) -> RunResult: - """See :meth:`Pytester.runpytest`.""" - return self._pytester.runpytest(*args, **kwargs) - - def parseconfig(self, *args) -> Config: - """See :meth:`Pytester.parseconfig`.""" - return self._pytester.parseconfig(*args) - - def parseconfigure(self, *args) -> Config: - """See :meth:`Pytester.parseconfigure`.""" - return self._pytester.parseconfigure(*args) - - def getitem(self, source, funcname="test_func"): - """See :meth:`Pytester.getitem`.""" - return self._pytester.getitem(source, funcname) - - def getitems(self, source): - """See :meth:`Pytester.getitems`.""" - return self._pytester.getitems(source) - - def getmodulecol(self, source, configargs=(), withinit=False): - """See :meth:`Pytester.getmodulecol`.""" - return self._pytester.getmodulecol( - source, configargs=configargs, withinit=withinit - ) - - def collect_by_name( - self, modcol: Collector, name: str - ) -> Optional[Union[Item, Collector]]: - """See :meth:`Pytester.collect_by_name`.""" - return self._pytester.collect_by_name(modcol, name) - - def popen( - self, - cmdargs, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - stdin=CLOSE_STDIN, - **kw, - ): - """See :meth:`Pytester.popen`.""" - return self._pytester.popen(cmdargs, stdout, stderr, stdin, **kw) - - def run(self, *cmdargs, timeout=None, stdin=CLOSE_STDIN) -> RunResult: - """See :meth:`Pytester.run`.""" - return self._pytester.run(*cmdargs, timeout=timeout, stdin=stdin) - - def runpython(self, script) -> RunResult: - """See :meth:`Pytester.runpython`.""" - return self._pytester.runpython(script) - - def runpython_c(self, command): - """See :meth:`Pytester.runpython_c`.""" - return self._pytester.runpython_c(command) - - def runpytest_subprocess(self, *args, timeout=None) -> RunResult: - """See :meth:`Pytester.runpytest_subprocess`.""" - return self._pytester.runpytest_subprocess(*args, timeout=timeout) - - def spawn_pytest( - self, string: str, expect_timeout: float = 10.0 - ) -> "pexpect.spawn": - """See :meth:`Pytester.spawn_pytest`.""" - return self._pytester.spawn_pytest(string, expect_timeout=expect_timeout) - - def spawn(self, cmd: str, expect_timeout: float = 10.0) -> "pexpect.spawn": - """See :meth:`Pytester.spawn`.""" - return self._pytester.spawn(cmd, expect_timeout=expect_timeout) - - def __repr__(self) -> str: - return f"" - - def __str__(self) -> str: - return str(self.tmpdir) - - -class LegacyTestdirPlugin: - @staticmethod - @fixture - def testdir(pytester: Pytester) -> Testdir: - """ - Identical to :fixture:`pytester`, and provides an instance whose methods return - legacy ``LEGACY_PATH`` objects instead when applicable. - - New code should avoid using :fixture:`testdir` in favor of :fixture:`pytester`. - """ - return Testdir(pytester, _ispytest=True) - - -@final -@attr.s(init=False, auto_attribs=True) -class TempdirFactory: - """Backward compatibility wrapper that implements :class:`py.path.local` - for :class:`TempPathFactory`. - - .. note:: - These days, it is preferred to use ``tmp_path_factory``. - - :ref:`About the tmpdir and tmpdir_factory fixtures`. - - """ - - _tmppath_factory: TempPathFactory - - def __init__( - self, tmppath_factory: TempPathFactory, *, _ispytest: bool = False - ) -> None: - check_ispytest(_ispytest) - self._tmppath_factory = tmppath_factory - - def mktemp(self, basename: str, numbered: bool = True) -> LEGACY_PATH: - """Same as :meth:`TempPathFactory.mktemp`, but returns a :class:`py.path.local` object.""" - return legacy_path(self._tmppath_factory.mktemp(basename, numbered).resolve()) - - def getbasetemp(self) -> LEGACY_PATH: - """Same as :meth:`TempPathFactory.getbasetemp`, but returns a :class:`py.path.local` object.""" - return legacy_path(self._tmppath_factory.getbasetemp().resolve()) - - -class LegacyTmpdirPlugin: - @staticmethod - @fixture(scope="session") - def tmpdir_factory(request: FixtureRequest) -> TempdirFactory: - """Return a :class:`pytest.TempdirFactory` instance for the test session.""" - # Set dynamically by pytest_configure(). - return request.config._tmpdirhandler # type: ignore - - @staticmethod - @fixture - def tmpdir(tmp_path: Path) -> LEGACY_PATH: - """Return a temporary directory path object which is unique to each test - function invocation, created as a sub directory of the base temporary - directory. - - By default, a new base temporary directory is created each test session, - and old bases are removed after 3 sessions, to aid in debugging. If - ``--basetemp`` is used then it is cleared each session. See :ref:`base - temporary directory`. - - The returned object is a `legacy_path`_ object. - - .. note:: - These days, it is preferred to use ``tmp_path``. - - :ref:`About the tmpdir and tmpdir_factory fixtures`. - - .. _legacy_path: https://py.readthedocs.io/en/latest/path.html - """ - return legacy_path(tmp_path) - - -def Cache_makedir(self: Cache, name: str) -> LEGACY_PATH: - """Return a directory path object with the given name. - - Same as :func:`mkdir`, but returns a legacy py path instance. - """ - return legacy_path(self.mkdir(name)) - - -def FixtureRequest_fspath(self: FixtureRequest) -> LEGACY_PATH: - """(deprecated) The file system path of the test module which collected this test.""" - return legacy_path(self.path) - - -def TerminalReporter_startdir(self: TerminalReporter) -> LEGACY_PATH: - """The directory from which pytest was invoked. - - Prefer to use ``startpath`` which is a :class:`pathlib.Path`. - - :type: LEGACY_PATH - """ - return legacy_path(self.startpath) - - -def Config_invocation_dir(self: Config) -> LEGACY_PATH: - """The directory from which pytest was invoked. - - Prefer to use :attr:`invocation_params.dir `, - which is a :class:`pathlib.Path`. - - :type: LEGACY_PATH - """ - return legacy_path(str(self.invocation_params.dir)) - - -def Config_rootdir(self: Config) -> LEGACY_PATH: - """The path to the :ref:`rootdir `. - - Prefer to use :attr:`rootpath`, which is a :class:`pathlib.Path`. - - :type: LEGACY_PATH - """ - return legacy_path(str(self.rootpath)) - - -def Config_inifile(self: Config) -> Optional[LEGACY_PATH]: - """The path to the :ref:`configfile `. - - Prefer to use :attr:`inipath`, which is a :class:`pathlib.Path`. - - :type: Optional[LEGACY_PATH] - """ - return legacy_path(str(self.inipath)) if self.inipath else None - - -def Session_stardir(self: Session) -> LEGACY_PATH: - """The path from which pytest was invoked. - - Prefer to use ``startpath`` which is a :class:`pathlib.Path`. - - :type: LEGACY_PATH - """ - return legacy_path(self.startpath) - - -def Config__getini_unknown_type( - self, name: str, type: str, value: Union[str, List[str]] -): - if type == "pathlist": - # TODO: This assert is probably not valid in all cases. - assert self.inipath is not None - dp = self.inipath.parent - input_values = shlex.split(value) if isinstance(value, str) else value - return [legacy_path(str(dp / x)) for x in input_values] - else: - raise ValueError(f"unknown configuration type: {type}", value) - - -def Node_fspath(self: Node) -> LEGACY_PATH: - """(deprecated) returns a legacy_path copy of self.path""" - return legacy_path(self.path) - - -def Node_fspath_set(self: Node, value: LEGACY_PATH) -> None: - self.path = Path(value) - - -@hookimpl(tryfirst=True) -def pytest_load_initial_conftests(early_config: Config) -> None: - """Monkeypatch legacy path attributes in several classes, as early as possible.""" - mp = MonkeyPatch() - early_config.add_cleanup(mp.undo) - - # Add Cache.makedir(). - mp.setattr(Cache, "makedir", Cache_makedir, raising=False) - - # Add FixtureRequest.fspath property. - mp.setattr(FixtureRequest, "fspath", property(FixtureRequest_fspath), raising=False) - - # Add TerminalReporter.startdir property. - mp.setattr( - TerminalReporter, "startdir", property(TerminalReporter_startdir), raising=False - ) - - # Add Config.{invocation_dir,rootdir,inifile} properties. - mp.setattr(Config, "invocation_dir", property(Config_invocation_dir), raising=False) - mp.setattr(Config, "rootdir", property(Config_rootdir), raising=False) - mp.setattr(Config, "inifile", property(Config_inifile), raising=False) - - # Add Session.startdir property. - mp.setattr(Session, "startdir", property(Session_stardir), raising=False) - - # Add pathlist configuration type. - mp.setattr(Config, "_getini_unknown_type", Config__getini_unknown_type) - - # Add Node.fspath property. - mp.setattr(Node, "fspath", property(Node_fspath, Node_fspath_set), raising=False) - - -@hookimpl -def pytest_configure(config: Config) -> None: - """Installs the LegacyTmpdirPlugin if the ``tmpdir`` plugin is also installed.""" - if config.pluginmanager.has_plugin("tmpdir"): - mp = MonkeyPatch() - config.add_cleanup(mp.undo) - # Create TmpdirFactory and attach it to the config object. - # - # This is to comply with existing plugins which expect the handler to be - # available at pytest_configure time, but ideally should be moved entirely - # to the tmpdir_factory session fixture. - try: - tmp_path_factory = config._tmp_path_factory # type: ignore[attr-defined] - except AttributeError: - # tmpdir plugin is blocked. - pass - else: - _tmpdirhandler = TempdirFactory(tmp_path_factory, _ispytest=True) - mp.setattr(config, "_tmpdirhandler", _tmpdirhandler, raising=False) - - config.pluginmanager.register(LegacyTmpdirPlugin, "legacypath-tmpdir") - - -@hookimpl -def pytest_plugin_registered(plugin: object, manager: PytestPluginManager) -> None: - # pytester is not loaded by default and is commonly loaded from a conftest, - # so checking for it in `pytest_configure` is not enough. - is_pytester = plugin is manager.get_plugin("pytester") - if is_pytester and not manager.is_registered(LegacyTestdirPlugin): - manager.register(LegacyTestdirPlugin, "legacypath-pytester") diff --git a/venv/lib/python3.12/site-packages/_pytest/logging.py b/venv/lib/python3.12/site-packages/_pytest/logging.py deleted file mode 100644 index f909139..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/logging.py +++ /dev/null @@ -1,830 +0,0 @@ -"""Access and control log capturing.""" -import io -import logging -import os -import re -from contextlib import contextmanager -from contextlib import nullcontext -from io import StringIO -from pathlib import Path -from typing import AbstractSet -from typing import Dict -from typing import Generator -from typing import List -from typing import Mapping -from typing import Optional -from typing import Tuple -from typing import TYPE_CHECKING -from typing import TypeVar -from typing import Union - -from _pytest import nodes -from _pytest._io import TerminalWriter -from _pytest.capture import CaptureManager -from _pytest.compat import final -from _pytest.config import _strtobool -from _pytest.config import Config -from _pytest.config import create_terminal_writer -from _pytest.config import hookimpl -from _pytest.config import UsageError -from _pytest.config.argparsing import Parser -from _pytest.deprecated import check_ispytest -from _pytest.fixtures import fixture -from _pytest.fixtures import FixtureRequest -from _pytest.main import Session -from _pytest.stash import StashKey -from _pytest.terminal import TerminalReporter - -if TYPE_CHECKING: - logging_StreamHandler = logging.StreamHandler[StringIO] - - from typing_extensions import Literal -else: - logging_StreamHandler = logging.StreamHandler - -DEFAULT_LOG_FORMAT = "%(levelname)-8s %(name)s:%(filename)s:%(lineno)d %(message)s" -DEFAULT_LOG_DATE_FORMAT = "%H:%M:%S" -_ANSI_ESCAPE_SEQ = re.compile(r"\x1b\[[\d;]+m") -caplog_handler_key = StashKey["LogCaptureHandler"]() -caplog_records_key = StashKey[Dict[str, List[logging.LogRecord]]]() - - -def _remove_ansi_escape_sequences(text: str) -> str: - return _ANSI_ESCAPE_SEQ.sub("", text) - - -class ColoredLevelFormatter(logging.Formatter): - """A logging formatter which colorizes the %(levelname)..s part of the - log format passed to __init__.""" - - LOGLEVEL_COLOROPTS: Mapping[int, AbstractSet[str]] = { - logging.CRITICAL: {"red"}, - logging.ERROR: {"red", "bold"}, - logging.WARNING: {"yellow"}, - logging.WARN: {"yellow"}, - logging.INFO: {"green"}, - logging.DEBUG: {"purple"}, - logging.NOTSET: set(), - } - LEVELNAME_FMT_REGEX = re.compile(r"%\(levelname\)([+-.]?\d*(?:\.\d+)?s)") - - def __init__(self, terminalwriter: TerminalWriter, *args, **kwargs) -> None: - super().__init__(*args, **kwargs) - self._terminalwriter = terminalwriter - self._original_fmt = self._style._fmt - self._level_to_fmt_mapping: Dict[int, str] = {} - - for level, color_opts in self.LOGLEVEL_COLOROPTS.items(): - self.add_color_level(level, *color_opts) - - def add_color_level(self, level: int, *color_opts: str) -> None: - """Add or update color opts for a log level. - - :param level: - Log level to apply a style to, e.g. ``logging.INFO``. - :param color_opts: - ANSI escape sequence color options. Capitalized colors indicates - background color, i.e. ``'green', 'Yellow', 'bold'`` will give bold - green text on yellow background. - - .. warning:: - This is an experimental API. - """ - - assert self._fmt is not None - levelname_fmt_match = self.LEVELNAME_FMT_REGEX.search(self._fmt) - if not levelname_fmt_match: - return - levelname_fmt = levelname_fmt_match.group() - - formatted_levelname = levelname_fmt % {"levelname": logging.getLevelName(level)} - - # add ANSI escape sequences around the formatted levelname - color_kwargs = {name: True for name in color_opts} - colorized_formatted_levelname = self._terminalwriter.markup( - formatted_levelname, **color_kwargs - ) - self._level_to_fmt_mapping[level] = self.LEVELNAME_FMT_REGEX.sub( - colorized_formatted_levelname, self._fmt - ) - - def format(self, record: logging.LogRecord) -> str: - fmt = self._level_to_fmt_mapping.get(record.levelno, self._original_fmt) - self._style._fmt = fmt - return super().format(record) - - -class PercentStyleMultiline(logging.PercentStyle): - """A logging style with special support for multiline messages. - - If the message of a record consists of multiple lines, this style - formats the message as if each line were logged separately. - """ - - def __init__(self, fmt: str, auto_indent: Union[int, str, bool, None]) -> None: - super().__init__(fmt) - self._auto_indent = self._get_auto_indent(auto_indent) - - @staticmethod - def _get_auto_indent(auto_indent_option: Union[int, str, bool, None]) -> int: - """Determine the current auto indentation setting. - - Specify auto indent behavior (on/off/fixed) by passing in - extra={"auto_indent": [value]} to the call to logging.log() or - using a --log-auto-indent [value] command line or the - log_auto_indent [value] config option. - - Default behavior is auto-indent off. - - Using the string "True" or "on" or the boolean True as the value - turns auto indent on, using the string "False" or "off" or the - boolean False or the int 0 turns it off, and specifying a - positive integer fixes the indentation position to the value - specified. - - Any other values for the option are invalid, and will silently be - converted to the default. - - :param None|bool|int|str auto_indent_option: - User specified option for indentation from command line, config - or extra kwarg. Accepts int, bool or str. str option accepts the - same range of values as boolean config options, as well as - positive integers represented in str form. - - :returns: - Indentation value, which can be - -1 (automatically determine indentation) or - 0 (auto-indent turned off) or - >0 (explicitly set indentation position). - """ - - if auto_indent_option is None: - return 0 - elif isinstance(auto_indent_option, bool): - if auto_indent_option: - return -1 - else: - return 0 - elif isinstance(auto_indent_option, int): - return int(auto_indent_option) - elif isinstance(auto_indent_option, str): - try: - return int(auto_indent_option) - except ValueError: - pass - try: - if _strtobool(auto_indent_option): - return -1 - except ValueError: - return 0 - - return 0 - - def format(self, record: logging.LogRecord) -> str: - if "\n" in record.message: - if hasattr(record, "auto_indent"): - # Passed in from the "extra={}" kwarg on the call to logging.log(). - auto_indent = self._get_auto_indent(record.auto_indent) # type: ignore[attr-defined] - else: - auto_indent = self._auto_indent - - if auto_indent: - lines = record.message.splitlines() - formatted = self._fmt % {**record.__dict__, "message": lines[0]} - - if auto_indent < 0: - indentation = _remove_ansi_escape_sequences(formatted).find( - lines[0] - ) - else: - # Optimizes logging by allowing a fixed indentation. - indentation = auto_indent - lines[0] = formatted - return ("\n" + " " * indentation).join(lines) - return self._fmt % record.__dict__ - - -def get_option_ini(config: Config, *names: str): - for name in names: - ret = config.getoption(name) # 'default' arg won't work as expected - if ret is None: - ret = config.getini(name) - if ret: - return ret - - -def pytest_addoption(parser: Parser) -> None: - """Add options to control log capturing.""" - group = parser.getgroup("logging") - - def add_option_ini(option, dest, default=None, type=None, **kwargs): - parser.addini( - dest, default=default, type=type, help="Default value for " + option - ) - group.addoption(option, dest=dest, **kwargs) - - add_option_ini( - "--log-level", - dest="log_level", - default=None, - metavar="LEVEL", - help=( - "Level of messages to catch/display." - " Not set by default, so it depends on the root/parent log handler's" - ' effective level, where it is "WARNING" by default.' - ), - ) - add_option_ini( - "--log-format", - dest="log_format", - default=DEFAULT_LOG_FORMAT, - help="Log format used by the logging module", - ) - add_option_ini( - "--log-date-format", - dest="log_date_format", - default=DEFAULT_LOG_DATE_FORMAT, - help="Log date format used by the logging module", - ) - parser.addini( - "log_cli", - default=False, - type="bool", - help='Enable log display during test run (also known as "live logging")', - ) - add_option_ini( - "--log-cli-level", dest="log_cli_level", default=None, help="CLI logging level" - ) - add_option_ini( - "--log-cli-format", - dest="log_cli_format", - default=None, - help="Log format used by the logging module", - ) - add_option_ini( - "--log-cli-date-format", - dest="log_cli_date_format", - default=None, - help="Log date format used by the logging module", - ) - add_option_ini( - "--log-file", - dest="log_file", - default=None, - help="Path to a file when logging will be written to", - ) - add_option_ini( - "--log-file-level", - dest="log_file_level", - default=None, - help="Log file logging level", - ) - add_option_ini( - "--log-file-format", - dest="log_file_format", - default=DEFAULT_LOG_FORMAT, - help="Log format used by the logging module", - ) - add_option_ini( - "--log-file-date-format", - dest="log_file_date_format", - default=DEFAULT_LOG_DATE_FORMAT, - help="Log date format used by the logging module", - ) - add_option_ini( - "--log-auto-indent", - dest="log_auto_indent", - default=None, - help="Auto-indent multiline messages passed to the logging module. Accepts true|on, false|off or an integer.", - ) - - -_HandlerType = TypeVar("_HandlerType", bound=logging.Handler) - - -# Not using @contextmanager for performance reasons. -class catching_logs: - """Context manager that prepares the whole logging machinery properly.""" - - __slots__ = ("handler", "level", "orig_level") - - def __init__(self, handler: _HandlerType, level: Optional[int] = None) -> None: - self.handler = handler - self.level = level - - def __enter__(self): - root_logger = logging.getLogger() - if self.level is not None: - self.handler.setLevel(self.level) - root_logger.addHandler(self.handler) - if self.level is not None: - self.orig_level = root_logger.level - root_logger.setLevel(min(self.orig_level, self.level)) - return self.handler - - def __exit__(self, type, value, traceback): - root_logger = logging.getLogger() - if self.level is not None: - root_logger.setLevel(self.orig_level) - root_logger.removeHandler(self.handler) - - -class LogCaptureHandler(logging_StreamHandler): - """A logging handler that stores log records and the log text.""" - - def __init__(self) -> None: - """Create a new log handler.""" - super().__init__(StringIO()) - self.records: List[logging.LogRecord] = [] - - def emit(self, record: logging.LogRecord) -> None: - """Keep the log records in a list in addition to the log text.""" - self.records.append(record) - super().emit(record) - - def reset(self) -> None: - self.records = [] - self.stream = StringIO() - - def clear(self) -> None: - self.records.clear() - self.stream = StringIO() - - def handleError(self, record: logging.LogRecord) -> None: - if logging.raiseExceptions: - # Fail the test if the log message is bad (emit failed). - # The default behavior of logging is to print "Logging error" - # to stderr with the call stack and some extra details. - # pytest wants to make such mistakes visible during testing. - raise - - -@final -class LogCaptureFixture: - """Provides access and control of log capturing.""" - - def __init__(self, item: nodes.Node, *, _ispytest: bool = False) -> None: - check_ispytest(_ispytest) - self._item = item - self._initial_handler_level: Optional[int] = None - # Dict of log name -> log level. - self._initial_logger_levels: Dict[Optional[str], int] = {} - - def _finalize(self) -> None: - """Finalize the fixture. - - This restores the log levels changed by :meth:`set_level`. - """ - # Restore log levels. - if self._initial_handler_level is not None: - self.handler.setLevel(self._initial_handler_level) - for logger_name, level in self._initial_logger_levels.items(): - logger = logging.getLogger(logger_name) - logger.setLevel(level) - - @property - def handler(self) -> LogCaptureHandler: - """Get the logging handler used by the fixture.""" - return self._item.stash[caplog_handler_key] - - def get_records( - self, when: "Literal['setup', 'call', 'teardown']" - ) -> List[logging.LogRecord]: - """Get the logging records for one of the possible test phases. - - :param when: - Which test phase to obtain the records from. - Valid values are: "setup", "call" and "teardown". - - :returns: The list of captured records at the given stage. - - .. versionadded:: 3.4 - """ - return self._item.stash[caplog_records_key].get(when, []) - - @property - def text(self) -> str: - """The formatted log text.""" - return _remove_ansi_escape_sequences(self.handler.stream.getvalue()) - - @property - def records(self) -> List[logging.LogRecord]: - """The list of log records.""" - return self.handler.records - - @property - def record_tuples(self) -> List[Tuple[str, int, str]]: - """A list of a stripped down version of log records intended - for use in assertion comparison. - - The format of the tuple is: - - (logger_name, log_level, message) - """ - return [(r.name, r.levelno, r.getMessage()) for r in self.records] - - @property - def messages(self) -> List[str]: - """A list of format-interpolated log messages. - - Unlike 'records', which contains the format string and parameters for - interpolation, log messages in this list are all interpolated. - - Unlike 'text', which contains the output from the handler, log - messages in this list are unadorned with levels, timestamps, etc, - making exact comparisons more reliable. - - Note that traceback or stack info (from :func:`logging.exception` or - the `exc_info` or `stack_info` arguments to the logging functions) is - not included, as this is added by the formatter in the handler. - - .. versionadded:: 3.7 - """ - return [r.getMessage() for r in self.records] - - def clear(self) -> None: - """Reset the list of log records and the captured log text.""" - self.handler.clear() - - def set_level(self, level: Union[int, str], logger: Optional[str] = None) -> None: - """Set the level of a logger for the duration of a test. - - .. versionchanged:: 3.4 - The levels of the loggers changed by this function will be - restored to their initial values at the end of the test. - - :param level: The level. - :param logger: The logger to update. If not given, the root logger. - """ - logger_obj = logging.getLogger(logger) - # Save the original log-level to restore it during teardown. - self._initial_logger_levels.setdefault(logger, logger_obj.level) - logger_obj.setLevel(level) - if self._initial_handler_level is None: - self._initial_handler_level = self.handler.level - self.handler.setLevel(level) - - @contextmanager - def at_level( - self, level: Union[int, str], logger: Optional[str] = None - ) -> Generator[None, None, None]: - """Context manager that sets the level for capturing of logs. After - the end of the 'with' statement the level is restored to its original - value. - - :param level: The level. - :param logger: The logger to update. If not given, the root logger. - """ - logger_obj = logging.getLogger(logger) - orig_level = logger_obj.level - logger_obj.setLevel(level) - handler_orig_level = self.handler.level - self.handler.setLevel(level) - try: - yield - finally: - logger_obj.setLevel(orig_level) - self.handler.setLevel(handler_orig_level) - - -@fixture -def caplog(request: FixtureRequest) -> Generator[LogCaptureFixture, None, None]: - """Access and control log capturing. - - Captured logs are available through the following properties/methods:: - - * caplog.messages -> list of format-interpolated log messages - * caplog.text -> string containing formatted log output - * caplog.records -> list of logging.LogRecord instances - * caplog.record_tuples -> list of (logger_name, level, message) tuples - * caplog.clear() -> clear captured records and formatted log output string - """ - result = LogCaptureFixture(request.node, _ispytest=True) - yield result - result._finalize() - - -def get_log_level_for_setting(config: Config, *setting_names: str) -> Optional[int]: - for setting_name in setting_names: - log_level = config.getoption(setting_name) - if log_level is None: - log_level = config.getini(setting_name) - if log_level: - break - else: - return None - - if isinstance(log_level, str): - log_level = log_level.upper() - try: - return int(getattr(logging, log_level, log_level)) - except ValueError as e: - # Python logging does not recognise this as a logging level - raise UsageError( - "'{}' is not recognized as a logging level name for " - "'{}'. Please consider passing the " - "logging level num instead.".format(log_level, setting_name) - ) from e - - -# run after terminalreporter/capturemanager are configured -@hookimpl(trylast=True) -def pytest_configure(config: Config) -> None: - config.pluginmanager.register(LoggingPlugin(config), "logging-plugin") - - -class LoggingPlugin: - """Attaches to the logging module and captures log messages for each test.""" - - def __init__(self, config: Config) -> None: - """Create a new plugin to capture log messages. - - The formatter can be safely shared across all handlers so - create a single one for the entire test session here. - """ - self._config = config - - # Report logging. - self.formatter = self._create_formatter( - get_option_ini(config, "log_format"), - get_option_ini(config, "log_date_format"), - get_option_ini(config, "log_auto_indent"), - ) - self.log_level = get_log_level_for_setting(config, "log_level") - self.caplog_handler = LogCaptureHandler() - self.caplog_handler.setFormatter(self.formatter) - self.report_handler = LogCaptureHandler() - self.report_handler.setFormatter(self.formatter) - - # File logging. - self.log_file_level = get_log_level_for_setting(config, "log_file_level") - log_file = get_option_ini(config, "log_file") or os.devnull - if log_file != os.devnull: - directory = os.path.dirname(os.path.abspath(log_file)) - if not os.path.isdir(directory): - os.makedirs(directory) - - self.log_file_handler = _FileHandler(log_file, mode="w", encoding="UTF-8") - log_file_format = get_option_ini(config, "log_file_format", "log_format") - log_file_date_format = get_option_ini( - config, "log_file_date_format", "log_date_format" - ) - - log_file_formatter = logging.Formatter( - log_file_format, datefmt=log_file_date_format - ) - self.log_file_handler.setFormatter(log_file_formatter) - - # CLI/live logging. - self.log_cli_level = get_log_level_for_setting( - config, "log_cli_level", "log_level" - ) - if self._log_cli_enabled(): - terminal_reporter = config.pluginmanager.get_plugin("terminalreporter") - capture_manager = config.pluginmanager.get_plugin("capturemanager") - # if capturemanager plugin is disabled, live logging still works. - self.log_cli_handler: Union[ - _LiveLoggingStreamHandler, _LiveLoggingNullHandler - ] = _LiveLoggingStreamHandler(terminal_reporter, capture_manager) - else: - self.log_cli_handler = _LiveLoggingNullHandler() - log_cli_formatter = self._create_formatter( - get_option_ini(config, "log_cli_format", "log_format"), - get_option_ini(config, "log_cli_date_format", "log_date_format"), - get_option_ini(config, "log_auto_indent"), - ) - self.log_cli_handler.setFormatter(log_cli_formatter) - - def _create_formatter(self, log_format, log_date_format, auto_indent): - # Color option doesn't exist if terminal plugin is disabled. - color = getattr(self._config.option, "color", "no") - if color != "no" and ColoredLevelFormatter.LEVELNAME_FMT_REGEX.search( - log_format - ): - formatter: logging.Formatter = ColoredLevelFormatter( - create_terminal_writer(self._config), log_format, log_date_format - ) - else: - formatter = logging.Formatter(log_format, log_date_format) - - formatter._style = PercentStyleMultiline( - formatter._style._fmt, auto_indent=auto_indent - ) - - return formatter - - def set_log_path(self, fname: str) -> None: - """Set the filename parameter for Logging.FileHandler(). - - Creates parent directory if it does not exist. - - .. warning:: - This is an experimental API. - """ - fpath = Path(fname) - - if not fpath.is_absolute(): - fpath = self._config.rootpath / fpath - - if not fpath.parent.exists(): - fpath.parent.mkdir(exist_ok=True, parents=True) - - # https://github.com/python/mypy/issues/11193 - stream: io.TextIOWrapper = fpath.open(mode="w", encoding="UTF-8") # type: ignore[assignment] - old_stream = self.log_file_handler.setStream(stream) - if old_stream: - old_stream.close() - - def _log_cli_enabled(self): - """Return whether live logging is enabled.""" - enabled = self._config.getoption( - "--log-cli-level" - ) is not None or self._config.getini("log_cli") - if not enabled: - return False - - terminal_reporter = self._config.pluginmanager.get_plugin("terminalreporter") - if terminal_reporter is None: - # terminal reporter is disabled e.g. by pytest-xdist. - return False - - return True - - @hookimpl(hookwrapper=True, tryfirst=True) - def pytest_sessionstart(self) -> Generator[None, None, None]: - self.log_cli_handler.set_when("sessionstart") - - with catching_logs(self.log_cli_handler, level=self.log_cli_level): - with catching_logs(self.log_file_handler, level=self.log_file_level): - yield - - @hookimpl(hookwrapper=True, tryfirst=True) - def pytest_collection(self) -> Generator[None, None, None]: - self.log_cli_handler.set_when("collection") - - with catching_logs(self.log_cli_handler, level=self.log_cli_level): - with catching_logs(self.log_file_handler, level=self.log_file_level): - yield - - @hookimpl(hookwrapper=True) - def pytest_runtestloop(self, session: Session) -> Generator[None, None, None]: - if session.config.option.collectonly: - yield - return - - if self._log_cli_enabled() and self._config.getoption("verbose") < 1: - # The verbose flag is needed to avoid messy test progress output. - self._config.option.verbose = 1 - - with catching_logs(self.log_cli_handler, level=self.log_cli_level): - with catching_logs(self.log_file_handler, level=self.log_file_level): - yield # Run all the tests. - - @hookimpl - def pytest_runtest_logstart(self) -> None: - self.log_cli_handler.reset() - self.log_cli_handler.set_when("start") - - @hookimpl - def pytest_runtest_logreport(self) -> None: - self.log_cli_handler.set_when("logreport") - - def _runtest_for(self, item: nodes.Item, when: str) -> Generator[None, None, None]: - """Implement the internals of the pytest_runtest_xxx() hooks.""" - with catching_logs( - self.caplog_handler, - level=self.log_level, - ) as caplog_handler, catching_logs( - self.report_handler, - level=self.log_level, - ) as report_handler: - caplog_handler.reset() - report_handler.reset() - item.stash[caplog_records_key][when] = caplog_handler.records - item.stash[caplog_handler_key] = caplog_handler - - yield - - log = report_handler.stream.getvalue().strip() - item.add_report_section(when, "log", log) - - @hookimpl(hookwrapper=True) - def pytest_runtest_setup(self, item: nodes.Item) -> Generator[None, None, None]: - self.log_cli_handler.set_when("setup") - - empty: Dict[str, List[logging.LogRecord]] = {} - item.stash[caplog_records_key] = empty - yield from self._runtest_for(item, "setup") - - @hookimpl(hookwrapper=True) - def pytest_runtest_call(self, item: nodes.Item) -> Generator[None, None, None]: - self.log_cli_handler.set_when("call") - - yield from self._runtest_for(item, "call") - - @hookimpl(hookwrapper=True) - def pytest_runtest_teardown(self, item: nodes.Item) -> Generator[None, None, None]: - self.log_cli_handler.set_when("teardown") - - yield from self._runtest_for(item, "teardown") - del item.stash[caplog_records_key] - del item.stash[caplog_handler_key] - - @hookimpl - def pytest_runtest_logfinish(self) -> None: - self.log_cli_handler.set_when("finish") - - @hookimpl(hookwrapper=True, tryfirst=True) - def pytest_sessionfinish(self) -> Generator[None, None, None]: - self.log_cli_handler.set_when("sessionfinish") - - with catching_logs(self.log_cli_handler, level=self.log_cli_level): - with catching_logs(self.log_file_handler, level=self.log_file_level): - yield - - @hookimpl - def pytest_unconfigure(self) -> None: - # Close the FileHandler explicitly. - # (logging.shutdown might have lost the weakref?!) - self.log_file_handler.close() - - -class _FileHandler(logging.FileHandler): - """A logging FileHandler with pytest tweaks.""" - - def handleError(self, record: logging.LogRecord) -> None: - # Handled by LogCaptureHandler. - pass - - -class _LiveLoggingStreamHandler(logging_StreamHandler): - """A logging StreamHandler used by the live logging feature: it will - write a newline before the first log message in each test. - - During live logging we must also explicitly disable stdout/stderr - capturing otherwise it will get captured and won't appear in the - terminal. - """ - - # Officially stream needs to be a IO[str], but TerminalReporter - # isn't. So force it. - stream: TerminalReporter = None # type: ignore - - def __init__( - self, - terminal_reporter: TerminalReporter, - capture_manager: Optional[CaptureManager], - ) -> None: - super().__init__(stream=terminal_reporter) # type: ignore[arg-type] - self.capture_manager = capture_manager - self.reset() - self.set_when(None) - self._test_outcome_written = False - - def reset(self) -> None: - """Reset the handler; should be called before the start of each test.""" - self._first_record_emitted = False - - def set_when(self, when: Optional[str]) -> None: - """Prepare for the given test phase (setup/call/teardown).""" - self._when = when - self._section_name_shown = False - if when == "start": - self._test_outcome_written = False - - def emit(self, record: logging.LogRecord) -> None: - ctx_manager = ( - self.capture_manager.global_and_fixture_disabled() - if self.capture_manager - else nullcontext() - ) - with ctx_manager: - if not self._first_record_emitted: - self.stream.write("\n") - self._first_record_emitted = True - elif self._when in ("teardown", "finish"): - if not self._test_outcome_written: - self._test_outcome_written = True - self.stream.write("\n") - if not self._section_name_shown and self._when: - self.stream.section("live log " + self._when, sep="-", bold=True) - self._section_name_shown = True - super().emit(record) - - def handleError(self, record: logging.LogRecord) -> None: - # Handled by LogCaptureHandler. - pass - - -class _LiveLoggingNullHandler(logging.NullHandler): - """A logging handler used when live logging is disabled.""" - - def reset(self) -> None: - pass - - def set_when(self, when: str) -> None: - pass - - def handleError(self, record: logging.LogRecord) -> None: - # Handled by LogCaptureHandler. - pass diff --git a/venv/lib/python3.12/site-packages/_pytest/main.py b/venv/lib/python3.12/site-packages/_pytest/main.py deleted file mode 100644 index 61fb7ea..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/main.py +++ /dev/null @@ -1,902 +0,0 @@ -"""Core implementation of the testing process: init, session, runtest loop.""" -import argparse -import fnmatch -import functools -import importlib -import os -import sys -from pathlib import Path -from typing import Callable -from typing import Dict -from typing import FrozenSet -from typing import Iterator -from typing import List -from typing import Optional -from typing import Sequence -from typing import Set -from typing import Tuple -from typing import Type -from typing import TYPE_CHECKING -from typing import Union - -import attr - -import _pytest._code -from _pytest import nodes -from _pytest.compat import final -from _pytest.compat import overload -from _pytest.config import Config -from _pytest.config import directory_arg -from _pytest.config import ExitCode -from _pytest.config import hookimpl -from _pytest.config import PytestPluginManager -from _pytest.config import UsageError -from _pytest.config.argparsing import Parser -from _pytest.fixtures import FixtureManager -from _pytest.outcomes import exit -from _pytest.pathlib import absolutepath -from _pytest.pathlib import bestrelpath -from _pytest.pathlib import fnmatch_ex -from _pytest.pathlib import visit -from _pytest.reports import CollectReport -from _pytest.reports import TestReport -from _pytest.runner import collect_one_node -from _pytest.runner import SetupState - - -if TYPE_CHECKING: - from typing_extensions import Literal - - -def pytest_addoption(parser: Parser) -> None: - parser.addini( - "norecursedirs", - "Directory patterns to avoid for recursion", - type="args", - default=[ - "*.egg", - ".*", - "_darcs", - "build", - "CVS", - "dist", - "node_modules", - "venv", - "{arch}", - ], - ) - parser.addini( - "testpaths", - "Directories to search for tests when no files or directories are given on the " - "command line", - type="args", - default=[], - ) - group = parser.getgroup("general", "Running and selection options") - group._addoption( - "-x", - "--exitfirst", - action="store_const", - dest="maxfail", - const=1, - help="Exit instantly on first error or failed test", - ) - group = parser.getgroup("pytest-warnings") - group.addoption( - "-W", - "--pythonwarnings", - action="append", - help="Set which warnings to report, see -W option of Python itself", - ) - parser.addini( - "filterwarnings", - type="linelist", - help="Each line specifies a pattern for " - "warnings.filterwarnings. " - "Processed after -W/--pythonwarnings.", - ) - group._addoption( - "--maxfail", - metavar="num", - action="store", - type=int, - dest="maxfail", - default=0, - help="Exit after first num failures or errors", - ) - group._addoption( - "--strict-config", - action="store_true", - help="Any warnings encountered while parsing the `pytest` section of the " - "configuration file raise errors", - ) - group._addoption( - "--strict-markers", - action="store_true", - help="Markers not registered in the `markers` section of the configuration " - "file raise errors", - ) - group._addoption( - "--strict", - action="store_true", - help="(Deprecated) alias to --strict-markers", - ) - group._addoption( - "-c", - metavar="file", - type=str, - dest="inifilename", - help="Load configuration from `file` instead of trying to locate one of the " - "implicit configuration files", - ) - group._addoption( - "--continue-on-collection-errors", - action="store_true", - default=False, - dest="continue_on_collection_errors", - help="Force test execution even if collection errors occur", - ) - group._addoption( - "--rootdir", - action="store", - dest="rootdir", - help="Define root directory for tests. Can be relative path: 'root_dir', './root_dir', " - "'root_dir/another_dir/'; absolute path: '/home/user/root_dir'; path with variables: " - "'$HOME/root_dir'.", - ) - - group = parser.getgroup("collect", "collection") - group.addoption( - "--collectonly", - "--collect-only", - "--co", - action="store_true", - help="Only collect tests, don't execute them", - ) - group.addoption( - "--pyargs", - action="store_true", - help="Try to interpret all arguments as Python packages", - ) - group.addoption( - "--ignore", - action="append", - metavar="path", - help="Ignore path during collection (multi-allowed)", - ) - group.addoption( - "--ignore-glob", - action="append", - metavar="path", - help="Ignore path pattern during collection (multi-allowed)", - ) - group.addoption( - "--deselect", - action="append", - metavar="nodeid_prefix", - help="Deselect item (via node id prefix) during collection (multi-allowed)", - ) - group.addoption( - "--confcutdir", - dest="confcutdir", - default=None, - metavar="dir", - type=functools.partial(directory_arg, optname="--confcutdir"), - help="Only load conftest.py's relative to specified dir", - ) - group.addoption( - "--noconftest", - action="store_true", - dest="noconftest", - default=False, - help="Don't load any conftest.py files", - ) - group.addoption( - "--keepduplicates", - "--keep-duplicates", - action="store_true", - dest="keepduplicates", - default=False, - help="Keep duplicate tests", - ) - group.addoption( - "--collect-in-virtualenv", - action="store_true", - dest="collect_in_virtualenv", - default=False, - help="Don't ignore tests in a local virtualenv directory", - ) - group.addoption( - "--import-mode", - default="prepend", - choices=["prepend", "append", "importlib"], - dest="importmode", - help="Prepend/append to sys.path when importing test modules and conftest " - "files. Default: prepend.", - ) - - group = parser.getgroup("debugconfig", "test session debugging and configuration") - group.addoption( - "--basetemp", - dest="basetemp", - default=None, - type=validate_basetemp, - metavar="dir", - help=( - "Base temporary directory for this test run. " - "(Warning: this directory is removed if it exists.)" - ), - ) - - -def validate_basetemp(path: str) -> str: - # GH 7119 - msg = "basetemp must not be empty, the current working directory or any parent directory of it" - - # empty path - if not path: - raise argparse.ArgumentTypeError(msg) - - def is_ancestor(base: Path, query: Path) -> bool: - """Return whether query is an ancestor of base.""" - if base == query: - return True - return query in base.parents - - # check if path is an ancestor of cwd - if is_ancestor(Path.cwd(), Path(path).absolute()): - raise argparse.ArgumentTypeError(msg) - - # check symlinks for ancestors - if is_ancestor(Path.cwd().resolve(), Path(path).resolve()): - raise argparse.ArgumentTypeError(msg) - - return path - - -def wrap_session( - config: Config, doit: Callable[[Config, "Session"], Optional[Union[int, ExitCode]]] -) -> Union[int, ExitCode]: - """Skeleton command line program.""" - session = Session.from_config(config) - session.exitstatus = ExitCode.OK - initstate = 0 - try: - try: - config._do_configure() - initstate = 1 - config.hook.pytest_sessionstart(session=session) - initstate = 2 - session.exitstatus = doit(config, session) or 0 - except UsageError: - session.exitstatus = ExitCode.USAGE_ERROR - raise - except Failed: - session.exitstatus = ExitCode.TESTS_FAILED - except (KeyboardInterrupt, exit.Exception): - excinfo = _pytest._code.ExceptionInfo.from_current() - exitstatus: Union[int, ExitCode] = ExitCode.INTERRUPTED - if isinstance(excinfo.value, exit.Exception): - if excinfo.value.returncode is not None: - exitstatus = excinfo.value.returncode - if initstate < 2: - sys.stderr.write(f"{excinfo.typename}: {excinfo.value.msg}\n") - config.hook.pytest_keyboard_interrupt(excinfo=excinfo) - session.exitstatus = exitstatus - except BaseException: - session.exitstatus = ExitCode.INTERNAL_ERROR - excinfo = _pytest._code.ExceptionInfo.from_current() - try: - config.notify_exception(excinfo, config.option) - except exit.Exception as exc: - if exc.returncode is not None: - session.exitstatus = exc.returncode - sys.stderr.write(f"{type(exc).__name__}: {exc}\n") - else: - if isinstance(excinfo.value, SystemExit): - sys.stderr.write("mainloop: caught unexpected SystemExit!\n") - - finally: - # Explicitly break reference cycle. - excinfo = None # type: ignore - os.chdir(session.startpath) - if initstate >= 2: - try: - config.hook.pytest_sessionfinish( - session=session, exitstatus=session.exitstatus - ) - except exit.Exception as exc: - if exc.returncode is not None: - session.exitstatus = exc.returncode - sys.stderr.write(f"{type(exc).__name__}: {exc}\n") - config._ensure_unconfigure() - return session.exitstatus - - -def pytest_cmdline_main(config: Config) -> Union[int, ExitCode]: - return wrap_session(config, _main) - - -def _main(config: Config, session: "Session") -> Optional[Union[int, ExitCode]]: - """Default command line protocol for initialization, session, - running tests and reporting.""" - config.hook.pytest_collection(session=session) - config.hook.pytest_runtestloop(session=session) - - if session.testsfailed: - return ExitCode.TESTS_FAILED - elif session.testscollected == 0: - return ExitCode.NO_TESTS_COLLECTED - return None - - -def pytest_collection(session: "Session") -> None: - session.perform_collect() - - -def pytest_runtestloop(session: "Session") -> bool: - if session.testsfailed and not session.config.option.continue_on_collection_errors: - raise session.Interrupted( - "%d error%s during collection" - % (session.testsfailed, "s" if session.testsfailed != 1 else "") - ) - - if session.config.option.collectonly: - return True - - for i, item in enumerate(session.items): - nextitem = session.items[i + 1] if i + 1 < len(session.items) else None - item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem) - if session.shouldfail: - raise session.Failed(session.shouldfail) - if session.shouldstop: - raise session.Interrupted(session.shouldstop) - return True - - -def _in_venv(path: Path) -> bool: - """Attempt to detect if ``path`` is the root of a Virtual Environment by - checking for the existence of the appropriate activate script.""" - bindir = path.joinpath("Scripts" if sys.platform.startswith("win") else "bin") - try: - if not bindir.is_dir(): - return False - except OSError: - return False - activates = ( - "activate", - "activate.csh", - "activate.fish", - "Activate", - "Activate.bat", - "Activate.ps1", - ) - return any(fname.name in activates for fname in bindir.iterdir()) - - -def pytest_ignore_collect(collection_path: Path, config: Config) -> Optional[bool]: - ignore_paths = config._getconftest_pathlist( - "collect_ignore", path=collection_path.parent, rootpath=config.rootpath - ) - ignore_paths = ignore_paths or [] - excludeopt = config.getoption("ignore") - if excludeopt: - ignore_paths.extend(absolutepath(x) for x in excludeopt) - - if collection_path in ignore_paths: - return True - - ignore_globs = config._getconftest_pathlist( - "collect_ignore_glob", path=collection_path.parent, rootpath=config.rootpath - ) - ignore_globs = ignore_globs or [] - excludeglobopt = config.getoption("ignore_glob") - if excludeglobopt: - ignore_globs.extend(absolutepath(x) for x in excludeglobopt) - - if any(fnmatch.fnmatch(str(collection_path), str(glob)) for glob in ignore_globs): - return True - - allow_in_venv = config.getoption("collect_in_virtualenv") - if not allow_in_venv and _in_venv(collection_path): - return True - return None - - -def pytest_collection_modifyitems(items: List[nodes.Item], config: Config) -> None: - deselect_prefixes = tuple(config.getoption("deselect") or []) - if not deselect_prefixes: - return - - remaining = [] - deselected = [] - for colitem in items: - if colitem.nodeid.startswith(deselect_prefixes): - deselected.append(colitem) - else: - remaining.append(colitem) - - if deselected: - config.hook.pytest_deselected(items=deselected) - items[:] = remaining - - -class FSHookProxy: - def __init__(self, pm: PytestPluginManager, remove_mods) -> None: - self.pm = pm - self.remove_mods = remove_mods - - def __getattr__(self, name: str): - x = self.pm.subset_hook_caller(name, remove_plugins=self.remove_mods) - self.__dict__[name] = x - return x - - -class Interrupted(KeyboardInterrupt): - """Signals that the test run was interrupted.""" - - __module__ = "builtins" # For py3. - - -class Failed(Exception): - """Signals a stop as failed test run.""" - - -@attr.s(slots=True, auto_attribs=True) -class _bestrelpath_cache(Dict[Path, str]): - path: Path - - def __missing__(self, path: Path) -> str: - r = bestrelpath(self.path, path) - self[path] = r - return r - - -@final -class Session(nodes.FSCollector): - Interrupted = Interrupted - Failed = Failed - # Set on the session by runner.pytest_sessionstart. - _setupstate: SetupState - # Set on the session by fixtures.pytest_sessionstart. - _fixturemanager: FixtureManager - exitstatus: Union[int, ExitCode] - - def __init__(self, config: Config) -> None: - super().__init__( - path=config.rootpath, - fspath=None, - parent=None, - config=config, - session=self, - nodeid="", - ) - self.testsfailed = 0 - self.testscollected = 0 - self.shouldstop: Union[bool, str] = False - self.shouldfail: Union[bool, str] = False - self.trace = config.trace.root.get("collection") - self._initialpaths: FrozenSet[Path] = frozenset() - - self._bestrelpathcache: Dict[Path, str] = _bestrelpath_cache(config.rootpath) - - self.config.pluginmanager.register(self, name="session") - - @classmethod - def from_config(cls, config: Config) -> "Session": - session: Session = cls._create(config=config) - return session - - def __repr__(self) -> str: - return "<%s %s exitstatus=%r testsfailed=%d testscollected=%d>" % ( - self.__class__.__name__, - self.name, - getattr(self, "exitstatus", ""), - self.testsfailed, - self.testscollected, - ) - - @property - def startpath(self) -> Path: - """The path from which pytest was invoked. - - .. versionadded:: 7.0.0 - """ - return self.config.invocation_params.dir - - def _node_location_to_relpath(self, node_path: Path) -> str: - # bestrelpath is a quite slow function. - return self._bestrelpathcache[node_path] - - @hookimpl(tryfirst=True) - def pytest_collectstart(self) -> None: - if self.shouldfail: - raise self.Failed(self.shouldfail) - if self.shouldstop: - raise self.Interrupted(self.shouldstop) - - @hookimpl(tryfirst=True) - def pytest_runtest_logreport( - self, report: Union[TestReport, CollectReport] - ) -> None: - if report.failed and not hasattr(report, "wasxfail"): - self.testsfailed += 1 - maxfail = self.config.getvalue("maxfail") - if maxfail and self.testsfailed >= maxfail: - self.shouldfail = "stopping after %d failures" % (self.testsfailed) - - pytest_collectreport = pytest_runtest_logreport - - def isinitpath(self, path: Union[str, "os.PathLike[str]"]) -> bool: - # Optimization: Path(Path(...)) is much slower than isinstance. - path_ = path if isinstance(path, Path) else Path(path) - return path_ in self._initialpaths - - def gethookproxy(self, fspath: "os.PathLike[str]"): - # Optimization: Path(Path(...)) is much slower than isinstance. - path = fspath if isinstance(fspath, Path) else Path(fspath) - pm = self.config.pluginmanager - # Check if we have the common case of running - # hooks with all conftest.py files. - my_conftestmodules = pm._getconftestmodules( - path, - self.config.getoption("importmode"), - rootpath=self.config.rootpath, - ) - remove_mods = pm._conftest_plugins.difference(my_conftestmodules) - if remove_mods: - # One or more conftests are not in use at this fspath. - from .config.compat import PathAwareHookProxy - - proxy = PathAwareHookProxy(FSHookProxy(pm, remove_mods)) - else: - # All plugins are active for this fspath. - proxy = self.config.hook - return proxy - - def _recurse(self, direntry: "os.DirEntry[str]") -> bool: - if direntry.name == "__pycache__": - return False - fspath = Path(direntry.path) - ihook = self.gethookproxy(fspath.parent) - if ihook.pytest_ignore_collect(collection_path=fspath, config=self.config): - return False - norecursepatterns = self.config.getini("norecursedirs") - if any(fnmatch_ex(pat, fspath) for pat in norecursepatterns): - return False - return True - - def _collectfile( - self, fspath: Path, handle_dupes: bool = True - ) -> Sequence[nodes.Collector]: - assert ( - fspath.is_file() - ), "{!r} is not a file (isdir={!r}, exists={!r}, islink={!r})".format( - fspath, fspath.is_dir(), fspath.exists(), fspath.is_symlink() - ) - ihook = self.gethookproxy(fspath) - if not self.isinitpath(fspath): - if ihook.pytest_ignore_collect(collection_path=fspath, config=self.config): - return () - - if handle_dupes: - keepduplicates = self.config.getoption("keepduplicates") - if not keepduplicates: - duplicate_paths = self.config.pluginmanager._duplicatepaths - if fspath in duplicate_paths: - return () - else: - duplicate_paths.add(fspath) - - return ihook.pytest_collect_file(file_path=fspath, parent=self) # type: ignore[no-any-return] - - @overload - def perform_collect( - self, args: Optional[Sequence[str]] = ..., genitems: "Literal[True]" = ... - ) -> Sequence[nodes.Item]: - ... - - @overload - def perform_collect( # noqa: F811 - self, args: Optional[Sequence[str]] = ..., genitems: bool = ... - ) -> Sequence[Union[nodes.Item, nodes.Collector]]: - ... - - def perform_collect( # noqa: F811 - self, args: Optional[Sequence[str]] = None, genitems: bool = True - ) -> Sequence[Union[nodes.Item, nodes.Collector]]: - """Perform the collection phase for this session. - - This is called by the default :hook:`pytest_collection` hook - implementation; see the documentation of this hook for more details. - For testing purposes, it may also be called directly on a fresh - ``Session``. - - This function normally recursively expands any collectors collected - from the session to their items, and only items are returned. For - testing purposes, this may be suppressed by passing ``genitems=False``, - in which case the return value contains these collectors unexpanded, - and ``session.items`` is empty. - """ - if args is None: - args = self.config.args - - self.trace("perform_collect", self, args) - self.trace.root.indent += 1 - - self._notfound: List[Tuple[str, Sequence[nodes.Collector]]] = [] - self._initial_parts: List[Tuple[Path, List[str]]] = [] - self.items: List[nodes.Item] = [] - - hook = self.config.hook - - items: Sequence[Union[nodes.Item, nodes.Collector]] = self.items - try: - initialpaths: List[Path] = [] - for arg in args: - fspath, parts = resolve_collection_argument( - self.config.invocation_params.dir, - arg, - as_pypath=self.config.option.pyargs, - ) - self._initial_parts.append((fspath, parts)) - initialpaths.append(fspath) - self._initialpaths = frozenset(initialpaths) - rep = collect_one_node(self) - self.ihook.pytest_collectreport(report=rep) - self.trace.root.indent -= 1 - if self._notfound: - errors = [] - for arg, collectors in self._notfound: - if collectors: - errors.append( - f"not found: {arg}\n(no name {arg!r} in any of {collectors!r})" - ) - else: - errors.append(f"found no collectors for {arg}") - - raise UsageError(*errors) - if not genitems: - items = rep.result - else: - if rep.passed: - for node in rep.result: - self.items.extend(self.genitems(node)) - - self.config.pluginmanager.check_pending() - hook.pytest_collection_modifyitems( - session=self, config=self.config, items=items - ) - finally: - hook.pytest_collection_finish(session=self) - - self.testscollected = len(items) - return items - - def collect(self) -> Iterator[Union[nodes.Item, nodes.Collector]]: - from _pytest.python import Package - - # Keep track of any collected nodes in here, so we don't duplicate fixtures. - node_cache1: Dict[Path, Sequence[nodes.Collector]] = {} - node_cache2: Dict[Tuple[Type[nodes.Collector], Path], nodes.Collector] = {} - - # Keep track of any collected collectors in matchnodes paths, so they - # are not collected more than once. - matchnodes_cache: Dict[Tuple[Type[nodes.Collector], str], CollectReport] = {} - - # Dirnames of pkgs with dunder-init files. - pkg_roots: Dict[str, Package] = {} - - for argpath, names in self._initial_parts: - self.trace("processing argument", (argpath, names)) - self.trace.root.indent += 1 - - # Start with a Session root, and delve to argpath item (dir or file) - # and stack all Packages found on the way. - # No point in finding packages when collecting doctests. - if not self.config.getoption("doctestmodules", False): - pm = self.config.pluginmanager - for parent in (argpath, *argpath.parents): - if not pm._is_in_confcutdir(argpath): - break - - if parent.is_dir(): - pkginit = parent / "__init__.py" - if pkginit.is_file() and pkginit not in node_cache1: - col = self._collectfile(pkginit, handle_dupes=False) - if col: - if isinstance(col[0], Package): - pkg_roots[str(parent)] = col[0] - node_cache1[col[0].path] = [col[0]] - - # If it's a directory argument, recurse and look for any Subpackages. - # Let the Package collector deal with subnodes, don't collect here. - if argpath.is_dir(): - assert not names, f"invalid arg {(argpath, names)!r}" - - seen_dirs: Set[Path] = set() - for direntry in visit(str(argpath), self._recurse): - if not direntry.is_file(): - continue - - path = Path(direntry.path) - dirpath = path.parent - - if dirpath not in seen_dirs: - # Collect packages first. - seen_dirs.add(dirpath) - pkginit = dirpath / "__init__.py" - if pkginit.exists(): - for x in self._collectfile(pkginit): - yield x - if isinstance(x, Package): - pkg_roots[str(dirpath)] = x - if str(dirpath) in pkg_roots: - # Do not collect packages here. - continue - - for x in self._collectfile(path): - key2 = (type(x), x.path) - if key2 in node_cache2: - yield node_cache2[key2] - else: - node_cache2[key2] = x - yield x - else: - assert argpath.is_file() - - if argpath in node_cache1: - col = node_cache1[argpath] - else: - collect_root = pkg_roots.get(str(argpath.parent), self) - col = collect_root._collectfile(argpath, handle_dupes=False) - if col: - node_cache1[argpath] = col - - matching = [] - work: List[ - Tuple[Sequence[Union[nodes.Item, nodes.Collector]], Sequence[str]] - ] = [(col, names)] - while work: - self.trace("matchnodes", col, names) - self.trace.root.indent += 1 - - matchnodes, matchnames = work.pop() - for node in matchnodes: - if not matchnames: - matching.append(node) - continue - if not isinstance(node, nodes.Collector): - continue - key = (type(node), node.nodeid) - if key in matchnodes_cache: - rep = matchnodes_cache[key] - else: - rep = collect_one_node(node) - matchnodes_cache[key] = rep - if rep.passed: - submatchnodes = [] - for r in rep.result: - # TODO: Remove parametrized workaround once collection structure contains - # parametrization. - if ( - r.name == matchnames[0] - or r.name.split("[")[0] == matchnames[0] - ): - submatchnodes.append(r) - if submatchnodes: - work.append((submatchnodes, matchnames[1:])) - else: - # Report collection failures here to avoid failing to run some test - # specified in the command line because the module could not be - # imported (#134). - node.ihook.pytest_collectreport(report=rep) - - self.trace("matchnodes finished -> ", len(matching), "nodes") - self.trace.root.indent -= 1 - - if not matching: - report_arg = "::".join((str(argpath), *names)) - self._notfound.append((report_arg, col)) - continue - - # If __init__.py was the only file requested, then the matched - # node will be the corresponding Package (by default), and the - # first yielded item will be the __init__ Module itself, so - # just use that. If this special case isn't taken, then all the - # files in the package will be yielded. - if argpath.name == "__init__.py" and isinstance(matching[0], Package): - try: - yield next(iter(matching[0].collect())) - except StopIteration: - # The package collects nothing with only an __init__.py - # file in it, which gets ignored by the default - # "python_files" option. - pass - continue - - yield from matching - - self.trace.root.indent -= 1 - - def genitems( - self, node: Union[nodes.Item, nodes.Collector] - ) -> Iterator[nodes.Item]: - self.trace("genitems", node) - if isinstance(node, nodes.Item): - node.ihook.pytest_itemcollected(item=node) - yield node - else: - assert isinstance(node, nodes.Collector) - rep = collect_one_node(node) - if rep.passed: - for subnode in rep.result: - yield from self.genitems(subnode) - node.ihook.pytest_collectreport(report=rep) - - -def search_pypath(module_name: str) -> str: - """Search sys.path for the given a dotted module name, and return its file system path.""" - try: - spec = importlib.util.find_spec(module_name) - # AttributeError: looks like package module, but actually filename - # ImportError: module does not exist - # ValueError: not a module name - except (AttributeError, ImportError, ValueError): - return module_name - if spec is None or spec.origin is None or spec.origin == "namespace": - return module_name - elif spec.submodule_search_locations: - return os.path.dirname(spec.origin) - else: - return spec.origin - - -def resolve_collection_argument( - invocation_path: Path, arg: str, *, as_pypath: bool = False -) -> Tuple[Path, List[str]]: - """Parse path arguments optionally containing selection parts and return (fspath, names). - - Command-line arguments can point to files and/or directories, and optionally contain - parts for specific tests selection, for example: - - "pkg/tests/test_foo.py::TestClass::test_foo" - - This function ensures the path exists, and returns a tuple: - - (Path("/full/path/to/pkg/tests/test_foo.py"), ["TestClass", "test_foo"]) - - When as_pypath is True, expects that the command-line argument actually contains - module paths instead of file-system paths: - - "pkg.tests.test_foo::TestClass::test_foo" - - In which case we search sys.path for a matching module, and then return the *path* to the - found module. - - If the path doesn't exist, raise UsageError. - If the path is a directory and selection parts are present, raise UsageError. - """ - base, squacket, rest = str(arg).partition("[") - strpath, *parts = base.split("::") - if parts: - parts[-1] = f"{parts[-1]}{squacket}{rest}" - if as_pypath: - strpath = search_pypath(strpath) - fspath = invocation_path / strpath - fspath = absolutepath(fspath) - if not fspath.exists(): - msg = ( - "module or package not found: {arg} (missing __init__.py?)" - if as_pypath - else "file or directory not found: {arg}" - ) - raise UsageError(msg.format(arg=arg)) - if parts and fspath.is_dir(): - msg = ( - "package argument cannot contain :: selection parts: {arg}" - if as_pypath - else "directory argument cannot contain :: selection parts: {arg}" - ) - raise UsageError(msg.format(arg=arg)) - return fspath, parts diff --git a/venv/lib/python3.12/site-packages/_pytest/mark/__init__.py b/venv/lib/python3.12/site-packages/_pytest/mark/__init__.py deleted file mode 100644 index 6717d11..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/mark/__init__.py +++ /dev/null @@ -1,266 +0,0 @@ -"""Generic mechanism for marking and selecting python functions.""" -from typing import AbstractSet -from typing import Collection -from typing import List -from typing import Optional -from typing import TYPE_CHECKING -from typing import Union - -import attr - -from .expression import Expression -from .expression import ParseError -from .structures import EMPTY_PARAMETERSET_OPTION -from .structures import get_empty_parameterset_mark -from .structures import Mark -from .structures import MARK_GEN -from .structures import MarkDecorator -from .structures import MarkGenerator -from .structures import ParameterSet -from _pytest.config import Config -from _pytest.config import ExitCode -from _pytest.config import hookimpl -from _pytest.config import UsageError -from _pytest.config.argparsing import Parser -from _pytest.stash import StashKey - -if TYPE_CHECKING: - from _pytest.nodes import Item - - -__all__ = [ - "MARK_GEN", - "Mark", - "MarkDecorator", - "MarkGenerator", - "ParameterSet", - "get_empty_parameterset_mark", -] - - -old_mark_config_key = StashKey[Optional[Config]]() - - -def param( - *values: object, - marks: Union[MarkDecorator, Collection[Union[MarkDecorator, Mark]]] = (), - id: Optional[str] = None, -) -> ParameterSet: - """Specify a parameter in `pytest.mark.parametrize`_ calls or - :ref:`parametrized fixtures `. - - .. code-block:: python - - @pytest.mark.parametrize( - "test_input,expected", - [ - ("3+5", 8), - pytest.param("6*9", 42, marks=pytest.mark.xfail), - ], - ) - def test_eval(test_input, expected): - assert eval(test_input) == expected - - :param values: Variable args of the values of the parameter set, in order. - :param marks: A single mark or a list of marks to be applied to this parameter set. - :param id: The id to attribute to this parameter set. - """ - return ParameterSet.param(*values, marks=marks, id=id) - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("general") - group._addoption( - "-k", - action="store", - dest="keyword", - default="", - metavar="EXPRESSION", - help="Only run tests which match the given substring expression. " - "An expression is a Python evaluatable expression " - "where all names are substring-matched against test names " - "and their parent classes. Example: -k 'test_method or test_" - "other' matches all test functions and classes whose name " - "contains 'test_method' or 'test_other', while -k 'not test_method' " - "matches those that don't contain 'test_method' in their names. " - "-k 'not test_method and not test_other' will eliminate the matches. " - "Additionally keywords are matched to classes and functions " - "containing extra names in their 'extra_keyword_matches' set, " - "as well as functions which have names assigned directly to them. " - "The matching is case-insensitive.", - ) - - group._addoption( - "-m", - action="store", - dest="markexpr", - default="", - metavar="MARKEXPR", - help="Only run tests matching given mark expression. " - "For example: -m 'mark1 and not mark2'.", - ) - - group.addoption( - "--markers", - action="store_true", - help="show markers (builtin, plugin and per-project ones).", - ) - - parser.addini("markers", "Markers for test functions", "linelist") - parser.addini(EMPTY_PARAMETERSET_OPTION, "Default marker for empty parametersets") - - -@hookimpl(tryfirst=True) -def pytest_cmdline_main(config: Config) -> Optional[Union[int, ExitCode]]: - import _pytest.config - - if config.option.markers: - config._do_configure() - tw = _pytest.config.create_terminal_writer(config) - for line in config.getini("markers"): - parts = line.split(":", 1) - name = parts[0] - rest = parts[1] if len(parts) == 2 else "" - tw.write("@pytest.mark.%s:" % name, bold=True) - tw.line(rest) - tw.line() - config._ensure_unconfigure() - return 0 - - return None - - -@attr.s(slots=True, auto_attribs=True) -class KeywordMatcher: - """A matcher for keywords. - - Given a list of names, matches any substring of one of these names. The - string inclusion check is case-insensitive. - - Will match on the name of colitem, including the names of its parents. - Only matches names of items which are either a :class:`Class` or a - :class:`Function`. - - Additionally, matches on names in the 'extra_keyword_matches' set of - any item, as well as names directly assigned to test functions. - """ - - _names: AbstractSet[str] - - @classmethod - def from_item(cls, item: "Item") -> "KeywordMatcher": - mapped_names = set() - - # Add the names of the current item and any parent items. - import pytest - - for node in item.listchain(): - if not isinstance(node, pytest.Session): - mapped_names.add(node.name) - - # Add the names added as extra keywords to current or parent items. - mapped_names.update(item.listextrakeywords()) - - # Add the names attached to the current function through direct assignment. - function_obj = getattr(item, "function", None) - if function_obj: - mapped_names.update(function_obj.__dict__) - - # Add the markers to the keywords as we no longer handle them correctly. - mapped_names.update(mark.name for mark in item.iter_markers()) - - return cls(mapped_names) - - def __call__(self, subname: str) -> bool: - subname = subname.lower() - names = (name.lower() for name in self._names) - - for name in names: - if subname in name: - return True - return False - - -def deselect_by_keyword(items: "List[Item]", config: Config) -> None: - keywordexpr = config.option.keyword.lstrip() - if not keywordexpr: - return - - expr = _parse_expression(keywordexpr, "Wrong expression passed to '-k'") - - remaining = [] - deselected = [] - for colitem in items: - if not expr.evaluate(KeywordMatcher.from_item(colitem)): - deselected.append(colitem) - else: - remaining.append(colitem) - - if deselected: - config.hook.pytest_deselected(items=deselected) - items[:] = remaining - - -@attr.s(slots=True, auto_attribs=True) -class MarkMatcher: - """A matcher for markers which are present. - - Tries to match on any marker names, attached to the given colitem. - """ - - own_mark_names: AbstractSet[str] - - @classmethod - def from_item(cls, item: "Item") -> "MarkMatcher": - mark_names = {mark.name for mark in item.iter_markers()} - return cls(mark_names) - - def __call__(self, name: str) -> bool: - return name in self.own_mark_names - - -def deselect_by_mark(items: "List[Item]", config: Config) -> None: - matchexpr = config.option.markexpr - if not matchexpr: - return - - expr = _parse_expression(matchexpr, "Wrong expression passed to '-m'") - remaining: List[Item] = [] - deselected: List[Item] = [] - for item in items: - if expr.evaluate(MarkMatcher.from_item(item)): - remaining.append(item) - else: - deselected.append(item) - if deselected: - config.hook.pytest_deselected(items=deselected) - items[:] = remaining - - -def _parse_expression(expr: str, exc_message: str) -> Expression: - try: - return Expression.compile(expr) - except ParseError as e: - raise UsageError(f"{exc_message}: {expr}: {e}") from None - - -def pytest_collection_modifyitems(items: "List[Item]", config: Config) -> None: - deselect_by_keyword(items, config) - deselect_by_mark(items, config) - - -def pytest_configure(config: Config) -> None: - config.stash[old_mark_config_key] = MARK_GEN._config - MARK_GEN._config = config - - empty_parameterset = config.getini(EMPTY_PARAMETERSET_OPTION) - - if empty_parameterset not in ("skip", "xfail", "fail_at_collect", None, ""): - raise UsageError( - "{!s} must be one of skip, xfail or fail_at_collect" - " but it is {!r}".format(EMPTY_PARAMETERSET_OPTION, empty_parameterset) - ) - - -def pytest_unconfigure(config: Config) -> None: - MARK_GEN._config = config.stash.get(old_mark_config_key, None) diff --git a/venv/lib/python3.12/site-packages/_pytest/mark/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/_pytest/mark/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index d233153e9a066347785d330f2956fbe64e1e24e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11604 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Μ)-F)1W#lVb=d>&uZjv6T@jAW%&58>og-1W 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 diff --git a/venv/lib/python3.12/site-packages/_pytest/mark/expression.py b/venv/lib/python3.12/site-packages/_pytest/mark/expression.py deleted file mode 100644 index 0a2e7c6..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/mark/expression.py +++ /dev/null @@ -1,222 +0,0 @@ -r"""Evaluate match expressions, as used by `-k` and `-m`. - -The grammar is: - -expression: expr? EOF -expr: and_expr ('or' and_expr)* -and_expr: not_expr ('and' not_expr)* -not_expr: 'not' not_expr | '(' expr ')' | ident -ident: (\w|:|\+|-|\.|\[|\]|\\|/)+ - -The semantics are: - -- Empty expression evaluates to False. -- ident evaluates to True of False according to a provided matcher function. -- or/and/not evaluate according to the usual boolean semantics. -""" -import ast -import enum -import re -import types -from typing import Callable -from typing import Iterator -from typing import Mapping -from typing import NoReturn -from typing import Optional -from typing import Sequence - -import attr - - -__all__ = [ - "Expression", - "ParseError", -] - - -class TokenType(enum.Enum): - LPAREN = "left parenthesis" - RPAREN = "right parenthesis" - OR = "or" - AND = "and" - NOT = "not" - IDENT = "identifier" - EOF = "end of input" - - -@attr.s(frozen=True, slots=True, auto_attribs=True) -class Token: - type: TokenType - value: str - pos: int - - -class ParseError(Exception): - """The expression contains invalid syntax. - - :param column: The column in the line where the error occurred (1-based). - :param message: A description of the error. - """ - - def __init__(self, column: int, message: str) -> None: - self.column = column - self.message = message - - def __str__(self) -> str: - return f"at column {self.column}: {self.message}" - - -class Scanner: - __slots__ = ("tokens", "current") - - def __init__(self, input: str) -> None: - self.tokens = self.lex(input) - self.current = next(self.tokens) - - def lex(self, input: str) -> Iterator[Token]: - pos = 0 - while pos < len(input): - if input[pos] in (" ", "\t"): - pos += 1 - elif input[pos] == "(": - yield Token(TokenType.LPAREN, "(", pos) - pos += 1 - elif input[pos] == ")": - yield Token(TokenType.RPAREN, ")", pos) - pos += 1 - else: - match = re.match(r"(:?\w|:|\+|-|\.|\[|\]|\\|/)+", input[pos:]) - if match: - value = match.group(0) - if value == "or": - yield Token(TokenType.OR, value, pos) - elif value == "and": - yield Token(TokenType.AND, value, pos) - elif value == "not": - yield Token(TokenType.NOT, value, pos) - else: - yield Token(TokenType.IDENT, value, pos) - pos += len(value) - else: - raise ParseError( - pos + 1, - f'unexpected character "{input[pos]}"', - ) - yield Token(TokenType.EOF, "", pos) - - def accept(self, type: TokenType, *, reject: bool = False) -> Optional[Token]: - if self.current.type is type: - token = self.current - if token.type is not TokenType.EOF: - self.current = next(self.tokens) - return token - if reject: - self.reject((type,)) - return None - - def reject(self, expected: Sequence[TokenType]) -> NoReturn: - raise ParseError( - self.current.pos + 1, - "expected {}; got {}".format( - " OR ".join(type.value for type in expected), - self.current.type.value, - ), - ) - - -# True, False and None are legal match expression identifiers, -# but illegal as Python identifiers. To fix this, this prefix -# is added to identifiers in the conversion to Python AST. -IDENT_PREFIX = "$" - - -def expression(s: Scanner) -> ast.Expression: - if s.accept(TokenType.EOF): - ret: ast.expr = ast.NameConstant(False) - else: - ret = expr(s) - s.accept(TokenType.EOF, reject=True) - return ast.fix_missing_locations(ast.Expression(ret)) - - -def expr(s: Scanner) -> ast.expr: - ret = and_expr(s) - while s.accept(TokenType.OR): - rhs = and_expr(s) - ret = ast.BoolOp(ast.Or(), [ret, rhs]) - return ret - - -def and_expr(s: Scanner) -> ast.expr: - ret = not_expr(s) - while s.accept(TokenType.AND): - rhs = not_expr(s) - ret = ast.BoolOp(ast.And(), [ret, rhs]) - return ret - - -def not_expr(s: Scanner) -> ast.expr: - if s.accept(TokenType.NOT): - return ast.UnaryOp(ast.Not(), not_expr(s)) - if s.accept(TokenType.LPAREN): - ret = expr(s) - s.accept(TokenType.RPAREN, reject=True) - return ret - ident = s.accept(TokenType.IDENT) - if ident: - return ast.Name(IDENT_PREFIX + ident.value, ast.Load()) - s.reject((TokenType.NOT, TokenType.LPAREN, TokenType.IDENT)) - - -class MatcherAdapter(Mapping[str, bool]): - """Adapts a matcher function to a locals mapping as required by eval().""" - - def __init__(self, matcher: Callable[[str], bool]) -> None: - self.matcher = matcher - - def __getitem__(self, key: str) -> bool: - return self.matcher(key[len(IDENT_PREFIX) :]) - - def __iter__(self) -> Iterator[str]: - raise NotImplementedError() - - def __len__(self) -> int: - raise NotImplementedError() - - -class Expression: - """A compiled match expression as used by -k and -m. - - The expression can be evaluated against different matchers. - """ - - __slots__ = ("code",) - - def __init__(self, code: types.CodeType) -> None: - self.code = code - - @classmethod - def compile(self, input: str) -> "Expression": - """Compile a match expression. - - :param input: The input expression - one line. - """ - astexpr = expression(Scanner(input)) - code: types.CodeType = compile( - astexpr, - filename="", - mode="eval", - ) - return Expression(code) - - def evaluate(self, matcher: Callable[[str], bool]) -> bool: - """Evaluate the match expression. - - :param matcher: - Given an identifier, should return whether it matches or not. - Should be prepared to handle arbitrary strings as input. - - :returns: Whether the expression matches or not. - """ - ret: bool = eval(self.code, {"__builtins__": {}}, MatcherAdapter(matcher)) - return ret diff --git a/venv/lib/python3.12/site-packages/_pytest/mark/structures.py b/venv/lib/python3.12/site-packages/_pytest/mark/structures.py deleted file mode 100644 index 5186c9e..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/mark/structures.py +++ /dev/null @@ -1,613 +0,0 @@ -import collections.abc -import inspect -import warnings -from typing import Any -from typing import Callable -from typing import Collection -from typing import Iterable -from typing import Iterator -from typing import List -from typing import Mapping -from typing import MutableMapping -from typing import NamedTuple -from typing import Optional -from typing import overload -from typing import Sequence -from typing import Set -from typing import Tuple -from typing import Type -from typing import TYPE_CHECKING -from typing import TypeVar -from typing import Union - -import attr - -from .._code import getfslineno -from ..compat import ascii_escaped -from ..compat import final -from ..compat import NOTSET -from ..compat import NotSetType -from _pytest.config import Config -from _pytest.deprecated import check_ispytest -from _pytest.outcomes import fail -from _pytest.warning_types import PytestUnknownMarkWarning - -if TYPE_CHECKING: - from ..nodes import Node - - -EMPTY_PARAMETERSET_OPTION = "empty_parameter_set_mark" - - -def istestfunc(func) -> bool: - return callable(func) and getattr(func, "__name__", "") != "" - - -def get_empty_parameterset_mark( - config: Config, argnames: Sequence[str], func -) -> "MarkDecorator": - from ..nodes import Collector - - fs, lineno = getfslineno(func) - reason = "got empty parameter set %r, function %s at %s:%d" % ( - argnames, - func.__name__, - fs, - lineno, - ) - - requested_mark = config.getini(EMPTY_PARAMETERSET_OPTION) - if requested_mark in ("", None, "skip"): - mark = MARK_GEN.skip(reason=reason) - elif requested_mark == "xfail": - mark = MARK_GEN.xfail(reason=reason, run=False) - elif requested_mark == "fail_at_collect": - f_name = func.__name__ - _, lineno = getfslineno(func) - raise Collector.CollectError( - "Empty parameter set in '%s' at line %d" % (f_name, lineno + 1) - ) - else: - raise LookupError(requested_mark) - return mark - - -class ParameterSet(NamedTuple): - values: Sequence[Union[object, NotSetType]] - marks: Collection[Union["MarkDecorator", "Mark"]] - id: Optional[str] - - @classmethod - def param( - cls, - *values: object, - marks: Union["MarkDecorator", Collection[Union["MarkDecorator", "Mark"]]] = (), - id: Optional[str] = None, - ) -> "ParameterSet": - if isinstance(marks, MarkDecorator): - marks = (marks,) - else: - assert isinstance(marks, collections.abc.Collection) - - if id is not None: - if not isinstance(id, str): - raise TypeError(f"Expected id to be a string, got {type(id)}: {id!r}") - id = ascii_escaped(id) - return cls(values, marks, id) - - @classmethod - def extract_from( - cls, - parameterset: Union["ParameterSet", Sequence[object], object], - force_tuple: bool = False, - ) -> "ParameterSet": - """Extract from an object or objects. - - :param parameterset: - A legacy style parameterset that may or may not be a tuple, - and may or may not be wrapped into a mess of mark objects. - - :param force_tuple: - Enforce tuple wrapping so single argument tuple values - don't get decomposed and break tests. - """ - - if isinstance(parameterset, cls): - return parameterset - if force_tuple: - return cls.param(parameterset) - else: - # TODO: Refactor to fix this type-ignore. Currently the following - # passes type-checking but crashes: - # - # @pytest.mark.parametrize(('x', 'y'), [1, 2]) - # def test_foo(x, y): pass - return cls(parameterset, marks=[], id=None) # type: ignore[arg-type] - - @staticmethod - def _parse_parametrize_args( - argnames: Union[str, Sequence[str]], - argvalues: Iterable[Union["ParameterSet", Sequence[object], object]], - *args, - **kwargs, - ) -> Tuple[Sequence[str], bool]: - if isinstance(argnames, str): - argnames = [x.strip() for x in argnames.split(",") if x.strip()] - force_tuple = len(argnames) == 1 - else: - force_tuple = False - return argnames, force_tuple - - @staticmethod - def _parse_parametrize_parameters( - argvalues: Iterable[Union["ParameterSet", Sequence[object], object]], - force_tuple: bool, - ) -> List["ParameterSet"]: - return [ - ParameterSet.extract_from(x, force_tuple=force_tuple) for x in argvalues - ] - - @classmethod - def _for_parametrize( - cls, - argnames: Union[str, Sequence[str]], - argvalues: Iterable[Union["ParameterSet", Sequence[object], object]], - func, - config: Config, - nodeid: str, - ) -> Tuple[Sequence[str], List["ParameterSet"]]: - argnames, force_tuple = cls._parse_parametrize_args(argnames, argvalues) - parameters = cls._parse_parametrize_parameters(argvalues, force_tuple) - del argvalues - - if parameters: - # Check all parameter sets have the correct number of values. - for param in parameters: - if len(param.values) != len(argnames): - msg = ( - '{nodeid}: in "parametrize" the number of names ({names_len}):\n' - " {names}\n" - "must be equal to the number of values ({values_len}):\n" - " {values}" - ) - fail( - msg.format( - nodeid=nodeid, - values=param.values, - names=argnames, - names_len=len(argnames), - values_len=len(param.values), - ), - pytrace=False, - ) - else: - # Empty parameter set (likely computed at runtime): create a single - # parameter set with NOTSET values, with the "empty parameter set" mark applied to it. - mark = get_empty_parameterset_mark(config, argnames, func) - parameters.append( - ParameterSet(values=(NOTSET,) * len(argnames), marks=[mark], id=None) - ) - return argnames, parameters - - -@final -@attr.s(frozen=True, init=False, auto_attribs=True) -class Mark: - #: Name of the mark. - name: str - #: Positional arguments of the mark decorator. - args: Tuple[Any, ...] - #: Keyword arguments of the mark decorator. - kwargs: Mapping[str, Any] - - #: Source Mark for ids with parametrize Marks. - _param_ids_from: Optional["Mark"] = attr.ib(default=None, repr=False) - #: Resolved/generated ids with parametrize Marks. - _param_ids_generated: Optional[Sequence[str]] = attr.ib(default=None, repr=False) - - def __init__( - self, - name: str, - args: Tuple[Any, ...], - kwargs: Mapping[str, Any], - param_ids_from: Optional["Mark"] = None, - param_ids_generated: Optional[Sequence[str]] = None, - *, - _ispytest: bool = False, - ) -> None: - """:meta private:""" - check_ispytest(_ispytest) - # Weirdness to bypass frozen=True. - object.__setattr__(self, "name", name) - object.__setattr__(self, "args", args) - object.__setattr__(self, "kwargs", kwargs) - object.__setattr__(self, "_param_ids_from", param_ids_from) - object.__setattr__(self, "_param_ids_generated", param_ids_generated) - - def _has_param_ids(self) -> bool: - return "ids" in self.kwargs or len(self.args) >= 4 - - def combined_with(self, other: "Mark") -> "Mark": - """Return a new Mark which is a combination of this - Mark and another Mark. - - Combines by appending args and merging kwargs. - - :param Mark other: The mark to combine with. - :rtype: Mark - """ - assert self.name == other.name - - # Remember source of ids with parametrize Marks. - param_ids_from: Optional[Mark] = None - if self.name == "parametrize": - if other._has_param_ids(): - param_ids_from = other - elif self._has_param_ids(): - param_ids_from = self - - return Mark( - self.name, - self.args + other.args, - dict(self.kwargs, **other.kwargs), - param_ids_from=param_ids_from, - _ispytest=True, - ) - - -# A generic parameter designating an object to which a Mark may -# be applied -- a test function (callable) or class. -# Note: a lambda is not allowed, but this can't be represented. -Markable = TypeVar("Markable", bound=Union[Callable[..., object], type]) - - -@attr.s(init=False, auto_attribs=True) -class MarkDecorator: - """A decorator for applying a mark on test functions and classes. - - ``MarkDecorators`` are created with ``pytest.mark``:: - - mark1 = pytest.mark.NAME # Simple MarkDecorator - mark2 = pytest.mark.NAME(name1=value) # Parametrized MarkDecorator - - and can then be applied as decorators to test functions:: - - @mark2 - def test_function(): - pass - - When a ``MarkDecorator`` is called, it does the following: - - 1. If called with a single class as its only positional argument and no - additional keyword arguments, it attaches the mark to the class so it - gets applied automatically to all test cases found in that class. - - 2. If called with a single function as its only positional argument and - no additional keyword arguments, it attaches the mark to the function, - containing all the arguments already stored internally in the - ``MarkDecorator``. - - 3. When called in any other case, it returns a new ``MarkDecorator`` - instance with the original ``MarkDecorator``'s content updated with - the arguments passed to this call. - - Note: The rules above prevent a ``MarkDecorator`` from storing only a - single function or class reference as its positional argument with no - additional keyword or positional arguments. You can work around this by - using `with_args()`. - """ - - mark: Mark - - def __init__(self, mark: Mark, *, _ispytest: bool = False) -> None: - """:meta private:""" - check_ispytest(_ispytest) - self.mark = mark - - @property - def name(self) -> str: - """Alias for mark.name.""" - return self.mark.name - - @property - def args(self) -> Tuple[Any, ...]: - """Alias for mark.args.""" - return self.mark.args - - @property - def kwargs(self) -> Mapping[str, Any]: - """Alias for mark.kwargs.""" - return self.mark.kwargs - - @property - def markname(self) -> str: - """:meta private:""" - return self.name # for backward-compat (2.4.1 had this attr) - - def with_args(self, *args: object, **kwargs: object) -> "MarkDecorator": - """Return a MarkDecorator with extra arguments added. - - Unlike calling the MarkDecorator, with_args() can be used even - if the sole argument is a callable/class. - """ - mark = Mark(self.name, args, kwargs, _ispytest=True) - return MarkDecorator(self.mark.combined_with(mark), _ispytest=True) - - # Type ignored because the overloads overlap with an incompatible - # return type. Not much we can do about that. Thankfully mypy picks - # the first match so it works out even if we break the rules. - @overload - def __call__(self, arg: Markable) -> Markable: # type: ignore[misc] - pass - - @overload - def __call__(self, *args: object, **kwargs: object) -> "MarkDecorator": - pass - - def __call__(self, *args: object, **kwargs: object): - """Call the MarkDecorator.""" - if args and not kwargs: - func = args[0] - is_class = inspect.isclass(func) - if len(args) == 1 and (istestfunc(func) or is_class): - store_mark(func, self.mark) - return func - return self.with_args(*args, **kwargs) - - -def get_unpacked_marks( - obj: Union[object, type], - *, - consider_mro: bool = True, -) -> List[Mark]: - """Obtain the unpacked marks that are stored on an object. - - If obj is a class and consider_mro is true, return marks applied to - this class and all of its super-classes in MRO order. If consider_mro - is false, only return marks applied directly to this class. - """ - if isinstance(obj, type): - if not consider_mro: - mark_lists = [obj.__dict__.get("pytestmark", [])] - else: - mark_lists = [x.__dict__.get("pytestmark", []) for x in obj.__mro__] - mark_list = [] - for item in mark_lists: - if isinstance(item, list): - mark_list.extend(item) - else: - mark_list.append(item) - else: - mark_attribute = getattr(obj, "pytestmark", []) - if isinstance(mark_attribute, list): - mark_list = mark_attribute - else: - mark_list = [mark_attribute] - return list(normalize_mark_list(mark_list)) - - -def normalize_mark_list( - mark_list: Iterable[Union[Mark, MarkDecorator]] -) -> Iterable[Mark]: - """ - Normalize an iterable of Mark or MarkDecorator objects into a list of marks - by retrieving the `mark` attribute on MarkDecorator instances. - - :param mark_list: marks to normalize - :returns: A new list of the extracted Mark objects - """ - for mark in mark_list: - mark_obj = getattr(mark, "mark", mark) - if not isinstance(mark_obj, Mark): - raise TypeError(f"got {repr(mark_obj)} instead of Mark") - yield mark_obj - - -def store_mark(obj, mark: Mark) -> None: - """Store a Mark on an object. - - This is used to implement the Mark declarations/decorators correctly. - """ - assert isinstance(mark, Mark), mark - # Always reassign name to avoid updating pytestmark in a reference that - # was only borrowed. - obj.pytestmark = [*get_unpacked_marks(obj, consider_mro=False), mark] - - -# Typing for builtin pytest marks. This is cheating; it gives builtin marks -# special privilege, and breaks modularity. But practicality beats purity... -if TYPE_CHECKING: - from _pytest.scope import _ScopeName - - class _SkipMarkDecorator(MarkDecorator): - @overload # type: ignore[override,misc,no-overload-impl] - def __call__(self, arg: Markable) -> Markable: - ... - - @overload - def __call__(self, reason: str = ...) -> "MarkDecorator": - ... - - class _SkipifMarkDecorator(MarkDecorator): - def __call__( # type: ignore[override] - self, - condition: Union[str, bool] = ..., - *conditions: Union[str, bool], - reason: str = ..., - ) -> MarkDecorator: - ... - - class _XfailMarkDecorator(MarkDecorator): - @overload # type: ignore[override,misc,no-overload-impl] - def __call__(self, arg: Markable) -> Markable: - ... - - @overload - def __call__( - self, - condition: Union[str, bool] = ..., - *conditions: Union[str, bool], - reason: str = ..., - run: bool = ..., - raises: Union[Type[BaseException], Tuple[Type[BaseException], ...]] = ..., - strict: bool = ..., - ) -> MarkDecorator: - ... - - class _ParametrizeMarkDecorator(MarkDecorator): - def __call__( # type: ignore[override] - self, - argnames: Union[str, Sequence[str]], - argvalues: Iterable[Union[ParameterSet, Sequence[object], object]], - *, - indirect: Union[bool, Sequence[str]] = ..., - ids: Optional[ - Union[ - Iterable[Union[None, str, float, int, bool]], - Callable[[Any], Optional[object]], - ] - ] = ..., - scope: Optional[_ScopeName] = ..., - ) -> MarkDecorator: - ... - - class _UsefixturesMarkDecorator(MarkDecorator): - def __call__(self, *fixtures: str) -> MarkDecorator: # type: ignore[override] - ... - - class _FilterwarningsMarkDecorator(MarkDecorator): - def __call__(self, *filters: str) -> MarkDecorator: # type: ignore[override] - ... - - -@final -class MarkGenerator: - """Factory for :class:`MarkDecorator` objects - exposed as - a ``pytest.mark`` singleton instance. - - Example:: - - import pytest - - @pytest.mark.slowtest - def test_function(): - pass - - applies a 'slowtest' :class:`Mark` on ``test_function``. - """ - - # See TYPE_CHECKING above. - if TYPE_CHECKING: - skip: _SkipMarkDecorator - skipif: _SkipifMarkDecorator - xfail: _XfailMarkDecorator - parametrize: _ParametrizeMarkDecorator - usefixtures: _UsefixturesMarkDecorator - filterwarnings: _FilterwarningsMarkDecorator - - def __init__(self, *, _ispytest: bool = False) -> None: - check_ispytest(_ispytest) - self._config: Optional[Config] = None - self._markers: Set[str] = set() - - def __getattr__(self, name: str) -> MarkDecorator: - """Generate a new :class:`MarkDecorator` with the given name.""" - if name[0] == "_": - raise AttributeError("Marker name must NOT start with underscore") - - if self._config is not None: - # We store a set of markers as a performance optimisation - if a mark - # name is in the set we definitely know it, but a mark may be known and - # not in the set. We therefore start by updating the set! - if name not in self._markers: - for line in self._config.getini("markers"): - # example lines: "skipif(condition): skip the given test if..." - # or "hypothesis: tests which use Hypothesis", so to get the - # marker name we split on both `:` and `(`. - marker = line.split(":")[0].split("(")[0].strip() - self._markers.add(marker) - - # If the name is not in the set of known marks after updating, - # then it really is time to issue a warning or an error. - if name not in self._markers: - if self._config.option.strict_markers or self._config.option.strict: - fail( - f"{name!r} not found in `markers` configuration option", - pytrace=False, - ) - - # Raise a specific error for common misspellings of "parametrize". - if name in ["parameterize", "parametrise", "parameterise"]: - __tracebackhide__ = True - fail(f"Unknown '{name}' mark, did you mean 'parametrize'?") - - warnings.warn( - "Unknown pytest.mark.%s - is this a typo? You can register " - "custom marks to avoid this warning - for details, see " - "https://docs.pytest.org/en/stable/how-to/mark.html" % name, - PytestUnknownMarkWarning, - 2, - ) - - return MarkDecorator(Mark(name, (), {}, _ispytest=True), _ispytest=True) - - -MARK_GEN = MarkGenerator(_ispytest=True) - - -@final -class NodeKeywords(MutableMapping[str, Any]): - __slots__ = ("node", "parent", "_markers") - - def __init__(self, node: "Node") -> None: - self.node = node - self.parent = node.parent - self._markers = {node.name: True} - - def __getitem__(self, key: str) -> Any: - try: - return self._markers[key] - except KeyError: - if self.parent is None: - raise - return self.parent.keywords[key] - - def __setitem__(self, key: str, value: Any) -> None: - self._markers[key] = value - - # Note: we could've avoided explicitly implementing some of the methods - # below and use the collections.abc fallback, but that would be slow. - - def __contains__(self, key: object) -> bool: - return ( - key in self._markers - or self.parent is not None - and key in self.parent.keywords - ) - - def update( # type: ignore[override] - self, - other: Union[Mapping[str, Any], Iterable[Tuple[str, Any]]] = (), - **kwds: Any, - ) -> None: - self._markers.update(other) - self._markers.update(kwds) - - def __delitem__(self, key: str) -> None: - raise ValueError("cannot delete key in keywords dict") - - def __iter__(self) -> Iterator[str]: - # Doesn't need to be fast. - yield from self._markers - if self.parent is not None: - for keyword in self.parent.keywords: - # self._marks and self.parent.keywords can have duplicates. - if keyword not in self._markers: - yield keyword - - def __len__(self) -> int: - # Doesn't need to be fast. - return sum(1 for keyword in self) - - def __repr__(self) -> str: - return f"" diff --git a/venv/lib/python3.12/site-packages/_pytest/monkeypatch.py b/venv/lib/python3.12/site-packages/_pytest/monkeypatch.py deleted file mode 100644 index c6e29ac..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/monkeypatch.py +++ /dev/null @@ -1,416 +0,0 @@ -"""Monkeypatching and mocking functionality.""" -import os -import re -import sys -import warnings -from contextlib import contextmanager -from typing import Any -from typing import Generator -from typing import List -from typing import MutableMapping -from typing import Optional -from typing import overload -from typing import Tuple -from typing import TypeVar -from typing import Union - -from _pytest.compat import final -from _pytest.fixtures import fixture -from _pytest.warning_types import PytestWarning - -RE_IMPORT_ERROR_NAME = re.compile(r"^No module named (.*)$") - - -K = TypeVar("K") -V = TypeVar("V") - - -@fixture -def monkeypatch() -> Generator["MonkeyPatch", None, None]: - """A convenient fixture for monkey-patching. - - The fixture provides these methods to modify objects, dictionaries, or - :data:`os.environ`: - - * :meth:`monkeypatch.setattr(obj, name, value, raising=True) ` - * :meth:`monkeypatch.delattr(obj, name, raising=True) ` - * :meth:`monkeypatch.setitem(mapping, name, value) ` - * :meth:`monkeypatch.delitem(obj, name, raising=True) ` - * :meth:`monkeypatch.setenv(name, value, prepend=None) ` - * :meth:`monkeypatch.delenv(name, raising=True) ` - * :meth:`monkeypatch.syspath_prepend(path) ` - * :meth:`monkeypatch.chdir(path) ` - * :meth:`monkeypatch.context() ` - - All modifications will be undone after the requesting test function or - fixture has finished. The ``raising`` parameter determines if a :class:`KeyError` - or :class:`AttributeError` will be raised if the set/deletion operation does not have the - specified target. - - To undo modifications done by the fixture in a contained scope, - use :meth:`context() `. - """ - mpatch = MonkeyPatch() - yield mpatch - mpatch.undo() - - -def resolve(name: str) -> object: - # Simplified from zope.dottedname. - parts = name.split(".") - - used = parts.pop(0) - found: object = __import__(used) - for part in parts: - used += "." + part - try: - found = getattr(found, part) - except AttributeError: - pass - else: - continue - # We use explicit un-nesting of the handling block in order - # to avoid nested exceptions. - try: - __import__(used) - except ImportError as ex: - expected = str(ex).split()[-1] - if expected == used: - raise - else: - raise ImportError(f"import error in {used}: {ex}") from ex - found = annotated_getattr(found, part, used) - return found - - -def annotated_getattr(obj: object, name: str, ann: str) -> object: - try: - obj = getattr(obj, name) - except AttributeError as e: - raise AttributeError( - "{!r} object at {} has no attribute {!r}".format( - type(obj).__name__, ann, name - ) - ) from e - return obj - - -def derive_importpath(import_path: str, raising: bool) -> Tuple[str, object]: - if not isinstance(import_path, str) or "." not in import_path: - raise TypeError(f"must be absolute import path string, not {import_path!r}") - module, attr = import_path.rsplit(".", 1) - target = resolve(module) - if raising: - annotated_getattr(target, attr, ann=module) - return attr, target - - -class Notset: - def __repr__(self) -> str: - return "" - - -notset = Notset() - - -@final -class MonkeyPatch: - """Helper to conveniently monkeypatch attributes/items/environment - variables/syspath. - - Returned by the :fixture:`monkeypatch` fixture. - - .. versionchanged:: 6.2 - Can now also be used directly as `pytest.MonkeyPatch()`, for when - the fixture is not available. In this case, use - :meth:`with MonkeyPatch.context() as mp: ` or remember to call - :meth:`undo` explicitly. - """ - - def __init__(self) -> None: - self._setattr: List[Tuple[object, str, object]] = [] - self._setitem: List[Tuple[MutableMapping[Any, Any], object, object]] = [] - self._cwd: Optional[str] = None - self._savesyspath: Optional[List[str]] = None - - @classmethod - @contextmanager - def context(cls) -> Generator["MonkeyPatch", None, None]: - """Context manager that returns a new :class:`MonkeyPatch` object - which undoes any patching done inside the ``with`` block upon exit. - - Example: - - .. code-block:: python - - import functools - - - def test_partial(monkeypatch): - with monkeypatch.context() as m: - m.setattr(functools, "partial", 3) - - Useful in situations where it is desired to undo some patches before the test ends, - such as mocking ``stdlib`` functions that might break pytest itself if mocked (for examples - of this see :issue:`3290`). - """ - m = cls() - try: - yield m - finally: - m.undo() - - @overload - def setattr( - self, - target: str, - name: object, - value: Notset = ..., - raising: bool = ..., - ) -> None: - ... - - @overload - def setattr( - self, - target: object, - name: str, - value: object, - raising: bool = ..., - ) -> None: - ... - - def setattr( - self, - target: Union[str, object], - name: Union[object, str], - value: object = notset, - raising: bool = True, - ) -> None: - """ - Set attribute value on target, memorizing the old value. - - For example: - - .. code-block:: python - - import os - - monkeypatch.setattr(os, "getcwd", lambda: "/") - - The code above replaces the :func:`os.getcwd` function by a ``lambda`` which - always returns ``"/"``. - - For convenience, you can specify a string as ``target`` which - will be interpreted as a dotted import path, with the last part - being the attribute name: - - .. code-block:: python - - monkeypatch.setattr("os.getcwd", lambda: "/") - - Raises :class:`AttributeError` if the attribute does not exist, unless - ``raising`` is set to False. - - **Where to patch** - - ``monkeypatch.setattr`` works by (temporarily) changing the object that a name points to with another one. - There can be many names pointing to any individual object, so for patching to work you must ensure - that you patch the name used by the system under test. - - See the section :ref:`Where to patch ` in the :mod:`unittest.mock` - docs for a complete explanation, which is meant for :func:`unittest.mock.patch` but - applies to ``monkeypatch.setattr`` as well. - """ - __tracebackhide__ = True - import inspect - - if isinstance(value, Notset): - if not isinstance(target, str): - raise TypeError( - "use setattr(target, name, value) or " - "setattr(target, value) with target being a dotted " - "import string" - ) - value = name - name, target = derive_importpath(target, raising) - else: - if not isinstance(name, str): - raise TypeError( - "use setattr(target, name, value) with name being a string or " - "setattr(target, value) with target being a dotted " - "import string" - ) - - oldval = getattr(target, name, notset) - if raising and oldval is notset: - raise AttributeError(f"{target!r} has no attribute {name!r}") - - # avoid class descriptors like staticmethod/classmethod - if inspect.isclass(target): - oldval = target.__dict__.get(name, notset) - self._setattr.append((target, name, oldval)) - setattr(target, name, value) - - def delattr( - self, - target: Union[object, str], - name: Union[str, Notset] = notset, - raising: bool = True, - ) -> None: - """Delete attribute ``name`` from ``target``. - - If no ``name`` is specified and ``target`` is a string - it will be interpreted as a dotted import path with the - last part being the attribute name. - - Raises AttributeError it the attribute does not exist, unless - ``raising`` is set to False. - """ - __tracebackhide__ = True - import inspect - - if isinstance(name, Notset): - if not isinstance(target, str): - raise TypeError( - "use delattr(target, name) or " - "delattr(target) with target being a dotted " - "import string" - ) - name, target = derive_importpath(target, raising) - - if not hasattr(target, name): - if raising: - raise AttributeError(name) - else: - oldval = getattr(target, name, notset) - # Avoid class descriptors like staticmethod/classmethod. - if inspect.isclass(target): - oldval = target.__dict__.get(name, notset) - self._setattr.append((target, name, oldval)) - delattr(target, name) - - def setitem(self, dic: MutableMapping[K, V], name: K, value: V) -> None: - """Set dictionary entry ``name`` to value.""" - self._setitem.append((dic, name, dic.get(name, notset))) - dic[name] = value - - def delitem(self, dic: MutableMapping[K, V], name: K, raising: bool = True) -> None: - """Delete ``name`` from dict. - - Raises ``KeyError`` if it doesn't exist, unless ``raising`` is set to - False. - """ - if name not in dic: - if raising: - raise KeyError(name) - else: - self._setitem.append((dic, name, dic.get(name, notset))) - del dic[name] - - def setenv(self, name: str, value: str, prepend: Optional[str] = None) -> None: - """Set environment variable ``name`` to ``value``. - - If ``prepend`` is a character, read the current environment variable - value and prepend the ``value`` adjoined with the ``prepend`` - character. - """ - if not isinstance(value, str): - warnings.warn( # type: ignore[unreachable] - PytestWarning( - "Value of environment variable {name} type should be str, but got " - "{value!r} (type: {type}); converted to str implicitly".format( - name=name, value=value, type=type(value).__name__ - ) - ), - stacklevel=2, - ) - value = str(value) - if prepend and name in os.environ: - value = value + prepend + os.environ[name] - self.setitem(os.environ, name, value) - - def delenv(self, name: str, raising: bool = True) -> None: - """Delete ``name`` from the environment. - - Raises ``KeyError`` if it does not exist, unless ``raising`` is set to - False. - """ - environ: MutableMapping[str, str] = os.environ - self.delitem(environ, name, raising=raising) - - def syspath_prepend(self, path) -> None: - """Prepend ``path`` to ``sys.path`` list of import locations.""" - - if self._savesyspath is None: - self._savesyspath = sys.path[:] - sys.path.insert(0, str(path)) - - # https://github.com/pypa/setuptools/blob/d8b901bc/docs/pkg_resources.txt#L162-L171 - # this is only needed when pkg_resources was already loaded by the namespace package - if "pkg_resources" in sys.modules: - from pkg_resources import fixup_namespace_packages - - fixup_namespace_packages(str(path)) - - # A call to syspathinsert() usually means that the caller wants to - # import some dynamically created files, thus with python3 we - # invalidate its import caches. - # This is especially important when any namespace package is in use, - # since then the mtime based FileFinder cache (that gets created in - # this case already) gets not invalidated when writing the new files - # quickly afterwards. - from importlib import invalidate_caches - - invalidate_caches() - - def chdir(self, path: Union[str, "os.PathLike[str]"]) -> None: - """Change the current working directory to the specified path. - - :param path: - The path to change into. - """ - if self._cwd is None: - self._cwd = os.getcwd() - os.chdir(path) - - def undo(self) -> None: - """Undo previous changes. - - This call consumes the undo stack. Calling it a second time has no - effect unless you do more monkeypatching after the undo call. - - There is generally no need to call `undo()`, since it is - called automatically during tear-down. - - .. note:: - The same `monkeypatch` fixture is used across a - single test function invocation. If `monkeypatch` is used both by - the test function itself and one of the test fixtures, - calling `undo()` will undo all of the changes made in - both functions. - - Prefer to use :meth:`context() ` instead. - """ - for obj, name, value in reversed(self._setattr): - if value is not notset: - setattr(obj, name, value) - else: - delattr(obj, name) - self._setattr[:] = [] - for dictionary, key, value in reversed(self._setitem): - if value is notset: - try: - del dictionary[key] - except KeyError: - pass # Was already deleted, so we have the desired state. - else: - dictionary[key] = value - self._setitem[:] = [] - if self._savesyspath is not None: - sys.path[:] = self._savesyspath - self._savesyspath = None - - if self._cwd is not None: - os.chdir(self._cwd) - self._cwd = None diff --git a/venv/lib/python3.12/site-packages/_pytest/nodes.py b/venv/lib/python3.12/site-packages/_pytest/nodes.py deleted file mode 100644 index cfb9b5a..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/nodes.py +++ /dev/null @@ -1,771 +0,0 @@ -import os -import warnings -from inspect import signature -from pathlib import Path -from typing import Any -from typing import Callable -from typing import cast -from typing import Iterable -from typing import Iterator -from typing import List -from typing import MutableMapping -from typing import Optional -from typing import overload -from typing import Set -from typing import Tuple -from typing import Type -from typing import TYPE_CHECKING -from typing import TypeVar -from typing import Union - -import _pytest._code -from _pytest._code import getfslineno -from _pytest._code.code import ExceptionInfo -from _pytest._code.code import TerminalRepr -from _pytest.compat import cached_property -from _pytest.compat import LEGACY_PATH -from _pytest.config import Config -from _pytest.config import ConftestImportFailure -from _pytest.deprecated import FSCOLLECTOR_GETHOOKPROXY_ISINITPATH -from _pytest.deprecated import NODE_CTOR_FSPATH_ARG -from _pytest.mark.structures import Mark -from _pytest.mark.structures import MarkDecorator -from _pytest.mark.structures import NodeKeywords -from _pytest.outcomes import fail -from _pytest.pathlib import absolutepath -from _pytest.pathlib import commonpath -from _pytest.stash import Stash -from _pytest.warning_types import PytestWarning - -if TYPE_CHECKING: - # Imported here due to circular import. - from _pytest.main import Session - from _pytest._code.code import _TracebackStyle - - -SEP = "/" - -tracebackcutdir = Path(_pytest.__file__).parent - - -def iterparentnodeids(nodeid: str) -> Iterator[str]: - """Return the parent node IDs of a given node ID, inclusive. - - For the node ID - - "testing/code/test_excinfo.py::TestFormattedExcinfo::test_repr_source" - - the result would be - - "" - "testing" - "testing/code" - "testing/code/test_excinfo.py" - "testing/code/test_excinfo.py::TestFormattedExcinfo" - "testing/code/test_excinfo.py::TestFormattedExcinfo::test_repr_source" - - Note that / components are only considered until the first ::. - """ - pos = 0 - first_colons: Optional[int] = nodeid.find("::") - if first_colons == -1: - first_colons = None - # The root Session node - always present. - yield "" - # Eagerly consume SEP parts until first colons. - while True: - at = nodeid.find(SEP, pos, first_colons) - if at == -1: - break - if at > 0: - yield nodeid[:at] - pos = at + len(SEP) - # Eagerly consume :: parts. - while True: - at = nodeid.find("::", pos) - if at == -1: - break - if at > 0: - yield nodeid[:at] - pos = at + len("::") - # The node ID itself. - if nodeid: - yield nodeid - - -def _check_path(path: Path, fspath: LEGACY_PATH) -> None: - if Path(fspath) != path: - raise ValueError( - f"Path({fspath!r}) != {path!r}\n" - "if both path and fspath are given they need to be equal" - ) - - -def _imply_path( - node_type: Type["Node"], - path: Optional[Path], - fspath: Optional[LEGACY_PATH], -) -> Path: - if fspath is not None: - warnings.warn( - NODE_CTOR_FSPATH_ARG.format( - node_type_name=node_type.__name__, - ), - stacklevel=6, - ) - if path is not None: - if fspath is not None: - _check_path(path, fspath) - return path - else: - assert fspath is not None - return Path(fspath) - - -_NodeType = TypeVar("_NodeType", bound="Node") - - -class NodeMeta(type): - def __call__(self, *k, **kw): - msg = ( - "Direct construction of {name} has been deprecated, please use {name}.from_parent.\n" - "See " - "https://docs.pytest.org/en/stable/deprecations.html#node-construction-changed-to-node-from-parent" - " for more details." - ).format(name=f"{self.__module__}.{self.__name__}") - fail(msg, pytrace=False) - - def _create(self, *k, **kw): - try: - return super().__call__(*k, **kw) - except TypeError: - sig = signature(getattr(self, "__init__")) - known_kw = {k: v for k, v in kw.items() if k in sig.parameters} - from .warning_types import PytestDeprecationWarning - - warnings.warn( - PytestDeprecationWarning( - f"{self} is not using a cooperative constructor and only takes {set(known_kw)}.\n" - "See https://docs.pytest.org/en/stable/deprecations.html" - "#constructors-of-custom-pytest-node-subclasses-should-take-kwargs " - "for more details." - ) - ) - - return super().__call__(*k, **known_kw) - - -class Node(metaclass=NodeMeta): - """Base class for Collector and Item, the components of the test - collection tree. - - Collector subclasses have children; Items are leaf nodes. - """ - - # Implemented in the legacypath plugin. - #: A ``LEGACY_PATH`` copy of the :attr:`path` attribute. Intended for usage - #: for methods not migrated to ``pathlib.Path`` yet, such as - #: :meth:`Item.reportinfo`. Will be deprecated in a future release, prefer - #: using :attr:`path` instead. - fspath: LEGACY_PATH - - # Use __slots__ to make attribute access faster. - # Note that __dict__ is still available. - __slots__ = ( - "name", - "parent", - "config", - "session", - "path", - "_nodeid", - "_store", - "__dict__", - ) - - def __init__( - self, - name: str, - parent: "Optional[Node]" = None, - config: Optional[Config] = None, - session: "Optional[Session]" = None, - fspath: Optional[LEGACY_PATH] = None, - path: Optional[Path] = None, - nodeid: Optional[str] = None, - ) -> None: - #: A unique name within the scope of the parent node. - self.name: str = name - - #: The parent collector node. - self.parent = parent - - if config: - #: The pytest config object. - self.config: Config = config - else: - if not parent: - raise TypeError("config or parent must be provided") - self.config = parent.config - - if session: - #: The pytest session this node is part of. - self.session: Session = session - else: - if not parent: - raise TypeError("session or parent must be provided") - self.session = parent.session - - if path is None and fspath is None: - path = getattr(parent, "path", None) - #: Filesystem path where this node was collected from (can be None). - self.path: Path = _imply_path(type(self), path, fspath=fspath) - - # The explicit annotation is to avoid publicly exposing NodeKeywords. - #: Keywords/markers collected from all scopes. - self.keywords: MutableMapping[str, Any] = NodeKeywords(self) - - #: The marker objects belonging to this node. - self.own_markers: List[Mark] = [] - - #: Allow adding of extra keywords to use for matching. - self.extra_keyword_matches: Set[str] = set() - - if nodeid is not None: - assert "::()" not in nodeid - self._nodeid = nodeid - else: - if not self.parent: - raise TypeError("nodeid or parent must be provided") - self._nodeid = self.parent.nodeid + "::" + self.name - - #: A place where plugins can store information on the node for their - #: own use. - self.stash: Stash = Stash() - # Deprecated alias. Was never public. Can be removed in a few releases. - self._store = self.stash - - @classmethod - def from_parent(cls, parent: "Node", **kw): - """Public constructor for Nodes. - - This indirection got introduced in order to enable removing - the fragile logic from the node constructors. - - Subclasses can use ``super().from_parent(...)`` when overriding the - construction. - - :param parent: The parent node of this Node. - """ - if "config" in kw: - raise TypeError("config is not a valid argument for from_parent") - if "session" in kw: - raise TypeError("session is not a valid argument for from_parent") - return cls._create(parent=parent, **kw) - - @property - def ihook(self): - """fspath-sensitive hook proxy used to call pytest hooks.""" - return self.session.gethookproxy(self.path) - - def __repr__(self) -> str: - return "<{} {}>".format(self.__class__.__name__, getattr(self, "name", None)) - - def warn(self, warning: Warning) -> None: - """Issue a warning for this Node. - - Warnings will be displayed after the test session, unless explicitly suppressed. - - :param Warning warning: - The warning instance to issue. - - :raises ValueError: If ``warning`` instance is not a subclass of Warning. - - Example usage: - - .. code-block:: python - - node.warn(PytestWarning("some message")) - node.warn(UserWarning("some message")) - - .. versionchanged:: 6.2 - Any subclass of :class:`Warning` is now accepted, rather than only - :class:`PytestWarning ` subclasses. - """ - # enforce type checks here to avoid getting a generic type error later otherwise. - if not isinstance(warning, Warning): - raise ValueError( - "warning must be an instance of Warning or subclass, got {!r}".format( - warning - ) - ) - path, lineno = get_fslocation_from_item(self) - assert lineno is not None - warnings.warn_explicit( - warning, - category=None, - filename=str(path), - lineno=lineno + 1, - ) - - # Methods for ordering nodes. - - @property - def nodeid(self) -> str: - """A ::-separated string denoting its collection tree address.""" - return self._nodeid - - def __hash__(self) -> int: - return hash(self._nodeid) - - def setup(self) -> None: - pass - - def teardown(self) -> None: - pass - - def listchain(self) -> List["Node"]: - """Return list of all parent collectors up to self, starting from - the root of collection tree. - - :returns: The nodes. - """ - chain = [] - item: Optional[Node] = self - while item is not None: - chain.append(item) - item = item.parent - chain.reverse() - return chain - - def add_marker( - self, marker: Union[str, MarkDecorator], append: bool = True - ) -> None: - """Dynamically add a marker object to the node. - - :param marker: - The marker. - :param append: - Whether to append the marker, or prepend it. - """ - from _pytest.mark import MARK_GEN - - if isinstance(marker, MarkDecorator): - marker_ = marker - elif isinstance(marker, str): - marker_ = getattr(MARK_GEN, marker) - else: - raise ValueError("is not a string or pytest.mark.* Marker") - self.keywords[marker_.name] = marker_ - if append: - self.own_markers.append(marker_.mark) - else: - self.own_markers.insert(0, marker_.mark) - - def iter_markers(self, name: Optional[str] = None) -> Iterator[Mark]: - """Iterate over all markers of the node. - - :param name: If given, filter the results by the name attribute. - :returns: An iterator of the markers of the node. - """ - return (x[1] for x in self.iter_markers_with_node(name=name)) - - def iter_markers_with_node( - self, name: Optional[str] = None - ) -> Iterator[Tuple["Node", Mark]]: - """Iterate over all markers of the node. - - :param name: If given, filter the results by the name attribute. - :returns: An iterator of (node, mark) tuples. - """ - for node in reversed(self.listchain()): - for mark in node.own_markers: - if name is None or getattr(mark, "name", None) == name: - yield node, mark - - @overload - def get_closest_marker(self, name: str) -> Optional[Mark]: - ... - - @overload - def get_closest_marker(self, name: str, default: Mark) -> Mark: - ... - - def get_closest_marker( - self, name: str, default: Optional[Mark] = None - ) -> Optional[Mark]: - """Return the first marker matching the name, from closest (for - example function) to farther level (for example module level). - - :param default: Fallback return value if no marker was found. - :param name: Name to filter by. - """ - return next(self.iter_markers(name=name), default) - - def listextrakeywords(self) -> Set[str]: - """Return a set of all extra keywords in self and any parents.""" - extra_keywords: Set[str] = set() - for item in self.listchain(): - extra_keywords.update(item.extra_keyword_matches) - return extra_keywords - - def listnames(self) -> List[str]: - return [x.name for x in self.listchain()] - - def addfinalizer(self, fin: Callable[[], object]) -> None: - """Register a function to be called without arguments when this node is - finalized. - - This method can only be called when this node is active - in a setup chain, for example during self.setup(). - """ - self.session._setupstate.addfinalizer(fin, self) - - def getparent(self, cls: Type[_NodeType]) -> Optional[_NodeType]: - """Get the next parent node (including self) which is an instance of - the given class. - - :param cls: The node class to search for. - :returns: The node, if found. - """ - current: Optional[Node] = self - while current and not isinstance(current, cls): - current = current.parent - assert current is None or isinstance(current, cls) - return current - - def _prunetraceback(self, excinfo: ExceptionInfo[BaseException]) -> None: - pass - - def _repr_failure_py( - self, - excinfo: ExceptionInfo[BaseException], - style: "Optional[_TracebackStyle]" = None, - ) -> TerminalRepr: - from _pytest.fixtures import FixtureLookupError - - if isinstance(excinfo.value, ConftestImportFailure): - excinfo = ExceptionInfo.from_exc_info(excinfo.value.excinfo) - if isinstance(excinfo.value, fail.Exception): - if not excinfo.value.pytrace: - style = "value" - if isinstance(excinfo.value, FixtureLookupError): - return excinfo.value.formatrepr() - if self.config.getoption("fulltrace", False): - style = "long" - else: - tb = _pytest._code.Traceback([excinfo.traceback[-1]]) - self._prunetraceback(excinfo) - if len(excinfo.traceback) == 0: - excinfo.traceback = tb - if style == "auto": - style = "long" - # XXX should excinfo.getrepr record all data and toterminal() process it? - if style is None: - if self.config.getoption("tbstyle", "auto") == "short": - style = "short" - else: - style = "long" - - if self.config.getoption("verbose", 0) > 1: - truncate_locals = False - else: - truncate_locals = True - - # excinfo.getrepr() formats paths relative to the CWD if `abspath` is False. - # It is possible for a fixture/test to change the CWD while this code runs, which - # would then result in the user seeing confusing paths in the failure message. - # To fix this, if the CWD changed, always display the full absolute path. - # It will be better to just always display paths relative to invocation_dir, but - # this requires a lot of plumbing (#6428). - try: - abspath = Path(os.getcwd()) != self.config.invocation_params.dir - except OSError: - abspath = True - - return excinfo.getrepr( - funcargs=True, - abspath=abspath, - showlocals=self.config.getoption("showlocals", False), - style=style, - tbfilter=False, # pruned already, or in --fulltrace mode. - truncate_locals=truncate_locals, - ) - - def repr_failure( - self, - excinfo: ExceptionInfo[BaseException], - style: "Optional[_TracebackStyle]" = None, - ) -> Union[str, TerminalRepr]: - """Return a representation of a collection or test failure. - - .. seealso:: :ref:`non-python tests` - - :param excinfo: Exception information for the failure. - """ - return self._repr_failure_py(excinfo, style) - - -def get_fslocation_from_item(node: "Node") -> Tuple[Union[str, Path], Optional[int]]: - """Try to extract the actual location from a node, depending on available attributes: - - * "location": a pair (path, lineno) - * "obj": a Python object that the node wraps. - * "fspath": just a path - - :rtype: A tuple of (str|Path, int) with filename and line number. - """ - # See Item.location. - location: Optional[Tuple[str, Optional[int], str]] = getattr(node, "location", None) - if location is not None: - return location[:2] - obj = getattr(node, "obj", None) - if obj is not None: - return getfslineno(obj) - return getattr(node, "fspath", "unknown location"), -1 - - -class Collector(Node): - """Collector instances create children through collect() and thus - iteratively build a tree.""" - - class CollectError(Exception): - """An error during collection, contains a custom message.""" - - def collect(self) -> Iterable[Union["Item", "Collector"]]: - """Return a list of children (items and collectors) for this - collection node.""" - raise NotImplementedError("abstract") - - # TODO: This omits the style= parameter which breaks Liskov Substitution. - def repr_failure( # type: ignore[override] - self, excinfo: ExceptionInfo[BaseException] - ) -> Union[str, TerminalRepr]: - """Return a representation of a collection failure. - - :param excinfo: Exception information for the failure. - """ - if isinstance(excinfo.value, self.CollectError) and not self.config.getoption( - "fulltrace", False - ): - exc = excinfo.value - return str(exc.args[0]) - - # Respect explicit tbstyle option, but default to "short" - # (_repr_failure_py uses "long" with "fulltrace" option always). - tbstyle = self.config.getoption("tbstyle", "auto") - if tbstyle == "auto": - tbstyle = "short" - - return self._repr_failure_py(excinfo, style=tbstyle) - - def _prunetraceback(self, excinfo: ExceptionInfo[BaseException]) -> None: - if hasattr(self, "path"): - traceback = excinfo.traceback - ntraceback = traceback.cut(path=self.path) - if ntraceback == traceback: - ntraceback = ntraceback.cut(excludepath=tracebackcutdir) - excinfo.traceback = ntraceback.filter() - - -def _check_initialpaths_for_relpath(session: "Session", path: Path) -> Optional[str]: - for initial_path in session._initialpaths: - if commonpath(path, initial_path) == initial_path: - rel = str(path.relative_to(initial_path)) - return "" if rel == "." else rel - return None - - -class FSCollector(Collector): - def __init__( - self, - fspath: Optional[LEGACY_PATH] = None, - path_or_parent: Optional[Union[Path, Node]] = None, - path: Optional[Path] = None, - name: Optional[str] = None, - parent: Optional[Node] = None, - config: Optional[Config] = None, - session: Optional["Session"] = None, - nodeid: Optional[str] = None, - ) -> None: - if path_or_parent: - if isinstance(path_or_parent, Node): - assert parent is None - parent = cast(FSCollector, path_or_parent) - elif isinstance(path_or_parent, Path): - assert path is None - path = path_or_parent - - path = _imply_path(type(self), path, fspath=fspath) - if name is None: - name = path.name - if parent is not None and parent.path != path: - try: - rel = path.relative_to(parent.path) - except ValueError: - pass - else: - name = str(rel) - name = name.replace(os.sep, SEP) - self.path = path - - if session is None: - assert parent is not None - session = parent.session - - if nodeid is None: - try: - nodeid = str(self.path.relative_to(session.config.rootpath)) - except ValueError: - nodeid = _check_initialpaths_for_relpath(session, path) - - if nodeid and os.sep != SEP: - nodeid = nodeid.replace(os.sep, SEP) - - super().__init__( - name=name, - parent=parent, - config=config, - session=session, - nodeid=nodeid, - path=path, - ) - - @classmethod - def from_parent( - cls, - parent, - *, - fspath: Optional[LEGACY_PATH] = None, - path: Optional[Path] = None, - **kw, - ): - """The public constructor.""" - return super().from_parent(parent=parent, fspath=fspath, path=path, **kw) - - def gethookproxy(self, fspath: "os.PathLike[str]"): - warnings.warn(FSCOLLECTOR_GETHOOKPROXY_ISINITPATH, stacklevel=2) - return self.session.gethookproxy(fspath) - - def isinitpath(self, path: Union[str, "os.PathLike[str]"]) -> bool: - warnings.warn(FSCOLLECTOR_GETHOOKPROXY_ISINITPATH, stacklevel=2) - return self.session.isinitpath(path) - - -class File(FSCollector): - """Base class for collecting tests from a file. - - :ref:`non-python tests`. - """ - - -class Item(Node): - """A basic test invocation item. - - Note that for a single function there might be multiple test invocation items. - """ - - nextitem = None - - def __init__( - self, - name, - parent=None, - config: Optional[Config] = None, - session: Optional["Session"] = None, - nodeid: Optional[str] = None, - **kw, - ) -> None: - # The first two arguments are intentionally passed positionally, - # to keep plugins who define a node type which inherits from - # (pytest.Item, pytest.File) working (see issue #8435). - # They can be made kwargs when the deprecation above is done. - super().__init__( - name, - parent, - config=config, - session=session, - nodeid=nodeid, - **kw, - ) - self._report_sections: List[Tuple[str, str, str]] = [] - - #: A list of tuples (name, value) that holds user defined properties - #: for this test. - self.user_properties: List[Tuple[str, object]] = [] - - self._check_item_and_collector_diamond_inheritance() - - def _check_item_and_collector_diamond_inheritance(self) -> None: - """ - Check if the current type inherits from both File and Collector - at the same time, emitting a warning accordingly (#8447). - """ - cls = type(self) - - # We inject an attribute in the type to avoid issuing this warning - # for the same class more than once, which is not helpful. - # It is a hack, but was deemed acceptable in order to avoid - # flooding the user in the common case. - attr_name = "_pytest_diamond_inheritance_warning_shown" - if getattr(cls, attr_name, False): - return - setattr(cls, attr_name, True) - - problems = ", ".join( - base.__name__ for base in cls.__bases__ if issubclass(base, Collector) - ) - if problems: - warnings.warn( - f"{cls.__name__} is an Item subclass and should not be a collector, " - f"however its bases {problems} are collectors.\n" - "Please split the Collectors and the Item into separate node types.\n" - "Pytest Doc example: https://docs.pytest.org/en/latest/example/nonpython.html\n" - "example pull request on a plugin: https://github.com/asmeurer/pytest-flakes/pull/40/", - PytestWarning, - ) - - def runtest(self) -> None: - """Run the test case for this item. - - Must be implemented by subclasses. - - .. seealso:: :ref:`non-python tests` - """ - raise NotImplementedError("runtest must be implemented by Item subclass") - - def add_report_section(self, when: str, key: str, content: str) -> None: - """Add a new report section, similar to what's done internally to add - stdout and stderr captured output:: - - item.add_report_section("call", "stdout", "report section contents") - - :param str when: - One of the possible capture states, ``"setup"``, ``"call"``, ``"teardown"``. - :param str key: - Name of the section, can be customized at will. Pytest uses ``"stdout"`` and - ``"stderr"`` internally. - :param str content: - The full contents as a string. - """ - if content: - self._report_sections.append((when, key, content)) - - def reportinfo(self) -> Tuple[Union["os.PathLike[str]", str], Optional[int], str]: - """Get location information for this item for test reports. - - Returns a tuple with three elements: - - - The path of the test (default ``self.path``) - - The line number of the test (default ``None``) - - A name of the test to be shown (default ``""``) - - .. seealso:: :ref:`non-python tests` - """ - return self.path, None, "" - - @cached_property - def location(self) -> Tuple[str, Optional[int], str]: - location = self.reportinfo() - path = absolutepath(os.fspath(location[0])) - relfspath = self.session._node_location_to_relpath(path) - assert type(location[2]) is str - return (relfspath, location[1], location[2]) diff --git a/venv/lib/python3.12/site-packages/_pytest/nose.py b/venv/lib/python3.12/site-packages/_pytest/nose.py deleted file mode 100644 index 273bd04..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/nose.py +++ /dev/null @@ -1,50 +0,0 @@ -"""Run testsuites written for nose.""" -import warnings - -from _pytest.config import hookimpl -from _pytest.deprecated import NOSE_SUPPORT -from _pytest.fixtures import getfixturemarker -from _pytest.nodes import Item -from _pytest.python import Function -from _pytest.unittest import TestCaseFunction - - -@hookimpl(trylast=True) -def pytest_runtest_setup(item: Item) -> None: - if not isinstance(item, Function): - return - # Don't do nose style setup/teardown on direct unittest style classes. - if isinstance(item, TestCaseFunction): - return - - # Capture the narrowed type of item for the teardown closure, - # see https://github.com/python/mypy/issues/2608 - func = item - - call_optional(func.obj, "setup", func.nodeid) - func.addfinalizer(lambda: call_optional(func.obj, "teardown", func.nodeid)) - - # NOTE: Module- and class-level fixtures are handled in python.py - # with `pluginmanager.has_plugin("nose")` checks. - # It would have been nicer to implement them outside of core, but - # it's not straightforward. - - -def call_optional(obj: object, name: str, nodeid: str) -> bool: - method = getattr(obj, name, None) - if method is None: - return False - is_fixture = getfixturemarker(method) is not None - if is_fixture: - return False - if not callable(method): - return False - # Warn about deprecation of this plugin. - method_name = getattr(method, "__name__", str(method)) - warnings.warn( - NOSE_SUPPORT.format(nodeid=nodeid, method=method_name, stage=name), stacklevel=2 - ) - # If there are any problems allow the exception to raise rather than - # silently ignoring it. - method() - return True diff --git a/venv/lib/python3.12/site-packages/_pytest/outcomes.py b/venv/lib/python3.12/site-packages/_pytest/outcomes.py deleted file mode 100644 index 3efd1de..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/outcomes.py +++ /dev/null @@ -1,312 +0,0 @@ -"""Exception classes and constants handling test outcomes as well as -functions creating them.""" -import sys -import warnings -from typing import Any -from typing import Callable -from typing import cast -from typing import NoReturn -from typing import Optional -from typing import Type -from typing import TypeVar - -from _pytest.deprecated import KEYWORD_MSG_ARG - -TYPE_CHECKING = False # Avoid circular import through compat. - -if TYPE_CHECKING: - from typing_extensions import Protocol -else: - # typing.Protocol is only available starting from Python 3.8. It is also - # available from typing_extensions, but we don't want a runtime dependency - # on that. So use a dummy runtime implementation. - from typing import Generic - - Protocol = Generic - - -class OutcomeException(BaseException): - """OutcomeException and its subclass instances indicate and contain info - about test and collection outcomes.""" - - def __init__(self, msg: Optional[str] = None, pytrace: bool = True) -> None: - if msg is not None and not isinstance(msg, str): - error_msg = ( # type: ignore[unreachable] - "{} expected string as 'msg' parameter, got '{}' instead.\n" - "Perhaps you meant to use a mark?" - ) - raise TypeError(error_msg.format(type(self).__name__, type(msg).__name__)) - super().__init__(msg) - self.msg = msg - self.pytrace = pytrace - - def __repr__(self) -> str: - if self.msg is not None: - return self.msg - return f"<{self.__class__.__name__} instance>" - - __str__ = __repr__ - - -TEST_OUTCOME = (OutcomeException, Exception) - - -class Skipped(OutcomeException): - # XXX hackish: on 3k we fake to live in the builtins - # in order to have Skipped exception printing shorter/nicer - __module__ = "builtins" - - def __init__( - self, - msg: Optional[str] = None, - pytrace: bool = True, - allow_module_level: bool = False, - *, - _use_item_location: bool = False, - ) -> None: - super().__init__(msg=msg, pytrace=pytrace) - self.allow_module_level = allow_module_level - # If true, the skip location is reported as the item's location, - # instead of the place that raises the exception/calls skip(). - self._use_item_location = _use_item_location - - -class Failed(OutcomeException): - """Raised from an explicit call to pytest.fail().""" - - __module__ = "builtins" - - -class Exit(Exception): - """Raised for immediate program exits (no tracebacks/summaries).""" - - def __init__( - self, msg: str = "unknown reason", returncode: Optional[int] = None - ) -> None: - self.msg = msg - self.returncode = returncode - super().__init__(msg) - - -# Elaborate hack to work around https://github.com/python/mypy/issues/2087. -# Ideally would just be `exit.Exception = Exit` etc. - -_F = TypeVar("_F", bound=Callable[..., object]) -_ET = TypeVar("_ET", bound=Type[BaseException]) - - -class _WithException(Protocol[_F, _ET]): - Exception: _ET - __call__: _F - - -def _with_exception(exception_type: _ET) -> Callable[[_F], _WithException[_F, _ET]]: - def decorate(func: _F) -> _WithException[_F, _ET]: - func_with_exception = cast(_WithException[_F, _ET], func) - func_with_exception.Exception = exception_type - return func_with_exception - - return decorate - - -# Exposed helper methods. - - -@_with_exception(Exit) -def exit( - reason: str = "", returncode: Optional[int] = None, *, msg: Optional[str] = None -) -> NoReturn: - """Exit testing process. - - :param reason: - The message to show as the reason for exiting pytest. reason has a default value - only because `msg` is deprecated. - - :param returncode: - Return code to be used when exiting pytest. - - :param msg: - Same as ``reason``, but deprecated. Will be removed in a future version, use ``reason`` instead. - """ - __tracebackhide__ = True - from _pytest.config import UsageError - - if reason and msg: - raise UsageError( - "cannot pass reason and msg to exit(), `msg` is deprecated, use `reason`." - ) - if not reason: - if msg is None: - raise UsageError("exit() requires a reason argument") - warnings.warn(KEYWORD_MSG_ARG.format(func="exit"), stacklevel=2) - reason = msg - raise Exit(reason, returncode) - - -@_with_exception(Skipped) -def skip( - reason: str = "", *, allow_module_level: bool = False, msg: Optional[str] = None -) -> NoReturn: - """Skip an executing test with the given message. - - This function should be called only during testing (setup, call or teardown) or - during collection by using the ``allow_module_level`` flag. This function can - be called in doctests as well. - - :param reason: - The message to show the user as reason for the skip. - - :param allow_module_level: - Allows this function to be called at module level. - Raising the skip exception at module level will stop - the execution of the module and prevent the collection of all tests in the module, - even those defined before the `skip` call. - - Defaults to False. - - :param msg: - Same as ``reason``, but deprecated. Will be removed in a future version, use ``reason`` instead. - - .. note:: - It is better to use the :ref:`pytest.mark.skipif ref` marker when - possible to declare a test to be skipped under certain conditions - like mismatching platforms or dependencies. - Similarly, use the ``# doctest: +SKIP`` directive (see :py:data:`doctest.SKIP`) - to skip a doctest statically. - """ - __tracebackhide__ = True - reason = _resolve_msg_to_reason("skip", reason, msg) - raise Skipped(msg=reason, allow_module_level=allow_module_level) - - -@_with_exception(Failed) -def fail(reason: str = "", pytrace: bool = True, msg: Optional[str] = None) -> NoReturn: - """Explicitly fail an executing test with the given message. - - :param reason: - The message to show the user as reason for the failure. - - :param pytrace: - If False, msg represents the full failure information and no - python traceback will be reported. - - :param msg: - Same as ``reason``, but deprecated. Will be removed in a future version, use ``reason`` instead. - """ - __tracebackhide__ = True - reason = _resolve_msg_to_reason("fail", reason, msg) - raise Failed(msg=reason, pytrace=pytrace) - - -def _resolve_msg_to_reason( - func_name: str, reason: str, msg: Optional[str] = None -) -> str: - """ - Handles converting the deprecated msg parameter if provided into - reason, raising a deprecation warning. This function will be removed - when the optional msg argument is removed from here in future. - - :param str func_name: - The name of the offending function, this is formatted into the deprecation message. - - :param str reason: - The reason= passed into either pytest.fail() or pytest.skip() - - :param str msg: - The msg= passed into either pytest.fail() or pytest.skip(). This will - be converted into reason if it is provided to allow pytest.skip(msg=) or - pytest.fail(msg=) to continue working in the interim period. - - :returns: - The value to use as reason. - - """ - __tracebackhide__ = True - if msg is not None: - - if reason: - from pytest import UsageError - - raise UsageError( - f"Passing both ``reason`` and ``msg`` to pytest.{func_name}(...) is not permitted." - ) - warnings.warn(KEYWORD_MSG_ARG.format(func=func_name), stacklevel=3) - reason = msg - return reason - - -class XFailed(Failed): - """Raised from an explicit call to pytest.xfail().""" - - -@_with_exception(XFailed) -def xfail(reason: str = "") -> NoReturn: - """Imperatively xfail an executing test or setup function with the given reason. - - This function should be called only during testing (setup, call or teardown). - - :param reason: - The message to show the user as reason for the xfail. - - .. note:: - It is better to use the :ref:`pytest.mark.xfail ref` marker when - possible to declare a test to be xfailed under certain conditions - like known bugs or missing features. - """ - __tracebackhide__ = True - raise XFailed(reason) - - -def importorskip( - modname: str, minversion: Optional[str] = None, reason: Optional[str] = None -) -> Any: - """Import and return the requested module ``modname``, or skip the - current test if the module cannot be imported. - - :param modname: - The name of the module to import. - :param minversion: - If given, the imported module's ``__version__`` attribute must be at - least this minimal version, otherwise the test is still skipped. - :param reason: - If given, this reason is shown as the message when the module cannot - be imported. - - :returns: - The imported module. This should be assigned to its canonical name. - - Example:: - - docutils = pytest.importorskip("docutils") - """ - import warnings - - __tracebackhide__ = True - compile(modname, "", "eval") # to catch syntaxerrors - - with warnings.catch_warnings(): - # Make sure to ignore ImportWarnings that might happen because - # of existing directories with the same name we're trying to - # import but without a __init__.py file. - warnings.simplefilter("ignore") - try: - __import__(modname) - except ImportError as exc: - if reason is None: - reason = f"could not import {modname!r}: {exc}" - raise Skipped(reason, allow_module_level=True) from None - mod = sys.modules[modname] - if minversion is None: - return mod - verattr = getattr(mod, "__version__", None) - if minversion is not None: - # Imported lazily to improve start-up time. - from packaging.version import Version - - if verattr is None or Version(verattr) < Version(minversion): - raise Skipped( - "module %r has __version__ %r, required is: %r" - % (modname, verattr, minversion), - allow_module_level=True, - ) - return mod diff --git a/venv/lib/python3.12/site-packages/_pytest/pastebin.py b/venv/lib/python3.12/site-packages/_pytest/pastebin.py deleted file mode 100644 index 22c7a62..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/pastebin.py +++ /dev/null @@ -1,110 +0,0 @@ -"""Submit failure or test session information to a pastebin service.""" -import tempfile -from io import StringIO -from typing import IO -from typing import Union - -import pytest -from _pytest.config import Config -from _pytest.config import create_terminal_writer -from _pytest.config.argparsing import Parser -from _pytest.stash import StashKey -from _pytest.terminal import TerminalReporter - - -pastebinfile_key = StashKey[IO[bytes]]() - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("terminal reporting") - group._addoption( - "--pastebin", - metavar="mode", - action="store", - dest="pastebin", - default=None, - choices=["failed", "all"], - help="Send failed|all info to bpaste.net pastebin service", - ) - - -@pytest.hookimpl(trylast=True) -def pytest_configure(config: Config) -> None: - if config.option.pastebin == "all": - tr = config.pluginmanager.getplugin("terminalreporter") - # If no terminal reporter plugin is present, nothing we can do here; - # this can happen when this function executes in a worker node - # when using pytest-xdist, for example. - if tr is not None: - # pastebin file will be UTF-8 encoded binary file. - config.stash[pastebinfile_key] = tempfile.TemporaryFile("w+b") - oldwrite = tr._tw.write - - def tee_write(s, **kwargs): - oldwrite(s, **kwargs) - if isinstance(s, str): - s = s.encode("utf-8") - config.stash[pastebinfile_key].write(s) - - tr._tw.write = tee_write - - -def pytest_unconfigure(config: Config) -> None: - if pastebinfile_key in config.stash: - pastebinfile = config.stash[pastebinfile_key] - # Get terminal contents and delete file. - pastebinfile.seek(0) - sessionlog = pastebinfile.read() - pastebinfile.close() - del config.stash[pastebinfile_key] - # Undo our patching in the terminal reporter. - tr = config.pluginmanager.getplugin("terminalreporter") - del tr._tw.__dict__["write"] - # Write summary. - tr.write_sep("=", "Sending information to Paste Service") - pastebinurl = create_new_paste(sessionlog) - tr.write_line("pastebin session-log: %s\n" % pastebinurl) - - -def create_new_paste(contents: Union[str, bytes]) -> str: - """Create a new paste using the bpaste.net service. - - :contents: Paste contents string. - :returns: URL to the pasted contents, or an error message. - """ - import re - from urllib.request import urlopen - from urllib.parse import urlencode - - params = {"code": contents, "lexer": "text", "expiry": "1week"} - url = "https://bpa.st" - try: - response: str = ( - urlopen(url, data=urlencode(params).encode("ascii")).read().decode("utf-8") - ) - except OSError as exc_info: # urllib errors - return "bad response: %s" % exc_info - m = re.search(r'href="/raw/(\w+)"', response) - if m: - return f"{url}/show/{m.group(1)}" - else: - return "bad response: invalid format ('" + response + "')" - - -def pytest_terminal_summary(terminalreporter: TerminalReporter) -> None: - if terminalreporter.config.option.pastebin != "failed": - return - if "failed" in terminalreporter.stats: - terminalreporter.write_sep("=", "Sending information to Paste Service") - for rep in terminalreporter.stats["failed"]: - try: - msg = rep.longrepr.reprtraceback.reprentries[-1].reprfileloc - except AttributeError: - msg = terminalreporter._getfailureheadline(rep) - file = StringIO() - tw = create_terminal_writer(terminalreporter.config, file) - rep.toterminal(tw) - s = file.getvalue() - assert len(s) - pastebinurl = create_new_paste(s) - terminalreporter.write_line(f"{msg} --> {pastebinurl}") diff --git a/venv/lib/python3.12/site-packages/_pytest/pathlib.py b/venv/lib/python3.12/site-packages/_pytest/pathlib.py deleted file mode 100644 index 3086fa7..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/pathlib.py +++ /dev/null @@ -1,735 +0,0 @@ -import atexit -import contextlib -import fnmatch -import importlib.util -import itertools -import os -import shutil -import sys -import uuid -import warnings -from enum import Enum -from errno import EBADF -from errno import ELOOP -from errno import ENOENT -from errno import ENOTDIR -from functools import partial -from os.path import expanduser -from os.path import expandvars -from os.path import isabs -from os.path import sep -from pathlib import Path -from pathlib import PurePath -from posixpath import sep as posix_sep -from types import ModuleType -from typing import Callable -from typing import Dict -from typing import Iterable -from typing import Iterator -from typing import Optional -from typing import Set -from typing import TypeVar -from typing import Union - -from _pytest.compat import assert_never -from _pytest.outcomes import skip -from _pytest.warning_types import PytestWarning - -LOCK_TIMEOUT = 60 * 60 * 24 * 3 - - -_AnyPurePath = TypeVar("_AnyPurePath", bound=PurePath) - -# The following function, variables and comments were -# copied from cpython 3.9 Lib/pathlib.py file. - -# EBADF - guard against macOS `stat` throwing EBADF -_IGNORED_ERRORS = (ENOENT, ENOTDIR, EBADF, ELOOP) - -_IGNORED_WINERRORS = ( - 21, # ERROR_NOT_READY - drive exists but is not accessible - 1921, # ERROR_CANT_RESOLVE_FILENAME - fix for broken symlink pointing to itself -) - - -def _ignore_error(exception): - return ( - getattr(exception, "errno", None) in _IGNORED_ERRORS - or getattr(exception, "winerror", None) in _IGNORED_WINERRORS - ) - - -def get_lock_path(path: _AnyPurePath) -> _AnyPurePath: - return path.joinpath(".lock") - - -def on_rm_rf_error(func, path: str, exc, *, start_path: Path) -> bool: - """Handle known read-only errors during rmtree. - - The returned value is used only by our own tests. - """ - exctype, excvalue = exc[:2] - - # Another process removed the file in the middle of the "rm_rf" (xdist for example). - # More context: https://github.com/pytest-dev/pytest/issues/5974#issuecomment-543799018 - if isinstance(excvalue, FileNotFoundError): - return False - - if not isinstance(excvalue, PermissionError): - warnings.warn( - PytestWarning(f"(rm_rf) error removing {path}\n{exctype}: {excvalue}") - ) - return False - - if func not in (os.rmdir, os.remove, os.unlink): - if func not in (os.open,): - warnings.warn( - PytestWarning( - "(rm_rf) unknown function {} when removing {}:\n{}: {}".format( - func, path, exctype, excvalue - ) - ) - ) - return False - - # Chmod + retry. - import stat - - def chmod_rw(p: str) -> None: - mode = os.stat(p).st_mode - os.chmod(p, mode | stat.S_IRUSR | stat.S_IWUSR) - - # For files, we need to recursively go upwards in the directories to - # ensure they all are also writable. - p = Path(path) - if p.is_file(): - for parent in p.parents: - chmod_rw(str(parent)) - # Stop when we reach the original path passed to rm_rf. - if parent == start_path: - break - chmod_rw(str(path)) - - func(path) - return True - - -def ensure_extended_length_path(path: Path) -> Path: - """Get the extended-length version of a path (Windows). - - On Windows, by default, the maximum length of a path (MAX_PATH) is 260 - characters, and operations on paths longer than that fail. But it is possible - to overcome this by converting the path to "extended-length" form before - performing the operation: - https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#maximum-path-length-limitation - - On Windows, this function returns the extended-length absolute version of path. - On other platforms it returns path unchanged. - """ - if sys.platform.startswith("win32"): - path = path.resolve() - path = Path(get_extended_length_path_str(str(path))) - return path - - -def get_extended_length_path_str(path: str) -> str: - """Convert a path to a Windows extended length path.""" - long_path_prefix = "\\\\?\\" - unc_long_path_prefix = "\\\\?\\UNC\\" - if path.startswith((long_path_prefix, unc_long_path_prefix)): - return path - # UNC - if path.startswith("\\\\"): - return unc_long_path_prefix + path[2:] - return long_path_prefix + path - - -def rm_rf(path: Path) -> None: - """Remove the path contents recursively, even if some elements - are read-only.""" - path = ensure_extended_length_path(path) - onerror = partial(on_rm_rf_error, start_path=path) - shutil.rmtree(str(path), onerror=onerror) - - -def find_prefixed(root: Path, prefix: str) -> Iterator[Path]: - """Find all elements in root that begin with the prefix, case insensitive.""" - l_prefix = prefix.lower() - for x in root.iterdir(): - if x.name.lower().startswith(l_prefix): - yield x - - -def extract_suffixes(iter: Iterable[PurePath], prefix: str) -> Iterator[str]: - """Return the parts of the paths following the prefix. - - :param iter: Iterator over path names. - :param prefix: Expected prefix of the path names. - """ - p_len = len(prefix) - for p in iter: - yield p.name[p_len:] - - -def find_suffixes(root: Path, prefix: str) -> Iterator[str]: - """Combine find_prefixes and extract_suffixes.""" - return extract_suffixes(find_prefixed(root, prefix), prefix) - - -def parse_num(maybe_num) -> int: - """Parse number path suffixes, returns -1 on error.""" - try: - return int(maybe_num) - except ValueError: - return -1 - - -def _force_symlink( - root: Path, target: Union[str, PurePath], link_to: Union[str, Path] -) -> None: - """Helper to create the current symlink. - - It's full of race conditions that are reasonably OK to ignore - for the context of best effort linking to the latest test run. - - The presumption being that in case of much parallelism - the inaccuracy is going to be acceptable. - """ - current_symlink = root.joinpath(target) - try: - current_symlink.unlink() - except OSError: - pass - try: - current_symlink.symlink_to(link_to) - except Exception: - pass - - -def make_numbered_dir(root: Path, prefix: str, mode: int = 0o700) -> Path: - """Create a directory with an increased number as suffix for the given prefix.""" - for i in range(10): - # try up to 10 times to create the folder - max_existing = max(map(parse_num, find_suffixes(root, prefix)), default=-1) - new_number = max_existing + 1 - new_path = root.joinpath(f"{prefix}{new_number}") - try: - new_path.mkdir(mode=mode) - except Exception: - pass - else: - _force_symlink(root, prefix + "current", new_path) - return new_path - else: - raise OSError( - "could not create numbered dir with prefix " - "{prefix} in {root} after 10 tries".format(prefix=prefix, root=root) - ) - - -def create_cleanup_lock(p: Path) -> Path: - """Create a lock to prevent premature folder cleanup.""" - lock_path = get_lock_path(p) - try: - fd = os.open(str(lock_path), os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o644) - except FileExistsError as e: - raise OSError(f"cannot create lockfile in {p}") from e - else: - pid = os.getpid() - spid = str(pid).encode() - os.write(fd, spid) - os.close(fd) - if not lock_path.is_file(): - raise OSError("lock path got renamed after successful creation") - return lock_path - - -def register_cleanup_lock_removal(lock_path: Path, register=atexit.register): - """Register a cleanup function for removing a lock, by default on atexit.""" - pid = os.getpid() - - def cleanup_on_exit(lock_path: Path = lock_path, original_pid: int = pid) -> None: - current_pid = os.getpid() - if current_pid != original_pid: - # fork - return - try: - lock_path.unlink() - except OSError: - pass - - return register(cleanup_on_exit) - - -def maybe_delete_a_numbered_dir(path: Path) -> None: - """Remove a numbered directory if its lock can be obtained and it does - not seem to be in use.""" - path = ensure_extended_length_path(path) - lock_path = None - try: - lock_path = create_cleanup_lock(path) - parent = path.parent - - garbage = parent.joinpath(f"garbage-{uuid.uuid4()}") - path.rename(garbage) - rm_rf(garbage) - except OSError: - # known races: - # * other process did a cleanup at the same time - # * deletable folder was found - # * process cwd (Windows) - return - finally: - # If we created the lock, ensure we remove it even if we failed - # to properly remove the numbered dir. - if lock_path is not None: - try: - lock_path.unlink() - except OSError: - pass - - -def ensure_deletable(path: Path, consider_lock_dead_if_created_before: float) -> bool: - """Check if `path` is deletable based on whether the lock file is expired.""" - if path.is_symlink(): - return False - lock = get_lock_path(path) - try: - if not lock.is_file(): - return True - except OSError: - # we might not have access to the lock file at all, in this case assume - # we don't have access to the entire directory (#7491). - return False - try: - lock_time = lock.stat().st_mtime - except Exception: - return False - else: - if lock_time < consider_lock_dead_if_created_before: - # We want to ignore any errors while trying to remove the lock such as: - # - PermissionDenied, like the file permissions have changed since the lock creation; - # - FileNotFoundError, in case another pytest process got here first; - # and any other cause of failure. - with contextlib.suppress(OSError): - lock.unlink() - return True - return False - - -def try_cleanup(path: Path, consider_lock_dead_if_created_before: float) -> None: - """Try to cleanup a folder if we can ensure it's deletable.""" - if ensure_deletable(path, consider_lock_dead_if_created_before): - maybe_delete_a_numbered_dir(path) - - -def cleanup_candidates(root: Path, prefix: str, keep: int) -> Iterator[Path]: - """List candidates for numbered directories to be removed - follows py.path.""" - max_existing = max(map(parse_num, find_suffixes(root, prefix)), default=-1) - max_delete = max_existing - keep - paths = find_prefixed(root, prefix) - paths, paths2 = itertools.tee(paths) - numbers = map(parse_num, extract_suffixes(paths2, prefix)) - for path, number in zip(paths, numbers): - if number <= max_delete: - yield path - - -def cleanup_numbered_dir( - root: Path, prefix: str, keep: int, consider_lock_dead_if_created_before: float -) -> None: - """Cleanup for lock driven numbered directories.""" - for path in cleanup_candidates(root, prefix, keep): - try_cleanup(path, consider_lock_dead_if_created_before) - for path in root.glob("garbage-*"): - try_cleanup(path, consider_lock_dead_if_created_before) - - -def make_numbered_dir_with_cleanup( - root: Path, - prefix: str, - keep: int, - lock_timeout: float, - mode: int, -) -> Path: - """Create a numbered dir with a cleanup lock and remove old ones.""" - e = None - for i in range(10): - try: - p = make_numbered_dir(root, prefix, mode) - lock_path = create_cleanup_lock(p) - register_cleanup_lock_removal(lock_path) - except Exception as exc: - e = exc - else: - consider_lock_dead_if_created_before = p.stat().st_mtime - lock_timeout - # Register a cleanup for program exit - atexit.register( - cleanup_numbered_dir, - root, - prefix, - keep, - consider_lock_dead_if_created_before, - ) - return p - assert e is not None - raise e - - -def resolve_from_str(input: str, rootpath: Path) -> Path: - input = expanduser(input) - input = expandvars(input) - if isabs(input): - return Path(input) - else: - return rootpath.joinpath(input) - - -def fnmatch_ex(pattern: str, path: Union[str, "os.PathLike[str]"]) -> bool: - """A port of FNMatcher from py.path.common which works with PurePath() instances. - - The difference between this algorithm and PurePath.match() is that the - latter matches "**" glob expressions for each part of the path, while - this algorithm uses the whole path instead. - - For example: - "tests/foo/bar/doc/test_foo.py" matches pattern "tests/**/doc/test*.py" - with this algorithm, but not with PurePath.match(). - - This algorithm was ported to keep backward-compatibility with existing - settings which assume paths match according this logic. - - References: - * https://bugs.python.org/issue29249 - * https://bugs.python.org/issue34731 - """ - path = PurePath(path) - iswin32 = sys.platform.startswith("win") - - if iswin32 and sep not in pattern and posix_sep in pattern: - # Running on Windows, the pattern has no Windows path separators, - # and the pattern has one or more Posix path separators. Replace - # the Posix path separators with the Windows path separator. - pattern = pattern.replace(posix_sep, sep) - - if sep not in pattern: - name = path.name - else: - name = str(path) - if path.is_absolute() and not os.path.isabs(pattern): - pattern = f"*{os.sep}{pattern}" - return fnmatch.fnmatch(name, pattern) - - -def parts(s: str) -> Set[str]: - parts = s.split(sep) - return {sep.join(parts[: i + 1]) or sep for i in range(len(parts))} - - -def symlink_or_skip(src, dst, **kwargs): - """Make a symlink, or skip the test in case symlinks are not supported.""" - try: - os.symlink(str(src), str(dst), **kwargs) - except OSError as e: - skip(f"symlinks not supported: {e}") - - -class ImportMode(Enum): - """Possible values for `mode` parameter of `import_path`.""" - - prepend = "prepend" - append = "append" - importlib = "importlib" - - -class ImportPathMismatchError(ImportError): - """Raised on import_path() if there is a mismatch of __file__'s. - - This can happen when `import_path` is called multiple times with different filenames that has - the same basename but reside in packages - (for example "/tests1/test_foo.py" and "/tests2/test_foo.py"). - """ - - -def import_path( - p: Union[str, "os.PathLike[str]"], - *, - mode: Union[str, ImportMode] = ImportMode.prepend, - root: Path, -) -> ModuleType: - """Import and return a module from the given path, which can be a file (a module) or - a directory (a package). - - The import mechanism used is controlled by the `mode` parameter: - - * `mode == ImportMode.prepend`: the directory containing the module (or package, taking - `__init__.py` files into account) will be put at the *start* of `sys.path` before - being imported with `importlib.import_module`. - - * `mode == ImportMode.append`: same as `prepend`, but the directory will be appended - to the end of `sys.path`, if not already in `sys.path`. - - * `mode == ImportMode.importlib`: uses more fine control mechanisms provided by `importlib` - to import the module, which avoids having to muck with `sys.path` at all. It effectively - allows having same-named test modules in different places. - - :param root: - Used as an anchor when mode == ImportMode.importlib to obtain - a unique name for the module being imported so it can safely be stored - into ``sys.modules``. - - :raises ImportPathMismatchError: - If after importing the given `path` and the module `__file__` - are different. Only raised in `prepend` and `append` modes. - """ - mode = ImportMode(mode) - - path = Path(p) - - if not path.exists(): - raise ImportError(path) - - if mode is ImportMode.importlib: - module_name = module_name_from_path(path, root) - - for meta_importer in sys.meta_path: - spec = meta_importer.find_spec(module_name, [str(path.parent)]) - if spec is not None: - break - else: - spec = importlib.util.spec_from_file_location(module_name, str(path)) - - if spec is None: - raise ImportError(f"Can't find module {module_name} at location {path}") - mod = importlib.util.module_from_spec(spec) - sys.modules[module_name] = mod - spec.loader.exec_module(mod) # type: ignore[union-attr] - insert_missing_modules(sys.modules, module_name) - return mod - - pkg_path = resolve_package_path(path) - if pkg_path is not None: - pkg_root = pkg_path.parent - names = list(path.with_suffix("").relative_to(pkg_root).parts) - if names[-1] == "__init__": - names.pop() - module_name = ".".join(names) - else: - pkg_root = path.parent - module_name = path.stem - - # Change sys.path permanently: restoring it at the end of this function would cause surprising - # problems because of delayed imports: for example, a conftest.py file imported by this function - # might have local imports, which would fail at runtime if we restored sys.path. - if mode is ImportMode.append: - if str(pkg_root) not in sys.path: - sys.path.append(str(pkg_root)) - elif mode is ImportMode.prepend: - if str(pkg_root) != sys.path[0]: - sys.path.insert(0, str(pkg_root)) - else: - assert_never(mode) - - importlib.import_module(module_name) - - mod = sys.modules[module_name] - if path.name == "__init__.py": - return mod - - ignore = os.environ.get("PY_IGNORE_IMPORTMISMATCH", "") - if ignore != "1": - module_file = mod.__file__ - if module_file is None: - raise ImportPathMismatchError(module_name, module_file, path) - - if module_file.endswith((".pyc", ".pyo")): - module_file = module_file[:-1] - if module_file.endswith(os.path.sep + "__init__.py"): - module_file = module_file[: -(len(os.path.sep + "__init__.py"))] - - try: - is_same = _is_same(str(path), module_file) - except FileNotFoundError: - is_same = False - - if not is_same: - raise ImportPathMismatchError(module_name, module_file, path) - - return mod - - -# Implement a special _is_same function on Windows which returns True if the two filenames -# compare equal, to circumvent os.path.samefile returning False for mounts in UNC (#7678). -if sys.platform.startswith("win"): - - def _is_same(f1: str, f2: str) -> bool: - return Path(f1) == Path(f2) or os.path.samefile(f1, f2) - -else: - - def _is_same(f1: str, f2: str) -> bool: - return os.path.samefile(f1, f2) - - -def module_name_from_path(path: Path, root: Path) -> str: - """ - Return a dotted module name based on the given path, anchored on root. - - For example: path="projects/src/tests/test_foo.py" and root="/projects", the - resulting module name will be "src.tests.test_foo". - """ - path = path.with_suffix("") - try: - relative_path = path.relative_to(root) - except ValueError: - # If we can't get a relative path to root, use the full path, except - # for the first part ("d:\\" or "/" depending on the platform, for example). - path_parts = path.parts[1:] - else: - # Use the parts for the relative path to the root path. - path_parts = relative_path.parts - - return ".".join(path_parts) - - -def insert_missing_modules(modules: Dict[str, ModuleType], module_name: str) -> None: - """ - Used by ``import_path`` to create intermediate modules when using mode=importlib. - - When we want to import a module as "src.tests.test_foo" for example, we need - to create empty modules "src" and "src.tests" after inserting "src.tests.test_foo", - otherwise "src.tests.test_foo" is not importable by ``__import__``. - """ - module_parts = module_name.split(".") - while module_name: - if module_name not in modules: - try: - # If sys.meta_path is empty, calling import_module will issue - # a warning and raise ModuleNotFoundError. To avoid the - # warning, we check sys.meta_path explicitly and raise the error - # ourselves to fall back to creating a dummy module. - if not sys.meta_path: - raise ModuleNotFoundError - importlib.import_module(module_name) - except ModuleNotFoundError: - module = ModuleType( - module_name, - doc="Empty module created by pytest's importmode=importlib.", - ) - modules[module_name] = module - module_parts.pop(-1) - module_name = ".".join(module_parts) - - -def resolve_package_path(path: Path) -> Optional[Path]: - """Return the Python package path by looking for the last - directory upwards which still contains an __init__.py. - - Returns None if it can not be determined. - """ - result = None - for parent in itertools.chain((path,), path.parents): - if parent.is_dir(): - if not parent.joinpath("__init__.py").is_file(): - break - if not parent.name.isidentifier(): - break - result = parent - return result - - -def visit( - path: Union[str, "os.PathLike[str]"], recurse: Callable[["os.DirEntry[str]"], bool] -) -> Iterator["os.DirEntry[str]"]: - """Walk a directory recursively, in breadth-first order. - - Entries at each directory level are sorted. - """ - - # Skip entries with symlink loops and other brokenness, so the caller doesn't - # have to deal with it. - entries = [] - for entry in os.scandir(path): - try: - entry.is_file() - except OSError as err: - if _ignore_error(err): - continue - raise - entries.append(entry) - - entries.sort(key=lambda entry: entry.name) - - yield from entries - - for entry in entries: - if entry.is_dir() and recurse(entry): - yield from visit(entry.path, recurse) - - -def absolutepath(path: Union[Path, str]) -> Path: - """Convert a path to an absolute path using os.path.abspath. - - Prefer this over Path.resolve() (see #6523). - Prefer this over Path.absolute() (not public, doesn't normalize). - """ - return Path(os.path.abspath(str(path))) - - -def commonpath(path1: Path, path2: Path) -> Optional[Path]: - """Return the common part shared with the other path, or None if there is - no common part. - - If one path is relative and one is absolute, returns None. - """ - try: - return Path(os.path.commonpath((str(path1), str(path2)))) - except ValueError: - return None - - -def bestrelpath(directory: Path, dest: Path) -> str: - """Return a string which is a relative path from directory to dest such - that directory/bestrelpath == dest. - - The paths must be either both absolute or both relative. - - If no such path can be determined, returns dest. - """ - assert isinstance(directory, Path) - assert isinstance(dest, Path) - if dest == directory: - return os.curdir - # Find the longest common directory. - base = commonpath(directory, dest) - # Can be the case on Windows for two absolute paths on different drives. - # Can be the case for two relative paths without common prefix. - # Can be the case for a relative path and an absolute path. - if not base: - return str(dest) - reldirectory = directory.relative_to(base) - reldest = dest.relative_to(base) - return os.path.join( - # Back from directory to base. - *([os.pardir] * len(reldirectory.parts)), - # Forward from base to dest. - *reldest.parts, - ) - - -# Originates from py. path.local.copy(), with siginficant trims and adjustments. -# TODO(py38): Replace with shutil.copytree(..., symlinks=True, dirs_exist_ok=True) -def copytree(source: Path, target: Path) -> None: - """Recursively copy a source directory to target.""" - assert source.is_dir() - for entry in visit(source, recurse=lambda entry: not entry.is_symlink()): - x = Path(entry) - relpath = x.relative_to(source) - newx = target / relpath - newx.parent.mkdir(exist_ok=True) - if x.is_symlink(): - newx.symlink_to(os.readlink(x)) - elif x.is_file(): - shutil.copyfile(x, newx) - elif x.is_dir(): - newx.mkdir(exist_ok=True) diff --git a/venv/lib/python3.12/site-packages/_pytest/py.typed b/venv/lib/python3.12/site-packages/_pytest/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/_pytest/pytester.py b/venv/lib/python3.12/site-packages/_pytest/pytester.py deleted file mode 100644 index a929994..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/pytester.py +++ /dev/null @@ -1,1787 +0,0 @@ -"""(Disabled by default) support for testing pytest and pytest plugins. - -PYTEST_DONT_REWRITE -""" -import collections.abc -import contextlib -import gc -import importlib -import os -import platform -import re -import shutil -import subprocess -import sys -import traceback -from fnmatch import fnmatch -from io import StringIO -from pathlib import Path -from typing import Any -from typing import Callable -from typing import Dict -from typing import Generator -from typing import IO -from typing import Iterable -from typing import List -from typing import Optional -from typing import overload -from typing import Sequence -from typing import TextIO -from typing import Tuple -from typing import Type -from typing import TYPE_CHECKING -from typing import Union -from weakref import WeakKeyDictionary - -from iniconfig import IniConfig -from iniconfig import SectionWrapper - -from _pytest import timing -from _pytest._code import Source -from _pytest.capture import _get_multicapture -from _pytest.compat import final -from _pytest.compat import NOTSET -from _pytest.compat import NotSetType -from _pytest.config import _PluggyPlugin -from _pytest.config import Config -from _pytest.config import ExitCode -from _pytest.config import hookimpl -from _pytest.config import main -from _pytest.config import PytestPluginManager -from _pytest.config.argparsing import Parser -from _pytest.deprecated import check_ispytest -from _pytest.fixtures import fixture -from _pytest.fixtures import FixtureRequest -from _pytest.main import Session -from _pytest.monkeypatch import MonkeyPatch -from _pytest.nodes import Collector -from _pytest.nodes import Item -from _pytest.outcomes import fail -from _pytest.outcomes import importorskip -from _pytest.outcomes import skip -from _pytest.pathlib import bestrelpath -from _pytest.pathlib import copytree -from _pytest.pathlib import make_numbered_dir -from _pytest.reports import CollectReport -from _pytest.reports import TestReport -from _pytest.tmpdir import TempPathFactory -from _pytest.warning_types import PytestWarning - - -if TYPE_CHECKING: - from typing_extensions import Final - from typing_extensions import Literal - - import pexpect - - -pytest_plugins = ["pytester_assertions"] - - -IGNORE_PAM = [ # filenames added when obtaining details about the current user - "/var/lib/sss/mc/passwd" -] - - -def pytest_addoption(parser: Parser) -> None: - parser.addoption( - "--lsof", - action="store_true", - dest="lsof", - default=False, - help="Run FD checks if lsof is available", - ) - - parser.addoption( - "--runpytest", - default="inprocess", - dest="runpytest", - choices=("inprocess", "subprocess"), - help=( - "Run pytest sub runs in tests using an 'inprocess' " - "or 'subprocess' (python -m main) method" - ), - ) - - parser.addini( - "pytester_example_dir", help="Directory to take the pytester example files from" - ) - - -def pytest_configure(config: Config) -> None: - if config.getvalue("lsof"): - checker = LsofFdLeakChecker() - if checker.matching_platform(): - config.pluginmanager.register(checker) - - config.addinivalue_line( - "markers", - "pytester_example_path(*path_segments): join the given path " - "segments to `pytester_example_dir` for this test.", - ) - - -class LsofFdLeakChecker: - def get_open_files(self) -> List[Tuple[str, str]]: - out = subprocess.run( - ("lsof", "-Ffn0", "-p", str(os.getpid())), - stdout=subprocess.PIPE, - stderr=subprocess.DEVNULL, - check=True, - text=True, - ).stdout - - def isopen(line: str) -> bool: - return line.startswith("f") and ( - "deleted" not in line - and "mem" not in line - and "txt" not in line - and "cwd" not in line - ) - - open_files = [] - - for line in out.split("\n"): - if isopen(line): - fields = line.split("\0") - fd = fields[0][1:] - filename = fields[1][1:] - if filename in IGNORE_PAM: - continue - if filename.startswith("/"): - open_files.append((fd, filename)) - - return open_files - - def matching_platform(self) -> bool: - try: - subprocess.run(("lsof", "-v"), check=True) - except (OSError, subprocess.CalledProcessError): - return False - else: - return True - - @hookimpl(hookwrapper=True, tryfirst=True) - def pytest_runtest_protocol(self, item: Item) -> Generator[None, None, None]: - lines1 = self.get_open_files() - yield - if hasattr(sys, "pypy_version_info"): - gc.collect() - lines2 = self.get_open_files() - - new_fds = {t[0] for t in lines2} - {t[0] for t in lines1} - leaked_files = [t for t in lines2 if t[0] in new_fds] - if leaked_files: - error = [ - "***** %s FD leakage detected" % len(leaked_files), - *(str(f) for f in leaked_files), - "*** Before:", - *(str(f) for f in lines1), - "*** After:", - *(str(f) for f in lines2), - "***** %s FD leakage detected" % len(leaked_files), - "*** function %s:%s: %s " % item.location, - "See issue #2366", - ] - item.warn(PytestWarning("\n".join(error))) - - -# used at least by pytest-xdist plugin - - -@fixture -def _pytest(request: FixtureRequest) -> "PytestArg": - """Return a helper which offers a gethookrecorder(hook) method which - returns a HookRecorder instance which helps to make assertions about called - hooks.""" - return PytestArg(request) - - -class PytestArg: - def __init__(self, request: FixtureRequest) -> None: - self._request = request - - def gethookrecorder(self, hook) -> "HookRecorder": - hookrecorder = HookRecorder(hook._pm) - self._request.addfinalizer(hookrecorder.finish_recording) - return hookrecorder - - -def get_public_names(values: Iterable[str]) -> List[str]: - """Only return names from iterator values without a leading underscore.""" - return [x for x in values if x[0] != "_"] - - -@final -class RecordedHookCall: - """A recorded call to a hook. - - The arguments to the hook call are set as attributes. - For example: - - .. code-block:: python - - calls = hook_recorder.getcalls("pytest_runtest_setup") - # Suppose pytest_runtest_setup was called once with `item=an_item`. - assert calls[0].item is an_item - """ - - def __init__(self, name: str, kwargs) -> None: - self.__dict__.update(kwargs) - self._name = name - - def __repr__(self) -> str: - d = self.__dict__.copy() - del d["_name"] - return f"" - - if TYPE_CHECKING: - # The class has undetermined attributes, this tells mypy about it. - def __getattr__(self, key: str): - ... - - -@final -class HookRecorder: - """Record all hooks called in a plugin manager. - - Hook recorders are created by :class:`Pytester`. - - This wraps all the hook calls in the plugin manager, recording each call - before propagating the normal calls. - """ - - def __init__( - self, pluginmanager: PytestPluginManager, *, _ispytest: bool = False - ) -> None: - check_ispytest(_ispytest) - - self._pluginmanager = pluginmanager - self.calls: List[RecordedHookCall] = [] - self.ret: Optional[Union[int, ExitCode]] = None - - def before(hook_name: str, hook_impls, kwargs) -> None: - self.calls.append(RecordedHookCall(hook_name, kwargs)) - - def after(outcome, hook_name: str, hook_impls, kwargs) -> None: - pass - - self._undo_wrapping = pluginmanager.add_hookcall_monitoring(before, after) - - def finish_recording(self) -> None: - self._undo_wrapping() - - def getcalls(self, names: Union[str, Iterable[str]]) -> List[RecordedHookCall]: - """Get all recorded calls to hooks with the given names (or name).""" - if isinstance(names, str): - names = names.split() - return [call for call in self.calls if call._name in names] - - def assert_contains(self, entries: Sequence[Tuple[str, str]]) -> None: - __tracebackhide__ = True - i = 0 - entries = list(entries) - backlocals = sys._getframe(1).f_locals - while entries: - name, check = entries.pop(0) - for ind, call in enumerate(self.calls[i:]): - if call._name == name: - print("NAMEMATCH", name, call) - if eval(check, backlocals, call.__dict__): - print("CHECKERMATCH", repr(check), "->", call) - else: - print("NOCHECKERMATCH", repr(check), "-", call) - continue - i += ind + 1 - break - print("NONAMEMATCH", name, "with", call) - else: - fail(f"could not find {name!r} check {check!r}") - - def popcall(self, name: str) -> RecordedHookCall: - __tracebackhide__ = True - for i, call in enumerate(self.calls): - if call._name == name: - del self.calls[i] - return call - lines = [f"could not find call {name!r}, in:"] - lines.extend([" %s" % x for x in self.calls]) - fail("\n".join(lines)) - - def getcall(self, name: str) -> RecordedHookCall: - values = self.getcalls(name) - assert len(values) == 1, (name, values) - return values[0] - - # functionality for test reports - - @overload - def getreports( - self, - names: "Literal['pytest_collectreport']", - ) -> Sequence[CollectReport]: - ... - - @overload - def getreports( - self, - names: "Literal['pytest_runtest_logreport']", - ) -> Sequence[TestReport]: - ... - - @overload - def getreports( - self, - names: Union[str, Iterable[str]] = ( - "pytest_collectreport", - "pytest_runtest_logreport", - ), - ) -> Sequence[Union[CollectReport, TestReport]]: - ... - - def getreports( - self, - names: Union[str, Iterable[str]] = ( - "pytest_collectreport", - "pytest_runtest_logreport", - ), - ) -> Sequence[Union[CollectReport, TestReport]]: - return [x.report for x in self.getcalls(names)] - - def matchreport( - self, - inamepart: str = "", - names: Union[str, Iterable[str]] = ( - "pytest_runtest_logreport", - "pytest_collectreport", - ), - when: Optional[str] = None, - ) -> Union[CollectReport, TestReport]: - """Return a testreport whose dotted import path matches.""" - values = [] - for rep in self.getreports(names=names): - if not when and rep.when != "call" and rep.passed: - # setup/teardown passing reports - let's ignore those - continue - if when and rep.when != when: - continue - if not inamepart or inamepart in rep.nodeid.split("::"): - values.append(rep) - if not values: - raise ValueError( - "could not find test report matching %r: " - "no test reports at all!" % (inamepart,) - ) - if len(values) > 1: - raise ValueError( - "found 2 or more testreports matching {!r}: {}".format( - inamepart, values - ) - ) - return values[0] - - @overload - def getfailures( - self, - names: "Literal['pytest_collectreport']", - ) -> Sequence[CollectReport]: - ... - - @overload - def getfailures( - self, - names: "Literal['pytest_runtest_logreport']", - ) -> Sequence[TestReport]: - ... - - @overload - def getfailures( - self, - names: Union[str, Iterable[str]] = ( - "pytest_collectreport", - "pytest_runtest_logreport", - ), - ) -> Sequence[Union[CollectReport, TestReport]]: - ... - - def getfailures( - self, - names: Union[str, Iterable[str]] = ( - "pytest_collectreport", - "pytest_runtest_logreport", - ), - ) -> Sequence[Union[CollectReport, TestReport]]: - return [rep for rep in self.getreports(names) if rep.failed] - - def getfailedcollections(self) -> Sequence[CollectReport]: - return self.getfailures("pytest_collectreport") - - def listoutcomes( - self, - ) -> Tuple[ - Sequence[TestReport], - Sequence[Union[CollectReport, TestReport]], - Sequence[Union[CollectReport, TestReport]], - ]: - passed = [] - skipped = [] - failed = [] - for rep in self.getreports( - ("pytest_collectreport", "pytest_runtest_logreport") - ): - if rep.passed: - if rep.when == "call": - assert isinstance(rep, TestReport) - passed.append(rep) - elif rep.skipped: - skipped.append(rep) - else: - assert rep.failed, f"Unexpected outcome: {rep!r}" - failed.append(rep) - return passed, skipped, failed - - def countoutcomes(self) -> List[int]: - return [len(x) for x in self.listoutcomes()] - - def assertoutcome(self, passed: int = 0, skipped: int = 0, failed: int = 0) -> None: - __tracebackhide__ = True - from _pytest.pytester_assertions import assertoutcome - - outcomes = self.listoutcomes() - assertoutcome( - outcomes, - passed=passed, - skipped=skipped, - failed=failed, - ) - - def clear(self) -> None: - self.calls[:] = [] - - -@fixture -def linecomp() -> "LineComp": - """A :class: `LineComp` instance for checking that an input linearly - contains a sequence of strings.""" - return LineComp() - - -@fixture(name="LineMatcher") -def LineMatcher_fixture(request: FixtureRequest) -> Type["LineMatcher"]: - """A reference to the :class: `LineMatcher`. - - This is instantiable with a list of lines (without their trailing newlines). - This is useful for testing large texts, such as the output of commands. - """ - return LineMatcher - - -@fixture -def pytester( - request: FixtureRequest, tmp_path_factory: TempPathFactory, monkeypatch: MonkeyPatch -) -> "Pytester": - """ - Facilities to write tests/configuration files, execute pytest in isolation, and match - against expected output, perfect for black-box testing of pytest plugins. - - It attempts to isolate the test run from external factors as much as possible, modifying - the current working directory to ``path`` and environment variables during initialization. - - It is particularly useful for testing plugins. It is similar to the :fixture:`tmp_path` - fixture but provides methods which aid in testing pytest itself. - """ - return Pytester(request, tmp_path_factory, monkeypatch, _ispytest=True) - - -@fixture -def _sys_snapshot() -> Generator[None, None, None]: - snappaths = SysPathsSnapshot() - snapmods = SysModulesSnapshot() - yield - snapmods.restore() - snappaths.restore() - - -@fixture -def _config_for_test() -> Generator[Config, None, None]: - from _pytest.config import get_config - - config = get_config() - yield config - config._ensure_unconfigure() # cleanup, e.g. capman closing tmpfiles. - - -# Regex to match the session duration string in the summary: "74.34s". -rex_session_duration = re.compile(r"\d+\.\d\ds") -# Regex to match all the counts and phrases in the summary line: "34 passed, 111 skipped". -rex_outcome = re.compile(r"(\d+) (\w+)") - - -@final -class RunResult: - """The result of running a command from :class:`~pytest.Pytester`.""" - - def __init__( - self, - ret: Union[int, ExitCode], - outlines: List[str], - errlines: List[str], - duration: float, - ) -> None: - try: - self.ret: Union[int, ExitCode] = ExitCode(ret) - """The return value.""" - except ValueError: - self.ret = ret - self.outlines = outlines - """List of lines captured from stdout.""" - self.errlines = errlines - """List of lines captured from stderr.""" - self.stdout = LineMatcher(outlines) - """:class:`~pytest.LineMatcher` of stdout. - - Use e.g. :func:`str(stdout) ` to reconstruct stdout, or the commonly used - :func:`stdout.fnmatch_lines() ` method. - """ - self.stderr = LineMatcher(errlines) - """:class:`~pytest.LineMatcher` of stderr.""" - self.duration = duration - """Duration in seconds.""" - - def __repr__(self) -> str: - return ( - "" - % (self.ret, len(self.stdout.lines), len(self.stderr.lines), self.duration) - ) - - def parseoutcomes(self) -> Dict[str, int]: - """Return a dictionary of outcome noun -> count from parsing the terminal - output that the test process produced. - - The returned nouns will always be in plural form:: - - ======= 1 failed, 1 passed, 1 warning, 1 error in 0.13s ==== - - Will return ``{"failed": 1, "passed": 1, "warnings": 1, "errors": 1}``. - """ - return self.parse_summary_nouns(self.outlines) - - @classmethod - def parse_summary_nouns(cls, lines) -> Dict[str, int]: - """Extract the nouns from a pytest terminal summary line. - - It always returns the plural noun for consistency:: - - ======= 1 failed, 1 passed, 1 warning, 1 error in 0.13s ==== - - Will return ``{"failed": 1, "passed": 1, "warnings": 1, "errors": 1}``. - """ - for line in reversed(lines): - if rex_session_duration.search(line): - outcomes = rex_outcome.findall(line) - ret = {noun: int(count) for (count, noun) in outcomes} - break - else: - raise ValueError("Pytest terminal summary report not found") - - to_plural = { - "warning": "warnings", - "error": "errors", - } - return {to_plural.get(k, k): v for k, v in ret.items()} - - def assert_outcomes( - self, - passed: int = 0, - skipped: int = 0, - failed: int = 0, - errors: int = 0, - xpassed: int = 0, - xfailed: int = 0, - warnings: Optional[int] = None, - deselected: Optional[int] = None, - ) -> None: - """ - Assert that the specified outcomes appear with the respective - numbers (0 means it didn't occur) in the text output from a test run. - - ``warnings`` and ``deselected`` are only checked if not None. - """ - __tracebackhide__ = True - from _pytest.pytester_assertions import assert_outcomes - - outcomes = self.parseoutcomes() - assert_outcomes( - outcomes, - passed=passed, - skipped=skipped, - failed=failed, - errors=errors, - xpassed=xpassed, - xfailed=xfailed, - warnings=warnings, - deselected=deselected, - ) - - -class CwdSnapshot: - def __init__(self) -> None: - self.__saved = os.getcwd() - - def restore(self) -> None: - os.chdir(self.__saved) - - -class SysModulesSnapshot: - def __init__(self, preserve: Optional[Callable[[str], bool]] = None) -> None: - self.__preserve = preserve - self.__saved = dict(sys.modules) - - def restore(self) -> None: - if self.__preserve: - self.__saved.update( - (k, m) for k, m in sys.modules.items() if self.__preserve(k) - ) - sys.modules.clear() - sys.modules.update(self.__saved) - - -class SysPathsSnapshot: - def __init__(self) -> None: - self.__saved = list(sys.path), list(sys.meta_path) - - def restore(self) -> None: - sys.path[:], sys.meta_path[:] = self.__saved - - -@final -class Pytester: - """ - Facilities to write tests/configuration files, execute pytest in isolation, and match - against expected output, perfect for black-box testing of pytest plugins. - - It attempts to isolate the test run from external factors as much as possible, modifying - the current working directory to :attr:`path` and environment variables during initialization. - """ - - __test__ = False - - CLOSE_STDIN: "Final" = NOTSET - - class TimeoutExpired(Exception): - pass - - def __init__( - self, - request: FixtureRequest, - tmp_path_factory: TempPathFactory, - monkeypatch: MonkeyPatch, - *, - _ispytest: bool = False, - ) -> None: - check_ispytest(_ispytest) - self._request = request - self._mod_collections: WeakKeyDictionary[ - Collector, List[Union[Item, Collector]] - ] = WeakKeyDictionary() - if request.function: - name: str = request.function.__name__ - else: - name = request.node.name - self._name = name - self._path: Path = tmp_path_factory.mktemp(name, numbered=True) - #: A list of plugins to use with :py:meth:`parseconfig` and - #: :py:meth:`runpytest`. Initially this is an empty list but plugins can - #: be added to the list. The type of items to add to the list depends on - #: the method using them so refer to them for details. - self.plugins: List[Union[str, _PluggyPlugin]] = [] - self._cwd_snapshot = CwdSnapshot() - self._sys_path_snapshot = SysPathsSnapshot() - self._sys_modules_snapshot = self.__take_sys_modules_snapshot() - self.chdir() - self._request.addfinalizer(self._finalize) - self._method = self._request.config.getoption("--runpytest") - self._test_tmproot = tmp_path_factory.mktemp(f"tmp-{name}", numbered=True) - - self._monkeypatch = mp = monkeypatch - mp.setenv("PYTEST_DEBUG_TEMPROOT", str(self._test_tmproot)) - # Ensure no unexpected caching via tox. - mp.delenv("TOX_ENV_DIR", raising=False) - # Discard outer pytest options. - mp.delenv("PYTEST_ADDOPTS", raising=False) - # Ensure no user config is used. - tmphome = str(self.path) - mp.setenv("HOME", tmphome) - mp.setenv("USERPROFILE", tmphome) - # Do not use colors for inner runs by default. - mp.setenv("PY_COLORS", "0") - - @property - def path(self) -> Path: - """Temporary directory path used to create files/run tests from, etc.""" - return self._path - - def __repr__(self) -> str: - return f"" - - def _finalize(self) -> None: - """ - Clean up global state artifacts. - - Some methods modify the global interpreter state and this tries to - clean this up. It does not remove the temporary directory however so - it can be looked at after the test run has finished. - """ - self._sys_modules_snapshot.restore() - self._sys_path_snapshot.restore() - self._cwd_snapshot.restore() - - def __take_sys_modules_snapshot(self) -> SysModulesSnapshot: - # Some zope modules used by twisted-related tests keep internal state - # and can't be deleted; we had some trouble in the past with - # `zope.interface` for example. - # - # Preserve readline due to https://bugs.python.org/issue41033. - # pexpect issues a SIGWINCH. - def preserve_module(name): - return name.startswith(("zope", "readline")) - - return SysModulesSnapshot(preserve=preserve_module) - - def make_hook_recorder(self, pluginmanager: PytestPluginManager) -> HookRecorder: - """Create a new :class:`HookRecorder` for a :class:`PytestPluginManager`.""" - pluginmanager.reprec = reprec = HookRecorder(pluginmanager, _ispytest=True) - self._request.addfinalizer(reprec.finish_recording) - return reprec - - def chdir(self) -> None: - """Cd into the temporary directory. - - This is done automatically upon instantiation. - """ - os.chdir(self.path) - - def _makefile( - self, - ext: str, - lines: Sequence[Union[Any, bytes]], - files: Dict[str, str], - encoding: str = "utf-8", - ) -> Path: - items = list(files.items()) - - if ext and not ext.startswith("."): - raise ValueError( - f"pytester.makefile expects a file extension, try .{ext} instead of {ext}" - ) - - def to_text(s: Union[Any, bytes]) -> str: - return s.decode(encoding) if isinstance(s, bytes) else str(s) - - if lines: - source = "\n".join(to_text(x) for x in lines) - basename = self._name - items.insert(0, (basename, source)) - - ret = None - for basename, value in items: - p = self.path.joinpath(basename).with_suffix(ext) - p.parent.mkdir(parents=True, exist_ok=True) - source_ = Source(value) - source = "\n".join(to_text(line) for line in source_.lines) - p.write_text(source.strip(), encoding=encoding) - if ret is None: - ret = p - assert ret is not None - return ret - - def makefile(self, ext: str, *args: str, **kwargs: str) -> Path: - r"""Create new text file(s) in the test directory. - - :param ext: - The extension the file(s) should use, including the dot, e.g. `.py`. - :param args: - All args are treated as strings and joined using newlines. - The result is written as contents to the file. The name of the - file is based on the test function requesting this fixture. - :param kwargs: - Each keyword is the name of a file, while the value of it will - be written as contents of the file. - :returns: - The first created file. - - Examples: - - .. code-block:: python - - pytester.makefile(".txt", "line1", "line2") - - pytester.makefile(".ini", pytest="[pytest]\naddopts=-rs\n") - - To create binary files, use :meth:`pathlib.Path.write_bytes` directly: - - .. code-block:: python - - filename = pytester.path.joinpath("foo.bin") - filename.write_bytes(b"...") - """ - return self._makefile(ext, args, kwargs) - - def makeconftest(self, source: str) -> Path: - """Write a contest.py file. - - :param source: The contents. - :returns: The conftest.py file. - """ - return self.makepyfile(conftest=source) - - def makeini(self, source: str) -> Path: - """Write a tox.ini file. - - :param source: The contents. - :returns: The tox.ini file. - """ - return self.makefile(".ini", tox=source) - - def getinicfg(self, source: str) -> SectionWrapper: - """Return the pytest section from the tox.ini config file.""" - p = self.makeini(source) - return IniConfig(str(p))["pytest"] - - def makepyprojecttoml(self, source: str) -> Path: - """Write a pyproject.toml file. - - :param source: The contents. - :returns: The pyproject.ini file. - - .. versionadded:: 6.0 - """ - return self.makefile(".toml", pyproject=source) - - def makepyfile(self, *args, **kwargs) -> Path: - r"""Shortcut for .makefile() with a .py extension. - - Defaults to the test name with a '.py' extension, e.g test_foobar.py, overwriting - existing files. - - Examples: - - .. code-block:: python - - def test_something(pytester): - # Initial file is created test_something.py. - pytester.makepyfile("foobar") - # To create multiple files, pass kwargs accordingly. - pytester.makepyfile(custom="foobar") - # At this point, both 'test_something.py' & 'custom.py' exist in the test directory. - - """ - return self._makefile(".py", args, kwargs) - - def maketxtfile(self, *args, **kwargs) -> Path: - r"""Shortcut for .makefile() with a .txt extension. - - Defaults to the test name with a '.txt' extension, e.g test_foobar.txt, overwriting - existing files. - - Examples: - - .. code-block:: python - - def test_something(pytester): - # Initial file is created test_something.txt. - pytester.maketxtfile("foobar") - # To create multiple files, pass kwargs accordingly. - pytester.maketxtfile(custom="foobar") - # At this point, both 'test_something.txt' & 'custom.txt' exist in the test directory. - - """ - return self._makefile(".txt", args, kwargs) - - def syspathinsert( - self, path: Optional[Union[str, "os.PathLike[str]"]] = None - ) -> None: - """Prepend a directory to sys.path, defaults to :attr:`path`. - - This is undone automatically when this object dies at the end of each - test. - - :param path: - The path. - """ - if path is None: - path = self.path - - self._monkeypatch.syspath_prepend(str(path)) - - def mkdir(self, name: Union[str, "os.PathLike[str]"]) -> Path: - """Create a new (sub)directory. - - :param name: - The name of the directory, relative to the pytester path. - :returns: - The created directory. - """ - p = self.path / name - p.mkdir() - return p - - def mkpydir(self, name: Union[str, "os.PathLike[str]"]) -> Path: - """Create a new python package. - - This creates a (sub)directory with an empty ``__init__.py`` file so it - gets recognised as a Python package. - """ - p = self.path / name - p.mkdir() - p.joinpath("__init__.py").touch() - return p - - def copy_example(self, name: Optional[str] = None) -> Path: - """Copy file from project's directory into the testdir. - - :param name: - The name of the file to copy. - :return: - Path to the copied directory (inside ``self.path``). - """ - example_dir_ = self._request.config.getini("pytester_example_dir") - if example_dir_ is None: - raise ValueError("pytester_example_dir is unset, can't copy examples") - example_dir: Path = self._request.config.rootpath / example_dir_ - - for extra_element in self._request.node.iter_markers("pytester_example_path"): - assert extra_element.args - example_dir = example_dir.joinpath(*extra_element.args) - - if name is None: - func_name = self._name - maybe_dir = example_dir / func_name - maybe_file = example_dir / (func_name + ".py") - - if maybe_dir.is_dir(): - example_path = maybe_dir - elif maybe_file.is_file(): - example_path = maybe_file - else: - raise LookupError( - f"{func_name} can't be found as module or package in {example_dir}" - ) - else: - example_path = example_dir.joinpath(name) - - if example_path.is_dir() and not example_path.joinpath("__init__.py").is_file(): - copytree(example_path, self.path) - return self.path - elif example_path.is_file(): - result = self.path.joinpath(example_path.name) - shutil.copy(example_path, result) - return result - else: - raise LookupError( - f'example "{example_path}" is not found as a file or directory' - ) - - def getnode( - self, config: Config, arg: Union[str, "os.PathLike[str]"] - ) -> Union[Collector, Item]: - """Get the collection node of a file. - - :param config: - A pytest config. - See :py:meth:`parseconfig` and :py:meth:`parseconfigure` for creating it. - :param arg: - Path to the file. - :returns: - The node. - """ - session = Session.from_config(config) - assert "::" not in str(arg) - p = Path(os.path.abspath(arg)) - config.hook.pytest_sessionstart(session=session) - res = session.perform_collect([str(p)], genitems=False)[0] - config.hook.pytest_sessionfinish(session=session, exitstatus=ExitCode.OK) - return res - - def getpathnode( - self, path: Union[str, "os.PathLike[str]"] - ) -> Union[Collector, Item]: - """Return the collection node of a file. - - This is like :py:meth:`getnode` but uses :py:meth:`parseconfigure` to - create the (configured) pytest Config instance. - - :param path: - Path to the file. - :returns: - The node. - """ - path = Path(path) - config = self.parseconfigure(path) - session = Session.from_config(config) - x = bestrelpath(session.path, path) - config.hook.pytest_sessionstart(session=session) - res = session.perform_collect([x], genitems=False)[0] - config.hook.pytest_sessionfinish(session=session, exitstatus=ExitCode.OK) - return res - - def genitems(self, colitems: Sequence[Union[Item, Collector]]) -> List[Item]: - """Generate all test items from a collection node. - - This recurses into the collection node and returns a list of all the - test items contained within. - - :param colitems: - The collection nodes. - :returns: - The collected items. - """ - session = colitems[0].session - result: List[Item] = [] - for colitem in colitems: - result.extend(session.genitems(colitem)) - return result - - def runitem(self, source: str) -> Any: - """Run the "test_func" Item. - - The calling test instance (class containing the test method) must - provide a ``.getrunner()`` method which should return a runner which - can run the test protocol for a single item, e.g. - :py:func:`_pytest.runner.runtestprotocol`. - """ - # used from runner functional tests - item = self.getitem(source) - # the test class where we are called from wants to provide the runner - testclassinstance = self._request.instance - runner = testclassinstance.getrunner() - return runner(item) - - def inline_runsource(self, source: str, *cmdlineargs) -> HookRecorder: - """Run a test module in process using ``pytest.main()``. - - This run writes "source" into a temporary file and runs - ``pytest.main()`` on it, returning a :py:class:`HookRecorder` instance - for the result. - - :param source: The source code of the test module. - :param cmdlineargs: Any extra command line arguments to use. - """ - p = self.makepyfile(source) - values = list(cmdlineargs) + [p] - return self.inline_run(*values) - - def inline_genitems(self, *args) -> Tuple[List[Item], HookRecorder]: - """Run ``pytest.main(['--collectonly'])`` in-process. - - Runs the :py:func:`pytest.main` function to run all of pytest inside - the test process itself like :py:meth:`inline_run`, but returns a - tuple of the collected items and a :py:class:`HookRecorder` instance. - """ - rec = self.inline_run("--collect-only", *args) - items = [x.item for x in rec.getcalls("pytest_itemcollected")] - return items, rec - - def inline_run( - self, - *args: Union[str, "os.PathLike[str]"], - plugins=(), - no_reraise_ctrlc: bool = False, - ) -> HookRecorder: - """Run ``pytest.main()`` in-process, returning a HookRecorder. - - Runs the :py:func:`pytest.main` function to run all of pytest inside - the test process itself. This means it can return a - :py:class:`HookRecorder` instance which gives more detailed results - from that run than can be done by matching stdout/stderr from - :py:meth:`runpytest`. - - :param args: - Command line arguments to pass to :py:func:`pytest.main`. - :param plugins: - Extra plugin instances the ``pytest.main()`` instance should use. - :param no_reraise_ctrlc: - Typically we reraise keyboard interrupts from the child run. If - True, the KeyboardInterrupt exception is captured. - """ - # (maybe a cpython bug?) the importlib cache sometimes isn't updated - # properly between file creation and inline_run (especially if imports - # are interspersed with file creation) - importlib.invalidate_caches() - - plugins = list(plugins) - finalizers = [] - try: - # Any sys.module or sys.path changes done while running pytest - # inline should be reverted after the test run completes to avoid - # clashing with later inline tests run within the same pytest test, - # e.g. just because they use matching test module names. - finalizers.append(self.__take_sys_modules_snapshot().restore) - finalizers.append(SysPathsSnapshot().restore) - - # Important note: - # - our tests should not leave any other references/registrations - # laying around other than possibly loaded test modules - # referenced from sys.modules, as nothing will clean those up - # automatically - - rec = [] - - class Collect: - def pytest_configure(x, config: Config) -> None: - rec.append(self.make_hook_recorder(config.pluginmanager)) - - plugins.append(Collect()) - ret = main([str(x) for x in args], plugins=plugins) - if len(rec) == 1: - reprec = rec.pop() - else: - - class reprec: # type: ignore - pass - - reprec.ret = ret - - # Typically we reraise keyboard interrupts from the child run - # because it's our user requesting interruption of the testing. - if ret == ExitCode.INTERRUPTED and not no_reraise_ctrlc: - calls = reprec.getcalls("pytest_keyboard_interrupt") - if calls and calls[-1].excinfo.type == KeyboardInterrupt: - raise KeyboardInterrupt() - return reprec - finally: - for finalizer in finalizers: - finalizer() - - def runpytest_inprocess( - self, *args: Union[str, "os.PathLike[str]"], **kwargs: Any - ) -> RunResult: - """Return result of running pytest in-process, providing a similar - interface to what self.runpytest() provides.""" - syspathinsert = kwargs.pop("syspathinsert", False) - - if syspathinsert: - self.syspathinsert() - now = timing.time() - capture = _get_multicapture("sys") - capture.start_capturing() - try: - try: - reprec = self.inline_run(*args, **kwargs) - except SystemExit as e: - ret = e.args[0] - try: - ret = ExitCode(e.args[0]) - except ValueError: - pass - - class reprec: # type: ignore - ret = ret - - except Exception: - traceback.print_exc() - - class reprec: # type: ignore - ret = ExitCode(3) - - finally: - out, err = capture.readouterr() - capture.stop_capturing() - sys.stdout.write(out) - sys.stderr.write(err) - - assert reprec.ret is not None - res = RunResult( - reprec.ret, out.splitlines(), err.splitlines(), timing.time() - now - ) - res.reprec = reprec # type: ignore - return res - - def runpytest( - self, *args: Union[str, "os.PathLike[str]"], **kwargs: Any - ) -> RunResult: - """Run pytest inline or in a subprocess, depending on the command line - option "--runpytest" and return a :py:class:`~pytest.RunResult`.""" - new_args = self._ensure_basetemp(args) - if self._method == "inprocess": - return self.runpytest_inprocess(*new_args, **kwargs) - elif self._method == "subprocess": - return self.runpytest_subprocess(*new_args, **kwargs) - raise RuntimeError(f"Unrecognized runpytest option: {self._method}") - - def _ensure_basetemp( - self, args: Sequence[Union[str, "os.PathLike[str]"]] - ) -> List[Union[str, "os.PathLike[str]"]]: - new_args = list(args) - for x in new_args: - if str(x).startswith("--basetemp"): - break - else: - new_args.append("--basetemp=%s" % self.path.parent.joinpath("basetemp")) - return new_args - - def parseconfig(self, *args: Union[str, "os.PathLike[str]"]) -> Config: - """Return a new pytest :class:`pytest.Config` instance from given - commandline args. - - This invokes the pytest bootstrapping code in _pytest.config to create a - new :py:class:`pytest.PytestPluginManager` and call the - :hook:`pytest_cmdline_parse` hook to create a new :class:`pytest.Config` - instance. - - If :attr:`plugins` has been populated they should be plugin modules - to be registered with the plugin manager. - """ - import _pytest.config - - new_args = self._ensure_basetemp(args) - new_args = [str(x) for x in new_args] - - config = _pytest.config._prepareconfig(new_args, self.plugins) # type: ignore[arg-type] - # we don't know what the test will do with this half-setup config - # object and thus we make sure it gets unconfigured properly in any - # case (otherwise capturing could still be active, for example) - self._request.addfinalizer(config._ensure_unconfigure) - return config - - def parseconfigure(self, *args: Union[str, "os.PathLike[str]"]) -> Config: - """Return a new pytest configured Config instance. - - Returns a new :py:class:`pytest.Config` instance like - :py:meth:`parseconfig`, but also calls the :hook:`pytest_configure` - hook. - """ - config = self.parseconfig(*args) - config._do_configure() - return config - - def getitem( - self, source: Union[str, "os.PathLike[str]"], funcname: str = "test_func" - ) -> Item: - """Return the test item for a test function. - - Writes the source to a python file and runs pytest's collection on - the resulting module, returning the test item for the requested - function name. - - :param source: - The module source. - :param funcname: - The name of the test function for which to return a test item. - :returns: - The test item. - """ - items = self.getitems(source) - for item in items: - if item.name == funcname: - return item - assert 0, "{!r} item not found in module:\n{}\nitems: {}".format( - funcname, source, items - ) - - def getitems(self, source: Union[str, "os.PathLike[str]"]) -> List[Item]: - """Return all test items collected from the module. - - Writes the source to a Python file and runs pytest's collection on - the resulting module, returning all test items contained within. - """ - modcol = self.getmodulecol(source) - return self.genitems([modcol]) - - def getmodulecol( - self, - source: Union[str, "os.PathLike[str]"], - configargs=(), - *, - withinit: bool = False, - ): - """Return the module collection node for ``source``. - - Writes ``source`` to a file using :py:meth:`makepyfile` and then - runs the pytest collection on it, returning the collection node for the - test module. - - :param source: - The source code of the module to collect. - - :param configargs: - Any extra arguments to pass to :py:meth:`parseconfigure`. - - :param withinit: - Whether to also write an ``__init__.py`` file to the same - directory to ensure it is a package. - """ - if isinstance(source, os.PathLike): - path = self.path.joinpath(source) - assert not withinit, "not supported for paths" - else: - kw = {self._name: str(source)} - path = self.makepyfile(**kw) - if withinit: - self.makepyfile(__init__="#") - self.config = config = self.parseconfigure(path, *configargs) - return self.getnode(config, path) - - def collect_by_name( - self, modcol: Collector, name: str - ) -> Optional[Union[Item, Collector]]: - """Return the collection node for name from the module collection. - - Searches a module collection node for a collection node matching the - given name. - - :param modcol: A module collection node; see :py:meth:`getmodulecol`. - :param name: The name of the node to return. - """ - if modcol not in self._mod_collections: - self._mod_collections[modcol] = list(modcol.collect()) - for colitem in self._mod_collections[modcol]: - if colitem.name == name: - return colitem - return None - - def popen( - self, - cmdargs: Sequence[Union[str, "os.PathLike[str]"]], - stdout: Union[int, TextIO] = subprocess.PIPE, - stderr: Union[int, TextIO] = subprocess.PIPE, - stdin: Union[NotSetType, bytes, IO[Any], int] = CLOSE_STDIN, - **kw, - ): - """Invoke :py:class:`subprocess.Popen`. - - Calls :py:class:`subprocess.Popen` making sure the current working - directory is in ``PYTHONPATH``. - - You probably want to use :py:meth:`run` instead. - """ - env = os.environ.copy() - env["PYTHONPATH"] = os.pathsep.join( - filter(None, [os.getcwd(), env.get("PYTHONPATH", "")]) - ) - kw["env"] = env - - if stdin is self.CLOSE_STDIN: - kw["stdin"] = subprocess.PIPE - elif isinstance(stdin, bytes): - kw["stdin"] = subprocess.PIPE - else: - kw["stdin"] = stdin - - popen = subprocess.Popen(cmdargs, stdout=stdout, stderr=stderr, **kw) - if stdin is self.CLOSE_STDIN: - assert popen.stdin is not None - popen.stdin.close() - elif isinstance(stdin, bytes): - assert popen.stdin is not None - popen.stdin.write(stdin) - - return popen - - def run( - self, - *cmdargs: Union[str, "os.PathLike[str]"], - timeout: Optional[float] = None, - stdin: Union[NotSetType, bytes, IO[Any], int] = CLOSE_STDIN, - ) -> RunResult: - """Run a command with arguments. - - Run a process using :py:class:`subprocess.Popen` saving the stdout and - stderr. - - :param cmdargs: - The sequence of arguments to pass to :py:class:`subprocess.Popen`, - with path-like objects being converted to :py:class:`str` - automatically. - :param timeout: - The period in seconds after which to timeout and raise - :py:class:`Pytester.TimeoutExpired`. - :param stdin: - Optional standard input. - - - If it is :py:attr:`CLOSE_STDIN` (Default), then this method calls - :py:class:`subprocess.Popen` with ``stdin=subprocess.PIPE``, and - the standard input is closed immediately after the new command is - started. - - - If it is of type :py:class:`bytes`, these bytes are sent to the - standard input of the command. - - - Otherwise, it is passed through to :py:class:`subprocess.Popen`. - For further information in this case, consult the document of the - ``stdin`` parameter in :py:class:`subprocess.Popen`. - :returns: - The result. - """ - __tracebackhide__ = True - - cmdargs = tuple(os.fspath(arg) for arg in cmdargs) - p1 = self.path.joinpath("stdout") - p2 = self.path.joinpath("stderr") - print("running:", *cmdargs) - print(" in:", Path.cwd()) - - with p1.open("w", encoding="utf8") as f1, p2.open("w", encoding="utf8") as f2: - now = timing.time() - popen = self.popen( - cmdargs, - stdin=stdin, - stdout=f1, - stderr=f2, - close_fds=(sys.platform != "win32"), - ) - if popen.stdin is not None: - popen.stdin.close() - - def handle_timeout() -> None: - __tracebackhide__ = True - - timeout_message = ( - "{seconds} second timeout expired running:" - " {command}".format(seconds=timeout, command=cmdargs) - ) - - popen.kill() - popen.wait() - raise self.TimeoutExpired(timeout_message) - - if timeout is None: - ret = popen.wait() - else: - try: - ret = popen.wait(timeout) - except subprocess.TimeoutExpired: - handle_timeout() - - with p1.open(encoding="utf8") as f1, p2.open(encoding="utf8") as f2: - out = f1.read().splitlines() - err = f2.read().splitlines() - - self._dump_lines(out, sys.stdout) - self._dump_lines(err, sys.stderr) - - with contextlib.suppress(ValueError): - ret = ExitCode(ret) - return RunResult(ret, out, err, timing.time() - now) - - def _dump_lines(self, lines, fp): - try: - for line in lines: - print(line, file=fp) - except UnicodeEncodeError: - print(f"couldn't print to {fp} because of encoding") - - def _getpytestargs(self) -> Tuple[str, ...]: - return sys.executable, "-mpytest" - - def runpython(self, script: "os.PathLike[str]") -> RunResult: - """Run a python script using sys.executable as interpreter.""" - return self.run(sys.executable, script) - - def runpython_c(self, command: str) -> RunResult: - """Run ``python -c "command"``.""" - return self.run(sys.executable, "-c", command) - - def runpytest_subprocess( - self, *args: Union[str, "os.PathLike[str]"], timeout: Optional[float] = None - ) -> RunResult: - """Run pytest as a subprocess with given arguments. - - Any plugins added to the :py:attr:`plugins` list will be added using the - ``-p`` command line option. Additionally ``--basetemp`` is used to put - any temporary files and directories in a numbered directory prefixed - with "runpytest-" to not conflict with the normal numbered pytest - location for temporary files and directories. - - :param args: - The sequence of arguments to pass to the pytest subprocess. - :param timeout: - The period in seconds after which to timeout and raise - :py:class:`Pytester.TimeoutExpired`. - :returns: - The result. - """ - __tracebackhide__ = True - p = make_numbered_dir(root=self.path, prefix="runpytest-", mode=0o700) - args = ("--basetemp=%s" % p,) + args - plugins = [x for x in self.plugins if isinstance(x, str)] - if plugins: - args = ("-p", plugins[0]) + args - args = self._getpytestargs() + args - return self.run(*args, timeout=timeout) - - def spawn_pytest( - self, string: str, expect_timeout: float = 10.0 - ) -> "pexpect.spawn": - """Run pytest using pexpect. - - This makes sure to use the right pytest and sets up the temporary - directory locations. - - The pexpect child is returned. - """ - basetemp = self.path / "temp-pexpect" - basetemp.mkdir(mode=0o700) - invoke = " ".join(map(str, self._getpytestargs())) - cmd = f"{invoke} --basetemp={basetemp} {string}" - return self.spawn(cmd, expect_timeout=expect_timeout) - - def spawn(self, cmd: str, expect_timeout: float = 10.0) -> "pexpect.spawn": - """Run a command using pexpect. - - The pexpect child is returned. - """ - pexpect = importorskip("pexpect", "3.0") - if hasattr(sys, "pypy_version_info") and "64" in platform.machine(): - skip("pypy-64 bit not supported") - if not hasattr(pexpect, "spawn"): - skip("pexpect.spawn not available") - logfile = self.path.joinpath("spawn.out").open("wb") - - child = pexpect.spawn(cmd, logfile=logfile, timeout=expect_timeout) - self._request.addfinalizer(logfile.close) - return child - - -class LineComp: - def __init__(self) -> None: - self.stringio = StringIO() - """:class:`python:io.StringIO()` instance used for input.""" - - def assert_contains_lines(self, lines2: Sequence[str]) -> None: - """Assert that ``lines2`` are contained (linearly) in :attr:`stringio`'s value. - - Lines are matched using :func:`LineMatcher.fnmatch_lines `. - """ - __tracebackhide__ = True - val = self.stringio.getvalue() - self.stringio.truncate(0) - self.stringio.seek(0) - lines1 = val.split("\n") - LineMatcher(lines1).fnmatch_lines(lines2) - - -class LineMatcher: - """Flexible matching of text. - - This is a convenience class to test large texts like the output of - commands. - - The constructor takes a list of lines without their trailing newlines, i.e. - ``text.splitlines()``. - """ - - def __init__(self, lines: List[str]) -> None: - self.lines = lines - self._log_output: List[str] = [] - - def __str__(self) -> str: - """Return the entire original text. - - .. versionadded:: 6.2 - You can use :meth:`str` in older versions. - """ - return "\n".join(self.lines) - - def _getlines(self, lines2: Union[str, Sequence[str], Source]) -> Sequence[str]: - if isinstance(lines2, str): - lines2 = Source(lines2) - if isinstance(lines2, Source): - lines2 = lines2.strip().lines - return lines2 - - def fnmatch_lines_random(self, lines2: Sequence[str]) -> None: - """Check lines exist in the output in any order (using :func:`python:fnmatch.fnmatch`).""" - __tracebackhide__ = True - self._match_lines_random(lines2, fnmatch) - - def re_match_lines_random(self, lines2: Sequence[str]) -> None: - """Check lines exist in the output in any order (using :func:`python:re.match`).""" - __tracebackhide__ = True - self._match_lines_random(lines2, lambda name, pat: bool(re.match(pat, name))) - - def _match_lines_random( - self, lines2: Sequence[str], match_func: Callable[[str, str], bool] - ) -> None: - __tracebackhide__ = True - lines2 = self._getlines(lines2) - for line in lines2: - for x in self.lines: - if line == x or match_func(x, line): - self._log("matched: ", repr(line)) - break - else: - msg = "line %r not found in output" % line - self._log(msg) - self._fail(msg) - - def get_lines_after(self, fnline: str) -> Sequence[str]: - """Return all lines following the given line in the text. - - The given line can contain glob wildcards. - """ - for i, line in enumerate(self.lines): - if fnline == line or fnmatch(line, fnline): - return self.lines[i + 1 :] - raise ValueError("line %r not found in output" % fnline) - - def _log(self, *args) -> None: - self._log_output.append(" ".join(str(x) for x in args)) - - @property - def _log_text(self) -> str: - return "\n".join(self._log_output) - - def fnmatch_lines( - self, lines2: Sequence[str], *, consecutive: bool = False - ) -> None: - """Check lines exist in the output (using :func:`python:fnmatch.fnmatch`). - - The argument is a list of lines which have to match and can use glob - wildcards. If they do not match a pytest.fail() is called. The - matches and non-matches are also shown as part of the error message. - - :param lines2: String patterns to match. - :param consecutive: Match lines consecutively? - """ - __tracebackhide__ = True - self._match_lines(lines2, fnmatch, "fnmatch", consecutive=consecutive) - - def re_match_lines( - self, lines2: Sequence[str], *, consecutive: bool = False - ) -> None: - """Check lines exist in the output (using :func:`python:re.match`). - - The argument is a list of lines which have to match using ``re.match``. - If they do not match a pytest.fail() is called. - - The matches and non-matches are also shown as part of the error message. - - :param lines2: string patterns to match. - :param consecutive: match lines consecutively? - """ - __tracebackhide__ = True - self._match_lines( - lines2, - lambda name, pat: bool(re.match(pat, name)), - "re.match", - consecutive=consecutive, - ) - - def _match_lines( - self, - lines2: Sequence[str], - match_func: Callable[[str, str], bool], - match_nickname: str, - *, - consecutive: bool = False, - ) -> None: - """Underlying implementation of ``fnmatch_lines`` and ``re_match_lines``. - - :param Sequence[str] lines2: - List of string patterns to match. The actual format depends on - ``match_func``. - :param match_func: - A callable ``match_func(line, pattern)`` where line is the - captured line from stdout/stderr and pattern is the matching - pattern. - :param str match_nickname: - The nickname for the match function that will be logged to stdout - when a match occurs. - :param consecutive: - Match lines consecutively? - """ - if not isinstance(lines2, collections.abc.Sequence): - raise TypeError(f"invalid type for lines2: {type(lines2).__name__}") - lines2 = self._getlines(lines2) - lines1 = self.lines[:] - extralines = [] - __tracebackhide__ = True - wnick = len(match_nickname) + 1 - started = False - for line in lines2: - nomatchprinted = False - while lines1: - nextline = lines1.pop(0) - if line == nextline: - self._log("exact match:", repr(line)) - started = True - break - elif match_func(nextline, line): - self._log("%s:" % match_nickname, repr(line)) - self._log( - "{:>{width}}".format("with:", width=wnick), repr(nextline) - ) - started = True - break - else: - if consecutive and started: - msg = f"no consecutive match: {line!r}" - self._log(msg) - self._log( - "{:>{width}}".format("with:", width=wnick), repr(nextline) - ) - self._fail(msg) - if not nomatchprinted: - self._log( - "{:>{width}}".format("nomatch:", width=wnick), repr(line) - ) - nomatchprinted = True - self._log("{:>{width}}".format("and:", width=wnick), repr(nextline)) - extralines.append(nextline) - else: - msg = f"remains unmatched: {line!r}" - self._log(msg) - self._fail(msg) - self._log_output = [] - - def no_fnmatch_line(self, pat: str) -> None: - """Ensure captured lines do not match the given pattern, using ``fnmatch.fnmatch``. - - :param str pat: The pattern to match lines. - """ - __tracebackhide__ = True - self._no_match_line(pat, fnmatch, "fnmatch") - - def no_re_match_line(self, pat: str) -> None: - """Ensure captured lines do not match the given pattern, using ``re.match``. - - :param str pat: The regular expression to match lines. - """ - __tracebackhide__ = True - self._no_match_line( - pat, lambda name, pat: bool(re.match(pat, name)), "re.match" - ) - - def _no_match_line( - self, pat: str, match_func: Callable[[str, str], bool], match_nickname: str - ) -> None: - """Ensure captured lines does not have a the given pattern, using ``fnmatch.fnmatch``. - - :param str pat: The pattern to match lines. - """ - __tracebackhide__ = True - nomatch_printed = False - wnick = len(match_nickname) + 1 - for line in self.lines: - if match_func(line, pat): - msg = f"{match_nickname}: {pat!r}" - self._log(msg) - self._log("{:>{width}}".format("with:", width=wnick), repr(line)) - self._fail(msg) - else: - if not nomatch_printed: - self._log("{:>{width}}".format("nomatch:", width=wnick), repr(pat)) - nomatch_printed = True - self._log("{:>{width}}".format("and:", width=wnick), repr(line)) - self._log_output = [] - - def _fail(self, msg: str) -> None: - __tracebackhide__ = True - log_text = self._log_text - self._log_output = [] - fail(log_text) - - def str(self) -> str: - """Return the entire original text.""" - return str(self) diff --git a/venv/lib/python3.12/site-packages/_pytest/pytester_assertions.py b/venv/lib/python3.12/site-packages/_pytest/pytester_assertions.py deleted file mode 100644 index 657e4db..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/pytester_assertions.py +++ /dev/null @@ -1,75 +0,0 @@ -"""Helper plugin for pytester; should not be loaded on its own.""" -# This plugin contains assertions used by pytester. pytester cannot -# contain them itself, since it is imported by the `pytest` module, -# hence cannot be subject to assertion rewriting, which requires a -# module to not be already imported. -from typing import Dict -from typing import Optional -from typing import Sequence -from typing import Tuple -from typing import Union - -from _pytest.reports import CollectReport -from _pytest.reports import TestReport - - -def assertoutcome( - outcomes: Tuple[ - Sequence[TestReport], - Sequence[Union[CollectReport, TestReport]], - Sequence[Union[CollectReport, TestReport]], - ], - passed: int = 0, - skipped: int = 0, - failed: int = 0, -) -> None: - __tracebackhide__ = True - - realpassed, realskipped, realfailed = outcomes - obtained = { - "passed": len(realpassed), - "skipped": len(realskipped), - "failed": len(realfailed), - } - expected = {"passed": passed, "skipped": skipped, "failed": failed} - assert obtained == expected, outcomes - - -def assert_outcomes( - outcomes: Dict[str, int], - passed: int = 0, - skipped: int = 0, - failed: int = 0, - errors: int = 0, - xpassed: int = 0, - xfailed: int = 0, - warnings: Optional[int] = None, - deselected: Optional[int] = None, -) -> None: - """Assert that the specified outcomes appear with the respective - numbers (0 means it didn't occur) in the text output from a test run.""" - __tracebackhide__ = True - - obtained = { - "passed": outcomes.get("passed", 0), - "skipped": outcomes.get("skipped", 0), - "failed": outcomes.get("failed", 0), - "errors": outcomes.get("errors", 0), - "xpassed": outcomes.get("xpassed", 0), - "xfailed": outcomes.get("xfailed", 0), - } - expected = { - "passed": passed, - "skipped": skipped, - "failed": failed, - "errors": errors, - "xpassed": xpassed, - "xfailed": xfailed, - } - if warnings is not None: - obtained["warnings"] = outcomes.get("warnings", 0) - expected["warnings"] = warnings - if deselected is not None: - obtained["deselected"] = outcomes.get("deselected", 0) - expected["deselected"] = deselected - assert obtained == expected diff --git a/venv/lib/python3.12/site-packages/_pytest/python.py b/venv/lib/python3.12/site-packages/_pytest/python.py deleted file mode 100644 index 75d64fb..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/python.py +++ /dev/null @@ -1,1835 +0,0 @@ -"""Python test discovery, setup and run of test functions.""" -import enum -import fnmatch -import inspect -import itertools -import os -import sys -import types -import warnings -from collections import Counter -from collections import defaultdict -from functools import partial -from pathlib import Path -from typing import Any -from typing import Callable -from typing import Dict -from typing import Generator -from typing import Iterable -from typing import Iterator -from typing import List -from typing import Mapping -from typing import Optional -from typing import Pattern -from typing import Sequence -from typing import Set -from typing import Tuple -from typing import TYPE_CHECKING -from typing import Union - -import attr - -import _pytest -from _pytest import fixtures -from _pytest import nodes -from _pytest._code import filter_traceback -from _pytest._code import getfslineno -from _pytest._code.code import ExceptionInfo -from _pytest._code.code import TerminalRepr -from _pytest._io import TerminalWriter -from _pytest._io.saferepr import saferepr -from _pytest.compat import ascii_escaped -from _pytest.compat import assert_never -from _pytest.compat import final -from _pytest.compat import get_default_arg_names -from _pytest.compat import get_real_func -from _pytest.compat import getimfunc -from _pytest.compat import getlocation -from _pytest.compat import is_async_function -from _pytest.compat import is_generator -from _pytest.compat import LEGACY_PATH -from _pytest.compat import NOTSET -from _pytest.compat import safe_getattr -from _pytest.compat import safe_isclass -from _pytest.compat import STRING_TYPES -from _pytest.config import Config -from _pytest.config import ExitCode -from _pytest.config import hookimpl -from _pytest.config.argparsing import Parser -from _pytest.deprecated import check_ispytest -from _pytest.deprecated import FSCOLLECTOR_GETHOOKPROXY_ISINITPATH -from _pytest.deprecated import INSTANCE_COLLECTOR -from _pytest.deprecated import NOSE_SUPPORT_METHOD -from _pytest.fixtures import FuncFixtureInfo -from _pytest.main import Session -from _pytest.mark import MARK_GEN -from _pytest.mark import ParameterSet -from _pytest.mark.structures import get_unpacked_marks -from _pytest.mark.structures import Mark -from _pytest.mark.structures import MarkDecorator -from _pytest.mark.structures import normalize_mark_list -from _pytest.outcomes import fail -from _pytest.outcomes import skip -from _pytest.pathlib import bestrelpath -from _pytest.pathlib import fnmatch_ex -from _pytest.pathlib import import_path -from _pytest.pathlib import ImportPathMismatchError -from _pytest.pathlib import parts -from _pytest.pathlib import visit -from _pytest.scope import Scope -from _pytest.warning_types import PytestCollectionWarning -from _pytest.warning_types import PytestReturnNotNoneWarning -from _pytest.warning_types import PytestUnhandledCoroutineWarning - -if TYPE_CHECKING: - from typing_extensions import Literal - - from _pytest.scope import _ScopeName - - -_PYTEST_DIR = Path(_pytest.__file__).parent - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("general") - group.addoption( - "--fixtures", - "--funcargs", - action="store_true", - dest="showfixtures", - default=False, - help="Show available fixtures, sorted by plugin appearance " - "(fixtures with leading '_' are only shown with '-v')", - ) - group.addoption( - "--fixtures-per-test", - action="store_true", - dest="show_fixtures_per_test", - default=False, - help="Show fixtures per test", - ) - parser.addini( - "python_files", - type="args", - # NOTE: default is also used in AssertionRewritingHook. - default=["test_*.py", "*_test.py"], - help="Glob-style file patterns for Python test module discovery", - ) - parser.addini( - "python_classes", - type="args", - default=["Test"], - help="Prefixes or glob names for Python test class discovery", - ) - parser.addini( - "python_functions", - type="args", - default=["test"], - help="Prefixes or glob names for Python test function and method discovery", - ) - parser.addini( - "disable_test_id_escaping_and_forfeit_all_rights_to_community_support", - type="bool", - default=False, - help="Disable string escape non-ASCII characters, might cause unwanted " - "side effects(use at your own risk)", - ) - - -def pytest_cmdline_main(config: Config) -> Optional[Union[int, ExitCode]]: - if config.option.showfixtures: - showfixtures(config) - return 0 - if config.option.show_fixtures_per_test: - show_fixtures_per_test(config) - return 0 - return None - - -def pytest_generate_tests(metafunc: "Metafunc") -> None: - for marker in metafunc.definition.iter_markers(name="parametrize"): - metafunc.parametrize(*marker.args, **marker.kwargs, _param_mark=marker) - - -def pytest_configure(config: Config) -> None: - config.addinivalue_line( - "markers", - "parametrize(argnames, argvalues): call a test function multiple " - "times passing in different arguments in turn. argvalues generally " - "needs to be a list of values if argnames specifies only one name " - "or a list of tuples of values if argnames specifies multiple names. " - "Example: @parametrize('arg1', [1,2]) would lead to two calls of the " - "decorated test function, one with arg1=1 and another with arg1=2." - "see https://docs.pytest.org/en/stable/how-to/parametrize.html for more info " - "and examples.", - ) - config.addinivalue_line( - "markers", - "usefixtures(fixturename1, fixturename2, ...): mark tests as needing " - "all of the specified fixtures. see " - "https://docs.pytest.org/en/stable/explanation/fixtures.html#usefixtures ", - ) - - -def async_warn_and_skip(nodeid: str) -> None: - msg = "async def functions are not natively supported and have been skipped.\n" - msg += ( - "You need to install a suitable plugin for your async framework, for example:\n" - ) - msg += " - anyio\n" - msg += " - pytest-asyncio\n" - msg += " - pytest-tornasync\n" - msg += " - pytest-trio\n" - msg += " - pytest-twisted" - warnings.warn(PytestUnhandledCoroutineWarning(msg.format(nodeid))) - skip(reason="async def function and no async plugin installed (see warnings)") - - -@hookimpl(trylast=True) -def pytest_pyfunc_call(pyfuncitem: "Function") -> Optional[object]: - testfunction = pyfuncitem.obj - if is_async_function(testfunction): - async_warn_and_skip(pyfuncitem.nodeid) - funcargs = pyfuncitem.funcargs - testargs = {arg: funcargs[arg] for arg in pyfuncitem._fixtureinfo.argnames} - result = testfunction(**testargs) - if hasattr(result, "__await__") or hasattr(result, "__aiter__"): - async_warn_and_skip(pyfuncitem.nodeid) - elif result is not None: - warnings.warn( - PytestReturnNotNoneWarning( - f"Expected None, but {pyfuncitem.nodeid} returned {result!r}, which will be an error in a " - "future version of pytest. Did you mean to use `assert` instead of `return`?" - ) - ) - return True - - -def pytest_collect_file(file_path: Path, parent: nodes.Collector) -> Optional["Module"]: - if file_path.suffix == ".py": - if not parent.session.isinitpath(file_path): - if not path_matches_patterns( - file_path, parent.config.getini("python_files") + ["__init__.py"] - ): - return None - ihook = parent.session.gethookproxy(file_path) - module: Module = ihook.pytest_pycollect_makemodule( - module_path=file_path, parent=parent - ) - return module - return None - - -def path_matches_patterns(path: Path, patterns: Iterable[str]) -> bool: - """Return whether path matches any of the patterns in the list of globs given.""" - return any(fnmatch_ex(pattern, path) for pattern in patterns) - - -def pytest_pycollect_makemodule(module_path: Path, parent) -> "Module": - if module_path.name == "__init__.py": - pkg: Package = Package.from_parent(parent, path=module_path) - return pkg - mod: Module = Module.from_parent(parent, path=module_path) - return mod - - -@hookimpl(trylast=True) -def pytest_pycollect_makeitem( - collector: Union["Module", "Class"], name: str, obj: object -) -> Union[None, nodes.Item, nodes.Collector, List[Union[nodes.Item, nodes.Collector]]]: - assert isinstance(collector, (Class, Module)), type(collector) - # Nothing was collected elsewhere, let's do it here. - if safe_isclass(obj): - if collector.istestclass(obj, name): - klass: Class = Class.from_parent(collector, name=name, obj=obj) - return klass - elif collector.istestfunction(obj, name): - # mock seems to store unbound methods (issue473), normalize it. - obj = getattr(obj, "__func__", obj) - # We need to try and unwrap the function if it's a functools.partial - # or a functools.wrapped. - # We mustn't if it's been wrapped with mock.patch (python 2 only). - if not (inspect.isfunction(obj) or inspect.isfunction(get_real_func(obj))): - filename, lineno = getfslineno(obj) - warnings.warn_explicit( - message=PytestCollectionWarning( - "cannot collect %r because it is not a function." % name - ), - category=None, - filename=str(filename), - lineno=lineno + 1, - ) - elif getattr(obj, "__test__", True): - if is_generator(obj): - res: Function = Function.from_parent(collector, name=name) - reason = "yield tests were removed in pytest 4.0 - {name} will be ignored".format( - name=name - ) - res.add_marker(MARK_GEN.xfail(run=False, reason=reason)) - res.warn(PytestCollectionWarning(reason)) - return res - else: - return list(collector._genfunctions(name, obj)) - return None - - -class PyobjMixin(nodes.Node): - """this mix-in inherits from Node to carry over the typing information - - as its intended to always mix in before a node - its position in the mro is unaffected""" - - _ALLOW_MARKERS = True - - @property - def module(self): - """Python module object this node was collected from (can be None).""" - node = self.getparent(Module) - return node.obj if node is not None else None - - @property - def cls(self): - """Python class object this node was collected from (can be None).""" - node = self.getparent(Class) - return node.obj if node is not None else None - - @property - def instance(self): - """Python instance object the function is bound to. - - Returns None if not a test method, e.g. for a standalone test function, - a staticmethod, a class or a module. - """ - node = self.getparent(Function) - return getattr(node.obj, "__self__", None) if node is not None else None - - @property - def obj(self): - """Underlying Python object.""" - obj = getattr(self, "_obj", None) - if obj is None: - self._obj = obj = self._getobj() - # XXX evil hack - # used to avoid Function marker duplication - if self._ALLOW_MARKERS: - self.own_markers.extend(get_unpacked_marks(self.obj)) - # This assumes that `obj` is called before there is a chance - # to add custom keys to `self.keywords`, so no fear of overriding. - self.keywords.update((mark.name, mark) for mark in self.own_markers) - return obj - - @obj.setter - def obj(self, value): - self._obj = value - - def _getobj(self): - """Get the underlying Python object. May be overwritten by subclasses.""" - # TODO: Improve the type of `parent` such that assert/ignore aren't needed. - assert self.parent is not None - obj = self.parent.obj # type: ignore[attr-defined] - return getattr(obj, self.name) - - def getmodpath(self, stopatmodule: bool = True, includemodule: bool = False) -> str: - """Return Python path relative to the containing module.""" - chain = self.listchain() - chain.reverse() - parts = [] - for node in chain: - name = node.name - if isinstance(node, Module): - name = os.path.splitext(name)[0] - if stopatmodule: - if includemodule: - parts.append(name) - break - parts.append(name) - parts.reverse() - return ".".join(parts) - - def reportinfo(self) -> Tuple[Union["os.PathLike[str]", str], Optional[int], str]: - # XXX caching? - obj = self.obj - compat_co_firstlineno = getattr(obj, "compat_co_firstlineno", None) - if isinstance(compat_co_firstlineno, int): - # nose compatibility - file_path = sys.modules[obj.__module__].__file__ - assert file_path is not None - if file_path.endswith(".pyc"): - file_path = file_path[:-1] - path: Union["os.PathLike[str]", str] = file_path - lineno = compat_co_firstlineno - else: - path, lineno = getfslineno(obj) - modpath = self.getmodpath() - assert isinstance(lineno, int) - return path, lineno, modpath - - -# As an optimization, these builtin attribute names are pre-ignored when -# iterating over an object during collection -- the pytest_pycollect_makeitem -# hook is not called for them. -# fmt: off -class _EmptyClass: pass # noqa: E701 -IGNORED_ATTRIBUTES = frozenset.union( # noqa: E305 - frozenset(), - # Module. - dir(types.ModuleType("empty_module")), - # Some extra module attributes the above doesn't catch. - {"__builtins__", "__file__", "__cached__"}, - # Class. - dir(_EmptyClass), - # Instance. - dir(_EmptyClass()), -) -del _EmptyClass -# fmt: on - - -class PyCollector(PyobjMixin, nodes.Collector): - def funcnamefilter(self, name: str) -> bool: - return self._matches_prefix_or_glob_option("python_functions", name) - - def isnosetest(self, obj: object) -> bool: - """Look for the __test__ attribute, which is applied by the - @nose.tools.istest decorator. - """ - # We explicitly check for "is True" here to not mistakenly treat - # classes with a custom __getattr__ returning something truthy (like a - # function) as test classes. - return safe_getattr(obj, "__test__", False) is True - - def classnamefilter(self, name: str) -> bool: - return self._matches_prefix_or_glob_option("python_classes", name) - - def istestfunction(self, obj: object, name: str) -> bool: - if self.funcnamefilter(name) or self.isnosetest(obj): - if isinstance(obj, staticmethod): - # staticmethods need to be unwrapped. - obj = safe_getattr(obj, "__func__", False) - return callable(obj) and fixtures.getfixturemarker(obj) is None - else: - return False - - def istestclass(self, obj: object, name: str) -> bool: - return self.classnamefilter(name) or self.isnosetest(obj) - - def _matches_prefix_or_glob_option(self, option_name: str, name: str) -> bool: - """Check if the given name matches the prefix or glob-pattern defined - in ini configuration.""" - for option in self.config.getini(option_name): - if name.startswith(option): - return True - # Check that name looks like a glob-string before calling fnmatch - # because this is called for every name in each collected module, - # and fnmatch is somewhat expensive to call. - elif ("*" in option or "?" in option or "[" in option) and fnmatch.fnmatch( - name, option - ): - return True - return False - - def collect(self) -> Iterable[Union[nodes.Item, nodes.Collector]]: - if not getattr(self.obj, "__test__", True): - return [] - - # Avoid random getattrs and peek in the __dict__ instead. - dicts = [getattr(self.obj, "__dict__", {})] - if isinstance(self.obj, type): - for basecls in self.obj.__mro__: - dicts.append(basecls.__dict__) - - # In each class, nodes should be definition ordered. - # __dict__ is definition ordered. - seen: Set[str] = set() - dict_values: List[List[Union[nodes.Item, nodes.Collector]]] = [] - ihook = self.ihook - for dic in dicts: - values: List[Union[nodes.Item, nodes.Collector]] = [] - # Note: seems like the dict can change during iteration - - # be careful not to remove the list() without consideration. - for name, obj in list(dic.items()): - if name in IGNORED_ATTRIBUTES: - continue - if name in seen: - continue - seen.add(name) - res = ihook.pytest_pycollect_makeitem( - collector=self, name=name, obj=obj - ) - if res is None: - continue - elif isinstance(res, list): - values.extend(res) - else: - values.append(res) - dict_values.append(values) - - # Between classes in the class hierarchy, reverse-MRO order -- nodes - # inherited from base classes should come before subclasses. - result = [] - for values in reversed(dict_values): - result.extend(values) - return result - - def _genfunctions(self, name: str, funcobj) -> Iterator["Function"]: - modulecol = self.getparent(Module) - assert modulecol is not None - module = modulecol.obj - clscol = self.getparent(Class) - cls = clscol and clscol.obj or None - - definition = FunctionDefinition.from_parent(self, name=name, callobj=funcobj) - fixtureinfo = definition._fixtureinfo - - # pytest_generate_tests impls call metafunc.parametrize() which fills - # metafunc._calls, the outcome of the hook. - metafunc = Metafunc( - definition=definition, - fixtureinfo=fixtureinfo, - config=self.config, - cls=cls, - module=module, - _ispytest=True, - ) - methods = [] - if hasattr(module, "pytest_generate_tests"): - methods.append(module.pytest_generate_tests) - if cls is not None and hasattr(cls, "pytest_generate_tests"): - methods.append(cls().pytest_generate_tests) - self.ihook.pytest_generate_tests.call_extra(methods, dict(metafunc=metafunc)) - - if not metafunc._calls: - yield Function.from_parent(self, name=name, fixtureinfo=fixtureinfo) - else: - # Add funcargs() as fixturedefs to fixtureinfo.arg2fixturedefs. - fm = self.session._fixturemanager - fixtures.add_funcarg_pseudo_fixture_def(self, metafunc, fm) - - # Add_funcarg_pseudo_fixture_def may have shadowed some fixtures - # with direct parametrization, so make sure we update what the - # function really needs. - fixtureinfo.prune_dependency_tree() - - for callspec in metafunc._calls: - subname = f"{name}[{callspec.id}]" - yield Function.from_parent( - self, - name=subname, - callspec=callspec, - fixtureinfo=fixtureinfo, - keywords={callspec.id: True}, - originalname=name, - ) - - -class Module(nodes.File, PyCollector): - """Collector for test classes and functions.""" - - def _getobj(self): - return self._importtestmodule() - - def collect(self) -> Iterable[Union[nodes.Item, nodes.Collector]]: - self._inject_setup_module_fixture() - self._inject_setup_function_fixture() - self.session._fixturemanager.parsefactories(self) - return super().collect() - - def _inject_setup_module_fixture(self) -> None: - """Inject a hidden autouse, module scoped fixture into the collected module object - that invokes setUpModule/tearDownModule if either or both are available. - - Using a fixture to invoke this methods ensures we play nicely and unsurprisingly with - other fixtures (#517). - """ - has_nose = self.config.pluginmanager.has_plugin("nose") - setup_module = _get_first_non_fixture_func( - self.obj, ("setUpModule", "setup_module") - ) - if setup_module is None and has_nose: - # The name "setup" is too common - only treat as fixture if callable. - setup_module = _get_first_non_fixture_func(self.obj, ("setup",)) - if not callable(setup_module): - setup_module = None - teardown_module = _get_first_non_fixture_func( - self.obj, ("tearDownModule", "teardown_module") - ) - if teardown_module is None and has_nose: - teardown_module = _get_first_non_fixture_func(self.obj, ("teardown",)) - # Same as "setup" above - only treat as fixture if callable. - if not callable(teardown_module): - teardown_module = None - - if setup_module is None and teardown_module is None: - return - - @fixtures.fixture( - autouse=True, - scope="module", - # Use a unique name to speed up lookup. - name=f"_xunit_setup_module_fixture_{self.obj.__name__}", - ) - def xunit_setup_module_fixture(request) -> Generator[None, None, None]: - if setup_module is not None: - _call_with_optional_argument(setup_module, request.module) - yield - if teardown_module is not None: - _call_with_optional_argument(teardown_module, request.module) - - self.obj.__pytest_setup_module = xunit_setup_module_fixture - - def _inject_setup_function_fixture(self) -> None: - """Inject a hidden autouse, function scoped fixture into the collected module object - that invokes setup_function/teardown_function if either or both are available. - - Using a fixture to invoke this methods ensures we play nicely and unsurprisingly with - other fixtures (#517). - """ - setup_function = _get_first_non_fixture_func(self.obj, ("setup_function",)) - teardown_function = _get_first_non_fixture_func( - self.obj, ("teardown_function",) - ) - if setup_function is None and teardown_function is None: - return - - @fixtures.fixture( - autouse=True, - scope="function", - # Use a unique name to speed up lookup. - name=f"_xunit_setup_function_fixture_{self.obj.__name__}", - ) - def xunit_setup_function_fixture(request) -> Generator[None, None, None]: - if request.instance is not None: - # in this case we are bound to an instance, so we need to let - # setup_method handle this - yield - return - if setup_function is not None: - _call_with_optional_argument(setup_function, request.function) - yield - if teardown_function is not None: - _call_with_optional_argument(teardown_function, request.function) - - self.obj.__pytest_setup_function = xunit_setup_function_fixture - - def _importtestmodule(self): - # We assume we are only called once per module. - importmode = self.config.getoption("--import-mode") - try: - mod = import_path(self.path, mode=importmode, root=self.config.rootpath) - except SyntaxError as e: - raise self.CollectError( - ExceptionInfo.from_current().getrepr(style="short") - ) from e - except ImportPathMismatchError as e: - raise self.CollectError( - "import file mismatch:\n" - "imported module %r has this __file__ attribute:\n" - " %s\n" - "which is not the same as the test file we want to collect:\n" - " %s\n" - "HINT: remove __pycache__ / .pyc files and/or use a " - "unique basename for your test file modules" % e.args - ) from e - except ImportError as e: - exc_info = ExceptionInfo.from_current() - if self.config.getoption("verbose") < 2: - exc_info.traceback = exc_info.traceback.filter(filter_traceback) - exc_repr = ( - exc_info.getrepr(style="short") - if exc_info.traceback - else exc_info.exconly() - ) - formatted_tb = str(exc_repr) - raise self.CollectError( - "ImportError while importing test module '{path}'.\n" - "Hint: make sure your test modules/packages have valid Python names.\n" - "Traceback:\n" - "{traceback}".format(path=self.path, traceback=formatted_tb) - ) from e - except skip.Exception as e: - if e.allow_module_level: - raise - raise self.CollectError( - "Using pytest.skip outside of a test will skip the entire module. " - "If that's your intention, pass `allow_module_level=True`. " - "If you want to skip a specific test or an entire class, " - "use the @pytest.mark.skip or @pytest.mark.skipif decorators." - ) from e - self.config.pluginmanager.consider_module(mod) - return mod - - -class Package(Module): - def __init__( - self, - fspath: Optional[LEGACY_PATH], - parent: nodes.Collector, - # NOTE: following args are unused: - config=None, - session=None, - nodeid=None, - path=Optional[Path], - ) -> None: - # NOTE: Could be just the following, but kept as-is for compat. - # nodes.FSCollector.__init__(self, fspath, parent=parent) - session = parent.session - nodes.FSCollector.__init__( - self, - fspath=fspath, - path=path, - parent=parent, - config=config, - session=session, - nodeid=nodeid, - ) - self.name = self.path.parent.name - - def setup(self) -> None: - # Not using fixtures to call setup_module here because autouse fixtures - # from packages are not called automatically (#4085). - setup_module = _get_first_non_fixture_func( - self.obj, ("setUpModule", "setup_module") - ) - if setup_module is not None: - _call_with_optional_argument(setup_module, self.obj) - - teardown_module = _get_first_non_fixture_func( - self.obj, ("tearDownModule", "teardown_module") - ) - if teardown_module is not None: - func = partial(_call_with_optional_argument, teardown_module, self.obj) - self.addfinalizer(func) - - def gethookproxy(self, fspath: "os.PathLike[str]"): - warnings.warn(FSCOLLECTOR_GETHOOKPROXY_ISINITPATH, stacklevel=2) - return self.session.gethookproxy(fspath) - - def isinitpath(self, path: Union[str, "os.PathLike[str]"]) -> bool: - warnings.warn(FSCOLLECTOR_GETHOOKPROXY_ISINITPATH, stacklevel=2) - return self.session.isinitpath(path) - - def _recurse(self, direntry: "os.DirEntry[str]") -> bool: - if direntry.name == "__pycache__": - return False - fspath = Path(direntry.path) - ihook = self.session.gethookproxy(fspath.parent) - if ihook.pytest_ignore_collect(collection_path=fspath, config=self.config): - return False - norecursepatterns = self.config.getini("norecursedirs") - if any(fnmatch_ex(pat, fspath) for pat in norecursepatterns): - return False - return True - - def _collectfile( - self, fspath: Path, handle_dupes: bool = True - ) -> Sequence[nodes.Collector]: - assert ( - fspath.is_file() - ), "{!r} is not a file (isdir={!r}, exists={!r}, islink={!r})".format( - fspath, fspath.is_dir(), fspath.exists(), fspath.is_symlink() - ) - ihook = self.session.gethookproxy(fspath) - if not self.session.isinitpath(fspath): - if ihook.pytest_ignore_collect(collection_path=fspath, config=self.config): - return () - - if handle_dupes: - keepduplicates = self.config.getoption("keepduplicates") - if not keepduplicates: - duplicate_paths = self.config.pluginmanager._duplicatepaths - if fspath in duplicate_paths: - return () - else: - duplicate_paths.add(fspath) - - return ihook.pytest_collect_file(file_path=fspath, parent=self) # type: ignore[no-any-return] - - def collect(self) -> Iterable[Union[nodes.Item, nodes.Collector]]: - this_path = self.path.parent - init_module = this_path / "__init__.py" - if init_module.is_file() and path_matches_patterns( - init_module, self.config.getini("python_files") - ): - yield Module.from_parent(self, path=init_module) - pkg_prefixes: Set[Path] = set() - for direntry in visit(str(this_path), recurse=self._recurse): - path = Path(direntry.path) - - # We will visit our own __init__.py file, in which case we skip it. - if direntry.is_file(): - if direntry.name == "__init__.py" and path.parent == this_path: - continue - - parts_ = parts(direntry.path) - if any( - str(pkg_prefix) in parts_ and pkg_prefix / "__init__.py" != path - for pkg_prefix in pkg_prefixes - ): - continue - - if direntry.is_file(): - yield from self._collectfile(path) - elif not direntry.is_dir(): - # Broken symlink or invalid/missing file. - continue - elif path.joinpath("__init__.py").is_file(): - pkg_prefixes.add(path) - - -def _call_with_optional_argument(func, arg) -> None: - """Call the given function with the given argument if func accepts one argument, otherwise - calls func without arguments.""" - arg_count = func.__code__.co_argcount - if inspect.ismethod(func): - arg_count -= 1 - if arg_count: - func(arg) - else: - func() - - -def _get_first_non_fixture_func(obj: object, names: Iterable[str]) -> Optional[object]: - """Return the attribute from the given object to be used as a setup/teardown - xunit-style function, but only if not marked as a fixture to avoid calling it twice.""" - for name in names: - meth: Optional[object] = getattr(obj, name, None) - if meth is not None and fixtures.getfixturemarker(meth) is None: - return meth - return None - - -class Class(PyCollector): - """Collector for test methods.""" - - @classmethod - def from_parent(cls, parent, *, name, obj=None, **kw): - """The public constructor.""" - return super().from_parent(name=name, parent=parent, **kw) - - def newinstance(self): - return self.obj() - - def collect(self) -> Iterable[Union[nodes.Item, nodes.Collector]]: - if not safe_getattr(self.obj, "__test__", True): - return [] - if hasinit(self.obj): - assert self.parent is not None - self.warn( - PytestCollectionWarning( - "cannot collect test class %r because it has a " - "__init__ constructor (from: %s)" - % (self.obj.__name__, self.parent.nodeid) - ) - ) - return [] - elif hasnew(self.obj): - assert self.parent is not None - self.warn( - PytestCollectionWarning( - "cannot collect test class %r because it has a " - "__new__ constructor (from: %s)" - % (self.obj.__name__, self.parent.nodeid) - ) - ) - return [] - - self._inject_setup_class_fixture() - self._inject_setup_method_fixture() - - self.session._fixturemanager.parsefactories(self.newinstance(), self.nodeid) - - return super().collect() - - def _inject_setup_class_fixture(self) -> None: - """Inject a hidden autouse, class scoped fixture into the collected class object - that invokes setup_class/teardown_class if either or both are available. - - Using a fixture to invoke this methods ensures we play nicely and unsurprisingly with - other fixtures (#517). - """ - setup_class = _get_first_non_fixture_func(self.obj, ("setup_class",)) - teardown_class = _get_first_non_fixture_func(self.obj, ("teardown_class",)) - if setup_class is None and teardown_class is None: - return - - @fixtures.fixture( - autouse=True, - scope="class", - # Use a unique name to speed up lookup. - name=f"_xunit_setup_class_fixture_{self.obj.__qualname__}", - ) - def xunit_setup_class_fixture(cls) -> Generator[None, None, None]: - if setup_class is not None: - func = getimfunc(setup_class) - _call_with_optional_argument(func, self.obj) - yield - if teardown_class is not None: - func = getimfunc(teardown_class) - _call_with_optional_argument(func, self.obj) - - self.obj.__pytest_setup_class = xunit_setup_class_fixture - - def _inject_setup_method_fixture(self) -> None: - """Inject a hidden autouse, function scoped fixture into the collected class object - that invokes setup_method/teardown_method if either or both are available. - - Using a fixture to invoke these methods ensures we play nicely and unsurprisingly with - other fixtures (#517). - """ - has_nose = self.config.pluginmanager.has_plugin("nose") - setup_name = "setup_method" - setup_method = _get_first_non_fixture_func(self.obj, (setup_name,)) - emit_nose_setup_warning = False - if setup_method is None and has_nose: - setup_name = "setup" - emit_nose_setup_warning = True - setup_method = _get_first_non_fixture_func(self.obj, (setup_name,)) - teardown_name = "teardown_method" - teardown_method = _get_first_non_fixture_func(self.obj, (teardown_name,)) - emit_nose_teardown_warning = False - if teardown_method is None and has_nose: - teardown_name = "teardown" - emit_nose_teardown_warning = True - teardown_method = _get_first_non_fixture_func(self.obj, (teardown_name,)) - if setup_method is None and teardown_method is None: - return - - @fixtures.fixture( - autouse=True, - scope="function", - # Use a unique name to speed up lookup. - name=f"_xunit_setup_method_fixture_{self.obj.__qualname__}", - ) - def xunit_setup_method_fixture(self, request) -> Generator[None, None, None]: - method = request.function - if setup_method is not None: - func = getattr(self, setup_name) - _call_with_optional_argument(func, method) - if emit_nose_setup_warning: - warnings.warn( - NOSE_SUPPORT_METHOD.format( - nodeid=request.node.nodeid, method="setup" - ), - stacklevel=2, - ) - yield - if teardown_method is not None: - func = getattr(self, teardown_name) - _call_with_optional_argument(func, method) - if emit_nose_teardown_warning: - warnings.warn( - NOSE_SUPPORT_METHOD.format( - nodeid=request.node.nodeid, method="teardown" - ), - stacklevel=2, - ) - - self.obj.__pytest_setup_method = xunit_setup_method_fixture - - -class InstanceDummy: - """Instance used to be a node type between Class and Function. It has been - removed in pytest 7.0. Some plugins exist which reference `pytest.Instance` - only to ignore it; this dummy class keeps them working. This will be removed - in pytest 8.""" - - -def __getattr__(name: str) -> object: - if name == "Instance": - warnings.warn(INSTANCE_COLLECTOR, 2) - return InstanceDummy - raise AttributeError(f"module {__name__} has no attribute {name}") - - -def hasinit(obj: object) -> bool: - init: object = getattr(obj, "__init__", None) - if init: - return init != object.__init__ - return False - - -def hasnew(obj: object) -> bool: - new: object = getattr(obj, "__new__", None) - if new: - return new != object.__new__ - return False - - -@final -@attr.s(frozen=True, auto_attribs=True, slots=True) -class IdMaker: - """Make IDs for a parametrization.""" - - # The argnames of the parametrization. - argnames: Sequence[str] - # The ParameterSets of the parametrization. - parametersets: Sequence[ParameterSet] - # Optionally, a user-provided callable to make IDs for parameters in a - # ParameterSet. - idfn: Optional[Callable[[Any], Optional[object]]] - # Optionally, explicit IDs for ParameterSets by index. - ids: Optional[Sequence[Optional[object]]] - # Optionally, the pytest config. - # Used for controlling ASCII escaping, and for calling the - # :hook:`pytest_make_parametrize_id` hook. - config: Optional[Config] - # Optionally, the ID of the node being parametrized. - # Used only for clearer error messages. - nodeid: Optional[str] - # Optionally, the ID of the function being parametrized. - # Used only for clearer error messages. - func_name: Optional[str] - - def make_unique_parameterset_ids(self) -> List[str]: - """Make a unique identifier for each ParameterSet, that may be used to - identify the parametrization in a node ID. - - Format is -...-[counter], where prm_x_token is - - user-provided id, if given - - else an id derived from the value, applicable for certain types - - else - The counter suffix is appended only in case a string wouldn't be unique - otherwise. - """ - resolved_ids = list(self._resolve_ids()) - # All IDs must be unique! - if len(resolved_ids) != len(set(resolved_ids)): - # Record the number of occurrences of each ID. - id_counts = Counter(resolved_ids) - # Map the ID to its next suffix. - id_suffixes: Dict[str, int] = defaultdict(int) - # Suffix non-unique IDs to make them unique. - for index, id in enumerate(resolved_ids): - if id_counts[id] > 1: - resolved_ids[index] = f"{id}{id_suffixes[id]}" - id_suffixes[id] += 1 - return resolved_ids - - def _resolve_ids(self) -> Iterable[str]: - """Resolve IDs for all ParameterSets (may contain duplicates).""" - for idx, parameterset in enumerate(self.parametersets): - if parameterset.id is not None: - # ID provided directly - pytest.param(..., id="...") - yield parameterset.id - elif self.ids and idx < len(self.ids) and self.ids[idx] is not None: - # ID provided in the IDs list - parametrize(..., ids=[...]). - yield self._idval_from_value_required(self.ids[idx], idx) - else: - # ID not provided - generate it. - yield "-".join( - self._idval(val, argname, idx) - for val, argname in zip(parameterset.values, self.argnames) - ) - - def _idval(self, val: object, argname: str, idx: int) -> str: - """Make an ID for a parameter in a ParameterSet.""" - idval = self._idval_from_function(val, argname, idx) - if idval is not None: - return idval - idval = self._idval_from_hook(val, argname) - if idval is not None: - return idval - idval = self._idval_from_value(val) - if idval is not None: - return idval - return self._idval_from_argname(argname, idx) - - def _idval_from_function( - self, val: object, argname: str, idx: int - ) -> Optional[str]: - """Try to make an ID for a parameter in a ParameterSet using the - user-provided id callable, if given.""" - if self.idfn is None: - return None - try: - id = self.idfn(val) - except Exception as e: - prefix = f"{self.nodeid}: " if self.nodeid is not None else "" - msg = "error raised while trying to determine id of parameter '{}' at position {}" - msg = prefix + msg.format(argname, idx) - raise ValueError(msg) from e - if id is None: - return None - return self._idval_from_value(id) - - def _idval_from_hook(self, val: object, argname: str) -> Optional[str]: - """Try to make an ID for a parameter in a ParameterSet by calling the - :hook:`pytest_make_parametrize_id` hook.""" - if self.config: - id: Optional[str] = self.config.hook.pytest_make_parametrize_id( - config=self.config, val=val, argname=argname - ) - return id - return None - - def _idval_from_value(self, val: object) -> Optional[str]: - """Try to make an ID for a parameter in a ParameterSet from its value, - if the value type is supported.""" - if isinstance(val, STRING_TYPES): - return _ascii_escaped_by_config(val, self.config) - elif val is None or isinstance(val, (float, int, bool, complex)): - return str(val) - elif isinstance(val, Pattern): - return ascii_escaped(val.pattern) - elif val is NOTSET: - # Fallback to default. Note that NOTSET is an enum.Enum. - pass - elif isinstance(val, enum.Enum): - return str(val) - elif isinstance(getattr(val, "__name__", None), str): - # Name of a class, function, module, etc. - name: str = getattr(val, "__name__") - return name - return None - - def _idval_from_value_required(self, val: object, idx: int) -> str: - """Like _idval_from_value(), but fails if the type is not supported.""" - id = self._idval_from_value(val) - if id is not None: - return id - - # Fail. - if self.func_name is not None: - prefix = f"In {self.func_name}: " - elif self.nodeid is not None: - prefix = f"In {self.nodeid}: " - else: - prefix = "" - msg = ( - f"{prefix}ids contains unsupported value {saferepr(val)} (type: {type(val)!r}) at index {idx}. " - "Supported types are: str, bytes, int, float, complex, bool, enum, regex or anything with a __name__." - ) - fail(msg, pytrace=False) - - @staticmethod - def _idval_from_argname(argname: str, idx: int) -> str: - """Make an ID for a parameter in a ParameterSet from the argument name - and the index of the ParameterSet.""" - return str(argname) + str(idx) - - -@final -@attr.s(frozen=True, slots=True, auto_attribs=True) -class CallSpec2: - """A planned parameterized invocation of a test function. - - Calculated during collection for a given test function's Metafunc. - Once collection is over, each callspec is turned into a single Item - and stored in item.callspec. - """ - - # arg name -> arg value which will be passed to the parametrized test - # function (direct parameterization). - funcargs: Dict[str, object] = attr.Factory(dict) - # arg name -> arg value which will be passed to a fixture of the same name - # (indirect parametrization). - params: Dict[str, object] = attr.Factory(dict) - # arg name -> arg index. - indices: Dict[str, int] = attr.Factory(dict) - # Used for sorting parametrized resources. - _arg2scope: Dict[str, Scope] = attr.Factory(dict) - # Parts which will be added to the item's name in `[..]` separated by "-". - _idlist: List[str] = attr.Factory(list) - # Marks which will be applied to the item. - marks: List[Mark] = attr.Factory(list) - - def setmulti( - self, - *, - valtypes: Mapping[str, "Literal['params', 'funcargs']"], - argnames: Iterable[str], - valset: Iterable[object], - id: str, - marks: Iterable[Union[Mark, MarkDecorator]], - scope: Scope, - param_index: int, - ) -> "CallSpec2": - funcargs = self.funcargs.copy() - params = self.params.copy() - indices = self.indices.copy() - arg2scope = self._arg2scope.copy() - for arg, val in zip(argnames, valset): - if arg in params or arg in funcargs: - raise ValueError(f"duplicate {arg!r}") - valtype_for_arg = valtypes[arg] - if valtype_for_arg == "params": - params[arg] = val - elif valtype_for_arg == "funcargs": - funcargs[arg] = val - else: - assert_never(valtype_for_arg) - indices[arg] = param_index - arg2scope[arg] = scope - return CallSpec2( - funcargs=funcargs, - params=params, - arg2scope=arg2scope, - indices=indices, - idlist=[*self._idlist, id], - marks=[*self.marks, *normalize_mark_list(marks)], - ) - - def getparam(self, name: str) -> object: - try: - return self.params[name] - except KeyError as e: - raise ValueError(name) from e - - @property - def id(self) -> str: - return "-".join(self._idlist) - - -@final -class Metafunc: - """Objects passed to the :hook:`pytest_generate_tests` hook. - - They help to inspect a test function and to generate tests according to - test configuration or values specified in the class or module where a - test function is defined. - """ - - def __init__( - self, - definition: "FunctionDefinition", - fixtureinfo: fixtures.FuncFixtureInfo, - config: Config, - cls=None, - module=None, - *, - _ispytest: bool = False, - ) -> None: - check_ispytest(_ispytest) - - #: Access to the underlying :class:`_pytest.python.FunctionDefinition`. - self.definition = definition - - #: Access to the :class:`pytest.Config` object for the test session. - self.config = config - - #: The module object where the test function is defined in. - self.module = module - - #: Underlying Python test function. - self.function = definition.obj - - #: Set of fixture names required by the test function. - self.fixturenames = fixtureinfo.names_closure - - #: Class object where the test function is defined in or ``None``. - self.cls = cls - - self._arg2fixturedefs = fixtureinfo.name2fixturedefs - - # Result of parametrize(). - self._calls: List[CallSpec2] = [] - - def parametrize( - self, - argnames: Union[str, Sequence[str]], - argvalues: Iterable[Union[ParameterSet, Sequence[object], object]], - indirect: Union[bool, Sequence[str]] = False, - ids: Optional[ - Union[Iterable[Optional[object]], Callable[[Any], Optional[object]]] - ] = None, - scope: "Optional[_ScopeName]" = None, - *, - _param_mark: Optional[Mark] = None, - ) -> None: - """Add new invocations to the underlying test function using the list - of argvalues for the given argnames. Parametrization is performed - during the collection phase. If you need to setup expensive resources - see about setting indirect to do it rather than at test setup time. - - Can be called multiple times, in which case each call parametrizes all - previous parametrizations, e.g. - - :: - - unparametrized: t - parametrize ["x", "y"]: t[x], t[y] - parametrize [1, 2]: t[x-1], t[x-2], t[y-1], t[y-2] - - :param argnames: - A comma-separated string denoting one or more argument names, or - a list/tuple of argument strings. - - :param argvalues: - The list of argvalues determines how often a test is invoked with - different argument values. - - If only one argname was specified argvalues is a list of values. - If N argnames were specified, argvalues must be a list of - N-tuples, where each tuple-element specifies a value for its - respective argname. - - :param indirect: - A list of arguments' names (subset of argnames) or a boolean. - If True the list contains all names from the argnames. Each - argvalue corresponding to an argname in this list will - be passed as request.param to its respective argname fixture - function so that it can perform more expensive setups during the - setup phase of a test rather than at collection time. - - :param ids: - Sequence of (or generator for) ids for ``argvalues``, - or a callable to return part of the id for each argvalue. - - With sequences (and generators like ``itertools.count()``) the - returned ids should be of type ``string``, ``int``, ``float``, - ``bool``, or ``None``. - They are mapped to the corresponding index in ``argvalues``. - ``None`` means to use the auto-generated id. - - If it is a callable it will be called for each entry in - ``argvalues``, and the return value is used as part of the - auto-generated id for the whole set (where parts are joined with - dashes ("-")). - This is useful to provide more specific ids for certain items, e.g. - dates. Returning ``None`` will use an auto-generated id. - - If no ids are provided they will be generated automatically from - the argvalues. - - :param scope: - If specified it denotes the scope of the parameters. - The scope is used for grouping tests by parameter instances. - It will also override any fixture-function defined scope, allowing - to set a dynamic scope using test context or configuration. - """ - argnames, parametersets = ParameterSet._for_parametrize( - argnames, - argvalues, - self.function, - self.config, - nodeid=self.definition.nodeid, - ) - del argvalues - - if "request" in argnames: - fail( - "'request' is a reserved name and cannot be used in @pytest.mark.parametrize", - pytrace=False, - ) - - if scope is not None: - scope_ = Scope.from_user( - scope, descr=f"parametrize() call in {self.function.__name__}" - ) - else: - scope_ = _find_parametrized_scope(argnames, self._arg2fixturedefs, indirect) - - self._validate_if_using_arg_names(argnames, indirect) - - arg_values_types = self._resolve_arg_value_types(argnames, indirect) - - # Use any already (possibly) generated ids with parametrize Marks. - if _param_mark and _param_mark._param_ids_from: - generated_ids = _param_mark._param_ids_from._param_ids_generated - if generated_ids is not None: - ids = generated_ids - - ids = self._resolve_parameter_set_ids( - argnames, ids, parametersets, nodeid=self.definition.nodeid - ) - - # Store used (possibly generated) ids with parametrize Marks. - if _param_mark and _param_mark._param_ids_from and generated_ids is None: - object.__setattr__(_param_mark._param_ids_from, "_param_ids_generated", ids) - - # Create the new calls: if we are parametrize() multiple times (by applying the decorator - # more than once) then we accumulate those calls generating the cartesian product - # of all calls. - newcalls = [] - for callspec in self._calls or [CallSpec2()]: - for param_index, (param_id, param_set) in enumerate( - zip(ids, parametersets) - ): - newcallspec = callspec.setmulti( - valtypes=arg_values_types, - argnames=argnames, - valset=param_set.values, - id=param_id, - marks=param_set.marks, - scope=scope_, - param_index=param_index, - ) - newcalls.append(newcallspec) - self._calls = newcalls - - def _resolve_parameter_set_ids( - self, - argnames: Sequence[str], - ids: Optional[ - Union[Iterable[Optional[object]], Callable[[Any], Optional[object]]] - ], - parametersets: Sequence[ParameterSet], - nodeid: str, - ) -> List[str]: - """Resolve the actual ids for the given parameter sets. - - :param argnames: - Argument names passed to ``parametrize()``. - :param ids: - The `ids` parameter of the ``parametrize()`` call (see docs). - :param parametersets: - The parameter sets, each containing a set of values corresponding - to ``argnames``. - :param nodeid str: - The nodeid of the definition item that generated this - parametrization. - :returns: - List with ids for each parameter set given. - """ - if ids is None: - idfn = None - ids_ = None - elif callable(ids): - idfn = ids - ids_ = None - else: - idfn = None - ids_ = self._validate_ids(ids, parametersets, self.function.__name__) - id_maker = IdMaker( - argnames, - parametersets, - idfn, - ids_, - self.config, - nodeid=nodeid, - func_name=self.function.__name__, - ) - return id_maker.make_unique_parameterset_ids() - - def _validate_ids( - self, - ids: Iterable[Optional[object]], - parametersets: Sequence[ParameterSet], - func_name: str, - ) -> List[Optional[object]]: - try: - num_ids = len(ids) # type: ignore[arg-type] - except TypeError: - try: - iter(ids) - except TypeError as e: - raise TypeError("ids must be a callable or an iterable") from e - num_ids = len(parametersets) - - # num_ids == 0 is a special case: https://github.com/pytest-dev/pytest/issues/1849 - if num_ids != len(parametersets) and num_ids != 0: - msg = "In {}: {} parameter sets specified, with different number of ids: {}" - fail(msg.format(func_name, len(parametersets), num_ids), pytrace=False) - - return list(itertools.islice(ids, num_ids)) - - def _resolve_arg_value_types( - self, - argnames: Sequence[str], - indirect: Union[bool, Sequence[str]], - ) -> Dict[str, "Literal['params', 'funcargs']"]: - """Resolve if each parametrized argument must be considered a - parameter to a fixture or a "funcarg" to the function, based on the - ``indirect`` parameter of the parametrized() call. - - :param List[str] argnames: List of argument names passed to ``parametrize()``. - :param indirect: Same as the ``indirect`` parameter of ``parametrize()``. - :rtype: Dict[str, str] - A dict mapping each arg name to either: - * "params" if the argname should be the parameter of a fixture of the same name. - * "funcargs" if the argname should be a parameter to the parametrized test function. - """ - if isinstance(indirect, bool): - valtypes: Dict[str, Literal["params", "funcargs"]] = dict.fromkeys( - argnames, "params" if indirect else "funcargs" - ) - elif isinstance(indirect, Sequence): - valtypes = dict.fromkeys(argnames, "funcargs") - for arg in indirect: - if arg not in argnames: - fail( - "In {}: indirect fixture '{}' doesn't exist".format( - self.function.__name__, arg - ), - pytrace=False, - ) - valtypes[arg] = "params" - else: - fail( - "In {func}: expected Sequence or boolean for indirect, got {type}".format( - type=type(indirect).__name__, func=self.function.__name__ - ), - pytrace=False, - ) - return valtypes - - def _validate_if_using_arg_names( - self, - argnames: Sequence[str], - indirect: Union[bool, Sequence[str]], - ) -> None: - """Check if all argnames are being used, by default values, or directly/indirectly. - - :param List[str] argnames: List of argument names passed to ``parametrize()``. - :param indirect: Same as the ``indirect`` parameter of ``parametrize()``. - :raises ValueError: If validation fails. - """ - default_arg_names = set(get_default_arg_names(self.function)) - func_name = self.function.__name__ - for arg in argnames: - if arg not in self.fixturenames: - if arg in default_arg_names: - fail( - "In {}: function already takes an argument '{}' with a default value".format( - func_name, arg - ), - pytrace=False, - ) - else: - if isinstance(indirect, Sequence): - name = "fixture" if arg in indirect else "argument" - else: - name = "fixture" if indirect else "argument" - fail( - f"In {func_name}: function uses no {name} '{arg}'", - pytrace=False, - ) - - -def _find_parametrized_scope( - argnames: Sequence[str], - arg2fixturedefs: Mapping[str, Sequence[fixtures.FixtureDef[object]]], - indirect: Union[bool, Sequence[str]], -) -> Scope: - """Find the most appropriate scope for a parametrized call based on its arguments. - - When there's at least one direct argument, always use "function" scope. - - When a test function is parametrized and all its arguments are indirect - (e.g. fixtures), return the most narrow scope based on the fixtures used. - - Related to issue #1832, based on code posted by @Kingdread. - """ - if isinstance(indirect, Sequence): - all_arguments_are_fixtures = len(indirect) == len(argnames) - else: - all_arguments_are_fixtures = bool(indirect) - - if all_arguments_are_fixtures: - fixturedefs = arg2fixturedefs or {} - used_scopes = [ - fixturedef[0]._scope - for name, fixturedef in fixturedefs.items() - if name in argnames - ] - # Takes the most narrow scope from used fixtures. - return min(used_scopes, default=Scope.Function) - - return Scope.Function - - -def _ascii_escaped_by_config(val: Union[str, bytes], config: Optional[Config]) -> str: - if config is None: - escape_option = False - else: - escape_option = config.getini( - "disable_test_id_escaping_and_forfeit_all_rights_to_community_support" - ) - # TODO: If escaping is turned off and the user passes bytes, - # will return a bytes. For now we ignore this but the - # code *probably* doesn't handle this case. - return val if escape_option else ascii_escaped(val) # type: ignore - - -def _pretty_fixture_path(func) -> str: - cwd = Path.cwd() - loc = Path(getlocation(func, str(cwd))) - prefix = Path("...", "_pytest") - try: - return str(prefix / loc.relative_to(_PYTEST_DIR)) - except ValueError: - return bestrelpath(cwd, loc) - - -def show_fixtures_per_test(config): - from _pytest.main import wrap_session - - return wrap_session(config, _show_fixtures_per_test) - - -def _show_fixtures_per_test(config: Config, session: Session) -> None: - import _pytest.config - - session.perform_collect() - curdir = Path.cwd() - tw = _pytest.config.create_terminal_writer(config) - verbose = config.getvalue("verbose") - - def get_best_relpath(func) -> str: - loc = getlocation(func, str(curdir)) - return bestrelpath(curdir, Path(loc)) - - def write_fixture(fixture_def: fixtures.FixtureDef[object]) -> None: - argname = fixture_def.argname - if verbose <= 0 and argname.startswith("_"): - return - prettypath = _pretty_fixture_path(fixture_def.func) - tw.write(f"{argname}", green=True) - tw.write(f" -- {prettypath}", yellow=True) - tw.write("\n") - fixture_doc = inspect.getdoc(fixture_def.func) - if fixture_doc: - write_docstring( - tw, fixture_doc.split("\n\n")[0] if verbose <= 0 else fixture_doc - ) - else: - tw.line(" no docstring available", red=True) - - def write_item(item: nodes.Item) -> None: - # Not all items have _fixtureinfo attribute. - info: Optional[FuncFixtureInfo] = getattr(item, "_fixtureinfo", None) - if info is None or not info.name2fixturedefs: - # This test item does not use any fixtures. - return - tw.line() - tw.sep("-", f"fixtures used by {item.name}") - # TODO: Fix this type ignore. - tw.sep("-", f"({get_best_relpath(item.function)})") # type: ignore[attr-defined] - # dict key not used in loop but needed for sorting. - for _, fixturedefs in sorted(info.name2fixturedefs.items()): - assert fixturedefs is not None - if not fixturedefs: - continue - # Last item is expected to be the one used by the test item. - write_fixture(fixturedefs[-1]) - - for session_item in session.items: - write_item(session_item) - - -def showfixtures(config: Config) -> Union[int, ExitCode]: - from _pytest.main import wrap_session - - return wrap_session(config, _showfixtures_main) - - -def _showfixtures_main(config: Config, session: Session) -> None: - import _pytest.config - - session.perform_collect() - curdir = Path.cwd() - tw = _pytest.config.create_terminal_writer(config) - verbose = config.getvalue("verbose") - - fm = session._fixturemanager - - available = [] - seen: Set[Tuple[str, str]] = set() - - for argname, fixturedefs in fm._arg2fixturedefs.items(): - assert fixturedefs is not None - if not fixturedefs: - continue - for fixturedef in fixturedefs: - loc = getlocation(fixturedef.func, str(curdir)) - if (fixturedef.argname, loc) in seen: - continue - seen.add((fixturedef.argname, loc)) - available.append( - ( - len(fixturedef.baseid), - fixturedef.func.__module__, - _pretty_fixture_path(fixturedef.func), - fixturedef.argname, - fixturedef, - ) - ) - - available.sort() - currentmodule = None - for baseid, module, prettypath, argname, fixturedef in available: - if currentmodule != module: - if not module.startswith("_pytest."): - tw.line() - tw.sep("-", f"fixtures defined from {module}") - currentmodule = module - if verbose <= 0 and argname.startswith("_"): - continue - tw.write(f"{argname}", green=True) - if fixturedef.scope != "function": - tw.write(" [%s scope]" % fixturedef.scope, cyan=True) - tw.write(f" -- {prettypath}", yellow=True) - tw.write("\n") - doc = inspect.getdoc(fixturedef.func) - if doc: - write_docstring(tw, doc.split("\n\n")[0] if verbose <= 0 else doc) - else: - tw.line(" no docstring available", red=True) - tw.line() - - -def write_docstring(tw: TerminalWriter, doc: str, indent: str = " ") -> None: - for line in doc.split("\n"): - tw.line(indent + line) - - -class Function(PyobjMixin, nodes.Item): - """An Item responsible for setting up and executing a Python test function. - - :param name: - The full function name, including any decorations like those - added by parametrization (``my_func[my_param]``). - :param parent: - The parent Node. - :param config: - The pytest Config object. - :param callspec: - If given, this is function has been parametrized and the callspec contains - meta information about the parametrization. - :param callobj: - If given, the object which will be called when the Function is invoked, - otherwise the callobj will be obtained from ``parent`` using ``originalname``. - :param keywords: - Keywords bound to the function object for "-k" matching. - :param session: - The pytest Session object. - :param fixtureinfo: - Fixture information already resolved at this fixture node.. - :param originalname: - The attribute name to use for accessing the underlying function object. - Defaults to ``name``. Set this if name is different from the original name, - for example when it contains decorations like those added by parametrization - (``my_func[my_param]``). - """ - - # Disable since functions handle it themselves. - _ALLOW_MARKERS = False - - def __init__( - self, - name: str, - parent, - config: Optional[Config] = None, - callspec: Optional[CallSpec2] = None, - callobj=NOTSET, - keywords: Optional[Mapping[str, Any]] = None, - session: Optional[Session] = None, - fixtureinfo: Optional[FuncFixtureInfo] = None, - originalname: Optional[str] = None, - ) -> None: - super().__init__(name, parent, config=config, session=session) - - if callobj is not NOTSET: - self.obj = callobj - - #: Original function name, without any decorations (for example - #: parametrization adds a ``"[...]"`` suffix to function names), used to access - #: the underlying function object from ``parent`` (in case ``callobj`` is not given - #: explicitly). - #: - #: .. versionadded:: 3.0 - self.originalname = originalname or name - - # Note: when FunctionDefinition is introduced, we should change ``originalname`` - # to a readonly property that returns FunctionDefinition.name. - - self.own_markers.extend(get_unpacked_marks(self.obj)) - if callspec: - self.callspec = callspec - self.own_markers.extend(callspec.marks) - - # todo: this is a hell of a hack - # https://github.com/pytest-dev/pytest/issues/4569 - # Note: the order of the updates is important here; indicates what - # takes priority (ctor argument over function attributes over markers). - # Take own_markers only; NodeKeywords handles parent traversal on its own. - self.keywords.update((mark.name, mark) for mark in self.own_markers) - self.keywords.update(self.obj.__dict__) - if keywords: - self.keywords.update(keywords) - - if fixtureinfo is None: - fixtureinfo = self.session._fixturemanager.getfixtureinfo( - self, self.obj, self.cls, funcargs=True - ) - self._fixtureinfo: FuncFixtureInfo = fixtureinfo - self.fixturenames = fixtureinfo.names_closure - self._initrequest() - - @classmethod - def from_parent(cls, parent, **kw): # todo: determine sound type limitations - """The public constructor.""" - return super().from_parent(parent=parent, **kw) - - def _initrequest(self) -> None: - self.funcargs: Dict[str, object] = {} - self._request = fixtures.FixtureRequest(self, _ispytest=True) - - @property - def function(self): - """Underlying python 'function' object.""" - return getimfunc(self.obj) - - def _getobj(self): - assert self.parent is not None - if isinstance(self.parent, Class): - # Each Function gets a fresh class instance. - parent_obj = self.parent.newinstance() - else: - parent_obj = self.parent.obj # type: ignore[attr-defined] - return getattr(parent_obj, self.originalname) - - @property - def _pyfuncitem(self): - """(compatonly) for code expecting pytest-2.2 style request objects.""" - return self - - def runtest(self) -> None: - """Execute the underlying test function.""" - self.ihook.pytest_pyfunc_call(pyfuncitem=self) - - def setup(self) -> None: - self._request._fillfixtures() - - def _prunetraceback(self, excinfo: ExceptionInfo[BaseException]) -> None: - if hasattr(self, "_obj") and not self.config.getoption("fulltrace", False): - code = _pytest._code.Code.from_function(get_real_func(self.obj)) - path, firstlineno = code.path, code.firstlineno - traceback = excinfo.traceback - ntraceback = traceback.cut(path=path, firstlineno=firstlineno) - if ntraceback == traceback: - ntraceback = ntraceback.cut(path=path) - if ntraceback == traceback: - ntraceback = ntraceback.filter(filter_traceback) - if not ntraceback: - ntraceback = traceback - - excinfo.traceback = ntraceback.filter() - # issue364: mark all but first and last frames to - # only show a single-line message for each frame. - if self.config.getoption("tbstyle", "auto") == "auto": - if len(excinfo.traceback) > 2: - for entry in excinfo.traceback[1:-1]: - entry.set_repr_style("short") - - # TODO: Type ignored -- breaks Liskov Substitution. - def repr_failure( # type: ignore[override] - self, - excinfo: ExceptionInfo[BaseException], - ) -> Union[str, TerminalRepr]: - style = self.config.getoption("tbstyle", "auto") - if style == "auto": - style = "long" - return self._repr_failure_py(excinfo, style=style) - - -class FunctionDefinition(Function): - """ - This class is a step gap solution until we evolve to have actual function definition nodes - and manage to get rid of ``metafunc``. - """ - - def runtest(self) -> None: - raise RuntimeError("function definitions are not supposed to be run as tests") - - setup = runtest diff --git a/venv/lib/python3.12/site-packages/_pytest/python_api.py b/venv/lib/python3.12/site-packages/_pytest/python_api.py deleted file mode 100644 index 7afc2d9..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/python_api.py +++ /dev/null @@ -1,999 +0,0 @@ -import math -import pprint -from collections.abc import Collection -from collections.abc import Sized -from decimal import Decimal -from numbers import Complex -from types import TracebackType -from typing import Any -from typing import Callable -from typing import cast -from typing import ContextManager -from typing import List -from typing import Mapping -from typing import Optional -from typing import Pattern -from typing import Sequence -from typing import Tuple -from typing import Type -from typing import TYPE_CHECKING -from typing import TypeVar -from typing import Union - -if TYPE_CHECKING: - from numpy import ndarray - - -import _pytest._code -from _pytest.compat import final -from _pytest.compat import STRING_TYPES -from _pytest.compat import overload -from _pytest.outcomes import fail - - -def _non_numeric_type_error(value, at: Optional[str]) -> TypeError: - at_str = f" at {at}" if at else "" - return TypeError( - "cannot make approximate comparisons to non-numeric values: {!r} {}".format( - value, at_str - ) - ) - - -def _compare_approx( - full_object: object, - message_data: Sequence[Tuple[str, str, str]], - number_of_elements: int, - different_ids: Sequence[object], - max_abs_diff: float, - max_rel_diff: float, -) -> List[str]: - message_list = list(message_data) - message_list.insert(0, ("Index", "Obtained", "Expected")) - max_sizes = [0, 0, 0] - for index, obtained, expected in message_list: - max_sizes[0] = max(max_sizes[0], len(index)) - max_sizes[1] = max(max_sizes[1], len(obtained)) - max_sizes[2] = max(max_sizes[2], len(expected)) - explanation = [ - f"comparison failed. Mismatched elements: {len(different_ids)} / {number_of_elements}:", - f"Max absolute difference: {max_abs_diff}", - f"Max relative difference: {max_rel_diff}", - ] + [ - f"{indexes:<{max_sizes[0]}} | {obtained:<{max_sizes[1]}} | {expected:<{max_sizes[2]}}" - for indexes, obtained, expected in message_list - ] - return explanation - - -# builtin pytest.approx helper - - -class ApproxBase: - """Provide shared utilities for making approximate comparisons between - numbers or sequences of numbers.""" - - # Tell numpy to use our `__eq__` operator instead of its. - __array_ufunc__ = None - __array_priority__ = 100 - - def __init__(self, expected, rel=None, abs=None, nan_ok: bool = False) -> None: - __tracebackhide__ = True - self.expected = expected - self.abs = abs - self.rel = rel - self.nan_ok = nan_ok - self._check_type() - - def __repr__(self) -> str: - raise NotImplementedError - - def _repr_compare(self, other_side: Any) -> List[str]: - return [ - "comparison failed", - f"Obtained: {other_side}", - f"Expected: {self}", - ] - - def __eq__(self, actual) -> bool: - return all( - a == self._approx_scalar(x) for a, x in self._yield_comparisons(actual) - ) - - def __bool__(self): - __tracebackhide__ = True - raise AssertionError( - "approx() is not supported in a boolean context.\nDid you mean: `assert a == approx(b)`?" - ) - - # Ignore type because of https://github.com/python/mypy/issues/4266. - __hash__ = None # type: ignore - - def __ne__(self, actual) -> bool: - return not (actual == self) - - def _approx_scalar(self, x) -> "ApproxScalar": - if isinstance(x, Decimal): - return ApproxDecimal(x, rel=self.rel, abs=self.abs, nan_ok=self.nan_ok) - return ApproxScalar(x, rel=self.rel, abs=self.abs, nan_ok=self.nan_ok) - - def _yield_comparisons(self, actual): - """Yield all the pairs of numbers to be compared. - - This is used to implement the `__eq__` method. - """ - raise NotImplementedError - - def _check_type(self) -> None: - """Raise a TypeError if the expected value is not a valid type.""" - # This is only a concern if the expected value is a sequence. In every - # other case, the approx() function ensures that the expected value has - # a numeric type. For this reason, the default is to do nothing. The - # classes that deal with sequences should reimplement this method to - # raise if there are any non-numeric elements in the sequence. - - -def _recursive_sequence_map(f, x): - """Recursively map a function over a sequence of arbitrary depth""" - if isinstance(x, (list, tuple)): - seq_type = type(x) - return seq_type(_recursive_sequence_map(f, xi) for xi in x) - else: - return f(x) - - -class ApproxNumpy(ApproxBase): - """Perform approximate comparisons where the expected value is numpy array.""" - - def __repr__(self) -> str: - list_scalars = _recursive_sequence_map( - self._approx_scalar, self.expected.tolist() - ) - return f"approx({list_scalars!r})" - - def _repr_compare(self, other_side: "ndarray") -> List[str]: - import itertools - import math - - def get_value_from_nested_list( - nested_list: List[Any], nd_index: Tuple[Any, ...] - ) -> Any: - """ - Helper function to get the value out of a nested list, given an n-dimensional index. - This mimics numpy's indexing, but for raw nested python lists. - """ - value: Any = nested_list - for i in nd_index: - value = value[i] - return value - - np_array_shape = self.expected.shape - approx_side_as_seq = _recursive_sequence_map( - self._approx_scalar, self.expected.tolist() - ) - - if np_array_shape != other_side.shape: - return [ - "Impossible to compare arrays with different shapes.", - f"Shapes: {np_array_shape} and {other_side.shape}", - ] - - number_of_elements = self.expected.size - max_abs_diff = -math.inf - max_rel_diff = -math.inf - different_ids = [] - for index in itertools.product(*(range(i) for i in np_array_shape)): - approx_value = get_value_from_nested_list(approx_side_as_seq, index) - other_value = get_value_from_nested_list(other_side, index) - if approx_value != other_value: - abs_diff = abs(approx_value.expected - other_value) - max_abs_diff = max(max_abs_diff, abs_diff) - if other_value == 0.0: - max_rel_diff = math.inf - else: - max_rel_diff = max(max_rel_diff, abs_diff / abs(other_value)) - different_ids.append(index) - - message_data = [ - ( - str(index), - str(get_value_from_nested_list(other_side, index)), - str(get_value_from_nested_list(approx_side_as_seq, index)), - ) - for index in different_ids - ] - return _compare_approx( - self.expected, - message_data, - number_of_elements, - different_ids, - max_abs_diff, - max_rel_diff, - ) - - def __eq__(self, actual) -> bool: - import numpy as np - - # self.expected is supposed to always be an array here. - - if not np.isscalar(actual): - try: - actual = np.asarray(actual) - except Exception as e: - raise TypeError(f"cannot compare '{actual}' to numpy.ndarray") from e - - if not np.isscalar(actual) and actual.shape != self.expected.shape: - return False - - return super().__eq__(actual) - - def _yield_comparisons(self, actual): - import numpy as np - - # `actual` can either be a numpy array or a scalar, it is treated in - # `__eq__` before being passed to `ApproxBase.__eq__`, which is the - # only method that calls this one. - - if np.isscalar(actual): - for i in np.ndindex(self.expected.shape): - yield actual, self.expected[i].item() - else: - for i in np.ndindex(self.expected.shape): - yield actual[i].item(), self.expected[i].item() - - -class ApproxMapping(ApproxBase): - """Perform approximate comparisons where the expected value is a mapping - with numeric values (the keys can be anything).""" - - def __repr__(self) -> str: - return "approx({!r})".format( - {k: self._approx_scalar(v) for k, v in self.expected.items()} - ) - - def _repr_compare(self, other_side: Mapping[object, float]) -> List[str]: - import math - - approx_side_as_map = { - k: self._approx_scalar(v) for k, v in self.expected.items() - } - - number_of_elements = len(approx_side_as_map) - max_abs_diff = -math.inf - max_rel_diff = -math.inf - different_ids = [] - for (approx_key, approx_value), other_value in zip( - approx_side_as_map.items(), other_side.values() - ): - if approx_value != other_value: - max_abs_diff = max( - max_abs_diff, abs(approx_value.expected - other_value) - ) - if approx_value.expected == 0.0: - max_rel_diff = math.inf - else: - max_rel_diff = max( - max_rel_diff, - abs( - (approx_value.expected - other_value) - / approx_value.expected - ), - ) - different_ids.append(approx_key) - - message_data = [ - (str(key), str(other_side[key]), str(approx_side_as_map[key])) - for key in different_ids - ] - - return _compare_approx( - self.expected, - message_data, - number_of_elements, - different_ids, - max_abs_diff, - max_rel_diff, - ) - - def __eq__(self, actual) -> bool: - try: - if set(actual.keys()) != set(self.expected.keys()): - return False - except AttributeError: - return False - - return super().__eq__(actual) - - def _yield_comparisons(self, actual): - for k in self.expected.keys(): - yield actual[k], self.expected[k] - - def _check_type(self) -> None: - __tracebackhide__ = True - for key, value in self.expected.items(): - if isinstance(value, type(self.expected)): - msg = "pytest.approx() does not support nested dictionaries: key={!r} value={!r}\n full mapping={}" - raise TypeError(msg.format(key, value, pprint.pformat(self.expected))) - - -class ApproxSequenceLike(ApproxBase): - """Perform approximate comparisons where the expected value is a sequence of numbers.""" - - def __repr__(self) -> str: - seq_type = type(self.expected) - if seq_type not in (tuple, list): - seq_type = list - return "approx({!r})".format( - seq_type(self._approx_scalar(x) for x in self.expected) - ) - - def _repr_compare(self, other_side: Sequence[float]) -> List[str]: - import math - - if len(self.expected) != len(other_side): - return [ - "Impossible to compare lists with different sizes.", - f"Lengths: {len(self.expected)} and {len(other_side)}", - ] - - approx_side_as_map = _recursive_sequence_map(self._approx_scalar, self.expected) - - number_of_elements = len(approx_side_as_map) - max_abs_diff = -math.inf - max_rel_diff = -math.inf - different_ids = [] - for i, (approx_value, other_value) in enumerate( - zip(approx_side_as_map, other_side) - ): - if approx_value != other_value: - abs_diff = abs(approx_value.expected - other_value) - max_abs_diff = max(max_abs_diff, abs_diff) - if other_value == 0.0: - max_rel_diff = math.inf - else: - max_rel_diff = max(max_rel_diff, abs_diff / abs(other_value)) - different_ids.append(i) - - message_data = [ - (str(i), str(other_side[i]), str(approx_side_as_map[i])) - for i in different_ids - ] - - return _compare_approx( - self.expected, - message_data, - number_of_elements, - different_ids, - max_abs_diff, - max_rel_diff, - ) - - def __eq__(self, actual) -> bool: - try: - if len(actual) != len(self.expected): - return False - except TypeError: - return False - return super().__eq__(actual) - - def _yield_comparisons(self, actual): - return zip(actual, self.expected) - - def _check_type(self) -> None: - __tracebackhide__ = True - for index, x in enumerate(self.expected): - if isinstance(x, type(self.expected)): - msg = "pytest.approx() does not support nested data structures: {!r} at index {}\n full sequence: {}" - raise TypeError(msg.format(x, index, pprint.pformat(self.expected))) - - -class ApproxScalar(ApproxBase): - """Perform approximate comparisons where the expected value is a single number.""" - - # Using Real should be better than this Union, but not possible yet: - # https://github.com/python/typeshed/pull/3108 - DEFAULT_ABSOLUTE_TOLERANCE: Union[float, Decimal] = 1e-12 - DEFAULT_RELATIVE_TOLERANCE: Union[float, Decimal] = 1e-6 - - def __repr__(self) -> str: - """Return a string communicating both the expected value and the - tolerance for the comparison being made. - - For example, ``1.0 ± 1e-6``, ``(3+4j) ± 5e-6 ∠ ±180°``. - """ - # Don't show a tolerance for values that aren't compared using - # tolerances, i.e. non-numerics and infinities. Need to call abs to - # handle complex numbers, e.g. (inf + 1j). - if (not isinstance(self.expected, (Complex, Decimal))) or math.isinf( - abs(self.expected) # type: ignore[arg-type] - ): - return str(self.expected) - - # If a sensible tolerance can't be calculated, self.tolerance will - # raise a ValueError. In this case, display '???'. - try: - vetted_tolerance = f"{self.tolerance:.1e}" - if ( - isinstance(self.expected, Complex) - and self.expected.imag - and not math.isinf(self.tolerance) - ): - vetted_tolerance += " ∠ ±180°" - except ValueError: - vetted_tolerance = "???" - - return f"{self.expected} ± {vetted_tolerance}" - - def __eq__(self, actual) -> bool: - """Return whether the given value is equal to the expected value - within the pre-specified tolerance.""" - asarray = _as_numpy_array(actual) - if asarray is not None: - # Call ``__eq__()`` manually to prevent infinite-recursion with - # numpy<1.13. See #3748. - return all(self.__eq__(a) for a in asarray.flat) - - # Short-circuit exact equality. - if actual == self.expected: - return True - - # If either type is non-numeric, fall back to strict equality. - # NB: we need Complex, rather than just Number, to ensure that __abs__, - # __sub__, and __float__ are defined. - if not ( - isinstance(self.expected, (Complex, Decimal)) - and isinstance(actual, (Complex, Decimal)) - ): - return False - - # Allow the user to control whether NaNs are considered equal to each - # other or not. The abs() calls are for compatibility with complex - # numbers. - if math.isnan(abs(self.expected)): # type: ignore[arg-type] - return self.nan_ok and math.isnan(abs(actual)) # type: ignore[arg-type] - - # Infinity shouldn't be approximately equal to anything but itself, but - # if there's a relative tolerance, it will be infinite and infinity - # will seem approximately equal to everything. The equal-to-itself - # case would have been short circuited above, so here we can just - # return false if the expected value is infinite. The abs() call is - # for compatibility with complex numbers. - if math.isinf(abs(self.expected)): # type: ignore[arg-type] - return False - - # Return true if the two numbers are within the tolerance. - result: bool = abs(self.expected - actual) <= self.tolerance - return result - - # Ignore type because of https://github.com/python/mypy/issues/4266. - __hash__ = None # type: ignore - - @property - def tolerance(self): - """Return the tolerance for the comparison. - - This could be either an absolute tolerance or a relative tolerance, - depending on what the user specified or which would be larger. - """ - - def set_default(x, default): - return x if x is not None else default - - # Figure out what the absolute tolerance should be. ``self.abs`` is - # either None or a value specified by the user. - absolute_tolerance = set_default(self.abs, self.DEFAULT_ABSOLUTE_TOLERANCE) - - if absolute_tolerance < 0: - raise ValueError( - f"absolute tolerance can't be negative: {absolute_tolerance}" - ) - if math.isnan(absolute_tolerance): - raise ValueError("absolute tolerance can't be NaN.") - - # If the user specified an absolute tolerance but not a relative one, - # just return the absolute tolerance. - if self.rel is None: - if self.abs is not None: - return absolute_tolerance - - # Figure out what the relative tolerance should be. ``self.rel`` is - # either None or a value specified by the user. This is done after - # we've made sure the user didn't ask for an absolute tolerance only, - # because we don't want to raise errors about the relative tolerance if - # we aren't even going to use it. - relative_tolerance = set_default( - self.rel, self.DEFAULT_RELATIVE_TOLERANCE - ) * abs(self.expected) - - if relative_tolerance < 0: - raise ValueError( - f"relative tolerance can't be negative: {relative_tolerance}" - ) - if math.isnan(relative_tolerance): - raise ValueError("relative tolerance can't be NaN.") - - # Return the larger of the relative and absolute tolerances. - return max(relative_tolerance, absolute_tolerance) - - -class ApproxDecimal(ApproxScalar): - """Perform approximate comparisons where the expected value is a Decimal.""" - - DEFAULT_ABSOLUTE_TOLERANCE = Decimal("1e-12") - DEFAULT_RELATIVE_TOLERANCE = Decimal("1e-6") - - -def approx(expected, rel=None, abs=None, nan_ok: bool = False) -> ApproxBase: - """Assert that two numbers (or two ordered sequences of numbers) are equal to each other - within some tolerance. - - Due to the :doc:`python:tutorial/floatingpoint`, numbers that we - would intuitively expect to be equal are not always so:: - - >>> 0.1 + 0.2 == 0.3 - False - - This problem is commonly encountered when writing tests, e.g. when making - sure that floating-point values are what you expect them to be. One way to - deal with this problem is to assert that two floating-point numbers are - equal to within some appropriate tolerance:: - - >>> abs((0.1 + 0.2) - 0.3) < 1e-6 - True - - However, comparisons like this are tedious to write and difficult to - understand. Furthermore, absolute comparisons like the one above are - usually discouraged because there's no tolerance that works well for all - situations. ``1e-6`` is good for numbers around ``1``, but too small for - very big numbers and too big for very small ones. It's better to express - the tolerance as a fraction of the expected value, but relative comparisons - like that are even more difficult to write correctly and concisely. - - The ``approx`` class performs floating-point comparisons using a syntax - that's as intuitive as possible:: - - >>> from pytest import approx - >>> 0.1 + 0.2 == approx(0.3) - True - - The same syntax also works for ordered sequences of numbers:: - - >>> (0.1 + 0.2, 0.2 + 0.4) == approx((0.3, 0.6)) - True - - ``numpy`` arrays:: - - >>> import numpy as np # doctest: +SKIP - >>> np.array([0.1, 0.2]) + np.array([0.2, 0.4]) == approx(np.array([0.3, 0.6])) # doctest: +SKIP - True - - And for a ``numpy`` array against a scalar:: - - >>> import numpy as np # doctest: +SKIP - >>> np.array([0.1, 0.2]) + np.array([0.2, 0.1]) == approx(0.3) # doctest: +SKIP - True - - Only ordered sequences are supported, because ``approx`` needs - to infer the relative position of the sequences without ambiguity. This means - ``sets`` and other unordered sequences are not supported. - - Finally, dictionary *values* can also be compared:: - - >>> {'a': 0.1 + 0.2, 'b': 0.2 + 0.4} == approx({'a': 0.3, 'b': 0.6}) - True - - The comparison will be true if both mappings have the same keys and their - respective values match the expected tolerances. - - **Tolerances** - - By default, ``approx`` considers numbers within a relative tolerance of - ``1e-6`` (i.e. one part in a million) of its expected value to be equal. - This treatment would lead to surprising results if the expected value was - ``0.0``, because nothing but ``0.0`` itself is relatively close to ``0.0``. - To handle this case less surprisingly, ``approx`` also considers numbers - within an absolute tolerance of ``1e-12`` of its expected value to be - equal. Infinity and NaN are special cases. Infinity is only considered - equal to itself, regardless of the relative tolerance. NaN is not - considered equal to anything by default, but you can make it be equal to - itself by setting the ``nan_ok`` argument to True. (This is meant to - facilitate comparing arrays that use NaN to mean "no data".) - - Both the relative and absolute tolerances can be changed by passing - arguments to the ``approx`` constructor:: - - >>> 1.0001 == approx(1) - False - >>> 1.0001 == approx(1, rel=1e-3) - True - >>> 1.0001 == approx(1, abs=1e-3) - True - - If you specify ``abs`` but not ``rel``, the comparison will not consider - the relative tolerance at all. In other words, two numbers that are within - the default relative tolerance of ``1e-6`` will still be considered unequal - if they exceed the specified absolute tolerance. If you specify both - ``abs`` and ``rel``, the numbers will be considered equal if either - tolerance is met:: - - >>> 1 + 1e-8 == approx(1) - True - >>> 1 + 1e-8 == approx(1, abs=1e-12) - False - >>> 1 + 1e-8 == approx(1, rel=1e-6, abs=1e-12) - True - - You can also use ``approx`` to compare nonnumeric types, or dicts and - sequences containing nonnumeric types, in which case it falls back to - strict equality. This can be useful for comparing dicts and sequences that - can contain optional values:: - - >>> {"required": 1.0000005, "optional": None} == approx({"required": 1, "optional": None}) - True - >>> [None, 1.0000005] == approx([None,1]) - True - >>> ["foo", 1.0000005] == approx([None,1]) - False - - If you're thinking about using ``approx``, then you might want to know how - it compares to other good ways of comparing floating-point numbers. All of - these algorithms are based on relative and absolute tolerances and should - agree for the most part, but they do have meaningful differences: - - - ``math.isclose(a, b, rel_tol=1e-9, abs_tol=0.0)``: True if the relative - tolerance is met w.r.t. either ``a`` or ``b`` or if the absolute - tolerance is met. Because the relative tolerance is calculated w.r.t. - both ``a`` and ``b``, this test is symmetric (i.e. neither ``a`` nor - ``b`` is a "reference value"). You have to specify an absolute tolerance - if you want to compare to ``0.0`` because there is no tolerance by - default. More information: :py:func:`math.isclose`. - - - ``numpy.isclose(a, b, rtol=1e-5, atol=1e-8)``: True if the difference - between ``a`` and ``b`` is less that the sum of the relative tolerance - w.r.t. ``b`` and the absolute tolerance. Because the relative tolerance - is only calculated w.r.t. ``b``, this test is asymmetric and you can - think of ``b`` as the reference value. Support for comparing sequences - is provided by :py:func:`numpy.allclose`. More information: - :std:doc:`numpy:reference/generated/numpy.isclose`. - - - ``unittest.TestCase.assertAlmostEqual(a, b)``: True if ``a`` and ``b`` - are within an absolute tolerance of ``1e-7``. No relative tolerance is - considered , so this function is not appropriate for very large or very - small numbers. Also, it's only available in subclasses of ``unittest.TestCase`` - and it's ugly because it doesn't follow PEP8. More information: - :py:meth:`unittest.TestCase.assertAlmostEqual`. - - - ``a == pytest.approx(b, rel=1e-6, abs=1e-12)``: True if the relative - tolerance is met w.r.t. ``b`` or if the absolute tolerance is met. - Because the relative tolerance is only calculated w.r.t. ``b``, this test - is asymmetric and you can think of ``b`` as the reference value. In the - special case that you explicitly specify an absolute tolerance but not a - relative tolerance, only the absolute tolerance is considered. - - .. note:: - - ``approx`` can handle numpy arrays, but we recommend the - specialised test helpers in :std:doc:`numpy:reference/routines.testing` - if you need support for comparisons, NaNs, or ULP-based tolerances. - - To match strings using regex, you can use - `Matches `_ - from the - `re_assert package `_. - - .. warning:: - - .. versionchanged:: 3.2 - - In order to avoid inconsistent behavior, :py:exc:`TypeError` is - raised for ``>``, ``>=``, ``<`` and ``<=`` comparisons. - The example below illustrates the problem:: - - assert approx(0.1) > 0.1 + 1e-10 # calls approx(0.1).__gt__(0.1 + 1e-10) - assert 0.1 + 1e-10 > approx(0.1) # calls approx(0.1).__lt__(0.1 + 1e-10) - - In the second example one expects ``approx(0.1).__le__(0.1 + 1e-10)`` - to be called. But instead, ``approx(0.1).__lt__(0.1 + 1e-10)`` is used to - comparison. This is because the call hierarchy of rich comparisons - follows a fixed behavior. More information: :py:meth:`object.__ge__` - - .. versionchanged:: 3.7.1 - ``approx`` raises ``TypeError`` when it encounters a dict value or - sequence element of nonnumeric type. - - .. versionchanged:: 6.1.0 - ``approx`` falls back to strict equality for nonnumeric types instead - of raising ``TypeError``. - """ - - # Delegate the comparison to a class that knows how to deal with the type - # of the expected value (e.g. int, float, list, dict, numpy.array, etc). - # - # The primary responsibility of these classes is to implement ``__eq__()`` - # and ``__repr__()``. The former is used to actually check if some - # "actual" value is equivalent to the given expected value within the - # allowed tolerance. The latter is used to show the user the expected - # value and tolerance, in the case that a test failed. - # - # The actual logic for making approximate comparisons can be found in - # ApproxScalar, which is used to compare individual numbers. All of the - # other Approx classes eventually delegate to this class. The ApproxBase - # class provides some convenient methods and overloads, but isn't really - # essential. - - __tracebackhide__ = True - - if isinstance(expected, Decimal): - cls: Type[ApproxBase] = ApproxDecimal - elif isinstance(expected, Mapping): - cls = ApproxMapping - elif _is_numpy_array(expected): - expected = _as_numpy_array(expected) - cls = ApproxNumpy - elif ( - hasattr(expected, "__getitem__") - and isinstance(expected, Sized) - # Type ignored because the error is wrong -- not unreachable. - and not isinstance(expected, STRING_TYPES) # type: ignore[unreachable] - ): - cls = ApproxSequenceLike - elif ( - isinstance(expected, Collection) - # Type ignored because the error is wrong -- not unreachable. - and not isinstance(expected, STRING_TYPES) # type: ignore[unreachable] - ): - msg = f"pytest.approx() only supports ordered sequences, but got: {repr(expected)}" - raise TypeError(msg) - else: - cls = ApproxScalar - - return cls(expected, rel, abs, nan_ok) - - -def _is_numpy_array(obj: object) -> bool: - """ - Return true if the given object is implicitly convertible to ndarray, - and numpy is already imported. - """ - return _as_numpy_array(obj) is not None - - -def _as_numpy_array(obj: object) -> Optional["ndarray"]: - """ - Return an ndarray if the given object is implicitly convertible to ndarray, - and numpy is already imported, otherwise None. - """ - import sys - - np: Any = sys.modules.get("numpy") - if np is not None: - # avoid infinite recursion on numpy scalars, which have __array__ - if np.isscalar(obj): - return None - elif isinstance(obj, np.ndarray): - return obj - elif hasattr(obj, "__array__") or hasattr("obj", "__array_interface__"): - return np.asarray(obj) - return None - - -# builtin pytest.raises helper - -E = TypeVar("E", bound=BaseException) - - -@overload -def raises( - expected_exception: Union[Type[E], Tuple[Type[E], ...]], - *, - match: Optional[Union[str, Pattern[str]]] = ..., -) -> "RaisesContext[E]": - ... - - -@overload -def raises( # noqa: F811 - expected_exception: Union[Type[E], Tuple[Type[E], ...]], - func: Callable[..., Any], - *args: Any, - **kwargs: Any, -) -> _pytest._code.ExceptionInfo[E]: - ... - - -def raises( # noqa: F811 - expected_exception: Union[Type[E], Tuple[Type[E], ...]], *args: Any, **kwargs: Any -) -> Union["RaisesContext[E]", _pytest._code.ExceptionInfo[E]]: - r"""Assert that a code block/function call raises an exception. - - :param typing.Type[E] | typing.Tuple[typing.Type[E], ...] expected_exception: - The excpected exception type, or a tuple if one of multiple possible - exception types are excepted. - :kwparam str | typing.Pattern[str] | None match: - If specified, a string containing a regular expression, - or a regular expression object, that is tested against the string - representation of the exception using :func:`re.search`. - - To match a literal string that may contain :ref:`special characters - `, the pattern can first be escaped with :func:`re.escape`. - - (This is only used when :py:func:`pytest.raises` is used as a context manager, - and passed through to the function otherwise. - When using :py:func:`pytest.raises` as a function, you can use: - ``pytest.raises(Exc, func, match="passed on").match("my pattern")``.) - - .. currentmodule:: _pytest._code - - Use ``pytest.raises`` as a context manager, which will capture the exception of the given - type:: - - >>> import pytest - >>> with pytest.raises(ZeroDivisionError): - ... 1/0 - - If the code block does not raise the expected exception (``ZeroDivisionError`` in the example - above), or no exception at all, the check will fail instead. - - You can also use the keyword argument ``match`` to assert that the - exception matches a text or regex:: - - >>> with pytest.raises(ValueError, match='must be 0 or None'): - ... raise ValueError("value must be 0 or None") - - >>> with pytest.raises(ValueError, match=r'must be \d+$'): - ... raise ValueError("value must be 42") - - The context manager produces an :class:`ExceptionInfo` object which can be used to inspect the - details of the captured exception:: - - >>> with pytest.raises(ValueError) as exc_info: - ... raise ValueError("value must be 42") - >>> assert exc_info.type is ValueError - >>> assert exc_info.value.args[0] == "value must be 42" - - .. note:: - - When using ``pytest.raises`` as a context manager, it's worthwhile to - note that normal context manager rules apply and that the exception - raised *must* be the final line in the scope of the context manager. - Lines of code after that, within the scope of the context manager will - not be executed. For example:: - - >>> value = 15 - >>> with pytest.raises(ValueError) as exc_info: - ... if value > 10: - ... raise ValueError("value must be <= 10") - ... assert exc_info.type is ValueError # this will not execute - - Instead, the following approach must be taken (note the difference in - scope):: - - >>> with pytest.raises(ValueError) as exc_info: - ... if value > 10: - ... raise ValueError("value must be <= 10") - ... - >>> assert exc_info.type is ValueError - - **Using with** ``pytest.mark.parametrize`` - - When using :ref:`pytest.mark.parametrize ref` - it is possible to parametrize tests such that - some runs raise an exception and others do not. - - See :ref:`parametrizing_conditional_raising` for an example. - - **Legacy form** - - It is possible to specify a callable by passing a to-be-called lambda:: - - >>> raises(ZeroDivisionError, lambda: 1/0) - - - or you can specify an arbitrary callable with arguments:: - - >>> def f(x): return 1/x - ... - >>> raises(ZeroDivisionError, f, 0) - - >>> raises(ZeroDivisionError, f, x=0) - - - The form above is fully supported but discouraged for new code because the - context manager form is regarded as more readable and less error-prone. - - .. note:: - Similar to caught exception objects in Python, explicitly clearing - local references to returned ``ExceptionInfo`` objects can - help the Python interpreter speed up its garbage collection. - - Clearing those references breaks a reference cycle - (``ExceptionInfo`` --> caught exception --> frame stack raising - the exception --> current frame stack --> local variables --> - ``ExceptionInfo``) which makes Python keep all objects referenced - from that cycle (including all local variables in the current - frame) alive until the next cyclic garbage collection run. - More detailed information can be found in the official Python - documentation for :ref:`the try statement `. - """ - __tracebackhide__ = True - - if not expected_exception: - raise ValueError( - f"Expected an exception type or a tuple of exception types, but got `{expected_exception!r}`. " - f"Raising exceptions is already understood as failing the test, so you don't need " - f"any special code to say 'this should never raise an exception'." - ) - if isinstance(expected_exception, type): - excepted_exceptions: Tuple[Type[E], ...] = (expected_exception,) - else: - excepted_exceptions = expected_exception - for exc in excepted_exceptions: - if not isinstance(exc, type) or not issubclass(exc, BaseException): - msg = "expected exception must be a BaseException type, not {}" # type: ignore[unreachable] - not_a = exc.__name__ if isinstance(exc, type) else type(exc).__name__ - raise TypeError(msg.format(not_a)) - - message = f"DID NOT RAISE {expected_exception}" - - if not args: - match: Optional[Union[str, Pattern[str]]] = kwargs.pop("match", None) - if kwargs: - msg = "Unexpected keyword arguments passed to pytest.raises: " - msg += ", ".join(sorted(kwargs)) - msg += "\nUse context-manager form instead?" - raise TypeError(msg) - return RaisesContext(expected_exception, message, match) - else: - func = args[0] - if not callable(func): - raise TypeError(f"{func!r} object (type: {type(func)}) must be callable") - try: - func(*args[1:], **kwargs) - except expected_exception as e: - # We just caught the exception - there is a traceback. - assert e.__traceback__ is not None - return _pytest._code.ExceptionInfo.from_exc_info( - (type(e), e, e.__traceback__) - ) - fail(message) - - -# This doesn't work with mypy for now. Use fail.Exception instead. -raises.Exception = fail.Exception # type: ignore - - -@final -class RaisesContext(ContextManager[_pytest._code.ExceptionInfo[E]]): - def __init__( - self, - expected_exception: Union[Type[E], Tuple[Type[E], ...]], - message: str, - match_expr: Optional[Union[str, Pattern[str]]] = None, - ) -> None: - self.expected_exception = expected_exception - self.message = message - self.match_expr = match_expr - self.excinfo: Optional[_pytest._code.ExceptionInfo[E]] = None - - def __enter__(self) -> _pytest._code.ExceptionInfo[E]: - self.excinfo = _pytest._code.ExceptionInfo.for_later() - return self.excinfo - - def __exit__( - self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional[TracebackType], - ) -> bool: - __tracebackhide__ = True - if exc_type is None: - fail(self.message) - assert self.excinfo is not None - if not issubclass(exc_type, self.expected_exception): - return False - # Cast to narrow the exception type now that it's verified. - exc_info = cast(Tuple[Type[E], E, TracebackType], (exc_type, exc_val, exc_tb)) - self.excinfo.fill_unfilled(exc_info) - if self.match_expr is not None: - self.excinfo.match(self.match_expr) - return True diff --git a/venv/lib/python3.12/site-packages/_pytest/python_path.py b/venv/lib/python3.12/site-packages/_pytest/python_path.py deleted file mode 100644 index cceabbc..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/python_path.py +++ /dev/null @@ -1,24 +0,0 @@ -import sys - -import pytest -from pytest import Config -from pytest import Parser - - -def pytest_addoption(parser: Parser) -> None: - parser.addini("pythonpath", type="paths", help="Add paths to sys.path", default=[]) - - -@pytest.hookimpl(tryfirst=True) -def pytest_load_initial_conftests(early_config: Config) -> None: - # `pythonpath = a b` will set `sys.path` to `[a, b, x, y, z, ...]` - for path in reversed(early_config.getini("pythonpath")): - sys.path.insert(0, str(path)) - - -@pytest.hookimpl(trylast=True) -def pytest_unconfigure(config: Config) -> None: - for path in config.getini("pythonpath"): - path_str = str(path) - if path_str in sys.path: - sys.path.remove(path_str) diff --git a/venv/lib/python3.12/site-packages/_pytest/recwarn.py b/venv/lib/python3.12/site-packages/_pytest/recwarn.py deleted file mode 100644 index d76ea02..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/recwarn.py +++ /dev/null @@ -1,313 +0,0 @@ -"""Record warnings during test function execution.""" -import re -import warnings -from pprint import pformat -from types import TracebackType -from typing import Any -from typing import Callable -from typing import Generator -from typing import Iterator -from typing import List -from typing import Optional -from typing import Pattern -from typing import Tuple -from typing import Type -from typing import TypeVar -from typing import Union - -from _pytest.compat import final -from _pytest.compat import overload -from _pytest.deprecated import check_ispytest -from _pytest.deprecated import WARNS_NONE_ARG -from _pytest.fixtures import fixture -from _pytest.outcomes import fail - - -T = TypeVar("T") - - -@fixture -def recwarn() -> Generator["WarningsRecorder", None, None]: - """Return a :class:`WarningsRecorder` instance that records all warnings emitted by test functions. - - See https://docs.pytest.org/en/latest/how-to/capture-warnings.html for information - on warning categories. - """ - wrec = WarningsRecorder(_ispytest=True) - with wrec: - warnings.simplefilter("default") - yield wrec - - -@overload -def deprecated_call( - *, match: Optional[Union[str, Pattern[str]]] = ... -) -> "WarningsRecorder": - ... - - -@overload -def deprecated_call( # noqa: F811 - func: Callable[..., T], *args: Any, **kwargs: Any -) -> T: - ... - - -def deprecated_call( # noqa: F811 - func: Optional[Callable[..., Any]] = None, *args: Any, **kwargs: Any -) -> Union["WarningsRecorder", Any]: - """Assert that code produces a ``DeprecationWarning`` or ``PendingDeprecationWarning``. - - This function can be used as a context manager:: - - >>> import warnings - >>> def api_call_v2(): - ... warnings.warn('use v3 of this api', DeprecationWarning) - ... return 200 - - >>> import pytest - >>> with pytest.deprecated_call(): - ... assert api_call_v2() == 200 - - It can also be used by passing a function and ``*args`` and ``**kwargs``, - in which case it will ensure calling ``func(*args, **kwargs)`` produces one of - the warnings types above. The return value is the return value of the function. - - In the context manager form you may use the keyword argument ``match`` to assert - that the warning matches a text or regex. - - The context manager produces a list of :class:`warnings.WarningMessage` objects, - one for each warning raised. - """ - __tracebackhide__ = True - if func is not None: - args = (func,) + args - return warns((DeprecationWarning, PendingDeprecationWarning), *args, **kwargs) - - -@overload -def warns( - expected_warning: Union[Type[Warning], Tuple[Type[Warning], ...]] = ..., - *, - match: Optional[Union[str, Pattern[str]]] = ..., -) -> "WarningsChecker": - ... - - -@overload -def warns( # noqa: F811 - expected_warning: Union[Type[Warning], Tuple[Type[Warning], ...]], - func: Callable[..., T], - *args: Any, - **kwargs: Any, -) -> T: - ... - - -def warns( # noqa: F811 - expected_warning: Union[Type[Warning], Tuple[Type[Warning], ...]] = Warning, - *args: Any, - match: Optional[Union[str, Pattern[str]]] = None, - **kwargs: Any, -) -> Union["WarningsChecker", Any]: - r"""Assert that code raises a particular class of warning. - - Specifically, the parameter ``expected_warning`` can be a warning class or sequence - of warning classes, and the code inside the ``with`` block must issue at least one - warning of that class or classes. - - This helper produces a list of :class:`warnings.WarningMessage` objects, one for - each warning raised (regardless of whether it is an ``expected_warning`` or not). - - This function can be used as a context manager, which will capture all the raised - warnings inside it:: - - >>> import pytest - >>> with pytest.warns(RuntimeWarning): - ... warnings.warn("my warning", RuntimeWarning) - - In the context manager form you may use the keyword argument ``match`` to assert - that the warning matches a text or regex:: - - >>> with pytest.warns(UserWarning, match='must be 0 or None'): - ... warnings.warn("value must be 0 or None", UserWarning) - - >>> with pytest.warns(UserWarning, match=r'must be \d+$'): - ... warnings.warn("value must be 42", UserWarning) - - >>> with pytest.warns(UserWarning, match=r'must be \d+$'): - ... warnings.warn("this is not here", UserWarning) - Traceback (most recent call last): - ... - Failed: DID NOT WARN. No warnings of type ...UserWarning... were emitted... - - **Using with** ``pytest.mark.parametrize`` - - When using :ref:`pytest.mark.parametrize ref` it is possible to parametrize tests - such that some runs raise a warning and others do not. - - This could be achieved in the same way as with exceptions, see - :ref:`parametrizing_conditional_raising` for an example. - - """ - __tracebackhide__ = True - if not args: - if kwargs: - argnames = ", ".join(sorted(kwargs)) - raise TypeError( - f"Unexpected keyword arguments passed to pytest.warns: {argnames}" - "\nUse context-manager form instead?" - ) - return WarningsChecker(expected_warning, match_expr=match, _ispytest=True) - else: - func = args[0] - if not callable(func): - raise TypeError(f"{func!r} object (type: {type(func)}) must be callable") - with WarningsChecker(expected_warning, _ispytest=True): - return func(*args[1:], **kwargs) - - -class WarningsRecorder(warnings.catch_warnings): # type:ignore[type-arg] - """A context manager to record raised warnings. - - Each recorded warning is an instance of :class:`warnings.WarningMessage`. - - Adapted from `warnings.catch_warnings`. - - .. note:: - ``DeprecationWarning`` and ``PendingDeprecationWarning`` are treated - differently; see :ref:`ensuring_function_triggers`. - - """ - - def __init__(self, *, _ispytest: bool = False) -> None: - check_ispytest(_ispytest) - # Type ignored due to the way typeshed handles warnings.catch_warnings. - super().__init__(record=True) # type: ignore[call-arg] - self._entered = False - self._list: List[warnings.WarningMessage] = [] - - @property - def list(self) -> List["warnings.WarningMessage"]: - """The list of recorded warnings.""" - return self._list - - def __getitem__(self, i: int) -> "warnings.WarningMessage": - """Get a recorded warning by index.""" - return self._list[i] - - def __iter__(self) -> Iterator["warnings.WarningMessage"]: - """Iterate through the recorded warnings.""" - return iter(self._list) - - def __len__(self) -> int: - """The number of recorded warnings.""" - return len(self._list) - - def pop(self, cls: Type[Warning] = Warning) -> "warnings.WarningMessage": - """Pop the first recorded warning, raise exception if not exists.""" - for i, w in enumerate(self._list): - if issubclass(w.category, cls): - return self._list.pop(i) - __tracebackhide__ = True - raise AssertionError(f"{cls!r} not found in warning list") - - def clear(self) -> None: - """Clear the list of recorded warnings.""" - self._list[:] = [] - - # Type ignored because it doesn't exactly warnings.catch_warnings.__enter__ - # -- it returns a List but we only emulate one. - def __enter__(self) -> "WarningsRecorder": # type: ignore - if self._entered: - __tracebackhide__ = True - raise RuntimeError(f"Cannot enter {self!r} twice") - _list = super().__enter__() - # record=True means it's None. - assert _list is not None - self._list = _list - warnings.simplefilter("always") - return self - - def __exit__( - self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional[TracebackType], - ) -> None: - if not self._entered: - __tracebackhide__ = True - raise RuntimeError(f"Cannot exit {self!r} without entering first") - - super().__exit__(exc_type, exc_val, exc_tb) - - # Built-in catch_warnings does not reset entered state so we do it - # manually here for this context manager to become reusable. - self._entered = False - - -@final -class WarningsChecker(WarningsRecorder): - def __init__( - self, - expected_warning: Optional[ - Union[Type[Warning], Tuple[Type[Warning], ...]] - ] = Warning, - match_expr: Optional[Union[str, Pattern[str]]] = None, - *, - _ispytest: bool = False, - ) -> None: - check_ispytest(_ispytest) - super().__init__(_ispytest=True) - - msg = "exceptions must be derived from Warning, not %s" - if expected_warning is None: - warnings.warn(WARNS_NONE_ARG, stacklevel=4) - expected_warning_tup = None - elif isinstance(expected_warning, tuple): - for exc in expected_warning: - if not issubclass(exc, Warning): - raise TypeError(msg % type(exc)) - expected_warning_tup = expected_warning - elif issubclass(expected_warning, Warning): - expected_warning_tup = (expected_warning,) - else: - raise TypeError(msg % type(expected_warning)) - - self.expected_warning = expected_warning_tup - self.match_expr = match_expr - - def __exit__( - self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional[TracebackType], - ) -> None: - super().__exit__(exc_type, exc_val, exc_tb) - - __tracebackhide__ = True - - def found_str(): - return pformat([record.message for record in self], indent=2) - - # only check if we're not currently handling an exception - if exc_type is None and exc_val is None and exc_tb is None: - if self.expected_warning is not None: - if not any(issubclass(r.category, self.expected_warning) for r in self): - __tracebackhide__ = True - fail( - f"DID NOT WARN. No warnings of type {self.expected_warning} were emitted.\n" - f"The list of emitted warnings is: {found_str()}." - ) - elif self.match_expr is not None: - for r in self: - if issubclass(r.category, self.expected_warning): - if re.compile(self.match_expr).search(str(r.message)): - break - else: - fail( - f"""\ -DID NOT WARN. No warnings of type {self.expected_warning} matching the regex were emitted. - Regex: {self.match_expr} - Emitted warnings: {found_str()}""" - ) diff --git a/venv/lib/python3.12/site-packages/_pytest/reports.py b/venv/lib/python3.12/site-packages/_pytest/reports.py deleted file mode 100644 index c35f708..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/reports.py +++ /dev/null @@ -1,603 +0,0 @@ -import os -from io import StringIO -from pprint import pprint -from typing import Any -from typing import cast -from typing import Dict -from typing import Iterable -from typing import Iterator -from typing import List -from typing import Mapping -from typing import NoReturn -from typing import Optional -from typing import Tuple -from typing import Type -from typing import TYPE_CHECKING -from typing import TypeVar -from typing import Union - -import attr - -from _pytest._code.code import ExceptionChainRepr -from _pytest._code.code import ExceptionInfo -from _pytest._code.code import ExceptionRepr -from _pytest._code.code import ReprEntry -from _pytest._code.code import ReprEntryNative -from _pytest._code.code import ReprExceptionInfo -from _pytest._code.code import ReprFileLocation -from _pytest._code.code import ReprFuncArgs -from _pytest._code.code import ReprLocals -from _pytest._code.code import ReprTraceback -from _pytest._code.code import TerminalRepr -from _pytest._io import TerminalWriter -from _pytest.compat import final -from _pytest.config import Config -from _pytest.nodes import Collector -from _pytest.nodes import Item -from _pytest.outcomes import skip - -if TYPE_CHECKING: - from typing_extensions import Literal - - from _pytest.runner import CallInfo - - -def getworkerinfoline(node): - try: - return node._workerinfocache - except AttributeError: - d = node.workerinfo - ver = "%s.%s.%s" % d["version_info"][:3] - node._workerinfocache = s = "[{}] {} -- Python {} {}".format( - d["id"], d["sysplatform"], ver, d["executable"] - ) - return s - - -_R = TypeVar("_R", bound="BaseReport") - - -class BaseReport: - when: Optional[str] - location: Optional[Tuple[str, Optional[int], str]] - longrepr: Union[ - None, ExceptionInfo[BaseException], Tuple[str, int, str], str, TerminalRepr - ] - sections: List[Tuple[str, str]] - nodeid: str - outcome: "Literal['passed', 'failed', 'skipped']" - - def __init__(self, **kw: Any) -> None: - self.__dict__.update(kw) - - if TYPE_CHECKING: - # Can have arbitrary fields given to __init__(). - def __getattr__(self, key: str) -> Any: - ... - - def toterminal(self, out: TerminalWriter) -> None: - if hasattr(self, "node"): - worker_info = getworkerinfoline(self.node) - if worker_info: - out.line(worker_info) - - longrepr = self.longrepr - if longrepr is None: - return - - if hasattr(longrepr, "toterminal"): - longrepr_terminal = cast(TerminalRepr, longrepr) - longrepr_terminal.toterminal(out) - else: - try: - s = str(longrepr) - except UnicodeEncodeError: - s = "" - out.line(s) - - def get_sections(self, prefix: str) -> Iterator[Tuple[str, str]]: - for name, content in self.sections: - if name.startswith(prefix): - yield prefix, content - - @property - def longreprtext(self) -> str: - """Read-only property that returns the full string representation of - ``longrepr``. - - .. versionadded:: 3.0 - """ - file = StringIO() - tw = TerminalWriter(file) - tw.hasmarkup = False - self.toterminal(tw) - exc = file.getvalue() - return exc.strip() - - @property - def caplog(self) -> str: - """Return captured log lines, if log capturing is enabled. - - .. versionadded:: 3.5 - """ - return "\n".join( - content for (prefix, content) in self.get_sections("Captured log") - ) - - @property - def capstdout(self) -> str: - """Return captured text from stdout, if capturing is enabled. - - .. versionadded:: 3.0 - """ - return "".join( - content for (prefix, content) in self.get_sections("Captured stdout") - ) - - @property - def capstderr(self) -> str: - """Return captured text from stderr, if capturing is enabled. - - .. versionadded:: 3.0 - """ - return "".join( - content for (prefix, content) in self.get_sections("Captured stderr") - ) - - @property - def passed(self) -> bool: - """Whether the outcome is passed.""" - return self.outcome == "passed" - - @property - def failed(self) -> bool: - """Whether the outcome is failed.""" - return self.outcome == "failed" - - @property - def skipped(self) -> bool: - """Whether the outcome is skipped.""" - return self.outcome == "skipped" - - @property - def fspath(self) -> str: - """The path portion of the reported node, as a string.""" - return self.nodeid.split("::")[0] - - @property - def count_towards_summary(self) -> bool: - """**Experimental** Whether this report should be counted towards the - totals shown at the end of the test session: "1 passed, 1 failure, etc". - - .. note:: - - This function is considered **experimental**, so beware that it is subject to changes - even in patch releases. - """ - return True - - @property - def head_line(self) -> Optional[str]: - """**Experimental** The head line shown with longrepr output for this - report, more commonly during traceback representation during - failures:: - - ________ Test.foo ________ - - - In the example above, the head_line is "Test.foo". - - .. note:: - - This function is considered **experimental**, so beware that it is subject to changes - even in patch releases. - """ - if self.location is not None: - fspath, lineno, domain = self.location - return domain - return None - - def _get_verbose_word(self, config: Config): - _category, _short, verbose = config.hook.pytest_report_teststatus( - report=self, config=config - ) - return verbose - - def _to_json(self) -> Dict[str, Any]: - """Return the contents of this report as a dict of builtin entries, - suitable for serialization. - - This was originally the serialize_report() function from xdist (ca03269). - - Experimental method. - """ - return _report_to_json(self) - - @classmethod - def _from_json(cls: Type[_R], reportdict: Dict[str, object]) -> _R: - """Create either a TestReport or CollectReport, depending on the calling class. - - It is the callers responsibility to know which class to pass here. - - This was originally the serialize_report() function from xdist (ca03269). - - Experimental method. - """ - kwargs = _report_kwargs_from_json(reportdict) - return cls(**kwargs) - - -def _report_unserialization_failure( - type_name: str, report_class: Type[BaseReport], reportdict -) -> NoReturn: - url = "https://github.com/pytest-dev/pytest/issues" - stream = StringIO() - pprint("-" * 100, stream=stream) - pprint("INTERNALERROR: Unknown entry type returned: %s" % type_name, stream=stream) - pprint("report_name: %s" % report_class, stream=stream) - pprint(reportdict, stream=stream) - pprint("Please report this bug at %s" % url, stream=stream) - pprint("-" * 100, stream=stream) - raise RuntimeError(stream.getvalue()) - - -@final -class TestReport(BaseReport): - """Basic test report object (also used for setup and teardown calls if - they fail). - - Reports can contain arbitrary extra attributes. - """ - - __test__ = False - - def __init__( - self, - nodeid: str, - location: Tuple[str, Optional[int], str], - keywords: Mapping[str, Any], - outcome: "Literal['passed', 'failed', 'skipped']", - longrepr: Union[ - None, ExceptionInfo[BaseException], Tuple[str, int, str], str, TerminalRepr - ], - when: "Literal['setup', 'call', 'teardown']", - sections: Iterable[Tuple[str, str]] = (), - duration: float = 0, - user_properties: Optional[Iterable[Tuple[str, object]]] = None, - **extra, - ) -> None: - #: Normalized collection nodeid. - self.nodeid = nodeid - - #: A (filesystempath, lineno, domaininfo) tuple indicating the - #: actual location of a test item - it might be different from the - #: collected one e.g. if a method is inherited from a different module. - self.location: Tuple[str, Optional[int], str] = location - - #: A name -> value dictionary containing all keywords and - #: markers associated with a test invocation. - self.keywords: Mapping[str, Any] = keywords - - #: Test outcome, always one of "passed", "failed", "skipped". - self.outcome = outcome - - #: None or a failure representation. - self.longrepr = longrepr - - #: One of 'setup', 'call', 'teardown' to indicate runtest phase. - self.when = when - - #: User properties is a list of tuples (name, value) that holds user - #: defined properties of the test. - self.user_properties = list(user_properties or []) - - #: Tuples of str ``(heading, content)`` with extra information - #: for the test report. Used by pytest to add text captured - #: from ``stdout``, ``stderr``, and intercepted logging events. May - #: be used by other plugins to add arbitrary information to reports. - self.sections = list(sections) - - #: Time it took to run just the test. - self.duration: float = duration - - self.__dict__.update(extra) - - def __repr__(self) -> str: - return "<{} {!r} when={!r} outcome={!r}>".format( - self.__class__.__name__, self.nodeid, self.when, self.outcome - ) - - @classmethod - def from_item_and_call(cls, item: Item, call: "CallInfo[None]") -> "TestReport": - """Create and fill a TestReport with standard item and call info. - - :param item: The item. - :param call: The call info. - """ - when = call.when - # Remove "collect" from the Literal type -- only for collection calls. - assert when != "collect" - duration = call.duration - keywords = {x: 1 for x in item.keywords} - excinfo = call.excinfo - sections = [] - if not call.excinfo: - outcome: Literal["passed", "failed", "skipped"] = "passed" - longrepr: Union[ - None, - ExceptionInfo[BaseException], - Tuple[str, int, str], - str, - TerminalRepr, - ] = None - else: - if not isinstance(excinfo, ExceptionInfo): - outcome = "failed" - longrepr = excinfo - elif isinstance(excinfo.value, skip.Exception): - outcome = "skipped" - r = excinfo._getreprcrash() - if excinfo.value._use_item_location: - path, line = item.reportinfo()[:2] - assert line is not None - longrepr = os.fspath(path), line + 1, r.message - else: - longrepr = (str(r.path), r.lineno, r.message) - else: - outcome = "failed" - if call.when == "call": - longrepr = item.repr_failure(excinfo) - else: # exception in setup or teardown - longrepr = item._repr_failure_py( - excinfo, style=item.config.getoption("tbstyle", "auto") - ) - for rwhen, key, content in item._report_sections: - sections.append((f"Captured {key} {rwhen}", content)) - return cls( - item.nodeid, - item.location, - keywords, - outcome, - longrepr, - when, - sections, - duration, - user_properties=item.user_properties, - ) - - -@final -class CollectReport(BaseReport): - """Collection report object. - - Reports can contain arbitrary extra attributes. - """ - - when = "collect" - - def __init__( - self, - nodeid: str, - outcome: "Literal['passed', 'failed', 'skipped']", - longrepr: Union[ - None, ExceptionInfo[BaseException], Tuple[str, int, str], str, TerminalRepr - ], - result: Optional[List[Union[Item, Collector]]], - sections: Iterable[Tuple[str, str]] = (), - **extra, - ) -> None: - #: Normalized collection nodeid. - self.nodeid = nodeid - - #: Test outcome, always one of "passed", "failed", "skipped". - self.outcome = outcome - - #: None or a failure representation. - self.longrepr = longrepr - - #: The collected items and collection nodes. - self.result = result or [] - - #: Tuples of str ``(heading, content)`` with extra information - #: for the test report. Used by pytest to add text captured - #: from ``stdout``, ``stderr``, and intercepted logging events. May - #: be used by other plugins to add arbitrary information to reports. - self.sections = list(sections) - - self.__dict__.update(extra) - - @property - def location(self): - return (self.fspath, None, self.fspath) - - def __repr__(self) -> str: - return "".format( - self.nodeid, len(self.result), self.outcome - ) - - -class CollectErrorRepr(TerminalRepr): - def __init__(self, msg: str) -> None: - self.longrepr = msg - - def toterminal(self, out: TerminalWriter) -> None: - out.line(self.longrepr, red=True) - - -def pytest_report_to_serializable( - report: Union[CollectReport, TestReport] -) -> Optional[Dict[str, Any]]: - if isinstance(report, (TestReport, CollectReport)): - data = report._to_json() - data["$report_type"] = report.__class__.__name__ - return data - # TODO: Check if this is actually reachable. - return None # type: ignore[unreachable] - - -def pytest_report_from_serializable( - data: Dict[str, Any], -) -> Optional[Union[CollectReport, TestReport]]: - if "$report_type" in data: - if data["$report_type"] == "TestReport": - return TestReport._from_json(data) - elif data["$report_type"] == "CollectReport": - return CollectReport._from_json(data) - assert False, "Unknown report_type unserialize data: {}".format( - data["$report_type"] - ) - return None - - -def _report_to_json(report: BaseReport) -> Dict[str, Any]: - """Return the contents of this report as a dict of builtin entries, - suitable for serialization. - - This was originally the serialize_report() function from xdist (ca03269). - """ - - def serialize_repr_entry( - entry: Union[ReprEntry, ReprEntryNative] - ) -> Dict[str, Any]: - data = attr.asdict(entry) - for key, value in data.items(): - if hasattr(value, "__dict__"): - data[key] = attr.asdict(value) - entry_data = {"type": type(entry).__name__, "data": data} - return entry_data - - def serialize_repr_traceback(reprtraceback: ReprTraceback) -> Dict[str, Any]: - result = attr.asdict(reprtraceback) - result["reprentries"] = [ - serialize_repr_entry(x) for x in reprtraceback.reprentries - ] - return result - - def serialize_repr_crash( - reprcrash: Optional[ReprFileLocation], - ) -> Optional[Dict[str, Any]]: - if reprcrash is not None: - return attr.asdict(reprcrash) - else: - return None - - def serialize_exception_longrepr(rep: BaseReport) -> Dict[str, Any]: - assert rep.longrepr is not None - # TODO: Investigate whether the duck typing is really necessary here. - longrepr = cast(ExceptionRepr, rep.longrepr) - result: Dict[str, Any] = { - "reprcrash": serialize_repr_crash(longrepr.reprcrash), - "reprtraceback": serialize_repr_traceback(longrepr.reprtraceback), - "sections": longrepr.sections, - } - if isinstance(longrepr, ExceptionChainRepr): - result["chain"] = [] - for repr_traceback, repr_crash, description in longrepr.chain: - result["chain"].append( - ( - serialize_repr_traceback(repr_traceback), - serialize_repr_crash(repr_crash), - description, - ) - ) - else: - result["chain"] = None - return result - - d = report.__dict__.copy() - if hasattr(report.longrepr, "toterminal"): - if hasattr(report.longrepr, "reprtraceback") and hasattr( - report.longrepr, "reprcrash" - ): - d["longrepr"] = serialize_exception_longrepr(report) - else: - d["longrepr"] = str(report.longrepr) - else: - d["longrepr"] = report.longrepr - for name in d: - if isinstance(d[name], os.PathLike): - d[name] = os.fspath(d[name]) - elif name == "result": - d[name] = None # for now - return d - - -def _report_kwargs_from_json(reportdict: Dict[str, Any]) -> Dict[str, Any]: - """Return **kwargs that can be used to construct a TestReport or - CollectReport instance. - - This was originally the serialize_report() function from xdist (ca03269). - """ - - def deserialize_repr_entry(entry_data): - data = entry_data["data"] - entry_type = entry_data["type"] - if entry_type == "ReprEntry": - reprfuncargs = None - reprfileloc = None - reprlocals = None - if data["reprfuncargs"]: - reprfuncargs = ReprFuncArgs(**data["reprfuncargs"]) - if data["reprfileloc"]: - reprfileloc = ReprFileLocation(**data["reprfileloc"]) - if data["reprlocals"]: - reprlocals = ReprLocals(data["reprlocals"]["lines"]) - - reprentry: Union[ReprEntry, ReprEntryNative] = ReprEntry( - lines=data["lines"], - reprfuncargs=reprfuncargs, - reprlocals=reprlocals, - reprfileloc=reprfileloc, - style=data["style"], - ) - elif entry_type == "ReprEntryNative": - reprentry = ReprEntryNative(data["lines"]) - else: - _report_unserialization_failure(entry_type, TestReport, reportdict) - return reprentry - - def deserialize_repr_traceback(repr_traceback_dict): - repr_traceback_dict["reprentries"] = [ - deserialize_repr_entry(x) for x in repr_traceback_dict["reprentries"] - ] - return ReprTraceback(**repr_traceback_dict) - - def deserialize_repr_crash(repr_crash_dict: Optional[Dict[str, Any]]): - if repr_crash_dict is not None: - return ReprFileLocation(**repr_crash_dict) - else: - return None - - if ( - reportdict["longrepr"] - and "reprcrash" in reportdict["longrepr"] - and "reprtraceback" in reportdict["longrepr"] - ): - - reprtraceback = deserialize_repr_traceback( - reportdict["longrepr"]["reprtraceback"] - ) - reprcrash = deserialize_repr_crash(reportdict["longrepr"]["reprcrash"]) - if reportdict["longrepr"]["chain"]: - chain = [] - for repr_traceback_data, repr_crash_data, description in reportdict[ - "longrepr" - ]["chain"]: - chain.append( - ( - deserialize_repr_traceback(repr_traceback_data), - deserialize_repr_crash(repr_crash_data), - description, - ) - ) - exception_info: Union[ - ExceptionChainRepr, ReprExceptionInfo - ] = ExceptionChainRepr(chain) - else: - exception_info = ReprExceptionInfo(reprtraceback, reprcrash) - - for section in reportdict["longrepr"]["sections"]: - exception_info.addsection(*section) - reportdict["longrepr"] = exception_info - - return reportdict diff --git a/venv/lib/python3.12/site-packages/_pytest/runner.py b/venv/lib/python3.12/site-packages/_pytest/runner.py deleted file mode 100644 index 584c322..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/runner.py +++ /dev/null @@ -1,542 +0,0 @@ -"""Basic collect and runtest protocol implementations.""" -import bdb -import os -import sys -from typing import Callable -from typing import cast -from typing import Dict -from typing import Generic -from typing import List -from typing import Optional -from typing import Tuple -from typing import Type -from typing import TYPE_CHECKING -from typing import TypeVar -from typing import Union - -import attr - -from .reports import BaseReport -from .reports import CollectErrorRepr -from .reports import CollectReport -from .reports import TestReport -from _pytest import timing -from _pytest._code.code import ExceptionChainRepr -from _pytest._code.code import ExceptionInfo -from _pytest._code.code import TerminalRepr -from _pytest.compat import final -from _pytest.config.argparsing import Parser -from _pytest.deprecated import check_ispytest -from _pytest.nodes import Collector -from _pytest.nodes import Item -from _pytest.nodes import Node -from _pytest.outcomes import Exit -from _pytest.outcomes import OutcomeException -from _pytest.outcomes import Skipped -from _pytest.outcomes import TEST_OUTCOME - -if TYPE_CHECKING: - from typing_extensions import Literal - - from _pytest.main import Session - from _pytest.terminal import TerminalReporter - -# -# pytest plugin hooks. - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("terminal reporting", "Reporting", after="general") - group.addoption( - "--durations", - action="store", - type=int, - default=None, - metavar="N", - help="Show N slowest setup/test durations (N=0 for all)", - ) - group.addoption( - "--durations-min", - action="store", - type=float, - default=0.005, - metavar="N", - help="Minimal duration in seconds for inclusion in slowest list. " - "Default: 0.005.", - ) - - -def pytest_terminal_summary(terminalreporter: "TerminalReporter") -> None: - durations = terminalreporter.config.option.durations - durations_min = terminalreporter.config.option.durations_min - verbose = terminalreporter.config.getvalue("verbose") - if durations is None: - return - tr = terminalreporter - dlist = [] - for replist in tr.stats.values(): - for rep in replist: - if hasattr(rep, "duration"): - dlist.append(rep) - if not dlist: - return - dlist.sort(key=lambda x: x.duration, reverse=True) # type: ignore[no-any-return] - if not durations: - tr.write_sep("=", "slowest durations") - else: - tr.write_sep("=", "slowest %s durations" % durations) - dlist = dlist[:durations] - - for i, rep in enumerate(dlist): - if verbose < 2 and rep.duration < durations_min: - tr.write_line("") - tr.write_line( - "(%s durations < %gs hidden. Use -vv to show these durations.)" - % (len(dlist) - i, durations_min) - ) - break - tr.write_line(f"{rep.duration:02.2f}s {rep.when:<8} {rep.nodeid}") - - -def pytest_sessionstart(session: "Session") -> None: - session._setupstate = SetupState() - - -def pytest_sessionfinish(session: "Session") -> None: - session._setupstate.teardown_exact(None) - - -def pytest_runtest_protocol(item: Item, nextitem: Optional[Item]) -> bool: - ihook = item.ihook - ihook.pytest_runtest_logstart(nodeid=item.nodeid, location=item.location) - runtestprotocol(item, nextitem=nextitem) - ihook.pytest_runtest_logfinish(nodeid=item.nodeid, location=item.location) - return True - - -def runtestprotocol( - item: Item, log: bool = True, nextitem: Optional[Item] = None -) -> List[TestReport]: - hasrequest = hasattr(item, "_request") - if hasrequest and not item._request: # type: ignore[attr-defined] - # This only happens if the item is re-run, as is done by - # pytest-rerunfailures. - item._initrequest() # type: ignore[attr-defined] - rep = call_and_report(item, "setup", log) - reports = [rep] - if rep.passed: - if item.config.getoption("setupshow", False): - show_test_item(item) - if not item.config.getoption("setuponly", False): - reports.append(call_and_report(item, "call", log)) - reports.append(call_and_report(item, "teardown", log, nextitem=nextitem)) - # After all teardown hooks have been called - # want funcargs and request info to go away. - if hasrequest: - item._request = False # type: ignore[attr-defined] - item.funcargs = None # type: ignore[attr-defined] - return reports - - -def show_test_item(item: Item) -> None: - """Show test function, parameters and the fixtures of the test item.""" - tw = item.config.get_terminal_writer() - tw.line() - tw.write(" " * 8) - tw.write(item.nodeid) - used_fixtures = sorted(getattr(item, "fixturenames", [])) - if used_fixtures: - tw.write(" (fixtures used: {})".format(", ".join(used_fixtures))) - tw.flush() - - -def pytest_runtest_setup(item: Item) -> None: - _update_current_test_var(item, "setup") - item.session._setupstate.setup(item) - - -def pytest_runtest_call(item: Item) -> None: - _update_current_test_var(item, "call") - try: - del sys.last_type - del sys.last_value - del sys.last_traceback - except AttributeError: - pass - try: - item.runtest() - except Exception as e: - # Store trace info to allow postmortem debugging - sys.last_type = type(e) - sys.last_value = e - assert e.__traceback__ is not None - # Skip *this* frame - sys.last_traceback = e.__traceback__.tb_next - raise e - - -def pytest_runtest_teardown(item: Item, nextitem: Optional[Item]) -> None: - _update_current_test_var(item, "teardown") - item.session._setupstate.teardown_exact(nextitem) - _update_current_test_var(item, None) - - -def _update_current_test_var( - item: Item, when: Optional["Literal['setup', 'call', 'teardown']"] -) -> None: - """Update :envvar:`PYTEST_CURRENT_TEST` to reflect the current item and stage. - - If ``when`` is None, delete ``PYTEST_CURRENT_TEST`` from the environment. - """ - var_name = "PYTEST_CURRENT_TEST" - if when: - value = f"{item.nodeid} ({when})" - # don't allow null bytes on environment variables (see #2644, #2957) - value = value.replace("\x00", "(null)") - os.environ[var_name] = value - else: - os.environ.pop(var_name) - - -def pytest_report_teststatus(report: BaseReport) -> Optional[Tuple[str, str, str]]: - if report.when in ("setup", "teardown"): - if report.failed: - # category, shortletter, verbose-word - return "error", "E", "ERROR" - elif report.skipped: - return "skipped", "s", "SKIPPED" - else: - return "", "", "" - return None - - -# -# Implementation - - -def call_and_report( - item: Item, when: "Literal['setup', 'call', 'teardown']", log: bool = True, **kwds -) -> TestReport: - call = call_runtest_hook(item, when, **kwds) - hook = item.ihook - report: TestReport = hook.pytest_runtest_makereport(item=item, call=call) - if log: - hook.pytest_runtest_logreport(report=report) - if check_interactive_exception(call, report): - hook.pytest_exception_interact(node=item, call=call, report=report) - return report - - -def check_interactive_exception(call: "CallInfo[object]", report: BaseReport) -> bool: - """Check whether the call raised an exception that should be reported as - interactive.""" - if call.excinfo is None: - # Didn't raise. - return False - if hasattr(report, "wasxfail"): - # Exception was expected. - return False - if isinstance(call.excinfo.value, (Skipped, bdb.BdbQuit)): - # Special control flow exception. - return False - return True - - -def call_runtest_hook( - item: Item, when: "Literal['setup', 'call', 'teardown']", **kwds -) -> "CallInfo[None]": - if when == "setup": - ihook: Callable[..., None] = item.ihook.pytest_runtest_setup - elif when == "call": - ihook = item.ihook.pytest_runtest_call - elif when == "teardown": - ihook = item.ihook.pytest_runtest_teardown - else: - assert False, f"Unhandled runtest hook case: {when}" - reraise: Tuple[Type[BaseException], ...] = (Exit,) - if not item.config.getoption("usepdb", False): - reraise += (KeyboardInterrupt,) - return CallInfo.from_call( - lambda: ihook(item=item, **kwds), when=when, reraise=reraise - ) - - -TResult = TypeVar("TResult", covariant=True) - - -@final -@attr.s(repr=False, init=False, auto_attribs=True) -class CallInfo(Generic[TResult]): - """Result/Exception info of a function invocation.""" - - _result: Optional[TResult] - #: The captured exception of the call, if it raised. - excinfo: Optional[ExceptionInfo[BaseException]] - #: The system time when the call started, in seconds since the epoch. - start: float - #: The system time when the call ended, in seconds since the epoch. - stop: float - #: The call duration, in seconds. - duration: float - #: The context of invocation: "collect", "setup", "call" or "teardown". - when: "Literal['collect', 'setup', 'call', 'teardown']" - - def __init__( - self, - result: Optional[TResult], - excinfo: Optional[ExceptionInfo[BaseException]], - start: float, - stop: float, - duration: float, - when: "Literal['collect', 'setup', 'call', 'teardown']", - *, - _ispytest: bool = False, - ) -> None: - check_ispytest(_ispytest) - self._result = result - self.excinfo = excinfo - self.start = start - self.stop = stop - self.duration = duration - self.when = when - - @property - def result(self) -> TResult: - """The return value of the call, if it didn't raise. - - Can only be accessed if excinfo is None. - """ - if self.excinfo is not None: - raise AttributeError(f"{self!r} has no valid result") - # The cast is safe because an exception wasn't raised, hence - # _result has the expected function return type (which may be - # None, that's why a cast and not an assert). - return cast(TResult, self._result) - - @classmethod - def from_call( - cls, - func: "Callable[[], TResult]", - when: "Literal['collect', 'setup', 'call', 'teardown']", - reraise: Optional[ - Union[Type[BaseException], Tuple[Type[BaseException], ...]] - ] = None, - ) -> "CallInfo[TResult]": - """Call func, wrapping the result in a CallInfo. - - :param func: - The function to call. Called without arguments. - :param when: - The phase in which the function is called. - :param reraise: - Exception or exceptions that shall propagate if raised by the - function, instead of being wrapped in the CallInfo. - """ - excinfo = None - start = timing.time() - precise_start = timing.perf_counter() - try: - result: Optional[TResult] = func() - except BaseException: - excinfo = ExceptionInfo.from_current() - if reraise is not None and isinstance(excinfo.value, reraise): - raise - result = None - # use the perf counter - precise_stop = timing.perf_counter() - duration = precise_stop - precise_start - stop = timing.time() - return cls( - start=start, - stop=stop, - duration=duration, - when=when, - result=result, - excinfo=excinfo, - _ispytest=True, - ) - - def __repr__(self) -> str: - if self.excinfo is None: - return f"" - return f"" - - -def pytest_runtest_makereport(item: Item, call: CallInfo[None]) -> TestReport: - return TestReport.from_item_and_call(item, call) - - -def pytest_make_collect_report(collector: Collector) -> CollectReport: - call = CallInfo.from_call(lambda: list(collector.collect()), "collect") - longrepr: Union[None, Tuple[str, int, str], str, TerminalRepr] = None - if not call.excinfo: - outcome: Literal["passed", "skipped", "failed"] = "passed" - else: - skip_exceptions = [Skipped] - unittest = sys.modules.get("unittest") - if unittest is not None: - # Type ignored because unittest is loaded dynamically. - skip_exceptions.append(unittest.SkipTest) # type: ignore - if isinstance(call.excinfo.value, tuple(skip_exceptions)): - outcome = "skipped" - r_ = collector._repr_failure_py(call.excinfo, "line") - assert isinstance(r_, ExceptionChainRepr), repr(r_) - r = r_.reprcrash - assert r - longrepr = (str(r.path), r.lineno, r.message) - else: - outcome = "failed" - errorinfo = collector.repr_failure(call.excinfo) - if not hasattr(errorinfo, "toterminal"): - assert isinstance(errorinfo, str) - errorinfo = CollectErrorRepr(errorinfo) - longrepr = errorinfo - result = call.result if not call.excinfo else None - rep = CollectReport(collector.nodeid, outcome, longrepr, result) - rep.call = call # type: ignore # see collect_one_node - return rep - - -class SetupState: - """Shared state for setting up/tearing down test items or collectors - in a session. - - Suppose we have a collection tree as follows: - - - - - - - - The SetupState maintains a stack. The stack starts out empty: - - [] - - During the setup phase of item1, setup(item1) is called. What it does - is: - - push session to stack, run session.setup() - push mod1 to stack, run mod1.setup() - push item1 to stack, run item1.setup() - - The stack is: - - [session, mod1, item1] - - While the stack is in this shape, it is allowed to add finalizers to - each of session, mod1, item1 using addfinalizer(). - - During the teardown phase of item1, teardown_exact(item2) is called, - where item2 is the next item to item1. What it does is: - - pop item1 from stack, run its teardowns - pop mod1 from stack, run its teardowns - - mod1 was popped because it ended its purpose with item1. The stack is: - - [session] - - During the setup phase of item2, setup(item2) is called. What it does - is: - - push mod2 to stack, run mod2.setup() - push item2 to stack, run item2.setup() - - Stack: - - [session, mod2, item2] - - During the teardown phase of item2, teardown_exact(None) is called, - because item2 is the last item. What it does is: - - pop item2 from stack, run its teardowns - pop mod2 from stack, run its teardowns - pop session from stack, run its teardowns - - Stack: - - [] - - The end! - """ - - def __init__(self) -> None: - # The stack is in the dict insertion order. - self.stack: Dict[ - Node, - Tuple[ - # Node's finalizers. - List[Callable[[], object]], - # Node's exception, if its setup raised. - Optional[Union[OutcomeException, Exception]], - ], - ] = {} - - def setup(self, item: Item) -> None: - """Setup objects along the collector chain to the item.""" - needed_collectors = item.listchain() - - # If a collector fails its setup, fail its entire subtree of items. - # The setup is not retried for each item - the same exception is used. - for col, (finalizers, exc) in self.stack.items(): - assert col in needed_collectors, "previous item was not torn down properly" - if exc: - raise exc - - for col in needed_collectors[len(self.stack) :]: - assert col not in self.stack - # Push onto the stack. - self.stack[col] = ([col.teardown], None) - try: - col.setup() - except TEST_OUTCOME as exc: - self.stack[col] = (self.stack[col][0], exc) - raise exc - - def addfinalizer(self, finalizer: Callable[[], object], node: Node) -> None: - """Attach a finalizer to the given node. - - The node must be currently active in the stack. - """ - assert node and not isinstance(node, tuple) - assert callable(finalizer) - assert node in self.stack, (node, self.stack) - self.stack[node][0].append(finalizer) - - def teardown_exact(self, nextitem: Optional[Item]) -> None: - """Teardown the current stack up until reaching nodes that nextitem - also descends from. - - When nextitem is None (meaning we're at the last item), the entire - stack is torn down. - """ - needed_collectors = nextitem and nextitem.listchain() or [] - exc = None - while self.stack: - if list(self.stack.keys()) == needed_collectors[: len(self.stack)]: - break - node, (finalizers, _) = self.stack.popitem() - while finalizers: - fin = finalizers.pop() - try: - fin() - except TEST_OUTCOME as e: - # XXX Only first exception will be seen by user, - # ideally all should be reported. - if exc is None: - exc = e - if exc: - raise exc - if nextitem is None: - assert not self.stack - - -def collect_one_node(collector: Collector) -> CollectReport: - ihook = collector.ihook - ihook.pytest_collectstart(collector=collector) - rep: CollectReport = ihook.pytest_make_collect_report(collector=collector) - call = rep.__dict__.pop("call", None) - if call and check_interactive_exception(call, rep): - ihook.pytest_exception_interact(node=collector, call=call, report=rep) - return rep diff --git a/venv/lib/python3.12/site-packages/_pytest/scope.py b/venv/lib/python3.12/site-packages/_pytest/scope.py deleted file mode 100644 index 7a746fb..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/scope.py +++ /dev/null @@ -1,91 +0,0 @@ -""" -Scope definition and related utilities. - -Those are defined here, instead of in the 'fixtures' module because -their use is spread across many other pytest modules, and centralizing it in 'fixtures' -would cause circular references. - -Also this makes the module light to import, as it should. -""" -from enum import Enum -from functools import total_ordering -from typing import Optional -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from typing_extensions import Literal - - _ScopeName = Literal["session", "package", "module", "class", "function"] - - -@total_ordering -class Scope(Enum): - """ - Represents one of the possible fixture scopes in pytest. - - Scopes are ordered from lower to higher, that is: - - ->>> higher ->>> - - Function < Class < Module < Package < Session - - <<<- lower <<<- - """ - - # Scopes need to be listed from lower to higher. - Function: "_ScopeName" = "function" - Class: "_ScopeName" = "class" - Module: "_ScopeName" = "module" - Package: "_ScopeName" = "package" - Session: "_ScopeName" = "session" - - def next_lower(self) -> "Scope": - """Return the next lower scope.""" - index = _SCOPE_INDICES[self] - if index == 0: - raise ValueError(f"{self} is the lower-most scope") - return _ALL_SCOPES[index - 1] - - def next_higher(self) -> "Scope": - """Return the next higher scope.""" - index = _SCOPE_INDICES[self] - if index == len(_SCOPE_INDICES) - 1: - raise ValueError(f"{self} is the upper-most scope") - return _ALL_SCOPES[index + 1] - - def __lt__(self, other: "Scope") -> bool: - self_index = _SCOPE_INDICES[self] - other_index = _SCOPE_INDICES[other] - return self_index < other_index - - @classmethod - def from_user( - cls, scope_name: "_ScopeName", descr: str, where: Optional[str] = None - ) -> "Scope": - """ - Given a scope name from the user, return the equivalent Scope enum. Should be used - whenever we want to convert a user provided scope name to its enum object. - - If the scope name is invalid, construct a user friendly message and call pytest.fail. - """ - from _pytest.outcomes import fail - - try: - # Holding this reference is necessary for mypy at the moment. - scope = Scope(scope_name) - except ValueError: - fail( - "{} {}got an unexpected scope value '{}'".format( - descr, f"from {where} " if where else "", scope_name - ), - pytrace=False, - ) - return scope - - -_ALL_SCOPES = list(Scope) -_SCOPE_INDICES = {scope: index for index, scope in enumerate(_ALL_SCOPES)} - - -# Ordered list of scopes which can contain many tests (in practice all except Function). -HIGH_SCOPES = [x for x in Scope if x is not Scope.Function] diff --git a/venv/lib/python3.12/site-packages/_pytest/setuponly.py b/venv/lib/python3.12/site-packages/_pytest/setuponly.py deleted file mode 100644 index 583590d..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/setuponly.py +++ /dev/null @@ -1,97 +0,0 @@ -from typing import Generator -from typing import Optional -from typing import Union - -import pytest -from _pytest._io.saferepr import saferepr -from _pytest.config import Config -from _pytest.config import ExitCode -from _pytest.config.argparsing import Parser -from _pytest.fixtures import FixtureDef -from _pytest.fixtures import SubRequest -from _pytest.scope import Scope - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("debugconfig") - group.addoption( - "--setuponly", - "--setup-only", - action="store_true", - help="Only setup fixtures, do not execute tests", - ) - group.addoption( - "--setupshow", - "--setup-show", - action="store_true", - help="Show setup of fixtures while executing tests", - ) - - -@pytest.hookimpl(hookwrapper=True) -def pytest_fixture_setup( - fixturedef: FixtureDef[object], request: SubRequest -) -> Generator[None, None, None]: - yield - if request.config.option.setupshow: - if hasattr(request, "param"): - # Save the fixture parameter so ._show_fixture_action() can - # display it now and during the teardown (in .finish()). - if fixturedef.ids: - if callable(fixturedef.ids): - param = fixturedef.ids(request.param) - else: - param = fixturedef.ids[request.param_index] - else: - param = request.param - fixturedef.cached_param = param # type: ignore[attr-defined] - _show_fixture_action(fixturedef, "SETUP") - - -def pytest_fixture_post_finalizer(fixturedef: FixtureDef[object]) -> None: - if fixturedef.cached_result is not None: - config = fixturedef._fixturemanager.config - if config.option.setupshow: - _show_fixture_action(fixturedef, "TEARDOWN") - if hasattr(fixturedef, "cached_param"): - del fixturedef.cached_param # type: ignore[attr-defined] - - -def _show_fixture_action(fixturedef: FixtureDef[object], msg: str) -> None: - config = fixturedef._fixturemanager.config - capman = config.pluginmanager.getplugin("capturemanager") - if capman: - capman.suspend_global_capture() - - tw = config.get_terminal_writer() - tw.line() - # Use smaller indentation the higher the scope: Session = 0, Package = 1, etc. - scope_indent = list(reversed(Scope)).index(fixturedef._scope) - tw.write(" " * 2 * scope_indent) - tw.write( - "{step} {scope} {fixture}".format( - step=msg.ljust(8), # align the output to TEARDOWN - scope=fixturedef.scope[0].upper(), - fixture=fixturedef.argname, - ) - ) - - if msg == "SETUP": - deps = sorted(arg for arg in fixturedef.argnames if arg != "request") - if deps: - tw.write(" (fixtures used: {})".format(", ".join(deps))) - - if hasattr(fixturedef, "cached_param"): - tw.write(f"[{saferepr(fixturedef.cached_param, maxsize=42)}]") # type: ignore[attr-defined] - - tw.flush() - - if capman: - capman.resume_global_capture() - - -@pytest.hookimpl(tryfirst=True) -def pytest_cmdline_main(config: Config) -> Optional[Union[int, ExitCode]]: - if config.option.setuponly: - config.option.setupshow = True - return None diff --git a/venv/lib/python3.12/site-packages/_pytest/setupplan.py b/venv/lib/python3.12/site-packages/_pytest/setupplan.py deleted file mode 100644 index 1a4ebdd..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/setupplan.py +++ /dev/null @@ -1,40 +0,0 @@ -from typing import Optional -from typing import Union - -import pytest -from _pytest.config import Config -from _pytest.config import ExitCode -from _pytest.config.argparsing import Parser -from _pytest.fixtures import FixtureDef -from _pytest.fixtures import SubRequest - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("debugconfig") - group.addoption( - "--setupplan", - "--setup-plan", - action="store_true", - help="Show what fixtures and tests would be executed but " - "don't execute anything", - ) - - -@pytest.hookimpl(tryfirst=True) -def pytest_fixture_setup( - fixturedef: FixtureDef[object], request: SubRequest -) -> Optional[object]: - # Will return a dummy fixture if the setuponly option is provided. - if request.config.option.setupplan: - my_cache_key = fixturedef.cache_key(request) - fixturedef.cached_result = (None, my_cache_key, None) - return fixturedef.cached_result - return None - - -@pytest.hookimpl(tryfirst=True) -def pytest_cmdline_main(config: Config) -> Optional[Union[int, ExitCode]]: - if config.option.setupplan: - config.option.setuponly = True - config.option.setupshow = True - return None diff --git a/venv/lib/python3.12/site-packages/_pytest/skipping.py b/venv/lib/python3.12/site-packages/_pytest/skipping.py deleted file mode 100644 index b204423..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/skipping.py +++ /dev/null @@ -1,296 +0,0 @@ -"""Support for skip/xfail functions and markers.""" -import os -import platform -import sys -import traceback -from collections.abc import Mapping -from typing import Generator -from typing import Optional -from typing import Tuple -from typing import Type - -import attr - -from _pytest.config import Config -from _pytest.config import hookimpl -from _pytest.config.argparsing import Parser -from _pytest.mark.structures import Mark -from _pytest.nodes import Item -from _pytest.outcomes import fail -from _pytest.outcomes import skip -from _pytest.outcomes import xfail -from _pytest.reports import BaseReport -from _pytest.runner import CallInfo -from _pytest.stash import StashKey - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("general") - group.addoption( - "--runxfail", - action="store_true", - dest="runxfail", - default=False, - help="Report the results of xfail tests as if they were not marked", - ) - - parser.addini( - "xfail_strict", - "Default for the strict parameter of xfail " - "markers when not given explicitly (default: False)", - default=False, - type="bool", - ) - - -def pytest_configure(config: Config) -> None: - if config.option.runxfail: - # yay a hack - import pytest - - old = pytest.xfail - config.add_cleanup(lambda: setattr(pytest, "xfail", old)) - - def nop(*args, **kwargs): - pass - - nop.Exception = xfail.Exception # type: ignore[attr-defined] - setattr(pytest, "xfail", nop) - - config.addinivalue_line( - "markers", - "skip(reason=None): skip the given test function with an optional reason. " - 'Example: skip(reason="no way of currently testing this") skips the ' - "test.", - ) - config.addinivalue_line( - "markers", - "skipif(condition, ..., *, reason=...): " - "skip the given test function if any of the conditions evaluate to True. " - "Example: skipif(sys.platform == 'win32') skips the test if we are on the win32 platform. " - "See https://docs.pytest.org/en/stable/reference/reference.html#pytest-mark-skipif", - ) - config.addinivalue_line( - "markers", - "xfail(condition, ..., *, reason=..., run=True, raises=None, strict=xfail_strict): " - "mark the test function as an expected failure if any of the conditions " - "evaluate to True. Optionally specify a reason for better reporting " - "and run=False if you don't even want to execute the test function. " - "If only specific exception(s) are expected, you can list them in " - "raises, and if the test fails in other ways, it will be reported as " - "a true failure. See https://docs.pytest.org/en/stable/reference/reference.html#pytest-mark-xfail", - ) - - -def evaluate_condition(item: Item, mark: Mark, condition: object) -> Tuple[bool, str]: - """Evaluate a single skipif/xfail condition. - - If an old-style string condition is given, it is eval()'d, otherwise the - condition is bool()'d. If this fails, an appropriately formatted pytest.fail - is raised. - - Returns (result, reason). The reason is only relevant if the result is True. - """ - # String condition. - if isinstance(condition, str): - globals_ = { - "os": os, - "sys": sys, - "platform": platform, - "config": item.config, - } - for dictionary in reversed( - item.ihook.pytest_markeval_namespace(config=item.config) - ): - if not isinstance(dictionary, Mapping): - raise ValueError( - "pytest_markeval_namespace() needs to return a dict, got {!r}".format( - dictionary - ) - ) - globals_.update(dictionary) - if hasattr(item, "obj"): - globals_.update(item.obj.__globals__) # type: ignore[attr-defined] - try: - filename = f"<{mark.name} condition>" - condition_code = compile(condition, filename, "eval") - result = eval(condition_code, globals_) - except SyntaxError as exc: - msglines = [ - "Error evaluating %r condition" % mark.name, - " " + condition, - " " + " " * (exc.offset or 0) + "^", - "SyntaxError: invalid syntax", - ] - fail("\n".join(msglines), pytrace=False) - except Exception as exc: - msglines = [ - "Error evaluating %r condition" % mark.name, - " " + condition, - *traceback.format_exception_only(type(exc), exc), - ] - fail("\n".join(msglines), pytrace=False) - - # Boolean condition. - else: - try: - result = bool(condition) - except Exception as exc: - msglines = [ - "Error evaluating %r condition as a boolean" % mark.name, - *traceback.format_exception_only(type(exc), exc), - ] - fail("\n".join(msglines), pytrace=False) - - reason = mark.kwargs.get("reason", None) - if reason is None: - if isinstance(condition, str): - reason = "condition: " + condition - else: - # XXX better be checked at collection time - msg = ( - "Error evaluating %r: " % mark.name - + "you need to specify reason=STRING when using booleans as conditions." - ) - fail(msg, pytrace=False) - - return result, reason - - -@attr.s(slots=True, frozen=True, auto_attribs=True) -class Skip: - """The result of evaluate_skip_marks().""" - - reason: str = "unconditional skip" - - -def evaluate_skip_marks(item: Item) -> Optional[Skip]: - """Evaluate skip and skipif marks on item, returning Skip if triggered.""" - for mark in item.iter_markers(name="skipif"): - if "condition" not in mark.kwargs: - conditions = mark.args - else: - conditions = (mark.kwargs["condition"],) - - # Unconditional. - if not conditions: - reason = mark.kwargs.get("reason", "") - return Skip(reason) - - # If any of the conditions are true. - for condition in conditions: - result, reason = evaluate_condition(item, mark, condition) - if result: - return Skip(reason) - - for mark in item.iter_markers(name="skip"): - try: - return Skip(*mark.args, **mark.kwargs) - except TypeError as e: - raise TypeError(str(e) + " - maybe you meant pytest.mark.skipif?") from None - - return None - - -@attr.s(slots=True, frozen=True, auto_attribs=True) -class Xfail: - """The result of evaluate_xfail_marks().""" - - reason: str - run: bool - strict: bool - raises: Optional[Tuple[Type[BaseException], ...]] - - -def evaluate_xfail_marks(item: Item) -> Optional[Xfail]: - """Evaluate xfail marks on item, returning Xfail if triggered.""" - for mark in item.iter_markers(name="xfail"): - run = mark.kwargs.get("run", True) - strict = mark.kwargs.get("strict", item.config.getini("xfail_strict")) - raises = mark.kwargs.get("raises", None) - if "condition" not in mark.kwargs: - conditions = mark.args - else: - conditions = (mark.kwargs["condition"],) - - # Unconditional. - if not conditions: - reason = mark.kwargs.get("reason", "") - return Xfail(reason, run, strict, raises) - - # If any of the conditions are true. - for condition in conditions: - result, reason = evaluate_condition(item, mark, condition) - if result: - return Xfail(reason, run, strict, raises) - - return None - - -# Saves the xfail mark evaluation. Can be refreshed during call if None. -xfailed_key = StashKey[Optional[Xfail]]() - - -@hookimpl(tryfirst=True) -def pytest_runtest_setup(item: Item) -> None: - skipped = evaluate_skip_marks(item) - if skipped: - raise skip.Exception(skipped.reason, _use_item_location=True) - - item.stash[xfailed_key] = xfailed = evaluate_xfail_marks(item) - if xfailed and not item.config.option.runxfail and not xfailed.run: - xfail("[NOTRUN] " + xfailed.reason) - - -@hookimpl(hookwrapper=True) -def pytest_runtest_call(item: Item) -> Generator[None, None, None]: - xfailed = item.stash.get(xfailed_key, None) - if xfailed is None: - item.stash[xfailed_key] = xfailed = evaluate_xfail_marks(item) - - if xfailed and not item.config.option.runxfail and not xfailed.run: - xfail("[NOTRUN] " + xfailed.reason) - - yield - - # The test run may have added an xfail mark dynamically. - xfailed = item.stash.get(xfailed_key, None) - if xfailed is None: - item.stash[xfailed_key] = xfailed = evaluate_xfail_marks(item) - - -@hookimpl(hookwrapper=True) -def pytest_runtest_makereport(item: Item, call: CallInfo[None]): - outcome = yield - rep = outcome.get_result() - xfailed = item.stash.get(xfailed_key, None) - if item.config.option.runxfail: - pass # don't interfere - elif call.excinfo and isinstance(call.excinfo.value, xfail.Exception): - assert call.excinfo.value.msg is not None - rep.wasxfail = "reason: " + call.excinfo.value.msg - rep.outcome = "skipped" - elif not rep.skipped and xfailed: - if call.excinfo: - raises = xfailed.raises - if raises is not None and not isinstance(call.excinfo.value, raises): - rep.outcome = "failed" - else: - rep.outcome = "skipped" - rep.wasxfail = xfailed.reason - elif call.when == "call": - if xfailed.strict: - rep.outcome = "failed" - rep.longrepr = "[XPASS(strict)] " + xfailed.reason - else: - rep.outcome = "passed" - rep.wasxfail = xfailed.reason - - -def pytest_report_teststatus(report: BaseReport) -> Optional[Tuple[str, str, str]]: - if hasattr(report, "wasxfail"): - if report.skipped: - return "xfailed", "x", "XFAIL" - elif report.passed: - return "xpassed", "X", "XPASS" - return None diff --git a/venv/lib/python3.12/site-packages/_pytest/stash.py b/venv/lib/python3.12/site-packages/_pytest/stash.py deleted file mode 100644 index e61d75b..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/stash.py +++ /dev/null @@ -1,112 +0,0 @@ -from typing import Any -from typing import cast -from typing import Dict -from typing import Generic -from typing import TypeVar -from typing import Union - - -__all__ = ["Stash", "StashKey"] - - -T = TypeVar("T") -D = TypeVar("D") - - -class StashKey(Generic[T]): - """``StashKey`` is an object used as a key to a :class:`Stash`. - - A ``StashKey`` is associated with the type ``T`` of the value of the key. - - A ``StashKey`` is unique and cannot conflict with another key. - """ - - __slots__ = () - - -class Stash: - r"""``Stash`` is a type-safe heterogeneous mutable mapping that - allows keys and value types to be defined separately from - where it (the ``Stash``) is created. - - Usually you will be given an object which has a ``Stash``, for example - :class:`~pytest.Config` or a :class:`~_pytest.nodes.Node`: - - .. code-block:: python - - stash: Stash = some_object.stash - - If a module or plugin wants to store data in this ``Stash``, it creates - :class:`StashKey`\s for its keys (at the module level): - - .. code-block:: python - - # At the top-level of the module - some_str_key = StashKey[str]() - some_bool_key = StashKey[bool]() - - To store information: - - .. code-block:: python - - # Value type must match the key. - stash[some_str_key] = "value" - stash[some_bool_key] = True - - To retrieve the information: - - .. code-block:: python - - # The static type of some_str is str. - some_str = stash[some_str_key] - # The static type of some_bool is bool. - some_bool = stash[some_bool_key] - """ - - __slots__ = ("_storage",) - - def __init__(self) -> None: - self._storage: Dict[StashKey[Any], object] = {} - - def __setitem__(self, key: StashKey[T], value: T) -> None: - """Set a value for key.""" - self._storage[key] = value - - def __getitem__(self, key: StashKey[T]) -> T: - """Get the value for key. - - Raises ``KeyError`` if the key wasn't set before. - """ - return cast(T, self._storage[key]) - - def get(self, key: StashKey[T], default: D) -> Union[T, D]: - """Get the value for key, or return default if the key wasn't set - before.""" - try: - return self[key] - except KeyError: - return default - - def setdefault(self, key: StashKey[T], default: T) -> T: - """Return the value of key if already set, otherwise set the value - of key to default and return default.""" - try: - return self[key] - except KeyError: - self[key] = default - return default - - def __delitem__(self, key: StashKey[T]) -> None: - """Delete the value for key. - - Raises ``KeyError`` if the key wasn't set before. - """ - del self._storage[key] - - def __contains__(self, key: StashKey[T]) -> bool: - """Return whether key was set.""" - return key in self._storage - - def __len__(self) -> int: - """Return how many items exist in the stash.""" - return len(self._storage) diff --git a/venv/lib/python3.12/site-packages/_pytest/stepwise.py b/venv/lib/python3.12/site-packages/_pytest/stepwise.py deleted file mode 100644 index 74ad9db..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/stepwise.py +++ /dev/null @@ -1,130 +0,0 @@ -from typing import List -from typing import Optional -from typing import TYPE_CHECKING - -import pytest -from _pytest import nodes -from _pytest.config import Config -from _pytest.config.argparsing import Parser -from _pytest.main import Session -from _pytest.reports import TestReport - -if TYPE_CHECKING: - from _pytest.cacheprovider import Cache - -STEPWISE_CACHE_DIR = "cache/stepwise" - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("general") - group.addoption( - "--sw", - "--stepwise", - action="store_true", - default=False, - dest="stepwise", - help="Exit on test failure and continue from last failing test next time", - ) - group.addoption( - "--sw-skip", - "--stepwise-skip", - action="store_true", - default=False, - dest="stepwise_skip", - help="Ignore the first failing test but stop on the next failing test. " - "Implicitly enables --stepwise.", - ) - - -@pytest.hookimpl -def pytest_configure(config: Config) -> None: - if config.option.stepwise_skip: - # allow --stepwise-skip to work on it's own merits. - config.option.stepwise = True - if config.getoption("stepwise"): - config.pluginmanager.register(StepwisePlugin(config), "stepwiseplugin") - - -def pytest_sessionfinish(session: Session) -> None: - if not session.config.getoption("stepwise"): - assert session.config.cache is not None - if hasattr(session.config, "workerinput"): - # Do not update cache if this process is a xdist worker to prevent - # race conditions (#10641). - return - # Clear the list of failing tests if the plugin is not active. - session.config.cache.set(STEPWISE_CACHE_DIR, []) - - -class StepwisePlugin: - def __init__(self, config: Config) -> None: - self.config = config - self.session: Optional[Session] = None - self.report_status = "" - assert config.cache is not None - self.cache: Cache = config.cache - self.lastfailed: Optional[str] = self.cache.get(STEPWISE_CACHE_DIR, None) - self.skip: bool = config.getoption("stepwise_skip") - - def pytest_sessionstart(self, session: Session) -> None: - self.session = session - - def pytest_collection_modifyitems( - self, config: Config, items: List[nodes.Item] - ) -> None: - if not self.lastfailed: - self.report_status = "no previously failed tests, not skipping." - return - - # check all item nodes until we find a match on last failed - failed_index = None - for index, item in enumerate(items): - if item.nodeid == self.lastfailed: - failed_index = index - break - - # If the previously failed test was not found among the test items, - # do not skip any tests. - if failed_index is None: - self.report_status = "previously failed test not found, not skipping." - else: - self.report_status = f"skipping {failed_index} already passed items." - deselected = items[:failed_index] - del items[:failed_index] - config.hook.pytest_deselected(items=deselected) - - def pytest_runtest_logreport(self, report: TestReport) -> None: - if report.failed: - if self.skip: - # Remove test from the failed ones (if it exists) and unset the skip option - # to make sure the following tests will not be skipped. - if report.nodeid == self.lastfailed: - self.lastfailed = None - - self.skip = False - else: - # Mark test as the last failing and interrupt the test session. - self.lastfailed = report.nodeid - assert self.session is not None - self.session.shouldstop = ( - "Test failed, continuing from this test next run." - ) - - else: - # If the test was actually run and did pass. - if report.when == "call": - # Remove test from the failed ones, if exists. - if report.nodeid == self.lastfailed: - self.lastfailed = None - - def pytest_report_collectionfinish(self) -> Optional[str]: - if self.config.getoption("verbose") >= 0 and self.report_status: - return f"stepwise: {self.report_status}" - return None - - def pytest_sessionfinish(self) -> None: - if hasattr(self.config, "workerinput"): - # Do not update cache if this process is a xdist worker to prevent - # race conditions (#10641). - return - self.cache.set(STEPWISE_CACHE_DIR, self.lastfailed) diff --git a/venv/lib/python3.12/site-packages/_pytest/terminal.py b/venv/lib/python3.12/site-packages/_pytest/terminal.py deleted file mode 100644 index d967a3e..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/terminal.py +++ /dev/null @@ -1,1432 +0,0 @@ -"""Terminal reporting of the full testing process. - -This is a good source for looking at the various reporting hooks. -""" -import argparse -import datetime -import inspect -import platform -import sys -import warnings -from collections import Counter -from functools import partial -from pathlib import Path -from typing import Any -from typing import Callable -from typing import cast -from typing import ClassVar -from typing import Dict -from typing import Generator -from typing import List -from typing import Mapping -from typing import Optional -from typing import Sequence -from typing import Set -from typing import TextIO -from typing import Tuple -from typing import TYPE_CHECKING -from typing import Union - -import attr -import pluggy - -import _pytest._version -from _pytest import nodes -from _pytest import timing -from _pytest._code import ExceptionInfo -from _pytest._code.code import ExceptionRepr -from _pytest._io import TerminalWriter -from _pytest._io.wcwidth import wcswidth -from _pytest.assertion.util import running_on_ci -from _pytest.compat import final -from _pytest.config import _PluggyPlugin -from _pytest.config import Config -from _pytest.config import ExitCode -from _pytest.config import hookimpl -from _pytest.config.argparsing import Parser -from _pytest.nodes import Item -from _pytest.nodes import Node -from _pytest.pathlib import absolutepath -from _pytest.pathlib import bestrelpath -from _pytest.reports import BaseReport -from _pytest.reports import CollectReport -from _pytest.reports import TestReport - -if TYPE_CHECKING: - from typing_extensions import Literal - - from _pytest.main import Session - - -REPORT_COLLECTING_RESOLUTION = 0.5 - -KNOWN_TYPES = ( - "failed", - "passed", - "skipped", - "deselected", - "xfailed", - "xpassed", - "warnings", - "error", -) - -_REPORTCHARS_DEFAULT = "fE" - - -class MoreQuietAction(argparse.Action): - """A modified copy of the argparse count action which counts down and updates - the legacy quiet attribute at the same time. - - Used to unify verbosity handling. - """ - - def __init__( - self, - option_strings: Sequence[str], - dest: str, - default: object = None, - required: bool = False, - help: Optional[str] = None, - ) -> None: - super().__init__( - option_strings=option_strings, - dest=dest, - nargs=0, - default=default, - required=required, - help=help, - ) - - def __call__( - self, - parser: argparse.ArgumentParser, - namespace: argparse.Namespace, - values: Union[str, Sequence[object], None], - option_string: Optional[str] = None, - ) -> None: - new_count = getattr(namespace, self.dest, 0) - 1 - setattr(namespace, self.dest, new_count) - # todo Deprecate config.quiet - namespace.quiet = getattr(namespace, "quiet", 0) + 1 - - -def pytest_addoption(parser: Parser) -> None: - group = parser.getgroup("terminal reporting", "Reporting", after="general") - group._addoption( - "-v", - "--verbose", - action="count", - default=0, - dest="verbose", - help="Increase verbosity", - ) - group._addoption( - "--no-header", - action="store_true", - default=False, - dest="no_header", - help="Disable header", - ) - group._addoption( - "--no-summary", - action="store_true", - default=False, - dest="no_summary", - help="Disable summary", - ) - group._addoption( - "-q", - "--quiet", - action=MoreQuietAction, - default=0, - dest="verbose", - help="Decrease verbosity", - ) - group._addoption( - "--verbosity", - dest="verbose", - type=int, - default=0, - help="Set verbosity. Default: 0.", - ) - group._addoption( - "-r", - action="store", - dest="reportchars", - default=_REPORTCHARS_DEFAULT, - metavar="chars", - help="Show extra test summary info as specified by chars: (f)ailed, " - "(E)rror, (s)kipped, (x)failed, (X)passed, " - "(p)assed, (P)assed with output, (a)ll except passed (p/P), or (A)ll. " - "(w)arnings are enabled by default (see --disable-warnings), " - "'N' can be used to reset the list. (default: 'fE').", - ) - group._addoption( - "--disable-warnings", - "--disable-pytest-warnings", - default=False, - dest="disable_warnings", - action="store_true", - help="Disable warnings summary", - ) - group._addoption( - "-l", - "--showlocals", - action="store_true", - dest="showlocals", - default=False, - help="Show locals in tracebacks (disabled by default)", - ) - group._addoption( - "--no-showlocals", - action="store_false", - dest="showlocals", - help="Hide locals in tracebacks (negate --showlocals passed through addopts)", - ) - group._addoption( - "--tb", - metavar="style", - action="store", - dest="tbstyle", - default="auto", - choices=["auto", "long", "short", "no", "line", "native"], - help="Traceback print mode (auto/long/short/line/native/no)", - ) - group._addoption( - "--show-capture", - action="store", - dest="showcapture", - choices=["no", "stdout", "stderr", "log", "all"], - default="all", - help="Controls how captured stdout/stderr/log is shown on failed tests. " - "Default: all.", - ) - group._addoption( - "--fulltrace", - "--full-trace", - action="store_true", - default=False, - help="Don't cut any tracebacks (default is to cut)", - ) - group._addoption( - "--color", - metavar="color", - action="store", - dest="color", - default="auto", - choices=["yes", "no", "auto"], - help="Color terminal output (yes/no/auto)", - ) - group._addoption( - "--code-highlight", - default="yes", - choices=["yes", "no"], - help="Whether code should be highlighted (only if --color is also enabled). " - "Default: yes.", - ) - - parser.addini( - "console_output_style", - help='Console output: "classic", or with additional progress information ' - '("progress" (percentage) | "count")', - default="progress", - ) - - -def pytest_configure(config: Config) -> None: - reporter = TerminalReporter(config, sys.stdout) - config.pluginmanager.register(reporter, "terminalreporter") - if config.option.debug or config.option.traceconfig: - - def mywriter(tags, args): - msg = " ".join(map(str, args)) - reporter.write_line("[traceconfig] " + msg) - - config.trace.root.setprocessor("pytest:config", mywriter) - - -def getreportopt(config: Config) -> str: - reportchars: str = config.option.reportchars - - old_aliases = {"F", "S"} - reportopts = "" - for char in reportchars: - if char in old_aliases: - char = char.lower() - if char == "a": - reportopts = "sxXEf" - elif char == "A": - reportopts = "PpsxXEf" - elif char == "N": - reportopts = "" - elif char not in reportopts: - reportopts += char - - if not config.option.disable_warnings and "w" not in reportopts: - reportopts = "w" + reportopts - elif config.option.disable_warnings and "w" in reportopts: - reportopts = reportopts.replace("w", "") - - return reportopts - - -@hookimpl(trylast=True) # after _pytest.runner -def pytest_report_teststatus(report: BaseReport) -> Tuple[str, str, str]: - letter = "F" - if report.passed: - letter = "." - elif report.skipped: - letter = "s" - - outcome: str = report.outcome - if report.when in ("collect", "setup", "teardown") and outcome == "failed": - outcome = "error" - letter = "E" - - return outcome, letter, outcome.upper() - - -@attr.s(auto_attribs=True) -class WarningReport: - """Simple structure to hold warnings information captured by ``pytest_warning_recorded``. - - :ivar str message: - User friendly message about the warning. - :ivar str|None nodeid: - nodeid that generated the warning (see ``get_location``). - :ivar tuple fslocation: - File system location of the source of the warning (see ``get_location``). - """ - - message: str - nodeid: Optional[str] = None - fslocation: Optional[Tuple[str, int]] = None - - count_towards_summary: ClassVar = True - - def get_location(self, config: Config) -> Optional[str]: - """Return the more user-friendly information about the location of a warning, or None.""" - if self.nodeid: - return self.nodeid - if self.fslocation: - filename, linenum = self.fslocation - relpath = bestrelpath(config.invocation_params.dir, absolutepath(filename)) - return f"{relpath}:{linenum}" - return None - - -@final -class TerminalReporter: - def __init__(self, config: Config, file: Optional[TextIO] = None) -> None: - import _pytest.config - - self.config = config - self._numcollected = 0 - self._session: Optional[Session] = None - self._showfspath: Optional[bool] = None - - self.stats: Dict[str, List[Any]] = {} - self._main_color: Optional[str] = None - self._known_types: Optional[List[str]] = None - self.startpath = config.invocation_params.dir - if file is None: - file = sys.stdout - self._tw = _pytest.config.create_terminal_writer(config, file) - self._screen_width = self._tw.fullwidth - self.currentfspath: Union[None, Path, str, int] = None - self.reportchars = getreportopt(config) - self.hasmarkup = self._tw.hasmarkup - self.isatty = file.isatty() - self._progress_nodeids_reported: Set[str] = set() - self._show_progress_info = self._determine_show_progress_info() - self._collect_report_last_write: Optional[float] = None - self._already_displayed_warnings: Optional[int] = None - self._keyboardinterrupt_memo: Optional[ExceptionRepr] = None - - def _determine_show_progress_info(self) -> "Literal['progress', 'count', False]": - """Return whether we should display progress information based on the current config.""" - # do not show progress if we are not capturing output (#3038) - if self.config.getoption("capture", "no") == "no": - return False - # do not show progress if we are showing fixture setup/teardown - if self.config.getoption("setupshow", False): - return False - cfg: str = self.config.getini("console_output_style") - if cfg == "progress": - return "progress" - elif cfg == "count": - return "count" - else: - return False - - @property - def verbosity(self) -> int: - verbosity: int = self.config.option.verbose - return verbosity - - @property - def showheader(self) -> bool: - return self.verbosity >= 0 - - @property - def no_header(self) -> bool: - return bool(self.config.option.no_header) - - @property - def no_summary(self) -> bool: - return bool(self.config.option.no_summary) - - @property - def showfspath(self) -> bool: - if self._showfspath is None: - return self.verbosity >= 0 - return self._showfspath - - @showfspath.setter - def showfspath(self, value: Optional[bool]) -> None: - self._showfspath = value - - @property - def showlongtestinfo(self) -> bool: - return self.verbosity > 0 - - def hasopt(self, char: str) -> bool: - char = {"xfailed": "x", "skipped": "s"}.get(char, char) - return char in self.reportchars - - def write_fspath_result(self, nodeid: str, res, **markup: bool) -> None: - fspath = self.config.rootpath / nodeid.split("::")[0] - if self.currentfspath is None or fspath != self.currentfspath: - if self.currentfspath is not None and self._show_progress_info: - self._write_progress_information_filling_space() - self.currentfspath = fspath - relfspath = bestrelpath(self.startpath, fspath) - self._tw.line() - self._tw.write(relfspath + " ") - self._tw.write(res, flush=True, **markup) - - def write_ensure_prefix(self, prefix: str, extra: str = "", **kwargs) -> None: - if self.currentfspath != prefix: - self._tw.line() - self.currentfspath = prefix - self._tw.write(prefix) - if extra: - self._tw.write(extra, **kwargs) - self.currentfspath = -2 - - def ensure_newline(self) -> None: - if self.currentfspath: - self._tw.line() - self.currentfspath = None - - def write(self, content: str, *, flush: bool = False, **markup: bool) -> None: - self._tw.write(content, flush=flush, **markup) - - def flush(self) -> None: - self._tw.flush() - - def write_line(self, line: Union[str, bytes], **markup: bool) -> None: - if not isinstance(line, str): - line = str(line, errors="replace") - self.ensure_newline() - self._tw.line(line, **markup) - - def rewrite(self, line: str, **markup: bool) -> None: - """Rewinds the terminal cursor to the beginning and writes the given line. - - :param erase: - If True, will also add spaces until the full terminal width to ensure - previous lines are properly erased. - - The rest of the keyword arguments are markup instructions. - """ - erase = markup.pop("erase", False) - if erase: - fill_count = self._tw.fullwidth - len(line) - 1 - fill = " " * fill_count - else: - fill = "" - line = str(line) - self._tw.write("\r" + line + fill, **markup) - - def write_sep( - self, - sep: str, - title: Optional[str] = None, - fullwidth: Optional[int] = None, - **markup: bool, - ) -> None: - self.ensure_newline() - self._tw.sep(sep, title, fullwidth, **markup) - - def section(self, title: str, sep: str = "=", **kw: bool) -> None: - self._tw.sep(sep, title, **kw) - - def line(self, msg: str, **kw: bool) -> None: - self._tw.line(msg, **kw) - - def _add_stats(self, category: str, items: Sequence[Any]) -> None: - set_main_color = category not in self.stats - self.stats.setdefault(category, []).extend(items) - if set_main_color: - self._set_main_color() - - def pytest_internalerror(self, excrepr: ExceptionRepr) -> bool: - for line in str(excrepr).split("\n"): - self.write_line("INTERNALERROR> " + line) - return True - - def pytest_warning_recorded( - self, - warning_message: warnings.WarningMessage, - nodeid: str, - ) -> None: - from _pytest.warnings import warning_record_to_str - - fslocation = warning_message.filename, warning_message.lineno - message = warning_record_to_str(warning_message) - - warning_report = WarningReport( - fslocation=fslocation, message=message, nodeid=nodeid - ) - self._add_stats("warnings", [warning_report]) - - def pytest_plugin_registered(self, plugin: _PluggyPlugin) -> None: - if self.config.option.traceconfig: - msg = f"PLUGIN registered: {plugin}" - # XXX This event may happen during setup/teardown time - # which unfortunately captures our output here - # which garbles our output if we use self.write_line. - self.write_line(msg) - - def pytest_deselected(self, items: Sequence[Item]) -> None: - self._add_stats("deselected", items) - - def pytest_runtest_logstart( - self, nodeid: str, location: Tuple[str, Optional[int], str] - ) -> None: - # Ensure that the path is printed before the - # 1st test of a module starts running. - if self.showlongtestinfo: - line = self._locationline(nodeid, *location) - self.write_ensure_prefix(line, "") - self.flush() - elif self.showfspath: - self.write_fspath_result(nodeid, "") - self.flush() - - def pytest_runtest_logreport(self, report: TestReport) -> None: - self._tests_ran = True - rep = report - res: Tuple[ - str, str, Union[str, Tuple[str, Mapping[str, bool]]] - ] = self.config.hook.pytest_report_teststatus(report=rep, config=self.config) - category, letter, word = res - if not isinstance(word, tuple): - markup = None - else: - word, markup = word - self._add_stats(category, [rep]) - if not letter and not word: - # Probably passed setup/teardown. - return - running_xdist = hasattr(rep, "node") - if markup is None: - was_xfail = hasattr(report, "wasxfail") - if rep.passed and not was_xfail: - markup = {"green": True} - elif rep.passed and was_xfail: - markup = {"yellow": True} - elif rep.failed: - markup = {"red": True} - elif rep.skipped: - markup = {"yellow": True} - else: - markup = {} - if self.verbosity <= 0: - self._tw.write(letter, **markup) - else: - self._progress_nodeids_reported.add(rep.nodeid) - line = self._locationline(rep.nodeid, *rep.location) - if not running_xdist: - self.write_ensure_prefix(line, word, **markup) - if rep.skipped or hasattr(report, "wasxfail"): - reason = _get_raw_skip_reason(rep) - if self.config.option.verbose < 2: - available_width = ( - (self._tw.fullwidth - self._tw.width_of_current_line) - - len(" [100%]") - - 1 - ) - formatted_reason = _format_trimmed( - " ({})", reason, available_width - ) - else: - formatted_reason = f" ({reason})" - - if reason and formatted_reason is not None: - self._tw.write(formatted_reason) - if self._show_progress_info: - self._write_progress_information_filling_space() - else: - self.ensure_newline() - self._tw.write("[%s]" % rep.node.gateway.id) - if self._show_progress_info: - self._tw.write( - self._get_progress_information_message() + " ", cyan=True - ) - else: - self._tw.write(" ") - self._tw.write(word, **markup) - self._tw.write(" " + line) - self.currentfspath = -2 - self.flush() - - @property - def _is_last_item(self) -> bool: - assert self._session is not None - return len(self._progress_nodeids_reported) == self._session.testscollected - - def pytest_runtest_logfinish(self, nodeid: str) -> None: - assert self._session - if self.verbosity <= 0 and self._show_progress_info: - if self._show_progress_info == "count": - num_tests = self._session.testscollected - progress_length = len(f" [{num_tests}/{num_tests}]") - else: - progress_length = len(" [100%]") - - self._progress_nodeids_reported.add(nodeid) - - if self._is_last_item: - self._write_progress_information_filling_space() - else: - main_color, _ = self._get_main_color() - w = self._width_of_current_line - past_edge = w + progress_length + 1 >= self._screen_width - if past_edge: - msg = self._get_progress_information_message() - self._tw.write(msg + "\n", **{main_color: True}) - - def _get_progress_information_message(self) -> str: - assert self._session - collected = self._session.testscollected - if self._show_progress_info == "count": - if collected: - progress = self._progress_nodeids_reported - counter_format = f"{{:{len(str(collected))}d}}" - format_string = f" [{counter_format}/{{}}]" - return format_string.format(len(progress), collected) - return f" [ {collected} / {collected} ]" - else: - if collected: - return " [{:3d}%]".format( - len(self._progress_nodeids_reported) * 100 // collected - ) - return " [100%]" - - def _write_progress_information_filling_space(self) -> None: - color, _ = self._get_main_color() - msg = self._get_progress_information_message() - w = self._width_of_current_line - fill = self._tw.fullwidth - w - 1 - self.write(msg.rjust(fill), flush=True, **{color: True}) - - @property - def _width_of_current_line(self) -> int: - """Return the width of the current line.""" - return self._tw.width_of_current_line - - def pytest_collection(self) -> None: - if self.isatty: - if self.config.option.verbose >= 0: - self.write("collecting ... ", flush=True, bold=True) - self._collect_report_last_write = timing.time() - elif self.config.option.verbose >= 1: - self.write("collecting ... ", flush=True, bold=True) - - def pytest_collectreport(self, report: CollectReport) -> None: - if report.failed: - self._add_stats("error", [report]) - elif report.skipped: - self._add_stats("skipped", [report]) - items = [x for x in report.result if isinstance(x, Item)] - self._numcollected += len(items) - if self.isatty: - self.report_collect() - - def report_collect(self, final: bool = False) -> None: - if self.config.option.verbose < 0: - return - - if not final: - # Only write "collecting" report every 0.5s. - t = timing.time() - if ( - self._collect_report_last_write is not None - and self._collect_report_last_write > t - REPORT_COLLECTING_RESOLUTION - ): - return - self._collect_report_last_write = t - - errors = len(self.stats.get("error", [])) - skipped = len(self.stats.get("skipped", [])) - deselected = len(self.stats.get("deselected", [])) - selected = self._numcollected - deselected - line = "collected " if final else "collecting " - line += ( - str(self._numcollected) + " item" + ("" if self._numcollected == 1 else "s") - ) - if errors: - line += " / %d error%s" % (errors, "s" if errors != 1 else "") - if deselected: - line += " / %d deselected" % deselected - if skipped: - line += " / %d skipped" % skipped - if self._numcollected > selected: - line += " / %d selected" % selected - if self.isatty: - self.rewrite(line, bold=True, erase=True) - if final: - self.write("\n") - else: - self.write_line(line) - - @hookimpl(trylast=True) - def pytest_sessionstart(self, session: "Session") -> None: - self._session = session - self._sessionstarttime = timing.time() - if not self.showheader: - return - self.write_sep("=", "test session starts", bold=True) - verinfo = platform.python_version() - if not self.no_header: - msg = f"platform {sys.platform} -- Python {verinfo}" - pypy_version_info = getattr(sys, "pypy_version_info", None) - if pypy_version_info: - verinfo = ".".join(map(str, pypy_version_info[:3])) - msg += f"[pypy-{verinfo}-{pypy_version_info[3]}]" - msg += ", pytest-{}, pluggy-{}".format( - _pytest._version.version, pluggy.__version__ - ) - if ( - self.verbosity > 0 - or self.config.option.debug - or getattr(self.config.option, "pastebin", None) - ): - msg += " -- " + str(sys.executable) - self.write_line(msg) - lines = self.config.hook.pytest_report_header( - config=self.config, start_path=self.startpath - ) - self._write_report_lines_from_hooks(lines) - - def _write_report_lines_from_hooks( - self, lines: Sequence[Union[str, Sequence[str]]] - ) -> None: - for line_or_lines in reversed(lines): - if isinstance(line_or_lines, str): - self.write_line(line_or_lines) - else: - for line in line_or_lines: - self.write_line(line) - - def pytest_report_header(self, config: Config) -> List[str]: - line = "rootdir: %s" % config.rootpath - - if config.inipath: - line += ", configfile: " + bestrelpath(config.rootpath, config.inipath) - - if config.args_source == Config.ArgsSource.TESTPATHS: - testpaths: List[str] = config.getini("testpaths") - line += ", testpaths: {}".format(", ".join(testpaths)) - - result = [line] - - plugininfo = config.pluginmanager.list_plugin_distinfo() - if plugininfo: - result.append("plugins: %s" % ", ".join(_plugin_nameversions(plugininfo))) - return result - - def pytest_collection_finish(self, session: "Session") -> None: - self.report_collect(True) - - lines = self.config.hook.pytest_report_collectionfinish( - config=self.config, - start_path=self.startpath, - items=session.items, - ) - self._write_report_lines_from_hooks(lines) - - if self.config.getoption("collectonly"): - if session.items: - if self.config.option.verbose > -1: - self._tw.line("") - self._printcollecteditems(session.items) - - failed = self.stats.get("failed") - if failed: - self._tw.sep("!", "collection failures") - for rep in failed: - rep.toterminal(self._tw) - - def _printcollecteditems(self, items: Sequence[Item]) -> None: - if self.config.option.verbose < 0: - if self.config.option.verbose < -1: - counts = Counter(item.nodeid.split("::", 1)[0] for item in items) - for name, count in sorted(counts.items()): - self._tw.line("%s: %d" % (name, count)) - else: - for item in items: - self._tw.line(item.nodeid) - return - stack: List[Node] = [] - indent = "" - for item in items: - needed_collectors = item.listchain()[1:] # strip root node - while stack: - if stack == needed_collectors[: len(stack)]: - break - stack.pop() - for col in needed_collectors[len(stack) :]: - stack.append(col) - indent = (len(stack) - 1) * " " - self._tw.line(f"{indent}{col}") - if self.config.option.verbose >= 1: - obj = getattr(col, "obj", None) - doc = inspect.getdoc(obj) if obj else None - if doc: - for line in doc.splitlines(): - self._tw.line("{}{}".format(indent + " ", line)) - - @hookimpl(hookwrapper=True) - def pytest_sessionfinish( - self, session: "Session", exitstatus: Union[int, ExitCode] - ): - outcome = yield - outcome.get_result() - self._tw.line("") - summary_exit_codes = ( - ExitCode.OK, - ExitCode.TESTS_FAILED, - ExitCode.INTERRUPTED, - ExitCode.USAGE_ERROR, - ExitCode.NO_TESTS_COLLECTED, - ) - if exitstatus in summary_exit_codes and not self.no_summary: - self.config.hook.pytest_terminal_summary( - terminalreporter=self, exitstatus=exitstatus, config=self.config - ) - if session.shouldfail: - self.write_sep("!", str(session.shouldfail), red=True) - if exitstatus == ExitCode.INTERRUPTED: - self._report_keyboardinterrupt() - self._keyboardinterrupt_memo = None - elif session.shouldstop: - self.write_sep("!", str(session.shouldstop), red=True) - self.summary_stats() - - @hookimpl(hookwrapper=True) - def pytest_terminal_summary(self) -> Generator[None, None, None]: - self.summary_errors() - self.summary_failures() - self.summary_warnings() - self.summary_passes() - yield - self.short_test_summary() - # Display any extra warnings from teardown here (if any). - self.summary_warnings() - - def pytest_keyboard_interrupt(self, excinfo: ExceptionInfo[BaseException]) -> None: - self._keyboardinterrupt_memo = excinfo.getrepr(funcargs=True) - - def pytest_unconfigure(self) -> None: - if self._keyboardinterrupt_memo is not None: - self._report_keyboardinterrupt() - - def _report_keyboardinterrupt(self) -> None: - excrepr = self._keyboardinterrupt_memo - assert excrepr is not None - assert excrepr.reprcrash is not None - msg = excrepr.reprcrash.message - self.write_sep("!", msg) - if "KeyboardInterrupt" in msg: - if self.config.option.fulltrace: - excrepr.toterminal(self._tw) - else: - excrepr.reprcrash.toterminal(self._tw) - self._tw.line( - "(to show a full traceback on KeyboardInterrupt use --full-trace)", - yellow=True, - ) - - def _locationline( - self, nodeid: str, fspath: str, lineno: Optional[int], domain: str - ) -> str: - def mkrel(nodeid: str) -> str: - line = self.config.cwd_relative_nodeid(nodeid) - if domain and line.endswith(domain): - line = line[: -len(domain)] - values = domain.split("[") - values[0] = values[0].replace(".", "::") # don't replace '.' in params - line += "[".join(values) - return line - - # collect_fspath comes from testid which has a "/"-normalized path. - if fspath: - res = mkrel(nodeid) - if self.verbosity >= 2 and nodeid.split("::")[0] != fspath.replace( - "\\", nodes.SEP - ): - res += " <- " + bestrelpath(self.startpath, Path(fspath)) - else: - res = "[location]" - return res + " " - - def _getfailureheadline(self, rep): - head_line = rep.head_line - if head_line: - return head_line - return "test session" # XXX? - - def _getcrashline(self, rep): - try: - return str(rep.longrepr.reprcrash) - except AttributeError: - try: - return str(rep.longrepr)[:50] - except AttributeError: - return "" - - # - # Summaries for sessionfinish. - # - def getreports(self, name: str): - return [x for x in self.stats.get(name, ()) if not hasattr(x, "_pdbshown")] - - def summary_warnings(self) -> None: - if self.hasopt("w"): - all_warnings: Optional[List[WarningReport]] = self.stats.get("warnings") - if not all_warnings: - return - - final = self._already_displayed_warnings is not None - if final: - warning_reports = all_warnings[self._already_displayed_warnings :] - else: - warning_reports = all_warnings - self._already_displayed_warnings = len(warning_reports) - if not warning_reports: - return - - reports_grouped_by_message: Dict[str, List[WarningReport]] = {} - for wr in warning_reports: - reports_grouped_by_message.setdefault(wr.message, []).append(wr) - - def collapsed_location_report(reports: List[WarningReport]) -> str: - locations = [] - for w in reports: - location = w.get_location(self.config) - if location: - locations.append(location) - - if len(locations) < 10: - return "\n".join(map(str, locations)) - - counts_by_filename = Counter( - str(loc).split("::", 1)[0] for loc in locations - ) - return "\n".join( - "{}: {} warning{}".format(k, v, "s" if v > 1 else "") - for k, v in counts_by_filename.items() - ) - - title = "warnings summary (final)" if final else "warnings summary" - self.write_sep("=", title, yellow=True, bold=False) - for message, message_reports in reports_grouped_by_message.items(): - maybe_location = collapsed_location_report(message_reports) - if maybe_location: - self._tw.line(maybe_location) - lines = message.splitlines() - indented = "\n".join(" " + x for x in lines) - message = indented.rstrip() - else: - message = message.rstrip() - self._tw.line(message) - self._tw.line() - self._tw.line( - "-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html" - ) - - def summary_passes(self) -> None: - if self.config.option.tbstyle != "no": - if self.hasopt("P"): - reports: List[TestReport] = self.getreports("passed") - if not reports: - return - self.write_sep("=", "PASSES") - for rep in reports: - if rep.sections: - msg = self._getfailureheadline(rep) - self.write_sep("_", msg, green=True, bold=True) - self._outrep_summary(rep) - self._handle_teardown_sections(rep.nodeid) - - def _get_teardown_reports(self, nodeid: str) -> List[TestReport]: - reports = self.getreports("") - return [ - report - for report in reports - if report.when == "teardown" and report.nodeid == nodeid - ] - - def _handle_teardown_sections(self, nodeid: str) -> None: - for report in self._get_teardown_reports(nodeid): - self.print_teardown_sections(report) - - def print_teardown_sections(self, rep: TestReport) -> None: - showcapture = self.config.option.showcapture - if showcapture == "no": - return - for secname, content in rep.sections: - if showcapture != "all" and showcapture not in secname: - continue - if "teardown" in secname: - self._tw.sep("-", secname) - if content[-1:] == "\n": - content = content[:-1] - self._tw.line(content) - - def summary_failures(self) -> None: - if self.config.option.tbstyle != "no": - reports: List[BaseReport] = self.getreports("failed") - if not reports: - return - self.write_sep("=", "FAILURES") - if self.config.option.tbstyle == "line": - for rep in reports: - line = self._getcrashline(rep) - self.write_line(line) - else: - for rep in reports: - msg = self._getfailureheadline(rep) - self.write_sep("_", msg, red=True, bold=True) - self._outrep_summary(rep) - self._handle_teardown_sections(rep.nodeid) - - def summary_errors(self) -> None: - if self.config.option.tbstyle != "no": - reports: List[BaseReport] = self.getreports("error") - if not reports: - return - self.write_sep("=", "ERRORS") - for rep in self.stats["error"]: - msg = self._getfailureheadline(rep) - if rep.when == "collect": - msg = "ERROR collecting " + msg - else: - msg = f"ERROR at {rep.when} of {msg}" - self.write_sep("_", msg, red=True, bold=True) - self._outrep_summary(rep) - - def _outrep_summary(self, rep: BaseReport) -> None: - rep.toterminal(self._tw) - showcapture = self.config.option.showcapture - if showcapture == "no": - return - for secname, content in rep.sections: - if showcapture != "all" and showcapture not in secname: - continue - self._tw.sep("-", secname) - if content[-1:] == "\n": - content = content[:-1] - self._tw.line(content) - - def summary_stats(self) -> None: - if self.verbosity < -1: - return - - session_duration = timing.time() - self._sessionstarttime - (parts, main_color) = self.build_summary_stats_line() - line_parts = [] - - display_sep = self.verbosity >= 0 - if display_sep: - fullwidth = self._tw.fullwidth - for text, markup in parts: - with_markup = self._tw.markup(text, **markup) - if display_sep: - fullwidth += len(with_markup) - len(text) - line_parts.append(with_markup) - msg = ", ".join(line_parts) - - main_markup = {main_color: True} - duration = f" in {format_session_duration(session_duration)}" - duration_with_markup = self._tw.markup(duration, **main_markup) - if display_sep: - fullwidth += len(duration_with_markup) - len(duration) - msg += duration_with_markup - - if display_sep: - markup_for_end_sep = self._tw.markup("", **main_markup) - if markup_for_end_sep.endswith("\x1b[0m"): - markup_for_end_sep = markup_for_end_sep[:-4] - fullwidth += len(markup_for_end_sep) - msg += markup_for_end_sep - - if display_sep: - self.write_sep("=", msg, fullwidth=fullwidth, **main_markup) - else: - self.write_line(msg, **main_markup) - - def short_test_summary(self) -> None: - if not self.reportchars: - return - - def show_simple(lines: List[str], *, stat: str) -> None: - failed = self.stats.get(stat, []) - if not failed: - return - config = self.config - for rep in failed: - color = _color_for_type.get(stat, _color_for_type_default) - line = _get_line_with_reprcrash_message( - config, rep, self._tw, {color: True} - ) - lines.append(line) - - def show_xfailed(lines: List[str]) -> None: - xfailed = self.stats.get("xfailed", []) - for rep in xfailed: - verbose_word = rep._get_verbose_word(self.config) - markup_word = self._tw.markup( - verbose_word, **{_color_for_type["warnings"]: True} - ) - nodeid = _get_node_id_with_markup(self._tw, self.config, rep) - line = f"{markup_word} {nodeid}" - reason = rep.wasxfail - if reason: - line += " - " + str(reason) - - lines.append(line) - - def show_xpassed(lines: List[str]) -> None: - xpassed = self.stats.get("xpassed", []) - for rep in xpassed: - verbose_word = rep._get_verbose_word(self.config) - markup_word = self._tw.markup( - verbose_word, **{_color_for_type["warnings"]: True} - ) - nodeid = _get_node_id_with_markup(self._tw, self.config, rep) - reason = rep.wasxfail - lines.append(f"{markup_word} {nodeid} {reason}") - - def show_skipped(lines: List[str]) -> None: - skipped: List[CollectReport] = self.stats.get("skipped", []) - fskips = _folded_skips(self.startpath, skipped) if skipped else [] - if not fskips: - return - verbose_word = skipped[0]._get_verbose_word(self.config) - markup_word = self._tw.markup( - verbose_word, **{_color_for_type["warnings"]: True} - ) - prefix = "Skipped: " - for num, fspath, lineno, reason in fskips: - if reason.startswith(prefix): - reason = reason[len(prefix) :] - if lineno is not None: - lines.append( - "%s [%d] %s:%d: %s" % (markup_word, num, fspath, lineno, reason) - ) - else: - lines.append("%s [%d] %s: %s" % (markup_word, num, fspath, reason)) - - REPORTCHAR_ACTIONS: Mapping[str, Callable[[List[str]], None]] = { - "x": show_xfailed, - "X": show_xpassed, - "f": partial(show_simple, stat="failed"), - "s": show_skipped, - "p": partial(show_simple, stat="passed"), - "E": partial(show_simple, stat="error"), - } - - lines: List[str] = [] - for char in self.reportchars: - action = REPORTCHAR_ACTIONS.get(char) - if action: # skipping e.g. "P" (passed with output) here. - action(lines) - - if lines: - self.write_sep("=", "short test summary info", cyan=True, bold=True) - for line in lines: - self.write_line(line) - - def _get_main_color(self) -> Tuple[str, List[str]]: - if self._main_color is None or self._known_types is None or self._is_last_item: - self._set_main_color() - assert self._main_color - assert self._known_types - return self._main_color, self._known_types - - def _determine_main_color(self, unknown_type_seen: bool) -> str: - stats = self.stats - if "failed" in stats or "error" in stats: - main_color = "red" - elif "warnings" in stats or "xpassed" in stats or unknown_type_seen: - main_color = "yellow" - elif "passed" in stats or not self._is_last_item: - main_color = "green" - else: - main_color = "yellow" - return main_color - - def _set_main_color(self) -> None: - unknown_types: List[str] = [] - for found_type in self.stats.keys(): - if found_type: # setup/teardown reports have an empty key, ignore them - if found_type not in KNOWN_TYPES and found_type not in unknown_types: - unknown_types.append(found_type) - self._known_types = list(KNOWN_TYPES) + unknown_types - self._main_color = self._determine_main_color(bool(unknown_types)) - - def build_summary_stats_line(self) -> Tuple[List[Tuple[str, Dict[str, bool]]], str]: - """ - Build the parts used in the last summary stats line. - - The summary stats line is the line shown at the end, "=== 12 passed, 2 errors in Xs===". - - This function builds a list of the "parts" that make up for the text in that line, in - the example above it would be: - - [ - ("12 passed", {"green": True}), - ("2 errors", {"red": True} - ] - - That last dict for each line is a "markup dictionary", used by TerminalWriter to - color output. - - The final color of the line is also determined by this function, and is the second - element of the returned tuple. - """ - if self.config.getoption("collectonly"): - return self._build_collect_only_summary_stats_line() - else: - return self._build_normal_summary_stats_line() - - def _get_reports_to_display(self, key: str) -> List[Any]: - """Get test/collection reports for the given status key, such as `passed` or `error`.""" - reports = self.stats.get(key, []) - return [x for x in reports if getattr(x, "count_towards_summary", True)] - - def _build_normal_summary_stats_line( - self, - ) -> Tuple[List[Tuple[str, Dict[str, bool]]], str]: - main_color, known_types = self._get_main_color() - parts = [] - - for key in known_types: - reports = self._get_reports_to_display(key) - if reports: - count = len(reports) - color = _color_for_type.get(key, _color_for_type_default) - markup = {color: True, "bold": color == main_color} - parts.append(("%d %s" % pluralize(count, key), markup)) - - if not parts: - parts = [("no tests ran", {_color_for_type_default: True})] - - return parts, main_color - - def _build_collect_only_summary_stats_line( - self, - ) -> Tuple[List[Tuple[str, Dict[str, bool]]], str]: - deselected = len(self._get_reports_to_display("deselected")) - errors = len(self._get_reports_to_display("error")) - - if self._numcollected == 0: - parts = [("no tests collected", {"yellow": True})] - main_color = "yellow" - - elif deselected == 0: - main_color = "green" - collected_output = "%d %s collected" % pluralize(self._numcollected, "test") - parts = [(collected_output, {main_color: True})] - else: - all_tests_were_deselected = self._numcollected == deselected - if all_tests_were_deselected: - main_color = "yellow" - collected_output = f"no tests collected ({deselected} deselected)" - else: - main_color = "green" - selected = self._numcollected - deselected - collected_output = f"{selected}/{self._numcollected} tests collected ({deselected} deselected)" - - parts = [(collected_output, {main_color: True})] - - if errors: - main_color = _color_for_type["error"] - parts += [("%d %s" % pluralize(errors, "error"), {main_color: True})] - - return parts, main_color - - -def _get_node_id_with_markup(tw: TerminalWriter, config: Config, rep: BaseReport): - nodeid = config.cwd_relative_nodeid(rep.nodeid) - path, *parts = nodeid.split("::") - if parts: - parts_markup = tw.markup("::".join(parts), bold=True) - return path + "::" + parts_markup - else: - return path - - -def _format_trimmed(format: str, msg: str, available_width: int) -> Optional[str]: - """Format msg into format, ellipsizing it if doesn't fit in available_width. - - Returns None if even the ellipsis can't fit. - """ - # Only use the first line. - i = msg.find("\n") - if i != -1: - msg = msg[:i] - - ellipsis = "..." - format_width = wcswidth(format.format("")) - if format_width + len(ellipsis) > available_width: - return None - - if format_width + wcswidth(msg) > available_width: - available_width -= len(ellipsis) - msg = msg[:available_width] - while format_width + wcswidth(msg) > available_width: - msg = msg[:-1] - msg += ellipsis - - return format.format(msg) - - -def _get_line_with_reprcrash_message( - config: Config, rep: BaseReport, tw: TerminalWriter, word_markup: Dict[str, bool] -) -> str: - """Get summary line for a report, trying to add reprcrash message.""" - verbose_word = rep._get_verbose_word(config) - word = tw.markup(verbose_word, **word_markup) - node = _get_node_id_with_markup(tw, config, rep) - - line = f"{word} {node}" - line_width = wcswidth(line) - - try: - # Type ignored intentionally -- possible AttributeError expected. - msg = rep.longrepr.reprcrash.message # type: ignore[union-attr] - except AttributeError: - pass - else: - if not running_on_ci(): - available_width = tw.fullwidth - line_width - msg = _format_trimmed(" - {}", msg, available_width) - else: - msg = f" - {msg}" - if msg is not None: - line += msg - - return line - - -def _folded_skips( - startpath: Path, - skipped: Sequence[CollectReport], -) -> List[Tuple[int, str, Optional[int], str]]: - d: Dict[Tuple[str, Optional[int], str], List[CollectReport]] = {} - for event in skipped: - assert event.longrepr is not None - assert isinstance(event.longrepr, tuple), (event, event.longrepr) - assert len(event.longrepr) == 3, (event, event.longrepr) - fspath, lineno, reason = event.longrepr - # For consistency, report all fspaths in relative form. - fspath = bestrelpath(startpath, Path(fspath)) - keywords = getattr(event, "keywords", {}) - # Folding reports with global pytestmark variable. - # This is a workaround, because for now we cannot identify the scope of a skip marker - # TODO: Revisit after marks scope would be fixed. - if ( - event.when == "setup" - and "skip" in keywords - and "pytestmark" not in keywords - ): - key: Tuple[str, Optional[int], str] = (fspath, None, reason) - else: - key = (fspath, lineno, reason) - d.setdefault(key, []).append(event) - values: List[Tuple[int, str, Optional[int], str]] = [] - for key, events in d.items(): - values.append((len(events), *key)) - return values - - -_color_for_type = { - "failed": "red", - "error": "red", - "warnings": "yellow", - "passed": "green", -} -_color_for_type_default = "yellow" - - -def pluralize(count: int, noun: str) -> Tuple[int, str]: - # No need to pluralize words such as `failed` or `passed`. - if noun not in ["error", "warnings", "test"]: - return count, noun - - # The `warnings` key is plural. To avoid API breakage, we keep it that way but - # set it to singular here so we can determine plurality in the same way as we do - # for `error`. - noun = noun.replace("warnings", "warning") - - return count, noun + "s" if count != 1 else noun - - -def _plugin_nameversions(plugininfo) -> List[str]: - values: List[str] = [] - for plugin, dist in plugininfo: - # Gets us name and version! - name = "{dist.project_name}-{dist.version}".format(dist=dist) - # Questionable convenience, but it keeps things short. - if name.startswith("pytest-"): - name = name[7:] - # We decided to print python package names they can have more than one plugin. - if name not in values: - values.append(name) - return values - - -def format_session_duration(seconds: float) -> str: - """Format the given seconds in a human readable manner to show in the final summary.""" - if seconds < 60: - return f"{seconds:.2f}s" - else: - dt = datetime.timedelta(seconds=int(seconds)) - return f"{seconds:.2f}s ({dt})" - - -def _get_raw_skip_reason(report: TestReport) -> str: - """Get the reason string of a skip/xfail/xpass test report. - - The string is just the part given by the user. - """ - if hasattr(report, "wasxfail"): - reason = cast(str, report.wasxfail) - if reason.startswith("reason: "): - reason = reason[len("reason: ") :] - return reason - else: - assert report.skipped - assert isinstance(report.longrepr, tuple) - _, _, reason = report.longrepr - if reason.startswith("Skipped: "): - reason = reason[len("Skipped: ") :] - elif reason == "Skipped": - reason = "" - return reason diff --git a/venv/lib/python3.12/site-packages/_pytest/threadexception.py b/venv/lib/python3.12/site-packages/_pytest/threadexception.py deleted file mode 100644 index 43341e7..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/threadexception.py +++ /dev/null @@ -1,88 +0,0 @@ -import threading -import traceback -import warnings -from types import TracebackType -from typing import Any -from typing import Callable -from typing import Generator -from typing import Optional -from typing import Type - -import pytest - - -# Copied from cpython/Lib/test/support/threading_helper.py, with modifications. -class catch_threading_exception: - """Context manager catching threading.Thread exception using - threading.excepthook. - - Storing exc_value using a custom hook can create a reference cycle. The - reference cycle is broken explicitly when the context manager exits. - - Storing thread using a custom hook can resurrect it if it is set to an - object which is being finalized. Exiting the context manager clears the - stored object. - - Usage: - with threading_helper.catch_threading_exception() as cm: - # code spawning a thread which raises an exception - ... - # check the thread exception: use cm.args - ... - # cm.args attribute no longer exists at this point - # (to break a reference cycle) - """ - - def __init__(self) -> None: - self.args: Optional["threading.ExceptHookArgs"] = None - self._old_hook: Optional[Callable[["threading.ExceptHookArgs"], Any]] = None - - def _hook(self, args: "threading.ExceptHookArgs") -> None: - self.args = args - - def __enter__(self) -> "catch_threading_exception": - self._old_hook = threading.excepthook - threading.excepthook = self._hook - return self - - def __exit__( - self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional[TracebackType], - ) -> None: - assert self._old_hook is not None - threading.excepthook = self._old_hook - self._old_hook = None - del self.args - - -def thread_exception_runtest_hook() -> Generator[None, None, None]: - with catch_threading_exception() as cm: - yield - if cm.args: - thread_name = "" if cm.args.thread is None else cm.args.thread.name - msg = f"Exception in thread {thread_name}\n\n" - msg += "".join( - traceback.format_exception( - cm.args.exc_type, - cm.args.exc_value, - cm.args.exc_traceback, - ) - ) - warnings.warn(pytest.PytestUnhandledThreadExceptionWarning(msg)) - - -@pytest.hookimpl(hookwrapper=True, trylast=True) -def pytest_runtest_setup() -> Generator[None, None, None]: - yield from thread_exception_runtest_hook() - - -@pytest.hookimpl(hookwrapper=True, tryfirst=True) -def pytest_runtest_call() -> Generator[None, None, None]: - yield from thread_exception_runtest_hook() - - -@pytest.hookimpl(hookwrapper=True, tryfirst=True) -def pytest_runtest_teardown() -> Generator[None, None, None]: - yield from thread_exception_runtest_hook() diff --git a/venv/lib/python3.12/site-packages/_pytest/timing.py b/venv/lib/python3.12/site-packages/_pytest/timing.py deleted file mode 100644 index 925163a..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/timing.py +++ /dev/null @@ -1,12 +0,0 @@ -"""Indirection for time functions. - -We intentionally grab some "time" functions internally to avoid tests mocking "time" to affect -pytest runtime information (issue #185). - -Fixture "mock_timing" also interacts with this module for pytest's own tests. -""" -from time import perf_counter -from time import sleep -from time import time - -__all__ = ["perf_counter", "sleep", "time"] diff --git a/venv/lib/python3.12/site-packages/_pytest/tmpdir.py b/venv/lib/python3.12/site-packages/_pytest/tmpdir.py deleted file mode 100644 index 9497a0d..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/tmpdir.py +++ /dev/null @@ -1,216 +0,0 @@ -"""Support for providing temporary directories to test functions.""" -import os -import re -import sys -import tempfile -from pathlib import Path -from typing import Optional - -import attr - -from .pathlib import LOCK_TIMEOUT -from .pathlib import make_numbered_dir -from .pathlib import make_numbered_dir_with_cleanup -from .pathlib import rm_rf -from _pytest.compat import final -from _pytest.config import Config -from _pytest.deprecated import check_ispytest -from _pytest.fixtures import fixture -from _pytest.fixtures import FixtureRequest -from _pytest.monkeypatch import MonkeyPatch - - -@final -@attr.s(init=False) -class TempPathFactory: - """Factory for temporary directories under the common base temp directory. - - The base directory can be configured using the ``--basetemp`` option. - """ - - _given_basetemp = attr.ib(type=Optional[Path]) - _trace = attr.ib() - _basetemp = attr.ib(type=Optional[Path]) - - def __init__( - self, - given_basetemp: Optional[Path], - trace, - basetemp: Optional[Path] = None, - *, - _ispytest: bool = False, - ) -> None: - check_ispytest(_ispytest) - if given_basetemp is None: - self._given_basetemp = None - else: - # Use os.path.abspath() to get absolute path instead of resolve() as it - # does not work the same in all platforms (see #4427). - # Path.absolute() exists, but it is not public (see https://bugs.python.org/issue25012). - self._given_basetemp = Path(os.path.abspath(str(given_basetemp))) - self._trace = trace - self._basetemp = basetemp - - @classmethod - def from_config( - cls, - config: Config, - *, - _ispytest: bool = False, - ) -> "TempPathFactory": - """Create a factory according to pytest configuration. - - :meta private: - """ - check_ispytest(_ispytest) - return cls( - given_basetemp=config.option.basetemp, - trace=config.trace.get("tmpdir"), - _ispytest=True, - ) - - def _ensure_relative_to_basetemp(self, basename: str) -> str: - basename = os.path.normpath(basename) - if (self.getbasetemp() / basename).resolve().parent != self.getbasetemp(): - raise ValueError(f"{basename} is not a normalized and relative path") - return basename - - def mktemp(self, basename: str, numbered: bool = True) -> Path: - """Create a new temporary directory managed by the factory. - - :param basename: - Directory base name, must be a relative path. - - :param numbered: - If ``True``, ensure the directory is unique by adding a numbered - suffix greater than any existing one: ``basename="foo-"`` and ``numbered=True`` - means that this function will create directories named ``"foo-0"``, - ``"foo-1"``, ``"foo-2"`` and so on. - - :returns: - The path to the new directory. - """ - basename = self._ensure_relative_to_basetemp(basename) - if not numbered: - p = self.getbasetemp().joinpath(basename) - p.mkdir(mode=0o700) - else: - p = make_numbered_dir(root=self.getbasetemp(), prefix=basename, mode=0o700) - self._trace("mktemp", p) - return p - - def getbasetemp(self) -> Path: - """Return the base temporary directory, creating it if needed. - - :returns: - The base temporary directory. - """ - if self._basetemp is not None: - return self._basetemp - - if self._given_basetemp is not None: - basetemp = self._given_basetemp - if basetemp.exists(): - rm_rf(basetemp) - basetemp.mkdir(mode=0o700) - basetemp = basetemp.resolve() - else: - from_env = os.environ.get("PYTEST_DEBUG_TEMPROOT") - temproot = Path(from_env or tempfile.gettempdir()).resolve() - user = get_user() or "unknown" - # use a sub-directory in the temproot to speed-up - # make_numbered_dir() call - rootdir = temproot.joinpath(f"pytest-of-{user}") - try: - rootdir.mkdir(mode=0o700, exist_ok=True) - except OSError: - # getuser() likely returned illegal characters for the platform, use unknown back off mechanism - rootdir = temproot.joinpath("pytest-of-unknown") - rootdir.mkdir(mode=0o700, exist_ok=True) - # Because we use exist_ok=True with a predictable name, make sure - # we are the owners, to prevent any funny business (on unix, where - # temproot is usually shared). - # Also, to keep things private, fixup any world-readable temp - # rootdir's permissions. Historically 0o755 was used, so we can't - # just error out on this, at least for a while. - if sys.platform != "win32": - uid = os.getuid() - rootdir_stat = rootdir.stat() - # getuid shouldn't fail, but cpython defines such a case. - # Let's hope for the best. - if uid != -1: - if rootdir_stat.st_uid != uid: - raise OSError( - f"The temporary directory {rootdir} is not owned by the current user. " - "Fix this and try again." - ) - if (rootdir_stat.st_mode & 0o077) != 0: - os.chmod(rootdir, rootdir_stat.st_mode & ~0o077) - basetemp = make_numbered_dir_with_cleanup( - prefix="pytest-", - root=rootdir, - keep=3, - lock_timeout=LOCK_TIMEOUT, - mode=0o700, - ) - assert basetemp is not None, basetemp - self._basetemp = basetemp - self._trace("new basetemp", basetemp) - return basetemp - - -def get_user() -> Optional[str]: - """Return the current user name, or None if getuser() does not work - in the current environment (see #1010).""" - try: - # In some exotic environments, getpass may not be importable. - import getpass - - return getpass.getuser() - except (ImportError, KeyError): - return None - - -def pytest_configure(config: Config) -> None: - """Create a TempPathFactory and attach it to the config object. - - This is to comply with existing plugins which expect the handler to be - available at pytest_configure time, but ideally should be moved entirely - to the tmp_path_factory session fixture. - """ - mp = MonkeyPatch() - config.add_cleanup(mp.undo) - _tmp_path_factory = TempPathFactory.from_config(config, _ispytest=True) - mp.setattr(config, "_tmp_path_factory", _tmp_path_factory, raising=False) - - -@fixture(scope="session") -def tmp_path_factory(request: FixtureRequest) -> TempPathFactory: - """Return a :class:`pytest.TempPathFactory` instance for the test session.""" - # Set dynamically by pytest_configure() above. - return request.config._tmp_path_factory # type: ignore - - -def _mk_tmp(request: FixtureRequest, factory: TempPathFactory) -> Path: - name = request.node.name - name = re.sub(r"[\W]", "_", name) - MAXVAL = 30 - name = name[:MAXVAL] - return factory.mktemp(name, numbered=True) - - -@fixture -def tmp_path(request: FixtureRequest, tmp_path_factory: TempPathFactory) -> Path: - """Return a temporary directory path object which is unique to each test - function invocation, created as a sub directory of the base temporary - directory. - - By default, a new base temporary directory is created each test session, - and old bases are removed after 3 sessions, to aid in debugging. If - ``--basetemp`` is used then it is cleared each session. See :ref:`base - temporary directory`. - - The returned object is a :class:`pathlib.Path` object. - """ - - return _mk_tmp(request, tmp_path_factory) diff --git a/venv/lib/python3.12/site-packages/_pytest/unittest.py b/venv/lib/python3.12/site-packages/_pytest/unittest.py deleted file mode 100644 index c2df986..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/unittest.py +++ /dev/null @@ -1,417 +0,0 @@ -"""Discover and run std-library "unittest" style tests.""" -import sys -import traceback -import types -from typing import Any -from typing import Callable -from typing import Generator -from typing import Iterable -from typing import List -from typing import Optional -from typing import Tuple -from typing import Type -from typing import TYPE_CHECKING -from typing import Union - -import _pytest._code -import pytest -from _pytest.compat import getimfunc -from _pytest.compat import is_async_function -from _pytest.config import hookimpl -from _pytest.fixtures import FixtureRequest -from _pytest.nodes import Collector -from _pytest.nodes import Item -from _pytest.outcomes import exit -from _pytest.outcomes import fail -from _pytest.outcomes import skip -from _pytest.outcomes import xfail -from _pytest.python import Class -from _pytest.python import Function -from _pytest.python import Module -from _pytest.runner import CallInfo -from _pytest.scope import Scope - -if TYPE_CHECKING: - import unittest - import twisted.trial.unittest - - _SysExcInfoType = Union[ - Tuple[Type[BaseException], BaseException, types.TracebackType], - Tuple[None, None, None], - ] - - -def pytest_pycollect_makeitem( - collector: Union[Module, Class], name: str, obj: object -) -> Optional["UnitTestCase"]: - # Has unittest been imported and is obj a subclass of its TestCase? - try: - ut = sys.modules["unittest"] - # Type ignored because `ut` is an opaque module. - if not issubclass(obj, ut.TestCase): # type: ignore - return None - except Exception: - return None - # Yes, so let's collect it. - item: UnitTestCase = UnitTestCase.from_parent(collector, name=name, obj=obj) - return item - - -class UnitTestCase(Class): - # Marker for fixturemanger.getfixtureinfo() - # to declare that our children do not support funcargs. - nofuncargs = True - - def collect(self) -> Iterable[Union[Item, Collector]]: - from unittest import TestLoader - - cls = self.obj - if not getattr(cls, "__test__", True): - return - - skipped = _is_skipped(cls) - if not skipped: - self._inject_setup_teardown_fixtures(cls) - self._inject_setup_class_fixture() - - self.session._fixturemanager.parsefactories(self, unittest=True) - loader = TestLoader() - foundsomething = False - for name in loader.getTestCaseNames(self.obj): - x = getattr(self.obj, name) - if not getattr(x, "__test__", True): - continue - funcobj = getimfunc(x) - yield TestCaseFunction.from_parent(self, name=name, callobj=funcobj) - foundsomething = True - - if not foundsomething: - runtest = getattr(self.obj, "runTest", None) - if runtest is not None: - ut = sys.modules.get("twisted.trial.unittest", None) - # Type ignored because `ut` is an opaque module. - if ut is None or runtest != ut.TestCase.runTest: # type: ignore - yield TestCaseFunction.from_parent(self, name="runTest") - - def _inject_setup_teardown_fixtures(self, cls: type) -> None: - """Injects a hidden auto-use fixture to invoke setUpClass/setup_method and corresponding - teardown functions (#517).""" - class_fixture = _make_xunit_fixture( - cls, - "setUpClass", - "tearDownClass", - "doClassCleanups", - scope=Scope.Class, - pass_self=False, - ) - if class_fixture: - cls.__pytest_class_setup = class_fixture # type: ignore[attr-defined] - - method_fixture = _make_xunit_fixture( - cls, - "setup_method", - "teardown_method", - None, - scope=Scope.Function, - pass_self=True, - ) - if method_fixture: - cls.__pytest_method_setup = method_fixture # type: ignore[attr-defined] - - -def _make_xunit_fixture( - obj: type, - setup_name: str, - teardown_name: str, - cleanup_name: Optional[str], - scope: Scope, - pass_self: bool, -): - setup = getattr(obj, setup_name, None) - teardown = getattr(obj, teardown_name, None) - if setup is None and teardown is None: - return None - - if cleanup_name: - cleanup = getattr(obj, cleanup_name, lambda *args: None) - else: - - def cleanup(*args): - pass - - @pytest.fixture( - scope=scope.value, - autouse=True, - # Use a unique name to speed up lookup. - name=f"_unittest_{setup_name}_fixture_{obj.__qualname__}", - ) - def fixture(self, request: FixtureRequest) -> Generator[None, None, None]: - if _is_skipped(self): - reason = self.__unittest_skip_why__ - raise pytest.skip.Exception(reason, _use_item_location=True) - if setup is not None: - try: - if pass_self: - setup(self, request.function) - else: - setup() - # unittest does not call the cleanup function for every BaseException, so we - # follow this here. - except Exception: - if pass_self: - cleanup(self) - else: - cleanup() - - raise - yield - try: - if teardown is not None: - if pass_self: - teardown(self, request.function) - else: - teardown() - finally: - if pass_self: - cleanup(self) - else: - cleanup() - - return fixture - - -class TestCaseFunction(Function): - nofuncargs = True - _excinfo: Optional[List[_pytest._code.ExceptionInfo[BaseException]]] = None - _testcase: Optional["unittest.TestCase"] = None - - def _getobj(self): - assert self.parent is not None - # Unlike a regular Function in a Class, where `item.obj` returns - # a *bound* method (attached to an instance), TestCaseFunction's - # `obj` returns an *unbound* method (not attached to an instance). - # This inconsistency is probably not desirable, but needs some - # consideration before changing. - return getattr(self.parent.obj, self.originalname) # type: ignore[attr-defined] - - def setup(self) -> None: - # A bound method to be called during teardown() if set (see 'runtest()'). - self._explicit_tearDown: Optional[Callable[[], None]] = None - assert self.parent is not None - self._testcase = self.parent.obj(self.name) # type: ignore[attr-defined] - self._obj = getattr(self._testcase, self.name) - if hasattr(self, "_request"): - self._request._fillfixtures() - - def teardown(self) -> None: - if self._explicit_tearDown is not None: - self._explicit_tearDown() - self._explicit_tearDown = None - self._testcase = None - self._obj = None - - def startTest(self, testcase: "unittest.TestCase") -> None: - pass - - def _addexcinfo(self, rawexcinfo: "_SysExcInfoType") -> None: - # Unwrap potential exception info (see twisted trial support below). - rawexcinfo = getattr(rawexcinfo, "_rawexcinfo", rawexcinfo) - try: - excinfo = _pytest._code.ExceptionInfo[BaseException].from_exc_info(rawexcinfo) # type: ignore[arg-type] - # Invoke the attributes to trigger storing the traceback - # trial causes some issue there. - excinfo.value - excinfo.traceback - except TypeError: - try: - try: - values = traceback.format_exception(*rawexcinfo) - values.insert( - 0, - "NOTE: Incompatible Exception Representation, " - "displaying natively:\n\n", - ) - fail("".join(values), pytrace=False) - except (fail.Exception, KeyboardInterrupt): - raise - except BaseException: - fail( - "ERROR: Unknown Incompatible Exception " - "representation:\n%r" % (rawexcinfo,), - pytrace=False, - ) - except KeyboardInterrupt: - raise - except fail.Exception: - excinfo = _pytest._code.ExceptionInfo.from_current() - self.__dict__.setdefault("_excinfo", []).append(excinfo) - - def addError( - self, testcase: "unittest.TestCase", rawexcinfo: "_SysExcInfoType" - ) -> None: - try: - if isinstance(rawexcinfo[1], exit.Exception): - exit(rawexcinfo[1].msg) - except TypeError: - pass - self._addexcinfo(rawexcinfo) - - def addFailure( - self, testcase: "unittest.TestCase", rawexcinfo: "_SysExcInfoType" - ) -> None: - self._addexcinfo(rawexcinfo) - - def addSkip(self, testcase: "unittest.TestCase", reason: str) -> None: - try: - raise pytest.skip.Exception(reason, _use_item_location=True) - except skip.Exception: - self._addexcinfo(sys.exc_info()) - - def addExpectedFailure( - self, - testcase: "unittest.TestCase", - rawexcinfo: "_SysExcInfoType", - reason: str = "", - ) -> None: - try: - xfail(str(reason)) - except xfail.Exception: - self._addexcinfo(sys.exc_info()) - - def addUnexpectedSuccess( - self, - testcase: "unittest.TestCase", - reason: Optional["twisted.trial.unittest.Todo"] = None, - ) -> None: - msg = "Unexpected success" - if reason: - msg += f": {reason.reason}" - # Preserve unittest behaviour - fail the test. Explicitly not an XPASS. - try: - fail(msg, pytrace=False) - except fail.Exception: - self._addexcinfo(sys.exc_info()) - - def addSuccess(self, testcase: "unittest.TestCase") -> None: - pass - - def stopTest(self, testcase: "unittest.TestCase") -> None: - pass - - def runtest(self) -> None: - from _pytest.debugging import maybe_wrap_pytest_function_for_tracing - - assert self._testcase is not None - - maybe_wrap_pytest_function_for_tracing(self) - - # Let the unittest framework handle async functions. - if is_async_function(self.obj): - # Type ignored because self acts as the TestResult, but is not actually one. - self._testcase(result=self) # type: ignore[arg-type] - else: - # When --pdb is given, we want to postpone calling tearDown() otherwise - # when entering the pdb prompt, tearDown() would have probably cleaned up - # instance variables, which makes it difficult to debug. - # Arguably we could always postpone tearDown(), but this changes the moment where the - # TestCase instance interacts with the results object, so better to only do it - # when absolutely needed. - # We need to consider if the test itself is skipped, or the whole class. - assert isinstance(self.parent, UnitTestCase) - skipped = _is_skipped(self.obj) or _is_skipped(self.parent.obj) - if self.config.getoption("usepdb") and not skipped: - self._explicit_tearDown = self._testcase.tearDown - setattr(self._testcase, "tearDown", lambda *args: None) - - # We need to update the actual bound method with self.obj, because - # wrap_pytest_function_for_tracing replaces self.obj by a wrapper. - setattr(self._testcase, self.name, self.obj) - try: - self._testcase(result=self) # type: ignore[arg-type] - finally: - delattr(self._testcase, self.name) - - def _prunetraceback( - self, excinfo: _pytest._code.ExceptionInfo[BaseException] - ) -> None: - super()._prunetraceback(excinfo) - traceback = excinfo.traceback.filter( - lambda x: not x.frame.f_globals.get("__unittest") - ) - if traceback: - excinfo.traceback = traceback - - -@hookimpl(tryfirst=True) -def pytest_runtest_makereport(item: Item, call: CallInfo[None]) -> None: - if isinstance(item, TestCaseFunction): - if item._excinfo: - call.excinfo = item._excinfo.pop(0) - try: - del call.result - except AttributeError: - pass - - # Convert unittest.SkipTest to pytest.skip. - # This is actually only needed for nose, which reuses unittest.SkipTest for - # its own nose.SkipTest. For unittest TestCases, SkipTest is already - # handled internally, and doesn't reach here. - unittest = sys.modules.get("unittest") - if ( - unittest - and call.excinfo - and isinstance(call.excinfo.value, unittest.SkipTest) # type: ignore[attr-defined] - ): - excinfo = call.excinfo - call2 = CallInfo[None].from_call( - lambda: pytest.skip(str(excinfo.value)), call.when - ) - call.excinfo = call2.excinfo - - -# Twisted trial support. - - -@hookimpl(hookwrapper=True) -def pytest_runtest_protocol(item: Item) -> Generator[None, None, None]: - if isinstance(item, TestCaseFunction) and "twisted.trial.unittest" in sys.modules: - ut: Any = sys.modules["twisted.python.failure"] - Failure__init__ = ut.Failure.__init__ - check_testcase_implements_trial_reporter() - - def excstore( - self, exc_value=None, exc_type=None, exc_tb=None, captureVars=None - ): - if exc_value is None: - self._rawexcinfo = sys.exc_info() - else: - if exc_type is None: - exc_type = type(exc_value) - self._rawexcinfo = (exc_type, exc_value, exc_tb) - try: - Failure__init__( - self, exc_value, exc_type, exc_tb, captureVars=captureVars - ) - except TypeError: - Failure__init__(self, exc_value, exc_type, exc_tb) - - ut.Failure.__init__ = excstore - yield - ut.Failure.__init__ = Failure__init__ - else: - yield - - -def check_testcase_implements_trial_reporter(done: List[int] = []) -> None: - if done: - return - from zope.interface import classImplements - from twisted.trial.itrial import IReporter - - classImplements(TestCaseFunction, IReporter) - done.append(1) - - -def _is_skipped(obj) -> bool: - """Return True if the given object has been marked with @unittest.skip.""" - return bool(getattr(obj, "__unittest_skip__", False)) diff --git a/venv/lib/python3.12/site-packages/_pytest/unraisableexception.py b/venv/lib/python3.12/site-packages/_pytest/unraisableexception.py deleted file mode 100644 index fcb5d82..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/unraisableexception.py +++ /dev/null @@ -1,93 +0,0 @@ -import sys -import traceback -import warnings -from types import TracebackType -from typing import Any -from typing import Callable -from typing import Generator -from typing import Optional -from typing import Type - -import pytest - - -# Copied from cpython/Lib/test/support/__init__.py, with modifications. -class catch_unraisable_exception: - """Context manager catching unraisable exception using sys.unraisablehook. - - Storing the exception value (cm.unraisable.exc_value) creates a reference - cycle. The reference cycle is broken explicitly when the context manager - exits. - - Storing the object (cm.unraisable.object) can resurrect it if it is set to - an object which is being finalized. Exiting the context manager clears the - stored object. - - Usage: - with catch_unraisable_exception() as cm: - # code creating an "unraisable exception" - ... - # check the unraisable exception: use cm.unraisable - ... - # cm.unraisable attribute no longer exists at this point - # (to break a reference cycle) - """ - - def __init__(self) -> None: - self.unraisable: Optional["sys.UnraisableHookArgs"] = None - self._old_hook: Optional[Callable[["sys.UnraisableHookArgs"], Any]] = None - - def _hook(self, unraisable: "sys.UnraisableHookArgs") -> None: - # Storing unraisable.object can resurrect an object which is being - # finalized. Storing unraisable.exc_value creates a reference cycle. - self.unraisable = unraisable - - def __enter__(self) -> "catch_unraisable_exception": - self._old_hook = sys.unraisablehook - sys.unraisablehook = self._hook - return self - - def __exit__( - self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional[TracebackType], - ) -> None: - assert self._old_hook is not None - sys.unraisablehook = self._old_hook - self._old_hook = None - del self.unraisable - - -def unraisable_exception_runtest_hook() -> Generator[None, None, None]: - with catch_unraisable_exception() as cm: - yield - if cm.unraisable: - if cm.unraisable.err_msg is not None: - err_msg = cm.unraisable.err_msg - else: - err_msg = "Exception ignored in" - msg = f"{err_msg}: {cm.unraisable.object!r}\n\n" - msg += "".join( - traceback.format_exception( - cm.unraisable.exc_type, - cm.unraisable.exc_value, - cm.unraisable.exc_traceback, - ) - ) - warnings.warn(pytest.PytestUnraisableExceptionWarning(msg)) - - -@pytest.hookimpl(hookwrapper=True, tryfirst=True) -def pytest_runtest_setup() -> Generator[None, None, None]: - yield from unraisable_exception_runtest_hook() - - -@pytest.hookimpl(hookwrapper=True, tryfirst=True) -def pytest_runtest_call() -> Generator[None, None, None]: - yield from unraisable_exception_runtest_hook() - - -@pytest.hookimpl(hookwrapper=True, tryfirst=True) -def pytest_runtest_teardown() -> Generator[None, None, None]: - yield from unraisable_exception_runtest_hook() diff --git a/venv/lib/python3.12/site-packages/_pytest/warning_types.py b/venv/lib/python3.12/site-packages/_pytest/warning_types.py deleted file mode 100644 index 620860c..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/warning_types.py +++ /dev/null @@ -1,171 +0,0 @@ -import inspect -import warnings -from types import FunctionType -from typing import Any -from typing import Generic -from typing import Type -from typing import TypeVar - -import attr - -from _pytest.compat import final - - -class PytestWarning(UserWarning): - """Base class for all warnings emitted by pytest.""" - - __module__ = "pytest" - - -@final -class PytestAssertRewriteWarning(PytestWarning): - """Warning emitted by the pytest assert rewrite module.""" - - __module__ = "pytest" - - -@final -class PytestCacheWarning(PytestWarning): - """Warning emitted by the cache plugin in various situations.""" - - __module__ = "pytest" - - -@final -class PytestConfigWarning(PytestWarning): - """Warning emitted for configuration issues.""" - - __module__ = "pytest" - - -@final -class PytestCollectionWarning(PytestWarning): - """Warning emitted when pytest is not able to collect a file or symbol in a module.""" - - __module__ = "pytest" - - -class PytestDeprecationWarning(PytestWarning, DeprecationWarning): - """Warning class for features that will be removed in a future version.""" - - __module__ = "pytest" - - -class PytestRemovedIn8Warning(PytestDeprecationWarning): - """Warning class for features that will be removed in pytest 8.""" - - __module__ = "pytest" - - -class PytestReturnNotNoneWarning(PytestRemovedIn8Warning): - """Warning emitted when a test function is returning value other than None.""" - - __module__ = "pytest" - - -@final -class PytestExperimentalApiWarning(PytestWarning, FutureWarning): - """Warning category used to denote experiments in pytest. - - Use sparingly as the API might change or even be removed completely in a - future version. - """ - - __module__ = "pytest" - - @classmethod - def simple(cls, apiname: str) -> "PytestExperimentalApiWarning": - return cls( - "{apiname} is an experimental api that may change over time".format( - apiname=apiname - ) - ) - - -@final -class PytestUnhandledCoroutineWarning(PytestReturnNotNoneWarning): - """Warning emitted for an unhandled coroutine. - - A coroutine was encountered when collecting test functions, but was not - handled by any async-aware plugin. - Coroutine test functions are not natively supported. - """ - - __module__ = "pytest" - - -@final -class PytestUnknownMarkWarning(PytestWarning): - """Warning emitted on use of unknown markers. - - See :ref:`mark` for details. - """ - - __module__ = "pytest" - - -@final -class PytestUnraisableExceptionWarning(PytestWarning): - """An unraisable exception was reported. - - Unraisable exceptions are exceptions raised in :meth:`__del__ ` - implementations and similar situations when the exception cannot be raised - as normal. - """ - - __module__ = "pytest" - - -@final -class PytestUnhandledThreadExceptionWarning(PytestWarning): - """An unhandled exception occurred in a :class:`~threading.Thread`. - - Such exceptions don't propagate normally. - """ - - __module__ = "pytest" - - -_W = TypeVar("_W", bound=PytestWarning) - - -@final -@attr.s(auto_attribs=True) -class UnformattedWarning(Generic[_W]): - """A warning meant to be formatted during runtime. - - This is used to hold warnings that need to format their message at runtime, - as opposed to a direct message. - """ - - category: Type["_W"] - template: str - - def format(self, **kwargs: Any) -> _W: - """Return an instance of the warning category, formatted with given kwargs.""" - return self.category(self.template.format(**kwargs)) - - -def warn_explicit_for(method: FunctionType, message: PytestWarning) -> None: - """ - Issue the warning :param:`message` for the definition of the given :param:`method` - - this helps to log warnigns for functions defined prior to finding an issue with them - (like hook wrappers being marked in a legacy mechanism) - """ - lineno = method.__code__.co_firstlineno - filename = inspect.getfile(method) - module = method.__module__ - mod_globals = method.__globals__ - try: - warnings.warn_explicit( - message, - type(message), - filename=filename, - module=module, - registry=mod_globals.setdefault("__warningregistry__", {}), - lineno=lineno, - ) - except Warning as w: - # If warnings are errors (e.g. -Werror), location information gets lost, so we add it to the message. - raise type(w)(f"{w}\n at {filename}:{lineno}") from None diff --git a/venv/lib/python3.12/site-packages/_pytest/warnings.py b/venv/lib/python3.12/site-packages/_pytest/warnings.py deleted file mode 100644 index 4aaa944..0000000 --- a/venv/lib/python3.12/site-packages/_pytest/warnings.py +++ /dev/null @@ -1,148 +0,0 @@ -import sys -import warnings -from contextlib import contextmanager -from typing import Generator -from typing import Optional -from typing import TYPE_CHECKING - -import pytest -from _pytest.config import apply_warning_filters -from _pytest.config import Config -from _pytest.config import parse_warning_filter -from _pytest.main import Session -from _pytest.nodes import Item -from _pytest.terminal import TerminalReporter - -if TYPE_CHECKING: - from typing_extensions import Literal - - -def pytest_configure(config: Config) -> None: - config.addinivalue_line( - "markers", - "filterwarnings(warning): add a warning filter to the given test. " - "see https://docs.pytest.org/en/stable/how-to/capture-warnings.html#pytest-mark-filterwarnings ", - ) - - -@contextmanager -def catch_warnings_for_item( - config: Config, - ihook, - when: "Literal['config', 'collect', 'runtest']", - item: Optional[Item], -) -> Generator[None, None, None]: - """Context manager that catches warnings generated in the contained execution block. - - ``item`` can be None if we are not in the context of an item execution. - - Each warning captured triggers the ``pytest_warning_recorded`` hook. - """ - config_filters = config.getini("filterwarnings") - cmdline_filters = config.known_args_namespace.pythonwarnings or [] - with warnings.catch_warnings(record=True) as log: - # mypy can't infer that record=True means log is not None; help it. - assert log is not None - - if not sys.warnoptions: - # If user is not explicitly configuring warning filters, show deprecation warnings by default (#2908). - warnings.filterwarnings("always", category=DeprecationWarning) - warnings.filterwarnings("always", category=PendingDeprecationWarning) - - apply_warning_filters(config_filters, cmdline_filters) - - # apply filters from "filterwarnings" marks - nodeid = "" if item is None else item.nodeid - if item is not None: - for mark in item.iter_markers(name="filterwarnings"): - for arg in mark.args: - warnings.filterwarnings(*parse_warning_filter(arg, escape=False)) - - yield - - for warning_message in log: - ihook.pytest_warning_recorded.call_historic( - kwargs=dict( - warning_message=warning_message, - nodeid=nodeid, - when=when, - location=None, - ) - ) - - -def warning_record_to_str(warning_message: warnings.WarningMessage) -> str: - """Convert a warnings.WarningMessage to a string.""" - warn_msg = warning_message.message - msg = warnings.formatwarning( - str(warn_msg), - warning_message.category, - warning_message.filename, - warning_message.lineno, - warning_message.line, - ) - if warning_message.source is not None: - try: - import tracemalloc - except ImportError: - pass - else: - tb = tracemalloc.get_object_traceback(warning_message.source) - if tb is not None: - formatted_tb = "\n".join(tb.format()) - # Use a leading new line to better separate the (large) output - # from the traceback to the previous warning text. - msg += f"\nObject allocated at:\n{formatted_tb}" - else: - # No need for a leading new line. - url = "https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings" - msg += "Enable tracemalloc to get traceback where the object was allocated.\n" - msg += f"See {url} for more info." - return msg - - -@pytest.hookimpl(hookwrapper=True, tryfirst=True) -def pytest_runtest_protocol(item: Item) -> Generator[None, None, None]: - with catch_warnings_for_item( - config=item.config, ihook=item.ihook, when="runtest", item=item - ): - yield - - -@pytest.hookimpl(hookwrapper=True, tryfirst=True) -def pytest_collection(session: Session) -> Generator[None, None, None]: - config = session.config - with catch_warnings_for_item( - config=config, ihook=config.hook, when="collect", item=None - ): - yield - - -@pytest.hookimpl(hookwrapper=True) -def pytest_terminal_summary( - terminalreporter: TerminalReporter, -) -> Generator[None, None, None]: - config = terminalreporter.config - with catch_warnings_for_item( - config=config, ihook=config.hook, when="config", item=None - ): - yield - - -@pytest.hookimpl(hookwrapper=True) -def pytest_sessionfinish(session: Session) -> Generator[None, None, None]: - config = session.config - with catch_warnings_for_item( - config=config, ihook=config.hook, when="config", item=None - ): - yield - - -@pytest.hookimpl(hookwrapper=True) -def pytest_load_initial_conftests( - early_config: "Config", -) -> Generator[None, None, None]: - with catch_warnings_for_item( - config=early_config, ihook=early_config.hook, when="config", item=None - ): - yield diff --git a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/LICENSE b/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/LICENSE deleted file mode 100644 index 104eebf..0000000 --- a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2018 Alex Grönholm - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/METADATA b/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/METADATA deleted file mode 100644 index 9d87e1d..0000000 --- a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/METADATA +++ /dev/null @@ -1,105 +0,0 @@ -Metadata-Version: 2.2 -Name: anyio -Version: 4.9.0 -Summary: High level compatibility layer for multiple asynchronous event loop implementations -Author-email: Alex Grönholm -License: MIT -Project-URL: Documentation, https://anyio.readthedocs.io/en/latest/ -Project-URL: Changelog, https://anyio.readthedocs.io/en/stable/versionhistory.html -Project-URL: Source code, https://github.com/agronholm/anyio -Project-URL: Issue tracker, https://github.com/agronholm/anyio/issues -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Framework :: AnyIO -Classifier: Typing :: Typed -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: 3.13 -Requires-Python: >=3.9 -Description-Content-Type: text/x-rst -License-File: LICENSE -Requires-Dist: exceptiongroup>=1.0.2; python_version < "3.11" -Requires-Dist: idna>=2.8 -Requires-Dist: sniffio>=1.1 -Requires-Dist: typing_extensions>=4.5; python_version < "3.13" -Provides-Extra: trio -Requires-Dist: trio>=0.26.1; extra == "trio" -Provides-Extra: test -Requires-Dist: anyio[trio]; extra == "test" -Requires-Dist: blockbuster>=1.5.23; extra == "test" -Requires-Dist: coverage[toml]>=7; extra == "test" -Requires-Dist: exceptiongroup>=1.2.0; extra == "test" -Requires-Dist: hypothesis>=4.0; extra == "test" -Requires-Dist: psutil>=5.9; extra == "test" -Requires-Dist: pytest>=7.0; extra == "test" -Requires-Dist: trustme; extra == "test" -Requires-Dist: truststore>=0.9.1; python_version >= "3.10" and extra == "test" -Requires-Dist: uvloop>=0.21; (platform_python_implementation == "CPython" and platform_system != "Windows" and python_version < "3.14") and extra == "test" -Provides-Extra: doc -Requires-Dist: packaging; extra == "doc" -Requires-Dist: Sphinx~=8.2; extra == "doc" -Requires-Dist: sphinx_rtd_theme; extra == "doc" -Requires-Dist: sphinx-autodoc-typehints>=1.2.0; extra == "doc" - -.. image:: https://github.com/agronholm/anyio/actions/workflows/test.yml/badge.svg - :target: https://github.com/agronholm/anyio/actions/workflows/test.yml - :alt: Build Status -.. image:: https://coveralls.io/repos/github/agronholm/anyio/badge.svg?branch=master - :target: https://coveralls.io/github/agronholm/anyio?branch=master - :alt: Code Coverage -.. image:: https://readthedocs.org/projects/anyio/badge/?version=latest - :target: https://anyio.readthedocs.io/en/latest/?badge=latest - :alt: Documentation -.. image:: https://badges.gitter.im/gitterHQ/gitter.svg - :target: https://gitter.im/python-trio/AnyIO - :alt: Gitter chat - -AnyIO is an asynchronous networking and concurrency library that works on top of either asyncio_ or -trio_. It implements trio-like `structured concurrency`_ (SC) on top of asyncio and works in harmony -with the native SC of trio itself. - -Applications and libraries written against AnyIO's API will run unmodified on either asyncio_ or -trio_. AnyIO can also be adopted into a library or application incrementally – bit by bit, no full -refactoring necessary. It will blend in with the native libraries of your chosen backend. - -Documentation -------------- - -View full documentation at: https://anyio.readthedocs.io/ - -Features --------- - -AnyIO offers the following functionality: - -* Task groups (nurseries_ in trio terminology) -* High-level networking (TCP, UDP and UNIX sockets) - - * `Happy eyeballs`_ algorithm for TCP connections (more robust than that of asyncio on Python - 3.8) - * async/await style UDP sockets (unlike asyncio where you still have to use Transports and - Protocols) - -* A versatile API for byte streams and object streams -* Inter-task synchronization and communication (locks, conditions, events, semaphores, object - streams) -* Worker threads -* Subprocesses -* Asynchronous file I/O (using worker threads) -* Signal handling - -AnyIO also comes with its own pytest_ plugin which also supports asynchronous fixtures. -It even works with the popular Hypothesis_ library. - -.. _asyncio: https://docs.python.org/3/library/asyncio.html -.. _trio: https://github.com/python-trio/trio -.. _structured concurrency: https://en.wikipedia.org/wiki/Structured_concurrency -.. _nurseries: https://trio.readthedocs.io/en/stable/reference-core.html#nurseries-and-spawning -.. _Happy eyeballs: https://en.wikipedia.org/wiki/Happy_Eyeballs -.. _pytest: https://docs.pytest.org/en/latest/ -.. _Hypothesis: https://hypothesis.works/ diff --git a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/RECORD b/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/RECORD deleted file mode 100644 index 40eedc8..0000000 --- a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/RECORD +++ /dev/null @@ -1,88 +0,0 @@ -anyio-4.9.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -anyio-4.9.0.dist-info/LICENSE,sha256=U2GsncWPLvX9LpsJxoKXwX8ElQkJu8gCO9uC6s8iwrA,1081 -anyio-4.9.0.dist-info/METADATA,sha256=vvkWPXXTbrpTCFK7zdcYwQcSQhx6Q4qITM9t_PEQCrY,4682 -anyio-4.9.0.dist-info/RECORD,, -anyio-4.9.0.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91 -anyio-4.9.0.dist-info/entry_points.txt,sha256=_d6Yu6uiaZmNe0CydowirE9Cmg7zUL2g08tQpoS3Qvc,39 -anyio-4.9.0.dist-info/top_level.txt,sha256=QglSMiWX8_5dpoVAEIHdEYzvqFMdSYWmCj6tYw2ITkQ,6 -anyio/__init__.py,sha256=t8bZuNXa5ncwXBaNKbv48BDgZt48RT_zCEtrnPmjNU8,4993 -anyio/__pycache__/__init__.cpython-312.pyc,, -anyio/__pycache__/from_thread.cpython-312.pyc,, -anyio/__pycache__/lowlevel.cpython-312.pyc,, -anyio/__pycache__/pytest_plugin.cpython-312.pyc,, -anyio/__pycache__/to_interpreter.cpython-312.pyc,, -anyio/__pycache__/to_process.cpython-312.pyc,, -anyio/__pycache__/to_thread.cpython-312.pyc,, -anyio/_backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -anyio/_backends/__pycache__/__init__.cpython-312.pyc,, -anyio/_backends/__pycache__/_asyncio.cpython-312.pyc,, -anyio/_backends/__pycache__/_trio.cpython-312.pyc,, -anyio/_backends/_asyncio.py,sha256=AT1oaTfCE-9YFxooMlvld2yDqY5U2A-ANMcBDh9eRfI,93455 -anyio/_backends/_trio.py,sha256=HVfDqRGQ7Xj3JfTcYdgzmC7pZEplqU4NOO5kxNNSZnk,40429 -anyio/_core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -anyio/_core/__pycache__/__init__.cpython-312.pyc,, -anyio/_core/__pycache__/_asyncio_selector_thread.cpython-312.pyc,, -anyio/_core/__pycache__/_eventloop.cpython-312.pyc,, -anyio/_core/__pycache__/_exceptions.cpython-312.pyc,, -anyio/_core/__pycache__/_fileio.cpython-312.pyc,, -anyio/_core/__pycache__/_resources.cpython-312.pyc,, -anyio/_core/__pycache__/_signals.cpython-312.pyc,, -anyio/_core/__pycache__/_sockets.cpython-312.pyc,, -anyio/_core/__pycache__/_streams.cpython-312.pyc,, -anyio/_core/__pycache__/_subprocesses.cpython-312.pyc,, -anyio/_core/__pycache__/_synchronization.cpython-312.pyc,, -anyio/_core/__pycache__/_tasks.cpython-312.pyc,, -anyio/_core/__pycache__/_tempfile.cpython-312.pyc,, -anyio/_core/__pycache__/_testing.cpython-312.pyc,, -anyio/_core/__pycache__/_typedattr.cpython-312.pyc,, -anyio/_core/_asyncio_selector_thread.py,sha256=2PdxFM3cs02Kp6BSppbvmRT7q7asreTW5FgBxEsflBo,5626 -anyio/_core/_eventloop.py,sha256=t_tAwBFPjF8jrZGjlJ6bbYy6KA3bjsbZxV9mvh9t1i0,4695 -anyio/_core/_exceptions.py,sha256=RlPRlwastdmfDPoskdXNO6SI8_l3fclA2wtW6cokU9I,3503 -anyio/_core/_fileio.py,sha256=qFZhkLIz0cGXluvih_vcPUTucgq8UFVgsTCtYbijZIg,23340 -anyio/_core/_resources.py,sha256=NbmU5O5UX3xEyACnkmYX28Fmwdl-f-ny0tHym26e0w0,435 -anyio/_core/_signals.py,sha256=vulT1M1xdLYtAR-eY5TamIgaf1WTlOwOrMGwswlTTr8,905 -anyio/_core/_sockets.py,sha256=5Okc_UThGDEN9KCnsIhqWPRHBNuSy6b4NmG1i51TVF4,27150 -anyio/_core/_streams.py,sha256=OnaKgoDD-FcMSwLvkoAUGP51sG2ZdRvMpxt9q2w1gYA,1804 -anyio/_core/_subprocesses.py,sha256=EXm5igL7dj55iYkPlbYVAqtbqxJxjU-6OndSTIx9SRg,8047 -anyio/_core/_synchronization.py,sha256=DwUh8Tl6cG_UMVC_GyzPoC_U9BpfDfjMl9SINSxcZN4,20320 -anyio/_core/_tasks.py,sha256=f3CuWwo06cCZ6jaOv-JHFKWkgpgf2cvaF25Oh4augMA,4757 -anyio/_core/_tempfile.py,sha256=s-_ucacXbxBH5Bo5eo65lN0lPwZQd5B8yNN_9nARpCM,19696 -anyio/_core/_testing.py,sha256=YUGwA5cgFFbUTv4WFd7cv_BSVr4ryTtPp8owQA3JdWE,2118 -anyio/_core/_typedattr.py,sha256=P4ozZikn3-DbpoYcvyghS_FOYAgbmUxeoU8-L_07pZM,2508 -anyio/abc/__init__.py,sha256=c2OQbTCS_fQowviMXanLPh8m29ccwkXmpDr7uyNZYOo,2652 -anyio/abc/__pycache__/__init__.cpython-312.pyc,, -anyio/abc/__pycache__/_eventloop.cpython-312.pyc,, -anyio/abc/__pycache__/_resources.cpython-312.pyc,, -anyio/abc/__pycache__/_sockets.cpython-312.pyc,, -anyio/abc/__pycache__/_streams.cpython-312.pyc,, -anyio/abc/__pycache__/_subprocesses.cpython-312.pyc,, -anyio/abc/__pycache__/_tasks.cpython-312.pyc,, -anyio/abc/__pycache__/_testing.cpython-312.pyc,, -anyio/abc/_eventloop.py,sha256=UmL8DZCvQTgxzmyBZcGm9kWj9VQY8BMWueLh5S8yWN4,9682 -anyio/abc/_resources.py,sha256=DrYvkNN1hH6Uvv5_5uKySvDsnknGVDe8FCKfko0VtN8,783 -anyio/abc/_sockets.py,sha256=KhWtJxan8jpBXKwPaFeQzI4iRXdFaOIn0HXtDZnaO7U,6262 -anyio/abc/_streams.py,sha256=He_JpkAW2g5veOzcUq0XsRC2nId_i35L-d8cs7Uj1ZQ,6598 -anyio/abc/_subprocesses.py,sha256=cumAPJTktOQtw63IqG0lDpyZqu_l1EElvQHMiwJgL08,2067 -anyio/abc/_tasks.py,sha256=yJWbMwowvqjlAX4oJ3l9Is1w-zwynr2lX1Z02AWJqsY,3080 -anyio/abc/_testing.py,sha256=tBJUzkSfOXJw23fe8qSJ03kJlShOYjjaEyFB6k6MYT8,1821 -anyio/from_thread.py,sha256=MbXHZpgM9wgsRkbGhMNMomEGYj7Y_QYq6a5BZ3c5Ev8,17478 -anyio/lowlevel.py,sha256=nkgmW--SdxGVp0cmLUYazjkigveRm5HY7-gW8Bpp9oY,4169 -anyio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -anyio/pytest_plugin.py,sha256=qXNwk9Pa7hPQKWocgLl9qijqKGMkGzdH2wJa-jPkGUM,9375 -anyio/streams/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -anyio/streams/__pycache__/__init__.cpython-312.pyc,, -anyio/streams/__pycache__/buffered.cpython-312.pyc,, -anyio/streams/__pycache__/file.cpython-312.pyc,, -anyio/streams/__pycache__/memory.cpython-312.pyc,, -anyio/streams/__pycache__/stapled.cpython-312.pyc,, -anyio/streams/__pycache__/text.cpython-312.pyc,, -anyio/streams/__pycache__/tls.cpython-312.pyc,, -anyio/streams/buffered.py,sha256=UCldKC168YuLvT7n3HtNPnQ2iWAMSTYQWbZvzLwMwkM,4500 -anyio/streams/file.py,sha256=6uoTNb5KbMoj-6gS3_xrrL8uZN8Q4iIvOS1WtGyFfKw,4383 -anyio/streams/memory.py,sha256=o1OVVx0OooteTTe2GytJreum93Ucuw5s4cAsr3X0-Ag,10560 -anyio/streams/stapled.py,sha256=U09pCrmOw9kkNhe6tKopsm1QIMT1lFTFvtb-A7SIe4k,4302 -anyio/streams/text.py,sha256=6x8w8xlfCZKTUWQoJiMPoMhSSJFUBRKgoBNSBtbd9yg,5094 -anyio/streams/tls.py,sha256=HxzpVmUgo8SUSIBass_lvef1pAI1uRSrnysM3iEGzl4,13199 -anyio/to_interpreter.py,sha256=UhuNCIucCRN7ZtyJg35Mlamzs1JpgDvK4xnL4TDWrAo,6527 -anyio/to_process.py,sha256=ZvruelRM-HNmqDaql4sdNODg2QD_uSlwSCxnV4OhsfQ,9595 -anyio/to_thread.py,sha256=WM2JQ2MbVsd5D5CM08bQiTwzZIvpsGjfH1Fy247KoDQ,2396 diff --git a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/WHEEL b/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/WHEEL deleted file mode 100644 index 9c3ae63..0000000 --- a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: setuptools (76.0.0) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/entry_points.txt b/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/entry_points.txt deleted file mode 100644 index 44dd9bd..0000000 --- a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/entry_points.txt +++ /dev/null @@ -1,2 +0,0 @@ -[pytest11] -anyio = anyio.pytest_plugin diff --git a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/top_level.txt deleted file mode 100644 index c77c069..0000000 --- a/venv/lib/python3.12/site-packages/anyio-4.9.0.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -anyio diff --git a/venv/lib/python3.12/site-packages/anyio/__init__.py b/venv/lib/python3.12/site-packages/anyio/__init__.py deleted file mode 100644 index 578cda6..0000000 --- a/venv/lib/python3.12/site-packages/anyio/__init__.py +++ /dev/null @@ -1,85 +0,0 @@ -from __future__ import annotations - -from ._core._eventloop import current_time as current_time -from ._core._eventloop import get_all_backends as get_all_backends -from ._core._eventloop import get_cancelled_exc_class as get_cancelled_exc_class -from ._core._eventloop import run as run -from ._core._eventloop import sleep as sleep -from ._core._eventloop import sleep_forever as sleep_forever -from ._core._eventloop import sleep_until as sleep_until -from ._core._exceptions import BrokenResourceError as BrokenResourceError -from ._core._exceptions import BrokenWorkerIntepreter as BrokenWorkerIntepreter -from ._core._exceptions import BrokenWorkerProcess as BrokenWorkerProcess -from ._core._exceptions import BusyResourceError as BusyResourceError -from ._core._exceptions import ClosedResourceError as ClosedResourceError -from ._core._exceptions import DelimiterNotFound as DelimiterNotFound -from ._core._exceptions import EndOfStream as EndOfStream -from ._core._exceptions import IncompleteRead as IncompleteRead -from ._core._exceptions import TypedAttributeLookupError as TypedAttributeLookupError -from ._core._exceptions import WouldBlock as WouldBlock -from ._core._fileio import AsyncFile as AsyncFile -from ._core._fileio import Path as Path -from ._core._fileio import open_file as open_file -from ._core._fileio import wrap_file as wrap_file -from ._core._resources import aclose_forcefully as aclose_forcefully -from ._core._signals import open_signal_receiver as open_signal_receiver -from ._core._sockets import connect_tcp as connect_tcp -from ._core._sockets import connect_unix as connect_unix -from ._core._sockets import create_connected_udp_socket as create_connected_udp_socket -from ._core._sockets import ( - create_connected_unix_datagram_socket as create_connected_unix_datagram_socket, -) -from ._core._sockets import create_tcp_listener as create_tcp_listener -from ._core._sockets import create_udp_socket as create_udp_socket -from ._core._sockets import create_unix_datagram_socket as create_unix_datagram_socket -from ._core._sockets import create_unix_listener as create_unix_listener -from ._core._sockets import getaddrinfo as getaddrinfo -from ._core._sockets import getnameinfo as getnameinfo -from ._core._sockets import wait_readable as wait_readable -from ._core._sockets import wait_socket_readable as wait_socket_readable -from ._core._sockets import wait_socket_writable as wait_socket_writable -from ._core._sockets import wait_writable as wait_writable -from ._core._streams import create_memory_object_stream as create_memory_object_stream -from ._core._subprocesses import open_process as open_process -from ._core._subprocesses import run_process as run_process -from ._core._synchronization import CapacityLimiter as CapacityLimiter -from ._core._synchronization import ( - CapacityLimiterStatistics as CapacityLimiterStatistics, -) -from ._core._synchronization import Condition as Condition -from ._core._synchronization import ConditionStatistics as ConditionStatistics -from ._core._synchronization import Event as Event -from ._core._synchronization import EventStatistics as EventStatistics -from ._core._synchronization import Lock as Lock -from ._core._synchronization import LockStatistics as LockStatistics -from ._core._synchronization import ResourceGuard as ResourceGuard -from ._core._synchronization import Semaphore as Semaphore -from ._core._synchronization import SemaphoreStatistics as SemaphoreStatistics -from ._core._tasks import TASK_STATUS_IGNORED as TASK_STATUS_IGNORED -from ._core._tasks import CancelScope as CancelScope -from ._core._tasks import create_task_group as create_task_group -from ._core._tasks import current_effective_deadline as current_effective_deadline -from ._core._tasks import fail_after as fail_after -from ._core._tasks import move_on_after as move_on_after -from ._core._tempfile import NamedTemporaryFile as NamedTemporaryFile -from ._core._tempfile import SpooledTemporaryFile as SpooledTemporaryFile -from ._core._tempfile import TemporaryDirectory as TemporaryDirectory -from ._core._tempfile import TemporaryFile as TemporaryFile -from ._core._tempfile import gettempdir as gettempdir -from ._core._tempfile import gettempdirb as gettempdirb -from ._core._tempfile import mkdtemp as mkdtemp -from ._core._tempfile import mkstemp as mkstemp -from ._core._testing import TaskInfo as TaskInfo -from ._core._testing import get_current_task as get_current_task -from ._core._testing import get_running_tasks as get_running_tasks -from ._core._testing import wait_all_tasks_blocked as wait_all_tasks_blocked -from ._core._typedattr import TypedAttributeProvider as TypedAttributeProvider -from ._core._typedattr import TypedAttributeSet as TypedAttributeSet -from ._core._typedattr import typed_attribute as typed_attribute - -# Re-export imports so they look like they live directly in this package -for __value in list(locals().values()): - if getattr(__value, "__module__", "").startswith("anyio."): - __value.__module__ = __name__ - -del __value diff --git a/venv/lib/python3.12/site-packages/anyio/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 5a50e37bd12cc037274446737816b11de69930ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3578 zcmZ{m$#WFR6~?o*wYJudKmxG{BoGL-gcd;izJQQ4l7NYv7*~|4Qc|H>Ic=m+!q?D)Z&*`g0~z zFYtN0+k5<*b|L;jjpS2Pg49p{t`y=MVGBFu3NIy7DPdRGm2QPsDJz+)z*Vw}xf)z8 ztC?%SHL`{|4Nl86b1k@5)-utr2sy<6`!$Oh&HaHDKwZUkp!hB*Unl1=JJ8}bJ8 zRdAo|W4;FNm;KDW;G6O$^L6kod5if5ct8#?_knNA+sysoJMs?mP4J)`WWMFz^@ijS z^MIT6hUGBxZSaU3VZP(u^G4+;^B{OkjxpZ_kIQl9A@GEpV9tW?%lpj3;0N*n^9cB% ze8_wcJSiucN5NBaig^q?EvK2s!83A(dBUCb=Hwjneek@TXMO-)kPFNY!HaT{c@n%N zmzbx(%W|1{+FkKhm7qjjvlLET-3pr&kM3Ht5@{!sM zf|GnMS#SOGAn)3XZeX1tv~D3R_|~f9(gs%Tn9(sAgPih>!;-P?l{Rxpqt&!%owP}o zI?TIn0pT4S9y&+9=^9#D$|>)k75Kiga6T68Z)4KT`_5~$FIsqjNEu}_PA6~Yj1cQm z5!`+M?M6StHY4*$o8E`O_HrO*F$r^?ODE7OVa;HGUJ@IH31q4XsG*ZxX7Q8~Uez(wa{okZJddz zUU`X|27fcd8DG_ADVLh)`-~@(j2Sd@5Cl&36Z&swflIajZ&s@NlPAz9u=Xj7{tJd`;LEPkd4l;lT(h0 zA6twAy5EYnyz^`^KplGN*rgkC*0aagt~sLGVVFtrDApT>7ub1M8AegOsWJV66AWz) z800w2M|lm0raE72!By63$Uyn@BR2?gx*BFpZ*e+JQcF@tLhpRK0a9#DI=!}3j?24l zBxi=CiKLmNg`}0FjRbFsLU)jygA_C6L8xRof$k*7d6EkxT@;cmPM6DfsJqGBRPI@- zUZK8t#>llO)R$S4ggsTqEfv!4IF%H%R(O`bln*+#(r(e3*)_aj0*Tu|1hT ze^9=_D%5wV&mg%w6E}+Vu?~Fa4gUn{yA&}*k|h}?86mkxGD(>mCm7=Q;wPy1Wh;9ecq;oMFas~})f*>^3K!koMMbLO z=Nge(!`K-0S>l8r^B@p^0N7_@F%^r|(;jGS#o``Ju^8rI(I25OVv4a?%*SGv1F*c) zRiW27FDV-f{GlVl&~Y>AIR9gfXzBQR^|$NaY=6D|zN7DbbN|0YMXLYTYkyBSy?yn& r#%~Yarw9I;9{Wpr><^!Rm!ADwPv6`0ceUL=R3qxgT2bAo6?W}EAA2qA diff --git a/venv/lib/python3.12/site-packages/anyio/__pycache__/from_thread.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/__pycache__/from_thread.cpython-312.pyc deleted file mode 100644 index 43d72459a8da35898f641f64ce2db2417262d464..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24081 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 diff --git a/venv/lib/python3.12/site-packages/anyio/__pycache__/lowlevel.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/__pycache__/lowlevel.cpython-312.pyc deleted file mode 100644 index 91ee52fae3a8daf9ee099e90593315697118f433..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6961 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 XU28in2qOy@Zhrms)Sn5~Ij{Z)S?~U# diff --git a/venv/lib/python3.12/site-packages/anyio/__pycache__/pytest_plugin.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/__pycache__/pytest_plugin.cpython-312.pyc deleted file mode 100644 index 4bda987019773fb6bb3a281b3b4790c797881687..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13388 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 diff --git a/venv/lib/python3.12/site-packages/anyio/__pycache__/to_interpreter.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/__pycache__/to_interpreter.cpython-312.pyc deleted file mode 100644 index d20356628994d706d8bcc7804eee043aa563ec35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9116 zcmcIKTWlLwc6T^Ka`+HQQEyAOMwVoWvMl)-HQLx+#g-B|w(Qzc9&`+b;*2cHd}U^6 zSt_+rlWbSs4GgVHQpYn6;Y>Ay>&55sAno zNRkON48pdAEo`G-Hq6p57v|{K9=5}mO*oRyu#@6)2|noxyC`f=xRai+hr*78H(3#` zNczIQq(AJ3KBveh0?Ep7Wil8J(zYv6m8=d|Q`nuTN!EsIDeOtqCF{fW43X?pd(BOk zzM}X1%Y?`-*hvMfvL(DF*%)qQNQ$RDO{E^u7v3uRrEOy1DVQ#ja5HUH(v~wU&{mMP zs=_U_RZUwp;q5je`Ni5Ba6?$at-W~XxB?lu^uj$;GfuFjkVLUTH3qC>fK=@ z&k(WkO(NFcupv#L+93*J)0CVC>jvdVd>I;722;B=rKE zj6a!H2IO6iMjkhyg{b*ma0m z`)dHM5{ZNvkRjU`0sgY^$BB%|UEm*k1J4Zwbc72#L_0`_!;myy7S2aVNx&Pi$~-AE)ZhR*ChYoV#~OuyB@lT2h&v2Gy>OoiEWu}&lv zT89MN2KEC2Vs~~Sb_qec7?U!p@N`s>1}O+CgBJn)>z9fv5giv14ho}kR@!_Oz_JFU zgd%+>nV~3Pla8k{`PLJcF=8BlI6*H_iY9&D<0vgJ! zJp$k=cs!9L$Q(nz%$zM}n=-pdIU`$(`72he``7k{XFblF@hyK2cSb6}rZU zti~x)VnTE1f~0xNC04DRrSY5g+f( z%&3#;)V`iQdwUhI47qEO9~ zFZdl_@ZGD;JC~aG=9~8xn)feocloB}hUWLTzPt7Mt2cN3vaZlDu)w|LTW%6?tYMk2 zUgA6Qe8;jku;dl;USYLKcz@*Gk(K7Im6o2B#_bPW_6pyB+Ig3I4HhBm1QgFr1ypx8 zj|nK5G6FZ8X%@K;1jrI5vloPvOj*KE>b+qo1cO4n`7BFxH=8ws0%X$#DCCfL0*>5` z73H^6lt7o$GrB}jIp~E!lcDlH#O#A=)@NM2G2sQo>W9j@b&r3^({#tvwCt_dFYLj(>B`IeyNSbCphW9wbGsDZ5vpMA?LLPLtZ4Gw00l6SmVN#FkmI zP~`?`l=s72&7p@Y5FcZNq6IekHH`(&tD7up{m}5qEm)yd16LwvQxOa+e} z8i$13@^0+na8%))@!H)dtmTJGlaOS_KbcO5AN2N#^nyzg!ICHLk1R}Wn|biME9bHA*+%MTQJQs1^z*O{;D z{GfU%bTA(}_>uZAKltY#6zWD6JtGT$0@X^e^Mm?AaPOjb?`mu4=lwtH|3Li5)Q71; z>%ou4KYDesbs*0RdA@O>Y9Vp$^s>kIS3B=`wyx+qxuz6?tqX@&{lUw}7X88^FX*aT zu6(GfZ=h?w0KjvE0d-XkOGU^OMg$uQ2weGmV-%Gy$KGU2rFa9Le18rm;2qml_Al*r zUHmvuJG*SlaUjgxY0^jDs`z_$ngOf!A)`5sXF!ORQE@dM*{{q1`=5a(SUhC8{C%tj zusRBr<^aZmSCR*zq2N(;R_dJOC?h=vBe8K2(a_KQ2l-~6JoJ(sy-V$V`Sw0!;?YY- z;e-EGH$HUPceuYMcEO$Jn-(0Gy$`&^TfZEvUpThvuUV)lR>9CC1vmP7$CJ#5Odt0P z-;>M;yy;*|YF18Z+z2>M*!K4U=TV*cG(6MO)6*@O&!)5VD39DKzR=FVL-DLU0_d{= ztD{@M*z0VF*H3;DM)l+W8A5mmvJWeqCO1MAs?hjIBo$3ck%;Do2p}zH69{`F5Sv94 z#)vbPPG;f>NybZ)4`S5{6-0EAvgd6iLcI&sXX-sDFXZEZ`5~dQq&pV0SM(u-zDT(S z)ep(%fx6FmUy)P?ylbS|RZ;9Bt}0N3wch$l$NX?{KdEn+A7027xcb$GZS%)2w-vZ; z%Qf}TUiJsy7+K@|cK6zLhka);P-kyh^|cr6@GUxszoFL z@D*X~4GRvmDZWd-&-nTx3mtH5yZ1-O|Kj)$Pw0#p27D{V!GoY{{Sj(CmN@ z%`{zP&V#E0cVsuQM4RafK!cfiw~91rF^@b4iIh?>KIJjTOJ56<%`yAQ8;r=7+X)7q z*Wlkf2PZP1D^jIDZIvQ?kd4XG3K)XER;Tv)h(3TVlHT{1VMs4nuA*8 za6?nuO^nia7F>whX13{lF{ysF!|a*DP;5hi^X=Tw1x<6+DGcg1lpJ%@Zk^ZMw_#Z! z{9t9~taV9?*a+vi8N% znZ9*1ovmaKq4EI|{|@DIAF&gKnYQ6d4EzK7^<`^u;FEp<>uoLzWB&_T_}>4!EUY`5 zAq``XpWwAWN*c_2r2g3v9Re%oM&F8lOi(8!;anWvfi&xbiBMrWu1=QqLr9iQLSj=9 z;*jwXlQdF!VtS}~KWknLkvnp-sUR!`+K&KgF7;pCrnKV55fdFLxO58@Spmc0D&4};%VNlOs3r3Hi zrUghe;fMB63M!=7fpRjPO{qe9VuJ{k5~ILQymO&5J|UzbA5O0Uw_s$Ntwn$fn9b6& zY5h98`{`1842g@FTh~uZxvvPDC*u1BSP<}KsROdMAX3OeybK8weVd8BE+!BR1ibe%Z zMK1}|eN8y~wg*@hZLAA|)t052_Iyoyp{8SD=xaOlQ;ee5Yj0bwX}o&o%9-oc*VPYR zDAXKS@*j8zp=;w$QVZd4UU9fQ}*p?5r zU4MD0{mFd$lZE#0Ewvxcw;%rX3wMKKOWv_X@7Px^pal<@rp~`PwBWeQ*VFu0BfJE! z4SmM9e)F)Gcm#oo*Ari+;Xu9dzry~>@8nlu-0~Kn+JPB z%;0YBRu_kGZ|#ted~9ciT-?VF7Gc*wJq&!(!VGyGpKM2RpM+YV{x|o4Z7{&z_9E5W zeg@$H(zsn)HMq-uJH)~|x4RjHcTspZgQNQ#Lk{QdCz-*gytn(E0DsEx(Eq86fz>|s zBF?A2fre)**>U1K!y9MfBSK?wZIHFZB1ZOdL{}_O)5G1SC(09E+Xi$eb zObY~0e+t2q6||S-eISh8Sj^DsBBMB9mK7S_0DZzTSH1@;P}Ik;&Jhz6f)Wz5y#yhq z8CHat**rC}r|4tZFuWVx!X%hM!)y!VGnPeP=O6Bsi!2Ox7VS|x1 z9NiK9mq-QO4%&T-kN`h&LRbM_!E}kHvp{#aVUOwYDJiBJrk$5DK}W5qEFy$YbIq1k zG*>K>jl|HG$@r3xC9KerD|ngu%TFH1PON@|1Nfq!C&g;Jy>7+7bIISE_xBe3dlvaU z->i6QQMKz;BuGJKG2E?jI}!hZdYGeA^P=nddt{fF#qNWq<9DeW>7d zj}&w~uUFNQcLwYO+t^!M8K^^?9ER@M3i>Pd89iB|ry=AMFkoaJW_KJmB7rk!^dFMX zn7{a*J-acXF&o&3LXG%r?S@~jg`9v%lCtE5O^5N`LOU^iF_Fa(3i1#j{6wC>DudON zSYcXD^Tg7L1n>adprX4ge_2mYbUY@b@@PD`FLhduW@ySobEq>Jh#O>72KsZjjLBuq z@LDMBS|xBymU>D*O)7dOvexLwG{|umWn@^;t6Ve4KA)`vjuV95g63O@& z(kk^;fut&>&~q#F_a6Cq#GpU_&{QauktyuMl#bkl6`BKGzNm-AynycLsMuf{zm$-9 z#6P9yeGbVv7(f|Q{s0x&a)$YLvi-ND;tS&X0&Dj@vh^NmyGI(oBs=nC$L~q|J#ye4 z*>{gLt+I|Kwkpq7U7o(fZu^qkxybGOJ@>?FWpLiPP*Whm<+}R$3P|CQ`sJG1dC$UF zfz&QHHZ79M%LfWDpK}yh!qhzAiMQ%8u&Cf5Armr323{(4nV7+#f<(TSXHR;&-z}d&N mExUIYS@^Dc8jE)LLK?)^R>Tp={y2PVE`T1YjGw8axAR~9DOj`s diff --git a/venv/lib/python3.12/site-packages/anyio/__pycache__/to_process.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/__pycache__/to_process.cpython-312.pyc deleted file mode 100644 index 3c1e4fb6b5da3a080bd53fd2756a8505469e17c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11866 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 CX}v%I diff --git a/venv/lib/python3.12/site-packages/anyio/__pycache__/to_thread.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/__pycache__/to_thread.cpython-312.pyc deleted file mode 100644 index c4335a625d7f8173c9de39059e294891edbcc38f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2934 zcmZuz&2JmW6`%d!YDH2Xq}=!;wmgXq*Njs!b_*MjYrBSn06`O{aMTv1V=RZeBWbPW z3^BWuOjQNk#7KO|A&0ikA^$+(^bcrHz2_p=2dj$;Nstt+ZY<;?flqmFc1bC+SK`i_ zuQxNl-|xNI&&I}z1fILsUR-=w;EHxCV#+9`w4rFRHXqu{v+ z-o_i_?TN;OL4>PYCU;s)!kwUW-^k`RDo`H}%ENj!7z<4J8~?-_CC~Z`D#64Zr!f^& zgULH~V_(m#O>LpGnvs^65Hev&C`Eh~>h2X5MXVKZut(;49sVn(z_eGG5?i|zt4ovqqLNjdTZ%Ol&#_CkPuwSf!_y&7~6Ni z_&G6v$Tjo#`_|0g8OdNAkeQg!t)Ia9)V_~1;W0>3$Sgwc=f=&ELCa3LM%L^#W6k=s za6cE#dmxtIf|oy;_pJ8|1@bmIM?SRwVyzf8hdqLhB83N0rO6_v3*j;sbiONmgq*H~ z$>OedrWU$wE|Qprf-<@y)e=|GuQ&^4irUlb^Ll);VPZn<{FQ%~NjKp0tQ#dm=RgZM4{8}MnO;F@5MUS;7%bqMCA1gvD2Vmi z-xIZ7n-60)kHf30@67=N&0PpzXwoI#15NVfJjIVs?=d zhmh*%Wzl>6E&7w0(=)G}*Qh+r5G)jmIDw?Fh1m?UZ!u0FpGJI{M>SJTLZhl;kF78* zrqx$->OpV6hD;9lDHl5q4))@O!pqc@@3K}%ZA?>{v&z6@YGW|Qm@F|W=##hVi?Yq@ zHzkv8DfntwzXF;D{Gkz2-Eut&TlG#aS(M_(GpEngA%^*nF!{3u9@jNA^&MzBz0@6S zNj(pX?1NwY8+iSfe0!Vp&k}cPePnv$@DJDBga2~NebX3w)A+hPy|Mqm|3?d>#mD2M zdhB84_@m0j2bGH(ZuxGoe&XEU_xCMQy|hits`Cvo%TAw|1$>pAC-FFVfA`#FV*J&( zX#cGMh7T>n2N8xeZfu_c;~v?$ONRFZ^zMBIeQyIftAEtWgNqImWtOb=>L2x&>y);7 zAc{=F-wO!QZMWbykn`G|FNNP#3NDL5WaPq}9V-0kIFqfL+)uKL1azV$FrB;c@P*-?;HI9ee@YPzQ1Fn zfI-ctE`A6>EzSaK((~aeoADsJ47PCb4r z;Q|N5dYftjN1*UCtf$dJFg5;9+@H2((2e*-bqd<>t0w*fy!w`57@Oq9uSju|9N#2| zHp#(%llms1Us%o~YwCeD_0h^dtm)6~Q|tDr|JY~0ELA_61cppc@Y-fCX P46Mi34A=OXp?CcqtSnCF diff --git a/venv/lib/python3.12/site-packages/anyio/_backends/__init__.py b/venv/lib/python3.12/site-packages/anyio/_backends/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/anyio/_backends/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/_backends/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index dedf72f1be8311e0890a0305b4e77e82b75cc337..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185 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%0DS3*r-z?Px#;bYV}lY&N-QL& zYHt%3g8jR=KYD4V^hm$>!n}laq*FD!lu&va<{` z?GY1&V~qp7C^O##pf0r~WcEd-fenDmmjNz`gku-LWdqw9%xYbrq|$zseg`NmRAS*K z#L8S!Sf8_M<|Oc?9wWe0j7MnTE=SrxkVgYi8X#gIkg@q_x=1O4Vw3o$w4ENA1cR|U zV~A78XLj&{S%DxlPz6MEz#^KP28alW6~Hu#Tth+)3YEvR%ip*7-5qmzp=4fjJg+&C z*P8UU#=NbheMnX(3!7s8rrF$r^A+bRlDSRs+@@IWY8B$N#S7bF{=a%Jdk(^Mmq6i-?%r1Mile%>QM}S9Qn;1UTv;jh zb~&%Cbs}Y&LIuHnhNOND0Y#w#D+f=;>!Wx{n4KzeplAYVb``XlW0T1hE?Bp|r9j_O-4l6|8Ol%rBf}+){fpWqr|-m&EGH^b>|$1!i^`iuMBg6pPa}~0|or}L@7;z6UfPd0Tw$W z&YGaNG2?5V4OT*OiGvQd>;iRJ)9y}-+GWAXZ8lq~;@+wmZ_Qj@(S-1FVEgX8!f219pUW11}@uJDRKLNoaDI&D1d@^8hJJoccT25k{T1@gM0L zLDm_%{WaaDkpz}^Xzgl#Klu@ErmMPziX+sHpIdu~9?cG~b>!*T#Y zu0z_X>XmlhbX39b?N+$6?O3R{i@7(w9^*^xx z89rln9eVcA@NVfwq4V+8)`$n&R{b4K{n)-=qAs*FEj;Q?0Vbl&NR+#ss5B8>*; z2F>P|?!CJB^n4&Dy^z*YcX#5}WKRVRHO8@Bl{dk-I-JO$trv5G>0)@a6lwB|G1MVi zY$#7<+_cc5sYMbnZp!MJNxel_Hl}hxj-Ppttd z%M$Q1T$+Oxz*w7^7LdjPpcJsUVoP^OLNg2u4PoIP1iooKZ#iZCoCOtAXP)-OQ&ux} zkuon;K{GI}&!Y2E*|H`p5u0G)(-46f_}c^?zJ)^BtyAMc;$-g-gX8& zE^@;`++-^at2BihM0RyShp|<(0O>b;U)WCG*D$KvW8E;4y&rH~p#pFTY zLi;-#E^fFSm~m~Ib-9x+6534MOD-RM{&5#)ivHWwMz5w_cR#fW_^MNzVVHbsONa0x zZ8}RdCzhVcl;3?B^;{KKk`>y*}!U2lEY93Cj%YVu&H=XP$>!}cc(h%|`Jw~@jaRY8l;QLOA zf*W^#J_0$;zzEYN-ihNLT(;-MguQ)sS=-poSRPJqwaxkhWA`rDZQ@#-x5zlCwcv1x zxeEc@ZU)@qDvlykxdSLtz2tpeSXhH74Mm3W6eib%e3RswWYNeY8_dp<4Q6{`E*sk0 z&>+fA`5)Z9{nL6~0_udEh^*{VT#>^+uCR$?b1ZGr)RLCEqkt8J^Bl}2juVHY!EbcAi9E3LyyfysB z@QimgO#Zvq+_K;XlmG5DA4YI=1ALn992{rww%WeuMrg_^c4s-KoKA$(s0g*kPpi;T zLrE3r1i=uh&9A%Soa)JU6V53&^2=BaCNR$o8flzOI%gNrndT+mhyxH!(ZBD?wG`kK z8zg==m;fpd5=;P`%mVx~*gTzsTB8rbb%QM% zSOkFmIYkWPbBAF4cHWwu8v^Ge8ElRRo0Gv6@!*O}C5d3y*}nJlEM=j&il$g`6O7f~ zsziqOVQC@+i0oeWQ+S;!ZUB2DcRi#L$ctkPRHDw7J9Jz!M#+J!fT?t1&L`4ReEYfq=` za`_*igG zZ*(HB`Fi{IFL=F;kmeJ+($|ty%hsU@iD*g`+7xKXEw^()@Tg4^PS+aOAhTw+<6mkG zo?c~GgJkFN2N8*uBy^Rq3Q~g9p)5E6aN} ziPJuzC(kwQ7b#p|#oOs37lkWJd)A55>sb6I8{)4BVz0+}#oVDcwU5;X6LAfd2G&l)sp6~+5Y5mC8hQYFUXdW zcIA20tF+cEZjn9$HWdY|E>(L9M|PjJTb>t3h|A9|c>KcNLe~MV(DMHR2AA;|i$%qQ zDwP=RS5wGY6b}k1sZmZP%>P@StX5*QU*JKt$`iwb>XoNaH-o`xP6Ei~sSysJeos?k zX>#)egVDOfk%J&HLxiB#F%-$k23PN{ zz1#YCZrPo3k$-~7q39sP@FcdgEQZykJbU--?BBbmcgL1}2>0&le_;Ezd-v^SqV1HM z)H2x~BkcyvO4)}FMMmKEgt6!yyi3^u1#}npOKGFf4^jJ+6MaFQkP;6J?T5=ornpPk zV#=fSL(0v<)CF>ovP4L{$M8wz##yylG6va?k3`Edb~WAGF@|H}WAf%!GEx6#4V)Rm zka7F3FPqCNi5M2LIgt#-maxo*~1^4dem^0s(+ z+cjU?rKUeRmfU=QeDnR+R^C5XSUp?V_oom4=?*x0ykDrDt!`C8Iyz{|${X?H$UtBSd*=DQe==ivV zsdd7ZCi~QSKf==<>(&iGpSy)E&DJY99z0wr>B+^Lcbm(%t`&da61HZ!e&7}S=#2TiN-)gTGQUB z1R*wKY$W_rw$2l_gCONbt=MSx(e|Vv0i&YEYEZT?DG#7rMZT4?(jC5^u1hOJMaGpf zUcr2fD$tE zqCP4d6ts=r%mcdaZG}>j_B-l0U^}RuN++K}Mnr*;Cy!!l3@N$Pt+7Ul(SGk@YgD&9 zwl$L1A9dT)%E8vCq9AN*R8fslC)*mG&p9>nQtOx<$G$xF*pbLv9rLbMHiy~rN|>L?D*z9{-7?-o`$_d{12evA zGOq!3$_eSZzj`h=IMMT_<9cp`8vFY3SB}5>#p}@5a3dpJ#N`*CZ$8&NF)+C{k=H!# zTx6T!l$g)mB{M|2pp02iq8RUQi3eI{OF|RwHy=vYt%=vI`6EZNb9=mV`w!Q~YWK!! z_Q5?*K_O)+y_JhXh?mhNlVgET4#4LNWF`qO_`}FS48zIpiY<-8R8@Blex{ehw55G| zg&*N77VDNW+ZEf!KCktv;6cn)Z~2yD@oJOM*W$XmOr-E~N^`Z{Md5X&Tk^$s^C|w_ zVmspBEfcrYIp3{vA}_bGX3!qN(V;UmT^LezRt=HpH7dLKlnXnHB<>Er*7ZiXYkU!*v?JxG&} zaBb2{v5ISMy7I)(LZe@7U8t=St8eZWD#b3&V5j5*NU2`(J|isLhbWD~o}q(chYpIH zvD6)dPB7bXL`Z?hI5LzKh87A;qj*BX+g%j2cXXWF|H?Y)VDKAc4I%$39M-nK;fz2oo*{mBg~ zeupOEi}Np~li6W&Q#(r^#bf6sj7Nb18WYbfHlIznCtxU3t=e z2?@~9BQumpnIkG%p&qCi$x_Nu(yRtAU-NOwc$g;K3sY{t#mvf{f-0%sc5vSppFz7$ z2q&zBK%{@sh)@`xpBJ7qp|Le|5JP1>*St%^=)Z-KBXK!PM0X66{a`YDBX5!x-H#hLJgzxfdXKQe2@#g|#W zGaJ6LVJ@#O=B>LylAy|XcIEpZ3)?bP;o;c)<#M1h*=>`xGu0jQ)|}k7+2yO=iC&B* zmv4zL-}0y7mCna6C|dcE=k9^QD$$ZD;$g2kId&%5J+QqHGY_?f|zM z_}Z~#WqZ7`{dd+RS8a)}+VZDgm~m~Nt!;ekzBlem)^3g0Zk_X%PV4~vUgx=Gu~vGZ z^EB>03)NAJzieXrj(Yx7!NJ>EMv( z6%P&$#fw*53MAXR}` z>zyd=2ZFfOcQOZU7{RurOQ- z_-7(wOnu|^ztfK>U<+WVgB@o0G#UVP zYX*Z9GfVN_#qfmZuhkww4SXT5nhih@9I zyt7$8nDe}rRgN{nHQbpW(Z;yH@j@Wkv@YJXZpOc!bkuW`UedJWdJQw)2A!@uOj9Xl zf@H%7w{K=!3Mywpt77>brt0n;sL{!)o<`x#x}IFil)DkZsdk~K-afUm65;7wUr&u~ zI%K7AwLsw-JHpbl1aC>XM^S3`lTl{9vWhf~vYRsO5wJdHnmnw_$B;;;#B+&?HPdE) zonFxGEVAQ$v^8e7J8#q#SC_LkY4{IPAMw6k3>*V+k+?Kju^L~ga76*Pb{)Js7X zj0!srSz*UXW(c6J8 z!lE$Q@D>#|UQ6NI3XTiouvx}@`V$2DLpz!l!6Mo>4+3zhI3RGfgUGFdNmC45{xqq& zn@RS~4#k_d6$hYwen=D5%kwa3^R@0XWP9sZ6l?n$29PFBS3CMp?$9uulqHdTS#d#gOqkFP6BM4 zE@pV>?_=IJSyMtkSHH)TCB(JwrQbt1+HA6bI8vx-+iw`!fB5s^{hNwuK~ewR9H<6S!w)w{+xHQJP?L!H?grg}&OQh_=Tj(lEr0n3;#od3x1 zXW}yR$`4U`O@o;!W@yN{UMcD~Ddiu~jU6>mm7+dJJV++IV&B!X9uo&&gHYVyepWA(Q$7JqopfVX~jt81AY?%qH zoC`Kz*pUc!-pa~#!<#s6GS80-Z5+8}bB)X2$+?)5XzV=O4L9BA?>l#2GSCzcG+n4o zF6)Xf>$?1@?|V{uS9rN=x(>a=11slYhSkQozCu6)~SXpJWs9aZh!~xE2Tnjx$8<$ zq;QDRT&X6{-dC2D_Swa&c8b61wj=&(w%Awbyqf1k=CqlQLE$sW&)u`RWuWb`sb*Tj1UnnQxbQTsQzYt%9QC(*3_jp z4>jO>D$%`*8C_ErsUWdhzKEoH)Qu3mXobn5)ScU^LoGGV&u)$Y{T8i&X_UtGoHKZ$ zWAsYHX|(fu2A=5eQaN-JsW0k~i+G}TIE?V-i(L!LtYS5AKfN+Cd3lhL8Ok?+Eb2wD z4wta76?cs}s=9}kwUBX8&t2zCR_>%W`s4wdCK}>RjUo*tD@MKi&^ew#N*=22+PytC>jJw>OyCN zBtKgNX}6^~X2`D!C{7Ai5|fyfpe`=0;8Edg5Kt|mC-O^Jl#hM%GV&Tt&#-0WRhNvm zP_$ixNDvqXghs{45orzsnI>*zW@d7P&uyN`ZRN2y{Pkz;+!9uO++Tmee$C%{D;Hmyx8Oz#WY)Xt_AOC~`7p8> zH9MKzvk~*Yr=85iv^p*{BQyou63ZP^fo>ljrfc0uG2JRqcsaYbi#_X|(`%fFCx^!Y z^cozeMUF!q^GI8tY^&B_f`axrhNp7Qoa}C`Y$8mX}< zL417#f?Hu$Hx1JbQ}zB&!gQsp)R#tFo(Tv_Oq$9u+$X4&?^4De&~zrcR=MzoqpB66guM)NlqJ60aSStA_8;k$0n7VKilf`3)IC2RmX|A*->i3wtsKjv z!qTujJkupC5FxMeIm32YXbbaWB(yzlgAA03W);Mki>b}G*im&cYKI>b!t8|ZgyUWD zf&RtM_G?%btcF?_*f4@!Jrsq*a{BmE%aB~&B`^j}-o=meyRa!8qoZ0&pY;M^L)5KJK z<0IaG`s`?vH@>gZ^d&_#wz}`?^uAXRK0-TM~Y{>2aN zQ<+rohYR~rahNmQKxc$2a7Gv*9NJ$&hxS7_v@aky705#DRH(eCMV#6w^gs=2lZf!N zjS^0aE(&Lt_B4po4J^LJPVp}9rEzx24@4!XZw^x9!#veFCJKlbyEp6mJ991(9;7`5K z8qS7^{wr*4z`V>hwk)-FYCxNbixNYf|C?`b&wirq?W66>NPnFMe<>l+j@(1rh% z;^=k>Jt_SSJrUEHMWtZy03OGgTk%LV^uW`@5ABy83m+O_Cly;%$Moz#+T)MI;W~^QCH0G7Ipop~1 zPi2_5u);@h=a(6id{i|}B5No~*#IrlALFLiPx9e8n$21bp8fFPGyVPlg?jH#C~*eM z9$m^ca@HWAcfe?7Xj36=^}5E2GeMm@-jsv)YX(z$4Bv?6C{;T&d}yS<|8HoG5V;Ar zhlSFZYSN^8fjA)qnN$G*W{2@oswI_=&@^G!$0NXwlb9IQ zGhR#SOsje!DnEo76lerX&dKx$PogxOvSPiX=~b`+jp0>Bk5OdQ!+VTOKmR@T*FA{j zEI6E{>N?eRdZU5+7KalN2zYVmJegM=&#O-4)h4~Qac}LsXu+AK8{XPGkt!5&va!1e zZX~+%?cc3NXewLiF0fDKI4E2o;GVYNNxKOBuh^E?xJH^nKYGlLREEo}7Zt5y`eI9#a!#y{8EV%f^dxQCq0M>rI0LCou&*qFaauQj54rw$i|Zm-~!G2 zqx6CSdx=7IU;a{xyNVsaZi(9 z+J<7cUKCQ^1N$Q*I41aorw@TSq^vIbr5dm~@bd$Ga8+}u_x=$*l_r^Cz~8$QXA%|I z{}c3=3GAne(4uA)*@S@cgb6#qsZ`sdSy54d0`>s8D=pC5<6HzgHd1}F;eYbTGdL9A z535B_aSzQO;G>upjMbJ=`!Uobnl0C!Zx6R=xamXzfLnPJIV~uiUD3h3O3w9dzp@Qm zMRq2L6OrKs8f2njIf&COHEK7z%odt`}y<@Qfn6HOA^vr`$3D z9y1A`0s)lnS8A;NMk?Go#_h+GUXrGzd0XIP#< znYm$R3}BOfd6L`#7%t5U3_Ij(Rr^G*9BEb-se&6WeOYYl_;qX@qab1eNmkHg1}b0?aA4ynh3+DH}YjFtwm` zwg3#EamX0uz)F7lCtB?*QHD$~<$q(_`JLx>zS;7fwuG-8?y%|PV=$f-jAhka=zC|^ zukT{Jc4s^fW@y$Yz3XG%^|O_*zd7SAgARP4IGJB}Ex&HwYR@g5D{V}c_Qp$l6Qx^{ zfi1DXmiJ-aEB}U4$z1u)h>VAeH zwh*vo+sIV}^dy81YgB<5W#HG(0cZnQASO!=)++&;wd0M812-(PEHj%Z0Bx#D$Vox^ zCrtJx*GH_ENi;*Eom1J)Xuj(=<5Z43tNVwK5dIa-XFFSZWTg|CK82iwV}0~=S0*mm)l1YPl%g7|*EHO!HRn4uVKZJ2zmWewrE8i8k$fVlXuDv?Rd@M2PU8 z(4h#-YL0}SI5NbXdXGGT2L&P=KBRHAN6KfChJ7*-jI z%0Ri5#-blNF&4@sd2RI7=dNWz#Xy5^H=rU@{tDoY-CcBQ`*`2kn%Vrq^Bd1?{O0D_ znufD*=m0+s`OHe!$c(@C$NoYx##IFOh42{x!#XB23?Js>`X&O4jjL3kjVu;4QW`IX zpc#fgWQfrTz_1Ic=?jKSnH?~XOJ|eWWezBmaus7Q$~@--kn(ktPVDwQ`!HJDhYuW) zR--IQM2~Y?N{73q+%%-jxwwAGOGLUveQaH5l+`*K4-%ANJl1VYuG@ZX-S%(nne0o} zcEoFOW^nZnN55DNnaL82 zEcV%kQZr+xsNU0b(^Fy8noM7D8Wko`Lv3_pO{RIp+G8Ze=$nkpfiVxoSKMst%AZ(3 zje%rbvHB+#o48Y0@Pt5}^$BjVWT8+HTNWH1h?k13c*R=7iWopy>P1iim$2{++`o+Z zGiZ4fGvHBp^a{hU^J_2_r2hv?TtuERVlDk`IGY_f7GKN(@s`7gHc=+ph>|IpKeY)n+% zKYERp0AB{5fWosg3NMvSWYD4gL-MD*G(3!MqR!H!ER62U-8*=A|IsIoNP`OTx0z-h zhsrl|EdIhX&z*X1Vj$tGj=8EiRHo|EMZZ)e$`=-h_NHUcBlzXlDf_79t5}DG*}ttC zI|2?&8?RCZc`(;eg)nra+mtg6P2sHyu^G&45+rIL94Ea_6MPJx1}l;Eamv%L^*6&s zv+h-_<@JG;}#MDq(Z1{ljg1PfPRQn0QE43H3G?CBf zjKHCe#!H#0Dz&7t%tkR|%^+*o8U=+hV5QxGU-&X@Jcf%=m-2dqZfus}H6Am*tx{@4 zUEZZZ0-~r*+HH2YD_u}EDyVJNeHV1v^Z4sE2&_1*XQI-iw822@H5l@5WHhOHO-<-E zeN9i2l^OMT8R*V@MmH{5mq&Dzr=kYM=sj5Jpw8l!u(G9Gn(!*=CjEbSXCTug2E(;; z`zndXj9-C?#PAAQ^J$wHZ3OVZtO64mV||cT$PU9_bZ#h7u@)(oPU~5iGhgO z@s%AD?QpI0)g5<9kEKyvV7P0<)ZQ7GQ?|NfV(ZlQ`I@^UtnyUC%Hhr81mVth#7{31drK@(l!#jeY>-(UW{<=2|GGo!(>Mfn>z01EPh5hUZi8Zn|H zLNZsbjw}J|WvK~7U4ohm3&guzYyv4Hfx!FVMI_aczS4FS67^~Gn;|DJpq!9*yXvL=SXHYP|Fxl-&So>AU zC29pOrEhG~c06e`Q3e!XR8T;xu|^8LL{%nsA+bBE-&{30^45trP9$npCwyySt~IRk z;Jh$gj+rH92p!F4BjvLLg@AHiI^{Ig^A6?y8E$}Fe?k#dd-!P}h@f+tZAJ*O{gWM4 zq=DzyB{fd^J$n3o+}Px}ha0h>Dlr0K6SeYHJl)1&MUSPbZnnJo{Vb=}2 z{0L-l!G_R0#A87aWIV1?jjOx`LD^c?)vUGysHl3$Q$kp{fhdgv%dnLkU}_FxxPXbq z9N|JnWjXcq8HK||OjPC?bcc(H?ouG+qn<&JnVHjYNfBuIHhz70&cUxA&p!O-;@OYiJUr*(H$Pk!&ckoucz#p4)Qe_vtcom~Lw+@K zWCYaK$dRW8ha)OcN8Lj`gFj*66A*P=Y?t!tKavJX868*DyB~+H4vie&dFU{SZ53+n z>jY;sH4Z)ar!cGBZUppeTM495GK4IAnO$MkZy#g`#FJnbtsyfj(&S+( ztXh9&f>KLAS}W%=74%B?j#{NHD9=O)Y$o;%i*GxWojYtLIWBqjG$W~%B>_~_${7Qw zk?D6NIAsA++spkG1EqBCjyC9rOmhb{OzxsWM#d>P;I%?F{;o z#)N$c8WXSqYQJ#A`Yr8&vc@$z#Q(x>%qk5$L>}8xM4iZ<+Pxp4onC`{^CC-tx)ZxVJjy zEuVL)`4crAv7Cw+yJw<;=&!Ur486oJ47+||$+5~bQV>5Y$N8#IjB#0~eDcN+miNwR zrE!TH5`0gAJ=CXpXFJYsKDT)>l{IytZ$-@(L*3J)3Y5ceDXpPJsI`A5+8Vl%WoMz1e%g{*LdWFHzeW_jSfxota~!wviZ-tc~jE zXbsWYs4QNkRXXLyR8WyI9vSZc{NNM&hYs`~IUv*ETAsl zqS7CDYr@xj>N6NwZ6q3gO~Q`IhHA>WbV!O)QdA(qb2 zyA9Zo7?ufsH=BBs_`XCSjju8W;fQ3DLYN3LT9tAsUrWQSR?+Y^8$JNrnN0bt-((hC zrLlY%g%fF>e|F^j^XHzAXVpVIIO~5HR@?J)<}KFj91tB|KQu1Dq+#lRo8Q=+s9bev zB)N8beC_sYm5hAntQ#oBCS5_8d7rrVx~tB7dcQ!Z!~OW`QYel#9gI`lh`KTF33d$) zvZexNO*WtLgyTgsFl{;iUsCr}qM{s^gA1X8ws=9?+oRuoE>W;4=>zcI6!UG8vAXhl z;dPmtmGz<#U@MFG_vra57daK^DU`Dv;7W%)(ihLSI;W z06q1Fgol?IT2jIIZ6@C^)3}074xP($O%DvURC)PYRi895c&s0nM}VvA`S_fm%Hj5R z8P}ecFITSmQxwa&_H5<<9X)QL8-oimgil7(pv_J!NjNI-g;}(+v3p=hbPPl#m&$vK6;_ydd0UCfY_2N;q9i2(tV;&~h5??h;$IvMQVXqnnr z*pqKdTWGYcp@G7}*AYnL6_}Dfm^A8uB7=NsgK9phlEF)6bc)o~4dhDH8(wVF&jq84k#;XgNi0j_SfH>)uvOsyO!d1$11*wQBrB&wH0%u>!w??tgdPPN!+L|k-9 zr|=^^K*_#Bp}iD(i9-9-tW)&(5IsIjH{#Qye72M2Py}PvPa%=QxTnr(Dljtc8KV3n z%Am3EiCHHR^NSlAWVL&Q9$DA6Qxlk`6We(S6_jYFlUa zqL5$a(N`}heEVwR+vg?4;<#A+fi)Wi<4wstg|M-5j()A0x>n`#uT$gJ(Qz2u+&CQr z^{dSbj(o9jVVNMVTySKG#WzbGA|F%MqEu0Tc<{jfr-w%RN1kBkB!@WfIa(witTf;d zj}M^v>Lu?8!op5OX;K523>Uy@x2cCDJmuOgv6yCYE_U{f7C%!xr6TmR=q4@U*EXJd`3p_v_0u&=(OKE*Z%FIEv znS5Taxl6mYBHGxBy7Ti3tgC+?pXHjjvMl2d5TWl`jA3|i2rlm>lkSz@_^Eq0A|tw& zxFw}=S838kxYT6*jH`(mh&?r$^o8QS5c$J}uFTF;JCoj;xVL7q?>bObo5gQ(dXrQJ z*o-IW_|f~AveQ6up^qspnC@$49n5&xv}+nJplvkNxEM(VW}5N(DCWuOt#%wg()K)> z+R_#p16mBJJow5}mI9ydl5`)v-9|S(GsK2juOAobmykbNk~!mL5lsP&$sVM^KA2w! zuE&XUCldK|BE#Jbg#!%1eW&hAdYj_jrVBL}M&3Db@xr=qE0PQCndF{H8@01I7drFE~6m#X!tX+QM@rU;$llJYH#6r?8Fp z4eP!FY4GroV}phsRJ0`7w#;^9wi)k2B~>j+nPxnV;!Wmt{~!|?l~EryBMERnFFRq= z7|(BnzcBYoT^BMMaqo3+`};P$;J`wzIn^H3m-~mNGXV>EHgH|z7ZIt$Z&L35es+Gf zzu#ZikyZ^sG~+(%HU^cKgOW^^kjkS` zrIhAhG+S!QR~UQjVQ_Uq8jH-S^ZLV}o?(|^rsvJNe|Yd&$O}!opTBCP?x)$V@edl} zISq-NrlbpMv;^>QEd83VYA#s)`leSlC4$Z4eW!Plg~OI}E$~wp^H$toX&~)O`kLat zrUW}ZGM{B}FC!n3P{NB;;R7d&yVnrmzS90`Cqghx*4<&B3RF_KL%^L*Bj1a`j^=Z7 z)qDAV+Y)MPYkM3RCV_LQj&2zkW-qcy_u!_WoRlo{=<*n4W-y5$jzlX)`V?i|OShx+ zNUA`b2gAywn~S=LBp7sbSrj`Ka%|$V1&=5O=5w6lN`@@rS4I{o#F0e`abyvpg*-tF z+yrvj!aqR;51>r-!ZTgMLL=^JTJ$!i6)(K#1x9A)<_?)=y9mv8QF2j1Dt3gt>Q3Xq zB1%^WUwRuShTfPBM>lN4UXagrs!sX^iKJk*=O|MbFws8dybn$)l^94@(R=(lB|;e; zl6JkkRe_68Iv31Hd!-yeP`N%I?>{`4ay~P-|0!wkK+1-j^d-E6 zh7;4KAlakTKqatZ-lj*U;ZB1DZeJ)g#wXhto}zpf_smZ^VH_`WM@#MM-;dc&SJpA1wmq%t?eRBn6=N~)w*kmA4P!AP(PHCjk<1`AG zal%3^TD6$COBuCig%d(VI8JJp`WcEM=#qrvR!z2#G}I}EOPf7r;8r=}Ed|YUF9l}V z*VWU5X3QdOCZQcxsT6C%gb|H*HpvS~eZWw4Jnpr?-8{V1?Zb@v63v3ObYp_@P6}yI z{4bDNH|hR6JuXKQMKG>SBzl!D2u~G1u|Lv(6o!l73SK$;3-b_1hNF$f8MRo-UYcQF zLeWH3Fz3CmdSm|Dvv%BWJ&CRSLw z%i{iJGyWE^c-||iOO`anOWtp`)H+%sG9s$N#i{GVwV27a`M)tuNy?PW=(OjvIz#@Z!_6 zv48_%20QUey%ZR;a05{qK}>3NgSN1B17gDjgl%E*HCsA4j6+8bW_2Qusm^5*%lYg8 zlOr4;Rk=sgRPLaThXYKoNKwcRF1eMGp@v5)avtSb`Gry*smx_5&-4owJW`+Yrp1*q zRl4l7xFA!j%Ynt*vXp1vU}OZG0vLOU_Ur-zDjnbR`6mYlM)qPh?HvKMJp35njJruG zgXHOtbq^nZTr<MswstB}AsR(# zKXnzuz9x_%RRB{>piszJB;b|ICXrHknQ=zV6;3n;(z;cq7pXRpb`;NOc+!mH-p^-T zA+iO9qbV;z=-nE3wO$A(+qT5pw#>M;>WB{+3a|!ISFjGfva7U<7qyo*@cBZPx^ik9nVcSZ?O z>Ry_bIQ{4V_&9s;{8Q(inru!Kw*8KKCTl%oe~?I4=1y(9up?gEdELA228n~0#l6ce ztiA4C#m7NEYiR!C^TGnn&&B4vv<5wl_r~iWs1Y)`W5&>-lL(PL({+SG4^EM4 zFg*-eF!*vNbQzL=*R#&xF3cpBR3=Xgmh&1$kUO~ z!2Y43&%+-^1f5QxoNMZYQFWOSD}5eeJxdCVb!q=0>{`sGfc7tj1pxgs>`|1|jV76ON_JkCea!xZRAuKk6{k-X%9?C(*tW zj^`ZD2qS)_Qux-UkNj3HzC zQ>95r`S(0M0y=kai?Z9o->bj>={Hd8;pXB`jyW{^;4QIKop_oeVa|gU#22t+T}y$>OGXanptR>&5N! zRmgJtMtK9b1_aYYvxKKn+8Ih)H{p0a`<3j;$Xn08@ocG-kIX|_kwkk18;ASt=$%DzIP_LeYUv#rp;1zpYXGJH!|LNKiAT*`j!ptxJ8X& zjkv>t+Vh8z^Jw`=cb_P{l-;||Heu_n6<@{4RmbbFYUr7?A@m(P;x35YC63>Kbwkf@ z+7bFKKjNlrd2}zpQC7!Pk$~u_5_fN*d#ZX_kJmlz^&&i7+|irszTy>;@=C6Vm@9=; z-j$#mpSw~k_O`mOG&w1}f@*PPo!Dn}UfJYCIE^<&GwBRLs&4@btJ;K!G+vRXG%29A zyN{?ly2ckEbq@`Gm_daDY=@zA8pc4TWw1x7P>gZ&=|qL$Qec`X46vA~w`sh71=i{J zLO?Fyg@*uD-xR(k0FqkFI1lPqiwxDlqw)@r%k-?mlhjbdH7bre0FC559(#eq$f(xo zWL`km;F#U#2?lhdAZas&2x>~Lbkmp?3`{VTkor;j0;QWnh&<6_{c`h3GH8(gk&-a@ zafWu_Ba~Q$3`_vPVSx+`0$^ke4MFCqC%U4Q`pwrQ!36>XM87dG06_=%628ziUubT{ zjyZq9Hx9jNJ2(91!MBFr7>*To#Qm$^w^`eBZshnDL~A>=@>|ISS^30s;N@1;y_Nk& z_IG^AP**(E#TXndaevE&&nEmEuq{{Ru%z#kBZME>Gb9>0Xi*w2u(Q;qroGa( z9c3!9Wn;3@D__J^vwurCFUXp(ztFldl;`7q(YBP$45iiB@`<6uE)Ard6oAO63`HOp z`K$&@_Rb^NtQ9ms-masyjAs`*I0&Z9ez-sl$@^d^d??H;QAI|;MmdVFlhGpkTz+}rpg$dMr+ZT>K_3{5%NUD(?sOqHzb^;o9!IuX9&De0|;NeC;2 z>jVnd+YnA$&IB_tPQt=3BfzMvk2zVHBOIdD4A-b|Ku|z}GG&=jPj$D`GUyhnO`-Me zhFQg?lfsC8mZlbi;71WkXI{XxJLZHuqoRd6Sgnh{Ml+xXH2@#OV}Tg4{9O6VaI(89 zp1W$+TSscdb#ZUq# zgnkfV1r12Hw&YFx{-j(qWRxt8v!g`*6%FD+Gy#L?5Zz4~tFDQZ5!t%KZPTS=xGBp{ zS-96-^<=rlUqWk(O5pnAGP9yL>7|wSGg@a&cOrxcom|mvvrO6C-Ef`k4R*KKrdmXV z0R^ANTj`JJ#yGLe&e}10{A0RhNQ*y1bNC**UBP>>Zx|2eIPf0Eh>_kU$f@RH7TGZU z31f-w(KE?q)wV_W1U-sf@Y8IdE*2(CuNG?3*wrpf;Mf zFJa#YxK&X-8w|~E?tMQiM_dEY3Srn=-5Vr|83VY^7 z3LtTA<-C&xT^3K-f|~`~++rb1gI_rbg^(g|!A+q;$k%2|?wPmI?|q+Uzo_d?5zoA9 zsY3_Q(ds1wM`7Uyc%zBj1`XmhF2V}8l4h#1X+3I(P_B(MBGecWG0RC?RgG~VW(Db~ zsxeN)w3EiF8slOy&|Oty+$;v>;?)=rVpgWv!pIu54SLNiYC~_ zB`qhxo*LsrOb3bd)EGZvR+B(ajmbsK8WQKJF?opb<6F7pts7p~~l43)+NSC4*rEUxt>taeW z^C)!-Zwi;_QkEj`=5VPlCP;b1_bBP*c65h>x^|QyS5LT1m#Z8xz2S0QOa+Un(8W}m z*DBl>uGFOprKbvS35RrVt59l{{IB{oFjN=&7v37K(T!R)Yt=R_b@<+Jt*%8iD0h3f zPWPo+7E`Z_sYA?t;Ranyy;j%oj&P&yO#{;I3^(aw8WFQAyi6C$WfC%eGx8cQ z7#CIfpp1`emd2(_;~aI4RfC^vmd+j)6`rc(4?7@xww`c}y3EMn6Hd*}#HeG``L;JT?;g;%pSt#C>dtutzG;=UBGI+{`ngSb6T)ml zv1)4dr&KnQ(u_1}SjU>yXyH){DNeXytn`%il<+mkDr8}Ue3Dh4awBBL5DH}JY3WhR z#xyFKBfO@DzEds|D3ex}bO+y*YS1N2uLhEz-=GM_fg(hUi`&My{uNZXr2R*aLJOjX z)5&{!$bI^7xD6O@+Xk3>-ai!C)FvldAcSB)%DBy_*!S{_UURo^uac{-E-Im?(j)}*TMUC$TU@kr$ zsK>#n;-;S}Paj5B;43e5`$y8|_o&HVTJa6yGRNc$vE!4xd-q5W~@7 zhW`>eyj7>c2I`gZ@@KcB}{T7dJeB`CzPhc;y0cT=7 z1!Ot0VLo8VEk2)hE^A`jR){ZxJ zT=HHXoT=?IC{kqSPt;u)n#t~(CvxNRvDy5R^Xt#8f92q-hZ6aXw}{NRMQ<22!cT}# zwHEed+orR{omh>Qjot0*iHLh;BF3E=BW zJ(IrrxUW9pYmB)Xxy({uVG3i)KxWA+j61)yt|J&{tVgOu^=+XEW%~zUf+nIWyD3X| z(Ug9wDyAK)YI#gK6{D{ns>VgCYY;F(SB>YVLNZm~TW6KZk3qR8NVFJ?&5&Z$oh8QZ zRGoMPsD`S6r}uL5&vw7`#F?D0ikz7kVT>Yffv{h7zo7H|(fUQlC(X%9F%8zUD1z?>zTivGF_$Of8{qB%aNeCi7i_p-j|W?m!S(Ur z`thBR8u)^ zloreq9HkZ9`9DUv09g5VK)~ffy?z}&eln+fwQw%KyVmk%8A4MQp?j5mN(fQ7+Di9Y zcQ-tNx3chZfx;{7h);uT)X{7LQF}7yJ=E;bfpn4LfF`2T%xS4BLbXznDX_+nWiN*4 zFfO=#_daQYMvCSqR5W(s$9x@;Ya4je;SK=O7k+=_i9_(BgF|xH#4#V$VvmjF0=Y(fd>rkHhA{PZ=#hhX>VyyHe51v-ADNi+BXndE&b&I z>mxwX6`>VJ#j`lnCDKk>MYn&z2PGB$!t~prVTq2TNQHFMfH3!#z%g@{oDvy?3Z)7< zGejC*SdJ+h|ygTNt9`B1~HP69#ap$?t z@jV2n%Zz{;lMf!B=)LR5Ii+(&r4yZ#pGnrOkJqhF6m^Z?%V7AjYrbW3Wue#aedXSX zb!S~<$OMAt;&C62K;>1a@EmM17AaanEec@&AQylg*e$)deY0GK?`3kOzOsj)Jd98h zCh+b29#|qTDd|~lo9=)S^K>%_G+Ee+{b-Ez3p4}<^e&YvFGA)XMdqQ0` zq#mS@DyWK7fU4;wS8zbKD%-DEEy%#Q_y`-*9n^Pi#l&dB*AjE_gLP?4Cz=m0P(|-W z_i}7zX@OwoKCDNQ%`_#HP3DBCZ68afgL31uLIhhSYNFcNLOtb6DX+uw0#yB&N~Vev zXr>BAZC;BuWx;lGj?n0_%j_VMrj|(BLCQByxHNx}YMgsijC^(^C>LfKb%VtvDwFSo zXVhcn2U5w6Rym%mRPt)SqaI~qAcgzMD(#IDLb=sSSo{zUSy=$&zhZk}ba zd62|$-U%U)P)gHG>cj>T96KC44Y&>yplj+d++v!xF@?D`9Xf>0tZ6#!+@|fUX%b)x zth??=k*S2@6f?A)p}lLa5(@&MYxVwq`<$aA%L;|g{4;mmv+S+!?6c3_`|Rhpzh~bF z!X7i*>R^+RMu%vLa)@h)xDK}HknwvTM!O>SZ$e$Dhmdw9%W{pl4z{H|#O=YG=Efmq zhW1HmRoB6qxo_zuq1CN8PW25f)zj!tj^&Kx9OU^S?HXFHM;s*aF73*6m@^2iD9t?R z8p%4iD(yAg9ygC<9m|D+X~w6=axo6p%zf)%*W9>~9HC-iAIZHtMXY$lo}9xLRg`%y znKeD;Q4o@6&ot5?$4rmQK#r0~Aei@SfgCyYnj~A$YM^_`xD;Oc4el0c zSE``#U93};j(Uk2x^R|K@V`6#Je65oSbV7kV%}m+S&Cgp6;W6uC7+0M8=u@zq!@zu z;&Ap9s;ZvQ<_UU+a+a9IuNnIzKr#3k9Jueu;q@>)uBcvw{|(P#6*@krt47SWT%#WL z-eE4pWdyHSnIZHS%>FW=Dnego@B;>a$2d+_Wf^uFL8?-o}66NgX!4kXEKBZfEaPR)lcPoN;pnOXdivS$x z*;LY4e)m2IFGH6Je<}qkmZfcP%CmfJg25UFKWE9JX11dP%6+{`%nX^ySZ?nFhv9s> zXRjJ5WD;U7^+r8H4RYhqsH^&qDnngN2@O$cNKR_6sO>w4Ja)sB_i=Zn2P|=7gq5Q_ z&lCM8`op;uP@{sYinu+?(L7b!9w}WKDqR{bT{gOHs<0ta*c>Ws4i~nLZiE#vU+G2f z+VTC7iZ!8%HQ|c2*QEK5z!e5l`DMZSWx>F*$^7MUsWvBYws)$y>YEi$Rs4-TRJNn@y_ zF_T#z@m)i0ISB}x!H z-7=OHb^A%rer98&Y*naiRitcfsBG=Ib(8MRZ+HWzt&#c_q52iU`mShA{gd0KYw9C4 zOF}hE#rVU61kPH{-hHkwSPySVyQ1Yar$(-AmC>l8Wv`jh-bTyE zOC?9;^#mNsmC{!Wy0Gf$rR=-nlf9!Gr(6M5!^E7qa^x zzD<^j0`JFfk#YC_HIrW0b)z&@eenfgs7(s@e} zK=3p+*W19;AY7HZB?rbD*LgR$TK~z^xdcBy>yS4uu>WkCnea*np1)#sA?+*q^5$mS zD;^u+lFqEnwdPl=naQgGnQ$%3d3Aw|*IsRw3Ab7|cQ{^MoP{i2UExH`Yc_d{!}3}d zvv@7Xwxu%bHLtv-(Dj-xi*RWc;**pSe1u_K;XAki>dQEBWmHlHq4nWTsFGpDO}~^P z!{$g&st3&EL8Qm@wB;|7^foF;Wm16`Bvd)meoQj&!}8;6gz^;BKx8gCAD|wP$X1wNTY(%PNN1XM{||dBo?Y!xO<+UrfEwXOj-?Bq@OKF#WtRw=4x^~%EK`zurLx> z9}27o|0dTP%&m;(K|Fij#k_g2MjEW^d}-dfJ6>#frSn{Qu=dt);f|nt2Nc4e7Mn#jMZ{MZ^3{#5kLO8wzHn}(dNN6E+~g^$5g(&+nS0CzNBNj#2=VG=P&puFhsBN; zka*@GE@LYPN}EA)(m)I{bxWoW=}GDX$>1Q3SPZsjCJK;_+8xWfLHS9lPbP$aBr64J zCm;JGGzoB`v}~U<%1`p#^kX!a&Ry;S87))uWg6Ya*w&jd*~BJ;c}|6FJ>F2^7%>sy z1eWg7dLrc~(}^inDO2#6ttTugJZ23Gyg_~$R6bJk6TIk3V1dcT1{T-?(G5rm zCd3I4%icfGuc2wNEVzQF8kS;aZZ@$Z#Pav<9a6gY_Y#A;_drkY-n}Xj&&DibEZ{u^ zgQTbuLDAXlE4G14Yt90L5f8i|U)y4Zm%&}HyBnc)38ws%w;Ifs zoNe+{VO6BCK2%sADO?&VT>1~@vt2*2!;JE|p`d#!1y+&fLyE_x=kvS4O{npso!+ie z`Mlqb)5Q5oxf3qmtIULJ${4>|27EzwtnDyg$ZlBMZobeC3&pTaY+k!Uy0D_WtH}If zkr^pPk3ue0ppt?^VhDe_)IR6ZXyCWX^Tdu%Gaw?KvI!8|juo-__v><;TI&yX-`%Tx zhaK-oM|7>i48HP1=J$2x_YDR@Ea3ZiK@j7TLI5guT9C1aHH`;@(wH&T57^`PqX@_e zyqBBpSdb`!>dmCDcH&4luX)r0nf;S3qghdV-V@Ff&aZBa_?CoxOCrAIA>Z<|FnqJ& z4Nt{0BazBAp-TF#L&`-RKP>%T>6FW>*~Y%-%n)SF+pLHcE=o5|7% zTPD#Xy#y@t=D9*dAREauzd){EGgDsvqY;`+ge`;biwc-B?UWGvF;nbEU+y%icrHWY z!jjr_jPE-27~>Zk1jZ7tR57EG6h#|-14-)GN)LfMjO7%+M`e9EB%_L>91P;LSrA67 za*o043`|_WCIMk)8H*VQw7Q~kN?|!u#fHRaA6}ec852jajH{To_(eFJKZDHPhX}pJ zmQyn2_D9@pA$MEEy(Hvba^}HFcW2a{Pi+6GU6c}f-QA#?P&en4@Il^_c@t(hc%SlD zPt-j3;G}<1)K{D^OGRxT#;r(mU6@{Yw0)`cLkETBrForo=JRz{z{&-FpiL>qk9x`$ zTZC9Hh^wnJJ}Yg;D?j2?7ZY5}cQMO}8L6{;jhN%gc{EifDJu0;n$jdew!l`rejP;T zTut!jJyVvWL=*f0l<-Jx9p5h+m8bH&##9&jbiyQO-K4!Sn&(cNs@jM_)}KgJ=O^ss zbjC=bMylRNl0NM#9Uf5NX>PbStBL?1I1&F#D$zd=v1$vBr;}bwJS9r?I?nJNaS6N zSbF4V%p+E+C?<(>8d3Y0t-m@Ymn52{m#exi|3i5ILrx-O#+&%+B-Wcbg}%1*gVZkY zY%(;`F63em!)=)yNzBT{j*`eVPrK4`$&g}JE{>rj5uFmIBlZ!8ZvRf8q}M_6`zHSX zRESHMwnLgF!O?q-!3PK$+$u>ltdi(lf`rscl9`ruYyI(CUnk?`Yy;S8b7Oe^n#k4%|T)$6I{G3Fw++^XHz}2yw>pK%{JWsBC#OzX>&wW4cMtEIVkbcCs&JU8zx_ry2&N6`Tg}u%T zU)a@vFBHh@3M>~2J6Gc7C9lj7QU2NDEyVA!UdS^K0Z2uGQdbduWcSFaj2Z*o`D?t( zD--Tu92SkW$gm8f=S++O$PHN5{SR)wwMrWiRfh)#`l<%+J%Vv{w7-hS2jwviP@BRP zSFvFXs+46xO6HtYEQr&@Yy_cp7U`n~vc*RZ>jMru!9X8`5aE!q8>3b$X1FbFWB3^F z}u>EL#X_?}Z_11?Lrk(+J}QT;-H}cDJ1Y zTPP{H#N(5l|sP<$RRW`rk2KzGVKAM^(4QJ zVzK?@245Pr_TWfn`DlK<;U(+wr^G~pxzbs*K-Nwi63Kx78q{`9$Okbh(l0|VL=)hK z9Doao!M7 z#L0>F`__b7)|@K|w`@DEYHxxiN9k%+mVGTsjAeCh*n7wJ&7W3&BJQ;8l`pVf#~FzA zp%7Urcd)o%4>N0 z1F;57=jP91v`ql`N>A;1a?f*1o?rFss&GLYjQ-j&$16hiit!_p_S$H!CvI}) zz=c)`Ty2Hi^ClKgy6Y1@si^*RcG%w@bhpQ=fdPDgW0tQ5yq}z+slbBgw?Df*99TRi z!$yKQOlF_%{O-0Fww(=3x>w_X8FANy+%=PdZIkX>qJ{obStqj$4_+vU9=s;q^9;XT zkY)3JFxZLD`J%7uCV5=$TxNNy(+u!@d4A^#>3oZe@QO}f*CO+ad2*M>_M+QLxWI%5 zFZxReFR}ohwHk2*;{Ria8#TzvH_?GFXmYZaL7drU?clmRDwbbxbq9y22z?`Y)YLS~ z*ipJH7c_NJEf}J}=Dd69a!>cZfrcjzH+Lm`8dJ@8t;Y9lDV$rjeqPeSZu&smO#|s=X;3 zSP}``8VcMxM4nM0wE8m>w&lOKwvK$zw5L;>|GReE&8RmcH+R9qOf;)(6u~Xj-0L!x>18i=65cZ zPt(r-3!T{j_v3Su7Y_`Na_mi@jX*j5&%-R}>bgSg`f?^RWhz(4Ach!}+MSZYp-GL! z*jbh)1w>pRiC1LeQt6}km>Iio2DJ7BMsX&V-z;3foQaDxYSENqQ*i;+Kw~CcAW0O_ zZ~^(F*np`%K_7okn=k(2tsURJufI z>gt^K4a1Ee|9kJ^*Zl-DMnw<6no5(z(Gi5VoP}`60URK|OOE;~BEI=hC7t-fq^})F zK-tnW!{O4kLEl==*n{fijn``UKv5m=f&8+m`quB}zK|QP?-=WZkH1s5K6&fJmNW7X zUEgz^?V0p-MSTS-_kFT{$E5GJXi4d*jVCt>^M)oELS&hNkS{Rln-3y1eC*_xT#x5V zUjGNeKrQfrT;c;B%TxJ){yM+YC;fvT(0Lz_fo$`IdU@>v+l2-z;T97fTv%8F_{D4s zU?F4nf<;|XzkqckX2l5~ma$Hvdy=aQPYz@$h}Gq@06xjirXE*$v>dTvPva_uD}7HB zCj;TQnCyh#VmN_RAhro7OdfM9fyes+eFOMk9B%*2Kx_r9xbnYw%WBUtc&Ge39?dx} zreu3R2g7pIN?qaSONH~p1$B{v_D})rCb`D~=o5X-xXUI0NQ zK;XvmOd{?hHBIuj$=EwUU{8|O^#&YtL(V6|o{`*BKvK`Rza`~{;FEHO^R zaKwUBoO&hmG8?9AGo4M7>4X{JOlMQf8%rjJg8ns>1kPk3g#;hqkh-5}%SXvBCx=v0 zqmafFQcv;B>1L1su~+{S_G)eRN)mRx5?MMR%~IOpd`-Jjaf7?0$3r^P5P2mD^~kG3 zmSA$i+?RLAeGIHY)FNqP1^UUBR>~MPuPBlK+c(Q4KVT*c!xldg)WyL7w@C+qlXu|d@w@$f=G$-4;=@c8T>>58z zl)>L1j0`*4FS|Cs<*zyU5Y*Cu$*az@%@cP#f7i2jO}bj6Wne|Lh059K>g(}B zxaRsGz1-i;97lgW;#*$|&Olc=gf#&@7^SEsMe9bEeG555x?Jbg)ihq0f0Nfxw9(pbfk zth~#`G=0TY-ec^)F_E$2ig!fHYj}FY#rCM8di=?}*y>Ne$HjKZM=iEZQ>FEh(xy;p zQ@FHcblVLVTYtn^8ggR!n{-xjx!o4_2s(pK1^tA}ZCUlGYiwu84)@CzM`hY_JMAtT z-x+jQzrkhqb(rIsz1%iMOUoe{?<$VC=xBSq@8?*|vD`NON0;05a(}0MfG(JI$|fF; zIC5@=1!+s-G7v#Xc<7NCO+C#*tgsNLYJ20@^G-e9 z#+kSiRY@7MU5FL9gw8zu4xXpdHI;88VlJg$)7Q?d3N*=~wH7&3M9K;i4c^9xwq2AZ5pSXN z^#z?4^Lew3a8|3Mc9g^Uctqwdq}D%lQ`(2dd_wR*^9il_Lzrty!0tzV2X;!@rKg5Aqt6f_Fb3_D z(2%nrk7M#qgtCB+Y96D_3M--fkbym=3n@pOI#y%({7gup_EX@C?Jzip0y`(gzp^E2 zkrSBsZ7aUN;OBX_oerGa^|QOq-}UnDujWlyUU%1C%)2dUzwHD3h(-6m6|`IaGN;`# ztDV@jkFuS91K^K4iw-5*O>eDZGR~(OrQXp0g(G7S6le@$L_Pw2)yM5PTe6ALE*PmW zKb((~T!yogUc#XKc%5;wHI|#?=`E?n3>{q)T_8Wc8Rwc$PHpLSk_Npk;~1s)Q|mxa86sIP3gxLkFBIA#OseQedl zr=H*a?Cx*xnJTHAFhAW0l3CCfcmwpZJiHnANcsMF0eEPz0Y_;ak5o{5eXtItKjQ0b z2R7c>YB{wU(0P9@!&

    ee-fHt|-s)x*2qpocW+mV%|YDaO9k&s8QTZ%kqk4 z+g`V3j{fs~E0zUGsugOev{;=DFlhBW)P7c~lY?QF_1$yM7FXu164$D`9KWRkFZ)%^50+teJZud zZTL-FND}H(8xQn$jPABiy=v2G?6-evq1#>v;Vz(i<$Eajbqb~sw7AkXP`!^0orP~s zP{4;rgp*ANNm$W-$GBM9M|PP}yZ$3^Dm55oGdO7{&oJ5<(;h{I0B)}aqiN^Jxn~D? z{zVB(pwEkQm^gV=(qw}bFwQQ(&-}7}&JF!%*74-GLd#QMK0Y(&8d_4W;e$B0;q2rr z6mF>&akeSC=$~#$25`(On%X+OZ~Cs8fkf%rWMJ)*75*7-n}IYUM}9GxPTng)sm33; zaQ5Z1smiLU=g5-p)Kk-uMER;oN2<2&?dCU|C#{oDUG%2{6$^nn9CdI?oH{$>n2yaB zU6HV{)ss+n2(cDuu>$Q?wJ|Aa{qS^y?^M+-m4vn)ji4jo(}_i zU^o~bhUH+j)>A#xhc4YWGn}m0@u6cU;|DPZ7>V4aF(=WXi8sDIR(9$Lu}6mz4G7Ti$e4EZz=Y9D&iB0eM-UqjUY;7(C}dz8HD=d z63FNTC7>Wgec6M^e}_0B4paHCPlg?$pajRzd>bs2d2M6e0IR!jtn;HlXuhz0COX?Q zS9sT4V8__LMUQW+d(mGz2Aj?$WBcIMXsq|TyD;SlOm;!?Zo+{h#AJ8UQ94esMCg&E z;}Pgpg&Jm@uyl=6zN2WW4#rZ)eT$)r$?anYKDLxtciqI9WY^7&CP#kC5fWo-s&jhp z{OVnaw!5#KOVsX5R_vR1?7!{~UiY-5^4pX*(L|v0>VqGw``*K-JRerPrQ*;G?@0r1 z+GpzC^nU1R{}JUWo-b)h6t}{0YoLABJUj57UCpBnjLzu;^Xqme)^;XpyOI@MA3C~! z&JRh?%?F6@tp}v$(`uC10BHV`!FI#oRS1lN#6tp z85Dd}k(D(f@Q@JCjZ?mBa1{pmTsAcbrAQ4EW$QB5SOc$R9VE#imRyAw16H*nF-QZW zM}CRM!;1(&ZhI6J#UjQ-H730I@L;Dn_h2&VDe8c+HWmzD7+=B=o0@04_OE;8D`?>K*DBJWq2yW(i#3AuXhMYJg4w6>c z&6bjfGq2obrh8+-phMmD#EBGrb*|j0@)wl#_HL$ieid4s;1NaT-Fu?5; zRCDD&0MlnQe54G_8G=zt9f8S@QBP8x~_Jvg(3wh*zF{dEL1*PnIfR*g+TDWL>wGIoL09`9`3;MS5uMLeT7U8`7#-Z!mJSO z!o)%6%~gB4JyuD{=~8A}=46U7ex|$%H!~I|-^37PyiUG_Sj^fI-ifW+-YmW-|2KNQ zOmAHDLV5Zm;2pEj^p9ETb1gBy;j6@05WBinQ1N&#zXy2){`b3xVZ&#N+Z*)sIt9F2 ze@vgFl~h++R>(y&^oD{nG|Pz}fLZP^l~(=0(>S?qI{0?zH$pGppYSw}btAZCvG7Js zj;_bLuiHH-hxdYK!ZX=F?`TK`i*A`b&NZKbZegLVt2ZKCg|B)pdQwGIQ)j21p0SBT z;>=UCgID%m*?#rm5AOeyLw|VagT0BqhZ3Pf8tPRpI+sdO$)z%r)5leR z_(QB*q8W+8#(77Ry6K*t^Hz@aENYwXC%1N*yiJS(e<|1%w7hCTka0Mq1%{WoaYR7m zvEz6Mat?e53O`)5)X^~yZ?i96>hi==cQg;C45e{NSnz+@J`Vq9Z0o?xF*2KN;g|(6 zE61#YCrcmDVL~|2Xos}uXd>1;I+#%PWV-{t|4uCQv&c3uR{F;<$O_gX@ zY|jKn8H_ZnJE>V91Da!vJgaGRKS*Mwr=#KMDG1Zzq=Bjl5+A+H_&$M`2_}TjY6KIU z#uW`AfL0b}ku}|+VQ8@_21*Ju4U|-&3~Yn%;m4p{ld%JS3-4l^4Msr>2N#wEh3q{G z*yztSddR<^=|sdwg&txpgkz5~48Z73v#GplqI1%Ee*g5QIZyLVGu|nt&PvNOO?(r? zxy45iF&JiPq#bPplT}<3q<5Ty^rKR#@HWTZcPvkV44hG(GyRtNc}WJBWRV}*YRr^v~x4lw4RWLR1#<5Gs=7J5=&%OPH zH@^V36Uar?KEaeI++Q+*A=|^xM!HX)NLwWe?9hRBs zO{xzu&B=^1)Y%Jfn$S7R7OK|H-9RO)eYdUj#AFS)mWVfTC!R=<#+a0rMW2x(Pp%1{ z+eQIoGoUSp{?zEDe5Z})XVBCKO-4-evJ_jV&83bE>2^hUDTl%K%X#uFswu;vyy>#Q z1!?9$-~~Zu_Y#vnR-O}fLcsQ2z-$>*OFpK9LmDJT1N_AdUm8xj+pZVXOxMp9G+l0o zq3zbYlLc^+aQ8=yF8))4t}GjLay~V=fC3PXv)WB^2`jf7GQ0o!=WF+_D-Cn2?nxHh zlknX0|4zHRexY`gD8`EICc)|7L%Zcd0$Lq9{f_vN8 z+EJ{w1FJ~~ngjC!=V@Z-NK`H%6`mz@;#No=_lTA7J$zE8;Oi(lO8i_bBMLIr!pKzd zZxp|L|20p`Sodv<)9SiiWVcq`&d&&z@=c!n$<0%nr#C0uEeT7@C%3Q(dRy5K#FvA2 zTP|7d&cr&jqd(z;wA_q&axX4M^LF|{RU-$`X2Ta5L(ULR(!3Rbh@c#}aD0HeE*%~~ z4$w9iUBe1b_44SbYmRN=Wr~Od+Cf)EK~y?H4h%#{44KhSz-=e-J;qjL3ro5)@F)Um19-zzG?;mDi@xkDZcBpb17=ahE%4}3f?<({6p`Kjl1+o&sU&&4*2yWRn`=mMjl%YuVwPQ&<`Z{|@PbjRSKb<{Hq z)$oX)>*R?9BEd+0q#zQC6h?|7#gURoX`~F#%Htj!ZY$z$gq5#bBUO>=zYP!_B#K z~r5f^WK?x$1d0pt_5q62K^U1 z{2f6lZ6#aLvP`^MVK;_kMCJbn!!72ALIvT03Z1<+=B{lE_ukjHcVF)w@E3P}A!e?T zM`JcFftZe?GWAew-4`+m1)$mMcA?tkD1;10nrnBpqqKD`kF8$!#AvLn{mwkZmg(;w zjTH!T1%pQrEI_HSg`pF4ZhLGyt!c2$HaHMD$Mv8S+)gk&NxXifoijmRe`N6NNPAYY zSVky=HIr*YI2wQg`o(;qNQzAeE8@23~H18VLLtyeUR<3I{FUi zEo!+WzMhqMdn}(4X*8Cm_V)HBFh+10%D4jt?E{fWvs!FR1}WxP)29;kRugC}VW_VX zdvJTKo=VL6Ho!+x^?Esi%wiYJldUvRvc?T^G>a*6M?eyD;5g~cN99xW#sR%vsDZ+%szZH~_HyrPxA5E=<&S82nbO0~ z$f$ApCD4)~R86MfBbr*r5y9ccXR54)p=(U8U=fU5*MbLQsk9|5rAr>u>fO@E;B45I zh%Ixys(C6h-7)>#)%*Xr{@*_W2MfS;wt4~s;nYmDNYrwx@B@&SHqNoWqe>V_@k=o@ja7~mwOWpn<4Mlu=A=n z*>I5Ti3Q2nW$=}*m(SfYn<~QJC`o!+|DtKtZ}$E6)5RxCJbVR3(Y>xYiE zr2>=;mRn)ztNSkQOH{3!3#}hJ2$KvjkWz6UD!f=xm8jX7tk_9bE8u~n3Jj!_qbmjH zF^*Ln38oyYQ;v$1qktoUl&d%)7&tXE2WRfSQk!t>1hXjRXkV%hFeR+s1P1}zCbmsJ zH0Lg#dMM$pO;~C_x&4p?pfIWEQhsNx<6Q@WqYCPTZZ?@Tr0pf#0BOrx5oycQ<$i#e zX{Z>ZZKO$|qgkLy{~TzWA{%?=0a<8p=m#xpM%QmSO@k1kc?kEAeg~~ooE&_ z6f(I{Ba9^|gw~UySl*}QV1;Bw8D1<-wDnMl!Y=@k7jQQu3j-X`-5(r;%pM6@pjfWO z;MoD`4 zm3KnAkObG&iY*IdWbR5kj4XjRpg5V^K(QVQST>W-bvW%1Lzvc$v`486t4jz=L3AX~ zJl)BEO$AWUMvKOm5y8&ZZVJ^;cg__wj~!UFLqNFvt^G66-|3pK-XW+{FoZ-HlNB)PY3nU2rlS+CAP4(?$t@7zg>Lwn_6m z#6yZJCOxTOXwsf2-kR`jqe3AYKj&*ofP3H$j2#f9k({f|@1mBOtBroFQ|Yye`&E5q z*XVy(Q_xg#VNHRjBW+E=@o_Amtq;bv$BSK+^o5X#EPOY z6X@7u9UuaSn2};_L5DL<6&+1Zdr6a9hL#Pck1}28hsU~lAmZ`R29pP5r3b=JLeQDC z=V?{Zl8g03nP-`HLjM1?WDwXMgT)gVB%qno-k}2QiS6MoyvtDEWvI{!iPHk<9Rc3i zO9)V6VKYNF_#n4pN8p*-E3ZNnw3PiAMQqy9Fb`=8GP_;mL@Db!J7$v8&Srpp^UokB6y5Q-}oi-gr7rE^B_ou*t&`FE7b4C=@l zm-T-HT2oH6M<=*mFVK#4OdwBktZ$x4n}b;_&L7<7+ybhrk+>|LH^he!nu0v$NB zoY3b6RJvIMI?5Kbpf141Sy(2KQlFBQX>$OESfKw+dG*~7(@Z8CJUOQp8L-+OR<+7` z=qc*Zyrtbasl_(Y(~I?;+6SKw^6BAz*4(3tM8zu2?1n9PuQQiGHu%5j0rRRK1bh|7 zgCO0>Aw1#Wc^XxMYo&A?JgG@SO`C39h22*v!g6n5>+r_!wa%Y(^EV zt{K!p{tAK?bJ{i_BsyQGXXg=Qz%T9Xhn^pm!)9yb4Va%31j%NkWZc?avfwIDy2__| z=3I4Soe+Dv=5C+7Yr5|3wl~`n1-hDuaoCbdA;af8C=c*)5e*6u$Ol2#_1RPHv^468 zTcHE)f%dL6>NT8PG*TO^j@qG*o`=$`qdpKM{gCy63=pQ>Kf|;O#)G*gXS4v%b4*8_ z91W_MbiOw3&q?SDs*@XE4aNf~i&~j=5ziZM0$Go7`y%O6kV(GJXcf)~zVk=o9e7V27Mv8?9zZYk6`RA~ofy}68ZP>qpDBzs9qJ7GwB zgx?C$Ue*v~ML=FLSoar#;L!cmjC9Grf)A$isfer>_fzFU!-Innydt#;&Fgd82Nf&=Df7koI_gZ~7 zyk_G0QYF56J8Y`m0x4wdSCE)uvQufw0csOOkBQO5G^eub75H4q%>Lz4Z>=q9sUn%x z$-9;+V6ybfFTD7|YX#(yE@`h@uS{$>``(hQ2f|jk7An!wlKP9j#sDuwT?^UoaGmLPZ)N5Xqe3=8pjs~2bge% zHJoh=w(-I~d`dnE`(Ie^hmH>u-Mu}09|o`dJg7?ySsC{3NPwC~sR{sr;`TAONd9|t zJfsC^YypF1F#eceNnp$zh+sbRXXJbF>MsdkEl4eZb0wfOb|n@n%{(}j}K^^>XfwC)Ev+K&a4_fAG`VwJ~^baL0hwdD{ zv{>R#TK-i;zD)j~aRvYuxDkwK`UPEB$LVw$58)orY|r=?v5n_J#MAr|{KIFy5qA+g zzqjDM1sZ$6^{5n-uMG~Jz0bIfBX*pj-=&(M7Ynpvs0-^c8SzpTtfS#015Do=*6cwm zv^}Ef2}>bd8u-_1plU~F3QfVFkNqxWur_GtU@0J??~!jS;~1UL)Ri&Ywf%<1qVDGk zO@nB3i zgpBhE3;p7e!E3Fa&X0oyYqtI^s2VU|Q91R0i60FS0w3>!^Z;K`WUDuB#SYg9rMsa$tX zZTWKm6P7E67OmerjliYJu?@%!H!7AUmjbv_9Uxf~EVk+AgJV{GxGfaz3M}txQ#fhu44Ij0#kk%>HeNpu(t%b zpxOx8q|l2mq})(|o7f32Vy~Q?ui2U?*qZQcUGmwSyWk#e$xOdZt>SmbJ^Z`q4gAE4 z=Su;%^C^i_QDhOxtrP)Uw6bQ&&QUmGt66e#)MfGof8yq7g^4WAz;I2&lHEc=uol*} z^!Uy{KVOnzUBXB zz!Fm4QQs&C3ppo)MqH3g_*wveLHy-|uuuS&n`KC%LvfdB((=TgfW%N3FU&<^Kn?SA z)i7T8j)Dl{7+RQ%2r*iO=i1Q~a8NEdssQ068s>aC-s?8XbCDyM=t5)?*Jv@y&q0%!l>{d>p+#fHFm#a9KT2u5>c`o>X7*YOoomvn5H+PNH(rDco z4zE}zU#>c-vqdd~M_sO7uGed!#!$-&`sQTb@ZSI$dsqB2pb>G!ivSDv>*jwNIG|3y zv0{Ay31fZkgaLBD1X$;Q!$_mrdWhKlZ}HOTRJ;W3@+hsdj8-Baoqw_}IUnRbWkoQ) zidX889|n=}XQct0yH;!$jk=P5BKS(f%PZD{MjGmo1Fq6=Dqf12wwIv>b;AGY@XEb^ z`1t$&*EK&9FxeSa`z7}*GtB$Z+%1nl{+nlhMjw#usouvci0Ft@`=et*l(!){J(mBP{D%IcM(EpRs}s|H>~o zYfJPVU2)bL(qPth=7wCZ5u=y=kG?yUu2_q#-ZRu8_l}uQ23;pD=O+QVRt&qYEf zW5L|-;-Pp6?;Do$-$W`Z?ucn#t$^Pb>4k}U1VR_ zX{)$Bg@_eV?EGVBvvo!MxYW=>o4g6;l}kWJb4SWXh^WRFzFZD7LDj>Bk&29`mHgBd zsmgd-O;2;TGhS`@nnPXl_79JSg*EkoVd%!QWgj8PLo|OwIf^tv zAD${%*&&7uWgnPRiYQ`&277&q3INwKR;nD*nT6D^F|+!cTVnMp85T$REZ!45cZ>*0 zbv}ak%3%OA4Fkf}biO7ILd>o4>K=n2c+(T)%4h(_E@GaY#y5_giok!&4EB61po+68 zPq)jrsW2;xqW7_&L#z%7iLQQZ=y-dU%md{nb^Yz>pzs=_%R}_1?aCuq1E5B?!7Ko| zxP)n^SXm|%RQ?_87ql>8Kjwf1AhHwGBHxb|#+*zAqX$Bh!444d-4be>ArwQjBurLm zxepOdw*=r?Nwt`AZT{8$^#LeVFr%atf~N?2d@AjfsrB&Vn6|Py2%tk6=V|jZa98yY2TUaahEB->Fm=6G>ZUv2 z-uLFdnWMkaJG<_~`c28YUPY(8DlExQ(qJjc99)`5jb^T6%qk|Lg|tv&cE$Tv+Cu*L zggQhSTNq<%lrTNE1r-pcCpsxc0?9J-zzKpvzKnU``*53fjSM_92!Rxgb7nRP!Wj(} z%#nS)`}+EOIy(FAd*G4&&vo>r12nVy#X2ISTs}u-Qj_If6wt@@BX0+MU=)p?sgo}4kDNkX{o_-ZGc`Y)Sku~kW2gR+Q zQ=pKiL`%~ayo#p1+6s*1(X<=&);?LNy~}7#Uhjcu0~$%2&dzRn@#O^CA`f^Ps`Q3v2O6L6&oXvzx8go?G*Naw;zzeKcCz_H3|yxb}-8~kKH?2 zmZ;ne0;bhP?C;6)c}pd{-HvsEJUVtDRZ<4aM5K&cj^9*4Im~|N*N)u_#?P|pp*(9B z>}`;e*{~1;eZzgpJ-&}pLm6)Jp_lKz?k~Ghzv)WwyG8F8U2!JsI})%uUQm%JXikMnUp;W~ z!1a=KsfvbF#p>Cb+5NLSt~>|V!pVw`R7EQuFFUQJWw*`t!XjuLm)0(ntV))wLIVmL zr-v3A?@2b^b2a$=qVE;WHSWC@+6UkjmWeWJS15DYZlMBgD9~rxy6xNN-aEIjWp8rJ zUQ{blyJ0S{F%>LJ1RGNUHvDouv^rH%18eKdj&~(W?n;$3;tA?iScH0k>Yr~atXc>) zB|}Z9R}c(!GSUi$j$Pi+*ahp)ByJ{bWw0r%udln^`scXd?d}@?jgeaPH-EnjOID&JP34i-FLq?u+iJ&iO!i(O;7A z*Jspzdh5)SS02GAq#9fB70)kFW7s)&&ThT(it=`2&H_c|M zyp=02KnY{>fd-|WT9#Bv%S>moWX)`AvSi1VXtHFt)?HKxdi}Q9fkL2y^_hKk&Cq8k z+yI1R=m3mtpa`4NrFYaLOg)^d9_VMPgf?&jrj47vz3shi3mdwU8@d37MAe#Wp0$hF zUA*_hz-qON_oC7N7+q{^prLj1frIMQ?fc3umP492lknF}4<#D6q?%j4X}fHjbWiP_ z1L%Wg*Mf~R+ZI;!%&+QMY+kp}+?j0dRNgKRIv6IOq8sKJtkNnWMfIm;tk__sq;JD?s>B(S<*VbPaQ-XryWzVnc~^fS@)GK zSJ!=i^Y=DiZT_GpQF>tBb1>Dq>YJ-BuL2aOo=SR}Qmfi1I&{s`yyV6gn5V9Nd)>Ta zJv}MD?hcWS{rdL#HTNXiJFb=_YWH9CFV?RW_71OZOVl33eYj!1aZ93M>lJ&V>YnlY zlycal6iax)J@bXL6K8?u%{I&z@1FDT9=E6ln~FEi_RaQOsYw*>n0M@i!vWUC>-);x zSoT9DV+XI>3l<%oOB*k4oPHpY-#lZU>H6lr%ll?e%(ZnUR&{}In{;%KTTPD`=)!AOwuar_2P=L2fqC9iw}=K^wN{ljWGRy$E_07ES(l)a+X0Yamj7-Krho~ zwS97{8uefq`0J&BYq7!L{suuwbXY#g&^A}lbdsaSm1|Dk_ zi-)Xb3w+ylf=ia2XkwI_85TIlRYYY9))Nk0fCvP`0;I)>4R|sNEzX3cTu6K1opxD7 zOjz}K)ih{&REn4$g&X5XVS?dNOHQc`cf|6N^eC*bzhrvUHfWD{B3`%zwyK1YN8v3B zZ=4YaLRZ9z&>e9h^qe!d_~h^4ivzz6A`!!-^#Q=^v(C_v~Uo5+TQt3Q);+t?FJV3@vh5#$Y4?H0VPKQiC=hw2FwC z@f6a)MzUh=jH;!%wBxEBId$p;wFj<`(G2!5PUBs;hE}_qok<)SgcP%uS*e(!Nu|9qYo2RL4mDOJe`*4J@pF|P)L1? zZDmu>vsD5aP2&$}7UzTpA>@rnV^s5itU(3FjR#rfa|mAR&XLnWjB+lRBuJ5o&Z1l> zWKG4#A*H8OM;n4oz&fb1lsXV!O zKZ=#>)XAY3Q@z4F#O-Q5!7g|&x;V3QQ7;ZbXo7JKgyAHD;CF*i?5M4x-IWfepq!suXYeXgM z^9*Y=b_bZY#Y~}=a+Q9@eB+ObT_G$C1JP9bIcFHAg_vAn*cd+nr@H7UuBEOItE$PV zZdJAU)A}Vn7FDRt#t6v}Rk^+HvOBGEx;vO>O;e7K*6D{TN=fgp@ss78PxV}JA+ zv5wI3Tui3Vbg(NtvW8p5>^8cprP-ccSFQQ%+mu#y?5V8+NIjS?JZMfsaZK?-8^(+! zDg*5|{EoJNkcUa#Tbq1hTtOj%$$w1!VJgv9Y-Yk}={*$dpkOxz+bLjz;ZBMXSx1nE zn9B22y6vQ(3qkKu+OE}$m@H;OamZa!hLE8(PChM3IK~?fC^0{f9c2%H9KWM1Ff2=3P}826;qK+`~=xmnJQJHC=4V3l73xTUDU5_{yyUL)rs97R@hp;GI!&Y51DXU~3 z3^-+e9YR@IPXcjA))Q!TWj)D{=j%_-nOX|qiSQR6QN&r1^Z%G zwh|RFnhqSqvVkf0Ir-Gtb7X3ORQyco(*Ev)pX+<1|6q4tM^{H*NB@H`5pEUDRzA7Gzlta&}l?RDKIDZRO+y)V-Xd%#;3^cwqGPCzLUYHMT{;071 zw%hJ>-3(J_%0SA?IIZ@Ue4Y^4M;+A%$wU%@ThsX zGWVMogOHnMuU+8b8r(%0-L+!TVp;24=DkpAE}nE=t_1?Dp}bsDjd*I5`&638E^Klr zRYH_KFPH2hp5|+i(IR-7LsAP*i?k$K1W&=b$-eNkEc+Rx2l8^MBjRb*ooU}u>O~qT zy|G=iGyum{8KaEu(h8y>TBK7*Nc$0(_$Gg(%E^tHu1&GLruLqefY|l+;A3eA#DAGR znRcm60SN8$?wPey{+!E(YKVu|r9Z+a#K%aTPZ2%V#_#`*XR!)>{L=XW{7oPzSO}SA zcZG)WZzCCw%r+dE$9I6XPGs(hu9Vk*;o*sg6W(wt^g!alhZ7HcKJj@_RUb3D%DnD} z+si=8<0JKK`Z+jpkbd?|>`|U`OnCrrno2^>0!k-6*gvtKe!3^R>1W>r2w1)gdnfkN zkCH?w6%Usi3P?n`K(*6LlUu!L^0^6r7)Hd1KRm6bF#Kj}eCJfBk#b=W>RDgiJAsqH zlwgZA;6hb2oUilLv**ICbl?_98=|;miCkKY; z;C^xt6a)GwhO>5{Ih=i1FlNt*b8l#0tJMSA?3SYdLfWbF`lIsu06#Pq!uXN@8-lcX zc<}km757y(DE6x7_jnZbk!X8&-@)ukfni!h0eC5=*dC}n}Pm`0!Up;y8FSOe4}@{TpIf#I=u@$PB1#&>tZ?;40oU9MT2mCvtk{ zQfsL2t=kNoe8Nu1tmCiYmoXnkqb@7v(s?Zja^N45QJE_8tq4>nJI^UU^Zb(_xbne3XXhhN(7Y`kjuzW00Hxx0GjJiWxN zQ0%4uv$Y$f%Xz{|-)=xouBJ*62oH-Yc@U2k<*w3yrSI3#_c2b$*7vfBYEV+~hVK%r zd?Strw0fA;)kDE-k;P=9jgm)5FCr@uSoIzN0oJ(LQwg~A-ctKQf;0tMbRM4~_)p+h zj#0~~d3X^>L?*-q4@0IA(#y56d+BLIju6W&t z4xs^i)Yv>^63zQvM2uKa&ZSR3CSd?V&aOi-$qy_97HTCPrY>L}Y^FdRps;iTE7IZ_ zjw3YK`O1ZZ7|f(;4op;#;W*+_^BT(T#Bj#c>*bLPb2l1_FaIwD)G-POr(!gnxDbYPIqgDIt&eA0tKfo=F`PD=-W&1?7u=OkjT!Ie_t%)Mud2sq(g4 zCbu&m7D~D%8{m9)GIq^ha~+Chk?HOa1Fb&_RDyQ_bhn}g=x%A%LP>kFr2XBI+3t6~ zFkf=lN0pm@;s$H_LhVDj?J9s{3&lW05c-{-&5;-=SLyc2aYXAo7ywW?r+^vGjQVj#yvep8lumzX%%B-$sGh#~=yS3eK zEx1*0M=alB-LUNOT1AujqoQlwE1$XeK!w40$LXsJ&!EHm1$srtv7`9YE(ODrmg9JI zC#nB94*r8yC~Ly~;+@O=Hzd4;J!Sl};h!CUAoKGd#rW@C=R1D!wTsek*&ek=Twn#b znHAt+R)CjS0q1OB0#LsVkV9wQK=#4DD@bz@CfDcS0;tD5g(Qp3nP_y3!hxQL9hquBRqD>PR^p|Ls{;w2J*9r>KWs2!%Y8`*xMKAaO-bpbYAiF8X zcs6!iQ^qz-!i1q*N2nY=~t&3B_{^-N^0Xv2+?>Qq@3 z9$+=25dTXmY1$W;r;5tyRateay!vBUQuQsF5ZpAQC`D>*-3F<}DRUQc-|7U!toh7c z$lzh5rLRYRm4*TSOh?HEyLy=s!Jo9e9<#}~qn*tu;uw)gX7^}bKT?ZpM2+M`{9ve) zKFJq3)-t%r%fp>TduPX;w%4(NPwmVdcjFy|pu`0;KBj)68Sn*Crl}u`ta9hWown=2 z1dyp8M;Yav4R_iZ943KG{Un*k7t8~h`n7X-+=V-3B?2dZIp43W;B$rt_c7Fzu~GbHUt>-lnA+pG1a}(9B`#p7YSi$nW2hJo+H=YY zE$j2VgcCr!)CCzUIq?D`5wM9#GLntG(CV%*ipUSH!l*KwYK4rtmIWSY!M!=IZ8!9V zJCBg-wvZ81tqNGnc>EDQt|H3sV)ACJYqWUAveq@NMz2s;(}6@42!J0ONaUreYR9|I z-v{(05E^#_Bde~P-uU+2Z{9uIHCMHbUIC{WcQaO$fkV@r=T3PPk(D|{XFx#D(5CMf z8HPTE`%YzjxuYY@u^($t$nFSYmIE6QHh8EXRF*WhRS>K6&HfkbjR&%f@rp6PgsTo= zqyE9c5#2hk`caY|U~~dlG9su0j=oyme`Xi=0cAS^C_u@c_XOI)WTFVl`zZK2US;$) zEg`YO%z3R;nio#Zom$?Y^rp*mdto}bC=1Pp9+?z@+)YMEhkR7%J;_S<~eT`!|8 zx48UvbpV9&yODS7zNI6QsUS3V?=4H6wfxq8$zu&IR|Kpff!|Z*j^aU;1ud-1HmN}MaR~@wuLqLM03}EY8xDLndN${WvO+BZLaViE3a5mdYW{4C~1WZeV zzwlOFRNhGY)1QW$Ni-y@c4VcQp#fnn((M6SP10LJ%LhVLEa`KUOm$&}2BeM*3XEJ! zl2J*_)PYg2DBMfSVMMS#64s=>1YN+S<6gi& z*5H-=&yfdMEM?FOjZ&e2t6?(_DB?pJ-|Iio3?t-b%#<>0slVbE%eIE(A%(VV--DZ9 zp7zJIoQ(5?M%JS>!9dnS^^7M9BQZ}o8|15J0|AXQsJ8s80Eq&DF#!Qa-kWp?d?pp{ zLjnwON(2?|TBvKL@0EwA`ldH76gDSAU5dZGqEbn|fG_2yu!VAcEJ-DoQOOE@Z7$R` z+xP7!-+OXC)HUbtN;tX%@M#>V7vaJ@Cd8g;IA7()x;1hqs7^SiGTF|EzeV4c#oKn-q3Vs39m_0-54 zFI;+I=JZ_orduY-*(B&aWc?Uq&1vh0p2nMIJZ2z3L#PL9Wg~rlMfwa;GiCZd+g##& zqQ`mrqu>fvfp!_%NCMbMa4u^d+Xn}R)`nXSi?v%?_E@drle{puxPEc!$x)QAT{QP_ zNy~c?=GYbBGdyB>4Q4`K%6rrb!iXCZkd}8i57~=`Or-rK3&;;_ zW@RVd9zNUynK?)U>ZqHjq7Whb%)Ln@K}ozdLG-N|NT|wy(#WWXTLh&Du+G?&beOKV zJ*`;HJ9n)08?^&Oiw&Gtwv5;hpFJ3LX-|go867v%ZbK^>5ADI$M!TB)FA->{KjO56 ziDm3xVYbp95|<`2HaFbijkw}w+)*yRbh#Xyy_7T{qg!(M&Q|9U@@pi8+zdt}LJhj@D+fW;d~d=})z@9u&CB zWr?Yf*i&c|VX5?V9!6Ifcj}g+Y}oJOQLMgGwa}>{Ee599iGh9z(T1joNR{S$mq1 z+ySkKe0B#IO&&d>$&ZxP^s`TEyU{fki-jGZeRzq{-GT@3x{LbPCq+5%Ri2jP_# zJbi7GiFlR{kxK3z3b(Xc%5Nb^lN&v(p5Oxv3tikXP*tDFNSLvhYAoS!Hy;}X% z>O0;nJ2=VtgU~qi1s1&3NpJO>w+3Hyd&hUBHg6s8B8ip-PYaY+XPU2hHh`J!DHB+( zw%nr;fR@-EXmwI;E5Dvcq5`p}v>i{e+(4)YYcmMangONBrs0TW21~eFQO}<`eImj> zB6Lv$%`}0wtM)Tq2_nn$s8*CJtn^9*6^@k|dWCx0pq#ymdWXgcs3{&(e%u4plyYg?WEQr{|J4+GW#5$2KI(A-2#xiNR? za@o&aI@=+JBQD#D-}w1!YE^3b^R>&y5`O&U7JKYZv@X`|d_WI~9dzNCPihhZx70eB zCC`kMKOQw&F^172gxN6q1nC7>FwAuik;(^Wi5QJ|vnabvid`VlXoVeS9U>inRrE~^ zPX!f6ACv~e9RNVG@*Q}5_(RnEG@ZrRvfy6*0Q81YB3@Z6nNPl%pqTt?y=ibHq zqJ{jXWPa0(b1r{pOWa3|BdiOJBf;%) z3(3GG9aU4-IY$*YrWe>APm-6A%wWvcW_Y@rfSUE*{WAy_y;ND6iNa|2iu4OQ?DL8L zmJ4+yMmEte@Fav($I6E(=b$OyG6P&8`N1(f2FZf#qAFJnU(wGQvd zNaavV)CH7|X_%^9N}^I1Y>F>7uxLkZahvYd@f{^I{IL1q*xNd48zxVa_7Uye15FRw zqjAA&j`eAcSu37VNVFHVhNF%Z(pU{?oGYY(%W$n6*O2MuK-~Oda3b(D@Z0PQ+Am72 zAnWRQ(HeJ51R`d_C*w}sIdR9%#^WyBxo~HrcOx`F`N}EG4IWM>Gqc#?^s02 zQTIrxlF5`ytXnrNtNVsgTd~OmLy$FE?pigb|3(~YJD#rBpQ^E^iAa}qMVt{$`z7w~ z*F@DL7W$`t8Bnq0>?>#st7%3(BdgTHAqHT{`8CZ9*b478v&Rvi3Na#&#w`&K_l70n zrQbZ$$ZGXlaGVZ*LPJvALW>mihLoNh^|N6?QT>i*_g z^CPC`B{qM?d0_x8IFJv5hKqKPjxcPH9eoB0(JU-|6kfD7u8`2vBt!{2Oe-PUtwJM&Q3Dk(IiNw}IYHsaBYu+%oWB*GS`2nx^4Q^G5Gi>n5u@gHKq}ihF&kj912t#P%M!^mU^%D<(d$RjGz*mqP zLC3pOuU!#PZ>1_gChas7O;NwW;V8+ZF)*pwqO18V#kdC^QOB^>JfpNa&OroT{xn>c zgT^}qJQY>VY#4R<^FvUOY{kfE70HDj{ou(Al}^-3rBY|G9l0jW5S}yYtg94k;#hKp z4V_B0g|A$erHHekzAPSKhbCu1WkVU6>@*M>1}$U7E9Xg}*v5*=A`u`Z1}OCRAJ;mb z22nJ;M!br)3q<|#uyKr0l0E=Y5h9FY97awb#du`=g&;28D8p5+k_vPk-c%GQO#n6& zQK^-!kQ&q+v+$tJD9b=W7Nuv@TkBN}Wx*0Q0Fm_J$>A`0(|wF|b=n|Y(*6Ycpi^-J zrVSXa4@5slPanzd5x(y~aw>8TglE7xyFcKC=2-^*iL7qmjQa4?Eh=i?G*nq{4_V=2 zu0wQtm>9kQ_UU1G3!?!FY+CKfsH%M-aB%~xn;N_w3!?U!6&5>1=~q<}7Q!~+Rt8=x z16wDk>srt2*yAYsP8PjL@aK*jj0je}HdbWl#tD&9>ib-U!Ami#Q0p*W`NQisaoSGm zK{1ta_8rD@`#cslfN1FGsfeOxk+$^q+}jyz<_hW@_>)ler?jd8Oqw|~(b{EF)#;Vp z2w9#ZgO_W@e#S&Tl{yT}U)eN`8{dRR%2x=KAhNU~9fX!BxqJqR1wub2IC@MHuF&_F zJ4wOc0wx3$jN29g~h_69Kyx{5?uT z%)*wkv|9lYiSwqN!buVt2c=`85R<=`Vh1RAfPx+bY4fwEo)tdoNTwe72A>z(p}d`1 zbr%IYDA+?;ws0Ccb{&(kI;EY*G#hs_^q%>i->2k1p&B(j~h@-R%h z^pTMc<(eb%aVqT%D(HR+wxI^{U0e;wiO6i-Mriyh&^b@39-vGQQo!9pcr^`C<8=@B z64~2R5dirQQS39+C(Fo*KDm8ZGI@#@+~K4eCsDZ`5@~^L@O391Og)OP2HMA9FOIC>*@FptWy;~X;GS?# zLJPJ!W%t87cB*0ZxFzAONjhp%_CUg3k!oB+4{DQ+I^{t*gb&9bg=@NxU~ufdiTkFy zrW>Ub6Wl*dO^Vt=zDZ51uX*d6Aoy-7nFXjdF)=2rVwA?bQwKqM|%88%TtKF zO8#a*L;%=u41#ZHDc9a$5WzJ#^iq$4vIly|)Hzw#FdPpb*LD>gf!13LBnpGRl$Pcl zz?&`--5m(whDS_?K1>9nOw=~E&~g$+l81mJ=?UmyfRV%lh%>`55p3j$qZ4@f?0)(* zoi|3pa8!uX5RhY45<@}cF&cB?!usoQ^9x5|3L7QEr%xV%$_sEqy)xNi$ znD-N($Xm4Fsk!EZ7ua8S7x$kLC?qIS$tQXx@Y=+NzI95GB++q^qxxUbJr` z@-&V4tP6S#=1dp8!!PJ#a>5j`(aByd`DuVE`%-I6q7QHxZOQ%Zh@D6nD9=IVjT#J- zL@Nx0GV2KO%=t3RE9=vc7|Xs;hEshOw`w)i$W!V&gRlX}cBmnoFz13!#7Q*-w0$EQ zfi9jGaYbD3y4A%KJS5`%c?Q0u&r0PWOln(13%GMuY6*U+S*e#o#@1`nd*WCXlde=_0psN$Mc`m41Y(8H`r&hila8MDA9)$j z3tn*<5O$zkw3uYz_%y#Z(3(y?sp)@#yl0fw1W_0Zg1FQ%rbulTWk_v8W{8n$qIm-$ zcn?|9($NfRKJmF@#Y7h|p#3DweD+y+mkT>Ev+;%L@6tW9&%M?=-qjZ?u5t zp$cDIqo!Hqe}mC1HhmUen8Q<`?5dPYRNMQ-ktgk=2J3!mV-=YI$b9P~DA0ihm^QDg zX82E)K3cVDcHldu^Q$^9c1#|f+BjV}A8Pu;;0GK22$o?@LFkqv*%E9s7mx2}9zjMw z)7qACmYc`}jBt_~g-$0)CmY)9F}9b_P-f9yYNh-k0%cnejgx=?UNLvXMOV9c-rEY{{!^|Eo<@^ z1$6Rckq&tl?`1kf>SIzMMek8YJ2xcl7YhTsR2&#SI>?QYQ%I4PM$#5qBjj)4E=n80 zVVXYbW_XZFrr=ZB4CfF*cij$~ipwxkuk4>Mg-Pr^WB2{YUi1@-%~^aqWN{Y57o?}? zBM8ZMe&qm6a+6mN)z*Q&qEFS0nTOdlQa(Q|{7) zrIZH}DVje*FmuTdQ=?y^;Pce-LLv)21`xG{JBH6a5snK74Uf>fa>dG&crC0WYAI-@ z8W?Wl)M-S6&-jF%h(0FYKo#U;6#G+((IANVGAjUqoTyeZ=`_ZiMCPC>JRw+r8}JZA zi!(O~G8w1nP|0>rv@tPD)S3uNPduTdmt&My>T4+x+UUJKJ$*fNK|h@o)cbnz`SbL7 z`iT5j)FuWM4`GU-b^3eO&yG{da!SeWIoW}|=BV@2fT$qDmm2y6SeZErz*8>lUMh?~ z_Gi>vqLs3U_mb}ldiQBjR-vN3Psk4uP!CZ?qZ82|Q<>a~PI|A^jh~^tdfoZ-$M0XK zJTD+Nv> z0M4&#ZP0t-8Q37|KX#h*x|VV&V4?OZ&5M zdD%jVXiEkC2a0|pP-Kb9v^}M50=t)K8Ig&1DwZsoRx)9T!nXq$rJzVr!0Q$vc493f zWKJ$Xkah_hw4ixMg?boaZ*ma@#q{1LW}2{f@O$)_gm>jHQ*0kKgpEUxT?ly_-SRS4 zNHID#$pr|~mTnv|S9$knG$4DOQu3Xf5;De6S`V}FyRpV&-N-G4T@ zerO8*(B$U-z8{(b{2vcJKQ!h4rD^q_ni~Gxv?^&@^|8YwH789?ALrSnypK&31guit zvI)Ubz9~?&;IB#gYsNgOP*cJLixSqNyo8B;3bf#Uv10vH_d><`WX1Z~^>Y=Q6Q)ua z-S8HCW$&1Cv8WbSf=*mKF};OVJ@+hZ>`HFznk(u~mPo5$c1wg=Wd%2U1~PD z3l>~uNmtpJeJRf(S#JBhQuCDgwh2E=wI*+fY+g8F9o$19{=*^$LOdjMSizLtopSj| zThHZNu6|0AY)kNJ+p;>E?MzQ6fAi6r5K!PG;aDRFRi=XZkFmNTW_22 zbIaqC*50bMNKH$=DyeSK+O}-P@2%ZZsnoEvbx4xBrA2FC87yPOZhhXoPAa_hl;o4D zZq+&v6m5~pJ|2N{>mrH7;QfNtTl3JIa zMHBtYwVS27Wm)ndLDecLco;C9HD$1p?nnKd=yzK zYm?Rhs7q%0Ev*#4?K_w0e(6c6!y?&IZa9jj2$WoxtQ5f@2^KEdIqEQlN|u})b(u;k zmfReLhl|oBFGqc*qOv7FM+2r%-BOUF`6h30seq#)Q+f4LAxDc$s6sJEOHBENOQjqY z@S*7PUWY@f__%0~S<1(7LAdlR>Qc54s7nUwep>0b7*~r24{+|`x>SrbG}tSE%sP#x6H^smUk1AvFN(ReI3qYTBg^-0$8f7 z;s?IXllM=vL#dfnbKy-dKX=Wy85W?dHcXS^(jT~XP6nqs-st&y&-8O|pLz4lZ24T% zj+fV6bM3tCwt4f$oFC`kpC^TGnmByQVhWaAa!#+FD_J`iSU2YV*j6t!-83OsdP>5( zg+NU*Q1jDrAKFt!?I~TcJ!mA^&ME$Bp_`h39B4w=~AvjFd5q^+42yD3q$yr3@Dh!SmXyp&*44oq9uw^RRhdV0daXZPDrZ~TjzkqjYWJL+a6y&aqr!Un;StAxPBbCw}b7iC~j1uc5~ZZdHY)8b~gNuTlbqy*Yi7_ zxSDvb-)`tH;i~6ug`Ewz5w5KTanSBeG=eq1+w8b^{AM>usuTaf`7W1wqnm!*3H|0j zl=Sx`=yZZO!A~Q8(g^Dv-sC5p?q)Ms9_}sF-gxus$~)h>S$pex?Z%roS8m??c5n3h zTQ|RX?fN%*bG5ZNx)-!-fWm1d0D?c^YHwJ+0@mqw+J3to;pd>SBENMz!JBa$#n*3M zU0&=Bcev`_P#kQ=y~%Dn@z;XdhM#QohSV`^hn?PV(u_KQu7>MPZ3X`AI9RLka&Iu{ z#JwrM+lgvw^rSa>d#gs|^(N|meM18rlUstj_1-}6es35E4ltx#Yy_R4-sv4%4>}2_ z$_2?uZz4)p*E_Zr2F*sT6Z`FCEs9%se4^!d>KipbUQg;oDL;$&w}5}-k<7np zoDT+ej^A(woE@BhqGxo&SswKN>Z^`3;o`I6)|-BkxQ(D5#eOG>6?6HGM&e!uFSIUu zjcyybaa%!WBWjS<>bSKLw%6TGBrx=Sf{(;~S^mE2xyfcw5Amhpb`#!xxe?Vbd!6k~ zu(e`>Flys|UP)f{&I>G0o?cq^guj#XuFNQK%fcCD2*i4~1)i=>$n7`6b{#(of0f-$ zqCZIZ3^=Ii*KzK*-QaGRbT|W9>UnoN>H<2afSCnq*l6`V(7al!k;7_9cUA7K)wC>` z5#(xsX{`oz9}l}>$Bn_KKt<#Re%#!y3cM8zZ05k}rh@{}YhgQZJ+CJGnH(9=bE7t= z7^~?jc-K0RX~_F(Ab0^zSGUt;>q#lfnW=MT{u(HV%fa?Dv07(64k&w7_eKCJG?U1^ z49U6dan%*`sHc&;0zSSh%OR(T(78*iQPf<{uJV^F0u&3@jKDiFh~})9t*@lCO!S$= zZAE%k1j0`%z@_aBSG;4Ol<{j(5{0p{(2yf zU{tKU!J*C4*PBt2`0+OG?BHnDZp}=S>s5nhg3sxlz9_!dPC6VaT63wRMffmknRF|k zcgs|m{2RQFBW*#M`Z5!j#F{~Hce4o$cbeO{IY}T;!X$!SfG0X{#$A9fciYVX+QDyc zm&+Wyh~=<-Cu-gSt+jS=p$Wmifxb5t*TfC+e+y=W(t!KJ_7Pa+dN-!IDr?4BY6X59 zD?LwE#^YrOY#9%3faU}N_1{u-T=lgW6P5f3ikCGTt4pqXBRVhB3-0=y2qh?;5fMs} z4Bm&xiv;?57L>#!Xs+4pVDy0qWg}>Gp@lpzc>k5F5UKzWNCWv%NgO60z$OQA*&;-4 zNUSa{%N*K)%wcI2y!!Swly2MbuUjYAigEWXI7!e>!d0w^0QK`&o|b|0%JO;925V8X8Ep|I8~)}dh(lbg z2Gl$jtY&x{Y8aZO*{rCa8;0a5NHy`x%HA1XuE;RTpA)85l3x}#rl(jUWD11hRlKmx)2j@yK9^}XWtcikN<5N2Swaxr&b`j;Csa+Xwcg1h;-3z z`Sw~;db>-S3Bk@(RqJh9Axs_8=XqiEuKS96=_2)hOpX_K)xwGg=!E8(XY}`_@Vxu< z-KWpv>1EGb76ivZJqYiJ1i;PkTeid-{}nu&kmte%o$lnaC1y&AWYafTSPg)DYhtYk zQ65}uW%P-dcCe**xxj_j*4#E+RHLZK;ISVBemZ(HdDf11Y7B zj^+z%P(vDOiW8vpfDB5nR6HMqO(AdEcDG{cOS%WvU~u9k(oIsv*$g*>yaPqWh$S|I zwT^I}T9t7EMYqyX#Nx0pa#KBOgO|vJ)OOZr8Cf!(!wfQdC=}(EOl8*B_N1<{rSg=s zq@Hn`Cus6$t}rIWVhY+>3`waV z!{%pOb#HEjwo3x~bra}%2oQtXHZ+iqLPXrfLGUt9=lgDclEM3Gj#_0GbTMSgcy*%C zm$XR1(V_X^#I(;$pMhVs`>B>=&r{{CHiG(Xx3dM8H1#{kv&LHGs7RK0IM*qMB~0kQ z!BMLt+XQ(46B27S*JZaVPYmk7A|?l0kH}__h&3PKw>U$*aJ}1l8=P zATL8zvqOG6FL-K-o3GB-^>u^8b@|Pjp2nwA8p>Bx#)zIDBUbned>mYW)n}*$9#(A= zB-2I?!1hvZB1@3^e^dh*2x@ab?u^pPgcUrMdC@bbXK@1L7igPbg?EUg$Y~WFa-FHxH|8) z{P;G72o|#2=98jTO|Zqt9^oX{Xg)7kb9vaXV(q)_PSi!(k2wg*7g)dm^g$$2{40LE z4i3$7;9Md_2883$A~d@F`gS12Q+Y#(bO%aVW&mN)$+|VjBEVDILD@AbeDsLTBSwIp z0?)2A5%)7dr#^>A8MWZCBF~V|Bi11vqS{T0Lc|QzuG^C~OhS#QGIjLKmqh2PR0wQr zK1Rku!d9!>5kkS^wvC>i7zRa!p}{y}Ee-;hb}V}{j@DzpmHKnbbf@X@kpZ+Fu@H*o zRbBUWY5_$KA{S^V6g zR4Y=`l2#TQ&jhTe>7vup=5GG2=nx&j@X^Q8JhGM%+woG5a~;Bz-v~S3?5;ur5+vKi zI5xq?pc8*JzU%iNY_44Q<&92fGr4@>!aA}`-PI}><-(@qj4GlUE~ul7kX(5Fg%@A- zYQi%|a<6KINUk8P&Ko(d<6%1S4Z25lCY7}_NxnkfFfHAbtM*s7Hle;73rMGD!VgG{ncpAfuD4UZIrwm1nLLwJp2d7wN|iw*<8_@w3fdGSWGiu5fQz*Q(<}9oP2B>=Ww2Jo z!0t{IGIO&{moyDt#r#UG1j1^PutZ;e7xVDahD{Rg%1qqU>W|w)i73 zRL)(=beF1sq!E^^Sm^BHDsfc8pu^J)lez_Ip~7T2D|iW_#5IOPNiK1gtxc3YBmoT; zR5|NDkHfIbqRNdZK*%I@7#|)Sa+6pNg7Qv?^fpR5kQIbrOsNC1Uq9koa4s*yeX1zx zprXXw5QwBhY2t@@kko}G(c3PpOmM^%A}p5Ik%FPuL>LkiVp&NuT;D*EgrzSyzAEwV zd1}yChzYNlf*`a@;yRf60pO?yQqxV7uKCOJSXw~hsgUm=7<@P(VYeFa+sWo8_~Mh5 zEtEn!SbBcyRrkA5w;vmT(r!JBVd-GgsX?Jen_(+d%AkMdOHBmuQ^S_>+LDw-+^0Fi z5XFk1#!Lf}VUkKkKCBN5d=(`pu#0phwcrOE>*6^B4?QuRR|C!LMF^%Ni=u9C82N1mVSA`vaYym-FBTe zL9qouGa(19BS{f4wsE)~BKNMHUu^ADYs-a>@O5>|M_;PL%8Sa(UOOaM-M|@7U$|` zuq>lL*p@T34fZ z{lW_uV1PQ&1^JPTrS1C&?6!aJDd}1JrqkF{vpm>h05Gk)hr5>T`7k66f`3r*0QKmZl<}5 zHArePaz7xcjxV_gwPkWDbii$f2M3CSZo)OK%FJrB9BjYkVSa_A+-6w6jY6ZC0n9U3 z#|S%ck41+dmNr3QAD|YlxFF#~i97N=FgXfqoY<(-Mg?&PK$MR#fmof~?22e9mvx_m z>SaiuCqhBzBS^+@s=Qwa%^IN+VXdXL(J?I{mnAQfwt^rTjpPGBkrRMhS-FLeC0Z5U zVYrYj2GYc{<+nR|J1(sRO1&fx&eHUvME18d$vNLOIo~Ha2s-^GvF_PyL#GLXF+7zonx`8ee4cGuU4oc%Ac2La4 z&S92N%4Hp+mGk8w;16nHiT3b&sJo)OSlWJ%HlXkhIE3uvgjXhLQ|Nb>HskOPoZV%s zH9~wh;ciU8LSG9F4d6#q?u}~ztRqcL{HxR+eNoAGNplk+fmfutMe(G~dW^?(JgfBj zYSh?<%24gdxlCg)f}S&%-MMAN1X zH9*EwMY_y?7Y|sqI3?(ohDGG!vvpW=qjk$M1$iX*yl#;ym>uK}T1PqYCUeDf?Wvwr zx2A3%3|5x4;q&*yBD9UK3{!K#>#$Fxm5Z2`RWVR=iDo~o)rL<{%!WMAUl)pOJLfC>Lde` zj&ZSiQICP&trR`Q5+bC!L5O$VJ}gX>MIe$|N5=>f7P@Aajgp(}rF1PA=UQ6ir&y9H zn2g3bBpy7*oh2#}l-Cy9EKi`x9#%^29Y{6*YRE=i@B)+$qJGs7n90@}Hmd;b!QzVIg7WKiN$9Wqel;^9M;aPx(vHT0?}6zJszR#m5$0i+io zVTxCeHn*$#VPrV8bwj@4g=b-5n%l-t2iJj-ti(A*yyat6X4ezjS+&X*vcS<5M@BYF z#X-)8t+*@sndx|hDP<+Xv2d;Bd6rEe3RlfzY?jygOZDm+YF>Fym0MGE`cMlF=~b}= z8Z4Vy)U4q#uaGD}w0F5Uuu?II1UxADe8JumFIV%g8c$^omEW9q;@?r-Lt256fhEZ3 zZc+o1o1re*R~V`!KQ?F}zk+xQduzZZ+YLXTYB5D%SiP$IIz$+5co{~ijHs5oCE&}k zjUA;tm{O?>n+yo{)g*c61G<6L_7>|qs`96IT=d&$f`my@_=m zy*J+Sw^xH&y_v)_m~1@D!!aJ_c$nvbONqHxEmwrAoZ>N0mOG{aS0 z!-wX(cp-rash|pW8{3W&spnrnkKNr)4Y?^KBzwb+s1|na9akmO>dVat7AASMDwn?t zrbzxb=JHP;IKP}-{FQTZZsOAurw<45_wVOV9uDL0KaM!_Ck{t>Hpa7Yo=rHX&mB(k zY>L;Wc{bxLoI0H4*_^X@=I|KL=AAQNIb7h`qH}EV@Ho#-@Y+e9opO#pc6gd+XPi?{ zAAX5vk2xovIDDLEPdIb)hfng%CFG}g_B6*m%d>ONWA5RXdG;0O$>$EA;n@pywK?0$sJ&h65Wvp@8&#s{4J;T@cPqE~Ul8OL@{UTfs8 zopm~7Px+j4;;E9kXTUsHANa0w!`X7~4u03!DlHG+`zX~_sIEhk!#NheRyAm&9wV(7 z)P(dx*m(g*6wY-w=FQ3x65Ea_DyNqJrS@9Y<9HfDxT^P6uq}#%nc}g_2sW zHz|o=dS&PlCgFM$-{H<_DecFk7yvxO>oXgE16zyDj_2MOK~T~423yIxQZ&oBQ7ILw zrG$fVA=C`<5`hd6r}q|%^2@6U#rH396U6s$&N*}L<2U}pGyk#jSC#wEzIOlgYkM^kYAr{`2WyIiuqz_P%*Ad-A`}p8apLXaDw@ zul>#J*FIf%>fp@xKfLnGGv|JGc-SXA4AaX4+Pi>KC>J{ZxPa0tX@m z5-NQ-r$;~TYl;jbiU9E?+{l}gi#YuAKmXqkoZq}LacX$tHx3T}hlk%>dUE*7hgVC^ z*s=Sgrw(Qp_9p*+a`waVfBp6QLucYL9$OyBDE=2Sy-|SX2K?T5>fz;#AW_vDgP)9s z^N!yeVqU8^o|ZIwqibk^z`j^z3Nr&pcEZ+rcJSA6Dj$kDu{nr;pK&F5zhKANDeVmG z4DJl=4DXEWjP8u>jPFeBOzuqWO#i&}iB=J?*#mwH7Ed(56_p3`rJo|d(c5z`m`$%~ z%$(minT5LjQgUyg0|Yr5c=1xMEbB72gy2efP}^{Svd+NiN_47~#FtO1ie`uv;B6(S ztTp|3`6=buA}Y`AUe*+_H!iHGkWZ;039ttV_(hWE&ztX#{9~twl)NxoE7^eCEl}`Ux$)5KoW~v|w56E6r8#xVVUcwq ztaMmR-gFsAR!SC9y{dQ!xwa6FJ7Z7@d5>fc5zq)0;H85Dkt0Ki8BtxjtH@o_=__Ul zOphq}R#nlhRmlD-?hk`rN9G7AwIe%6F?pZKFL^x$aK`)qLmZ(e{-O;??Q6h%G|Bbr zCYV!AvjW6}#(>JMGKbCrdXujo(9J>ISJjf7H${;a}y!tEYOB83vO6^;@KC%*-ahX}tT8dtJo>7XhEXL-mT z5!D0&DGc)+*aV0qwiQZK4LBIDC0GTGQ9lk7$~~Y%S;axcbf@;&@~E(zO`(cfZp}PT z?XTrAcLyXlyQ45E;yS%m<|XQ#atb+DS-!N|LOmc=ROSe|r>t$Qdo@5qUI9LGLYX`k zt1&sTWSTpz>zd7}MgR(OaZT<21_OXGh!5d2aHFtjc3KD3?12Z6Tk{0`g=`C2R-LToIU>cssVNr7Mvi>bhl^Ps5QS9wUc7|K()s84o zAYFt74|Gu`3%UmxI*~XWpB~@KUc5&wRkv~XOe^-hy612tF zS~-&PwE~<169?sI_SybmX_>~ zcG$OvZus~jN|CT~RRHO|x0Y4hPN%o?aa$a^oAS2KTGqxYI^Tt&%q50-j9wHSzuU|CQv z(?vJ&C-P33=@hmolD!1Xc=-zTaB{Ub`%uL|_&HRjL9x4Jnh1>Rx|0=C3TR%*!kzyw z{w*-7=aHFH!>p#{gsKS|*ksoa3~FJC;s&B#fUXVH49x<7-OM2*uGireD^;bg)8H%Q z`L@GNv5-0h7(l-u1)ijSPg)<|FdjDw!}@lMWad%0?D~ZaG|(b@>0D7OcD*a69Gx$` zkR9KY{ZZWguN-#u5(%I~O<$_`aQwuA)0@Wpvj9^S;_Vq3*Gt6=8Vpcm_yL<^RGYcH zAw%O))53y;2`JYXt{CI|hwT;AuSPRt#QEUPWNTC}N&lYM6(A{I4beM}E)v}a0({Uy zs-*+H5K+9@5w;I+X<-(%z$v!6M$#XfKtYU(89tAArj0}_ioN|efnNEs*y2E^Yzs-J zZPeXJ15|Ob9f54C!aB^=LY|Uk^+q58NQEE;JRc;9L&+#)9gr?Ih#**#mi4b*d=all zv7p@)r&_Zq`5kq`JMdN2R=Ee&#-tPp<5J@-08&aRgIjb z(RvaqHe`gLSxeEuBlq!0qy#~s=L=CGr=%T12#bVim|c;q0ehE`N8l7Kc;Y}(h|Rke zb8Pm=jWuFLQY-NLY^+gfEW{C5x(;^)cv>6h4}G@QWC`{!kmArXne!aK$Qy|G5(NqK z89{NA73qquvTQ170niQwDh;i)w?O(e**I$vK<$J-0zs)m>v^I;g>UdziUO!3ZVsHj zJPA>mdZ7)osc0Vc@GGh1A?AzF-$}+GmaX|@ixs8Btc(#R%rXD6FrjHADu-{AB>a9&Q9y7BIXH{AQ%tlV* z3CP6zj4bV2&@4>&tImWzH=$&lb?H#^m#GbM{U_2FrJD;XvZ|Nl&3;G@i4GwWl4@R! z8blsZa-um!x3D8w39j&3s@OEoxC%3~8Cl@RD4sf~(@)}$oF^dGjF9mK!Sp2neH zm8DVo`M@VEGvdQ{?%w;UEc6CjaG}Z7^3_|Gk-1cvLuEX4PXo9PDhSk5c|pG^Z&QLV zg*GS6-n53YxdU25|8ATrL@d}`rG0D@vh-mX=`56)-NYN7hnPl*zm6%#uko;gL+_*- zvzE=PCez}}p=K}jY;}`$SrOyWkh~xo- zB@1@n;_uP2IZJijwez>mqKfARM(JHy_7;NHDVD;;hNu$y^PJ$-DdD={1$$t2qvH6fI4%j z^p7KhrJ-L>IHf24mvj8@oG<^K^UQAsMoI&}c6gX^N*7TLpItZ{e0`+!CDh6%XAj1w z59Stm#QzgB2a|IL$BrM2P4hT)>|mA%IvAZin3&~lC(fX{tB#*n1jZjuIg`ge82xm7 z?!yy58~V$|za4+^gOS4tXL|8qW?q8@WB|btSEl9&mH=l6YGUT|CzFBF$YFEXdHku5 a7yr}H=gu^~y3P|%e|+xO&Ui`bqyGorDR8?0 diff --git a/venv/lib/python3.12/site-packages/attr/__pycache__/_version_info.cpython-312.pyc b/venv/lib/python3.12/site-packages/attr/__pycache__/_version_info.cpython-312.pyc deleted file mode 100644 index 5b712a255d5d15057cc37ae45fdf6dc376447ce6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3121 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 Bs~-RW diff --git a/venv/lib/python3.12/site-packages/attr/__pycache__/exceptions.cpython-312.pyc b/venv/lib/python3.12/site-packages/attr/__pycache__/exceptions.cpython-312.pyc deleted file mode 100644 index 096bc0884dee5c881149fbc408cd154f8848a09e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3578 zcmbVO&2JM&6rZ)d&c^wKgcJz00|-)wV)M}!N@+zDN=px+g!7pcy68BUHY+$kl*m5@u=ZIS@{(P%fuw6Vw19xQxqJ>>{vOTiz_5XJ|$*+k(ddV zcoYxUh?->0MNlU zv`?a&0Nvb%_DggK&|x;v++nb~B|Y*79zLxEJ%;1Bp5a-pBj8h;v<)FH8N3jZ3uVMq zS=k5Q%Y>1fVv=0!B3LOGH)A=l#*C6v%{WV%i4&kxRny6!=QMX~%=v_Km)HJGQFtb3 zQDRxET=qR<+Gf;pgl9MfMqN$~&*Rp#?=f03W*MDk%t4HmD;_hc=K>-Z9F|^!$p=L_SZatJD{kGb0rROi_jlX_*OO%!Ioe zj!A_-T|i5qYJQ?|EJ-CF{c9#eXBih@IKwoVdHgs%d@yq;b5I_sHdHX2F^>x7wOG}L z8`ixn4|G|0{OZ*pVelC-mF@~OUB}bvdXUm};ON^p?$z}hzF|i*UAk_%1%TsaF~cE@ zNid-6ZBEqnhhzoa_VR4D#Uu4)wn7O5sTxbigP|~J&O}iW2G5m_;Aw?S$q;J>30)N+ z|8>=&_nWSodYIryh(Fu)&cwMS(Q8~qjki{xyBZ#4R3kSm}ByEH?L}?Vsh$f>c*E{X{jv4yU4VgJ~ z97&0BTJ)U)h88WjzHMT%6fMX+L#BMh+AA5JOjTbnC=cQ~l!2nl*Udn1>)|K^*XFtv z*`XN2L5nLw8{#?)>?RyZSSEEyGAtky)N!2y4W6=&KtYTASAnVmEG!4g8E|cAHLUUa z)V3od6xmK{2yKYk$SGDdpiE5IoEc{IJo7?wx1-oJ!|4_!EOK)tsMRoIIgRQH1=>b; z0#~uRic`*Dk=(CUj!jl@x#7Lay+>PFyJjfwKIvM z9a`f?WR1|hbCy@4`MlwKu8#3-O^c5%aG$}IgPu1aw$U1>=K63YP_J5HV4TL?yT03x zW{$ivqGi&eI0?VDh(>5bTsM6ouYwD%d)AI}c3yIX>vaw}v|q%Kj~&s=4A18bQWf%* zvm3qz4hEJEn}fU!H8ol84GvS`Ad;R~QevFF;gE(%6eYDto%ldqFc$B^xkLLNL21F`mYW zZe5odpz8v6g&uE#%li_|UfZ_Xn3=}5U%|B44dTTD`9T(0!hNr2R7e*clp@&$G-dKv9?2=G~KmkJAwA# z84y8VWU>OYZC!^G?8p7^1Sdn&?Lk!(U*ZII7B3c|(SkBo?~kja|D+UkXBhRUG?m_j z{bJF_3I7c(H&sQu yx4%x{RUgFhhpqAb@z(g>@o1a`ohx+$uli=tzu()2!&u_|%Fesh=LBBTO#cEqdt1x^ diff --git a/venv/lib/python3.12/site-packages/attr/__pycache__/filters.cpython-312.pyc b/venv/lib/python3.12/site-packages/attr/__pycache__/filters.cpython-312.pyc deleted file mode 100644 index 2efbfb9d4efb9724c5ea6d6d0bcd5d1da5c0f8a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2992 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 diff --git a/venv/lib/python3.12/site-packages/attr/_cmp.py b/venv/lib/python3.12/site-packages/attr/_cmp.py deleted file mode 100644 index 09bab49..0000000 --- a/venv/lib/python3.12/site-packages/attr/_cmp.py +++ /dev/null @@ -1,160 +0,0 @@ -# SPDX-License-Identifier: MIT - - -import functools -import types - -from ._make import __ne__ - - -_operation_names = {"eq": "==", "lt": "<", "le": "<=", "gt": ">", "ge": ">="} - - -def cmp_using( - eq=None, - lt=None, - le=None, - gt=None, - ge=None, - require_same_type=True, - class_name="Comparable", -): - """ - Create a class that can be passed into `attrs.field`'s ``eq``, ``order``, - and ``cmp`` arguments to customize field comparison. - - The resulting class will have a full set of ordering methods if at least - one of ``{lt, le, gt, ge}`` and ``eq`` are provided. - - Args: - eq (typing.Callable | None): - Callable used to evaluate equality of two objects. - - lt (typing.Callable | None): - Callable used to evaluate whether one object is less than another - object. - - le (typing.Callable | None): - Callable used to evaluate whether one object is less than or equal - to another object. - - gt (typing.Callable | None): - Callable used to evaluate whether one object is greater than - another object. - - ge (typing.Callable | None): - Callable used to evaluate whether one object is greater than or - equal to another object. - - require_same_type (bool): - When `True`, equality and ordering methods will return - `NotImplemented` if objects are not of the same type. - - class_name (str | None): Name of class. Defaults to "Comparable". - - See `comparison` for more details. - - .. versionadded:: 21.1.0 - """ - - body = { - "__slots__": ["value"], - "__init__": _make_init(), - "_requirements": [], - "_is_comparable_to": _is_comparable_to, - } - - # Add operations. - num_order_functions = 0 - has_eq_function = False - - if eq is not None: - has_eq_function = True - body["__eq__"] = _make_operator("eq", eq) - body["__ne__"] = __ne__ - - if lt is not None: - num_order_functions += 1 - body["__lt__"] = _make_operator("lt", lt) - - if le is not None: - num_order_functions += 1 - body["__le__"] = _make_operator("le", le) - - if gt is not None: - num_order_functions += 1 - body["__gt__"] = _make_operator("gt", gt) - - if ge is not None: - num_order_functions += 1 - body["__ge__"] = _make_operator("ge", ge) - - type_ = types.new_class( - class_name, (object,), {}, lambda ns: ns.update(body) - ) - - # Add same type requirement. - if require_same_type: - type_._requirements.append(_check_same_type) - - # Add total ordering if at least one operation was defined. - if 0 < num_order_functions < 4: - if not has_eq_function: - # functools.total_ordering requires __eq__ to be defined, - # so raise early error here to keep a nice stack. - msg = "eq must be define is order to complete ordering from lt, le, gt, ge." - raise ValueError(msg) - type_ = functools.total_ordering(type_) - - return type_ - - -def _make_init(): - """ - Create __init__ method. - """ - - def __init__(self, value): - """ - Initialize object with *value*. - """ - self.value = value - - return __init__ - - -def _make_operator(name, func): - """ - Create operator method. - """ - - def method(self, other): - if not self._is_comparable_to(other): - return NotImplemented - - result = func(self.value, other.value) - if result is NotImplemented: - return NotImplemented - - return result - - method.__name__ = f"__{name}__" - method.__doc__ = ( - f"Return a {_operation_names[name]} b. Computed by attrs." - ) - - return method - - -def _is_comparable_to(self, other): - """ - Check whether `other` is comparable to `self`. - """ - return all(func(self, other) for func in self._requirements) - - -def _check_same_type(self, other): - """ - Return True if *self* and *other* are of the same type, False otherwise. - """ - return other.value.__class__ is self.value.__class__ diff --git a/venv/lib/python3.12/site-packages/attr/_cmp.pyi b/venv/lib/python3.12/site-packages/attr/_cmp.pyi deleted file mode 100644 index cc7893b..0000000 --- a/venv/lib/python3.12/site-packages/attr/_cmp.pyi +++ /dev/null @@ -1,13 +0,0 @@ -from typing import Any, Callable - -_CompareWithType = Callable[[Any, Any], bool] - -def cmp_using( - eq: _CompareWithType | None = ..., - lt: _CompareWithType | None = ..., - le: _CompareWithType | None = ..., - gt: _CompareWithType | None = ..., - ge: _CompareWithType | None = ..., - require_same_type: bool = ..., - class_name: str = ..., -) -> type: ... diff --git a/venv/lib/python3.12/site-packages/attr/_compat.py b/venv/lib/python3.12/site-packages/attr/_compat.py deleted file mode 100644 index 22fcd78..0000000 --- a/venv/lib/python3.12/site-packages/attr/_compat.py +++ /dev/null @@ -1,94 +0,0 @@ -# SPDX-License-Identifier: MIT - -import inspect -import platform -import sys -import threading - -from collections.abc import Mapping, Sequence # noqa: F401 -from typing import _GenericAlias - - -PYPY = platform.python_implementation() == "PyPy" -PY_3_9_PLUS = sys.version_info[:2] >= (3, 9) -PY_3_10_PLUS = sys.version_info[:2] >= (3, 10) -PY_3_11_PLUS = sys.version_info[:2] >= (3, 11) -PY_3_12_PLUS = sys.version_info[:2] >= (3, 12) -PY_3_13_PLUS = sys.version_info[:2] >= (3, 13) -PY_3_14_PLUS = sys.version_info[:2] >= (3, 14) - - -if PY_3_14_PLUS: # pragma: no cover - import annotationlib - - _get_annotations = annotationlib.get_annotations - -else: - - def _get_annotations(cls): - """ - Get annotations for *cls*. - """ - return cls.__dict__.get("__annotations__", {}) - - -class _AnnotationExtractor: - """ - Extract type annotations from a callable, returning None whenever there - is none. - """ - - __slots__ = ["sig"] - - def __init__(self, callable): - try: - self.sig = inspect.signature(callable) - except (ValueError, TypeError): # inspect failed - self.sig = None - - def get_first_param_type(self): - """ - Return the type annotation of the first argument if it's not empty. - """ - if not self.sig: - return None - - params = list(self.sig.parameters.values()) - if params and params[0].annotation is not inspect.Parameter.empty: - return params[0].annotation - - return None - - def get_return_type(self): - """ - Return the return type if it's not empty. - """ - if ( - self.sig - and self.sig.return_annotation is not inspect.Signature.empty - ): - return self.sig.return_annotation - - return None - - -# Thread-local global to track attrs instances which are already being repr'd. -# This is needed because there is no other (thread-safe) way to pass info -# about the instances that are already being repr'd through the call stack -# in order to ensure we don't perform infinite recursion. -# -# For instance, if an instance contains a dict which contains that instance, -# we need to know that we're already repr'ing the outside instance from within -# the dict's repr() call. -# -# This lives here rather than in _make.py so that the functions in _make.py -# don't have a direct reference to the thread-local in their globals dict. -# If they have such a reference, it breaks cloudpickle. -repr_context = threading.local() - - -def get_generic_base(cl): - """If this is a generic class (A[str]), return the generic base for it.""" - if cl.__class__ is _GenericAlias: - return cl.__origin__ - return None diff --git a/venv/lib/python3.12/site-packages/attr/_config.py b/venv/lib/python3.12/site-packages/attr/_config.py deleted file mode 100644 index 4b25772..0000000 --- a/venv/lib/python3.12/site-packages/attr/_config.py +++ /dev/null @@ -1,31 +0,0 @@ -# SPDX-License-Identifier: MIT - -__all__ = ["get_run_validators", "set_run_validators"] - -_run_validators = True - - -def set_run_validators(run): - """ - Set whether or not validators are run. By default, they are run. - - .. deprecated:: 21.3.0 It will not be removed, but it also will not be - moved to new ``attrs`` namespace. Use `attrs.validators.set_disabled()` - instead. - """ - if not isinstance(run, bool): - msg = "'run' must be bool." - raise TypeError(msg) - global _run_validators - _run_validators = run - - -def get_run_validators(): - """ - Return whether or not validators are run. - - .. deprecated:: 21.3.0 It will not be removed, but it also will not be - moved to new ``attrs`` namespace. Use `attrs.validators.get_disabled()` - instead. - """ - return _run_validators diff --git a/venv/lib/python3.12/site-packages/attr/_funcs.py b/venv/lib/python3.12/site-packages/attr/_funcs.py deleted file mode 100644 index c39fb8a..0000000 --- a/venv/lib/python3.12/site-packages/attr/_funcs.py +++ /dev/null @@ -1,468 +0,0 @@ -# SPDX-License-Identifier: MIT - - -import copy - -from ._compat import PY_3_9_PLUS, get_generic_base -from ._make import _OBJ_SETATTR, NOTHING, fields -from .exceptions import AttrsAttributeNotFoundError - - -def asdict( - inst, - recurse=True, - filter=None, - dict_factory=dict, - retain_collection_types=False, - value_serializer=None, -): - """ - Return the *attrs* attribute values of *inst* as a dict. - - Optionally recurse into other *attrs*-decorated classes. - - Args: - inst: Instance of an *attrs*-decorated class. - - recurse (bool): Recurse into classes that are also *attrs*-decorated. - - filter (~typing.Callable): - A callable whose return code determines whether an attribute or - element is included (`True`) or dropped (`False`). Is called with - the `attrs.Attribute` as the first argument and the value as the - second argument. - - dict_factory (~typing.Callable): - A callable to produce dictionaries from. For example, to produce - ordered dictionaries instead of normal Python dictionaries, pass in - ``collections.OrderedDict``. - - retain_collection_types (bool): - Do not convert to `list` when encountering an attribute whose type - is `tuple` or `set`. Only meaningful if *recurse* is `True`. - - value_serializer (typing.Callable | None): - A hook that is called for every attribute or dict key/value. It - receives the current instance, field and value and must return the - (updated) value. The hook is run *after* the optional *filter* has - been applied. - - Returns: - Return type of *dict_factory*. - - Raises: - attrs.exceptions.NotAnAttrsClassError: - If *cls* is not an *attrs* class. - - .. versionadded:: 16.0.0 *dict_factory* - .. versionadded:: 16.1.0 *retain_collection_types* - .. versionadded:: 20.3.0 *value_serializer* - .. versionadded:: 21.3.0 - If a dict has a collection for a key, it is serialized as a tuple. - """ - attrs = fields(inst.__class__) - rv = dict_factory() - for a in attrs: - v = getattr(inst, a.name) - if filter is not None and not filter(a, v): - continue - - if value_serializer is not None: - v = value_serializer(inst, a, v) - - if recurse is True: - if has(v.__class__): - rv[a.name] = asdict( - v, - recurse=True, - filter=filter, - dict_factory=dict_factory, - retain_collection_types=retain_collection_types, - value_serializer=value_serializer, - ) - elif isinstance(v, (tuple, list, set, frozenset)): - cf = v.__class__ if retain_collection_types is True else list - items = [ - _asdict_anything( - i, - is_key=False, - filter=filter, - dict_factory=dict_factory, - retain_collection_types=retain_collection_types, - value_serializer=value_serializer, - ) - for i in v - ] - try: - rv[a.name] = cf(items) - except TypeError: - if not issubclass(cf, tuple): - raise - # Workaround for TypeError: cf.__new__() missing 1 required - # positional argument (which appears, for a namedturle) - rv[a.name] = cf(*items) - elif isinstance(v, dict): - df = dict_factory - rv[a.name] = df( - ( - _asdict_anything( - kk, - is_key=True, - filter=filter, - dict_factory=df, - retain_collection_types=retain_collection_types, - value_serializer=value_serializer, - ), - _asdict_anything( - vv, - is_key=False, - filter=filter, - dict_factory=df, - retain_collection_types=retain_collection_types, - value_serializer=value_serializer, - ), - ) - for kk, vv in v.items() - ) - else: - rv[a.name] = v - else: - rv[a.name] = v - return rv - - -def _asdict_anything( - val, - is_key, - filter, - dict_factory, - retain_collection_types, - value_serializer, -): - """ - ``asdict`` only works on attrs instances, this works on anything. - """ - if getattr(val.__class__, "__attrs_attrs__", None) is not None: - # Attrs class. - rv = asdict( - val, - recurse=True, - filter=filter, - dict_factory=dict_factory, - retain_collection_types=retain_collection_types, - value_serializer=value_serializer, - ) - elif isinstance(val, (tuple, list, set, frozenset)): - if retain_collection_types is True: - cf = val.__class__ - elif is_key: - cf = tuple - else: - cf = list - - rv = cf( - [ - _asdict_anything( - i, - is_key=False, - filter=filter, - dict_factory=dict_factory, - retain_collection_types=retain_collection_types, - value_serializer=value_serializer, - ) - for i in val - ] - ) - elif isinstance(val, dict): - df = dict_factory - rv = df( - ( - _asdict_anything( - kk, - is_key=True, - filter=filter, - dict_factory=df, - retain_collection_types=retain_collection_types, - value_serializer=value_serializer, - ), - _asdict_anything( - vv, - is_key=False, - filter=filter, - dict_factory=df, - retain_collection_types=retain_collection_types, - value_serializer=value_serializer, - ), - ) - for kk, vv in val.items() - ) - else: - rv = val - if value_serializer is not None: - rv = value_serializer(None, None, rv) - - return rv - - -def astuple( - inst, - recurse=True, - filter=None, - tuple_factory=tuple, - retain_collection_types=False, -): - """ - Return the *attrs* attribute values of *inst* as a tuple. - - Optionally recurse into other *attrs*-decorated classes. - - Args: - inst: Instance of an *attrs*-decorated class. - - recurse (bool): - Recurse into classes that are also *attrs*-decorated. - - filter (~typing.Callable): - A callable whose return code determines whether an attribute or - element is included (`True`) or dropped (`False`). Is called with - the `attrs.Attribute` as the first argument and the value as the - second argument. - - tuple_factory (~typing.Callable): - A callable to produce tuples from. For example, to produce lists - instead of tuples. - - retain_collection_types (bool): - Do not convert to `list` or `dict` when encountering an attribute - which type is `tuple`, `dict` or `set`. Only meaningful if - *recurse* is `True`. - - Returns: - Return type of *tuple_factory* - - Raises: - attrs.exceptions.NotAnAttrsClassError: - If *cls* is not an *attrs* class. - - .. versionadded:: 16.2.0 - """ - attrs = fields(inst.__class__) - rv = [] - retain = retain_collection_types # Very long. :/ - for a in attrs: - v = getattr(inst, a.name) - if filter is not None and not filter(a, v): - continue - if recurse is True: - if has(v.__class__): - rv.append( - astuple( - v, - recurse=True, - filter=filter, - tuple_factory=tuple_factory, - retain_collection_types=retain, - ) - ) - elif isinstance(v, (tuple, list, set, frozenset)): - cf = v.__class__ if retain is True else list - items = [ - ( - astuple( - j, - recurse=True, - filter=filter, - tuple_factory=tuple_factory, - retain_collection_types=retain, - ) - if has(j.__class__) - else j - ) - for j in v - ] - try: - rv.append(cf(items)) - except TypeError: - if not issubclass(cf, tuple): - raise - # Workaround for TypeError: cf.__new__() missing 1 required - # positional argument (which appears, for a namedturle) - rv.append(cf(*items)) - elif isinstance(v, dict): - df = v.__class__ if retain is True else dict - rv.append( - df( - ( - ( - astuple( - kk, - tuple_factory=tuple_factory, - retain_collection_types=retain, - ) - if has(kk.__class__) - else kk - ), - ( - astuple( - vv, - tuple_factory=tuple_factory, - retain_collection_types=retain, - ) - if has(vv.__class__) - else vv - ), - ) - for kk, vv in v.items() - ) - ) - else: - rv.append(v) - else: - rv.append(v) - - return rv if tuple_factory is list else tuple_factory(rv) - - -def has(cls): - """ - Check whether *cls* is a class with *attrs* attributes. - - Args: - cls (type): Class to introspect. - - Raises: - TypeError: If *cls* is not a class. - - Returns: - bool: - """ - attrs = getattr(cls, "__attrs_attrs__", None) - if attrs is not None: - return True - - # No attrs, maybe it's a specialized generic (A[str])? - generic_base = get_generic_base(cls) - if generic_base is not None: - generic_attrs = getattr(generic_base, "__attrs_attrs__", None) - if generic_attrs is not None: - # Stick it on here for speed next time. - cls.__attrs_attrs__ = generic_attrs - return generic_attrs is not None - return False - - -def assoc(inst, **changes): - """ - Copy *inst* and apply *changes*. - - This is different from `evolve` that applies the changes to the arguments - that create the new instance. - - `evolve`'s behavior is preferable, but there are `edge cases`_ where it - doesn't work. Therefore `assoc` is deprecated, but will not be removed. - - .. _`edge cases`: https://github.com/python-attrs/attrs/issues/251 - - Args: - inst: Instance of a class with *attrs* attributes. - - changes: Keyword changes in the new copy. - - Returns: - A copy of inst with *changes* incorporated. - - Raises: - attrs.exceptions.AttrsAttributeNotFoundError: - If *attr_name* couldn't be found on *cls*. - - attrs.exceptions.NotAnAttrsClassError: - If *cls* is not an *attrs* class. - - .. deprecated:: 17.1.0 - Use `attrs.evolve` instead if you can. This function will not be - removed du to the slightly different approach compared to - `attrs.evolve`, though. - """ - new = copy.copy(inst) - attrs = fields(inst.__class__) - for k, v in changes.items(): - a = getattr(attrs, k, NOTHING) - if a is NOTHING: - msg = f"{k} is not an attrs attribute on {new.__class__}." - raise AttrsAttributeNotFoundError(msg) - _OBJ_SETATTR(new, k, v) - return new - - -def resolve_types( - cls, globalns=None, localns=None, attribs=None, include_extras=True -): - """ - Resolve any strings and forward annotations in type annotations. - - This is only required if you need concrete types in :class:`Attribute`'s - *type* field. In other words, you don't need to resolve your types if you - only use them for static type checking. - - With no arguments, names will be looked up in the module in which the class - was created. If this is not what you want, for example, if the name only - exists inside a method, you may pass *globalns* or *localns* to specify - other dictionaries in which to look up these names. See the docs of - `typing.get_type_hints` for more details. - - Args: - cls (type): Class to resolve. - - globalns (dict | None): Dictionary containing global variables. - - localns (dict | None): Dictionary containing local variables. - - attribs (list | None): - List of attribs for the given class. This is necessary when calling - from inside a ``field_transformer`` since *cls* is not an *attrs* - class yet. - - include_extras (bool): - Resolve more accurately, if possible. Pass ``include_extras`` to - ``typing.get_hints``, if supported by the typing module. On - supported Python versions (3.9+), this resolves the types more - accurately. - - Raises: - TypeError: If *cls* is not a class. - - attrs.exceptions.NotAnAttrsClassError: - If *cls* is not an *attrs* class and you didn't pass any attribs. - - NameError: If types cannot be resolved because of missing variables. - - Returns: - *cls* so you can use this function also as a class decorator. Please - note that you have to apply it **after** `attrs.define`. That means the - decorator has to come in the line **before** `attrs.define`. - - .. versionadded:: 20.1.0 - .. versionadded:: 21.1.0 *attribs* - .. versionadded:: 23.1.0 *include_extras* - """ - # Since calling get_type_hints is expensive we cache whether we've - # done it already. - if getattr(cls, "__attrs_types_resolved__", None) != cls: - import typing - - kwargs = {"globalns": globalns, "localns": localns} - - if PY_3_9_PLUS: - kwargs["include_extras"] = include_extras - - hints = typing.get_type_hints(cls, **kwargs) - for field in fields(cls) if attribs is None else attribs: - if field.name in hints: - # Since fields have been frozen we must work around it. - _OBJ_SETATTR(field, "type", hints[field.name]) - # We store the class we resolved so that subclasses know they haven't - # been resolved. - cls.__attrs_types_resolved__ = cls - - # Return the class so you can use it as a decorator too. - return cls diff --git a/venv/lib/python3.12/site-packages/attr/_make.py b/venv/lib/python3.12/site-packages/attr/_make.py deleted file mode 100644 index e84d979..0000000 --- a/venv/lib/python3.12/site-packages/attr/_make.py +++ /dev/null @@ -1,3123 +0,0 @@ -# SPDX-License-Identifier: MIT - -from __future__ import annotations - -import abc -import contextlib -import copy -import enum -import inspect -import itertools -import linecache -import sys -import types -import unicodedata - -from collections.abc import Callable, Mapping -from functools import cached_property -from typing import Any, NamedTuple, TypeVar - -# We need to import _compat itself in addition to the _compat members to avoid -# having the thread-local in the globals here. -from . import _compat, _config, setters -from ._compat import ( - PY_3_10_PLUS, - PY_3_11_PLUS, - PY_3_13_PLUS, - _AnnotationExtractor, - _get_annotations, - get_generic_base, -) -from .exceptions import ( - DefaultAlreadySetError, - FrozenInstanceError, - NotAnAttrsClassError, - UnannotatedAttributeError, -) - - -# This is used at least twice, so cache it here. -_OBJ_SETATTR = object.__setattr__ -_INIT_FACTORY_PAT = "__attr_factory_%s" -_CLASSVAR_PREFIXES = ( - "typing.ClassVar", - "t.ClassVar", - "ClassVar", - "typing_extensions.ClassVar", -) -# we don't use a double-underscore prefix because that triggers -# name mangling when trying to create a slot for the field -# (when slots=True) -_HASH_CACHE_FIELD = "_attrs_cached_hash" - -_EMPTY_METADATA_SINGLETON = types.MappingProxyType({}) - -# Unique object for unequivocal getattr() defaults. -_SENTINEL = object() - -_DEFAULT_ON_SETATTR = setters.pipe(setters.convert, setters.validate) - - -class _Nothing(enum.Enum): - """ - Sentinel to indicate the lack of a value when `None` is ambiguous. - - If extending attrs, you can use ``typing.Literal[NOTHING]`` to show - that a value may be ``NOTHING``. - - .. versionchanged:: 21.1.0 ``bool(NOTHING)`` is now False. - .. versionchanged:: 22.2.0 ``NOTHING`` is now an ``enum.Enum`` variant. - """ - - NOTHING = enum.auto() - - def __repr__(self): - return "NOTHING" - - def __bool__(self): - return False - - -NOTHING = _Nothing.NOTHING -""" -Sentinel to indicate the lack of a value when `None` is ambiguous. - -When using in 3rd party code, use `attrs.NothingType` for type annotations. -""" - - -class _CacheHashWrapper(int): - """ - An integer subclass that pickles / copies as None - - This is used for non-slots classes with ``cache_hash=True``, to avoid - serializing a potentially (even likely) invalid hash value. Since `None` - is the default value for uncalculated hashes, whenever this is copied, - the copy's value for the hash should automatically reset. - - See GH #613 for more details. - """ - - def __reduce__(self, _none_constructor=type(None), _args=()): # noqa: B008 - return _none_constructor, _args - - -def attrib( - default=NOTHING, - validator=None, - repr=True, - cmp=None, - hash=None, - init=True, - metadata=None, - type=None, - converter=None, - factory=None, - kw_only=False, - eq=None, - order=None, - on_setattr=None, - alias=None, -): - """ - Create a new field / attribute on a class. - - Identical to `attrs.field`, except it's not keyword-only. - - Consider using `attrs.field` in new code (``attr.ib`` will *never* go away, - though). - - .. warning:: - - Does **nothing** unless the class is also decorated with - `attr.s` (or similar)! - - - .. versionadded:: 15.2.0 *convert* - .. versionadded:: 16.3.0 *metadata* - .. versionchanged:: 17.1.0 *validator* can be a ``list`` now. - .. versionchanged:: 17.1.0 - *hash* is `None` and therefore mirrors *eq* by default. - .. versionadded:: 17.3.0 *type* - .. deprecated:: 17.4.0 *convert* - .. versionadded:: 17.4.0 - *converter* as a replacement for the deprecated *convert* to achieve - consistency with other noun-based arguments. - .. versionadded:: 18.1.0 - ``factory=f`` is syntactic sugar for ``default=attr.Factory(f)``. - .. versionadded:: 18.2.0 *kw_only* - .. versionchanged:: 19.2.0 *convert* keyword argument removed. - .. versionchanged:: 19.2.0 *repr* also accepts a custom callable. - .. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01. - .. versionadded:: 19.2.0 *eq* and *order* - .. versionadded:: 20.1.0 *on_setattr* - .. versionchanged:: 20.3.0 *kw_only* backported to Python 2 - .. versionchanged:: 21.1.0 - *eq*, *order*, and *cmp* also accept a custom callable - .. versionchanged:: 21.1.0 *cmp* undeprecated - .. versionadded:: 22.2.0 *alias* - """ - eq, eq_key, order, order_key = _determine_attrib_eq_order( - cmp, eq, order, True - ) - - if hash is not None and hash is not True and hash is not False: - msg = "Invalid value for hash. Must be True, False, or None." - raise TypeError(msg) - - if factory is not None: - if default is not NOTHING: - msg = ( - "The `default` and `factory` arguments are mutually exclusive." - ) - raise ValueError(msg) - if not callable(factory): - msg = "The `factory` argument must be a callable." - raise ValueError(msg) - default = Factory(factory) - - if metadata is None: - metadata = {} - - # Apply syntactic sugar by auto-wrapping. - if isinstance(on_setattr, (list, tuple)): - on_setattr = setters.pipe(*on_setattr) - - if validator and isinstance(validator, (list, tuple)): - validator = and_(*validator) - - if converter and isinstance(converter, (list, tuple)): - converter = pipe(*converter) - - return _CountingAttr( - default=default, - validator=validator, - repr=repr, - cmp=None, - hash=hash, - init=init, - converter=converter, - metadata=metadata, - type=type, - kw_only=kw_only, - eq=eq, - eq_key=eq_key, - order=order, - order_key=order_key, - on_setattr=on_setattr, - alias=alias, - ) - - -def _compile_and_eval( - script: str, - globs: dict[str, Any] | None, - locs: Mapping[str, object] | None = None, - filename: str = "", -) -> None: - """ - Evaluate the script with the given global (globs) and local (locs) - variables. - """ - bytecode = compile(script, filename, "exec") - eval(bytecode, globs, locs) - - -def _linecache_and_compile( - script: str, - filename: str, - globs: dict[str, Any] | None, - locals: Mapping[str, object] | None = None, -) -> dict[str, Any]: - """ - Cache the script with _linecache_, compile it and return the _locals_. - """ - - locs = {} if locals is None else locals - - # In order of debuggers like PDB being able to step through the code, - # we add a fake linecache entry. - count = 1 - base_filename = filename - while True: - linecache_tuple = ( - len(script), - None, - script.splitlines(True), - filename, - ) - old_val = linecache.cache.setdefault(filename, linecache_tuple) - if old_val == linecache_tuple: - break - - filename = f"{base_filename[:-1]}-{count}>" - count += 1 - - _compile_and_eval(script, globs, locs, filename) - - return locs - - -def _make_attr_tuple_class(cls_name: str, attr_names: list[str]) -> type: - """ - Create a tuple subclass to hold `Attribute`s for an `attrs` class. - - The subclass is a bare tuple with properties for names. - - class MyClassAttributes(tuple): - __slots__ = () - x = property(itemgetter(0)) - """ - attr_class_name = f"{cls_name}Attributes" - body = {} - for i, attr_name in enumerate(attr_names): - - def getter(self, i=i): - return self[i] - - body[attr_name] = property(getter) - return type(attr_class_name, (tuple,), body) - - -# Tuple class for extracted attributes from a class definition. -# `base_attrs` is a subset of `attrs`. -class _Attributes(NamedTuple): - attrs: type - base_attrs: list[Attribute] - base_attrs_map: dict[str, type] - - -def _is_class_var(annot): - """ - Check whether *annot* is a typing.ClassVar. - - The string comparison hack is used to avoid evaluating all string - annotations which would put attrs-based classes at a performance - disadvantage compared to plain old classes. - """ - annot = str(annot) - - # Annotation can be quoted. - if annot.startswith(("'", '"')) and annot.endswith(("'", '"')): - annot = annot[1:-1] - - return annot.startswith(_CLASSVAR_PREFIXES) - - -def _has_own_attribute(cls, attrib_name): - """ - Check whether *cls* defines *attrib_name* (and doesn't just inherit it). - """ - return attrib_name in cls.__dict__ - - -def _collect_base_attrs( - cls, taken_attr_names -) -> tuple[list[Attribute], dict[str, type]]: - """ - Collect attr.ibs from base classes of *cls*, except *taken_attr_names*. - """ - base_attrs = [] - base_attr_map = {} # A dictionary of base attrs to their classes. - - # Traverse the MRO and collect attributes. - for base_cls in reversed(cls.__mro__[1:-1]): - for a in getattr(base_cls, "__attrs_attrs__", []): - if a.inherited or a.name in taken_attr_names: - continue - - a = a.evolve(inherited=True) # noqa: PLW2901 - base_attrs.append(a) - base_attr_map[a.name] = base_cls - - # For each name, only keep the freshest definition i.e. the furthest at the - # back. base_attr_map is fine because it gets overwritten with every new - # instance. - filtered = [] - seen = set() - for a in reversed(base_attrs): - if a.name in seen: - continue - filtered.insert(0, a) - seen.add(a.name) - - return filtered, base_attr_map - - -def _collect_base_attrs_broken(cls, taken_attr_names): - """ - Collect attr.ibs from base classes of *cls*, except *taken_attr_names*. - - N.B. *taken_attr_names* will be mutated. - - Adhere to the old incorrect behavior. - - Notably it collects from the front and considers inherited attributes which - leads to the buggy behavior reported in #428. - """ - base_attrs = [] - base_attr_map = {} # A dictionary of base attrs to their classes. - - # Traverse the MRO and collect attributes. - for base_cls in cls.__mro__[1:-1]: - for a in getattr(base_cls, "__attrs_attrs__", []): - if a.name in taken_attr_names: - continue - - a = a.evolve(inherited=True) # noqa: PLW2901 - taken_attr_names.add(a.name) - base_attrs.append(a) - base_attr_map[a.name] = base_cls - - return base_attrs, base_attr_map - - -def _transform_attrs( - cls, these, auto_attribs, kw_only, collect_by_mro, field_transformer -) -> _Attributes: - """ - Transform all `_CountingAttr`s on a class into `Attribute`s. - - If *these* is passed, use that and don't look for them on the class. - - If *collect_by_mro* is True, collect them in the correct MRO order, - otherwise use the old -- incorrect -- order. See #428. - - Return an `_Attributes`. - """ - cd = cls.__dict__ - anns = _get_annotations(cls) - - if these is not None: - ca_list = list(these.items()) - elif auto_attribs is True: - ca_names = { - name - for name, attr in cd.items() - if attr.__class__ is _CountingAttr - } - ca_list = [] - annot_names = set() - for attr_name, type in anns.items(): - if _is_class_var(type): - continue - annot_names.add(attr_name) - a = cd.get(attr_name, NOTHING) - - if a.__class__ is not _CountingAttr: - a = attrib(a) - ca_list.append((attr_name, a)) - - unannotated = ca_names - annot_names - if unannotated: - raise UnannotatedAttributeError( - "The following `attr.ib`s lack a type annotation: " - + ", ".join( - sorted(unannotated, key=lambda n: cd.get(n).counter) - ) - + "." - ) - else: - ca_list = sorted( - ( - (name, attr) - for name, attr in cd.items() - if attr.__class__ is _CountingAttr - ), - key=lambda e: e[1].counter, - ) - - fca = Attribute.from_counting_attr - own_attrs = [ - fca(attr_name, ca, anns.get(attr_name)) for attr_name, ca in ca_list - ] - - if collect_by_mro: - base_attrs, base_attr_map = _collect_base_attrs( - cls, {a.name for a in own_attrs} - ) - else: - base_attrs, base_attr_map = _collect_base_attrs_broken( - cls, {a.name for a in own_attrs} - ) - - if kw_only: - own_attrs = [a.evolve(kw_only=True) for a in own_attrs] - base_attrs = [a.evolve(kw_only=True) for a in base_attrs] - - attrs = base_attrs + own_attrs - - if field_transformer is not None: - attrs = tuple(field_transformer(cls, attrs)) - - # Check attr order after executing the field_transformer. - # Mandatory vs non-mandatory attr order only matters when they are part of - # the __init__ signature and when they aren't kw_only (which are moved to - # the end and can be mandatory or non-mandatory in any order, as they will - # be specified as keyword args anyway). Check the order of those attrs: - had_default = False - for a in (a for a in attrs if a.init is not False and a.kw_only is False): - if had_default is True and a.default is NOTHING: - msg = f"No mandatory attributes allowed after an attribute with a default value or factory. Attribute in question: {a!r}" - raise ValueError(msg) - - if had_default is False and a.default is not NOTHING: - had_default = True - - # Resolve default field alias after executing field_transformer. - # This allows field_transformer to differentiate between explicit vs - # default aliases and supply their own defaults. - for a in attrs: - if not a.alias: - # Evolve is very slow, so we hold our nose and do it dirty. - _OBJ_SETATTR.__get__(a)("alias", _default_init_alias_for(a.name)) - - # Create AttrsClass *after* applying the field_transformer since it may - # add or remove attributes! - attr_names = [a.name for a in attrs] - AttrsClass = _make_attr_tuple_class(cls.__name__, attr_names) - - return _Attributes(AttrsClass(attrs), base_attrs, base_attr_map) - - -def _make_cached_property_getattr(cached_properties, original_getattr, cls): - lines = [ - # Wrapped to get `__class__` into closure cell for super() - # (It will be replaced with the newly constructed class after construction). - "def wrapper(_cls):", - " __class__ = _cls", - " def __getattr__(self, item, cached_properties=cached_properties, original_getattr=original_getattr, _cached_setattr_get=_cached_setattr_get):", - " func = cached_properties.get(item)", - " if func is not None:", - " result = func(self)", - " _setter = _cached_setattr_get(self)", - " _setter(item, result)", - " return result", - ] - if original_getattr is not None: - lines.append( - " return original_getattr(self, item)", - ) - else: - lines.extend( - [ - " try:", - " return super().__getattribute__(item)", - " except AttributeError:", - " if not hasattr(super(), '__getattr__'):", - " raise", - " return super().__getattr__(item)", - " original_error = f\"'{self.__class__.__name__}' object has no attribute '{item}'\"", - " raise AttributeError(original_error)", - ] - ) - - lines.extend( - [ - " return __getattr__", - "__getattr__ = wrapper(_cls)", - ] - ) - - unique_filename = _generate_unique_filename(cls, "getattr") - - glob = { - "cached_properties": cached_properties, - "_cached_setattr_get": _OBJ_SETATTR.__get__, - "original_getattr": original_getattr, - } - - return _linecache_and_compile( - "\n".join(lines), unique_filename, glob, locals={"_cls": cls} - )["__getattr__"] - - -def _frozen_setattrs(self, name, value): - """ - Attached to frozen classes as __setattr__. - """ - if isinstance(self, BaseException) and name in ( - "__cause__", - "__context__", - "__traceback__", - "__suppress_context__", - "__notes__", - ): - BaseException.__setattr__(self, name, value) - return - - raise FrozenInstanceError - - -def _frozen_delattrs(self, name): - """ - Attached to frozen classes as __delattr__. - """ - if isinstance(self, BaseException) and name in ("__notes__",): - BaseException.__delattr__(self, name) - return - - raise FrozenInstanceError - - -def evolve(*args, **changes): - """ - Create a new instance, based on the first positional argument with - *changes* applied. - - .. tip:: - - On Python 3.13 and later, you can also use `copy.replace` instead. - - Args: - - inst: - Instance of a class with *attrs* attributes. *inst* must be passed - as a positional argument. - - changes: - Keyword changes in the new copy. - - Returns: - A copy of inst with *changes* incorporated. - - Raises: - TypeError: - If *attr_name* couldn't be found in the class ``__init__``. - - attrs.exceptions.NotAnAttrsClassError: - If *cls* is not an *attrs* class. - - .. versionadded:: 17.1.0 - .. deprecated:: 23.1.0 - It is now deprecated to pass the instance using the keyword argument - *inst*. It will raise a warning until at least April 2024, after which - it will become an error. Always pass the instance as a positional - argument. - .. versionchanged:: 24.1.0 - *inst* can't be passed as a keyword argument anymore. - """ - try: - (inst,) = args - except ValueError: - msg = ( - f"evolve() takes 1 positional argument, but {len(args)} were given" - ) - raise TypeError(msg) from None - - cls = inst.__class__ - attrs = fields(cls) - for a in attrs: - if not a.init: - continue - attr_name = a.name # To deal with private attributes. - init_name = a.alias - if init_name not in changes: - changes[init_name] = getattr(inst, attr_name) - - return cls(**changes) - - -class _ClassBuilder: - """ - Iteratively build *one* class. - """ - - __slots__ = ( - "_add_method_dunders", - "_attr_names", - "_attrs", - "_base_attr_map", - "_base_names", - "_cache_hash", - "_cls", - "_cls_dict", - "_delete_attribs", - "_frozen", - "_has_custom_setattr", - "_has_post_init", - "_has_pre_init", - "_is_exc", - "_on_setattr", - "_pre_init_has_args", - "_repr_added", - "_script_snippets", - "_slots", - "_weakref_slot", - "_wrote_own_setattr", - ) - - def __init__( - self, - cls: type, - these, - slots, - frozen, - weakref_slot, - getstate_setstate, - auto_attribs, - kw_only, - cache_hash, - is_exc, - collect_by_mro, - on_setattr, - has_custom_setattr, - field_transformer, - ): - attrs, base_attrs, base_map = _transform_attrs( - cls, - these, - auto_attribs, - kw_only, - collect_by_mro, - field_transformer, - ) - - self._cls = cls - self._cls_dict = dict(cls.__dict__) if slots else {} - self._attrs = attrs - self._base_names = {a.name for a in base_attrs} - self._base_attr_map = base_map - self._attr_names = tuple(a.name for a in attrs) - self._slots = slots - self._frozen = frozen - self._weakref_slot = weakref_slot - self._cache_hash = cache_hash - self._has_pre_init = bool(getattr(cls, "__attrs_pre_init__", False)) - self._pre_init_has_args = False - if self._has_pre_init: - # Check if the pre init method has more arguments than just `self` - # We want to pass arguments if pre init expects arguments - pre_init_func = cls.__attrs_pre_init__ - pre_init_signature = inspect.signature(pre_init_func) - self._pre_init_has_args = len(pre_init_signature.parameters) > 1 - self._has_post_init = bool(getattr(cls, "__attrs_post_init__", False)) - self._delete_attribs = not bool(these) - self._is_exc = is_exc - self._on_setattr = on_setattr - - self._has_custom_setattr = has_custom_setattr - self._wrote_own_setattr = False - - self._cls_dict["__attrs_attrs__"] = self._attrs - - if frozen: - self._cls_dict["__setattr__"] = _frozen_setattrs - self._cls_dict["__delattr__"] = _frozen_delattrs - - self._wrote_own_setattr = True - elif on_setattr in ( - _DEFAULT_ON_SETATTR, - setters.validate, - setters.convert, - ): - has_validator = has_converter = False - for a in attrs: - if a.validator is not None: - has_validator = True - if a.converter is not None: - has_converter = True - - if has_validator and has_converter: - break - if ( - ( - on_setattr == _DEFAULT_ON_SETATTR - and not (has_validator or has_converter) - ) - or (on_setattr == setters.validate and not has_validator) - or (on_setattr == setters.convert and not has_converter) - ): - # If class-level on_setattr is set to convert + validate, but - # there's no field to convert or validate, pretend like there's - # no on_setattr. - self._on_setattr = None - - if getstate_setstate: - ( - self._cls_dict["__getstate__"], - self._cls_dict["__setstate__"], - ) = self._make_getstate_setstate() - - # tuples of script, globs, hook - self._script_snippets: list[ - tuple[str, dict, Callable[[dict, dict], Any]] - ] = [] - self._repr_added = False - - # We want to only do this check once; in 99.9% of cases these - # exist. - if not hasattr(self._cls, "__module__") or not hasattr( - self._cls, "__qualname__" - ): - self._add_method_dunders = self._add_method_dunders_safe - else: - self._add_method_dunders = self._add_method_dunders_unsafe - - def __repr__(self): - return f"<_ClassBuilder(cls={self._cls.__name__})>" - - def _eval_snippets(self) -> None: - """ - Evaluate any registered snippets in one go. - """ - script = "\n".join([snippet[0] for snippet in self._script_snippets]) - globs = {} - for _, snippet_globs, _ in self._script_snippets: - globs.update(snippet_globs) - - locs = _linecache_and_compile( - script, - _generate_unique_filename(self._cls, "methods"), - globs, - ) - - for _, _, hook in self._script_snippets: - hook(self._cls_dict, locs) - - def build_class(self): - """ - Finalize class based on the accumulated configuration. - - Builder cannot be used after calling this method. - """ - self._eval_snippets() - if self._slots is True: - cls = self._create_slots_class() - else: - cls = self._patch_original_class() - if PY_3_10_PLUS: - cls = abc.update_abstractmethods(cls) - - # The method gets only called if it's not inherited from a base class. - # _has_own_attribute does NOT work properly for classmethods. - if ( - getattr(cls, "__attrs_init_subclass__", None) - and "__attrs_init_subclass__" not in cls.__dict__ - ): - cls.__attrs_init_subclass__() - - return cls - - def _patch_original_class(self): - """ - Apply accumulated methods and return the class. - """ - cls = self._cls - base_names = self._base_names - - # Clean class of attribute definitions (`attr.ib()`s). - if self._delete_attribs: - for name in self._attr_names: - if ( - name not in base_names - and getattr(cls, name, _SENTINEL) is not _SENTINEL - ): - # An AttributeError can happen if a base class defines a - # class variable and we want to set an attribute with the - # same name by using only a type annotation. - with contextlib.suppress(AttributeError): - delattr(cls, name) - - # Attach our dunder methods. - for name, value in self._cls_dict.items(): - setattr(cls, name, value) - - # If we've inherited an attrs __setattr__ and don't write our own, - # reset it to object's. - if not self._wrote_own_setattr and getattr( - cls, "__attrs_own_setattr__", False - ): - cls.__attrs_own_setattr__ = False - - if not self._has_custom_setattr: - cls.__setattr__ = _OBJ_SETATTR - - return cls - - def _create_slots_class(self): - """ - Build and return a new class with a `__slots__` attribute. - """ - cd = { - k: v - for k, v in self._cls_dict.items() - if k not in (*tuple(self._attr_names), "__dict__", "__weakref__") - } - - # If our class doesn't have its own implementation of __setattr__ - # (either from the user or by us), check the bases, if one of them has - # an attrs-made __setattr__, that needs to be reset. We don't walk the - # MRO because we only care about our immediate base classes. - # XXX: This can be confused by subclassing a slotted attrs class with - # XXX: a non-attrs class and subclass the resulting class with an attrs - # XXX: class. See `test_slotted_confused` for details. For now that's - # XXX: OK with us. - if not self._wrote_own_setattr: - cd["__attrs_own_setattr__"] = False - - if not self._has_custom_setattr: - for base_cls in self._cls.__bases__: - if base_cls.__dict__.get("__attrs_own_setattr__", False): - cd["__setattr__"] = _OBJ_SETATTR - break - - # Traverse the MRO to collect existing slots - # and check for an existing __weakref__. - existing_slots = {} - weakref_inherited = False - for base_cls in self._cls.__mro__[1:-1]: - if base_cls.__dict__.get("__weakref__", None) is not None: - weakref_inherited = True - existing_slots.update( - { - name: getattr(base_cls, name) - for name in getattr(base_cls, "__slots__", []) - } - ) - - base_names = set(self._base_names) - - names = self._attr_names - if ( - self._weakref_slot - and "__weakref__" not in getattr(self._cls, "__slots__", ()) - and "__weakref__" not in names - and not weakref_inherited - ): - names += ("__weakref__",) - - cached_properties = { - name: cached_prop.func - for name, cached_prop in cd.items() - if isinstance(cached_prop, cached_property) - } - - # Collect methods with a `__class__` reference that are shadowed in the new class. - # To know to update them. - additional_closure_functions_to_update = [] - if cached_properties: - class_annotations = _get_annotations(self._cls) - for name, func in cached_properties.items(): - # Add cached properties to names for slotting. - names += (name,) - # Clear out function from class to avoid clashing. - del cd[name] - additional_closure_functions_to_update.append(func) - annotation = inspect.signature(func).return_annotation - if annotation is not inspect.Parameter.empty: - class_annotations[name] = annotation - - original_getattr = cd.get("__getattr__") - if original_getattr is not None: - additional_closure_functions_to_update.append(original_getattr) - - cd["__getattr__"] = _make_cached_property_getattr( - cached_properties, original_getattr, self._cls - ) - - # We only add the names of attributes that aren't inherited. - # Setting __slots__ to inherited attributes wastes memory. - slot_names = [name for name in names if name not in base_names] - - # There are slots for attributes from current class - # that are defined in parent classes. - # As their descriptors may be overridden by a child class, - # we collect them here and update the class dict - reused_slots = { - slot: slot_descriptor - for slot, slot_descriptor in existing_slots.items() - if slot in slot_names - } - slot_names = [name for name in slot_names if name not in reused_slots] - cd.update(reused_slots) - if self._cache_hash: - slot_names.append(_HASH_CACHE_FIELD) - - cd["__slots__"] = tuple(slot_names) - - cd["__qualname__"] = self._cls.__qualname__ - - # Create new class based on old class and our methods. - cls = type(self._cls)(self._cls.__name__, self._cls.__bases__, cd) - - # The following is a fix for - # . - # If a method mentions `__class__` or uses the no-arg super(), the - # compiler will bake a reference to the class in the method itself - # as `method.__closure__`. Since we replace the class with a - # clone, we rewrite these references so it keeps working. - for item in itertools.chain( - cls.__dict__.values(), additional_closure_functions_to_update - ): - if isinstance(item, (classmethod, staticmethod)): - # Class- and staticmethods hide their functions inside. - # These might need to be rewritten as well. - closure_cells = getattr(item.__func__, "__closure__", None) - elif isinstance(item, property): - # Workaround for property `super()` shortcut (PY3-only). - # There is no universal way for other descriptors. - closure_cells = getattr(item.fget, "__closure__", None) - else: - closure_cells = getattr(item, "__closure__", None) - - if not closure_cells: # Catch None or the empty list. - continue - for cell in closure_cells: - try: - match = cell.cell_contents is self._cls - except ValueError: # noqa: PERF203 - # ValueError: Cell is empty - pass - else: - if match: - cell.cell_contents = cls - return cls - - def add_repr(self, ns): - script, globs = _make_repr_script(self._attrs, ns) - - def _attach_repr(cls_dict, globs): - cls_dict["__repr__"] = self._add_method_dunders(globs["__repr__"]) - - self._script_snippets.append((script, globs, _attach_repr)) - self._repr_added = True - return self - - def add_str(self): - if not self._repr_added: - msg = "__str__ can only be generated if a __repr__ exists." - raise ValueError(msg) - - def __str__(self): - return self.__repr__() - - self._cls_dict["__str__"] = self._add_method_dunders(__str__) - return self - - def _make_getstate_setstate(self): - """ - Create custom __setstate__ and __getstate__ methods. - """ - # __weakref__ is not writable. - state_attr_names = tuple( - an for an in self._attr_names if an != "__weakref__" - ) - - def slots_getstate(self): - """ - Automatically created by attrs. - """ - return {name: getattr(self, name) for name in state_attr_names} - - hash_caching_enabled = self._cache_hash - - def slots_setstate(self, state): - """ - Automatically created by attrs. - """ - __bound_setattr = _OBJ_SETATTR.__get__(self) - if isinstance(state, tuple): - # Backward compatibility with attrs instances pickled with - # attrs versions before v22.2.0 which stored tuples. - for name, value in zip(state_attr_names, state): - __bound_setattr(name, value) - else: - for name in state_attr_names: - if name in state: - __bound_setattr(name, state[name]) - - # The hash code cache is not included when the object is - # serialized, but it still needs to be initialized to None to - # indicate that the first call to __hash__ should be a cache - # miss. - if hash_caching_enabled: - __bound_setattr(_HASH_CACHE_FIELD, None) - - return slots_getstate, slots_setstate - - def make_unhashable(self): - self._cls_dict["__hash__"] = None - return self - - def add_hash(self): - script, globs = _make_hash_script( - self._cls, - self._attrs, - frozen=self._frozen, - cache_hash=self._cache_hash, - ) - - def attach_hash(cls_dict: dict, locs: dict) -> None: - cls_dict["__hash__"] = self._add_method_dunders(locs["__hash__"]) - - self._script_snippets.append((script, globs, attach_hash)) - - return self - - def add_init(self): - script, globs, annotations = _make_init_script( - self._cls, - self._attrs, - self._has_pre_init, - self._pre_init_has_args, - self._has_post_init, - self._frozen, - self._slots, - self._cache_hash, - self._base_attr_map, - self._is_exc, - self._on_setattr, - attrs_init=False, - ) - - def _attach_init(cls_dict, globs): - init = globs["__init__"] - init.__annotations__ = annotations - cls_dict["__init__"] = self._add_method_dunders(init) - - self._script_snippets.append((script, globs, _attach_init)) - - return self - - def add_replace(self): - self._cls_dict["__replace__"] = self._add_method_dunders( - lambda self, **changes: evolve(self, **changes) - ) - return self - - def add_match_args(self): - self._cls_dict["__match_args__"] = tuple( - field.name - for field in self._attrs - if field.init and not field.kw_only - ) - - def add_attrs_init(self): - script, globs, annotations = _make_init_script( - self._cls, - self._attrs, - self._has_pre_init, - self._pre_init_has_args, - self._has_post_init, - self._frozen, - self._slots, - self._cache_hash, - self._base_attr_map, - self._is_exc, - self._on_setattr, - attrs_init=True, - ) - - def _attach_attrs_init(cls_dict, globs): - init = globs["__attrs_init__"] - init.__annotations__ = annotations - cls_dict["__attrs_init__"] = self._add_method_dunders(init) - - self._script_snippets.append((script, globs, _attach_attrs_init)) - - return self - - def add_eq(self): - cd = self._cls_dict - - script, globs = _make_eq_script(self._attrs) - - def _attach_eq(cls_dict, globs): - cls_dict["__eq__"] = self._add_method_dunders(globs["__eq__"]) - - self._script_snippets.append((script, globs, _attach_eq)) - - cd["__ne__"] = __ne__ - - return self - - def add_order(self): - cd = self._cls_dict - - cd["__lt__"], cd["__le__"], cd["__gt__"], cd["__ge__"] = ( - self._add_method_dunders(meth) - for meth in _make_order(self._cls, self._attrs) - ) - - return self - - def add_setattr(self): - sa_attrs = {} - for a in self._attrs: - on_setattr = a.on_setattr or self._on_setattr - if on_setattr and on_setattr is not setters.NO_OP: - sa_attrs[a.name] = a, on_setattr - - if not sa_attrs: - return self - - if self._has_custom_setattr: - # We need to write a __setattr__ but there already is one! - msg = "Can't combine custom __setattr__ with on_setattr hooks." - raise ValueError(msg) - - # docstring comes from _add_method_dunders - def __setattr__(self, name, val): - try: - a, hook = sa_attrs[name] - except KeyError: - nval = val - else: - nval = hook(self, a, val) - - _OBJ_SETATTR(self, name, nval) - - self._cls_dict["__attrs_own_setattr__"] = True - self._cls_dict["__setattr__"] = self._add_method_dunders(__setattr__) - self._wrote_own_setattr = True - - return self - - def _add_method_dunders_unsafe(self, method: Callable) -> Callable: - """ - Add __module__ and __qualname__ to a *method*. - """ - method.__module__ = self._cls.__module__ - - method.__qualname__ = f"{self._cls.__qualname__}.{method.__name__}" - - method.__doc__ = ( - f"Method generated by attrs for class {self._cls.__qualname__}." - ) - - return method - - def _add_method_dunders_safe(self, method: Callable) -> Callable: - """ - Add __module__ and __qualname__ to a *method* if possible. - """ - with contextlib.suppress(AttributeError): - method.__module__ = self._cls.__module__ - - with contextlib.suppress(AttributeError): - method.__qualname__ = f"{self._cls.__qualname__}.{method.__name__}" - - with contextlib.suppress(AttributeError): - method.__doc__ = f"Method generated by attrs for class {self._cls.__qualname__}." - - return method - - -def _determine_attrs_eq_order(cmp, eq, order, default_eq): - """ - Validate the combination of *cmp*, *eq*, and *order*. Derive the effective - values of eq and order. If *eq* is None, set it to *default_eq*. - """ - if cmp is not None and any((eq is not None, order is not None)): - msg = "Don't mix `cmp` with `eq' and `order`." - raise ValueError(msg) - - # cmp takes precedence due to bw-compatibility. - if cmp is not None: - return cmp, cmp - - # If left None, equality is set to the specified default and ordering - # mirrors equality. - if eq is None: - eq = default_eq - - if order is None: - order = eq - - if eq is False and order is True: - msg = "`order` can only be True if `eq` is True too." - raise ValueError(msg) - - return eq, order - - -def _determine_attrib_eq_order(cmp, eq, order, default_eq): - """ - Validate the combination of *cmp*, *eq*, and *order*. Derive the effective - values of eq and order. If *eq* is None, set it to *default_eq*. - """ - if cmp is not None and any((eq is not None, order is not None)): - msg = "Don't mix `cmp` with `eq' and `order`." - raise ValueError(msg) - - def decide_callable_or_boolean(value): - """ - Decide whether a key function is used. - """ - if callable(value): - value, key = True, value - else: - key = None - return value, key - - # cmp takes precedence due to bw-compatibility. - if cmp is not None: - cmp, cmp_key = decide_callable_or_boolean(cmp) - return cmp, cmp_key, cmp, cmp_key - - # If left None, equality is set to the specified default and ordering - # mirrors equality. - if eq is None: - eq, eq_key = default_eq, None - else: - eq, eq_key = decide_callable_or_boolean(eq) - - if order is None: - order, order_key = eq, eq_key - else: - order, order_key = decide_callable_or_boolean(order) - - if eq is False and order is True: - msg = "`order` can only be True if `eq` is True too." - raise ValueError(msg) - - return eq, eq_key, order, order_key - - -def _determine_whether_to_implement( - cls, flag, auto_detect, dunders, default=True -): - """ - Check whether we should implement a set of methods for *cls*. - - *flag* is the argument passed into @attr.s like 'init', *auto_detect* the - same as passed into @attr.s and *dunders* is a tuple of attribute names - whose presence signal that the user has implemented it themselves. - - Return *default* if no reason for either for or against is found. - """ - if flag is True or flag is False: - return flag - - if flag is None and auto_detect is False: - return default - - # Logically, flag is None and auto_detect is True here. - for dunder in dunders: - if _has_own_attribute(cls, dunder): - return False - - return default - - -def attrs( - maybe_cls=None, - these=None, - repr_ns=None, - repr=None, - cmp=None, - hash=None, - init=None, - slots=False, - frozen=False, - weakref_slot=True, - str=False, - auto_attribs=False, - kw_only=False, - cache_hash=False, - auto_exc=False, - eq=None, - order=None, - auto_detect=False, - collect_by_mro=False, - getstate_setstate=None, - on_setattr=None, - field_transformer=None, - match_args=True, - unsafe_hash=None, -): - r""" - A class decorator that adds :term:`dunder methods` according to the - specified attributes using `attr.ib` or the *these* argument. - - Consider using `attrs.define` / `attrs.frozen` in new code (``attr.s`` will - *never* go away, though). - - Args: - repr_ns (str): - When using nested classes, there was no way in Python 2 to - automatically detect that. This argument allows to set a custom - name for a more meaningful ``repr`` output. This argument is - pointless in Python 3 and is therefore deprecated. - - .. caution:: - Refer to `attrs.define` for the rest of the parameters, but note that they - can have different defaults. - - Notably, leaving *on_setattr* as `None` will **not** add any hooks. - - .. versionadded:: 16.0.0 *slots* - .. versionadded:: 16.1.0 *frozen* - .. versionadded:: 16.3.0 *str* - .. versionadded:: 16.3.0 Support for ``__attrs_post_init__``. - .. versionchanged:: 17.1.0 - *hash* supports `None` as value which is also the default now. - .. versionadded:: 17.3.0 *auto_attribs* - .. versionchanged:: 18.1.0 - If *these* is passed, no attributes are deleted from the class body. - .. versionchanged:: 18.1.0 If *these* is ordered, the order is retained. - .. versionadded:: 18.2.0 *weakref_slot* - .. deprecated:: 18.2.0 - ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now raise a - `DeprecationWarning` if the classes compared are subclasses of - each other. ``__eq`` and ``__ne__`` never tried to compared subclasses - to each other. - .. versionchanged:: 19.2.0 - ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now do not consider - subclasses comparable anymore. - .. versionadded:: 18.2.0 *kw_only* - .. versionadded:: 18.2.0 *cache_hash* - .. versionadded:: 19.1.0 *auto_exc* - .. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01. - .. versionadded:: 19.2.0 *eq* and *order* - .. versionadded:: 20.1.0 *auto_detect* - .. versionadded:: 20.1.0 *collect_by_mro* - .. versionadded:: 20.1.0 *getstate_setstate* - .. versionadded:: 20.1.0 *on_setattr* - .. versionadded:: 20.3.0 *field_transformer* - .. versionchanged:: 21.1.0 - ``init=False`` injects ``__attrs_init__`` - .. versionchanged:: 21.1.0 Support for ``__attrs_pre_init__`` - .. versionchanged:: 21.1.0 *cmp* undeprecated - .. versionadded:: 21.3.0 *match_args* - .. versionadded:: 22.2.0 - *unsafe_hash* as an alias for *hash* (for :pep:`681` compliance). - .. deprecated:: 24.1.0 *repr_ns* - .. versionchanged:: 24.1.0 - Instances are not compared as tuples of attributes anymore, but using a - big ``and`` condition. This is faster and has more correct behavior for - uncomparable values like `math.nan`. - .. versionadded:: 24.1.0 - If a class has an *inherited* classmethod called - ``__attrs_init_subclass__``, it is executed after the class is created. - .. deprecated:: 24.1.0 *hash* is deprecated in favor of *unsafe_hash*. - """ - if repr_ns is not None: - import warnings - - warnings.warn( - DeprecationWarning( - "The `repr_ns` argument is deprecated and will be removed in or after August 2025." - ), - stacklevel=2, - ) - - eq_, order_ = _determine_attrs_eq_order(cmp, eq, order, None) - - # unsafe_hash takes precedence due to PEP 681. - if unsafe_hash is not None: - hash = unsafe_hash - - if isinstance(on_setattr, (list, tuple)): - on_setattr = setters.pipe(*on_setattr) - - def wrap(cls): - is_frozen = frozen or _has_frozen_base_class(cls) - is_exc = auto_exc is True and issubclass(cls, BaseException) - has_own_setattr = auto_detect and _has_own_attribute( - cls, "__setattr__" - ) - - if has_own_setattr and is_frozen: - msg = "Can't freeze a class with a custom __setattr__." - raise ValueError(msg) - - builder = _ClassBuilder( - cls, - these, - slots, - is_frozen, - weakref_slot, - _determine_whether_to_implement( - cls, - getstate_setstate, - auto_detect, - ("__getstate__", "__setstate__"), - default=slots, - ), - auto_attribs, - kw_only, - cache_hash, - is_exc, - collect_by_mro, - on_setattr, - has_own_setattr, - field_transformer, - ) - - if _determine_whether_to_implement( - cls, repr, auto_detect, ("__repr__",) - ): - builder.add_repr(repr_ns) - - if str is True: - builder.add_str() - - eq = _determine_whether_to_implement( - cls, eq_, auto_detect, ("__eq__", "__ne__") - ) - if not is_exc and eq is True: - builder.add_eq() - if not is_exc and _determine_whether_to_implement( - cls, order_, auto_detect, ("__lt__", "__le__", "__gt__", "__ge__") - ): - builder.add_order() - - if not frozen: - builder.add_setattr() - - nonlocal hash - if ( - hash is None - and auto_detect is True - and _has_own_attribute(cls, "__hash__") - ): - hash = False - - if hash is not True and hash is not False and hash is not None: - # Can't use `hash in` because 1 == True for example. - msg = "Invalid value for hash. Must be True, False, or None." - raise TypeError(msg) - - if hash is False or (hash is None and eq is False) or is_exc: - # Don't do anything. Should fall back to __object__'s __hash__ - # which is by id. - if cache_hash: - msg = "Invalid value for cache_hash. To use hash caching, hashing must be either explicitly or implicitly enabled." - raise TypeError(msg) - elif hash is True or ( - hash is None and eq is True and is_frozen is True - ): - # Build a __hash__ if told so, or if it's safe. - builder.add_hash() - else: - # Raise TypeError on attempts to hash. - if cache_hash: - msg = "Invalid value for cache_hash. To use hash caching, hashing must be either explicitly or implicitly enabled." - raise TypeError(msg) - builder.make_unhashable() - - if _determine_whether_to_implement( - cls, init, auto_detect, ("__init__",) - ): - builder.add_init() - else: - builder.add_attrs_init() - if cache_hash: - msg = "Invalid value for cache_hash. To use hash caching, init must be True." - raise TypeError(msg) - - if PY_3_13_PLUS and not _has_own_attribute(cls, "__replace__"): - builder.add_replace() - - if ( - PY_3_10_PLUS - and match_args - and not _has_own_attribute(cls, "__match_args__") - ): - builder.add_match_args() - - return builder.build_class() - - # maybe_cls's type depends on the usage of the decorator. It's a class - # if it's used as `@attrs` but `None` if used as `@attrs()`. - if maybe_cls is None: - return wrap - - return wrap(maybe_cls) - - -_attrs = attrs -""" -Internal alias so we can use it in functions that take an argument called -*attrs*. -""" - - -def _has_frozen_base_class(cls): - """ - Check whether *cls* has a frozen ancestor by looking at its - __setattr__. - """ - return cls.__setattr__ is _frozen_setattrs - - -def _generate_unique_filename(cls: type, func_name: str) -> str: - """ - Create a "filename" suitable for a function being generated. - """ - return ( - f"" - ) - - -def _make_hash_script( - cls: type, attrs: list[Attribute], frozen: bool, cache_hash: bool -) -> tuple[str, dict]: - attrs = tuple( - a for a in attrs if a.hash is True or (a.hash is None and a.eq is True) - ) - - tab = " " - - type_hash = hash(_generate_unique_filename(cls, "hash")) - # If eq is custom generated, we need to include the functions in globs - globs = {} - - hash_def = "def __hash__(self" - hash_func = "hash((" - closing_braces = "))" - if not cache_hash: - hash_def += "):" - else: - hash_def += ", *" - - hash_def += ", _cache_wrapper=__import__('attr._make')._make._CacheHashWrapper):" - hash_func = "_cache_wrapper(" + hash_func - closing_braces += ")" - - method_lines = [hash_def] - - def append_hash_computation_lines(prefix, indent): - """ - Generate the code for actually computing the hash code. - Below this will either be returned directly or used to compute - a value which is then cached, depending on the value of cache_hash - """ - - method_lines.extend( - [ - indent + prefix + hash_func, - indent + f" {type_hash},", - ] - ) - - for a in attrs: - if a.eq_key: - cmp_name = f"_{a.name}_key" - globs[cmp_name] = a.eq_key - method_lines.append( - indent + f" {cmp_name}(self.{a.name})," - ) - else: - method_lines.append(indent + f" self.{a.name},") - - method_lines.append(indent + " " + closing_braces) - - if cache_hash: - method_lines.append(tab + f"if self.{_HASH_CACHE_FIELD} is None:") - if frozen: - append_hash_computation_lines( - f"object.__setattr__(self, '{_HASH_CACHE_FIELD}', ", tab * 2 - ) - method_lines.append(tab * 2 + ")") # close __setattr__ - else: - append_hash_computation_lines( - f"self.{_HASH_CACHE_FIELD} = ", tab * 2 - ) - method_lines.append(tab + f"return self.{_HASH_CACHE_FIELD}") - else: - append_hash_computation_lines("return ", tab) - - script = "\n".join(method_lines) - return script, globs - - -def _add_hash(cls: type, attrs: list[Attribute]): - """ - Add a hash method to *cls*. - """ - script, globs = _make_hash_script( - cls, attrs, frozen=False, cache_hash=False - ) - _compile_and_eval( - script, globs, filename=_generate_unique_filename(cls, "__hash__") - ) - cls.__hash__ = globs["__hash__"] - return cls - - -def __ne__(self, other): - """ - Check equality and either forward a NotImplemented or - return the result negated. - """ - result = self.__eq__(other) - if result is NotImplemented: - return NotImplemented - - return not result - - -def _make_eq_script(attrs: list) -> tuple[str, dict]: - """ - Create __eq__ method for *cls* with *attrs*. - """ - attrs = [a for a in attrs if a.eq] - - lines = [ - "def __eq__(self, other):", - " if other.__class__ is not self.__class__:", - " return NotImplemented", - ] - - globs = {} - if attrs: - lines.append(" return (") - for a in attrs: - if a.eq_key: - cmp_name = f"_{a.name}_key" - # Add the key function to the global namespace - # of the evaluated function. - globs[cmp_name] = a.eq_key - lines.append( - f" {cmp_name}(self.{a.name}) == {cmp_name}(other.{a.name})" - ) - else: - lines.append(f" self.{a.name} == other.{a.name}") - if a is not attrs[-1]: - lines[-1] = f"{lines[-1]} and" - lines.append(" )") - else: - lines.append(" return True") - - script = "\n".join(lines) - - return script, globs - - -def _make_order(cls, attrs): - """ - Create ordering methods for *cls* with *attrs*. - """ - attrs = [a for a in attrs if a.order] - - def attrs_to_tuple(obj): - """ - Save us some typing. - """ - return tuple( - key(value) if key else value - for value, key in ( - (getattr(obj, a.name), a.order_key) for a in attrs - ) - ) - - def __lt__(self, other): - """ - Automatically created by attrs. - """ - if other.__class__ is self.__class__: - return attrs_to_tuple(self) < attrs_to_tuple(other) - - return NotImplemented - - def __le__(self, other): - """ - Automatically created by attrs. - """ - if other.__class__ is self.__class__: - return attrs_to_tuple(self) <= attrs_to_tuple(other) - - return NotImplemented - - def __gt__(self, other): - """ - Automatically created by attrs. - """ - if other.__class__ is self.__class__: - return attrs_to_tuple(self) > attrs_to_tuple(other) - - return NotImplemented - - def __ge__(self, other): - """ - Automatically created by attrs. - """ - if other.__class__ is self.__class__: - return attrs_to_tuple(self) >= attrs_to_tuple(other) - - return NotImplemented - - return __lt__, __le__, __gt__, __ge__ - - -def _add_eq(cls, attrs=None): - """ - Add equality methods to *cls* with *attrs*. - """ - if attrs is None: - attrs = cls.__attrs_attrs__ - - script, globs = _make_eq_script(attrs) - _compile_and_eval( - script, globs, filename=_generate_unique_filename(cls, "__eq__") - ) - cls.__eq__ = globs["__eq__"] - cls.__ne__ = __ne__ - - return cls - - -def _make_repr_script(attrs, ns) -> tuple[str, dict]: - """ - Create the source and globs for a __repr__ and return it. - """ - # Figure out which attributes to include, and which function to use to - # format them. The a.repr value can be either bool or a custom - # callable. - attr_names_with_reprs = tuple( - (a.name, (repr if a.repr is True else a.repr), a.init) - for a in attrs - if a.repr is not False - ) - globs = { - name + "_repr": r for name, r, _ in attr_names_with_reprs if r != repr - } - globs["_compat"] = _compat - globs["AttributeError"] = AttributeError - globs["NOTHING"] = NOTHING - attribute_fragments = [] - for name, r, i in attr_names_with_reprs: - accessor = ( - "self." + name if i else 'getattr(self, "' + name + '", NOTHING)' - ) - fragment = ( - "%s={%s!r}" % (name, accessor) - if r == repr - else "%s={%s_repr(%s)}" % (name, name, accessor) - ) - attribute_fragments.append(fragment) - repr_fragment = ", ".join(attribute_fragments) - - if ns is None: - cls_name_fragment = '{self.__class__.__qualname__.rsplit(">.", 1)[-1]}' - else: - cls_name_fragment = ns + ".{self.__class__.__name__}" - - lines = [ - "def __repr__(self):", - " try:", - " already_repring = _compat.repr_context.already_repring", - " except AttributeError:", - " already_repring = {id(self),}", - " _compat.repr_context.already_repring = already_repring", - " else:", - " if id(self) in already_repring:", - " return '...'", - " else:", - " already_repring.add(id(self))", - " try:", - f" return f'{cls_name_fragment}({repr_fragment})'", - " finally:", - " already_repring.remove(id(self))", - ] - - return "\n".join(lines), globs - - -def _add_repr(cls, ns=None, attrs=None): - """ - Add a repr method to *cls*. - """ - if attrs is None: - attrs = cls.__attrs_attrs__ - - script, globs = _make_repr_script(attrs, ns) - _compile_and_eval( - script, globs, filename=_generate_unique_filename(cls, "__repr__") - ) - cls.__repr__ = globs["__repr__"] - return cls - - -def fields(cls): - """ - Return the tuple of *attrs* attributes for a class. - - The tuple also allows accessing the fields by their names (see below for - examples). - - Args: - cls (type): Class to introspect. - - Raises: - TypeError: If *cls* is not a class. - - attrs.exceptions.NotAnAttrsClassError: - If *cls* is not an *attrs* class. - - Returns: - tuple (with name accessors) of `attrs.Attribute` - - .. versionchanged:: 16.2.0 Returned tuple allows accessing the fields - by name. - .. versionchanged:: 23.1.0 Add support for generic classes. - """ - generic_base = get_generic_base(cls) - - if generic_base is None and not isinstance(cls, type): - msg = "Passed object must be a class." - raise TypeError(msg) - - attrs = getattr(cls, "__attrs_attrs__", None) - - if attrs is None: - if generic_base is not None: - attrs = getattr(generic_base, "__attrs_attrs__", None) - if attrs is not None: - # Even though this is global state, stick it on here to speed - # it up. We rely on `cls` being cached for this to be - # efficient. - cls.__attrs_attrs__ = attrs - return attrs - msg = f"{cls!r} is not an attrs-decorated class." - raise NotAnAttrsClassError(msg) - - return attrs - - -def fields_dict(cls): - """ - Return an ordered dictionary of *attrs* attributes for a class, whose keys - are the attribute names. - - Args: - cls (type): Class to introspect. - - Raises: - TypeError: If *cls* is not a class. - - attrs.exceptions.NotAnAttrsClassError: - If *cls* is not an *attrs* class. - - Returns: - dict[str, attrs.Attribute]: Dict of attribute name to definition - - .. versionadded:: 18.1.0 - """ - if not isinstance(cls, type): - msg = "Passed object must be a class." - raise TypeError(msg) - attrs = getattr(cls, "__attrs_attrs__", None) - if attrs is None: - msg = f"{cls!r} is not an attrs-decorated class." - raise NotAnAttrsClassError(msg) - return {a.name: a for a in attrs} - - -def validate(inst): - """ - Validate all attributes on *inst* that have a validator. - - Leaves all exceptions through. - - Args: - inst: Instance of a class with *attrs* attributes. - """ - if _config._run_validators is False: - return - - for a in fields(inst.__class__): - v = a.validator - if v is not None: - v(inst, a, getattr(inst, a.name)) - - -def _is_slot_attr(a_name, base_attr_map): - """ - Check if the attribute name comes from a slot class. - """ - cls = base_attr_map.get(a_name) - return cls and "__slots__" in cls.__dict__ - - -def _make_init_script( - cls, - attrs, - pre_init, - pre_init_has_args, - post_init, - frozen, - slots, - cache_hash, - base_attr_map, - is_exc, - cls_on_setattr, - attrs_init, -) -> tuple[str, dict, dict]: - has_cls_on_setattr = ( - cls_on_setattr is not None and cls_on_setattr is not setters.NO_OP - ) - - if frozen and has_cls_on_setattr: - msg = "Frozen classes can't use on_setattr." - raise ValueError(msg) - - needs_cached_setattr = cache_hash or frozen - filtered_attrs = [] - attr_dict = {} - for a in attrs: - if not a.init and a.default is NOTHING: - continue - - filtered_attrs.append(a) - attr_dict[a.name] = a - - if a.on_setattr is not None: - if frozen is True: - msg = "Frozen classes can't use on_setattr." - raise ValueError(msg) - - needs_cached_setattr = True - elif has_cls_on_setattr and a.on_setattr is not setters.NO_OP: - needs_cached_setattr = True - - script, globs, annotations = _attrs_to_init_script( - filtered_attrs, - frozen, - slots, - pre_init, - pre_init_has_args, - post_init, - cache_hash, - base_attr_map, - is_exc, - needs_cached_setattr, - has_cls_on_setattr, - "__attrs_init__" if attrs_init else "__init__", - ) - if cls.__module__ in sys.modules: - # This makes typing.get_type_hints(CLS.__init__) resolve string types. - globs.update(sys.modules[cls.__module__].__dict__) - - globs.update({"NOTHING": NOTHING, "attr_dict": attr_dict}) - - if needs_cached_setattr: - # Save the lookup overhead in __init__ if we need to circumvent - # setattr hooks. - globs["_cached_setattr_get"] = _OBJ_SETATTR.__get__ - - return script, globs, annotations - - -def _setattr(attr_name: str, value_var: str, has_on_setattr: bool) -> str: - """ - Use the cached object.setattr to set *attr_name* to *value_var*. - """ - return f"_setattr('{attr_name}', {value_var})" - - -def _setattr_with_converter( - attr_name: str, value_var: str, has_on_setattr: bool, converter: Converter -) -> str: - """ - Use the cached object.setattr to set *attr_name* to *value_var*, but run - its converter first. - """ - return f"_setattr('{attr_name}', {converter._fmt_converter_call(attr_name, value_var)})" - - -def _assign(attr_name: str, value: str, has_on_setattr: bool) -> str: - """ - Unless *attr_name* has an on_setattr hook, use normal assignment. Otherwise - relegate to _setattr. - """ - if has_on_setattr: - return _setattr(attr_name, value, True) - - return f"self.{attr_name} = {value}" - - -def _assign_with_converter( - attr_name: str, value_var: str, has_on_setattr: bool, converter: Converter -) -> str: - """ - Unless *attr_name* has an on_setattr hook, use normal assignment after - conversion. Otherwise relegate to _setattr_with_converter. - """ - if has_on_setattr: - return _setattr_with_converter(attr_name, value_var, True, converter) - - return f"self.{attr_name} = {converter._fmt_converter_call(attr_name, value_var)}" - - -def _determine_setters( - frozen: bool, slots: bool, base_attr_map: dict[str, type] -): - """ - Determine the correct setter functions based on whether a class is frozen - and/or slotted. - """ - if frozen is True: - if slots is True: - return (), _setattr, _setattr_with_converter - - # Dict frozen classes assign directly to __dict__. - # But only if the attribute doesn't come from an ancestor slot - # class. - # Note _inst_dict will be used again below if cache_hash is True - - def fmt_setter( - attr_name: str, value_var: str, has_on_setattr: bool - ) -> str: - if _is_slot_attr(attr_name, base_attr_map): - return _setattr(attr_name, value_var, has_on_setattr) - - return f"_inst_dict['{attr_name}'] = {value_var}" - - def fmt_setter_with_converter( - attr_name: str, - value_var: str, - has_on_setattr: bool, - converter: Converter, - ) -> str: - if has_on_setattr or _is_slot_attr(attr_name, base_attr_map): - return _setattr_with_converter( - attr_name, value_var, has_on_setattr, converter - ) - - return f"_inst_dict['{attr_name}'] = {converter._fmt_converter_call(attr_name, value_var)}" - - return ( - ("_inst_dict = self.__dict__",), - fmt_setter, - fmt_setter_with_converter, - ) - - # Not frozen -- we can just assign directly. - return (), _assign, _assign_with_converter - - -def _attrs_to_init_script( - attrs: list[Attribute], - is_frozen: bool, - is_slotted: bool, - call_pre_init: bool, - pre_init_has_args: bool, - call_post_init: bool, - does_cache_hash: bool, - base_attr_map: dict[str, type], - is_exc: bool, - needs_cached_setattr: bool, - has_cls_on_setattr: bool, - method_name: str, -) -> tuple[str, dict, dict]: - """ - Return a script of an initializer for *attrs*, a dict of globals, and - annotations for the initializer. - - The globals are required by the generated script. - """ - lines = ["self.__attrs_pre_init__()"] if call_pre_init else [] - - if needs_cached_setattr: - lines.append( - # Circumvent the __setattr__ descriptor to save one lookup per - # assignment. Note _setattr will be used again below if - # does_cache_hash is True. - "_setattr = _cached_setattr_get(self)" - ) - - extra_lines, fmt_setter, fmt_setter_with_converter = _determine_setters( - is_frozen, is_slotted, base_attr_map - ) - lines.extend(extra_lines) - - args = [] - kw_only_args = [] - attrs_to_validate = [] - - # This is a dictionary of names to validator and converter callables. - # Injecting this into __init__ globals lets us avoid lookups. - names_for_globals = {} - annotations = {"return": None} - - for a in attrs: - if a.validator: - attrs_to_validate.append(a) - - attr_name = a.name - has_on_setattr = a.on_setattr is not None or ( - a.on_setattr is not setters.NO_OP and has_cls_on_setattr - ) - # a.alias is set to maybe-mangled attr_name in _ClassBuilder if not - # explicitly provided - arg_name = a.alias - - has_factory = isinstance(a.default, Factory) - maybe_self = "self" if has_factory and a.default.takes_self else "" - - if a.converter is not None and not isinstance(a.converter, Converter): - converter = Converter(a.converter) - else: - converter = a.converter - - if a.init is False: - if has_factory: - init_factory_name = _INIT_FACTORY_PAT % (a.name,) - if converter is not None: - lines.append( - fmt_setter_with_converter( - attr_name, - init_factory_name + f"({maybe_self})", - has_on_setattr, - converter, - ) - ) - names_for_globals[converter._get_global_name(a.name)] = ( - converter.converter - ) - else: - lines.append( - fmt_setter( - attr_name, - init_factory_name + f"({maybe_self})", - has_on_setattr, - ) - ) - names_for_globals[init_factory_name] = a.default.factory - elif converter is not None: - lines.append( - fmt_setter_with_converter( - attr_name, - f"attr_dict['{attr_name}'].default", - has_on_setattr, - converter, - ) - ) - names_for_globals[converter._get_global_name(a.name)] = ( - converter.converter - ) - else: - lines.append( - fmt_setter( - attr_name, - f"attr_dict['{attr_name}'].default", - has_on_setattr, - ) - ) - elif a.default is not NOTHING and not has_factory: - arg = f"{arg_name}=attr_dict['{attr_name}'].default" - if a.kw_only: - kw_only_args.append(arg) - else: - args.append(arg) - - if converter is not None: - lines.append( - fmt_setter_with_converter( - attr_name, arg_name, has_on_setattr, converter - ) - ) - names_for_globals[converter._get_global_name(a.name)] = ( - converter.converter - ) - else: - lines.append(fmt_setter(attr_name, arg_name, has_on_setattr)) - - elif has_factory: - arg = f"{arg_name}=NOTHING" - if a.kw_only: - kw_only_args.append(arg) - else: - args.append(arg) - lines.append(f"if {arg_name} is not NOTHING:") - - init_factory_name = _INIT_FACTORY_PAT % (a.name,) - if converter is not None: - lines.append( - " " - + fmt_setter_with_converter( - attr_name, arg_name, has_on_setattr, converter - ) - ) - lines.append("else:") - lines.append( - " " - + fmt_setter_with_converter( - attr_name, - init_factory_name + "(" + maybe_self + ")", - has_on_setattr, - converter, - ) - ) - names_for_globals[converter._get_global_name(a.name)] = ( - converter.converter - ) - else: - lines.append( - " " + fmt_setter(attr_name, arg_name, has_on_setattr) - ) - lines.append("else:") - lines.append( - " " - + fmt_setter( - attr_name, - init_factory_name + "(" + maybe_self + ")", - has_on_setattr, - ) - ) - names_for_globals[init_factory_name] = a.default.factory - else: - if a.kw_only: - kw_only_args.append(arg_name) - else: - args.append(arg_name) - - if converter is not None: - lines.append( - fmt_setter_with_converter( - attr_name, arg_name, has_on_setattr, converter - ) - ) - names_for_globals[converter._get_global_name(a.name)] = ( - converter.converter - ) - else: - lines.append(fmt_setter(attr_name, arg_name, has_on_setattr)) - - if a.init is True: - if a.type is not None and converter is None: - annotations[arg_name] = a.type - elif converter is not None and converter._first_param_type: - # Use the type from the converter if present. - annotations[arg_name] = converter._first_param_type - - if attrs_to_validate: # we can skip this if there are no validators. - names_for_globals["_config"] = _config - lines.append("if _config._run_validators is True:") - for a in attrs_to_validate: - val_name = "__attr_validator_" + a.name - attr_name = "__attr_" + a.name - lines.append(f" {val_name}(self, {attr_name}, self.{a.name})") - names_for_globals[val_name] = a.validator - names_for_globals[attr_name] = a - - if call_post_init: - lines.append("self.__attrs_post_init__()") - - # Because this is set only after __attrs_post_init__ is called, a crash - # will result if post-init tries to access the hash code. This seemed - # preferable to setting this beforehand, in which case alteration to field - # values during post-init combined with post-init accessing the hash code - # would result in silent bugs. - if does_cache_hash: - if is_frozen: - if is_slotted: - init_hash_cache = f"_setattr('{_HASH_CACHE_FIELD}', None)" - else: - init_hash_cache = f"_inst_dict['{_HASH_CACHE_FIELD}'] = None" - else: - init_hash_cache = f"self.{_HASH_CACHE_FIELD} = None" - lines.append(init_hash_cache) - - # For exceptions we rely on BaseException.__init__ for proper - # initialization. - if is_exc: - vals = ",".join(f"self.{a.name}" for a in attrs if a.init) - - lines.append(f"BaseException.__init__(self, {vals})") - - args = ", ".join(args) - pre_init_args = args - if kw_only_args: - # leading comma & kw_only args - args += f"{', ' if args else ''}*, {', '.join(kw_only_args)}" - pre_init_kw_only_args = ", ".join( - [ - f"{kw_arg_name}={kw_arg_name}" - # We need to remove the defaults from the kw_only_args. - for kw_arg_name in (kwa.split("=")[0] for kwa in kw_only_args) - ] - ) - pre_init_args += ", " if pre_init_args else "" - pre_init_args += pre_init_kw_only_args - - if call_pre_init and pre_init_has_args: - # If pre init method has arguments, pass same arguments as `__init__`. - lines[0] = f"self.__attrs_pre_init__({pre_init_args})" - - # Python <3.12 doesn't allow backslashes in f-strings. - NL = "\n " - return ( - f"""def {method_name}(self, {args}): - {NL.join(lines) if lines else "pass"} -""", - names_for_globals, - annotations, - ) - - -def _default_init_alias_for(name: str) -> str: - """ - The default __init__ parameter name for a field. - - This performs private-name adjustment via leading-unscore stripping, - and is the default value of Attribute.alias if not provided. - """ - - return name.lstrip("_") - - -class Attribute: - """ - *Read-only* representation of an attribute. - - .. warning:: - - You should never instantiate this class yourself. - - The class has *all* arguments of `attr.ib` (except for ``factory`` which is - only syntactic sugar for ``default=Factory(...)`` plus the following: - - - ``name`` (`str`): The name of the attribute. - - ``alias`` (`str`): The __init__ parameter name of the attribute, after - any explicit overrides and default private-attribute-name handling. - - ``inherited`` (`bool`): Whether or not that attribute has been inherited - from a base class. - - ``eq_key`` and ``order_key`` (`typing.Callable` or `None`): The - callables that are used for comparing and ordering objects by this - attribute, respectively. These are set by passing a callable to - `attr.ib`'s ``eq``, ``order``, or ``cmp`` arguments. See also - :ref:`comparison customization `. - - Instances of this class are frequently used for introspection purposes - like: - - - `fields` returns a tuple of them. - - Validators get them passed as the first argument. - - The :ref:`field transformer ` hook receives a list of - them. - - The ``alias`` property exposes the __init__ parameter name of the field, - with any overrides and default private-attribute handling applied. - - - .. versionadded:: 20.1.0 *inherited* - .. versionadded:: 20.1.0 *on_setattr* - .. versionchanged:: 20.2.0 *inherited* is not taken into account for - equality checks and hashing anymore. - .. versionadded:: 21.1.0 *eq_key* and *order_key* - .. versionadded:: 22.2.0 *alias* - - For the full version history of the fields, see `attr.ib`. - """ - - # These slots must NOT be reordered because we use them later for - # instantiation. - __slots__ = ( # noqa: RUF023 - "name", - "default", - "validator", - "repr", - "eq", - "eq_key", - "order", - "order_key", - "hash", - "init", - "metadata", - "type", - "converter", - "kw_only", - "inherited", - "on_setattr", - "alias", - ) - - def __init__( - self, - name, - default, - validator, - repr, - cmp, # XXX: unused, remove along with other cmp code. - hash, - init, - inherited, - metadata=None, - type=None, - converter=None, - kw_only=False, - eq=None, - eq_key=None, - order=None, - order_key=None, - on_setattr=None, - alias=None, - ): - eq, eq_key, order, order_key = _determine_attrib_eq_order( - cmp, eq_key or eq, order_key or order, True - ) - - # Cache this descriptor here to speed things up later. - bound_setattr = _OBJ_SETATTR.__get__(self) - - # Despite the big red warning, people *do* instantiate `Attribute` - # themselves. - bound_setattr("name", name) - bound_setattr("default", default) - bound_setattr("validator", validator) - bound_setattr("repr", repr) - bound_setattr("eq", eq) - bound_setattr("eq_key", eq_key) - bound_setattr("order", order) - bound_setattr("order_key", order_key) - bound_setattr("hash", hash) - bound_setattr("init", init) - bound_setattr("converter", converter) - bound_setattr( - "metadata", - ( - types.MappingProxyType(dict(metadata)) # Shallow copy - if metadata - else _EMPTY_METADATA_SINGLETON - ), - ) - bound_setattr("type", type) - bound_setattr("kw_only", kw_only) - bound_setattr("inherited", inherited) - bound_setattr("on_setattr", on_setattr) - bound_setattr("alias", alias) - - def __setattr__(self, name, value): - raise FrozenInstanceError - - @classmethod - def from_counting_attr(cls, name: str, ca: _CountingAttr, type=None): - # type holds the annotated value. deal with conflicts: - if type is None: - type = ca.type - elif ca.type is not None: - msg = f"Type annotation and type argument cannot both be present for '{name}'." - raise ValueError(msg) - return cls( - name, - ca._default, - ca._validator, - ca.repr, - None, - ca.hash, - ca.init, - False, - ca.metadata, - type, - ca.converter, - ca.kw_only, - ca.eq, - ca.eq_key, - ca.order, - ca.order_key, - ca.on_setattr, - ca.alias, - ) - - # Don't use attrs.evolve since fields(Attribute) doesn't work - def evolve(self, **changes): - """ - Copy *self* and apply *changes*. - - This works similarly to `attrs.evolve` but that function does not work - with :class:`attrs.Attribute`. - - It is mainly meant to be used for `transform-fields`. - - .. versionadded:: 20.3.0 - """ - new = copy.copy(self) - - new._setattrs(changes.items()) - - return new - - # Don't use _add_pickle since fields(Attribute) doesn't work - def __getstate__(self): - """ - Play nice with pickle. - """ - return tuple( - getattr(self, name) if name != "metadata" else dict(self.metadata) - for name in self.__slots__ - ) - - def __setstate__(self, state): - """ - Play nice with pickle. - """ - self._setattrs(zip(self.__slots__, state)) - - def _setattrs(self, name_values_pairs): - bound_setattr = _OBJ_SETATTR.__get__(self) - for name, value in name_values_pairs: - if name != "metadata": - bound_setattr(name, value) - else: - bound_setattr( - name, - ( - types.MappingProxyType(dict(value)) - if value - else _EMPTY_METADATA_SINGLETON - ), - ) - - -_a = [ - Attribute( - name=name, - default=NOTHING, - validator=None, - repr=True, - cmp=None, - eq=True, - order=False, - hash=(name != "metadata"), - init=True, - inherited=False, - alias=_default_init_alias_for(name), - ) - for name in Attribute.__slots__ -] - -Attribute = _add_hash( - _add_eq( - _add_repr(Attribute, attrs=_a), - attrs=[a for a in _a if a.name != "inherited"], - ), - attrs=[a for a in _a if a.hash and a.name != "inherited"], -) - - -class _CountingAttr: - """ - Intermediate representation of attributes that uses a counter to preserve - the order in which the attributes have been defined. - - *Internal* data structure of the attrs library. Running into is most - likely the result of a bug like a forgotten `@attr.s` decorator. - """ - - __slots__ = ( - "_default", - "_validator", - "alias", - "converter", - "counter", - "eq", - "eq_key", - "hash", - "init", - "kw_only", - "metadata", - "on_setattr", - "order", - "order_key", - "repr", - "type", - ) - __attrs_attrs__ = ( - *tuple( - Attribute( - name=name, - alias=_default_init_alias_for(name), - default=NOTHING, - validator=None, - repr=True, - cmp=None, - hash=True, - init=True, - kw_only=False, - eq=True, - eq_key=None, - order=False, - order_key=None, - inherited=False, - on_setattr=None, - ) - for name in ( - "counter", - "_default", - "repr", - "eq", - "order", - "hash", - "init", - "on_setattr", - "alias", - ) - ), - Attribute( - name="metadata", - alias="metadata", - default=None, - validator=None, - repr=True, - cmp=None, - hash=False, - init=True, - kw_only=False, - eq=True, - eq_key=None, - order=False, - order_key=None, - inherited=False, - on_setattr=None, - ), - ) - cls_counter = 0 - - def __init__( - self, - default, - validator, - repr, - cmp, - hash, - init, - converter, - metadata, - type, - kw_only, - eq, - eq_key, - order, - order_key, - on_setattr, - alias, - ): - _CountingAttr.cls_counter += 1 - self.counter = _CountingAttr.cls_counter - self._default = default - self._validator = validator - self.converter = converter - self.repr = repr - self.eq = eq - self.eq_key = eq_key - self.order = order - self.order_key = order_key - self.hash = hash - self.init = init - self.metadata = metadata - self.type = type - self.kw_only = kw_only - self.on_setattr = on_setattr - self.alias = alias - - def validator(self, meth): - """ - Decorator that adds *meth* to the list of validators. - - Returns *meth* unchanged. - - .. versionadded:: 17.1.0 - """ - if self._validator is None: - self._validator = meth - else: - self._validator = and_(self._validator, meth) - return meth - - def default(self, meth): - """ - Decorator that allows to set the default for an attribute. - - Returns *meth* unchanged. - - Raises: - DefaultAlreadySetError: If default has been set before. - - .. versionadded:: 17.1.0 - """ - if self._default is not NOTHING: - raise DefaultAlreadySetError - - self._default = Factory(meth, takes_self=True) - - return meth - - -_CountingAttr = _add_eq(_add_repr(_CountingAttr)) - - -class Factory: - """ - Stores a factory callable. - - If passed as the default value to `attrs.field`, the factory is used to - generate a new value. - - Args: - factory (typing.Callable): - A callable that takes either none or exactly one mandatory - positional argument depending on *takes_self*. - - takes_self (bool): - Pass the partially initialized instance that is being initialized - as a positional argument. - - .. versionadded:: 17.1.0 *takes_self* - """ - - __slots__ = ("factory", "takes_self") - - def __init__(self, factory, takes_self=False): - self.factory = factory - self.takes_self = takes_self - - def __getstate__(self): - """ - Play nice with pickle. - """ - return tuple(getattr(self, name) for name in self.__slots__) - - def __setstate__(self, state): - """ - Play nice with pickle. - """ - for name, value in zip(self.__slots__, state): - setattr(self, name, value) - - -_f = [ - Attribute( - name=name, - default=NOTHING, - validator=None, - repr=True, - cmp=None, - eq=True, - order=False, - hash=True, - init=True, - inherited=False, - ) - for name in Factory.__slots__ -] - -Factory = _add_hash(_add_eq(_add_repr(Factory, attrs=_f), attrs=_f), attrs=_f) - - -class Converter: - """ - Stores a converter callable. - - Allows for the wrapped converter to take additional arguments. The - arguments are passed in the order they are documented. - - Args: - converter (Callable): A callable that converts the passed value. - - takes_self (bool): - Pass the partially initialized instance that is being initialized - as a positional argument. (default: `False`) - - takes_field (bool): - Pass the field definition (an :class:`Attribute`) into the - converter as a positional argument. (default: `False`) - - .. versionadded:: 24.1.0 - """ - - __slots__ = ( - "__call__", - "_first_param_type", - "_global_name", - "converter", - "takes_field", - "takes_self", - ) - - def __init__(self, converter, *, takes_self=False, takes_field=False): - self.converter = converter - self.takes_self = takes_self - self.takes_field = takes_field - - ex = _AnnotationExtractor(converter) - self._first_param_type = ex.get_first_param_type() - - if not (self.takes_self or self.takes_field): - self.__call__ = lambda value, _, __: self.converter(value) - elif self.takes_self and not self.takes_field: - self.__call__ = lambda value, instance, __: self.converter( - value, instance - ) - elif not self.takes_self and self.takes_field: - self.__call__ = lambda value, __, field: self.converter( - value, field - ) - else: - self.__call__ = lambda value, instance, field: self.converter( - value, instance, field - ) - - rt = ex.get_return_type() - if rt is not None: - self.__call__.__annotations__["return"] = rt - - @staticmethod - def _get_global_name(attr_name: str) -> str: - """ - Return the name that a converter for an attribute name *attr_name* - would have. - """ - return f"__attr_converter_{attr_name}" - - def _fmt_converter_call(self, attr_name: str, value_var: str) -> str: - """ - Return a string that calls the converter for an attribute name - *attr_name* and the value in variable named *value_var* according to - `self.takes_self` and `self.takes_field`. - """ - if not (self.takes_self or self.takes_field): - return f"{self._get_global_name(attr_name)}({value_var})" - - if self.takes_self and self.takes_field: - return f"{self._get_global_name(attr_name)}({value_var}, self, attr_dict['{attr_name}'])" - - if self.takes_self: - return f"{self._get_global_name(attr_name)}({value_var}, self)" - - return f"{self._get_global_name(attr_name)}({value_var}, attr_dict['{attr_name}'])" - - def __getstate__(self): - """ - Return a dict containing only converter and takes_self -- the rest gets - computed when loading. - """ - return { - "converter": self.converter, - "takes_self": self.takes_self, - "takes_field": self.takes_field, - } - - def __setstate__(self, state): - """ - Load instance from state. - """ - self.__init__(**state) - - -_f = [ - Attribute( - name=name, - default=NOTHING, - validator=None, - repr=True, - cmp=None, - eq=True, - order=False, - hash=True, - init=True, - inherited=False, - ) - for name in ("converter", "takes_self", "takes_field") -] - -Converter = _add_hash( - _add_eq(_add_repr(Converter, attrs=_f), attrs=_f), attrs=_f -) - - -def make_class( - name, attrs, bases=(object,), class_body=None, **attributes_arguments -): - r""" - A quick way to create a new class called *name* with *attrs*. - - .. note:: - - ``make_class()`` is a thin wrapper around `attr.s`, not `attrs.define` - which means that it doesn't come with some of the improved defaults. - - For example, if you want the same ``on_setattr`` behavior as in - `attrs.define`, you have to pass the hooks yourself: ``make_class(..., - on_setattr=setters.pipe(setters.convert, setters.validate)`` - - .. warning:: - - It is *your* duty to ensure that the class name and the attribute names - are valid identifiers. ``make_class()`` will *not* validate them for - you. - - Args: - name (str): The name for the new class. - - attrs (list | dict): - A list of names or a dictionary of mappings of names to `attr.ib`\ - s / `attrs.field`\ s. - - The order is deduced from the order of the names or attributes - inside *attrs*. Otherwise the order of the definition of the - attributes is used. - - bases (tuple[type, ...]): Classes that the new class will subclass. - - class_body (dict): - An optional dictionary of class attributes for the new class. - - attributes_arguments: Passed unmodified to `attr.s`. - - Returns: - type: A new class with *attrs*. - - .. versionadded:: 17.1.0 *bases* - .. versionchanged:: 18.1.0 If *attrs* is ordered, the order is retained. - .. versionchanged:: 23.2.0 *class_body* - .. versionchanged:: 25.2.0 Class names can now be unicode. - """ - # Class identifiers are converted into the normal form NFKC while parsing - name = unicodedata.normalize("NFKC", name) - - if isinstance(attrs, dict): - cls_dict = attrs - elif isinstance(attrs, (list, tuple)): - cls_dict = {a: attrib() for a in attrs} - else: - msg = "attrs argument must be a dict or a list." - raise TypeError(msg) - - pre_init = cls_dict.pop("__attrs_pre_init__", None) - post_init = cls_dict.pop("__attrs_post_init__", None) - user_init = cls_dict.pop("__init__", None) - - body = {} - if class_body is not None: - body.update(class_body) - if pre_init is not None: - body["__attrs_pre_init__"] = pre_init - if post_init is not None: - body["__attrs_post_init__"] = post_init - if user_init is not None: - body["__init__"] = user_init - - type_ = types.new_class(name, bases, {}, lambda ns: ns.update(body)) - - # For pickling to work, the __module__ variable needs to be set to the - # frame where the class is created. Bypass this step in environments where - # sys._getframe is not defined (Jython for example) or sys._getframe is not - # defined for arguments greater than 0 (IronPython). - with contextlib.suppress(AttributeError, ValueError): - type_.__module__ = sys._getframe(1).f_globals.get( - "__name__", "__main__" - ) - - # We do it here for proper warnings with meaningful stacklevel. - cmp = attributes_arguments.pop("cmp", None) - ( - attributes_arguments["eq"], - attributes_arguments["order"], - ) = _determine_attrs_eq_order( - cmp, - attributes_arguments.get("eq"), - attributes_arguments.get("order"), - True, - ) - - cls = _attrs(these=cls_dict, **attributes_arguments)(type_) - # Only add type annotations now or "_attrs()" will complain: - cls.__annotations__ = { - k: v.type for k, v in cls_dict.items() if v.type is not None - } - return cls - - -# These are required by within this module so we define them here and merely -# import into .validators / .converters. - - -@attrs(slots=True, unsafe_hash=True) -class _AndValidator: - """ - Compose many validators to a single one. - """ - - _validators = attrib() - - def __call__(self, inst, attr, value): - for v in self._validators: - v(inst, attr, value) - - -def and_(*validators): - """ - A validator that composes multiple validators into one. - - When called on a value, it runs all wrapped validators. - - Args: - validators (~collections.abc.Iterable[typing.Callable]): - Arbitrary number of validators. - - .. versionadded:: 17.1.0 - """ - vals = [] - for validator in validators: - vals.extend( - validator._validators - if isinstance(validator, _AndValidator) - else [validator] - ) - - return _AndValidator(tuple(vals)) - - -def pipe(*converters): - """ - A converter that composes multiple converters into one. - - When called on a value, it runs all wrapped converters, returning the - *last* value. - - Type annotations will be inferred from the wrapped converters', if they - have any. - - converters (~collections.abc.Iterable[typing.Callable]): - Arbitrary number of converters. - - .. versionadded:: 20.1.0 - """ - - return_instance = any(isinstance(c, Converter) for c in converters) - - if return_instance: - - def pipe_converter(val, inst, field): - for c in converters: - val = ( - c(val, inst, field) if isinstance(c, Converter) else c(val) - ) - - return val - - else: - - def pipe_converter(val): - for c in converters: - val = c(val) - - return val - - if not converters: - # If the converter list is empty, pipe_converter is the identity. - A = TypeVar("A") - pipe_converter.__annotations__.update({"val": A, "return": A}) - else: - # Get parameter type from first converter. - t = _AnnotationExtractor(converters[0]).get_first_param_type() - if t: - pipe_converter.__annotations__["val"] = t - - last = converters[-1] - if not PY_3_11_PLUS and isinstance(last, Converter): - last = last.__call__ - - # Get return type from last converter. - rt = _AnnotationExtractor(last).get_return_type() - if rt: - pipe_converter.__annotations__["return"] = rt - - if return_instance: - return Converter(pipe_converter, takes_self=True, takes_field=True) - return pipe_converter diff --git a/venv/lib/python3.12/site-packages/attr/_next_gen.py b/venv/lib/python3.12/site-packages/attr/_next_gen.py deleted file mode 100644 index 9290664..0000000 --- a/venv/lib/python3.12/site-packages/attr/_next_gen.py +++ /dev/null @@ -1,623 +0,0 @@ -# SPDX-License-Identifier: MIT - -""" -These are keyword-only APIs that call `attr.s` and `attr.ib` with different -default values. -""" - -from functools import partial - -from . import setters -from ._funcs import asdict as _asdict -from ._funcs import astuple as _astuple -from ._make import ( - _DEFAULT_ON_SETATTR, - NOTHING, - _frozen_setattrs, - attrib, - attrs, -) -from .exceptions import UnannotatedAttributeError - - -def define( - maybe_cls=None, - *, - these=None, - repr=None, - unsafe_hash=None, - hash=None, - init=None, - slots=True, - frozen=False, - weakref_slot=True, - str=False, - auto_attribs=None, - kw_only=False, - cache_hash=False, - auto_exc=True, - eq=None, - order=False, - auto_detect=True, - getstate_setstate=None, - on_setattr=None, - field_transformer=None, - match_args=True, -): - r""" - A class decorator that adds :term:`dunder methods` according to - :term:`fields ` specified using :doc:`type annotations `, - `field()` calls, or the *these* argument. - - Since *attrs* patches or replaces an existing class, you cannot use - `object.__init_subclass__` with *attrs* classes, because it runs too early. - As a replacement, you can define ``__attrs_init_subclass__`` on your class. - It will be called by *attrs* classes that subclass it after they're - created. See also :ref:`init-subclass`. - - Args: - slots (bool): - Create a :term:`slotted class ` that's more - memory-efficient. Slotted classes are generally superior to the - default dict classes, but have some gotchas you should know about, - so we encourage you to read the :term:`glossary entry `. - - auto_detect (bool): - Instead of setting the *init*, *repr*, *eq*, and *hash* arguments - explicitly, assume they are set to True **unless any** of the - involved methods for one of the arguments is implemented in the - *current* class (meaning, it is *not* inherited from some base - class). - - So, for example by implementing ``__eq__`` on a class yourself, - *attrs* will deduce ``eq=False`` and will create *neither* - ``__eq__`` *nor* ``__ne__`` (but Python classes come with a - sensible ``__ne__`` by default, so it *should* be enough to only - implement ``__eq__`` in most cases). - - Passing True or False` to *init*, *repr*, *eq*, or *hash* - overrides whatever *auto_detect* would determine. - - auto_exc (bool): - If the class subclasses `BaseException` (which implicitly includes - any subclass of any exception), the following happens to behave - like a well-behaved Python exception class: - - - the values for *eq*, *order*, and *hash* are ignored and the - instances compare and hash by the instance's ids [#]_ , - - all attributes that are either passed into ``__init__`` or have a - default value are additionally available as a tuple in the - ``args`` attribute, - - the value of *str* is ignored leaving ``__str__`` to base - classes. - - .. [#] - Note that *attrs* will *not* remove existing implementations of - ``__hash__`` or the equality methods. It just won't add own - ones. - - on_setattr (~typing.Callable | list[~typing.Callable] | None | ~typing.Literal[attrs.setters.NO_OP]): - A callable that is run whenever the user attempts to set an - attribute (either by assignment like ``i.x = 42`` or by using - `setattr` like ``setattr(i, "x", 42)``). It receives the same - arguments as validators: the instance, the attribute that is being - modified, and the new value. - - If no exception is raised, the attribute is set to the return value - of the callable. - - If a list of callables is passed, they're automatically wrapped in - an `attrs.setters.pipe`. - - If left None, the default behavior is to run converters and - validators whenever an attribute is set. - - init (bool): - Create a ``__init__`` method that initializes the *attrs* - attributes. Leading underscores are stripped for the argument name, - unless an alias is set on the attribute. - - .. seealso:: - `init` shows advanced ways to customize the generated - ``__init__`` method, including executing code before and after. - - repr(bool): - Create a ``__repr__`` method with a human readable representation - of *attrs* attributes. - - str (bool): - Create a ``__str__`` method that is identical to ``__repr__``. This - is usually not necessary except for `Exception`\ s. - - eq (bool | None): - If True or None (default), add ``__eq__`` and ``__ne__`` methods - that check two instances for equality. - - .. seealso:: - `comparison` describes how to customize the comparison behavior - going as far comparing NumPy arrays. - - order (bool | None): - If True, add ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` - methods that behave like *eq* above and allow instances to be - ordered. - - They compare the instances as if they were tuples of their *attrs* - attributes if and only if the types of both classes are - *identical*. - - If `None` mirror value of *eq*. - - .. seealso:: `comparison` - - unsafe_hash (bool | None): - If None (default), the ``__hash__`` method is generated according - how *eq* and *frozen* are set. - - 1. If *both* are True, *attrs* will generate a ``__hash__`` for - you. - 2. If *eq* is True and *frozen* is False, ``__hash__`` will be set - to None, marking it unhashable (which it is). - 3. If *eq* is False, ``__hash__`` will be left untouched meaning - the ``__hash__`` method of the base class will be used. If the - base class is `object`, this means it will fall back to id-based - hashing. - - Although not recommended, you can decide for yourself and force - *attrs* to create one (for example, if the class is immutable even - though you didn't freeze it programmatically) by passing True or - not. Both of these cases are rather special and should be used - carefully. - - .. seealso:: - - - Our documentation on `hashing`, - - Python's documentation on `object.__hash__`, - - and the `GitHub issue that led to the default \ behavior - `_ for more - details. - - hash (bool | None): - Deprecated alias for *unsafe_hash*. *unsafe_hash* takes precedence. - - cache_hash (bool): - Ensure that the object's hash code is computed only once and stored - on the object. If this is set to True, hashing must be either - explicitly or implicitly enabled for this class. If the hash code - is cached, avoid any reassignments of fields involved in hash code - computation or mutations of the objects those fields point to after - object creation. If such changes occur, the behavior of the - object's hash code is undefined. - - frozen (bool): - Make instances immutable after initialization. If someone attempts - to modify a frozen instance, `attrs.exceptions.FrozenInstanceError` - is raised. - - .. note:: - - 1. This is achieved by installing a custom ``__setattr__`` - method on your class, so you can't implement your own. - - 2. True immutability is impossible in Python. - - 3. This *does* have a minor a runtime performance `impact - ` when initializing new instances. In other - words: ``__init__`` is slightly slower with ``frozen=True``. - - 4. If a class is frozen, you cannot modify ``self`` in - ``__attrs_post_init__`` or a self-written ``__init__``. You - can circumvent that limitation by using - ``object.__setattr__(self, "attribute_name", value)``. - - 5. Subclasses of a frozen class are frozen too. - - kw_only (bool): - Make all attributes keyword-only in the generated ``__init__`` (if - *init* is False, this parameter is ignored). - - weakref_slot (bool): - Make instances weak-referenceable. This has no effect unless - *slots* is True. - - field_transformer (~typing.Callable | None): - A function that is called with the original class object and all - fields right before *attrs* finalizes the class. You can use this, - for example, to automatically add converters or validators to - fields based on their types. - - .. seealso:: `transform-fields` - - match_args (bool): - If True (default), set ``__match_args__`` on the class to support - :pep:`634` (*Structural Pattern Matching*). It is a tuple of all - non-keyword-only ``__init__`` parameter names on Python 3.10 and - later. Ignored on older Python versions. - - collect_by_mro (bool): - If True, *attrs* collects attributes from base classes correctly - according to the `method resolution order - `_. If False, *attrs* - will mimic the (wrong) behavior of `dataclasses` and :pep:`681`. - - See also `issue #428 - `_. - - getstate_setstate (bool | None): - .. note:: - - This is usually only interesting for slotted classes and you - should probably just set *auto_detect* to True. - - If True, ``__getstate__`` and ``__setstate__`` are generated and - attached to the class. This is necessary for slotted classes to be - pickleable. If left None, it's True by default for slotted classes - and False for dict classes. - - If *auto_detect* is True, and *getstate_setstate* is left None, and - **either** ``__getstate__`` or ``__setstate__`` is detected - directly on the class (meaning: not inherited), it is set to False - (this is usually what you want). - - auto_attribs (bool | None): - If True, look at type annotations to determine which attributes to - use, like `dataclasses`. If False, it will only look for explicit - :func:`field` class attributes, like classic *attrs*. - - If left None, it will guess: - - 1. If any attributes are annotated and no unannotated - `attrs.field`\ s are found, it assumes *auto_attribs=True*. - 2. Otherwise it assumes *auto_attribs=False* and tries to collect - `attrs.field`\ s. - - If *attrs* decides to look at type annotations, **all** fields - **must** be annotated. If *attrs* encounters a field that is set to - a :func:`field` / `attr.ib` but lacks a type annotation, an - `attrs.exceptions.UnannotatedAttributeError` is raised. Use - ``field_name: typing.Any = field(...)`` if you don't want to set a - type. - - .. warning:: - - For features that use the attribute name to create decorators - (for example, :ref:`validators `), you still *must* - assign :func:`field` / `attr.ib` to them. Otherwise Python will - either not find the name or try to use the default value to - call, for example, ``validator`` on it. - - Attributes annotated as `typing.ClassVar`, and attributes that are - neither annotated nor set to an `field()` are **ignored**. - - these (dict[str, object]): - A dictionary of name to the (private) return value of `field()` - mappings. This is useful to avoid the definition of your attributes - within the class body because you can't (for example, if you want - to add ``__repr__`` methods to Django models) or don't want to. - - If *these* is not `None`, *attrs* will *not* search the class body - for attributes and will *not* remove any attributes from it. - - The order is deduced from the order of the attributes inside - *these*. - - Arguably, this is a rather obscure feature. - - .. versionadded:: 20.1.0 - .. versionchanged:: 21.3.0 Converters are also run ``on_setattr``. - .. versionadded:: 22.2.0 - *unsafe_hash* as an alias for *hash* (for :pep:`681` compliance). - .. versionchanged:: 24.1.0 - Instances are not compared as tuples of attributes anymore, but using a - big ``and`` condition. This is faster and has more correct behavior for - uncomparable values like `math.nan`. - .. versionadded:: 24.1.0 - If a class has an *inherited* classmethod called - ``__attrs_init_subclass__``, it is executed after the class is created. - .. deprecated:: 24.1.0 *hash* is deprecated in favor of *unsafe_hash*. - .. versionadded:: 24.3.0 - Unless already present, a ``__replace__`` method is automatically - created for `copy.replace` (Python 3.13+ only). - - .. note:: - - The main differences to the classic `attr.s` are: - - - Automatically detect whether or not *auto_attribs* should be `True` - (c.f. *auto_attribs* parameter). - - Converters and validators run when attributes are set by default -- - if *frozen* is `False`. - - *slots=True* - - Usually, this has only upsides and few visible effects in everyday - programming. But it *can* lead to some surprising behaviors, so - please make sure to read :term:`slotted classes`. - - - *auto_exc=True* - - *auto_detect=True* - - *order=False* - - Some options that were only relevant on Python 2 or were kept around - for backwards-compatibility have been removed. - - """ - - def do_it(cls, auto_attribs): - return attrs( - maybe_cls=cls, - these=these, - repr=repr, - hash=hash, - unsafe_hash=unsafe_hash, - init=init, - slots=slots, - frozen=frozen, - weakref_slot=weakref_slot, - str=str, - auto_attribs=auto_attribs, - kw_only=kw_only, - cache_hash=cache_hash, - auto_exc=auto_exc, - eq=eq, - order=order, - auto_detect=auto_detect, - collect_by_mro=True, - getstate_setstate=getstate_setstate, - on_setattr=on_setattr, - field_transformer=field_transformer, - match_args=match_args, - ) - - def wrap(cls): - """ - Making this a wrapper ensures this code runs during class creation. - - We also ensure that frozen-ness of classes is inherited. - """ - nonlocal frozen, on_setattr - - had_on_setattr = on_setattr not in (None, setters.NO_OP) - - # By default, mutable classes convert & validate on setattr. - if frozen is False and on_setattr is None: - on_setattr = _DEFAULT_ON_SETATTR - - # However, if we subclass a frozen class, we inherit the immutability - # and disable on_setattr. - for base_cls in cls.__bases__: - if base_cls.__setattr__ is _frozen_setattrs: - if had_on_setattr: - msg = "Frozen classes can't use on_setattr (frozen-ness was inherited)." - raise ValueError(msg) - - on_setattr = setters.NO_OP - break - - if auto_attribs is not None: - return do_it(cls, auto_attribs) - - try: - return do_it(cls, True) - except UnannotatedAttributeError: - return do_it(cls, False) - - # maybe_cls's type depends on the usage of the decorator. It's a class - # if it's used as `@attrs` but `None` if used as `@attrs()`. - if maybe_cls is None: - return wrap - - return wrap(maybe_cls) - - -mutable = define -frozen = partial(define, frozen=True, on_setattr=None) - - -def field( - *, - default=NOTHING, - validator=None, - repr=True, - hash=None, - init=True, - metadata=None, - type=None, - converter=None, - factory=None, - kw_only=False, - eq=None, - order=None, - on_setattr=None, - alias=None, -): - """ - Create a new :term:`field` / :term:`attribute` on a class. - - .. warning:: - - Does **nothing** unless the class is also decorated with - `attrs.define` (or similar)! - - Args: - default: - A value that is used if an *attrs*-generated ``__init__`` is used - and no value is passed while instantiating or the attribute is - excluded using ``init=False``. - - If the value is an instance of `attrs.Factory`, its callable will - be used to construct a new value (useful for mutable data types - like lists or dicts). - - If a default is not set (or set manually to `attrs.NOTHING`), a - value *must* be supplied when instantiating; otherwise a - `TypeError` will be raised. - - .. seealso:: `defaults` - - factory (~typing.Callable): - Syntactic sugar for ``default=attr.Factory(factory)``. - - validator (~typing.Callable | list[~typing.Callable]): - Callable that is called by *attrs*-generated ``__init__`` methods - after the instance has been initialized. They receive the - initialized instance, the :func:`~attrs.Attribute`, and the passed - value. - - The return value is *not* inspected so the validator has to throw - an exception itself. - - If a `list` is passed, its items are treated as validators and must - all pass. - - Validators can be globally disabled and re-enabled using - `attrs.validators.get_disabled` / `attrs.validators.set_disabled`. - - The validator can also be set using decorator notation as shown - below. - - .. seealso:: :ref:`validators` - - repr (bool | ~typing.Callable): - Include this attribute in the generated ``__repr__`` method. If - True, include the attribute; if False, omit it. By default, the - built-in ``repr()`` function is used. To override how the attribute - value is formatted, pass a ``callable`` that takes a single value - and returns a string. Note that the resulting string is used as-is, - which means it will be used directly *instead* of calling - ``repr()`` (the default). - - eq (bool | ~typing.Callable): - If True (default), include this attribute in the generated - ``__eq__`` and ``__ne__`` methods that check two instances for - equality. To override how the attribute value is compared, pass a - callable that takes a single value and returns the value to be - compared. - - .. seealso:: `comparison` - - order (bool | ~typing.Callable): - If True (default), include this attributes in the generated - ``__lt__``, ``__le__``, ``__gt__`` and ``__ge__`` methods. To - override how the attribute value is ordered, pass a callable that - takes a single value and returns the value to be ordered. - - .. seealso:: `comparison` - - hash (bool | None): - Include this attribute in the generated ``__hash__`` method. If - None (default), mirror *eq*'s value. This is the correct behavior - according the Python spec. Setting this value to anything else - than None is *discouraged*. - - .. seealso:: `hashing` - - init (bool): - Include this attribute in the generated ``__init__`` method. - - It is possible to set this to False and set a default value. In - that case this attributed is unconditionally initialized with the - specified default value or factory. - - .. seealso:: `init` - - converter (typing.Callable | Converter): - A callable that is called by *attrs*-generated ``__init__`` methods - to convert attribute's value to the desired format. - - If a vanilla callable is passed, it is given the passed-in value as - the only positional argument. It is possible to receive additional - arguments by wrapping the callable in a `Converter`. - - Either way, the returned value will be used as the new value of the - attribute. The value is converted before being passed to the - validator, if any. - - .. seealso:: :ref:`converters` - - metadata (dict | None): - An arbitrary mapping, to be used by third-party code. - - .. seealso:: `extending-metadata`. - - type (type): - The type of the attribute. Nowadays, the preferred method to - specify the type is using a variable annotation (see :pep:`526`). - This argument is provided for backwards-compatibility and for usage - with `make_class`. Regardless of the approach used, the type will - be stored on ``Attribute.type``. - - Please note that *attrs* doesn't do anything with this metadata by - itself. You can use it as part of your own code or for `static type - checking `. - - kw_only (bool): - Make this attribute keyword-only in the generated ``__init__`` (if - ``init`` is False, this parameter is ignored). - - on_setattr (~typing.Callable | list[~typing.Callable] | None | ~typing.Literal[attrs.setters.NO_OP]): - Allows to overwrite the *on_setattr* setting from `attr.s`. If left - None, the *on_setattr* value from `attr.s` is used. Set to - `attrs.setters.NO_OP` to run **no** `setattr` hooks for this - attribute -- regardless of the setting in `define()`. - - alias (str | None): - Override this attribute's parameter name in the generated - ``__init__`` method. If left None, default to ``name`` stripped - of leading underscores. See `private-attributes`. - - .. versionadded:: 20.1.0 - .. versionchanged:: 21.1.0 - *eq*, *order*, and *cmp* also accept a custom callable - .. versionadded:: 22.2.0 *alias* - .. versionadded:: 23.1.0 - The *type* parameter has been re-added; mostly for `attrs.make_class`. - Please note that type checkers ignore this metadata. - - .. seealso:: - - `attr.ib` - """ - return attrib( - default=default, - validator=validator, - repr=repr, - hash=hash, - init=init, - metadata=metadata, - type=type, - converter=converter, - factory=factory, - kw_only=kw_only, - eq=eq, - order=order, - on_setattr=on_setattr, - alias=alias, - ) - - -def asdict(inst, *, recurse=True, filter=None, value_serializer=None): - """ - Same as `attr.asdict`, except that collections types are always retained - and dict is always used as *dict_factory*. - - .. versionadded:: 21.3.0 - """ - return _asdict( - inst=inst, - recurse=recurse, - filter=filter, - value_serializer=value_serializer, - retain_collection_types=True, - ) - - -def astuple(inst, *, recurse=True, filter=None): - """ - Same as `attr.astuple`, except that collections types are always retained - and `tuple` is always used as the *tuple_factory*. - - .. versionadded:: 21.3.0 - """ - return _astuple( - inst=inst, recurse=recurse, filter=filter, retain_collection_types=True - ) diff --git a/venv/lib/python3.12/site-packages/attr/_typing_compat.pyi b/venv/lib/python3.12/site-packages/attr/_typing_compat.pyi deleted file mode 100644 index ca7b71e..0000000 --- a/venv/lib/python3.12/site-packages/attr/_typing_compat.pyi +++ /dev/null @@ -1,15 +0,0 @@ -from typing import Any, ClassVar, Protocol - -# MYPY is a special constant in mypy which works the same way as `TYPE_CHECKING`. -MYPY = False - -if MYPY: - # A protocol to be able to statically accept an attrs class. - class AttrsInstance_(Protocol): - __attrs_attrs__: ClassVar[Any] - -else: - # For type checkers without plug-in support use an empty protocol that - # will (hopefully) be combined into a union. - class AttrsInstance_(Protocol): - pass diff --git a/venv/lib/python3.12/site-packages/attr/_version_info.py b/venv/lib/python3.12/site-packages/attr/_version_info.py deleted file mode 100644 index 51a1312..0000000 --- a/venv/lib/python3.12/site-packages/attr/_version_info.py +++ /dev/null @@ -1,86 +0,0 @@ -# SPDX-License-Identifier: MIT - - -from functools import total_ordering - -from ._funcs import astuple -from ._make import attrib, attrs - - -@total_ordering -@attrs(eq=False, order=False, slots=True, frozen=True) -class VersionInfo: - """ - A version object that can be compared to tuple of length 1--4: - - >>> attr.VersionInfo(19, 1, 0, "final") <= (19, 2) - True - >>> attr.VersionInfo(19, 1, 0, "final") < (19, 1, 1) - True - >>> vi = attr.VersionInfo(19, 2, 0, "final") - >>> vi < (19, 1, 1) - False - >>> vi < (19,) - False - >>> vi == (19, 2,) - True - >>> vi == (19, 2, 1) - False - - .. versionadded:: 19.2 - """ - - year = attrib(type=int) - minor = attrib(type=int) - micro = attrib(type=int) - releaselevel = attrib(type=str) - - @classmethod - def _from_version_string(cls, s): - """ - Parse *s* and return a _VersionInfo. - """ - v = s.split(".") - if len(v) == 3: - v.append("final") - - return cls( - year=int(v[0]), minor=int(v[1]), micro=int(v[2]), releaselevel=v[3] - ) - - def _ensure_tuple(self, other): - """ - Ensure *other* is a tuple of a valid length. - - Returns a possibly transformed *other* and ourselves as a tuple of - the same length as *other*. - """ - - if self.__class__ is other.__class__: - other = astuple(other) - - if not isinstance(other, tuple): - raise NotImplementedError - - if not (1 <= len(other) <= 4): - raise NotImplementedError - - return astuple(self)[: len(other)], other - - def __eq__(self, other): - try: - us, them = self._ensure_tuple(other) - except NotImplementedError: - return NotImplemented - - return us == them - - def __lt__(self, other): - try: - us, them = self._ensure_tuple(other) - except NotImplementedError: - return NotImplemented - - # Since alphabetically "dev0" < "final" < "post1" < "post2", we don't - # have to do anything special with releaselevel for now. - return us < them diff --git a/venv/lib/python3.12/site-packages/attr/_version_info.pyi b/venv/lib/python3.12/site-packages/attr/_version_info.pyi deleted file mode 100644 index 45ced08..0000000 --- a/venv/lib/python3.12/site-packages/attr/_version_info.pyi +++ /dev/null @@ -1,9 +0,0 @@ -class VersionInfo: - @property - def year(self) -> int: ... - @property - def minor(self) -> int: ... - @property - def micro(self) -> int: ... - @property - def releaselevel(self) -> str: ... diff --git a/venv/lib/python3.12/site-packages/attr/converters.py b/venv/lib/python3.12/site-packages/attr/converters.py deleted file mode 100644 index 0a79dee..0000000 --- a/venv/lib/python3.12/site-packages/attr/converters.py +++ /dev/null @@ -1,162 +0,0 @@ -# SPDX-License-Identifier: MIT - -""" -Commonly useful converters. -""" - -import typing - -from ._compat import _AnnotationExtractor -from ._make import NOTHING, Converter, Factory, pipe - - -__all__ = [ - "default_if_none", - "optional", - "pipe", - "to_bool", -] - - -def optional(converter): - """ - A converter that allows an attribute to be optional. An optional attribute - is one which can be set to `None`. - - Type annotations will be inferred from the wrapped converter's, if it has - any. - - Args: - converter (typing.Callable): - the converter that is used for non-`None` values. - - .. versionadded:: 17.1.0 - """ - - if isinstance(converter, Converter): - - def optional_converter(val, inst, field): - if val is None: - return None - return converter(val, inst, field) - - else: - - def optional_converter(val): - if val is None: - return None - return converter(val) - - xtr = _AnnotationExtractor(converter) - - t = xtr.get_first_param_type() - if t: - optional_converter.__annotations__["val"] = typing.Optional[t] - - rt = xtr.get_return_type() - if rt: - optional_converter.__annotations__["return"] = typing.Optional[rt] - - if isinstance(converter, Converter): - return Converter(optional_converter, takes_self=True, takes_field=True) - - return optional_converter - - -def default_if_none(default=NOTHING, factory=None): - """ - A converter that allows to replace `None` values by *default* or the result - of *factory*. - - Args: - default: - Value to be used if `None` is passed. Passing an instance of - `attrs.Factory` is supported, however the ``takes_self`` option is - *not*. - - factory (typing.Callable): - A callable that takes no parameters whose result is used if `None` - is passed. - - Raises: - TypeError: If **neither** *default* or *factory* is passed. - - TypeError: If **both** *default* and *factory* are passed. - - ValueError: - If an instance of `attrs.Factory` is passed with - ``takes_self=True``. - - .. versionadded:: 18.2.0 - """ - if default is NOTHING and factory is None: - msg = "Must pass either `default` or `factory`." - raise TypeError(msg) - - if default is not NOTHING and factory is not None: - msg = "Must pass either `default` or `factory` but not both." - raise TypeError(msg) - - if factory is not None: - default = Factory(factory) - - if isinstance(default, Factory): - if default.takes_self: - msg = "`takes_self` is not supported by default_if_none." - raise ValueError(msg) - - def default_if_none_converter(val): - if val is not None: - return val - - return default.factory() - - else: - - def default_if_none_converter(val): - if val is not None: - return val - - return default - - return default_if_none_converter - - -def to_bool(val): - """ - Convert "boolean" strings (for example, from environment variables) to real - booleans. - - Values mapping to `True`: - - - ``True`` - - ``"true"`` / ``"t"`` - - ``"yes"`` / ``"y"`` - - ``"on"`` - - ``"1"`` - - ``1`` - - Values mapping to `False`: - - - ``False`` - - ``"false"`` / ``"f"`` - - ``"no"`` / ``"n"`` - - ``"off"`` - - ``"0"`` - - ``0`` - - Raises: - ValueError: For any other value. - - .. versionadded:: 21.3.0 - """ - if isinstance(val, str): - val = val.lower() - - if val in (True, "true", "t", "yes", "y", "on", "1", 1): - return True - if val in (False, "false", "f", "no", "n", "off", "0", 0): - return False - - msg = f"Cannot convert value to bool: {val!r}" - raise ValueError(msg) diff --git a/venv/lib/python3.12/site-packages/attr/converters.pyi b/venv/lib/python3.12/site-packages/attr/converters.pyi deleted file mode 100644 index 12bd0c4..0000000 --- a/venv/lib/python3.12/site-packages/attr/converters.pyi +++ /dev/null @@ -1,19 +0,0 @@ -from typing import Callable, Any, overload - -from attrs import _ConverterType, _CallableConverterType - -@overload -def pipe(*validators: _CallableConverterType) -> _CallableConverterType: ... -@overload -def pipe(*validators: _ConverterType) -> _ConverterType: ... -@overload -def optional(converter: _CallableConverterType) -> _CallableConverterType: ... -@overload -def optional(converter: _ConverterType) -> _ConverterType: ... -@overload -def default_if_none(default: Any) -> _CallableConverterType: ... -@overload -def default_if_none( - *, factory: Callable[[], Any] -) -> _CallableConverterType: ... -def to_bool(val: str | int | bool) -> bool: ... diff --git a/venv/lib/python3.12/site-packages/attr/exceptions.py b/venv/lib/python3.12/site-packages/attr/exceptions.py deleted file mode 100644 index 3b7abb8..0000000 --- a/venv/lib/python3.12/site-packages/attr/exceptions.py +++ /dev/null @@ -1,95 +0,0 @@ -# SPDX-License-Identifier: MIT - -from __future__ import annotations - -from typing import ClassVar - - -class FrozenError(AttributeError): - """ - A frozen/immutable instance or attribute have been attempted to be - modified. - - It mirrors the behavior of ``namedtuples`` by using the same error message - and subclassing `AttributeError`. - - .. versionadded:: 20.1.0 - """ - - msg = "can't set attribute" - args: ClassVar[tuple[str]] = [msg] - - -class FrozenInstanceError(FrozenError): - """ - A frozen instance has been attempted to be modified. - - .. versionadded:: 16.1.0 - """ - - -class FrozenAttributeError(FrozenError): - """ - A frozen attribute has been attempted to be modified. - - .. versionadded:: 20.1.0 - """ - - -class AttrsAttributeNotFoundError(ValueError): - """ - An *attrs* function couldn't find an attribute that the user asked for. - - .. versionadded:: 16.2.0 - """ - - -class NotAnAttrsClassError(ValueError): - """ - A non-*attrs* class has been passed into an *attrs* function. - - .. versionadded:: 16.2.0 - """ - - -class DefaultAlreadySetError(RuntimeError): - """ - A default has been set when defining the field and is attempted to be reset - using the decorator. - - .. versionadded:: 17.1.0 - """ - - -class UnannotatedAttributeError(RuntimeError): - """ - A class with ``auto_attribs=True`` has a field without a type annotation. - - .. versionadded:: 17.3.0 - """ - - -class PythonTooOldError(RuntimeError): - """ - It was attempted to use an *attrs* feature that requires a newer Python - version. - - .. versionadded:: 18.2.0 - """ - - -class NotCallableError(TypeError): - """ - A field requiring a callable has been set with a value that is not - callable. - - .. versionadded:: 19.2.0 - """ - - def __init__(self, msg, value): - super(TypeError, self).__init__(msg, value) - self.msg = msg - self.value = value - - def __str__(self): - return str(self.msg) diff --git a/venv/lib/python3.12/site-packages/attr/exceptions.pyi b/venv/lib/python3.12/site-packages/attr/exceptions.pyi deleted file mode 100644 index f268011..0000000 --- a/venv/lib/python3.12/site-packages/attr/exceptions.pyi +++ /dev/null @@ -1,17 +0,0 @@ -from typing import Any - -class FrozenError(AttributeError): - msg: str = ... - -class FrozenInstanceError(FrozenError): ... -class FrozenAttributeError(FrozenError): ... -class AttrsAttributeNotFoundError(ValueError): ... -class NotAnAttrsClassError(ValueError): ... -class DefaultAlreadySetError(RuntimeError): ... -class UnannotatedAttributeError(RuntimeError): ... -class PythonTooOldError(RuntimeError): ... - -class NotCallableError(TypeError): - msg: str = ... - value: Any = ... - def __init__(self, msg: str, value: Any) -> None: ... diff --git a/venv/lib/python3.12/site-packages/attr/filters.py b/venv/lib/python3.12/site-packages/attr/filters.py deleted file mode 100644 index 689b170..0000000 --- a/venv/lib/python3.12/site-packages/attr/filters.py +++ /dev/null @@ -1,72 +0,0 @@ -# SPDX-License-Identifier: MIT - -""" -Commonly useful filters for `attrs.asdict` and `attrs.astuple`. -""" - -from ._make import Attribute - - -def _split_what(what): - """ - Returns a tuple of `frozenset`s of classes and attributes. - """ - return ( - frozenset(cls for cls in what if isinstance(cls, type)), - frozenset(cls for cls in what if isinstance(cls, str)), - frozenset(cls for cls in what if isinstance(cls, Attribute)), - ) - - -def include(*what): - """ - Create a filter that only allows *what*. - - Args: - what (list[type, str, attrs.Attribute]): - What to include. Can be a type, a name, or an attribute. - - Returns: - Callable: - A callable that can be passed to `attrs.asdict`'s and - `attrs.astuple`'s *filter* argument. - - .. versionchanged:: 23.1.0 Accept strings with field names. - """ - cls, names, attrs = _split_what(what) - - def include_(attribute, value): - return ( - value.__class__ in cls - or attribute.name in names - or attribute in attrs - ) - - return include_ - - -def exclude(*what): - """ - Create a filter that does **not** allow *what*. - - Args: - what (list[type, str, attrs.Attribute]): - What to exclude. Can be a type, a name, or an attribute. - - Returns: - Callable: - A callable that can be passed to `attrs.asdict`'s and - `attrs.astuple`'s *filter* argument. - - .. versionchanged:: 23.3.0 Accept field name string as input argument - """ - cls, names, attrs = _split_what(what) - - def exclude_(attribute, value): - return not ( - value.__class__ in cls - or attribute.name in names - or attribute in attrs - ) - - return exclude_ diff --git a/venv/lib/python3.12/site-packages/attr/filters.pyi b/venv/lib/python3.12/site-packages/attr/filters.pyi deleted file mode 100644 index 974abdc..0000000 --- a/venv/lib/python3.12/site-packages/attr/filters.pyi +++ /dev/null @@ -1,6 +0,0 @@ -from typing import Any - -from . import Attribute, _FilterType - -def include(*what: type | str | Attribute[Any]) -> _FilterType[Any]: ... -def exclude(*what: type | str | Attribute[Any]) -> _FilterType[Any]: ... diff --git a/venv/lib/python3.12/site-packages/attr/py.typed b/venv/lib/python3.12/site-packages/attr/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/attr/setters.py b/venv/lib/python3.12/site-packages/attr/setters.py deleted file mode 100644 index 78b0839..0000000 --- a/venv/lib/python3.12/site-packages/attr/setters.py +++ /dev/null @@ -1,79 +0,0 @@ -# SPDX-License-Identifier: MIT - -""" -Commonly used hooks for on_setattr. -""" - -from . import _config -from .exceptions import FrozenAttributeError - - -def pipe(*setters): - """ - Run all *setters* and return the return value of the last one. - - .. versionadded:: 20.1.0 - """ - - def wrapped_pipe(instance, attrib, new_value): - rv = new_value - - for setter in setters: - rv = setter(instance, attrib, rv) - - return rv - - return wrapped_pipe - - -def frozen(_, __, ___): - """ - Prevent an attribute to be modified. - - .. versionadded:: 20.1.0 - """ - raise FrozenAttributeError - - -def validate(instance, attrib, new_value): - """ - Run *attrib*'s validator on *new_value* if it has one. - - .. versionadded:: 20.1.0 - """ - if _config._run_validators is False: - return new_value - - v = attrib.validator - if not v: - return new_value - - v(instance, attrib, new_value) - - return new_value - - -def convert(instance, attrib, new_value): - """ - Run *attrib*'s converter -- if it has one -- on *new_value* and return the - result. - - .. versionadded:: 20.1.0 - """ - c = attrib.converter - if c: - # This can be removed once we drop 3.8 and use attrs.Converter instead. - from ._make import Converter - - if not isinstance(c, Converter): - return c(new_value) - - return c(new_value, instance, attrib) - - return new_value - - -# Sentinel for disabling class-wide *on_setattr* hooks for certain attributes. -# Sphinx's autodata stopped working, so the docstring is inlined in the API -# docs. -NO_OP = object() diff --git a/venv/lib/python3.12/site-packages/attr/setters.pyi b/venv/lib/python3.12/site-packages/attr/setters.pyi deleted file mode 100644 index 73abf36..0000000 --- a/venv/lib/python3.12/site-packages/attr/setters.pyi +++ /dev/null @@ -1,20 +0,0 @@ -from typing import Any, NewType, NoReturn, TypeVar - -from . import Attribute -from attrs import _OnSetAttrType - -_T = TypeVar("_T") - -def frozen( - instance: Any, attribute: Attribute[Any], new_value: Any -) -> NoReturn: ... -def pipe(*setters: _OnSetAttrType) -> _OnSetAttrType: ... -def validate(instance: Any, attribute: Attribute[_T], new_value: _T) -> _T: ... - -# convert is allowed to return Any, because they can be chained using pipe. -def convert( - instance: Any, attribute: Attribute[Any], new_value: Any -) -> Any: ... - -_NoOpType = NewType("_NoOpType", object) -NO_OP: _NoOpType diff --git a/venv/lib/python3.12/site-packages/attr/validators.py b/venv/lib/python3.12/site-packages/attr/validators.py deleted file mode 100644 index e7b7552..0000000 --- a/venv/lib/python3.12/site-packages/attr/validators.py +++ /dev/null @@ -1,710 +0,0 @@ -# SPDX-License-Identifier: MIT - -""" -Commonly useful validators. -""" - -import operator -import re - -from contextlib import contextmanager -from re import Pattern - -from ._config import get_run_validators, set_run_validators -from ._make import _AndValidator, and_, attrib, attrs -from .converters import default_if_none -from .exceptions import NotCallableError - - -__all__ = [ - "and_", - "deep_iterable", - "deep_mapping", - "disabled", - "ge", - "get_disabled", - "gt", - "in_", - "instance_of", - "is_callable", - "le", - "lt", - "matches_re", - "max_len", - "min_len", - "not_", - "optional", - "or_", - "set_disabled", -] - - -def set_disabled(disabled): - """ - Globally disable or enable running validators. - - By default, they are run. - - Args: - disabled (bool): If `True`, disable running all validators. - - .. warning:: - - This function is not thread-safe! - - .. versionadded:: 21.3.0 - """ - set_run_validators(not disabled) - - -def get_disabled(): - """ - Return a bool indicating whether validators are currently disabled or not. - - Returns: - bool:`True` if validators are currently disabled. - - .. versionadded:: 21.3.0 - """ - return not get_run_validators() - - -@contextmanager -def disabled(): - """ - Context manager that disables running validators within its context. - - .. warning:: - - This context manager is not thread-safe! - - .. versionadded:: 21.3.0 - """ - set_run_validators(False) - try: - yield - finally: - set_run_validators(True) - - -@attrs(repr=False, slots=True, unsafe_hash=True) -class _InstanceOfValidator: - type = attrib() - - def __call__(self, inst, attr, value): - """ - We use a callable class to be able to change the ``__repr__``. - """ - if not isinstance(value, self.type): - msg = f"'{attr.name}' must be {self.type!r} (got {value!r} that is a {value.__class__!r})." - raise TypeError( - msg, - attr, - self.type, - value, - ) - - def __repr__(self): - return f"" - - -def instance_of(type): - """ - A validator that raises a `TypeError` if the initializer is called with a - wrong type for this particular attribute (checks are performed using - `isinstance` therefore it's also valid to pass a tuple of types). - - Args: - type (type | tuple[type]): The type to check for. - - Raises: - TypeError: - With a human readable error message, the attribute (of type - `attrs.Attribute`), the expected type, and the value it got. - """ - return _InstanceOfValidator(type) - - -@attrs(repr=False, frozen=True, slots=True) -class _MatchesReValidator: - pattern = attrib() - match_func = attrib() - - def __call__(self, inst, attr, value): - """ - We use a callable class to be able to change the ``__repr__``. - """ - if not self.match_func(value): - msg = f"'{attr.name}' must match regex {self.pattern.pattern!r} ({value!r} doesn't)" - raise ValueError( - msg, - attr, - self.pattern, - value, - ) - - def __repr__(self): - return f"" - - -def matches_re(regex, flags=0, func=None): - r""" - A validator that raises `ValueError` if the initializer is called with a - string that doesn't match *regex*. - - Args: - regex (str, re.Pattern): - A regex string or precompiled pattern to match against - - flags (int): - Flags that will be passed to the underlying re function (default 0) - - func (typing.Callable): - Which underlying `re` function to call. Valid options are - `re.fullmatch`, `re.search`, and `re.match`; the default `None` - means `re.fullmatch`. For performance reasons, the pattern is - always precompiled using `re.compile`. - - .. versionadded:: 19.2.0 - .. versionchanged:: 21.3.0 *regex* can be a pre-compiled pattern. - """ - valid_funcs = (re.fullmatch, None, re.search, re.match) - if func not in valid_funcs: - msg = "'func' must be one of {}.".format( - ", ".join( - sorted((e and e.__name__) or "None" for e in set(valid_funcs)) - ) - ) - raise ValueError(msg) - - if isinstance(regex, Pattern): - if flags: - msg = "'flags' can only be used with a string pattern; pass flags to re.compile() instead" - raise TypeError(msg) - pattern = regex - else: - pattern = re.compile(regex, flags) - - if func is re.match: - match_func = pattern.match - elif func is re.search: - match_func = pattern.search - else: - match_func = pattern.fullmatch - - return _MatchesReValidator(pattern, match_func) - - -@attrs(repr=False, slots=True, unsafe_hash=True) -class _OptionalValidator: - validator = attrib() - - def __call__(self, inst, attr, value): - if value is None: - return - - self.validator(inst, attr, value) - - def __repr__(self): - return f"" - - -def optional(validator): - """ - A validator that makes an attribute optional. An optional attribute is one - which can be set to `None` in addition to satisfying the requirements of - the sub-validator. - - Args: - validator - (typing.Callable | tuple[typing.Callable] | list[typing.Callable]): - A validator (or validators) that is used for non-`None` values. - - .. versionadded:: 15.1.0 - .. versionchanged:: 17.1.0 *validator* can be a list of validators. - .. versionchanged:: 23.1.0 *validator* can also be a tuple of validators. - """ - if isinstance(validator, (list, tuple)): - return _OptionalValidator(_AndValidator(validator)) - - return _OptionalValidator(validator) - - -@attrs(repr=False, slots=True, unsafe_hash=True) -class _InValidator: - options = attrib() - _original_options = attrib(hash=False) - - def __call__(self, inst, attr, value): - try: - in_options = value in self.options - except TypeError: # e.g. `1 in "abc"` - in_options = False - - if not in_options: - msg = f"'{attr.name}' must be in {self._original_options!r} (got {value!r})" - raise ValueError( - msg, - attr, - self._original_options, - value, - ) - - def __repr__(self): - return f"" - - -def in_(options): - """ - A validator that raises a `ValueError` if the initializer is called with a - value that does not belong in the *options* provided. - - The check is performed using ``value in options``, so *options* has to - support that operation. - - To keep the validator hashable, dicts, lists, and sets are transparently - transformed into a `tuple`. - - Args: - options: Allowed options. - - Raises: - ValueError: - With a human readable error message, the attribute (of type - `attrs.Attribute`), the expected options, and the value it got. - - .. versionadded:: 17.1.0 - .. versionchanged:: 22.1.0 - The ValueError was incomplete until now and only contained the human - readable error message. Now it contains all the information that has - been promised since 17.1.0. - .. versionchanged:: 24.1.0 - *options* that are a list, dict, or a set are now transformed into a - tuple to keep the validator hashable. - """ - repr_options = options - if isinstance(options, (list, dict, set)): - options = tuple(options) - - return _InValidator(options, repr_options) - - -@attrs(repr=False, slots=False, unsafe_hash=True) -class _IsCallableValidator: - def __call__(self, inst, attr, value): - """ - We use a callable class to be able to change the ``__repr__``. - """ - if not callable(value): - message = ( - "'{name}' must be callable " - "(got {value!r} that is a {actual!r})." - ) - raise NotCallableError( - msg=message.format( - name=attr.name, value=value, actual=value.__class__ - ), - value=value, - ) - - def __repr__(self): - return "" - - -def is_callable(): - """ - A validator that raises a `attrs.exceptions.NotCallableError` if the - initializer is called with a value for this particular attribute that is - not callable. - - .. versionadded:: 19.1.0 - - Raises: - attrs.exceptions.NotCallableError: - With a human readable error message containing the attribute - (`attrs.Attribute`) name, and the value it got. - """ - return _IsCallableValidator() - - -@attrs(repr=False, slots=True, unsafe_hash=True) -class _DeepIterable: - member_validator = attrib(validator=is_callable()) - iterable_validator = attrib( - default=None, validator=optional(is_callable()) - ) - - def __call__(self, inst, attr, value): - """ - We use a callable class to be able to change the ``__repr__``. - """ - if self.iterable_validator is not None: - self.iterable_validator(inst, attr, value) - - for member in value: - self.member_validator(inst, attr, member) - - def __repr__(self): - iterable_identifier = ( - "" - if self.iterable_validator is None - else f" {self.iterable_validator!r}" - ) - return ( - f"" - ) - - -def deep_iterable(member_validator, iterable_validator=None): - """ - A validator that performs deep validation of an iterable. - - Args: - member_validator: Validator to apply to iterable members. - - iterable_validator: - Validator to apply to iterable itself (optional). - - Raises - TypeError: if any sub-validators fail - - .. versionadded:: 19.1.0 - """ - if isinstance(member_validator, (list, tuple)): - member_validator = and_(*member_validator) - return _DeepIterable(member_validator, iterable_validator) - - -@attrs(repr=False, slots=True, unsafe_hash=True) -class _DeepMapping: - key_validator = attrib(validator=is_callable()) - value_validator = attrib(validator=is_callable()) - mapping_validator = attrib(default=None, validator=optional(is_callable())) - - def __call__(self, inst, attr, value): - """ - We use a callable class to be able to change the ``__repr__``. - """ - if self.mapping_validator is not None: - self.mapping_validator(inst, attr, value) - - for key in value: - self.key_validator(inst, attr, key) - self.value_validator(inst, attr, value[key]) - - def __repr__(self): - return f"" - - -def deep_mapping(key_validator, value_validator, mapping_validator=None): - """ - A validator that performs deep validation of a dictionary. - - Args: - key_validator: Validator to apply to dictionary keys. - - value_validator: Validator to apply to dictionary values. - - mapping_validator: - Validator to apply to top-level mapping attribute (optional). - - .. versionadded:: 19.1.0 - - Raises: - TypeError: if any sub-validators fail - """ - return _DeepMapping(key_validator, value_validator, mapping_validator) - - -@attrs(repr=False, frozen=True, slots=True) -class _NumberValidator: - bound = attrib() - compare_op = attrib() - compare_func = attrib() - - def __call__(self, inst, attr, value): - """ - We use a callable class to be able to change the ``__repr__``. - """ - if not self.compare_func(value, self.bound): - msg = f"'{attr.name}' must be {self.compare_op} {self.bound}: {value}" - raise ValueError(msg) - - def __repr__(self): - return f"" - - -def lt(val): - """ - A validator that raises `ValueError` if the initializer is called with a - number larger or equal to *val*. - - The validator uses `operator.lt` to compare the values. - - Args: - val: Exclusive upper bound for values. - - .. versionadded:: 21.3.0 - """ - return _NumberValidator(val, "<", operator.lt) - - -def le(val): - """ - A validator that raises `ValueError` if the initializer is called with a - number greater than *val*. - - The validator uses `operator.le` to compare the values. - - Args: - val: Inclusive upper bound for values. - - .. versionadded:: 21.3.0 - """ - return _NumberValidator(val, "<=", operator.le) - - -def ge(val): - """ - A validator that raises `ValueError` if the initializer is called with a - number smaller than *val*. - - The validator uses `operator.ge` to compare the values. - - Args: - val: Inclusive lower bound for values - - .. versionadded:: 21.3.0 - """ - return _NumberValidator(val, ">=", operator.ge) - - -def gt(val): - """ - A validator that raises `ValueError` if the initializer is called with a - number smaller or equal to *val*. - - The validator uses `operator.ge` to compare the values. - - Args: - val: Exclusive lower bound for values - - .. versionadded:: 21.3.0 - """ - return _NumberValidator(val, ">", operator.gt) - - -@attrs(repr=False, frozen=True, slots=True) -class _MaxLengthValidator: - max_length = attrib() - - def __call__(self, inst, attr, value): - """ - We use a callable class to be able to change the ``__repr__``. - """ - if len(value) > self.max_length: - msg = f"Length of '{attr.name}' must be <= {self.max_length}: {len(value)}" - raise ValueError(msg) - - def __repr__(self): - return f"" - - -def max_len(length): - """ - A validator that raises `ValueError` if the initializer is called - with a string or iterable that is longer than *length*. - - Args: - length (int): Maximum length of the string or iterable - - .. versionadded:: 21.3.0 - """ - return _MaxLengthValidator(length) - - -@attrs(repr=False, frozen=True, slots=True) -class _MinLengthValidator: - min_length = attrib() - - def __call__(self, inst, attr, value): - """ - We use a callable class to be able to change the ``__repr__``. - """ - if len(value) < self.min_length: - msg = f"Length of '{attr.name}' must be >= {self.min_length}: {len(value)}" - raise ValueError(msg) - - def __repr__(self): - return f"" - - -def min_len(length): - """ - A validator that raises `ValueError` if the initializer is called - with a string or iterable that is shorter than *length*. - - Args: - length (int): Minimum length of the string or iterable - - .. versionadded:: 22.1.0 - """ - return _MinLengthValidator(length) - - -@attrs(repr=False, slots=True, unsafe_hash=True) -class _SubclassOfValidator: - type = attrib() - - def __call__(self, inst, attr, value): - """ - We use a callable class to be able to change the ``__repr__``. - """ - if not issubclass(value, self.type): - msg = f"'{attr.name}' must be a subclass of {self.type!r} (got {value!r})." - raise TypeError( - msg, - attr, - self.type, - value, - ) - - def __repr__(self): - return f"" - - -def _subclass_of(type): - """ - A validator that raises a `TypeError` if the initializer is called with a - wrong type for this particular attribute (checks are performed using - `issubclass` therefore it's also valid to pass a tuple of types). - - Args: - type (type | tuple[type, ...]): The type(s) to check for. - - Raises: - TypeError: - With a human readable error message, the attribute (of type - `attrs.Attribute`), the expected type, and the value it got. - """ - return _SubclassOfValidator(type) - - -@attrs(repr=False, slots=True, unsafe_hash=True) -class _NotValidator: - validator = attrib() - msg = attrib( - converter=default_if_none( - "not_ validator child '{validator!r}' " - "did not raise a captured error" - ) - ) - exc_types = attrib( - validator=deep_iterable( - member_validator=_subclass_of(Exception), - iterable_validator=instance_of(tuple), - ), - ) - - def __call__(self, inst, attr, value): - try: - self.validator(inst, attr, value) - except self.exc_types: - pass # suppress error to invert validity - else: - raise ValueError( - self.msg.format( - validator=self.validator, - exc_types=self.exc_types, - ), - attr, - self.validator, - value, - self.exc_types, - ) - - def __repr__(self): - return f"" - - -def not_(validator, *, msg=None, exc_types=(ValueError, TypeError)): - """ - A validator that wraps and logically 'inverts' the validator passed to it. - It will raise a `ValueError` if the provided validator *doesn't* raise a - `ValueError` or `TypeError` (by default), and will suppress the exception - if the provided validator *does*. - - Intended to be used with existing validators to compose logic without - needing to create inverted variants, for example, ``not_(in_(...))``. - - Args: - validator: A validator to be logically inverted. - - msg (str): - Message to raise if validator fails. Formatted with keys - ``exc_types`` and ``validator``. - - exc_types (tuple[type, ...]): - Exception type(s) to capture. Other types raised by child - validators will not be intercepted and pass through. - - Raises: - ValueError: - With a human readable error message, the attribute (of type - `attrs.Attribute`), the validator that failed to raise an - exception, the value it got, and the expected exception types. - - .. versionadded:: 22.2.0 - """ - try: - exc_types = tuple(exc_types) - except TypeError: - exc_types = (exc_types,) - return _NotValidator(validator, msg, exc_types) - - -@attrs(repr=False, slots=True, unsafe_hash=True) -class _OrValidator: - validators = attrib() - - def __call__(self, inst, attr, value): - for v in self.validators: - try: - v(inst, attr, value) - except Exception: # noqa: BLE001, PERF203, S112 - continue - else: - return - - msg = f"None of {self.validators!r} satisfied for value {value!r}" - raise ValueError(msg) - - def __repr__(self): - return f"" - - -def or_(*validators): - """ - A validator that composes multiple validators into one. - - When called on a value, it runs all wrapped validators until one of them is - satisfied. - - Args: - validators (~collections.abc.Iterable[typing.Callable]): - Arbitrary number of validators. - - Raises: - ValueError: - If no validator is satisfied. Raised with a human-readable error - message listing all the wrapped validators and the value that - failed all of them. - - .. versionadded:: 24.1.0 - """ - vals = [] - for v in validators: - vals.extend(v.validators if isinstance(v, _OrValidator) else [v]) - - return _OrValidator(tuple(vals)) diff --git a/venv/lib/python3.12/site-packages/attr/validators.pyi b/venv/lib/python3.12/site-packages/attr/validators.pyi deleted file mode 100644 index a0fdda7..0000000 --- a/venv/lib/python3.12/site-packages/attr/validators.pyi +++ /dev/null @@ -1,86 +0,0 @@ -from types import UnionType -from typing import ( - Any, - AnyStr, - Callable, - Container, - ContextManager, - Iterable, - Mapping, - Match, - Pattern, - TypeVar, - overload, -) - -from attrs import _ValidatorType -from attrs import _ValidatorArgType - -_T = TypeVar("_T") -_T1 = TypeVar("_T1") -_T2 = TypeVar("_T2") -_T3 = TypeVar("_T3") -_I = TypeVar("_I", bound=Iterable) -_K = TypeVar("_K") -_V = TypeVar("_V") -_M = TypeVar("_M", bound=Mapping) - -def set_disabled(run: bool) -> None: ... -def get_disabled() -> bool: ... -def disabled() -> ContextManager[None]: ... - -# To be more precise on instance_of use some overloads. -# If there are more than 3 items in the tuple then we fall back to Any -@overload -def instance_of(type: type[_T]) -> _ValidatorType[_T]: ... -@overload -def instance_of(type: tuple[type[_T]]) -> _ValidatorType[_T]: ... -@overload -def instance_of( - type: tuple[type[_T1], type[_T2]], -) -> _ValidatorType[_T1 | _T2]: ... -@overload -def instance_of( - type: tuple[type[_T1], type[_T2], type[_T3]], -) -> _ValidatorType[_T1 | _T2 | _T3]: ... -@overload -def instance_of(type: tuple[type, ...]) -> _ValidatorType[Any]: ... -@overload -def instance_of(type: UnionType) -> _ValidatorType[Any]: ... -def optional( - validator: ( - _ValidatorType[_T] - | list[_ValidatorType[_T]] - | tuple[_ValidatorType[_T]] - ), -) -> _ValidatorType[_T | None]: ... -def in_(options: Container[_T]) -> _ValidatorType[_T]: ... -def and_(*validators: _ValidatorType[_T]) -> _ValidatorType[_T]: ... -def matches_re( - regex: Pattern[AnyStr] | AnyStr, - flags: int = ..., - func: Callable[[AnyStr, AnyStr, int], Match[AnyStr] | None] | None = ..., -) -> _ValidatorType[AnyStr]: ... -def deep_iterable( - member_validator: _ValidatorArgType[_T], - iterable_validator: _ValidatorType[_I] | None = ..., -) -> _ValidatorType[_I]: ... -def deep_mapping( - key_validator: _ValidatorType[_K], - value_validator: _ValidatorType[_V], - mapping_validator: _ValidatorType[_M] | None = ..., -) -> _ValidatorType[_M]: ... -def is_callable() -> _ValidatorType[_T]: ... -def lt(val: _T) -> _ValidatorType[_T]: ... -def le(val: _T) -> _ValidatorType[_T]: ... -def ge(val: _T) -> _ValidatorType[_T]: ... -def gt(val: _T) -> _ValidatorType[_T]: ... -def max_len(length: int) -> _ValidatorType[_T]: ... -def min_len(length: int) -> _ValidatorType[_T]: ... -def not_( - validator: _ValidatorType[_T], - *, - msg: str | None = None, - exc_types: type[Exception] | Iterable[type[Exception]] = ..., -) -> _ValidatorType[_T]: ... -def or_(*validators: _ValidatorType[_T]) -> _ValidatorType[_T]: ... diff --git a/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/METADATA b/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/METADATA deleted file mode 100644 index 029afee..0000000 --- a/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/METADATA +++ /dev/null @@ -1,232 +0,0 @@ -Metadata-Version: 2.4 -Name: attrs -Version: 25.3.0 -Summary: Classes Without Boilerplate -Project-URL: Documentation, https://www.attrs.org/ -Project-URL: Changelog, https://www.attrs.org/en/stable/changelog.html -Project-URL: GitHub, https://github.com/python-attrs/attrs -Project-URL: Funding, https://github.com/sponsors/hynek -Project-URL: Tidelift, https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi -Author-email: Hynek Schlawack -License-Expression: MIT -License-File: LICENSE -Keywords: attribute,boilerplate,class -Classifier: Development Status :: 5 - Production/Stable -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: 3.13 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Typing :: Typed -Requires-Python: >=3.8 -Provides-Extra: benchmark -Requires-Dist: cloudpickle; (platform_python_implementation == 'CPython') and extra == 'benchmark' -Requires-Dist: hypothesis; extra == 'benchmark' -Requires-Dist: mypy>=1.11.1; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'benchmark' -Requires-Dist: pympler; extra == 'benchmark' -Requires-Dist: pytest-codspeed; extra == 'benchmark' -Requires-Dist: pytest-mypy-plugins; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'benchmark' -Requires-Dist: pytest-xdist[psutil]; extra == 'benchmark' -Requires-Dist: pytest>=4.3.0; extra == 'benchmark' -Provides-Extra: cov -Requires-Dist: cloudpickle; (platform_python_implementation == 'CPython') and extra == 'cov' -Requires-Dist: coverage[toml]>=5.3; extra == 'cov' -Requires-Dist: hypothesis; extra == 'cov' -Requires-Dist: mypy>=1.11.1; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'cov' -Requires-Dist: pympler; extra == 'cov' -Requires-Dist: pytest-mypy-plugins; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'cov' -Requires-Dist: pytest-xdist[psutil]; extra == 'cov' -Requires-Dist: pytest>=4.3.0; extra == 'cov' -Provides-Extra: dev -Requires-Dist: cloudpickle; (platform_python_implementation == 'CPython') and extra == 'dev' -Requires-Dist: hypothesis; extra == 'dev' -Requires-Dist: mypy>=1.11.1; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'dev' -Requires-Dist: pre-commit-uv; extra == 'dev' -Requires-Dist: pympler; extra == 'dev' -Requires-Dist: pytest-mypy-plugins; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'dev' -Requires-Dist: pytest-xdist[psutil]; extra == 'dev' -Requires-Dist: pytest>=4.3.0; extra == 'dev' -Provides-Extra: docs -Requires-Dist: cogapp; extra == 'docs' -Requires-Dist: furo; extra == 'docs' -Requires-Dist: myst-parser; extra == 'docs' -Requires-Dist: sphinx; extra == 'docs' -Requires-Dist: sphinx-notfound-page; extra == 'docs' -Requires-Dist: sphinxcontrib-towncrier; extra == 'docs' -Requires-Dist: towncrier; extra == 'docs' -Provides-Extra: tests -Requires-Dist: cloudpickle; (platform_python_implementation == 'CPython') and extra == 'tests' -Requires-Dist: hypothesis; extra == 'tests' -Requires-Dist: mypy>=1.11.1; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'tests' -Requires-Dist: pympler; extra == 'tests' -Requires-Dist: pytest-mypy-plugins; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'tests' -Requires-Dist: pytest-xdist[psutil]; extra == 'tests' -Requires-Dist: pytest>=4.3.0; extra == 'tests' -Provides-Extra: tests-mypy -Requires-Dist: mypy>=1.11.1; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'tests-mypy' -Requires-Dist: pytest-mypy-plugins; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'tests-mypy' -Description-Content-Type: text/markdown - -

    - - attrs - -

    - - -*attrs* is the Python package that will bring back the **joy** of **writing classes** by relieving you from the drudgery of implementing object protocols (aka [dunder methods](https://www.attrs.org/en/latest/glossary.html#term-dunder-methods)). -[Trusted by NASA](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile#list-of-qualifying-repositories-for-mars-2020-helicopter-contributor-achievement) for Mars missions since 2020! - -Its main goal is to help you to write **concise** and **correct** software without slowing down your code. - - -## Sponsors - -*attrs* would not be possible without our [amazing sponsors](https://github.com/sponsors/hynek). -Especially those generously supporting us at the *The Organization* tier and higher: - - - -

    - - - - - - - - - - - -

    - - - -

    - Please consider joining them to help make attrs’s maintenance more sustainable! -

    - - - -## Example - -*attrs* gives you a class decorator and a way to declaratively define the attributes on that class: - - - -```pycon ->>> from attrs import asdict, define, make_class, Factory - ->>> @define -... class SomeClass: -... a_number: int = 42 -... list_of_numbers: list[int] = Factory(list) -... -... def hard_math(self, another_number): -... return self.a_number + sum(self.list_of_numbers) * another_number - - ->>> sc = SomeClass(1, [1, 2, 3]) ->>> sc -SomeClass(a_number=1, list_of_numbers=[1, 2, 3]) - ->>> sc.hard_math(3) -19 ->>> sc == SomeClass(1, [1, 2, 3]) -True ->>> sc != SomeClass(2, [3, 2, 1]) -True - ->>> asdict(sc) -{'a_number': 1, 'list_of_numbers': [1, 2, 3]} - ->>> SomeClass() -SomeClass(a_number=42, list_of_numbers=[]) - ->>> C = make_class("C", ["a", "b"]) ->>> C("foo", "bar") -C(a='foo', b='bar') -``` - -After *declaring* your attributes, *attrs* gives you: - -- a concise and explicit overview of the class's attributes, -- a nice human-readable `__repr__`, -- equality-checking methods, -- an initializer, -- and much more, - -*without* writing dull boilerplate code again and again and *without* runtime performance penalties. - ---- - -This example uses *attrs*'s modern APIs that have been introduced in version 20.1.0, and the *attrs* package import name that has been added in version 21.3.0. -The classic APIs (`@attr.s`, `attr.ib`, plus their serious-business aliases) and the `attr` package import name will remain **indefinitely**. - -Check out [*On The Core API Names*](https://www.attrs.org/en/latest/names.html) for an in-depth explanation! - - -### Hate Type Annotations!? - -No problem! -Types are entirely **optional** with *attrs*. -Simply assign `attrs.field()` to the attributes instead of annotating them with types: - -```python -from attrs import define, field - -@define -class SomeClass: - a_number = field(default=42) - list_of_numbers = field(factory=list) -``` - - -## Data Classes - -On the tin, *attrs* might remind you of `dataclasses` (and indeed, `dataclasses` [are a descendant](https://hynek.me/articles/import-attrs/) of *attrs*). -In practice it does a lot more and is more flexible. -For instance, it allows you to define [special handling of NumPy arrays for equality checks](https://www.attrs.org/en/stable/comparison.html#customization), allows more ways to [plug into the initialization process](https://www.attrs.org/en/stable/init.html#hooking-yourself-into-initialization), has a replacement for `__init_subclass__`, and allows for stepping through the generated methods using a debugger. - -For more details, please refer to our [comparison page](https://www.attrs.org/en/stable/why.html#data-classes), but generally speaking, we are more likely to commit crimes against nature to make things work that one would expect to work, but that are quite complicated in practice. - - -## Project Information - -- [**Changelog**](https://www.attrs.org/en/stable/changelog.html) -- [**Documentation**](https://www.attrs.org/) -- [**PyPI**](https://pypi.org/project/attrs/) -- [**Source Code**](https://github.com/python-attrs/attrs) -- [**Contributing**](https://github.com/python-attrs/attrs/blob/main/.github/CONTRIBUTING.md) -- [**Third-party Extensions**](https://github.com/python-attrs/attrs/wiki/Extensions-to-attrs) -- **Get Help**: use the `python-attrs` tag on [Stack Overflow](https://stackoverflow.com/questions/tagged/python-attrs) - - -### *attrs* for Enterprise - -Available as part of the [Tidelift Subscription](https://tidelift.com/?utm_source=lifter&utm_medium=referral&utm_campaign=hynek). - -The maintainers of *attrs* and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. -Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use. - -## Release Information - -### Changes - -- Restore support for generator-based `field_transformer`s. - [#1417](https://github.com/python-attrs/attrs/issues/1417) - - - ---- - -[Full changelog →](https://www.attrs.org/en/stable/changelog.html) diff --git a/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/RECORD b/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/RECORD deleted file mode 100644 index b04b541..0000000 --- a/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/RECORD +++ /dev/null @@ -1,55 +0,0 @@ -attr/__init__.py,sha256=fOYIvt1eGSqQre4uCS3sJWKZ0mwAuC8UD6qba5OS9_U,2057 -attr/__init__.pyi,sha256=QIXnnHPoucmDWkbpNsWTP-cgJ1bn8le7DjyRa_wYdew,11281 -attr/__pycache__/__init__.cpython-312.pyc,, -attr/__pycache__/_cmp.cpython-312.pyc,, -attr/__pycache__/_compat.cpython-312.pyc,, -attr/__pycache__/_config.cpython-312.pyc,, -attr/__pycache__/_funcs.cpython-312.pyc,, -attr/__pycache__/_make.cpython-312.pyc,, -attr/__pycache__/_next_gen.cpython-312.pyc,, -attr/__pycache__/_version_info.cpython-312.pyc,, -attr/__pycache__/converters.cpython-312.pyc,, -attr/__pycache__/exceptions.cpython-312.pyc,, -attr/__pycache__/filters.cpython-312.pyc,, -attr/__pycache__/setters.cpython-312.pyc,, -attr/__pycache__/validators.cpython-312.pyc,, -attr/_cmp.py,sha256=3Nn1TjxllUYiX_nJoVnEkXoDk0hM1DYKj5DE7GZe4i0,4117 -attr/_cmp.pyi,sha256=U-_RU_UZOyPUEQzXE6RMYQQcjkZRY25wTH99sN0s7MM,368 -attr/_compat.py,sha256=4hlXbWhdDjQCDK6FKF1EgnZ3POiHgtpp54qE0nxaGHg,2704 -attr/_config.py,sha256=dGq3xR6fgZEF6UBt_L0T-eUHIB4i43kRmH0P28sJVw8,843 -attr/_funcs.py,sha256=5-tUKJtp3h5El55EcDl6GWXFp68fT8D8U7uCRN6497I,15854 -attr/_make.py,sha256=lBUPPmxiA1BeHzB6OlHoCEh--tVvM1ozXO8eXOa6g4c,96664 -attr/_next_gen.py,sha256=7FRkbtl_N017SuBhf_Vw3mw2c2pGZhtCGOzadgz7tp4,24395 -attr/_typing_compat.pyi,sha256=XDP54TUn-ZKhD62TOQebmzrwFyomhUCoGRpclb6alRA,469 -attr/_version_info.py,sha256=exSqb3b5E-fMSsgZAlEw9XcLpEgobPORCZpcaEglAM4,2121 -attr/_version_info.pyi,sha256=x_M3L3WuB7r_ULXAWjx959udKQ4HLB8l-hsc1FDGNvk,209 -attr/converters.py,sha256=GlDeOzPeTFgeBBLbj9G57Ez5lAk68uhSALRYJ_exe84,3861 -attr/converters.pyi,sha256=orU2bff-VjQa2kMDyvnMQV73oJT2WRyQuw4ZR1ym1bE,643 -attr/exceptions.py,sha256=HRFq4iybmv7-DcZwyjl6M1euM2YeJVK_hFxuaBGAngI,1977 -attr/exceptions.pyi,sha256=zZq8bCUnKAy9mDtBEw42ZhPhAUIHoTKedDQInJD883M,539 -attr/filters.py,sha256=ZBiKWLp3R0LfCZsq7X11pn9WX8NslS2wXM4jsnLOGc8,1795 -attr/filters.pyi,sha256=3J5BG-dTxltBk1_-RuNRUHrv2qu1v8v4aDNAQ7_mifA,208 -attr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -attr/setters.py,sha256=5-dcT63GQK35ONEzSgfXCkbB7pPkaR-qv15mm4PVSzQ,1617 -attr/setters.pyi,sha256=NnVkaFU1BB4JB8E4JuXyrzTUgvtMpj8p3wBdJY7uix4,584 -attr/validators.py,sha256=WaB1HLAHHqRHWsrv_K9H-sJ7ESil3H3Cmv2d8TtVZx4,20046 -attr/validators.pyi,sha256=s2WhKPqskxbsckJfKk8zOuuB088GfgpyxcCYSNFLqNU,2603 -attrs-25.3.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -attrs-25.3.0.dist-info/METADATA,sha256=W38cREj7s1wqNf1fg4hVwZmL1xh0AdSp4IhtTMROinw,10993 -attrs-25.3.0.dist-info/RECORD,, -attrs-25.3.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87 -attrs-25.3.0.dist-info/licenses/LICENSE,sha256=iCEVyV38KvHutnFPjsbVy8q_Znyv-HKfQkINpj9xTp8,1109 -attrs/__init__.py,sha256=qeQJZ4O08yczSn840v9bYOaZyRE81WsVi-QCrY3krCU,1107 -attrs/__init__.pyi,sha256=nZmInocjM7tHV4AQw0vxO_fo6oJjL_PonlV9zKKW8DY,7931 -attrs/__pycache__/__init__.cpython-312.pyc,, -attrs/__pycache__/converters.cpython-312.pyc,, -attrs/__pycache__/exceptions.cpython-312.pyc,, -attrs/__pycache__/filters.cpython-312.pyc,, -attrs/__pycache__/setters.cpython-312.pyc,, -attrs/__pycache__/validators.cpython-312.pyc,, -attrs/converters.py,sha256=8kQljrVwfSTRu8INwEk8SI0eGrzmWftsT7rM0EqyohM,76 -attrs/exceptions.py,sha256=ACCCmg19-vDFaDPY9vFl199SPXCQMN_bENs4DALjzms,76 -attrs/filters.py,sha256=VOUMZug9uEU6dUuA0dF1jInUK0PL3fLgP0VBS5d-CDE,73 -attrs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -attrs/setters.py,sha256=eL1YidYQV3T2h9_SYIZSZR1FAcHGb1TuCTy0E0Lv2SU,73 -attrs/validators.py,sha256=xcy6wD5TtTkdCG1f4XWbocPSO0faBjk5IfVJfP6SUj0,76 diff --git a/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/WHEEL b/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/WHEEL deleted file mode 100644 index 12228d4..0000000 --- a/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/WHEEL +++ /dev/null @@ -1,4 +0,0 @@ -Wheel-Version: 1.0 -Generator: hatchling 1.27.0 -Root-Is-Purelib: true -Tag: py3-none-any diff --git a/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/licenses/LICENSE b/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/licenses/LICENSE deleted file mode 100644 index 2bd6453..0000000 --- a/venv/lib/python3.12/site-packages/attrs-25.3.0.dist-info/licenses/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Hynek Schlawack and the attrs contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/venv/lib/python3.12/site-packages/attrs/__init__.py b/venv/lib/python3.12/site-packages/attrs/__init__.py deleted file mode 100644 index e8023ff..0000000 --- a/venv/lib/python3.12/site-packages/attrs/__init__.py +++ /dev/null @@ -1,69 +0,0 @@ -# SPDX-License-Identifier: MIT - -from attr import ( - NOTHING, - Attribute, - AttrsInstance, - Converter, - Factory, - NothingType, - _make_getattr, - assoc, - cmp_using, - define, - evolve, - field, - fields, - fields_dict, - frozen, - has, - make_class, - mutable, - resolve_types, - validate, -) -from attr._next_gen import asdict, astuple - -from . import converters, exceptions, filters, setters, validators - - -__all__ = [ - "NOTHING", - "Attribute", - "AttrsInstance", - "Converter", - "Factory", - "NothingType", - "__author__", - "__copyright__", - "__description__", - "__doc__", - "__email__", - "__license__", - "__title__", - "__url__", - "__version__", - "__version_info__", - "asdict", - "assoc", - "astuple", - "cmp_using", - "converters", - "define", - "evolve", - "exceptions", - "field", - "fields", - "fields_dict", - "filters", - "frozen", - "has", - "make_class", - "mutable", - "resolve_types", - "setters", - "validate", - "validators", -] - -__getattr__ = _make_getattr(__name__) diff --git a/venv/lib/python3.12/site-packages/attrs/__init__.pyi b/venv/lib/python3.12/site-packages/attrs/__init__.pyi deleted file mode 100644 index 648fa7a..0000000 --- a/venv/lib/python3.12/site-packages/attrs/__init__.pyi +++ /dev/null @@ -1,263 +0,0 @@ -import sys - -from typing import ( - Any, - Callable, - Mapping, - Sequence, - overload, - TypeVar, -) - -# Because we need to type our own stuff, we have to make everything from -# attr explicitly public too. -from attr import __author__ as __author__ -from attr import __copyright__ as __copyright__ -from attr import __description__ as __description__ -from attr import __email__ as __email__ -from attr import __license__ as __license__ -from attr import __title__ as __title__ -from attr import __url__ as __url__ -from attr import __version__ as __version__ -from attr import __version_info__ as __version_info__ -from attr import assoc as assoc -from attr import Attribute as Attribute -from attr import AttrsInstance as AttrsInstance -from attr import cmp_using as cmp_using -from attr import converters as converters -from attr import Converter as Converter -from attr import evolve as evolve -from attr import exceptions as exceptions -from attr import Factory as Factory -from attr import fields as fields -from attr import fields_dict as fields_dict -from attr import filters as filters -from attr import has as has -from attr import make_class as make_class -from attr import NOTHING as NOTHING -from attr import resolve_types as resolve_types -from attr import setters as setters -from attr import validate as validate -from attr import validators as validators -from attr import attrib, asdict as asdict, astuple as astuple -from attr import NothingType as NothingType - -if sys.version_info >= (3, 11): - from typing import dataclass_transform -else: - from typing_extensions import dataclass_transform - -_T = TypeVar("_T") -_C = TypeVar("_C", bound=type) - -_EqOrderType = bool | Callable[[Any], Any] -_ValidatorType = Callable[[Any, "Attribute[_T]", _T], Any] -_CallableConverterType = Callable[[Any], Any] -_ConverterType = _CallableConverterType | Converter[Any, Any] -_ReprType = Callable[[Any], str] -_ReprArgType = bool | _ReprType -_OnSetAttrType = Callable[[Any, "Attribute[Any]", Any], Any] -_OnSetAttrArgType = _OnSetAttrType | list[_OnSetAttrType] | setters._NoOpType -_FieldTransformer = Callable[ - [type, list["Attribute[Any]"]], list["Attribute[Any]"] -] -# FIXME: in reality, if multiple validators are passed they must be in a list -# or tuple, but those are invariant and so would prevent subtypes of -# _ValidatorType from working when passed in a list or tuple. -_ValidatorArgType = _ValidatorType[_T] | Sequence[_ValidatorType[_T]] - -@overload -def field( - *, - default: None = ..., - validator: None = ..., - repr: _ReprArgType = ..., - hash: bool | None = ..., - init: bool = ..., - metadata: Mapping[Any, Any] | None = ..., - converter: None = ..., - factory: None = ..., - kw_only: bool = ..., - eq: bool | None = ..., - order: bool | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - alias: str | None = ..., - type: type | None = ..., -) -> Any: ... - -# This form catches an explicit None or no default and infers the type from the -# other arguments. -@overload -def field( - *, - default: None = ..., - validator: _ValidatorArgType[_T] | None = ..., - repr: _ReprArgType = ..., - hash: bool | None = ..., - init: bool = ..., - metadata: Mapping[Any, Any] | None = ..., - converter: _ConverterType - | list[_ConverterType] - | tuple[_ConverterType] - | None = ..., - factory: Callable[[], _T] | None = ..., - kw_only: bool = ..., - eq: _EqOrderType | None = ..., - order: _EqOrderType | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - alias: str | None = ..., - type: type | None = ..., -) -> _T: ... - -# This form catches an explicit default argument. -@overload -def field( - *, - default: _T, - validator: _ValidatorArgType[_T] | None = ..., - repr: _ReprArgType = ..., - hash: bool | None = ..., - init: bool = ..., - metadata: Mapping[Any, Any] | None = ..., - converter: _ConverterType - | list[_ConverterType] - | tuple[_ConverterType] - | None = ..., - factory: Callable[[], _T] | None = ..., - kw_only: bool = ..., - eq: _EqOrderType | None = ..., - order: _EqOrderType | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - alias: str | None = ..., - type: type | None = ..., -) -> _T: ... - -# This form covers type=non-Type: e.g. forward references (str), Any -@overload -def field( - *, - default: _T | None = ..., - validator: _ValidatorArgType[_T] | None = ..., - repr: _ReprArgType = ..., - hash: bool | None = ..., - init: bool = ..., - metadata: Mapping[Any, Any] | None = ..., - converter: _ConverterType - | list[_ConverterType] - | tuple[_ConverterType] - | None = ..., - factory: Callable[[], _T] | None = ..., - kw_only: bool = ..., - eq: _EqOrderType | None = ..., - order: _EqOrderType | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - alias: str | None = ..., - type: type | None = ..., -) -> Any: ... -@overload -@dataclass_transform(field_specifiers=(attrib, field)) -def define( - maybe_cls: _C, - *, - these: dict[str, Any] | None = ..., - repr: bool = ..., - unsafe_hash: bool | None = ..., - hash: bool | None = ..., - init: bool = ..., - slots: bool = ..., - frozen: bool = ..., - weakref_slot: bool = ..., - str: bool = ..., - auto_attribs: bool = ..., - kw_only: bool = ..., - cache_hash: bool = ..., - auto_exc: bool = ..., - eq: bool | None = ..., - order: bool | None = ..., - auto_detect: bool = ..., - getstate_setstate: bool | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - field_transformer: _FieldTransformer | None = ..., - match_args: bool = ..., -) -> _C: ... -@overload -@dataclass_transform(field_specifiers=(attrib, field)) -def define( - maybe_cls: None = ..., - *, - these: dict[str, Any] | None = ..., - repr: bool = ..., - unsafe_hash: bool | None = ..., - hash: bool | None = ..., - init: bool = ..., - slots: bool = ..., - frozen: bool = ..., - weakref_slot: bool = ..., - str: bool = ..., - auto_attribs: bool = ..., - kw_only: bool = ..., - cache_hash: bool = ..., - auto_exc: bool = ..., - eq: bool | None = ..., - order: bool | None = ..., - auto_detect: bool = ..., - getstate_setstate: bool | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - field_transformer: _FieldTransformer | None = ..., - match_args: bool = ..., -) -> Callable[[_C], _C]: ... - -mutable = define - -@overload -@dataclass_transform(frozen_default=True, field_specifiers=(attrib, field)) -def frozen( - maybe_cls: _C, - *, - these: dict[str, Any] | None = ..., - repr: bool = ..., - unsafe_hash: bool | None = ..., - hash: bool | None = ..., - init: bool = ..., - slots: bool = ..., - frozen: bool = ..., - weakref_slot: bool = ..., - str: bool = ..., - auto_attribs: bool = ..., - kw_only: bool = ..., - cache_hash: bool = ..., - auto_exc: bool = ..., - eq: bool | None = ..., - order: bool | None = ..., - auto_detect: bool = ..., - getstate_setstate: bool | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - field_transformer: _FieldTransformer | None = ..., - match_args: bool = ..., -) -> _C: ... -@overload -@dataclass_transform(frozen_default=True, field_specifiers=(attrib, field)) -def frozen( - maybe_cls: None = ..., - *, - these: dict[str, Any] | None = ..., - repr: bool = ..., - unsafe_hash: bool | None = ..., - hash: bool | None = ..., - init: bool = ..., - slots: bool = ..., - frozen: bool = ..., - weakref_slot: bool = ..., - str: bool = ..., - auto_attribs: bool = ..., - kw_only: bool = ..., - cache_hash: bool = ..., - auto_exc: bool = ..., - eq: bool | None = ..., - order: bool | None = ..., - auto_detect: bool = ..., - getstate_setstate: bool | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - field_transformer: _FieldTransformer | None = ..., - match_args: bool = ..., -) -> Callable[[_C], _C]: ... diff --git a/venv/lib/python3.12/site-packages/attrs/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/attrs/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 86f10b2ea8f968331a5c524c0ac452f772c7db16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1131 zcmaKqJC77c5P*C3F|&``-FqM013zSfmF-&tDYE24GLWn#AnK&mH`BMB<-zCEhYiO5B<1p} zuY~jGDE!I_RwRZ&!V{?R8q|3m8oU8b-h`B=kns#!yajFEh7RvQmv>=}uR)LZpwIg- z-~(9a>#)H$V3Tjc7TLU8(Y9#rg+=pwZcrUzJG}(zK+ZX|;qXCC~tIu&ZMf;w3vrFZOOcnp#k!AFZ@tOZ8Nb z@T~pZ1T-#GxfmIJI+`tUo#n0L8#hN@2le$#=8xq>`4JW7M?&aQ<9d&0%Xh8YV2im? z-@2O^p6<+_ApWi=N%A(`NosG||8ZW~zGBIjf3cH4*vUWX^=|E_?9Dh~gTrU{UiGj4 J+;!hznD?Q)Ii3Ij diff --git a/venv/lib/python3.12/site-packages/attrs/__pycache__/converters.cpython-312.pyc b/venv/lib/python3.12/site-packages/attrs/__pycache__/converters.cpython-312.pyc deleted file mode 100644 index 13479cd0f75a36b19f09559f64b325c449b02b94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmX@j%ge<81noge89qSzF^B^LOi;#WJ|JT{LkdF*V-CYwCPs!zCQas-AW2QeTZ~$M zK$1VPq@+kMIX|x~wWuVusCXsAXOR4_0R4>o+*JLn{KWj+{JhkvOnvA4yyDWF5};sN zYF?RsPG*vRL1jrsex9+Op^<)ZW=X1UL1J=tVtQ(^KFH8weT1oc1(m-zY;yBcN^?@} cia3B4FamKg$Oj*o85tSBvN15q6|n)i0DAj64*&oF diff --git a/venv/lib/python3.12/site-packages/attrs/__pycache__/exceptions.cpython-312.pyc b/venv/lib/python3.12/site-packages/attrs/__pycache__/exceptions.cpython-312.pyc deleted file mode 100644 index 9b7a8f757110f6ace68dccde84e5869fcc695d2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmX@j%ge<81noge89qSzF^B^LOi;#WJ|JT{LkdF*V-CYwCPs!zCQas-AW2QeTZ~$M zK$1VPq@+kMwIVsSpd>RtuXrWHXOR4_0R4>o+*JLn{KWj+{JhkvOnqmdY-vsjP_QgD zuS`EDGfBUovLquv&sfjUNWVCgfw&mtgAdG%jErB|7#QV>*nnIBbeTE* diff --git a/venv/lib/python3.12/site-packages/attrs/__pycache__/filters.cpython-312.pyc b/venv/lib/python3.12/site-packages/attrs/__pycache__/filters.cpython-312.pyc deleted file mode 100644 index f5d508ed18e5f04d5a4f79d53466edde7fff381d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmX@j%ge<81noge8JFJJwP{M=Oito+3M-2A-Ms!V<7{Ji4QoD!g5S!!OH zeokhRenDkPMt+{Lo}rO`ab`)XZb4#lc4B&Ju|CMeVtuHQdIgogIBatBQ%ZAE?TR>n ZrZWO@G05#7m>C%vzp^nfN*A#Kxd77%H(vk% diff --git a/venv/lib/python3.12/site-packages/attrs/__pycache__/setters.cpython-312.pyc b/venv/lib/python3.12/site-packages/attrs/__pycache__/setters.cpython-312.pyc deleted file mode 100644 index b56a2c4a2de2f38ed37261cf5ce78ad9e7402676..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmX@j%ge<81noge8JFJJwP{M=Oito+3M-2A-Ms!V<7{Ji4QoD!g5S!!OH zeokhRenDkPMt+{Lo}rO`ab`)XZb4#lc4B&Ju|CMeVtuHQdIgogIBatBQ%ZAE?TR>n ZrZWO@G05#7m>C%vzp^nfN*A#Kxd7hwH-P{E diff --git a/venv/lib/python3.12/site-packages/attrs/__pycache__/validators.cpython-312.pyc b/venv/lib/python3.12/site-packages/attrs/__pycache__/validators.cpython-312.pyc deleted file mode 100644 index 516d5844c457997f8258a21f7caad78ce8ff4c3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmX@j%ge<81noge89qSzF^B^LOi;#WJ|JT{LkdF*V-CYwCPs!zCQas-AW2QeTZ~$M zK$1VPq@+l%EHNiDC9x#GsCXsAXOR4_0R4>o+*JLn{KWj+{JhkvOnvA4yyDWF5};sN zYF?RsPG*vRL1jrsex9+Op^<)ZW=X1UL1J=tVtQ(^KFH8weT1oc1(m-zY;yBcN^?@} cia3B4FamKg$Oj*o85tSBvN15q6|n)i0B$!q>i_@% diff --git a/venv/lib/python3.12/site-packages/attrs/converters.py b/venv/lib/python3.12/site-packages/attrs/converters.py deleted file mode 100644 index 7821f6c..0000000 --- a/venv/lib/python3.12/site-packages/attrs/converters.py +++ /dev/null @@ -1,3 +0,0 @@ -# SPDX-License-Identifier: MIT - -from attr.converters import * # noqa: F403 diff --git a/venv/lib/python3.12/site-packages/attrs/exceptions.py b/venv/lib/python3.12/site-packages/attrs/exceptions.py deleted file mode 100644 index 3323f9d..0000000 --- a/venv/lib/python3.12/site-packages/attrs/exceptions.py +++ /dev/null @@ -1,3 +0,0 @@ -# SPDX-License-Identifier: MIT - -from attr.exceptions import * # noqa: F403 diff --git a/venv/lib/python3.12/site-packages/attrs/filters.py b/venv/lib/python3.12/site-packages/attrs/filters.py deleted file mode 100644 index 3080f48..0000000 --- a/venv/lib/python3.12/site-packages/attrs/filters.py +++ /dev/null @@ -1,3 +0,0 @@ -# SPDX-License-Identifier: MIT - -from attr.filters import * # noqa: F403 diff --git a/venv/lib/python3.12/site-packages/attrs/py.typed b/venv/lib/python3.12/site-packages/attrs/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/attrs/setters.py b/venv/lib/python3.12/site-packages/attrs/setters.py deleted file mode 100644 index f3d73bb..0000000 --- a/venv/lib/python3.12/site-packages/attrs/setters.py +++ /dev/null @@ -1,3 +0,0 @@ -# SPDX-License-Identifier: MIT - -from attr.setters import * # noqa: F403 diff --git a/venv/lib/python3.12/site-packages/attrs/validators.py b/venv/lib/python3.12/site-packages/attrs/validators.py deleted file mode 100644 index 037e124..0000000 --- a/venv/lib/python3.12/site-packages/attrs/validators.py +++ /dev/null @@ -1,3 +0,0 @@ -# SPDX-License-Identifier: MIT - -from attr.validators import * # noqa: F403 diff --git a/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/METADATA b/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/METADATA deleted file mode 100644 index bba2b69..0000000 --- a/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/METADATA +++ /dev/null @@ -1,78 +0,0 @@ -Metadata-Version: 2.4 -Name: certifi -Version: 2025.4.26 -Summary: Python package for providing Mozilla's CA Bundle. -Home-page: https://github.com/certifi/python-certifi -Author: Kenneth Reitz -Author-email: me@kennethreitz.com -License: MPL-2.0 -Project-URL: Source, https://github.com/certifi/python-certifi -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) -Classifier: Natural Language :: English -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: 3.13 -Requires-Python: >=3.6 -License-File: LICENSE -Dynamic: author -Dynamic: author-email -Dynamic: classifier -Dynamic: description -Dynamic: home-page -Dynamic: license -Dynamic: license-file -Dynamic: project-url -Dynamic: requires-python -Dynamic: summary - -Certifi: Python SSL Certificates -================================ - -Certifi provides Mozilla's carefully curated collection of Root Certificates for -validating the trustworthiness of SSL certificates while verifying the identity -of TLS hosts. It has been extracted from the `Requests`_ project. - -Installation ------------- - -``certifi`` is available on PyPI. Simply install it with ``pip``:: - - $ pip install certifi - -Usage ------ - -To reference the installed certificate authority (CA) bundle, you can use the -built-in function:: - - >>> import certifi - - >>> certifi.where() - '/usr/local/lib/python3.7/site-packages/certifi/cacert.pem' - -Or from the command line:: - - $ python -m certifi - /usr/local/lib/python3.7/site-packages/certifi/cacert.pem - -Enjoy! - -.. _`Requests`: https://requests.readthedocs.io/en/master/ - -Addition/Removal of Certificates --------------------------------- - -Certifi does not support any addition/removal or other modification of the -CA trust store content. This project is intended to provide a reliable and -highly portable root of trust to python deployments. Look to upstream projects -for methods to use alternate trust. diff --git a/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/RECORD b/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/RECORD deleted file mode 100644 index 86cf5a3..0000000 --- a/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/RECORD +++ /dev/null @@ -1,14 +0,0 @@ -certifi-2025.4.26.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -certifi-2025.4.26.dist-info/METADATA,sha256=Q1SDFkY5LOQAJmDltZz2wU3VTv1Kh5X-rjGI4KiPHNM,2473 -certifi-2025.4.26.dist-info/RECORD,, -certifi-2025.4.26.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91 -certifi-2025.4.26.dist-info/licenses/LICENSE,sha256=6TcW2mucDVpKHfYP5pWzcPBpVgPSH2-D8FPkLPwQyvc,989 -certifi-2025.4.26.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 -certifi/__init__.py,sha256=9pyWUGr6sbAlksfOHo0BTV0Gxljjh4IK1kXAjHgjL4I,94 -certifi/__main__.py,sha256=xBBoj905TUWBLRGANOcf7oi6e-3dMP4cEoG9OyMs11g,243 -certifi/__pycache__/__init__.cpython-312.pyc,, -certifi/__pycache__/__main__.cpython-312.pyc,, -certifi/__pycache__/core.cpython-312.pyc,, -certifi/cacert.pem,sha256=K3sQJvGKKX4hSBicoMvn0-f578NvcjHMwoIKQE_rVZY,283771 -certifi/core.py,sha256=qRDDFyXVJwTB_EmoGppaXU_R9qCZvhl-EzxPMuV3nTA,4426 -certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/WHEEL b/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/WHEEL deleted file mode 100644 index 8acb955..0000000 --- a/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: setuptools (79.0.1) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/licenses/LICENSE b/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/licenses/LICENSE deleted file mode 100644 index 62b076c..0000000 --- a/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/licenses/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -This package contains a modified version of ca-bundle.crt: - -ca-bundle.crt -- Bundle of CA Root Certificates - -This is a bundle of X.509 certificates of public Certificate Authorities -(CA). These were automatically extracted from Mozilla's root certificates -file (certdata.txt). This file can be found in the mozilla source tree: -https://hg.mozilla.org/mozilla-central/file/tip/security/nss/lib/ckfw/builtins/certdata.txt -It contains the certificates in PEM format and therefore -can be directly used with curl / libcurl / php_curl, or with -an Apache+mod_ssl webserver for SSL client authentication. -Just configure this file as the SSLCACertificateFile.# - -***** BEGIN LICENSE BLOCK ***** -This Source Code Form is subject to the terms of the Mozilla Public License, -v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain -one at http://mozilla.org/MPL/2.0/. - -***** END LICENSE BLOCK ***** -@(#) $RCSfile: certdata.txt,v $ $Revision: 1.80 $ $Date: 2011/11/03 15:11:58 $ diff --git a/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/top_level.txt deleted file mode 100644 index 963eac5..0000000 --- a/venv/lib/python3.12/site-packages/certifi-2025.4.26.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -certifi diff --git a/venv/lib/python3.12/site-packages/certifi/__init__.py b/venv/lib/python3.12/site-packages/certifi/__init__.py deleted file mode 100644 index bf83fa9..0000000 --- a/venv/lib/python3.12/site-packages/certifi/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .core import contents, where - -__all__ = ["contents", "where"] -__version__ = "2025.04.26" diff --git a/venv/lib/python3.12/site-packages/certifi/__main__.py b/venv/lib/python3.12/site-packages/certifi/__main__.py deleted file mode 100644 index 8945b5d..0000000 --- a/venv/lib/python3.12/site-packages/certifi/__main__.py +++ /dev/null @@ -1,12 +0,0 @@ -import argparse - -from certifi import contents, where - -parser = argparse.ArgumentParser() -parser.add_argument("-c", "--contents", action="store_true") -args = parser.parse_args() - -if args.contents: - print(contents()) -else: - print(where()) diff --git a/venv/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 56cd4c9e6903a22c3ac5ad32e2fef4c9bd5d921f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmYjLJx{|h5Vf6zmPBPkNGyD88Hh`OPKbpaA;t_?AvTS{u_N0}l}<3Rvhf@EEi8;E z3rI|CNZmT&N+9uuckkZ2)7{Hp5CVsXi{0|l)z4+~2lOlE+fF(V9!<8iD8O+@(Se)ZhRSe&#TvbZ48ONtenu)N^Y?y4Y;8(bAZK>ozvY%qZ zE!(T};x->MgA1lDzvh?_F1aNnsoO>WxKeZ?*oltZf#vsR!_l_~A$$irAJO{b^flbN N>%FaQ-bZ@XWk1p6Q5^sP diff --git a/venv/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc b/venv/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc deleted file mode 100644 index cb1c05bef3d65bf4ea190f4d2bbcfbfcb2fffc24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 619 zcmZuu&ubGw6n?Y6cQI{gD1@FuMKof%Sg&nC>bVq8C6{I09g~f_Gt2CxlHj2TQl%Gf z?VnId{}V5UR??1_iU;u~^wyIzX|}mIF!R3ozVE$xGxN1l@j#A)mn)rX8GorwIm{`z zK9}GKVu(=+EfuvCWm-$i^p=i50}NfKOq#{v6t+xkb}KW!M6n(lv3Y6@^;-sk^v##* zEZ)^|u+ueWe2Lhc?7)>%E1g4ht0Cy4siyx=YuJC3al4@jC!&O7!V6)(?O=unS~D7W z&E_5L6`V30aMr^OB&;yv2_+3rI3a82AuF)3Bg}a6I$`QQOf@Rzp0jo@lVx|5g9&Tm zWa3^J$AL_oXu_MYYF`LrvYI(d2>$}=OW(j{2<7}gapBA-oJ6yGaC0&yvY{j0qV7iUAg?# z5kfy;{x{sea_b*!W4AtX>u2uDzI6fC7^)+vetvQMNEvb1;DtbZx#d=*G>m^$2`TOlH^!m21&Eytb9nFg*j zx?opwF3UNB=S;UM?5g0S@h5nSDKFAm$PCYfR)r=*YmS4uLj>rSl(2V~SP*uL+z;MR zvP|-HDld6m#fh^MZ%)q^CuaZTX~m*_-4Vs&J<`Pa&nCy_-HJU{at*iQR_z~_hv)?Mm7?LqBJ;7~1K^nu3qXsX|Ic3{ZQF9Y|+tP;Q zYv}5PWc9LWgCcO0FBZKI8G%xYwrr=ir0{KM4Ml{xL_|AJO5L5aTK@f@t38tlJsef) z4ZUqE`a?gQK|2CEL+;5_UNpe-S$vx?`M8$|BY5fT?0JTJVLhNct>ik@1w+g;Jg+Bn z!Mqp*7?{P1MK59q42P#N`-;P%&yNN}9DLMS3}>lJ^ER^?rq2L0egV`fdD=@7na!^3 z(=-_x{@3BVvHI}%*6``t@aZom>%(u?_rG)V!lR*spZ;wtd$N{2S~LVwA8o{|E{q7{rG_#R`$xliuxEmDJ2pXkn7F91I+V#-9fT zG}cpVm+N|VOFvrEkKR2{*I(Y!&(!oYUmn@i&(!tlO>H_LHbXi+LCk^JiXW^jJnTS3 zfes&$e}c1v)30xH8tdVG2?l@|l4!G8;A~$?7|&g@2TO57zLXN7w`~Oy%a;(%oh)U@ z?7YU3U_9-LEsAaaF{BSmqZ&k&L4~=$3s#?MzIqj2^522#;9G_aJ-2b{Zn?hy^#9GU zc8xd)Ywu*3CHYK2v_WPF8v=8WGK|UYede$a)iksw@(ClKS>LxY`Nb;_^odPvq7`K7 zsqa;xh%V!1J8sY!f#x&dIyjv>-j075 z$rb4{8uH+`N4Rq+enDwLiFg{&_=}(*yb03N|MB6E zj%=KN&^^*1G?x85^)NYj=hQz=eRTR~8J>T}&Yw^{<5+k<>3vcDTs;-tJ5z4Lh|WwY z1?PkAw(NzAK%{*M`Tc%J72b1|J+f*AYgO=%GmzL*exb>$p5$^i49j~_%VAZcV&jF2 zml%{|1*>(QdUTFs$qUfJy6Xd728ScaK(a*7?Q^%z`IYp1J#qLZ{a)|8y>x5o_R6i5 z^|R|Mb^Z9JcKny6^?xNk!*cekwEruAw7d{Nv`7scGjt6l`|8^;v+K`&Y? zTCNFal=(7mWj`jqm$+s#4vA58s&lTFbSeuj6YxPX8fFCFzRmnQ%&#l0LgE9H!+%FW z*&$SZmYx95Q^oRv&AkX1sORh`_Ql`zzsP3cjTgPt`b6=x=`i_r-h0oq*IFNNzh`G* zGDd{QKsRJc>5r01m1cs_uJ1^9Q=#;QhDMa=mYl4~$+e|#sbj8k=nu9;5>+D3##Vq5A!O&wTIf1_r9Q2x+4Ez_C?rg4(0Zv@lcpiPaa zJ>Mz4|5gq>?n$n_xs^IpOC8!UH&gjq&#~2W58?iqSs&RPI0Dzt>iI@L*_V5mKKNrS zs%9VdWg0Tr$Nl>oDp=S;GTn%xr;)x?1IIMtB;MWZLN6_=Be-=ijd None: - _CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr] - - -if sys.version_info >= (3, 11): - - from importlib.resources import as_file, files - - _CACERT_CTX = None - _CACERT_PATH = None - - def where() -> str: - # This is slightly terrible, but we want to delay extracting the file - # in cases where we're inside of a zipimport situation until someone - # actually calls where(), but we don't want to re-extract the file - # on every call of where(), so we'll do it once then store it in a - # global variable. - global _CACERT_CTX - global _CACERT_PATH - if _CACERT_PATH is None: - # This is slightly janky, the importlib.resources API wants you to - # manage the cleanup of this file, so it doesn't actually return a - # path, it returns a context manager that will give you the path - # when you enter it and will do any cleanup when you leave it. In - # the common case of not needing a temporary file, it will just - # return the file system location and the __exit__() is a no-op. - # - # We also have to hold onto the actual context manager, because - # it will do the cleanup whenever it gets garbage collected, so - # we will also store that at the global level as well. - _CACERT_CTX = as_file(files("certifi").joinpath("cacert.pem")) - _CACERT_PATH = str(_CACERT_CTX.__enter__()) - atexit.register(exit_cacert_ctx) - - return _CACERT_PATH - - def contents() -> str: - return files("certifi").joinpath("cacert.pem").read_text(encoding="ascii") - -elif sys.version_info >= (3, 7): - - from importlib.resources import path as get_path, read_text - - _CACERT_CTX = None - _CACERT_PATH = None - - def where() -> str: - # This is slightly terrible, but we want to delay extracting the - # file in cases where we're inside of a zipimport situation until - # someone actually calls where(), but we don't want to re-extract - # the file on every call of where(), so we'll do it once then store - # it in a global variable. - global _CACERT_CTX - global _CACERT_PATH - if _CACERT_PATH is None: - # This is slightly janky, the importlib.resources API wants you - # to manage the cleanup of this file, so it doesn't actually - # return a path, it returns a context manager that will give - # you the path when you enter it and will do any cleanup when - # you leave it. In the common case of not needing a temporary - # file, it will just return the file system location and the - # __exit__() is a no-op. - # - # We also have to hold onto the actual context manager, because - # it will do the cleanup whenever it gets garbage collected, so - # we will also store that at the global level as well. - _CACERT_CTX = get_path("certifi", "cacert.pem") - _CACERT_PATH = str(_CACERT_CTX.__enter__()) - atexit.register(exit_cacert_ctx) - - return _CACERT_PATH - - def contents() -> str: - return read_text("certifi", "cacert.pem", encoding="ascii") - -else: - import os - import types - from typing import Union - - Package = Union[types.ModuleType, str] - Resource = Union[str, "os.PathLike"] - - # This fallback will work for Python versions prior to 3.7 that lack the - # importlib.resources module but relies on the existing `where` function - # so won't address issues with environments like PyOxidizer that don't set - # __file__ on modules. - def read_text( - package: Package, - resource: Resource, - encoding: str = 'utf-8', - errors: str = 'strict' - ) -> str: - with open(where(), encoding=encoding) as data: - return data.read() - - # If we don't have importlib.resources, then we will just do the old logic - # of assuming we're on the filesystem and munge the path directly. - def where() -> str: - f = os.path.dirname(__file__) - - return os.path.join(f, "cacert.pem") - - def contents() -> str: - return read_text("certifi", "cacert.pem", encoding="ascii") diff --git a/venv/lib/python3.12/site-packages/certifi/py.typed b/venv/lib/python3.12/site-packages/certifi/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/LICENSE b/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/LICENSE deleted file mode 100644 index 29225ee..0000000 --- a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/LICENSE +++ /dev/null @@ -1,26 +0,0 @@ - -Except when otherwise stated (look for LICENSE files in directories or -information at the beginning of each file) all software and -documentation is licensed as follows: - - The MIT License - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - diff --git a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/METADATA b/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/METADATA deleted file mode 100644 index 60b0779..0000000 --- a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/METADATA +++ /dev/null @@ -1,40 +0,0 @@ -Metadata-Version: 2.1 -Name: cffi -Version: 1.17.1 -Summary: Foreign Function Interface for Python calling C code. -Home-page: http://cffi.readthedocs.org -Author: Armin Rigo, Maciej Fijalkowski -Author-email: python-cffi@googlegroups.com -License: MIT -Project-URL: Documentation, http://cffi.readthedocs.org/ -Project-URL: Source Code, https://github.com/python-cffi/cffi -Project-URL: Issue Tracker, https://github.com/python-cffi/cffi/issues -Project-URL: Changelog, https://cffi.readthedocs.io/en/latest/whatsnew.html -Project-URL: Downloads, https://github.com/python-cffi/cffi/releases -Project-URL: Contact, https://groups.google.com/forum/#!forum/python-cffi -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: 3.13 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: License :: OSI Approved :: MIT License -Requires-Python: >=3.8 -License-File: LICENSE -Requires-Dist: pycparser - - -CFFI -==== - -Foreign Function Interface for Python calling C code. -Please see the `Documentation `_. - -Contact -------- - -`Mailing list `_ diff --git a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/RECORD b/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/RECORD deleted file mode 100644 index 23fa52b..0000000 --- a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/RECORD +++ /dev/null @@ -1,48 +0,0 @@ -_cffi_backend.cpython-312-x86_64-linux-gnu.so,sha256=-fK60bkCudr6tjAHt4dA3x_CHaOWgVs_Lb2J0JGO3Po,1114632 -cffi-1.17.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -cffi-1.17.1.dist-info/LICENSE,sha256=BLgPWwd7vtaICM_rreteNSPyqMmpZJXFh72W3x6sKjM,1294 -cffi-1.17.1.dist-info/METADATA,sha256=u6nuvP_qPJKu2zvIbi2zkGzVu7KjnnRIYUFyIrOY3j4,1531 -cffi-1.17.1.dist-info/RECORD,, -cffi-1.17.1.dist-info/WHEEL,sha256=h7F_RlbsFAwUaa98BSEEv6RQhdTqVo2FhuJDzTSKXxc,151 -cffi-1.17.1.dist-info/entry_points.txt,sha256=y6jTxnyeuLnL-XJcDv8uML3n6wyYiGRg8MTp_QGJ9Ho,75 -cffi-1.17.1.dist-info/top_level.txt,sha256=rE7WR3rZfNKxWI9-jn6hsHCAl7MDkB-FmuQbxWjFehQ,19 -cffi/__init__.py,sha256=H6t_ebva6EeHpUuItFLW1gbRp94eZRNJODLaWKdbx1I,513 -cffi/__pycache__/__init__.cpython-312.pyc,, -cffi/__pycache__/_imp_emulation.cpython-312.pyc,, -cffi/__pycache__/_shimmed_dist_utils.cpython-312.pyc,, -cffi/__pycache__/api.cpython-312.pyc,, -cffi/__pycache__/backend_ctypes.cpython-312.pyc,, -cffi/__pycache__/cffi_opcode.cpython-312.pyc,, -cffi/__pycache__/commontypes.cpython-312.pyc,, -cffi/__pycache__/cparser.cpython-312.pyc,, -cffi/__pycache__/error.cpython-312.pyc,, -cffi/__pycache__/ffiplatform.cpython-312.pyc,, -cffi/__pycache__/lock.cpython-312.pyc,, -cffi/__pycache__/model.cpython-312.pyc,, -cffi/__pycache__/pkgconfig.cpython-312.pyc,, -cffi/__pycache__/recompiler.cpython-312.pyc,, -cffi/__pycache__/setuptools_ext.cpython-312.pyc,, -cffi/__pycache__/vengine_cpy.cpython-312.pyc,, -cffi/__pycache__/vengine_gen.cpython-312.pyc,, -cffi/__pycache__/verifier.cpython-312.pyc,, -cffi/_cffi_errors.h,sha256=zQXt7uR_m8gUW-fI2hJg0KoSkJFwXv8RGUkEDZ177dQ,3908 -cffi/_cffi_include.h,sha256=Exhmgm9qzHWzWivjfTe0D7Xp4rPUkVxdNuwGhMTMzbw,15055 -cffi/_embedding.h,sha256=EDKw5QrLvQoe3uosXB3H1xPVTYxsn33eV3A43zsA_Fw,18787 -cffi/_imp_emulation.py,sha256=RxREG8zAbI2RPGBww90u_5fi8sWdahpdipOoPzkp7C0,2960 -cffi/_shimmed_dist_utils.py,sha256=Bjj2wm8yZbvFvWEx5AEfmqaqZyZFhYfoyLLQHkXZuao,2230 -cffi/api.py,sha256=alBv6hZQkjpmZplBphdaRn2lPO9-CORs_M7ixabvZWI,42169 -cffi/backend_ctypes.py,sha256=h5ZIzLc6BFVXnGyc9xPqZWUS7qGy7yFSDqXe68Sa8z4,42454 -cffi/cffi_opcode.py,sha256=JDV5l0R0_OadBX_uE7xPPTYtMdmpp8I9UYd6av7aiDU,5731 -cffi/commontypes.py,sha256=7N6zPtCFlvxXMWhHV08psUjdYIK2XgsN3yo5dgua_v4,2805 -cffi/cparser.py,sha256=0qI3mEzZSNVcCangoyXOoAcL-RhpQL08eG8798T024s,44789 -cffi/error.py,sha256=v6xTiS4U0kvDcy4h_BDRo5v39ZQuj-IMRYLv5ETddZs,877 -cffi/ffiplatform.py,sha256=avxFjdikYGJoEtmJO7ewVmwG_VEVl6EZ_WaNhZYCqv4,3584 -cffi/lock.py,sha256=l9TTdwMIMpi6jDkJGnQgE9cvTIR7CAntIJr8EGHt3pY,747 -cffi/model.py,sha256=W30UFQZE73jL5Mx5N81YT77us2W2iJjTm0XYfnwz1cg,21797 -cffi/parse_c_type.h,sha256=OdwQfwM9ktq6vlCB43exFQmxDBtj2MBNdK8LYl15tjw,5976 -cffi/pkgconfig.py,sha256=LP1w7vmWvmKwyqLaU1Z243FOWGNQMrgMUZrvgFuOlco,4374 -cffi/recompiler.py,sha256=sim4Tm7lamt2Jn8uzKN0wMYp6ODByk3g7of47-h9LD4,65367 -cffi/setuptools_ext.py,sha256=-ebj79lO2_AUH-kRcaja2pKY1Z_5tloGwsJgzK8P3Cc,8871 -cffi/vengine_cpy.py,sha256=8UagT6ZEOZf6Dju7_CfNulue8CnsHLEzJYhnqUhoF04,43752 -cffi/vengine_gen.py,sha256=DUlEIrDiVin1Pnhn1sfoamnS5NLqfJcOdhRoeSNeJRg,26939 -cffi/verifier.py,sha256=oX8jpaohg2Qm3aHcznidAdvrVm5N4sQYG0a3Eo5mIl4,11182 diff --git a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/WHEEL b/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/WHEEL deleted file mode 100644 index 0631b9a..0000000 --- a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: setuptools (74.1.1) -Root-Is-Purelib: false -Tag: cp312-cp312-manylinux_2_17_x86_64 -Tag: cp312-cp312-manylinux2014_x86_64 - diff --git a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/entry_points.txt b/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/entry_points.txt deleted file mode 100644 index 4b0274f..0000000 --- a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/entry_points.txt +++ /dev/null @@ -1,2 +0,0 @@ -[distutils.setup_keywords] -cffi_modules = cffi.setuptools_ext:cffi_modules diff --git a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/top_level.txt deleted file mode 100644 index f645779..0000000 --- a/venv/lib/python3.12/site-packages/cffi-1.17.1.dist-info/top_level.txt +++ /dev/null @@ -1,2 +0,0 @@ -_cffi_backend -cffi diff --git a/venv/lib/python3.12/site-packages/cffi/__init__.py b/venv/lib/python3.12/site-packages/cffi/__init__.py deleted file mode 100644 index 2e35a38..0000000 --- a/venv/lib/python3.12/site-packages/cffi/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -__all__ = ['FFI', 'VerificationError', 'VerificationMissing', 'CDefError', - 'FFIError'] - -from .api import FFI -from .error import CDefError, FFIError, VerificationError, VerificationMissing -from .error import PkgConfigError - -__version__ = "1.17.1" -__version_info__ = (1, 17, 1) - -# The verifier module file names are based on the CRC32 of a string that -# contains the following version number. It may be older than __version__ -# if nothing is clearly incompatible. -__version_verifier_modules__ = "0.8.6" diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 0f538f0ae693c1841184bebf49f3d2894f422e68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 543 zcmZutzfaph6u$HCBn5#Y+65$-kOyo65-=bZC~5~HCWc#1CO$h?Y+rOXk&-F@1v?un z{{~Admg=Ocl{#fZAQmRx86g;W!@KW&_rCY*W@e^|z#gyH``AF}zYbmv;@Td*!E=F9 z6r)Q_P>f?E!?{5Wtg)GyxkaqpCU))+CwGZk^A_+P@c`ST5j&(AyQDSp{DyBU^YHMy znm=KZC%hL`TohlW6jHU{Q%Afkd6BBd{sBu~{yosuXo_JZA4@%=Z%G>->1bzaXK5Cz z+2gZxUla*XYt7i{1fA`mdS_9}%CMItJfxHtyrMK1jGnyRmkxWf z4b}Cj$~ACzCdT;Qz^yM6_t8Ok;V^oT|@kwCvu5ok`` ziWs5|@dE_jRV7qOGE63^FqKq?)k#fQBkz+5ZBiH3$#W{9Pa47od9F?v!$vr#PME?b zc{GR3Gz!|U4`Ej_#_#W2DgjK$3SuNj_S6VLKz~nTMpK+2lkPp z60v$i z9xabuCfR+L$9;h@e=rakyEHK1zw8^6jD3;Hu4EYtUJCX3s#N{xM5MeY*)B|s`}%_Y zyQoH>_60{q{lmU~2n0fq49rcDNeL{M5+sel&GIou(oN2ZOpK!$0Xx|Z@M_FE#U&Z< zG#BNPT#A`zy?tE(dZG_zD6UzX%!9NUZQZ*qI5fB7Pk*(8M%8 zy9Y%4*=0zh2RpL%j<<+iT8Qcix^hCS1Z`ZkOSf5(O{-p`o7k&US>Gbk#KL*eqDZP* z$>Y3*Xp$yH>@*qTWSksBqC;8l%k5OCJKS~3disDetBx7a-;b_*3u!k?NHA7{z8C@Ff+(!Qz zYxeh}{{MEHVFIO86uSK_j5T1nN3k3%L@QcF&n<#R83V0LYp)Z0xA%)#SQD(U+o7cTjS z$Nd2w=Pd~rnt@O->L-IGds)aC$bu@IKhVCxn-fwii$d>Pp*va^2Eavb*w4JsVBEg{Iy=wmlU8 zaBQt@FvYKLB`)XaGtvhc$RBAf-(ZzcgKN`L_ocHwP&yK7$1+w~*qxNq1o$kBm@0?%u z{MB*1=xWX%I<*@5!v6a!`HrEyYiQj$w5i9^zB8bs9iRMk3u(*^1#4?ovqUX1#U}T1 z*S!%CR284AUDdBO_58Q+ubmB>dN{plLbislO}5Q9;8NeYk>lVJopY|++w-ROCyx3> zUC~&RrGNfT$yS?Xmz`_2?_qBa5V^LJt98S5y5Ks!+W+~;Z%5W#7apE0xO`dN3lcLt zwK%f=B{4U(Zs}g6im;kkuFE-dvw3%C-qM-Zb-vJIzOuMia-{r;XdP6Me^#jnjoR2w zqJYRi2p506-p2jz?q*@Xt{2iDp(MWySuOd~&}i%h;3d<<3QY{#AHcgX zs>ej!MTdOlE}QSd+g^-tVUa9yhu!Z}=#tJqG8!2S28ZN?C#MP73!fo=1fOyPdZjyC z&LZdeAHx#&eL@D%CP@&)CiN~sxW1uk|Mf&`-$Em>cwr#aC$H;4j)83q!k*vvy&mOpvK{^$WqG#kw%KMXA;8+cihjUC%=VsdjB% YQehphUb-fPqOFIGh-wj)Ei~s-t diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/_shimmed_dist_utils.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/_shimmed_dist_utils.cpython-312.pyc deleted file mode 100644 index 32190409a08914f338a2db6203e0cbfa3fadc218..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2078 zcmbVM&2Jk;6rcUD*Xyr1aZ-nx(xF97EfE`90fLrRNob)`Q$=cp$QH?LyyJM9ogFi~ zw&SQ5IPf7M#0~xh#Ek>@o3dBoTrO%!u#XtHj4E zq{}@Ae{hLE=Jsp`xHAKw8O%Mr)D0T2op}?VEWdo>MGO#~2JuFiXK^}8s1T)*~%BX~o z9q!Ep{e*~?7f?nb66)Fkm2j;lBsu6OYvKI)3+3bk*&3Hh>H`h-2WeO~+{iyKdCiBS~x8wKeF-^2YMN5DYr2jGuxw(8_#21-f)7G^$mH z*Q(V}gS>~yp^?mKjWnb5s$@M(Ln35?tJJIW&>TRE7_^Fr!xH8Pm*tvlX<0X6NKJ7> z!x{9cQyvskz;H%kcGN-;VMoYqk#N!v->D}+!KYmxAy{o@+Pk;5U zUb?3*-q08C>2KUOlAm7x==xWko5piJRX6dk>C-!tD3<6IQR48fNB4S~e6`mrqg?SJ zQcQfOc=+>+J2}aahvVLTBli%+z{9^I|CB9kPj_!+Hvnu-U5GFj)SWm=O>R%}Tgm2j zdwpA9-|MC1+eiK)B;zxE?hyKNPMe=Xn-lSQ18p9P&Fk9ck?Fa!+U8j)ZyCn?gtnDc cz-DV)k@AGJ-)ty5C|3s~iHBme*a diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/api.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/api.cpython-312.pyc deleted file mode 100644 index 0b0c5019848ba44ed86ce2ed6448d36d1c9acf2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50298 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 Y@bAm_lpEhK6Dh4I+0%&N)*{mX7Yy?oQUCw| diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/backend_ctypes.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/backend_ctypes.cpython-312.pyc deleted file mode 100644 index b7622c2f44a970f8a22de54c6b5bde8a60dd2b6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63520 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 MXdv9!Bt%6VpQ+F5#L&s~$= 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 ra&(aF*L#3Cgr7_5=r`HVO`nd;iW|a> diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/cffi_opcode.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/cffi_opcode.cpython-312.pyc deleted file mode 100644 index a0d4714d3002a75bd6b60dec0486240fb6876c12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6773 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 diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/commontypes.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/commontypes.cpython-312.pyc deleted file mode 100644 index e63e6f0a42713e88f427dfaef0df1143cba28071..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3069 zcmbVOT}&I<6~6Ol8{@&o1W3TZ03jPwffJH!b`ugccunIj5G%k|(5@`wxyED0Gw#e7 zVgxI8Rdrc4s(4swqjoDrt9{riFHxWNvD!XWeTg9}d#6N=)a^swywH_aytLjA`&SX%_ET(8JWt` z^E5?xR%Wv7JWC-7&2tSzi<2E$=e(0bG{R2IJ%ZV!S$#U=ul9~o(IGk?(NziNM8_zw zq6@eNi*p0lXmK9kc*0>ibLyytDxYaPDSHdOdj_F-5B6j_PmYRBws$&pzZHXh>>>8= zce3c`9*C$(^!^IXdqp2mA4ZwJSJ-G?I**Xnj=9Xh$x+CG?@>)`uSKB(RiOG2cAZ5U zL!miz|F$(WGW@aQ?i<{rsZUOFK(9~=s?Uxmr11JOk{Xbik(tr$0OvoAq=||J39~t!-5cOXvWZ3nE zGS0esomr#SD7z-sX`{g&SfdTAVoBc~*SR%Xq}JJWM#;gr$JWg>+1%kf<2&SSZW(E( z4c_j(YStQU?_F)3QCN|-_T6i=*fT|Djru*Dh(9p4_6HEf+DSdm(sR6|hcd0Uox}Ix zy1#(ztuyQFkxVd0B7H^W*RwLo$a1yzv?LSi`~$qA?(A(1k$CKS}XkW9$3 z0L3>9#^N<&=Yy;MSw+w1a;j!v(Xw+*SpD6wAjD*x(6Jz^>XMK!gtTGgu7yIRdWSWf z5REhz)ucWwsUfU{K+aUJ*Fcbz7@U=N9=7}u+E|B3E!EVyfYP_ znTtiHO$Lsn>6Ua!(T#+X#3rK~nnr5e!yDUQbJ~q6`~?m49O@2In!b3YNopi17t5u4uVh0rbEMe zUN%h5ny(Yn0%-@aP+HC6P)1FtfE;*L3WXsK!NtdLLfgihML)=KUYzQd_Xt z7A&>hD8j?v*bVfS0-<6c^qAWTy#6Is(|gi3xXlkf^LLonBNc`U+@|&s)e@yDh~j}d zkgwyx?6$Y>SzGs>3!NXSIGNVV`wZKDrGnVzD-}2D>MsSZ76Vtm1iLpsn%o@UihK($ zo%?*C)OW4eckQY7deL>g+|~bZ_QAXN9h<8~S4SBl%Wtl4y8@LU1a+Vjg!#bLh<+3H zhP#-*1Sp_MkkuOjC<`ttz_M@{@^sQZ}Ehbsb~*R0?aWO?gF^78L*sIHj6lI#-hEgcdh~%!~g((_RDrEwbu+ z*|adY+LnYOH-zJI%?opajb_u!1Ex22OyG-!k4dl0Tw-vLjj#8St%0%1gJs zb``{L!e9S2kPY;0M^C9^u-GwJ_H^yhG~fPj2Wo05@j{Uop7dVa;YW6P|A}sQk?;OA zU+Nht_KZA!bEoIV4u7-4(fp68JqO~?>^HkQJ1Tw@7%m4cKW`o=!_)Fw*?*2az+23B z!B&sEf?7GZ_BwHu16MDN1X}?83c87^k#d-Pw^$ITkYJ54SmD5ZplyC z{)!8o9^A^8+JnXR;1}l}5AL+z*zjz=Q$(lA?cFxl`^JXn3Ex#j-Q~V(gzYY(p67P@ zOZ?>`e|Znl)Y*+l+3ET4z4zbS62EqKmb?2mJzKNeu1?qj>MXdxxt}*QZaDVXcB*S{ zw2g9CE+E$V;pqFLTUWQ4jxy^jvF$~8PM_a7J@_^IqY8uA&L1jo)5rz*N>L5pur3l< Z!-3umF@D@M7DQhKxv`7PR~IOt{{{P@_aguR diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/cparser.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/cparser.cpython-312.pyc deleted file mode 100644 index 7ee550ac7f8c473780cad8b67e5d5a6a0995bbed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46817 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�taOm~N*U5n-D@sj`B~df$!8O+0C^p3E4eG1vHobl*IeY5oa~t429-c3E(rS%!%|bx zv&U1u1u&U?g&x|w$_{Vzxe6UuN|=Lk<6x*DEBC9Tnd+-!f=g);QLEuf=@EXirdKIb zCW}C{@o|`lRnYYRBTAiibn~AnOC1Ge^oj}M7&c4mDt*LjO2^I&l2BbHo1zkgbI6e5 z&ZW2u3WvMG_5SeK6z>n^r&mh)`LAe!+(dRPkm?2r%Su#l7pu3&t9N3HHtpvi4w>0M z-!j)ZH$`#-oSYo1>Rh&UksLu<50JTZ#2qjmfpm(U-V!T5v}8LZOJw-yJ~-ujVa|Hj z-iu8dMZ#_eG9rcqCYC^X$cUHwb$opiT0^2AzscGYf1jvb}(M2LK)dU$?kVpyWD8u<0UBVc&j;O z@Q%i`08;iGl9;^e`$CRJ5(~rmKe?F#4GckhV=9+&P9MA;a%B>-m~_%d&5seb%tckk zjFM5wQVnpG!bII9)|NIoOYR|1(z1LTFH?mtNQXlmlnxP~Z7^j|$Mug*4h7l9xSB+j zMIHTA`VSDS7InlBv)T(vZr%52HH%1s)eK41!TE#N2ImK*g*F2*l`~QWI&sPDWeTC> z$O=BEMsAM89qlno`#rNWR?-r4Z&)&Kz)DZp>P1_9%+{Lp?*7R6vyz{dh~7g)LN&15 zEuy1EIx0v~CS|!>WA3&ka~qQgW^zNq`Lphyc8lI4+1!%rl=r>2y>Z8;m}L`ahgfkh zjQ(zvUN5~-b-jw{1}~8f%|tacKVkLX!}orn)sOURFC~ZoTO-N-;eQYsWTk4%JBh+7 zR#FdLGxI@6kS&7n9e_G)18XLrU7iH;`C`%}Tr;yI7m)(ZtXv0?LL3p<<5fr_VQp~_ zXK+Vo7M=4!xlvbf z->KTm^>N9{+J~AVo%cceE?wb+uW))@;{&@@*Z!c=rfYjplc#HW;O@{p!#z07ak{Pt zdcAJzL%T)S@t{0U=X&Ti=-TcVst$3-xa5ZRhnh2-uKwY3nrhua?m<7wazDgL*eG{Q zqtlf>%pc%%2e=2%skOSI2bLnlx3h*7=$aokXm!$}V~zK2lGK)HyG@y)RWm-x>}&!8 zZNkj-I;De36pUWjq$5;Mp#4BPbkBTnoX#VZ6qbI6qJJL&4z|A(NLkY77~*)8(~~KE z@GOp_<5LD`8?hVf5Ds}Eg(@F@&I#{OW+I)0?@$Q_Qt%lW!`amPj~(B8u8aA5G*bA7#gpYN00A)ldFrzto~!Db4G ziy%x;FiC-%f{he(Q?QSM0Sca>;3Wz!Qt(>{QhGQZ1YeYOBzn`xv+7MF}!mxYhxvM8;PsH3?lkQS-)EnJ* z>&VR`aGDG&mHf`jdH3WbfVm}|_tqxTsgcM8qQg}+w~v%kVpV%T>ipTxpYDu1pNXjo zl7;1SHP@Qwn`0Hb;)S~}+mg;oIbm1axrvfED&{&F4OI!0u`{N!Lm^|Plk{WeM&f4A zWh1c0%g{e6n=8ClI$s(q-?Vt@!|@Ns;|2RK=O^>sGpDYO&W^@PI^+3Wm(4j5TjKd! z5s@ivB5tlnX>xt|qN-!WhjKo{q1Jmvp1D)kM(0P9+BR~&+#XXo?&YR!qNH9*iI08m z+KKrS#1(bzLPtK(YPpgJmL{(B!Evq~A$#%Op5dM`bImg^{z^r^zrNpVQW+gUcsbYqu65E_yZ#BwUy4G9*#6mminKop)L=qH i^aDkzA9@EGR6i>+4b*CWR>M))U>NAo{H&cr`2PWnYv{B9 diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/error.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/error.cpython-312.pyc deleted file mode 100644 index 2eeb25fa03b24ad7efa0ae68af30709c0c379cd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1884 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 diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/lock.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/lock.cpython-312.pyc deleted file mode 100644 index da9836255c7534b2e44a44ca1e1cae65a7049049..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 514 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 diff --git a/venv/lib/python3.12/site-packages/cffi/__pycache__/verifier.cpython-312.pyc b/venv/lib/python3.12/site-packages/cffi/__pycache__/verifier.cpython-312.pyc deleted file mode 100644 index 43c6b7bd7f040b6532672087e618cd42ca86dfa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16210 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 dvG diff --git a/venv/lib/python3.12/site-packages/cffi/_cffi_errors.h b/venv/lib/python3.12/site-packages/cffi/_cffi_errors.h deleted file mode 100644 index 158e059..0000000 --- a/venv/lib/python3.12/site-packages/cffi/_cffi_errors.h +++ /dev/null @@ -1,149 +0,0 @@ -#ifndef CFFI_MESSAGEBOX -# ifdef _MSC_VER -# define CFFI_MESSAGEBOX 1 -# else -# define CFFI_MESSAGEBOX 0 -# endif -#endif - - -#if CFFI_MESSAGEBOX -/* Windows only: logic to take the Python-CFFI embedding logic - initialization errors and display them in a background thread - with MessageBox. The idea is that if the whole program closes - as a result of this problem, then likely it is already a console - program and you can read the stderr output in the console too. - If it is not a console program, then it will likely show its own - dialog to complain, or generally not abruptly close, and for this - case the background thread should stay alive. -*/ -static void *volatile _cffi_bootstrap_text; - -static PyObject *_cffi_start_error_capture(void) -{ - PyObject *result = NULL; - PyObject *x, *m, *bi; - - if (InterlockedCompareExchangePointer(&_cffi_bootstrap_text, - (void *)1, NULL) != NULL) - return (PyObject *)1; - - m = PyImport_AddModule("_cffi_error_capture"); - if (m == NULL) - goto error; - - result = PyModule_GetDict(m); - if (result == NULL) - goto error; - -#if PY_MAJOR_VERSION >= 3 - bi = PyImport_ImportModule("builtins"); -#else - bi = PyImport_ImportModule("__builtin__"); -#endif - if (bi == NULL) - goto error; - PyDict_SetItemString(result, "__builtins__", bi); - Py_DECREF(bi); - - x = PyRun_String( - "import sys\n" - "class FileLike:\n" - " def write(self, x):\n" - " try:\n" - " of.write(x)\n" - " except: pass\n" - " self.buf += x\n" - " def flush(self):\n" - " pass\n" - "fl = FileLike()\n" - "fl.buf = ''\n" - "of = sys.stderr\n" - "sys.stderr = fl\n" - "def done():\n" - " sys.stderr = of\n" - " return fl.buf\n", /* make sure the returned value stays alive */ - Py_file_input, - result, result); - Py_XDECREF(x); - - error: - if (PyErr_Occurred()) - { - PyErr_WriteUnraisable(Py_None); - PyErr_Clear(); - } - return result; -} - -#pragma comment(lib, "user32.lib") - -static DWORD WINAPI _cffi_bootstrap_dialog(LPVOID ignored) -{ - Sleep(666); /* may be interrupted if the whole process is closing */ -#if PY_MAJOR_VERSION >= 3 - MessageBoxW(NULL, (wchar_t *)_cffi_bootstrap_text, - L"Python-CFFI error", - MB_OK | MB_ICONERROR); -#else - MessageBoxA(NULL, (char *)_cffi_bootstrap_text, - "Python-CFFI error", - MB_OK | MB_ICONERROR); -#endif - _cffi_bootstrap_text = NULL; - return 0; -} - -static void _cffi_stop_error_capture(PyObject *ecap) -{ - PyObject *s; - void *text; - - if (ecap == (PyObject *)1) - return; - - if (ecap == NULL) - goto error; - - s = PyRun_String("done()", Py_eval_input, ecap, ecap); - if (s == NULL) - goto error; - - /* Show a dialog box, but in a background thread, and - never show multiple dialog boxes at once. */ -#if PY_MAJOR_VERSION >= 3 - text = PyUnicode_AsWideCharString(s, NULL); -#else - text = PyString_AsString(s); -#endif - - _cffi_bootstrap_text = text; - - if (text != NULL) - { - HANDLE h; - h = CreateThread(NULL, 0, _cffi_bootstrap_dialog, - NULL, 0, NULL); - if (h != NULL) - CloseHandle(h); - } - /* decref the string, but it should stay alive as 'fl.buf' - in the small module above. It will really be freed only if - we later get another similar error. So it's a leak of at - most one copy of the small module. That's fine for this - situation which is usually a "fatal error" anyway. */ - Py_DECREF(s); - PyErr_Clear(); - return; - - error: - _cffi_bootstrap_text = NULL; - PyErr_Clear(); -} - -#else - -static PyObject *_cffi_start_error_capture(void) { return NULL; } -static void _cffi_stop_error_capture(PyObject *ecap) { } - -#endif diff --git a/venv/lib/python3.12/site-packages/cffi/_cffi_include.h b/venv/lib/python3.12/site-packages/cffi/_cffi_include.h deleted file mode 100644 index 908a1d7..0000000 --- a/venv/lib/python3.12/site-packages/cffi/_cffi_include.h +++ /dev/null @@ -1,389 +0,0 @@ -#define _CFFI_ - -/* We try to define Py_LIMITED_API before including Python.h. - - Mess: we can only define it if Py_DEBUG, Py_TRACE_REFS and - Py_REF_DEBUG are not defined. This is a best-effort approximation: - we can learn about Py_DEBUG from pyconfig.h, but it is unclear if - the same works for the other two macros. Py_DEBUG implies them, - but not the other way around. - - The implementation is messy (issue #350): on Windows, with _MSC_VER, - we have to define Py_LIMITED_API even before including pyconfig.h. - In that case, we guess what pyconfig.h will do to the macros above, - and check our guess after the #include. - - Note that on Windows, with CPython 3.x, you need >= 3.5 and virtualenv - version >= 16.0.0. With older versions of either, you don't get a - copy of PYTHON3.DLL in the virtualenv. We can't check the version of - CPython *before* we even include pyconfig.h. ffi.set_source() puts - a ``#define _CFFI_NO_LIMITED_API'' at the start of this file if it is - running on Windows < 3.5, as an attempt at fixing it, but that's - arguably wrong because it may not be the target version of Python. - Still better than nothing I guess. As another workaround, you can - remove the definition of Py_LIMITED_API here. - - See also 'py_limited_api' in cffi/setuptools_ext.py. -*/ -#if !defined(_CFFI_USE_EMBEDDING) && !defined(Py_LIMITED_API) -# ifdef _MSC_VER -# if !defined(_DEBUG) && !defined(Py_DEBUG) && !defined(Py_TRACE_REFS) && !defined(Py_REF_DEBUG) && !defined(_CFFI_NO_LIMITED_API) -# define Py_LIMITED_API -# endif -# include - /* sanity-check: Py_LIMITED_API will cause crashes if any of these - are also defined. Normally, the Python file PC/pyconfig.h does not - cause any of these to be defined, with the exception that _DEBUG - causes Py_DEBUG. Double-check that. */ -# ifdef Py_LIMITED_API -# if defined(Py_DEBUG) -# error "pyconfig.h unexpectedly defines Py_DEBUG, but Py_LIMITED_API is set" -# endif -# if defined(Py_TRACE_REFS) -# error "pyconfig.h unexpectedly defines Py_TRACE_REFS, but Py_LIMITED_API is set" -# endif -# if defined(Py_REF_DEBUG) -# error "pyconfig.h unexpectedly defines Py_REF_DEBUG, but Py_LIMITED_API is set" -# endif -# endif -# else -# include -# if !defined(Py_DEBUG) && !defined(Py_TRACE_REFS) && !defined(Py_REF_DEBUG) && !defined(_CFFI_NO_LIMITED_API) -# define Py_LIMITED_API -# endif -# endif -#endif - -#include -#ifdef __cplusplus -extern "C" { -#endif -#include -#include "parse_c_type.h" - -/* this block of #ifs should be kept exactly identical between - c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py - and cffi/_cffi_include.h */ -#if defined(_MSC_VER) -# include /* for alloca() */ -# if _MSC_VER < 1600 /* MSVC < 2010 */ - typedef __int8 int8_t; - typedef __int16 int16_t; - typedef __int32 int32_t; - typedef __int64 int64_t; - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; - typedef unsigned __int64 uint64_t; - typedef __int8 int_least8_t; - typedef __int16 int_least16_t; - typedef __int32 int_least32_t; - typedef __int64 int_least64_t; - typedef unsigned __int8 uint_least8_t; - typedef unsigned __int16 uint_least16_t; - typedef unsigned __int32 uint_least32_t; - typedef unsigned __int64 uint_least64_t; - typedef __int8 int_fast8_t; - typedef __int16 int_fast16_t; - typedef __int32 int_fast32_t; - typedef __int64 int_fast64_t; - typedef unsigned __int8 uint_fast8_t; - typedef unsigned __int16 uint_fast16_t; - typedef unsigned __int32 uint_fast32_t; - typedef unsigned __int64 uint_fast64_t; - typedef __int64 intmax_t; - typedef unsigned __int64 uintmax_t; -# else -# include -# endif -# if _MSC_VER < 1800 /* MSVC < 2013 */ -# ifndef __cplusplus - typedef unsigned char _Bool; -# endif -# endif -# define _cffi_float_complex_t _Fcomplex /* include for it */ -# define _cffi_double_complex_t _Dcomplex /* include for it */ -#else -# include -# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) -# include -# endif -# define _cffi_float_complex_t float _Complex -# define _cffi_double_complex_t double _Complex -#endif - -#ifdef __GNUC__ -# define _CFFI_UNUSED_FN __attribute__((unused)) -#else -# define _CFFI_UNUSED_FN /* nothing */ -#endif - -#ifdef __cplusplus -# ifndef _Bool - typedef bool _Bool; /* semi-hackish: C++ has no _Bool; bool is builtin */ -# endif -#endif - -/********** CPython-specific section **********/ -#ifndef PYPY_VERSION - - -#if PY_MAJOR_VERSION >= 3 -# define PyInt_FromLong PyLong_FromLong -#endif - -#define _cffi_from_c_double PyFloat_FromDouble -#define _cffi_from_c_float PyFloat_FromDouble -#define _cffi_from_c_long PyInt_FromLong -#define _cffi_from_c_ulong PyLong_FromUnsignedLong -#define _cffi_from_c_longlong PyLong_FromLongLong -#define _cffi_from_c_ulonglong PyLong_FromUnsignedLongLong -#define _cffi_from_c__Bool PyBool_FromLong - -#define _cffi_to_c_double PyFloat_AsDouble -#define _cffi_to_c_float PyFloat_AsDouble - -#define _cffi_from_c_int(x, type) \ - (((type)-1) > 0 ? /* unsigned */ \ - (sizeof(type) < sizeof(long) ? \ - PyInt_FromLong((long)x) : \ - sizeof(type) == sizeof(long) ? \ - PyLong_FromUnsignedLong((unsigned long)x) : \ - PyLong_FromUnsignedLongLong((unsigned long long)x)) : \ - (sizeof(type) <= sizeof(long) ? \ - PyInt_FromLong((long)x) : \ - PyLong_FromLongLong((long long)x))) - -#define _cffi_to_c_int(o, type) \ - ((type)( \ - sizeof(type) == 1 ? (((type)-1) > 0 ? (type)_cffi_to_c_u8(o) \ - : (type)_cffi_to_c_i8(o)) : \ - sizeof(type) == 2 ? (((type)-1) > 0 ? (type)_cffi_to_c_u16(o) \ - : (type)_cffi_to_c_i16(o)) : \ - sizeof(type) == 4 ? (((type)-1) > 0 ? (type)_cffi_to_c_u32(o) \ - : (type)_cffi_to_c_i32(o)) : \ - sizeof(type) == 8 ? (((type)-1) > 0 ? (type)_cffi_to_c_u64(o) \ - : (type)_cffi_to_c_i64(o)) : \ - (Py_FatalError("unsupported size for type " #type), (type)0))) - -#define _cffi_to_c_i8 \ - ((int(*)(PyObject *))_cffi_exports[1]) -#define _cffi_to_c_u8 \ - ((int(*)(PyObject *))_cffi_exports[2]) -#define _cffi_to_c_i16 \ - ((int(*)(PyObject *))_cffi_exports[3]) -#define _cffi_to_c_u16 \ - ((int(*)(PyObject *))_cffi_exports[4]) -#define _cffi_to_c_i32 \ - ((int(*)(PyObject *))_cffi_exports[5]) -#define _cffi_to_c_u32 \ - ((unsigned int(*)(PyObject *))_cffi_exports[6]) -#define _cffi_to_c_i64 \ - ((long long(*)(PyObject *))_cffi_exports[7]) -#define _cffi_to_c_u64 \ - ((unsigned long long(*)(PyObject *))_cffi_exports[8]) -#define _cffi_to_c_char \ - ((int(*)(PyObject *))_cffi_exports[9]) -#define _cffi_from_c_pointer \ - ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[10]) -#define _cffi_to_c_pointer \ - ((char *(*)(PyObject *, struct _cffi_ctypedescr *))_cffi_exports[11]) -#define _cffi_get_struct_layout \ - not used any more -#define _cffi_restore_errno \ - ((void(*)(void))_cffi_exports[13]) -#define _cffi_save_errno \ - ((void(*)(void))_cffi_exports[14]) -#define _cffi_from_c_char \ - ((PyObject *(*)(char))_cffi_exports[15]) -#define _cffi_from_c_deref \ - ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[16]) -#define _cffi_to_c \ - ((int(*)(char *, struct _cffi_ctypedescr *, PyObject *))_cffi_exports[17]) -#define _cffi_from_c_struct \ - ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[18]) -#define _cffi_to_c_wchar_t \ - ((_cffi_wchar_t(*)(PyObject *))_cffi_exports[19]) -#define _cffi_from_c_wchar_t \ - ((PyObject *(*)(_cffi_wchar_t))_cffi_exports[20]) -#define _cffi_to_c_long_double \ - ((long double(*)(PyObject *))_cffi_exports[21]) -#define _cffi_to_c__Bool \ - ((_Bool(*)(PyObject *))_cffi_exports[22]) -#define _cffi_prepare_pointer_call_argument \ - ((Py_ssize_t(*)(struct _cffi_ctypedescr *, \ - PyObject *, char **))_cffi_exports[23]) -#define _cffi_convert_array_from_object \ - ((int(*)(char *, struct _cffi_ctypedescr *, PyObject *))_cffi_exports[24]) -#define _CFFI_CPIDX 25 -#define _cffi_call_python \ - ((void(*)(struct _cffi_externpy_s *, char *))_cffi_exports[_CFFI_CPIDX]) -#define _cffi_to_c_wchar3216_t \ - ((int(*)(PyObject *))_cffi_exports[26]) -#define _cffi_from_c_wchar3216_t \ - ((PyObject *(*)(int))_cffi_exports[27]) -#define _CFFI_NUM_EXPORTS 28 - -struct _cffi_ctypedescr; - -static void *_cffi_exports[_CFFI_NUM_EXPORTS]; - -#define _cffi_type(index) ( \ - assert((((uintptr_t)_cffi_types[index]) & 1) == 0), \ - (struct _cffi_ctypedescr *)_cffi_types[index]) - -static PyObject *_cffi_init(const char *module_name, Py_ssize_t version, - const struct _cffi_type_context_s *ctx) -{ - PyObject *module, *o_arg, *new_module; - void *raw[] = { - (void *)module_name, - (void *)version, - (void *)_cffi_exports, - (void *)ctx, - }; - - module = PyImport_ImportModule("_cffi_backend"); - if (module == NULL) - goto failure; - - o_arg = PyLong_FromVoidPtr((void *)raw); - if (o_arg == NULL) - goto failure; - - new_module = PyObject_CallMethod( - module, (char *)"_init_cffi_1_0_external_module", (char *)"O", o_arg); - - Py_DECREF(o_arg); - Py_DECREF(module); - return new_module; - - failure: - Py_XDECREF(module); - return NULL; -} - - -#ifdef HAVE_WCHAR_H -typedef wchar_t _cffi_wchar_t; -#else -typedef uint16_t _cffi_wchar_t; /* same random pick as _cffi_backend.c */ -#endif - -_CFFI_UNUSED_FN static uint16_t _cffi_to_c_char16_t(PyObject *o) -{ - if (sizeof(_cffi_wchar_t) == 2) - return (uint16_t)_cffi_to_c_wchar_t(o); - else - return (uint16_t)_cffi_to_c_wchar3216_t(o); -} - -_CFFI_UNUSED_FN static PyObject *_cffi_from_c_char16_t(uint16_t x) -{ - if (sizeof(_cffi_wchar_t) == 2) - return _cffi_from_c_wchar_t((_cffi_wchar_t)x); - else - return _cffi_from_c_wchar3216_t((int)x); -} - -_CFFI_UNUSED_FN static int _cffi_to_c_char32_t(PyObject *o) -{ - if (sizeof(_cffi_wchar_t) == 4) - return (int)_cffi_to_c_wchar_t(o); - else - return (int)_cffi_to_c_wchar3216_t(o); -} - -_CFFI_UNUSED_FN static PyObject *_cffi_from_c_char32_t(unsigned int x) -{ - if (sizeof(_cffi_wchar_t) == 4) - return _cffi_from_c_wchar_t((_cffi_wchar_t)x); - else - return _cffi_from_c_wchar3216_t((int)x); -} - -union _cffi_union_alignment_u { - unsigned char m_char; - unsigned short m_short; - unsigned int m_int; - unsigned long m_long; - unsigned long long m_longlong; - float m_float; - double m_double; - long double m_longdouble; -}; - -struct _cffi_freeme_s { - struct _cffi_freeme_s *next; - union _cffi_union_alignment_u alignment; -}; - -_CFFI_UNUSED_FN static int -_cffi_convert_array_argument(struct _cffi_ctypedescr *ctptr, PyObject *arg, - char **output_data, Py_ssize_t datasize, - struct _cffi_freeme_s **freeme) -{ - char *p; - if (datasize < 0) - return -1; - - p = *output_data; - if (p == NULL) { - struct _cffi_freeme_s *fp = (struct _cffi_freeme_s *)PyObject_Malloc( - offsetof(struct _cffi_freeme_s, alignment) + (size_t)datasize); - if (fp == NULL) - return -1; - fp->next = *freeme; - *freeme = fp; - p = *output_data = (char *)&fp->alignment; - } - memset((void *)p, 0, (size_t)datasize); - return _cffi_convert_array_from_object(p, ctptr, arg); -} - -_CFFI_UNUSED_FN static void -_cffi_free_array_arguments(struct _cffi_freeme_s *freeme) -{ - do { - void *p = (void *)freeme; - freeme = freeme->next; - PyObject_Free(p); - } while (freeme != NULL); -} - -/********** end CPython-specific section **********/ -#else -_CFFI_UNUSED_FN -static void (*_cffi_call_python_org)(struct _cffi_externpy_s *, char *); -# define _cffi_call_python _cffi_call_python_org -#endif - - -#define _cffi_array_len(array) (sizeof(array) / sizeof((array)[0])) - -#define _cffi_prim_int(size, sign) \ - ((size) == 1 ? ((sign) ? _CFFI_PRIM_INT8 : _CFFI_PRIM_UINT8) : \ - (size) == 2 ? ((sign) ? _CFFI_PRIM_INT16 : _CFFI_PRIM_UINT16) : \ - (size) == 4 ? ((sign) ? _CFFI_PRIM_INT32 : _CFFI_PRIM_UINT32) : \ - (size) == 8 ? ((sign) ? _CFFI_PRIM_INT64 : _CFFI_PRIM_UINT64) : \ - _CFFI__UNKNOWN_PRIM) - -#define _cffi_prim_float(size) \ - ((size) == sizeof(float) ? _CFFI_PRIM_FLOAT : \ - (size) == sizeof(double) ? _CFFI_PRIM_DOUBLE : \ - (size) == sizeof(long double) ? _CFFI__UNKNOWN_LONG_DOUBLE : \ - _CFFI__UNKNOWN_FLOAT_PRIM) - -#define _cffi_check_int(got, got_nonpos, expected) \ - ((got_nonpos) == (expected <= 0) && \ - (got) == (unsigned long long)expected) - -#ifdef MS_WIN32 -# define _cffi_stdcall __stdcall -#else -# define _cffi_stdcall /* nothing */ -#endif - -#ifdef __cplusplus -} -#endif diff --git a/venv/lib/python3.12/site-packages/cffi/_embedding.h b/venv/lib/python3.12/site-packages/cffi/_embedding.h deleted file mode 100644 index 94d8b30..0000000 --- a/venv/lib/python3.12/site-packages/cffi/_embedding.h +++ /dev/null @@ -1,550 +0,0 @@ - -/***** Support code for embedding *****/ - -#ifdef __cplusplus -extern "C" { -#endif - - -#if defined(_WIN32) -# define CFFI_DLLEXPORT __declspec(dllexport) -#elif defined(__GNUC__) -# define CFFI_DLLEXPORT __attribute__((visibility("default"))) -#else -# define CFFI_DLLEXPORT /* nothing */ -#endif - - -/* There are two global variables of type _cffi_call_python_fnptr: - - * _cffi_call_python, which we declare just below, is the one called - by ``extern "Python"`` implementations. - - * _cffi_call_python_org, which on CPython is actually part of the - _cffi_exports[] array, is the function pointer copied from - _cffi_backend. If _cffi_start_python() fails, then this is set - to NULL; otherwise, it should never be NULL. - - After initialization is complete, both are equal. However, the - first one remains equal to &_cffi_start_and_call_python until the - very end of initialization, when we are (or should be) sure that - concurrent threads also see a completely initialized world, and - only then is it changed. -*/ -#undef _cffi_call_python -typedef void (*_cffi_call_python_fnptr)(struct _cffi_externpy_s *, char *); -static void _cffi_start_and_call_python(struct _cffi_externpy_s *, char *); -static _cffi_call_python_fnptr _cffi_call_python = &_cffi_start_and_call_python; - - -#ifndef _MSC_VER - /* --- Assuming a GCC not infinitely old --- */ -# define cffi_compare_and_swap(l,o,n) __sync_bool_compare_and_swap(l,o,n) -# define cffi_write_barrier() __sync_synchronize() -# if !defined(__amd64__) && !defined(__x86_64__) && \ - !defined(__i386__) && !defined(__i386) -# define cffi_read_barrier() __sync_synchronize() -# else -# define cffi_read_barrier() (void)0 -# endif -#else - /* --- Windows threads version --- */ -# include -# define cffi_compare_and_swap(l,o,n) \ - (InterlockedCompareExchangePointer(l,n,o) == (o)) -# define cffi_write_barrier() InterlockedCompareExchange(&_cffi_dummy,0,0) -# define cffi_read_barrier() (void)0 -static volatile LONG _cffi_dummy; -#endif - -#ifdef WITH_THREAD -# ifndef _MSC_VER -# include - static pthread_mutex_t _cffi_embed_startup_lock; -# else - static CRITICAL_SECTION _cffi_embed_startup_lock; -# endif - static char _cffi_embed_startup_lock_ready = 0; -#endif - -static void _cffi_acquire_reentrant_mutex(void) -{ - static void *volatile lock = NULL; - - while (!cffi_compare_and_swap(&lock, NULL, (void *)1)) { - /* should ideally do a spin loop instruction here, but - hard to do it portably and doesn't really matter I - think: pthread_mutex_init() should be very fast, and - this is only run at start-up anyway. */ - } - -#ifdef WITH_THREAD - if (!_cffi_embed_startup_lock_ready) { -# ifndef _MSC_VER - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(&_cffi_embed_startup_lock, &attr); -# else - InitializeCriticalSection(&_cffi_embed_startup_lock); -# endif - _cffi_embed_startup_lock_ready = 1; - } -#endif - - while (!cffi_compare_and_swap(&lock, (void *)1, NULL)) - ; - -#ifndef _MSC_VER - pthread_mutex_lock(&_cffi_embed_startup_lock); -#else - EnterCriticalSection(&_cffi_embed_startup_lock); -#endif -} - -static void _cffi_release_reentrant_mutex(void) -{ -#ifndef _MSC_VER - pthread_mutex_unlock(&_cffi_embed_startup_lock); -#else - LeaveCriticalSection(&_cffi_embed_startup_lock); -#endif -} - - -/********** CPython-specific section **********/ -#ifndef PYPY_VERSION - -#include "_cffi_errors.h" - - -#define _cffi_call_python_org _cffi_exports[_CFFI_CPIDX] - -PyMODINIT_FUNC _CFFI_PYTHON_STARTUP_FUNC(void); /* forward */ - -static void _cffi_py_initialize(void) -{ - /* XXX use initsigs=0, which "skips initialization registration of - signal handlers, which might be useful when Python is - embedded" according to the Python docs. But review and think - if it should be a user-controllable setting. - - XXX we should also give a way to write errors to a buffer - instead of to stderr. - - XXX if importing 'site' fails, CPython (any version) calls - exit(). Should we try to work around this behavior here? - */ - Py_InitializeEx(0); -} - -static int _cffi_initialize_python(void) -{ - /* This initializes Python, imports _cffi_backend, and then the - present .dll/.so is set up as a CPython C extension module. - */ - int result; - PyGILState_STATE state; - PyObject *pycode=NULL, *global_dict=NULL, *x; - PyObject *builtins; - - state = PyGILState_Ensure(); - - /* Call the initxxx() function from the present module. It will - create and initialize us as a CPython extension module, instead - of letting the startup Python code do it---it might reimport - the same .dll/.so and get maybe confused on some platforms. - It might also have troubles locating the .dll/.so again for all - I know. - */ - (void)_CFFI_PYTHON_STARTUP_FUNC(); - if (PyErr_Occurred()) - goto error; - - /* Now run the Python code provided to ffi.embedding_init_code(). - */ - pycode = Py_CompileString(_CFFI_PYTHON_STARTUP_CODE, - "", - Py_file_input); - if (pycode == NULL) - goto error; - global_dict = PyDict_New(); - if (global_dict == NULL) - goto error; - builtins = PyEval_GetBuiltins(); - if (builtins == NULL) - goto error; - if (PyDict_SetItemString(global_dict, "__builtins__", builtins) < 0) - goto error; - x = PyEval_EvalCode( -#if PY_MAJOR_VERSION < 3 - (PyCodeObject *) -#endif - pycode, global_dict, global_dict); - if (x == NULL) - goto error; - Py_DECREF(x); - - /* Done! Now if we've been called from - _cffi_start_and_call_python() in an ``extern "Python"``, we can - only hope that the Python code did correctly set up the - corresponding @ffi.def_extern() function. Otherwise, the - general logic of ``extern "Python"`` functions (inside the - _cffi_backend module) will find that the reference is still - missing and print an error. - */ - result = 0; - done: - Py_XDECREF(pycode); - Py_XDECREF(global_dict); - PyGILState_Release(state); - return result; - - error:; - { - /* Print as much information as potentially useful. - Debugging load-time failures with embedding is not fun - */ - PyObject *ecap; - PyObject *exception, *v, *tb, *f, *modules, *mod; - PyErr_Fetch(&exception, &v, &tb); - ecap = _cffi_start_error_capture(); - f = PySys_GetObject((char *)"stderr"); - if (f != NULL && f != Py_None) { - PyFile_WriteString( - "Failed to initialize the Python-CFFI embedding logic:\n\n", f); - } - - if (exception != NULL) { - PyErr_NormalizeException(&exception, &v, &tb); - PyErr_Display(exception, v, tb); - } - Py_XDECREF(exception); - Py_XDECREF(v); - Py_XDECREF(tb); - - if (f != NULL && f != Py_None) { - PyFile_WriteString("\nFrom: " _CFFI_MODULE_NAME - "\ncompiled with cffi version: 1.17.1" - "\n_cffi_backend module: ", f); - modules = PyImport_GetModuleDict(); - mod = PyDict_GetItemString(modules, "_cffi_backend"); - if (mod == NULL) { - PyFile_WriteString("not loaded", f); - } - else { - v = PyObject_GetAttrString(mod, "__file__"); - PyFile_WriteObject(v, f, 0); - Py_XDECREF(v); - } - PyFile_WriteString("\nsys.path: ", f); - PyFile_WriteObject(PySys_GetObject((char *)"path"), f, 0); - PyFile_WriteString("\n\n", f); - } - _cffi_stop_error_capture(ecap); - } - result = -1; - goto done; -} - -#if PY_VERSION_HEX < 0x03080000 -PyAPI_DATA(char *) _PyParser_TokenNames[]; /* from CPython */ -#endif - -static int _cffi_carefully_make_gil(void) -{ - /* This does the basic initialization of Python. It can be called - completely concurrently from unrelated threads. It assumes - that we don't hold the GIL before (if it exists), and we don't - hold it afterwards. - - (What it really does used to be completely different in Python 2 - and Python 3, with the Python 2 solution avoiding the spin-lock - around the Py_InitializeEx() call. However, after recent changes - to CPython 2.7 (issue #358) it no longer works. So we use the - Python 3 solution everywhere.) - - This initializes Python by calling Py_InitializeEx(). - Important: this must not be called concurrently at all. - So we use a global variable as a simple spin lock. This global - variable must be from 'libpythonX.Y.so', not from this - cffi-based extension module, because it must be shared from - different cffi-based extension modules. - - In Python < 3.8, we choose - _PyParser_TokenNames[0] as a completely arbitrary pointer value - that is never written to. The default is to point to the - string "ENDMARKER". We change it temporarily to point to the - next character in that string. (Yes, I know it's REALLY - obscure.) - - In Python >= 3.8, this string array is no longer writable, so - instead we pick PyCapsuleType.tp_version_tag. We can't change - Python < 3.8 because someone might use a mixture of cffi - embedded modules, some of which were compiled before this file - changed. - - In Python >= 3.12, this stopped working because that particular - tp_version_tag gets modified during interpreter startup. It's - arguably a bad idea before 3.12 too, but again we can't change - that because someone might use a mixture of cffi embedded - modules, and no-one reported a bug so far. In Python >= 3.12 - we go instead for PyCapsuleType.tp_as_buffer, which is supposed - to always be NULL. We write to it temporarily a pointer to - a struct full of NULLs, which is semantically the same. - */ - -#ifdef WITH_THREAD -# if PY_VERSION_HEX < 0x03080000 - char *volatile *lock = (char *volatile *)_PyParser_TokenNames; - char *old_value, *locked_value; - - while (1) { /* spin loop */ - old_value = *lock; - locked_value = old_value + 1; - if (old_value[0] == 'E') { - assert(old_value[1] == 'N'); - if (cffi_compare_and_swap(lock, old_value, locked_value)) - break; - } - else { - assert(old_value[0] == 'N'); - /* should ideally do a spin loop instruction here, but - hard to do it portably and doesn't really matter I - think: PyEval_InitThreads() should be very fast, and - this is only run at start-up anyway. */ - } - } -# else -# if PY_VERSION_HEX < 0x030C0000 - int volatile *lock = (int volatile *)&PyCapsule_Type.tp_version_tag; - int old_value, locked_value = -42; - assert(!(PyCapsule_Type.tp_flags & Py_TPFLAGS_HAVE_VERSION_TAG)); -# else - static struct ebp_s { PyBufferProcs buf; int mark; } empty_buffer_procs; - empty_buffer_procs.mark = -42; - PyBufferProcs *volatile *lock = (PyBufferProcs *volatile *) - &PyCapsule_Type.tp_as_buffer; - PyBufferProcs *old_value, *locked_value = &empty_buffer_procs.buf; -# endif - - while (1) { /* spin loop */ - old_value = *lock; - if (old_value == 0) { - if (cffi_compare_and_swap(lock, old_value, locked_value)) - break; - } - else { -# if PY_VERSION_HEX < 0x030C0000 - assert(old_value == locked_value); -# else - /* The pointer should point to a possibly different - empty_buffer_procs from another C extension module */ - assert(((struct ebp_s *)old_value)->mark == -42); -# endif - /* should ideally do a spin loop instruction here, but - hard to do it portably and doesn't really matter I - think: PyEval_InitThreads() should be very fast, and - this is only run at start-up anyway. */ - } - } -# endif -#endif - - /* call Py_InitializeEx() */ - if (!Py_IsInitialized()) { - _cffi_py_initialize(); -#if PY_VERSION_HEX < 0x03070000 - PyEval_InitThreads(); -#endif - PyEval_SaveThread(); /* release the GIL */ - /* the returned tstate must be the one that has been stored into the - autoTLSkey by _PyGILState_Init() called from Py_Initialize(). */ - } - else { -#if PY_VERSION_HEX < 0x03070000 - /* PyEval_InitThreads() is always a no-op from CPython 3.7 */ - PyGILState_STATE state = PyGILState_Ensure(); - PyEval_InitThreads(); - PyGILState_Release(state); -#endif - } - -#ifdef WITH_THREAD - /* release the lock */ - while (!cffi_compare_and_swap(lock, locked_value, old_value)) - ; -#endif - - return 0; -} - -/********** end CPython-specific section **********/ - - -#else - - -/********** PyPy-specific section **********/ - -PyMODINIT_FUNC _CFFI_PYTHON_STARTUP_FUNC(const void *[]); /* forward */ - -static struct _cffi_pypy_init_s { - const char *name; - void *func; /* function pointer */ - const char *code; -} _cffi_pypy_init = { - _CFFI_MODULE_NAME, - _CFFI_PYTHON_STARTUP_FUNC, - _CFFI_PYTHON_STARTUP_CODE, -}; - -extern int pypy_carefully_make_gil(const char *); -extern int pypy_init_embedded_cffi_module(int, struct _cffi_pypy_init_s *); - -static int _cffi_carefully_make_gil(void) -{ - return pypy_carefully_make_gil(_CFFI_MODULE_NAME); -} - -static int _cffi_initialize_python(void) -{ - return pypy_init_embedded_cffi_module(0xB011, &_cffi_pypy_init); -} - -/********** end PyPy-specific section **********/ - - -#endif - - -#ifdef __GNUC__ -__attribute__((noinline)) -#endif -static _cffi_call_python_fnptr _cffi_start_python(void) -{ - /* Delicate logic to initialize Python. This function can be - called multiple times concurrently, e.g. when the process calls - its first ``extern "Python"`` functions in multiple threads at - once. It can also be called recursively, in which case we must - ignore it. We also have to consider what occurs if several - different cffi-based extensions reach this code in parallel - threads---it is a different copy of the code, then, and we - can't have any shared global variable unless it comes from - 'libpythonX.Y.so'. - - Idea: - - * _cffi_carefully_make_gil(): "carefully" call - PyEval_InitThreads() (possibly with Py_InitializeEx() first). - - * then we use a (local) custom lock to make sure that a call to this - cffi-based extension will wait if another call to the *same* - extension is running the initialization in another thread. - It is reentrant, so that a recursive call will not block, but - only one from a different thread. - - * then we grab the GIL and (Python 2) we call Py_InitializeEx(). - At this point, concurrent calls to Py_InitializeEx() are not - possible: we have the GIL. - - * do the rest of the specific initialization, which may - temporarily release the GIL but not the custom lock. - Only release the custom lock when we are done. - */ - static char called = 0; - - if (_cffi_carefully_make_gil() != 0) - return NULL; - - _cffi_acquire_reentrant_mutex(); - - /* Here the GIL exists, but we don't have it. We're only protected - from concurrency by the reentrant mutex. */ - - /* This file only initializes the embedded module once, the first - time this is called, even if there are subinterpreters. */ - if (!called) { - called = 1; /* invoke _cffi_initialize_python() only once, - but don't set '_cffi_call_python' right now, - otherwise concurrent threads won't call - this function at all (we need them to wait) */ - if (_cffi_initialize_python() == 0) { - /* now initialization is finished. Switch to the fast-path. */ - - /* We would like nobody to see the new value of - '_cffi_call_python' without also seeing the rest of the - data initialized. However, this is not possible. But - the new value of '_cffi_call_python' is the function - 'cffi_call_python()' from _cffi_backend. So: */ - cffi_write_barrier(); - /* ^^^ we put a write barrier here, and a corresponding - read barrier at the start of cffi_call_python(). This - ensures that after that read barrier, we see everything - done here before the write barrier. - */ - - assert(_cffi_call_python_org != NULL); - _cffi_call_python = (_cffi_call_python_fnptr)_cffi_call_python_org; - } - else { - /* initialization failed. Reset this to NULL, even if it was - already set to some other value. Future calls to - _cffi_start_python() are still forced to occur, and will - always return NULL from now on. */ - _cffi_call_python_org = NULL; - } - } - - _cffi_release_reentrant_mutex(); - - return (_cffi_call_python_fnptr)_cffi_call_python_org; -} - -static -void _cffi_start_and_call_python(struct _cffi_externpy_s *externpy, char *args) -{ - _cffi_call_python_fnptr fnptr; - int current_err = errno; -#ifdef _MSC_VER - int current_lasterr = GetLastError(); -#endif - fnptr = _cffi_start_python(); - if (fnptr == NULL) { - fprintf(stderr, "function %s() called, but initialization code " - "failed. Returning 0.\n", externpy->name); - memset(args, 0, externpy->size_of_result); - } -#ifdef _MSC_VER - SetLastError(current_lasterr); -#endif - errno = current_err; - - if (fnptr != NULL) - fnptr(externpy, args); -} - - -/* The cffi_start_python() function makes sure Python is initialized - and our cffi module is set up. It can be called manually from the - user C code. The same effect is obtained automatically from any - dll-exported ``extern "Python"`` function. This function returns - -1 if initialization failed, 0 if all is OK. */ -_CFFI_UNUSED_FN -static int cffi_start_python(void) -{ - if (_cffi_call_python == &_cffi_start_and_call_python) { - if (_cffi_start_python() == NULL) - return -1; - } - cffi_read_barrier(); - return 0; -} - -#undef cffi_compare_and_swap -#undef cffi_write_barrier -#undef cffi_read_barrier - -#ifdef __cplusplus -} -#endif diff --git a/venv/lib/python3.12/site-packages/cffi/_imp_emulation.py b/venv/lib/python3.12/site-packages/cffi/_imp_emulation.py deleted file mode 100644 index 136abdd..0000000 --- a/venv/lib/python3.12/site-packages/cffi/_imp_emulation.py +++ /dev/null @@ -1,83 +0,0 @@ - -try: - # this works on Python < 3.12 - from imp import * - -except ImportError: - # this is a limited emulation for Python >= 3.12. - # Note that this is used only for tests or for the old ffi.verify(). - # This is copied from the source code of Python 3.11. - - from _imp import (acquire_lock, release_lock, - is_builtin, is_frozen) - - from importlib._bootstrap import _load - - from importlib import machinery - import os - import sys - import tokenize - - SEARCH_ERROR = 0 - PY_SOURCE = 1 - PY_COMPILED = 2 - C_EXTENSION = 3 - PY_RESOURCE = 4 - PKG_DIRECTORY = 5 - C_BUILTIN = 6 - PY_FROZEN = 7 - PY_CODERESOURCE = 8 - IMP_HOOK = 9 - - def get_suffixes(): - extensions = [(s, 'rb', C_EXTENSION) - for s in machinery.EXTENSION_SUFFIXES] - source = [(s, 'r', PY_SOURCE) for s in machinery.SOURCE_SUFFIXES] - bytecode = [(s, 'rb', PY_COMPILED) for s in machinery.BYTECODE_SUFFIXES] - return extensions + source + bytecode - - def find_module(name, path=None): - if not isinstance(name, str): - raise TypeError("'name' must be a str, not {}".format(type(name))) - elif not isinstance(path, (type(None), list)): - # Backwards-compatibility - raise RuntimeError("'path' must be None or a list, " - "not {}".format(type(path))) - - if path is None: - if is_builtin(name): - return None, None, ('', '', C_BUILTIN) - elif is_frozen(name): - return None, None, ('', '', PY_FROZEN) - else: - path = sys.path - - for entry in path: - package_directory = os.path.join(entry, name) - for suffix in ['.py', machinery.BYTECODE_SUFFIXES[0]]: - package_file_name = '__init__' + suffix - file_path = os.path.join(package_directory, package_file_name) - if os.path.isfile(file_path): - return None, package_directory, ('', '', PKG_DIRECTORY) - for suffix, mode, type_ in get_suffixes(): - file_name = name + suffix - file_path = os.path.join(entry, file_name) - if os.path.isfile(file_path): - break - else: - continue - break # Break out of outer loop when breaking out of inner loop. - else: - raise ImportError(name, name=name) - - encoding = None - if 'b' not in mode: - with open(file_path, 'rb') as file: - encoding = tokenize.detect_encoding(file.readline)[0] - file = open(file_path, mode, encoding=encoding) - return file, file_path, (suffix, mode, type_) - - def load_dynamic(name, path, file=None): - loader = machinery.ExtensionFileLoader(name, path) - spec = machinery.ModuleSpec(name=name, loader=loader, origin=path) - return _load(spec) diff --git a/venv/lib/python3.12/site-packages/cffi/_shimmed_dist_utils.py b/venv/lib/python3.12/site-packages/cffi/_shimmed_dist_utils.py deleted file mode 100644 index c3d2312..0000000 --- a/venv/lib/python3.12/site-packages/cffi/_shimmed_dist_utils.py +++ /dev/null @@ -1,45 +0,0 @@ -""" -Temporary shim module to indirect the bits of distutils we need from setuptools/distutils while providing useful -error messages beyond `No module named 'distutils' on Python >= 3.12, or when setuptools' vendored distutils is broken. - -This is a compromise to avoid a hard-dep on setuptools for Python >= 3.12, since many users don't need runtime compilation support from CFFI. -""" -import sys - -try: - # import setuptools first; this is the most robust way to ensure its embedded distutils is available - # (the .pth shim should usually work, but this is even more robust) - import setuptools -except Exception as ex: - if sys.version_info >= (3, 12): - # Python 3.12 has no built-in distutils to fall back on, so any import problem is fatal - raise Exception("This CFFI feature requires setuptools on Python >= 3.12. The setuptools module is missing or non-functional.") from ex - - # silently ignore on older Pythons (support fallback to stdlib distutils where available) -else: - del setuptools - -try: - # bring in just the bits of distutils we need, whether they really came from setuptools or stdlib-embedded distutils - from distutils import log, sysconfig - from distutils.ccompiler import CCompiler - from distutils.command.build_ext import build_ext - from distutils.core import Distribution, Extension - from distutils.dir_util import mkpath - from distutils.errors import DistutilsSetupError, CompileError, LinkError - from distutils.log import set_threshold, set_verbosity - - if sys.platform == 'win32': - try: - # FUTURE: msvc9compiler module was removed in setuptools 74; consider removing, as it's only used by an ancient patch in `recompiler` - from distutils.msvc9compiler import MSVCCompiler - except ImportError: - MSVCCompiler = None -except Exception as ex: - if sys.version_info >= (3, 12): - raise Exception("This CFFI feature requires setuptools on Python >= 3.12. Please install the setuptools package.") from ex - - # anything older, just let the underlying distutils import error fly - raise Exception("This CFFI feature requires distutils. Please install the distutils or setuptools package.") from ex - -del sys diff --git a/venv/lib/python3.12/site-packages/cffi/api.py b/venv/lib/python3.12/site-packages/cffi/api.py deleted file mode 100644 index 5a474f3..0000000 --- a/venv/lib/python3.12/site-packages/cffi/api.py +++ /dev/null @@ -1,967 +0,0 @@ -import sys, types -from .lock import allocate_lock -from .error import CDefError -from . import model - -try: - callable -except NameError: - # Python 3.1 - from collections import Callable - callable = lambda x: isinstance(x, Callable) - -try: - basestring -except NameError: - # Python 3.x - basestring = str - -_unspecified = object() - - - -class FFI(object): - r''' - The main top-level class that you instantiate once, or once per module. - - Example usage: - - ffi = FFI() - ffi.cdef(""" - int printf(const char *, ...); - """) - - C = ffi.dlopen(None) # standard library - -or- - C = ffi.verify() # use a C compiler: verify the decl above is right - - C.printf("hello, %s!\n", ffi.new("char[]", "world")) - ''' - - def __init__(self, backend=None): - """Create an FFI instance. The 'backend' argument is used to - select a non-default backend, mostly for tests. - """ - if backend is None: - # You need PyPy (>= 2.0 beta), or a CPython (>= 2.6) with - # _cffi_backend.so compiled. - import _cffi_backend as backend - from . import __version__ - if backend.__version__ != __version__: - # bad version! Try to be as explicit as possible. - if hasattr(backend, '__file__'): - # CPython - raise Exception("Version mismatch: this is the 'cffi' package version %s, located in %r. When we import the top-level '_cffi_backend' extension module, we get version %s, located in %r. The two versions should be equal; check your installation." % ( - __version__, __file__, - backend.__version__, backend.__file__)) - else: - # PyPy - raise Exception("Version mismatch: this is the 'cffi' package version %s, located in %r. This interpreter comes with a built-in '_cffi_backend' module, which is version %s. The two versions should be equal; check your installation." % ( - __version__, __file__, backend.__version__)) - # (If you insist you can also try to pass the option - # 'backend=backend_ctypes.CTypesBackend()', but don't - # rely on it! It's probably not going to work well.) - - from . import cparser - self._backend = backend - self._lock = allocate_lock() - self._parser = cparser.Parser() - self._cached_btypes = {} - self._parsed_types = types.ModuleType('parsed_types').__dict__ - self._new_types = types.ModuleType('new_types').__dict__ - self._function_caches = [] - self._libraries = [] - self._cdefsources = [] - self._included_ffis = [] - self._windows_unicode = None - self._init_once_cache = {} - self._cdef_version = None - self._embedding = None - self._typecache = model.get_typecache(backend) - if hasattr(backend, 'set_ffi'): - backend.set_ffi(self) - for name in list(backend.__dict__): - if name.startswith('RTLD_'): - setattr(self, name, getattr(backend, name)) - # - with self._lock: - self.BVoidP = self._get_cached_btype(model.voidp_type) - self.BCharA = self._get_cached_btype(model.char_array_type) - if isinstance(backend, types.ModuleType): - # _cffi_backend: attach these constants to the class - if not hasattr(FFI, 'NULL'): - FFI.NULL = self.cast(self.BVoidP, 0) - FFI.CData, FFI.CType = backend._get_types() - else: - # ctypes backend: attach these constants to the instance - self.NULL = self.cast(self.BVoidP, 0) - self.CData, self.CType = backend._get_types() - self.buffer = backend.buffer - - def cdef(self, csource, override=False, packed=False, pack=None): - """Parse the given C source. This registers all declared functions, - types, and global variables. The functions and global variables can - then be accessed via either 'ffi.dlopen()' or 'ffi.verify()'. - The types can be used in 'ffi.new()' and other functions. - If 'packed' is specified as True, all structs declared inside this - cdef are packed, i.e. laid out without any field alignment at all. - Alternatively, 'pack' can be a small integer, and requests for - alignment greater than that are ignored (pack=1 is equivalent to - packed=True). - """ - self._cdef(csource, override=override, packed=packed, pack=pack) - - def embedding_api(self, csource, packed=False, pack=None): - self._cdef(csource, packed=packed, pack=pack, dllexport=True) - if self._embedding is None: - self._embedding = '' - - def _cdef(self, csource, override=False, **options): - if not isinstance(csource, str): # unicode, on Python 2 - if not isinstance(csource, basestring): - raise TypeError("cdef() argument must be a string") - csource = csource.encode('ascii') - with self._lock: - self._cdef_version = object() - self._parser.parse(csource, override=override, **options) - self._cdefsources.append(csource) - if override: - for cache in self._function_caches: - cache.clear() - finishlist = self._parser._recomplete - if finishlist: - self._parser._recomplete = [] - for tp in finishlist: - tp.finish_backend_type(self, finishlist) - - def dlopen(self, name, flags=0): - """Load and return a dynamic library identified by 'name'. - The standard C library can be loaded by passing None. - Note that functions and types declared by 'ffi.cdef()' are not - linked to a particular library, just like C headers; in the - library we only look for the actual (untyped) symbols. - """ - if not (isinstance(name, basestring) or - name is None or - isinstance(name, self.CData)): - raise TypeError("dlopen(name): name must be a file name, None, " - "or an already-opened 'void *' handle") - with self._lock: - lib, function_cache = _make_ffi_library(self, name, flags) - self._function_caches.append(function_cache) - self._libraries.append(lib) - return lib - - def dlclose(self, lib): - """Close a library obtained with ffi.dlopen(). After this call, - access to functions or variables from the library will fail - (possibly with a segmentation fault). - """ - type(lib).__cffi_close__(lib) - - def _typeof_locked(self, cdecl): - # call me with the lock! - key = cdecl - if key in self._parsed_types: - return self._parsed_types[key] - # - if not isinstance(cdecl, str): # unicode, on Python 2 - cdecl = cdecl.encode('ascii') - # - type = self._parser.parse_type(cdecl) - really_a_function_type = type.is_raw_function - if really_a_function_type: - type = type.as_function_pointer() - btype = self._get_cached_btype(type) - result = btype, really_a_function_type - self._parsed_types[key] = result - return result - - def _typeof(self, cdecl, consider_function_as_funcptr=False): - # string -> ctype object - try: - result = self._parsed_types[cdecl] - except KeyError: - with self._lock: - result = self._typeof_locked(cdecl) - # - btype, really_a_function_type = result - if really_a_function_type and not consider_function_as_funcptr: - raise CDefError("the type %r is a function type, not a " - "pointer-to-function type" % (cdecl,)) - return btype - - def typeof(self, cdecl): - """Parse the C type given as a string and return the - corresponding object. - It can also be used on 'cdata' instance to get its C type. - """ - if isinstance(cdecl, basestring): - return self._typeof(cdecl) - if isinstance(cdecl, self.CData): - return self._backend.typeof(cdecl) - if isinstance(cdecl, types.BuiltinFunctionType): - res = _builtin_function_type(cdecl) - if res is not None: - return res - if (isinstance(cdecl, types.FunctionType) - and hasattr(cdecl, '_cffi_base_type')): - with self._lock: - return self._get_cached_btype(cdecl._cffi_base_type) - raise TypeError(type(cdecl)) - - def sizeof(self, cdecl): - """Return the size in bytes of the argument. It can be a - string naming a C type, or a 'cdata' instance. - """ - if isinstance(cdecl, basestring): - BType = self._typeof(cdecl) - return self._backend.sizeof(BType) - else: - return self._backend.sizeof(cdecl) - - def alignof(self, cdecl): - """Return the natural alignment size in bytes of the C type - given as a string. - """ - if isinstance(cdecl, basestring): - cdecl = self._typeof(cdecl) - return self._backend.alignof(cdecl) - - def offsetof(self, cdecl, *fields_or_indexes): - """Return the offset of the named field inside the given - structure or array, which must be given as a C type name. - You can give several field names in case of nested structures. - You can also give numeric values which correspond to array - items, in case of an array type. - """ - if isinstance(cdecl, basestring): - cdecl = self._typeof(cdecl) - return self._typeoffsetof(cdecl, *fields_or_indexes)[1] - - def new(self, cdecl, init=None): - """Allocate an instance according to the specified C type and - return a pointer to it. The specified C type must be either a - pointer or an array: ``new('X *')`` allocates an X and returns - a pointer to it, whereas ``new('X[n]')`` allocates an array of - n X'es and returns an array referencing it (which works - mostly like a pointer, like in C). You can also use - ``new('X[]', n)`` to allocate an array of a non-constant - length n. - - The memory is initialized following the rules of declaring a - global variable in C: by default it is zero-initialized, but - an explicit initializer can be given which can be used to - fill all or part of the memory. - - When the returned object goes out of scope, the memory - is freed. In other words the returned object has - ownership of the value of type 'cdecl' that it points to. This - means that the raw data can be used as long as this object is - kept alive, but must not be used for a longer time. Be careful - about that when copying the pointer to the memory somewhere - else, e.g. into another structure. - """ - if isinstance(cdecl, basestring): - cdecl = self._typeof(cdecl) - return self._backend.newp(cdecl, init) - - def new_allocator(self, alloc=None, free=None, - should_clear_after_alloc=True): - """Return a new allocator, i.e. a function that behaves like ffi.new() - but uses the provided low-level 'alloc' and 'free' functions. - - 'alloc' is called with the size as argument. If it returns NULL, a - MemoryError is raised. 'free' is called with the result of 'alloc' - as argument. Both can be either Python function or directly C - functions. If 'free' is None, then no free function is called. - If both 'alloc' and 'free' are None, the default is used. - - If 'should_clear_after_alloc' is set to False, then the memory - returned by 'alloc' is assumed to be already cleared (or you are - fine with garbage); otherwise CFFI will clear it. - """ - compiled_ffi = self._backend.FFI() - allocator = compiled_ffi.new_allocator(alloc, free, - should_clear_after_alloc) - def allocate(cdecl, init=None): - if isinstance(cdecl, basestring): - cdecl = self._typeof(cdecl) - return allocator(cdecl, init) - return allocate - - def cast(self, cdecl, source): - """Similar to a C cast: returns an instance of the named C - type initialized with the given 'source'. The source is - casted between integers or pointers of any type. - """ - if isinstance(cdecl, basestring): - cdecl = self._typeof(cdecl) - return self._backend.cast(cdecl, source) - - def string(self, cdata, maxlen=-1): - """Return a Python string (or unicode string) from the 'cdata'. - If 'cdata' is a pointer or array of characters or bytes, returns - the null-terminated string. The returned string extends until - the first null character, or at most 'maxlen' characters. If - 'cdata' is an array then 'maxlen' defaults to its length. - - If 'cdata' is a pointer or array of wchar_t, returns a unicode - string following the same rules. - - If 'cdata' is a single character or byte or a wchar_t, returns - it as a string or unicode string. - - If 'cdata' is an enum, returns the value of the enumerator as a - string, or 'NUMBER' if the value is out of range. - """ - return self._backend.string(cdata, maxlen) - - def unpack(self, cdata, length): - """Unpack an array of C data of the given length, - returning a Python string/unicode/list. - - If 'cdata' is a pointer to 'char', returns a byte string. - It does not stop at the first null. This is equivalent to: - ffi.buffer(cdata, length)[:] - - If 'cdata' is a pointer to 'wchar_t', returns a unicode string. - 'length' is measured in wchar_t's; it is not the size in bytes. - - If 'cdata' is a pointer to anything else, returns a list of - 'length' items. This is a faster equivalent to: - [cdata[i] for i in range(length)] - """ - return self._backend.unpack(cdata, length) - - #def buffer(self, cdata, size=-1): - # """Return a read-write buffer object that references the raw C data - # pointed to by the given 'cdata'. The 'cdata' must be a pointer or - # an array. Can be passed to functions expecting a buffer, or directly - # manipulated with: - # - # buf[:] get a copy of it in a regular string, or - # buf[idx] as a single character - # buf[:] = ... - # buf[idx] = ... change the content - # """ - # note that 'buffer' is a type, set on this instance by __init__ - - def from_buffer(self, cdecl, python_buffer=_unspecified, - require_writable=False): - """Return a cdata of the given type pointing to the data of the - given Python object, which must support the buffer interface. - Note that this is not meant to be used on the built-in types - str or unicode (you can build 'char[]' arrays explicitly) - but only on objects containing large quantities of raw data - in some other format, like 'array.array' or numpy arrays. - - The first argument is optional and default to 'char[]'. - """ - if python_buffer is _unspecified: - cdecl, python_buffer = self.BCharA, cdecl - elif isinstance(cdecl, basestring): - cdecl = self._typeof(cdecl) - return self._backend.from_buffer(cdecl, python_buffer, - require_writable) - - def memmove(self, dest, src, n): - """ffi.memmove(dest, src, n) copies n bytes of memory from src to dest. - - Like the C function memmove(), the memory areas may overlap; - apart from that it behaves like the C function memcpy(). - - 'src' can be any cdata ptr or array, or any Python buffer object. - 'dest' can be any cdata ptr or array, or a writable Python buffer - object. The size to copy, 'n', is always measured in bytes. - - Unlike other methods, this one supports all Python buffer including - byte strings and bytearrays---but it still does not support - non-contiguous buffers. - """ - return self._backend.memmove(dest, src, n) - - def callback(self, cdecl, python_callable=None, error=None, onerror=None): - """Return a callback object or a decorator making such a - callback object. 'cdecl' must name a C function pointer type. - The callback invokes the specified 'python_callable' (which may - be provided either directly or via a decorator). Important: the - callback object must be manually kept alive for as long as the - callback may be invoked from the C level. - """ - def callback_decorator_wrap(python_callable): - if not callable(python_callable): - raise TypeError("the 'python_callable' argument " - "is not callable") - return self._backend.callback(cdecl, python_callable, - error, onerror) - if isinstance(cdecl, basestring): - cdecl = self._typeof(cdecl, consider_function_as_funcptr=True) - if python_callable is None: - return callback_decorator_wrap # decorator mode - else: - return callback_decorator_wrap(python_callable) # direct mode - - def getctype(self, cdecl, replace_with=''): - """Return a string giving the C type 'cdecl', which may be itself - a string or a object. If 'replace_with' is given, it gives - extra text to append (or insert for more complicated C types), like - a variable name, or '*' to get actually the C type 'pointer-to-cdecl'. - """ - if isinstance(cdecl, basestring): - cdecl = self._typeof(cdecl) - replace_with = replace_with.strip() - if (replace_with.startswith('*') - and '&[' in self._backend.getcname(cdecl, '&')): - replace_with = '(%s)' % replace_with - elif replace_with and not replace_with[0] in '[(': - replace_with = ' ' + replace_with - return self._backend.getcname(cdecl, replace_with) - - def gc(self, cdata, destructor, size=0): - """Return a new cdata object that points to the same - data. Later, when this new cdata object is garbage-collected, - 'destructor(old_cdata_object)' will be called. - - The optional 'size' gives an estimate of the size, used to - trigger the garbage collection more eagerly. So far only used - on PyPy. It tells the GC that the returned object keeps alive - roughly 'size' bytes of external memory. - """ - return self._backend.gcp(cdata, destructor, size) - - def _get_cached_btype(self, type): - assert self._lock.acquire(False) is False - # call me with the lock! - try: - BType = self._cached_btypes[type] - except KeyError: - finishlist = [] - BType = type.get_cached_btype(self, finishlist) - for type in finishlist: - type.finish_backend_type(self, finishlist) - return BType - - def verify(self, source='', tmpdir=None, **kwargs): - """Verify that the current ffi signatures compile on this - machine, and return a dynamic library object. The dynamic - library can be used to call functions and access global - variables declared in this 'ffi'. The library is compiled - by the C compiler: it gives you C-level API compatibility - (including calling macros). This is unlike 'ffi.dlopen()', - which requires binary compatibility in the signatures. - """ - from .verifier import Verifier, _caller_dir_pycache - # - # If set_unicode(True) was called, insert the UNICODE and - # _UNICODE macro declarations - if self._windows_unicode: - self._apply_windows_unicode(kwargs) - # - # Set the tmpdir here, and not in Verifier.__init__: it picks - # up the caller's directory, which we want to be the caller of - # ffi.verify(), as opposed to the caller of Veritier(). - tmpdir = tmpdir or _caller_dir_pycache() - # - # Make a Verifier() and use it to load the library. - self.verifier = Verifier(self, source, tmpdir, **kwargs) - lib = self.verifier.load_library() - # - # Save the loaded library for keep-alive purposes, even - # if the caller doesn't keep it alive itself (it should). - self._libraries.append(lib) - return lib - - def _get_errno(self): - return self._backend.get_errno() - def _set_errno(self, errno): - self._backend.set_errno(errno) - errno = property(_get_errno, _set_errno, None, - "the value of 'errno' from/to the C calls") - - def getwinerror(self, code=-1): - return self._backend.getwinerror(code) - - def _pointer_to(self, ctype): - with self._lock: - return model.pointer_cache(self, ctype) - - def addressof(self, cdata, *fields_or_indexes): - """Return the address of a . - If 'fields_or_indexes' are given, returns the address of that - field or array item in the structure or array, recursively in - case of nested structures. - """ - try: - ctype = self._backend.typeof(cdata) - except TypeError: - if '__addressof__' in type(cdata).__dict__: - return type(cdata).__addressof__(cdata, *fields_or_indexes) - raise - if fields_or_indexes: - ctype, offset = self._typeoffsetof(ctype, *fields_or_indexes) - else: - if ctype.kind == "pointer": - raise TypeError("addressof(pointer)") - offset = 0 - ctypeptr = self._pointer_to(ctype) - return self._backend.rawaddressof(ctypeptr, cdata, offset) - - def _typeoffsetof(self, ctype, field_or_index, *fields_or_indexes): - ctype, offset = self._backend.typeoffsetof(ctype, field_or_index) - for field1 in fields_or_indexes: - ctype, offset1 = self._backend.typeoffsetof(ctype, field1, 1) - offset += offset1 - return ctype, offset - - def include(self, ffi_to_include): - """Includes the typedefs, structs, unions and enums defined - in another FFI instance. Usage is similar to a #include in C, - where a part of the program might include types defined in - another part for its own usage. Note that the include() - method has no effect on functions, constants and global - variables, which must anyway be accessed directly from the - lib object returned by the original FFI instance. - """ - if not isinstance(ffi_to_include, FFI): - raise TypeError("ffi.include() expects an argument that is also of" - " type cffi.FFI, not %r" % ( - type(ffi_to_include).__name__,)) - if ffi_to_include is self: - raise ValueError("self.include(self)") - with ffi_to_include._lock: - with self._lock: - self._parser.include(ffi_to_include._parser) - self._cdefsources.append('[') - self._cdefsources.extend(ffi_to_include._cdefsources) - self._cdefsources.append(']') - self._included_ffis.append(ffi_to_include) - - def new_handle(self, x): - return self._backend.newp_handle(self.BVoidP, x) - - def from_handle(self, x): - return self._backend.from_handle(x) - - def release(self, x): - self._backend.release(x) - - def set_unicode(self, enabled_flag): - """Windows: if 'enabled_flag' is True, enable the UNICODE and - _UNICODE defines in C, and declare the types like TCHAR and LPTCSTR - to be (pointers to) wchar_t. If 'enabled_flag' is False, - declare these types to be (pointers to) plain 8-bit characters. - This is mostly for backward compatibility; you usually want True. - """ - if self._windows_unicode is not None: - raise ValueError("set_unicode() can only be called once") - enabled_flag = bool(enabled_flag) - if enabled_flag: - self.cdef("typedef wchar_t TBYTE;" - "typedef wchar_t TCHAR;" - "typedef const wchar_t *LPCTSTR;" - "typedef const wchar_t *PCTSTR;" - "typedef wchar_t *LPTSTR;" - "typedef wchar_t *PTSTR;" - "typedef TBYTE *PTBYTE;" - "typedef TCHAR *PTCHAR;") - else: - self.cdef("typedef char TBYTE;" - "typedef char TCHAR;" - "typedef const char *LPCTSTR;" - "typedef const char *PCTSTR;" - "typedef char *LPTSTR;" - "typedef char *PTSTR;" - "typedef TBYTE *PTBYTE;" - "typedef TCHAR *PTCHAR;") - self._windows_unicode = enabled_flag - - def _apply_windows_unicode(self, kwds): - defmacros = kwds.get('define_macros', ()) - if not isinstance(defmacros, (list, tuple)): - raise TypeError("'define_macros' must be a list or tuple") - defmacros = list(defmacros) + [('UNICODE', '1'), - ('_UNICODE', '1')] - kwds['define_macros'] = defmacros - - def _apply_embedding_fix(self, kwds): - # must include an argument like "-lpython2.7" for the compiler - def ensure(key, value): - lst = kwds.setdefault(key, []) - if value not in lst: - lst.append(value) - # - if '__pypy__' in sys.builtin_module_names: - import os - if sys.platform == "win32": - # we need 'libpypy-c.lib'. Current distributions of - # pypy (>= 4.1) contain it as 'libs/python27.lib'. - pythonlib = "python{0[0]}{0[1]}".format(sys.version_info) - if hasattr(sys, 'prefix'): - ensure('library_dirs', os.path.join(sys.prefix, 'libs')) - else: - # we need 'libpypy-c.{so,dylib}', which should be by - # default located in 'sys.prefix/bin' for installed - # systems. - if sys.version_info < (3,): - pythonlib = "pypy-c" - else: - pythonlib = "pypy3-c" - if hasattr(sys, 'prefix'): - ensure('library_dirs', os.path.join(sys.prefix, 'bin')) - # On uninstalled pypy's, the libpypy-c is typically found in - # .../pypy/goal/. - if hasattr(sys, 'prefix'): - ensure('library_dirs', os.path.join(sys.prefix, 'pypy', 'goal')) - else: - if sys.platform == "win32": - template = "python%d%d" - if hasattr(sys, 'gettotalrefcount'): - template += '_d' - else: - try: - import sysconfig - except ImportError: # 2.6 - from cffi._shimmed_dist_utils import sysconfig - template = "python%d.%d" - if sysconfig.get_config_var('DEBUG_EXT'): - template += sysconfig.get_config_var('DEBUG_EXT') - pythonlib = (template % - (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) - if hasattr(sys, 'abiflags'): - pythonlib += sys.abiflags - ensure('libraries', pythonlib) - if sys.platform == "win32": - ensure('extra_link_args', '/MANIFEST') - - def set_source(self, module_name, source, source_extension='.c', **kwds): - import os - if hasattr(self, '_assigned_source'): - raise ValueError("set_source() cannot be called several times " - "per ffi object") - if not isinstance(module_name, basestring): - raise TypeError("'module_name' must be a string") - if os.sep in module_name or (os.altsep and os.altsep in module_name): - raise ValueError("'module_name' must not contain '/': use a dotted " - "name to make a 'package.module' location") - self._assigned_source = (str(module_name), source, - source_extension, kwds) - - def set_source_pkgconfig(self, module_name, pkgconfig_libs, source, - source_extension='.c', **kwds): - from . import pkgconfig - if not isinstance(pkgconfig_libs, list): - raise TypeError("the pkgconfig_libs argument must be a list " - "of package names") - kwds2 = pkgconfig.flags_from_pkgconfig(pkgconfig_libs) - pkgconfig.merge_flags(kwds, kwds2) - self.set_source(module_name, source, source_extension, **kwds) - - def distutils_extension(self, tmpdir='build', verbose=True): - from cffi._shimmed_dist_utils import mkpath - from .recompiler import recompile - # - if not hasattr(self, '_assigned_source'): - if hasattr(self, 'verifier'): # fallback, 'tmpdir' ignored - return self.verifier.get_extension() - raise ValueError("set_source() must be called before" - " distutils_extension()") - module_name, source, source_extension, kwds = self._assigned_source - if source is None: - raise TypeError("distutils_extension() is only for C extension " - "modules, not for dlopen()-style pure Python " - "modules") - mkpath(tmpdir) - ext, updated = recompile(self, module_name, - source, tmpdir=tmpdir, extradir=tmpdir, - source_extension=source_extension, - call_c_compiler=False, **kwds) - if verbose: - if updated: - sys.stderr.write("regenerated: %r\n" % (ext.sources[0],)) - else: - sys.stderr.write("not modified: %r\n" % (ext.sources[0],)) - return ext - - def emit_c_code(self, filename): - from .recompiler import recompile - # - if not hasattr(self, '_assigned_source'): - raise ValueError("set_source() must be called before emit_c_code()") - module_name, source, source_extension, kwds = self._assigned_source - if source is None: - raise TypeError("emit_c_code() is only for C extension modules, " - "not for dlopen()-style pure Python modules") - recompile(self, module_name, source, - c_file=filename, call_c_compiler=False, - uses_ffiplatform=False, **kwds) - - def emit_python_code(self, filename): - from .recompiler import recompile - # - if not hasattr(self, '_assigned_source'): - raise ValueError("set_source() must be called before emit_c_code()") - module_name, source, source_extension, kwds = self._assigned_source - if source is not None: - raise TypeError("emit_python_code() is only for dlopen()-style " - "pure Python modules, not for C extension modules") - recompile(self, module_name, source, - c_file=filename, call_c_compiler=False, - uses_ffiplatform=False, **kwds) - - def compile(self, tmpdir='.', verbose=0, target=None, debug=None): - """The 'target' argument gives the final file name of the - compiled DLL. Use '*' to force distutils' choice, suitable for - regular CPython C API modules. Use a file name ending in '.*' - to ask for the system's default extension for dynamic libraries - (.so/.dll/.dylib). - - The default is '*' when building a non-embedded C API extension, - and (module_name + '.*') when building an embedded library. - """ - from .recompiler import recompile - # - if not hasattr(self, '_assigned_source'): - raise ValueError("set_source() must be called before compile()") - module_name, source, source_extension, kwds = self._assigned_source - return recompile(self, module_name, source, tmpdir=tmpdir, - target=target, source_extension=source_extension, - compiler_verbose=verbose, debug=debug, **kwds) - - def init_once(self, func, tag): - # Read _init_once_cache[tag], which is either (False, lock) if - # we're calling the function now in some thread, or (True, result). - # Don't call setdefault() in most cases, to avoid allocating and - # immediately freeing a lock; but still use setdefaut() to avoid - # races. - try: - x = self._init_once_cache[tag] - except KeyError: - x = self._init_once_cache.setdefault(tag, (False, allocate_lock())) - # Common case: we got (True, result), so we return the result. - if x[0]: - return x[1] - # Else, it's a lock. Acquire it to serialize the following tests. - with x[1]: - # Read again from _init_once_cache the current status. - x = self._init_once_cache[tag] - if x[0]: - return x[1] - # Call the function and store the result back. - result = func() - self._init_once_cache[tag] = (True, result) - return result - - def embedding_init_code(self, pysource): - if self._embedding: - raise ValueError("embedding_init_code() can only be called once") - # fix 'pysource' before it gets dumped into the C file: - # - remove empty lines at the beginning, so it starts at "line 1" - # - dedent, if all non-empty lines are indented - # - check for SyntaxErrors - import re - match = re.match(r'\s*\n', pysource) - if match: - pysource = pysource[match.end():] - lines = pysource.splitlines() or [''] - prefix = re.match(r'\s*', lines[0]).group() - for i in range(1, len(lines)): - line = lines[i] - if line.rstrip(): - while not line.startswith(prefix): - prefix = prefix[:-1] - i = len(prefix) - lines = [line[i:]+'\n' for line in lines] - pysource = ''.join(lines) - # - compile(pysource, "cffi_init", "exec") - # - self._embedding = pysource - - def def_extern(self, *args, **kwds): - raise ValueError("ffi.def_extern() is only available on API-mode FFI " - "objects") - - def list_types(self): - """Returns the user type names known to this FFI instance. - This returns a tuple containing three lists of names: - (typedef_names, names_of_structs, names_of_unions) - """ - typedefs = [] - structs = [] - unions = [] - for key in self._parser._declarations: - if key.startswith('typedef '): - typedefs.append(key[8:]) - elif key.startswith('struct '): - structs.append(key[7:]) - elif key.startswith('union '): - unions.append(key[6:]) - typedefs.sort() - structs.sort() - unions.sort() - return (typedefs, structs, unions) - - -def _load_backend_lib(backend, name, flags): - import os - if not isinstance(name, basestring): - if sys.platform != "win32" or name is not None: - return backend.load_library(name, flags) - name = "c" # Windows: load_library(None) fails, but this works - # on Python 2 (backward compatibility hack only) - first_error = None - if '.' in name or '/' in name or os.sep in name: - try: - return backend.load_library(name, flags) - except OSError as e: - first_error = e - import ctypes.util - path = ctypes.util.find_library(name) - if path is None: - if name == "c" and sys.platform == "win32" and sys.version_info >= (3,): - raise OSError("dlopen(None) cannot work on Windows for Python 3 " - "(see http://bugs.python.org/issue23606)") - msg = ("ctypes.util.find_library() did not manage " - "to locate a library called %r" % (name,)) - if first_error is not None: - msg = "%s. Additionally, %s" % (first_error, msg) - raise OSError(msg) - return backend.load_library(path, flags) - -def _make_ffi_library(ffi, libname, flags): - backend = ffi._backend - backendlib = _load_backend_lib(backend, libname, flags) - # - def accessor_function(name): - key = 'function ' + name - tp, _ = ffi._parser._declarations[key] - BType = ffi._get_cached_btype(tp) - value = backendlib.load_function(BType, name) - library.__dict__[name] = value - # - def accessor_variable(name): - key = 'variable ' + name - tp, _ = ffi._parser._declarations[key] - BType = ffi._get_cached_btype(tp) - read_variable = backendlib.read_variable - write_variable = backendlib.write_variable - setattr(FFILibrary, name, property( - lambda self: read_variable(BType, name), - lambda self, value: write_variable(BType, name, value))) - # - def addressof_var(name): - try: - return addr_variables[name] - except KeyError: - with ffi._lock: - if name not in addr_variables: - key = 'variable ' + name - tp, _ = ffi._parser._declarations[key] - BType = ffi._get_cached_btype(tp) - if BType.kind != 'array': - BType = model.pointer_cache(ffi, BType) - p = backendlib.load_function(BType, name) - addr_variables[name] = p - return addr_variables[name] - # - def accessor_constant(name): - raise NotImplementedError("non-integer constant '%s' cannot be " - "accessed from a dlopen() library" % (name,)) - # - def accessor_int_constant(name): - library.__dict__[name] = ffi._parser._int_constants[name] - # - accessors = {} - accessors_version = [False] - addr_variables = {} - # - def update_accessors(): - if accessors_version[0] is ffi._cdef_version: - return - # - for key, (tp, _) in ffi._parser._declarations.items(): - if not isinstance(tp, model.EnumType): - tag, name = key.split(' ', 1) - if tag == 'function': - accessors[name] = accessor_function - elif tag == 'variable': - accessors[name] = accessor_variable - elif tag == 'constant': - accessors[name] = accessor_constant - else: - for i, enumname in enumerate(tp.enumerators): - def accessor_enum(name, tp=tp, i=i): - tp.check_not_partial() - library.__dict__[name] = tp.enumvalues[i] - accessors[enumname] = accessor_enum - for name in ffi._parser._int_constants: - accessors.setdefault(name, accessor_int_constant) - accessors_version[0] = ffi._cdef_version - # - def make_accessor(name): - with ffi._lock: - if name in library.__dict__ or name in FFILibrary.__dict__: - return # added by another thread while waiting for the lock - if name not in accessors: - update_accessors() - if name not in accessors: - raise AttributeError(name) - accessors[name](name) - # - class FFILibrary(object): - def __getattr__(self, name): - make_accessor(name) - return getattr(self, name) - def __setattr__(self, name, value): - try: - property = getattr(self.__class__, name) - except AttributeError: - make_accessor(name) - setattr(self, name, value) - else: - property.__set__(self, value) - def __dir__(self): - with ffi._lock: - update_accessors() - return accessors.keys() - def __addressof__(self, name): - if name in library.__dict__: - return library.__dict__[name] - if name in FFILibrary.__dict__: - return addressof_var(name) - make_accessor(name) - if name in library.__dict__: - return library.__dict__[name] - if name in FFILibrary.__dict__: - return addressof_var(name) - raise AttributeError("cffi library has no function or " - "global variable named '%s'" % (name,)) - def __cffi_close__(self): - backendlib.close_lib() - self.__dict__.clear() - # - if isinstance(libname, basestring): - try: - if not isinstance(libname, str): # unicode, on Python 2 - libname = libname.encode('utf-8') - FFILibrary.__name__ = 'FFILibrary_%s' % libname - except UnicodeError: - pass - library = FFILibrary() - return library, library.__dict__ - -def _builtin_function_type(func): - # a hack to make at least ffi.typeof(builtin_function) work, - # if the builtin function was obtained by 'vengine_cpy'. - import sys - try: - module = sys.modules[func.__module__] - ffi = module._cffi_original_ffi - types_of_builtin_funcs = module._cffi_types_of_builtin_funcs - tp = types_of_builtin_funcs[func] - except (KeyError, AttributeError, TypeError): - return None - else: - with ffi._lock: - return ffi._get_cached_btype(tp) diff --git a/venv/lib/python3.12/site-packages/cffi/backend_ctypes.py b/venv/lib/python3.12/site-packages/cffi/backend_ctypes.py deleted file mode 100644 index e7956a7..0000000 --- a/venv/lib/python3.12/site-packages/cffi/backend_ctypes.py +++ /dev/null @@ -1,1121 +0,0 @@ -import ctypes, ctypes.util, operator, sys -from . import model - -if sys.version_info < (3,): - bytechr = chr -else: - unicode = str - long = int - xrange = range - bytechr = lambda num: bytes([num]) - -class CTypesType(type): - pass - -class CTypesData(object): - __metaclass__ = CTypesType - __slots__ = ['__weakref__'] - __name__ = '' - - def __init__(self, *args): - raise TypeError("cannot instantiate %r" % (self.__class__,)) - - @classmethod - def _newp(cls, init): - raise TypeError("expected a pointer or array ctype, got '%s'" - % (cls._get_c_name(),)) - - @staticmethod - def _to_ctypes(value): - raise TypeError - - @classmethod - def _arg_to_ctypes(cls, *value): - try: - ctype = cls._ctype - except AttributeError: - raise TypeError("cannot create an instance of %r" % (cls,)) - if value: - res = cls._to_ctypes(*value) - if not isinstance(res, ctype): - res = cls._ctype(res) - else: - res = cls._ctype() - return res - - @classmethod - def _create_ctype_obj(cls, init): - if init is None: - return cls._arg_to_ctypes() - else: - return cls._arg_to_ctypes(init) - - @staticmethod - def _from_ctypes(ctypes_value): - raise TypeError - - @classmethod - def _get_c_name(cls, replace_with=''): - return cls._reftypename.replace(' &', replace_with) - - @classmethod - def _fix_class(cls): - cls.__name__ = 'CData<%s>' % (cls._get_c_name(),) - cls.__qualname__ = 'CData<%s>' % (cls._get_c_name(),) - cls.__module__ = 'ffi' - - def _get_own_repr(self): - raise NotImplementedError - - def _addr_repr(self, address): - if address == 0: - return 'NULL' - else: - if address < 0: - address += 1 << (8*ctypes.sizeof(ctypes.c_void_p)) - return '0x%x' % address - - def __repr__(self, c_name=None): - own = self._get_own_repr() - return '' % (c_name or self._get_c_name(), own) - - def _convert_to_address(self, BClass): - if BClass is None: - raise TypeError("cannot convert %r to an address" % ( - self._get_c_name(),)) - else: - raise TypeError("cannot convert %r to %r" % ( - self._get_c_name(), BClass._get_c_name())) - - @classmethod - def _get_size(cls): - return ctypes.sizeof(cls._ctype) - - def _get_size_of_instance(self): - return ctypes.sizeof(self._ctype) - - @classmethod - def _cast_from(cls, source): - raise TypeError("cannot cast to %r" % (cls._get_c_name(),)) - - def _cast_to_integer(self): - return self._convert_to_address(None) - - @classmethod - def _alignment(cls): - return ctypes.alignment(cls._ctype) - - def __iter__(self): - raise TypeError("cdata %r does not support iteration" % ( - self._get_c_name()),) - - def _make_cmp(name): - cmpfunc = getattr(operator, name) - def cmp(self, other): - v_is_ptr = not isinstance(self, CTypesGenericPrimitive) - w_is_ptr = (isinstance(other, CTypesData) and - not isinstance(other, CTypesGenericPrimitive)) - if v_is_ptr and w_is_ptr: - return cmpfunc(self._convert_to_address(None), - other._convert_to_address(None)) - elif v_is_ptr or w_is_ptr: - return NotImplemented - else: - if isinstance(self, CTypesGenericPrimitive): - self = self._value - if isinstance(other, CTypesGenericPrimitive): - other = other._value - return cmpfunc(self, other) - cmp.func_name = name - return cmp - - __eq__ = _make_cmp('__eq__') - __ne__ = _make_cmp('__ne__') - __lt__ = _make_cmp('__lt__') - __le__ = _make_cmp('__le__') - __gt__ = _make_cmp('__gt__') - __ge__ = _make_cmp('__ge__') - - def __hash__(self): - return hash(self._convert_to_address(None)) - - def _to_string(self, maxlen): - raise TypeError("string(): %r" % (self,)) - - -class CTypesGenericPrimitive(CTypesData): - __slots__ = [] - - def __hash__(self): - return hash(self._value) - - def _get_own_repr(self): - return repr(self._from_ctypes(self._value)) - - -class CTypesGenericArray(CTypesData): - __slots__ = [] - - @classmethod - def _newp(cls, init): - return cls(init) - - def __iter__(self): - for i in xrange(len(self)): - yield self[i] - - def _get_own_repr(self): - return self._addr_repr(ctypes.addressof(self._blob)) - - -class CTypesGenericPtr(CTypesData): - __slots__ = ['_address', '_as_ctype_ptr'] - _automatic_casts = False - kind = "pointer" - - @classmethod - def _newp(cls, init): - return cls(init) - - @classmethod - def _cast_from(cls, source): - if source is None: - address = 0 - elif isinstance(source, CTypesData): - address = source._cast_to_integer() - elif isinstance(source, (int, long)): - address = source - else: - raise TypeError("bad type for cast to %r: %r" % - (cls, type(source).__name__)) - return cls._new_pointer_at(address) - - @classmethod - def _new_pointer_at(cls, address): - self = cls.__new__(cls) - self._address = address - self._as_ctype_ptr = ctypes.cast(address, cls._ctype) - return self - - def _get_own_repr(self): - try: - return self._addr_repr(self._address) - except AttributeError: - return '???' - - def _cast_to_integer(self): - return self._address - - def __nonzero__(self): - return bool(self._address) - __bool__ = __nonzero__ - - @classmethod - def _to_ctypes(cls, value): - if not isinstance(value, CTypesData): - raise TypeError("unexpected %s object" % type(value).__name__) - address = value._convert_to_address(cls) - return ctypes.cast(address, cls._ctype) - - @classmethod - def _from_ctypes(cls, ctypes_ptr): - address = ctypes.cast(ctypes_ptr, ctypes.c_void_p).value or 0 - return cls._new_pointer_at(address) - - @classmethod - def _initialize(cls, ctypes_ptr, value): - if value: - ctypes_ptr.contents = cls._to_ctypes(value).contents - - def _convert_to_address(self, BClass): - if (BClass in (self.__class__, None) or BClass._automatic_casts - or self._automatic_casts): - return self._address - else: - return CTypesData._convert_to_address(self, BClass) - - -class CTypesBaseStructOrUnion(CTypesData): - __slots__ = ['_blob'] - - @classmethod - def _create_ctype_obj(cls, init): - # may be overridden - raise TypeError("cannot instantiate opaque type %s" % (cls,)) - - def _get_own_repr(self): - return self._addr_repr(ctypes.addressof(self._blob)) - - @classmethod - def _offsetof(cls, fieldname): - return getattr(cls._ctype, fieldname).offset - - def _convert_to_address(self, BClass): - if getattr(BClass, '_BItem', None) is self.__class__: - return ctypes.addressof(self._blob) - else: - return CTypesData._convert_to_address(self, BClass) - - @classmethod - def _from_ctypes(cls, ctypes_struct_or_union): - self = cls.__new__(cls) - self._blob = ctypes_struct_or_union - return self - - @classmethod - def _to_ctypes(cls, value): - return value._blob - - def __repr__(self, c_name=None): - return CTypesData.__repr__(self, c_name or self._get_c_name(' &')) - - -class CTypesBackend(object): - - PRIMITIVE_TYPES = { - 'char': ctypes.c_char, - 'short': ctypes.c_short, - 'int': ctypes.c_int, - 'long': ctypes.c_long, - 'long long': ctypes.c_longlong, - 'signed char': ctypes.c_byte, - 'unsigned char': ctypes.c_ubyte, - 'unsigned short': ctypes.c_ushort, - 'unsigned int': ctypes.c_uint, - 'unsigned long': ctypes.c_ulong, - 'unsigned long long': ctypes.c_ulonglong, - 'float': ctypes.c_float, - 'double': ctypes.c_double, - '_Bool': ctypes.c_bool, - } - - for _name in ['unsigned long long', 'unsigned long', - 'unsigned int', 'unsigned short', 'unsigned char']: - _size = ctypes.sizeof(PRIMITIVE_TYPES[_name]) - PRIMITIVE_TYPES['uint%d_t' % (8*_size)] = PRIMITIVE_TYPES[_name] - if _size == ctypes.sizeof(ctypes.c_void_p): - PRIMITIVE_TYPES['uintptr_t'] = PRIMITIVE_TYPES[_name] - if _size == ctypes.sizeof(ctypes.c_size_t): - PRIMITIVE_TYPES['size_t'] = PRIMITIVE_TYPES[_name] - - for _name in ['long long', 'long', 'int', 'short', 'signed char']: - _size = ctypes.sizeof(PRIMITIVE_TYPES[_name]) - PRIMITIVE_TYPES['int%d_t' % (8*_size)] = PRIMITIVE_TYPES[_name] - if _size == ctypes.sizeof(ctypes.c_void_p): - PRIMITIVE_TYPES['intptr_t'] = PRIMITIVE_TYPES[_name] - PRIMITIVE_TYPES['ptrdiff_t'] = PRIMITIVE_TYPES[_name] - if _size == ctypes.sizeof(ctypes.c_size_t): - PRIMITIVE_TYPES['ssize_t'] = PRIMITIVE_TYPES[_name] - - - def __init__(self): - self.RTLD_LAZY = 0 # not supported anyway by ctypes - self.RTLD_NOW = 0 - self.RTLD_GLOBAL = ctypes.RTLD_GLOBAL - self.RTLD_LOCAL = ctypes.RTLD_LOCAL - - def set_ffi(self, ffi): - self.ffi = ffi - - def _get_types(self): - return CTypesData, CTypesType - - def load_library(self, path, flags=0): - cdll = ctypes.CDLL(path, flags) - return CTypesLibrary(self, cdll) - - def new_void_type(self): - class CTypesVoid(CTypesData): - __slots__ = [] - _reftypename = 'void &' - @staticmethod - def _from_ctypes(novalue): - return None - @staticmethod - def _to_ctypes(novalue): - if novalue is not None: - raise TypeError("None expected, got %s object" % - (type(novalue).__name__,)) - return None - CTypesVoid._fix_class() - return CTypesVoid - - def new_primitive_type(self, name): - if name == 'wchar_t': - raise NotImplementedError(name) - ctype = self.PRIMITIVE_TYPES[name] - if name == 'char': - kind = 'char' - elif name in ('float', 'double'): - kind = 'float' - else: - if name in ('signed char', 'unsigned char'): - kind = 'byte' - elif name == '_Bool': - kind = 'bool' - else: - kind = 'int' - is_signed = (ctype(-1).value == -1) - # - def _cast_source_to_int(source): - if isinstance(source, (int, long, float)): - source = int(source) - elif isinstance(source, CTypesData): - source = source._cast_to_integer() - elif isinstance(source, bytes): - source = ord(source) - elif source is None: - source = 0 - else: - raise TypeError("bad type for cast to %r: %r" % - (CTypesPrimitive, type(source).__name__)) - return source - # - kind1 = kind - class CTypesPrimitive(CTypesGenericPrimitive): - __slots__ = ['_value'] - _ctype = ctype - _reftypename = '%s &' % name - kind = kind1 - - def __init__(self, value): - self._value = value - - @staticmethod - def _create_ctype_obj(init): - if init is None: - return ctype() - return ctype(CTypesPrimitive._to_ctypes(init)) - - if kind == 'int' or kind == 'byte': - @classmethod - def _cast_from(cls, source): - source = _cast_source_to_int(source) - source = ctype(source).value # cast within range - return cls(source) - def __int__(self): - return self._value - - if kind == 'bool': - @classmethod - def _cast_from(cls, source): - if not isinstance(source, (int, long, float)): - source = _cast_source_to_int(source) - return cls(bool(source)) - def __int__(self): - return int(self._value) - - if kind == 'char': - @classmethod - def _cast_from(cls, source): - source = _cast_source_to_int(source) - source = bytechr(source & 0xFF) - return cls(source) - def __int__(self): - return ord(self._value) - - if kind == 'float': - @classmethod - def _cast_from(cls, source): - if isinstance(source, float): - pass - elif isinstance(source, CTypesGenericPrimitive): - if hasattr(source, '__float__'): - source = float(source) - else: - source = int(source) - else: - source = _cast_source_to_int(source) - source = ctype(source).value # fix precision - return cls(source) - def __int__(self): - return int(self._value) - def __float__(self): - return self._value - - _cast_to_integer = __int__ - - if kind == 'int' or kind == 'byte' or kind == 'bool': - @staticmethod - def _to_ctypes(x): - if not isinstance(x, (int, long)): - if isinstance(x, CTypesData): - x = int(x) - else: - raise TypeError("integer expected, got %s" % - type(x).__name__) - if ctype(x).value != x: - if not is_signed and x < 0: - raise OverflowError("%s: negative integer" % name) - else: - raise OverflowError("%s: integer out of bounds" - % name) - return x - - if kind == 'char': - @staticmethod - def _to_ctypes(x): - if isinstance(x, bytes) and len(x) == 1: - return x - if isinstance(x, CTypesPrimitive): # > - return x._value - raise TypeError("character expected, got %s" % - type(x).__name__) - def __nonzero__(self): - return ord(self._value) != 0 - else: - def __nonzero__(self): - return self._value != 0 - __bool__ = __nonzero__ - - if kind == 'float': - @staticmethod - def _to_ctypes(x): - if not isinstance(x, (int, long, float, CTypesData)): - raise TypeError("float expected, got %s" % - type(x).__name__) - return ctype(x).value - - @staticmethod - def _from_ctypes(value): - return getattr(value, 'value', value) - - @staticmethod - def _initialize(blob, init): - blob.value = CTypesPrimitive._to_ctypes(init) - - if kind == 'char': - def _to_string(self, maxlen): - return self._value - if kind == 'byte': - def _to_string(self, maxlen): - return chr(self._value & 0xff) - # - CTypesPrimitive._fix_class() - return CTypesPrimitive - - def new_pointer_type(self, BItem): - getbtype = self.ffi._get_cached_btype - if BItem is getbtype(model.PrimitiveType('char')): - kind = 'charp' - elif BItem in (getbtype(model.PrimitiveType('signed char')), - getbtype(model.PrimitiveType('unsigned char'))): - kind = 'bytep' - elif BItem is getbtype(model.void_type): - kind = 'voidp' - else: - kind = 'generic' - # - class CTypesPtr(CTypesGenericPtr): - __slots__ = ['_own'] - if kind == 'charp': - __slots__ += ['__as_strbuf'] - _BItem = BItem - if hasattr(BItem, '_ctype'): - _ctype = ctypes.POINTER(BItem._ctype) - _bitem_size = ctypes.sizeof(BItem._ctype) - else: - _ctype = ctypes.c_void_p - if issubclass(BItem, CTypesGenericArray): - _reftypename = BItem._get_c_name('(* &)') - else: - _reftypename = BItem._get_c_name(' * &') - - def __init__(self, init): - ctypeobj = BItem._create_ctype_obj(init) - if kind == 'charp': - self.__as_strbuf = ctypes.create_string_buffer( - ctypeobj.value + b'\x00') - self._as_ctype_ptr = ctypes.cast( - self.__as_strbuf, self._ctype) - else: - self._as_ctype_ptr = ctypes.pointer(ctypeobj) - self._address = ctypes.cast(self._as_ctype_ptr, - ctypes.c_void_p).value - self._own = True - - def __add__(self, other): - if isinstance(other, (int, long)): - return self._new_pointer_at(self._address + - other * self._bitem_size) - else: - return NotImplemented - - def __sub__(self, other): - if isinstance(other, (int, long)): - return self._new_pointer_at(self._address - - other * self._bitem_size) - elif type(self) is type(other): - return (self._address - other._address) // self._bitem_size - else: - return NotImplemented - - def __getitem__(self, index): - if getattr(self, '_own', False) and index != 0: - raise IndexError - return BItem._from_ctypes(self._as_ctype_ptr[index]) - - def __setitem__(self, index, value): - self._as_ctype_ptr[index] = BItem._to_ctypes(value) - - if kind == 'charp' or kind == 'voidp': - @classmethod - def _arg_to_ctypes(cls, *value): - if value and isinstance(value[0], bytes): - return ctypes.c_char_p(value[0]) - else: - return super(CTypesPtr, cls)._arg_to_ctypes(*value) - - if kind == 'charp' or kind == 'bytep': - def _to_string(self, maxlen): - if maxlen < 0: - maxlen = sys.maxsize - p = ctypes.cast(self._as_ctype_ptr, - ctypes.POINTER(ctypes.c_char)) - n = 0 - while n < maxlen and p[n] != b'\x00': - n += 1 - return b''.join([p[i] for i in range(n)]) - - def _get_own_repr(self): - if getattr(self, '_own', False): - return 'owning %d bytes' % ( - ctypes.sizeof(self._as_ctype_ptr.contents),) - return super(CTypesPtr, self)._get_own_repr() - # - if (BItem is self.ffi._get_cached_btype(model.void_type) or - BItem is self.ffi._get_cached_btype(model.PrimitiveType('char'))): - CTypesPtr._automatic_casts = True - # - CTypesPtr._fix_class() - return CTypesPtr - - def new_array_type(self, CTypesPtr, length): - if length is None: - brackets = ' &[]' - else: - brackets = ' &[%d]' % length - BItem = CTypesPtr._BItem - getbtype = self.ffi._get_cached_btype - if BItem is getbtype(model.PrimitiveType('char')): - kind = 'char' - elif BItem in (getbtype(model.PrimitiveType('signed char')), - getbtype(model.PrimitiveType('unsigned char'))): - kind = 'byte' - else: - kind = 'generic' - # - class CTypesArray(CTypesGenericArray): - __slots__ = ['_blob', '_own'] - if length is not None: - _ctype = BItem._ctype * length - else: - __slots__.append('_ctype') - _reftypename = BItem._get_c_name(brackets) - _declared_length = length - _CTPtr = CTypesPtr - - def __init__(self, init): - if length is None: - if isinstance(init, (int, long)): - len1 = init - init = None - elif kind == 'char' and isinstance(init, bytes): - len1 = len(init) + 1 # extra null - else: - init = tuple(init) - len1 = len(init) - self._ctype = BItem._ctype * len1 - self._blob = self._ctype() - self._own = True - if init is not None: - self._initialize(self._blob, init) - - @staticmethod - def _initialize(blob, init): - if isinstance(init, bytes): - init = [init[i:i+1] for i in range(len(init))] - else: - if isinstance(init, CTypesGenericArray): - if (len(init) != len(blob) or - not isinstance(init, CTypesArray)): - raise TypeError("length/type mismatch: %s" % (init,)) - init = tuple(init) - if len(init) > len(blob): - raise IndexError("too many initializers") - addr = ctypes.cast(blob, ctypes.c_void_p).value - PTR = ctypes.POINTER(BItem._ctype) - itemsize = ctypes.sizeof(BItem._ctype) - for i, value in enumerate(init): - p = ctypes.cast(addr + i * itemsize, PTR) - BItem._initialize(p.contents, value) - - def __len__(self): - return len(self._blob) - - def __getitem__(self, index): - if not (0 <= index < len(self._blob)): - raise IndexError - return BItem._from_ctypes(self._blob[index]) - - def __setitem__(self, index, value): - if not (0 <= index < len(self._blob)): - raise IndexError - self._blob[index] = BItem._to_ctypes(value) - - if kind == 'char' or kind == 'byte': - def _to_string(self, maxlen): - if maxlen < 0: - maxlen = len(self._blob) - p = ctypes.cast(self._blob, - ctypes.POINTER(ctypes.c_char)) - n = 0 - while n < maxlen and p[n] != b'\x00': - n += 1 - return b''.join([p[i] for i in range(n)]) - - def _get_own_repr(self): - if getattr(self, '_own', False): - return 'owning %d bytes' % (ctypes.sizeof(self._blob),) - return super(CTypesArray, self)._get_own_repr() - - def _convert_to_address(self, BClass): - if BClass in (CTypesPtr, None) or BClass._automatic_casts: - return ctypes.addressof(self._blob) - else: - return CTypesData._convert_to_address(self, BClass) - - @staticmethod - def _from_ctypes(ctypes_array): - self = CTypesArray.__new__(CTypesArray) - self._blob = ctypes_array - return self - - @staticmethod - def _arg_to_ctypes(value): - return CTypesPtr._arg_to_ctypes(value) - - def __add__(self, other): - if isinstance(other, (int, long)): - return CTypesPtr._new_pointer_at( - ctypes.addressof(self._blob) + - other * ctypes.sizeof(BItem._ctype)) - else: - return NotImplemented - - @classmethod - def _cast_from(cls, source): - raise NotImplementedError("casting to %r" % ( - cls._get_c_name(),)) - # - CTypesArray._fix_class() - return CTypesArray - - def _new_struct_or_union(self, kind, name, base_ctypes_class): - # - class struct_or_union(base_ctypes_class): - pass - struct_or_union.__name__ = '%s_%s' % (kind, name) - kind1 = kind - # - class CTypesStructOrUnion(CTypesBaseStructOrUnion): - __slots__ = ['_blob'] - _ctype = struct_or_union - _reftypename = '%s &' % (name,) - _kind = kind = kind1 - # - CTypesStructOrUnion._fix_class() - return CTypesStructOrUnion - - def new_struct_type(self, name): - return self._new_struct_or_union('struct', name, ctypes.Structure) - - def new_union_type(self, name): - return self._new_struct_or_union('union', name, ctypes.Union) - - def complete_struct_or_union(self, CTypesStructOrUnion, fields, tp, - totalsize=-1, totalalignment=-1, sflags=0, - pack=0): - if totalsize >= 0 or totalalignment >= 0: - raise NotImplementedError("the ctypes backend of CFFI does not support " - "structures completed by verify(); please " - "compile and install the _cffi_backend module.") - struct_or_union = CTypesStructOrUnion._ctype - fnames = [fname for (fname, BField, bitsize) in fields] - btypes = [BField for (fname, BField, bitsize) in fields] - bitfields = [bitsize for (fname, BField, bitsize) in fields] - # - bfield_types = {} - cfields = [] - for (fname, BField, bitsize) in fields: - if bitsize < 0: - cfields.append((fname, BField._ctype)) - bfield_types[fname] = BField - else: - cfields.append((fname, BField._ctype, bitsize)) - bfield_types[fname] = Ellipsis - if sflags & 8: - struct_or_union._pack_ = 1 - elif pack: - struct_or_union._pack_ = pack - struct_or_union._fields_ = cfields - CTypesStructOrUnion._bfield_types = bfield_types - # - @staticmethod - def _create_ctype_obj(init): - result = struct_or_union() - if init is not None: - initialize(result, init) - return result - CTypesStructOrUnion._create_ctype_obj = _create_ctype_obj - # - def initialize(blob, init): - if is_union: - if len(init) > 1: - raise ValueError("union initializer: %d items given, but " - "only one supported (use a dict if needed)" - % (len(init),)) - if not isinstance(init, dict): - if isinstance(init, (bytes, unicode)): - raise TypeError("union initializer: got a str") - init = tuple(init) - if len(init) > len(fnames): - raise ValueError("too many values for %s initializer" % - CTypesStructOrUnion._get_c_name()) - init = dict(zip(fnames, init)) - addr = ctypes.addressof(blob) - for fname, value in init.items(): - BField, bitsize = name2fieldtype[fname] - assert bitsize < 0, \ - "not implemented: initializer with bit fields" - offset = CTypesStructOrUnion._offsetof(fname) - PTR = ctypes.POINTER(BField._ctype) - p = ctypes.cast(addr + offset, PTR) - BField._initialize(p.contents, value) - is_union = CTypesStructOrUnion._kind == 'union' - name2fieldtype = dict(zip(fnames, zip(btypes, bitfields))) - # - for fname, BField, bitsize in fields: - if fname == '': - raise NotImplementedError("nested anonymous structs/unions") - if hasattr(CTypesStructOrUnion, fname): - raise ValueError("the field name %r conflicts in " - "the ctypes backend" % fname) - if bitsize < 0: - def getter(self, fname=fname, BField=BField, - offset=CTypesStructOrUnion._offsetof(fname), - PTR=ctypes.POINTER(BField._ctype)): - addr = ctypes.addressof(self._blob) - p = ctypes.cast(addr + offset, PTR) - return BField._from_ctypes(p.contents) - def setter(self, value, fname=fname, BField=BField): - setattr(self._blob, fname, BField._to_ctypes(value)) - # - if issubclass(BField, CTypesGenericArray): - setter = None - if BField._declared_length == 0: - def getter(self, fname=fname, BFieldPtr=BField._CTPtr, - offset=CTypesStructOrUnion._offsetof(fname), - PTR=ctypes.POINTER(BField._ctype)): - addr = ctypes.addressof(self._blob) - p = ctypes.cast(addr + offset, PTR) - return BFieldPtr._from_ctypes(p) - # - else: - def getter(self, fname=fname, BField=BField): - return BField._from_ctypes(getattr(self._blob, fname)) - def setter(self, value, fname=fname, BField=BField): - # xxx obscure workaround - value = BField._to_ctypes(value) - oldvalue = getattr(self._blob, fname) - setattr(self._blob, fname, value) - if value != getattr(self._blob, fname): - setattr(self._blob, fname, oldvalue) - raise OverflowError("value too large for bitfield") - setattr(CTypesStructOrUnion, fname, property(getter, setter)) - # - CTypesPtr = self.ffi._get_cached_btype(model.PointerType(tp)) - for fname in fnames: - if hasattr(CTypesPtr, fname): - raise ValueError("the field name %r conflicts in " - "the ctypes backend" % fname) - def getter(self, fname=fname): - return getattr(self[0], fname) - def setter(self, value, fname=fname): - setattr(self[0], fname, value) - setattr(CTypesPtr, fname, property(getter, setter)) - - def new_function_type(self, BArgs, BResult, has_varargs): - nameargs = [BArg._get_c_name() for BArg in BArgs] - if has_varargs: - nameargs.append('...') - nameargs = ', '.join(nameargs) - # - class CTypesFunctionPtr(CTypesGenericPtr): - __slots__ = ['_own_callback', '_name'] - _ctype = ctypes.CFUNCTYPE(getattr(BResult, '_ctype', None), - *[BArg._ctype for BArg in BArgs], - use_errno=True) - _reftypename = BResult._get_c_name('(* &)(%s)' % (nameargs,)) - - def __init__(self, init, error=None): - # create a callback to the Python callable init() - import traceback - assert not has_varargs, "varargs not supported for callbacks" - if getattr(BResult, '_ctype', None) is not None: - error = BResult._from_ctypes( - BResult._create_ctype_obj(error)) - else: - error = None - def callback(*args): - args2 = [] - for arg, BArg in zip(args, BArgs): - args2.append(BArg._from_ctypes(arg)) - try: - res2 = init(*args2) - res2 = BResult._to_ctypes(res2) - except: - traceback.print_exc() - res2 = error - if issubclass(BResult, CTypesGenericPtr): - if res2: - res2 = ctypes.cast(res2, ctypes.c_void_p).value - # .value: http://bugs.python.org/issue1574593 - else: - res2 = None - #print repr(res2) - return res2 - if issubclass(BResult, CTypesGenericPtr): - # The only pointers callbacks can return are void*s: - # http://bugs.python.org/issue5710 - callback_ctype = ctypes.CFUNCTYPE( - ctypes.c_void_p, - *[BArg._ctype for BArg in BArgs], - use_errno=True) - else: - callback_ctype = CTypesFunctionPtr._ctype - self._as_ctype_ptr = callback_ctype(callback) - self._address = ctypes.cast(self._as_ctype_ptr, - ctypes.c_void_p).value - self._own_callback = init - - @staticmethod - def _initialize(ctypes_ptr, value): - if value: - raise NotImplementedError("ctypes backend: not supported: " - "initializers for function pointers") - - def __repr__(self): - c_name = getattr(self, '_name', None) - if c_name: - i = self._reftypename.index('(* &)') - if self._reftypename[i-1] not in ' )*': - c_name = ' ' + c_name - c_name = self._reftypename.replace('(* &)', c_name) - return CTypesData.__repr__(self, c_name) - - def _get_own_repr(self): - if getattr(self, '_own_callback', None) is not None: - return 'calling %r' % (self._own_callback,) - return super(CTypesFunctionPtr, self)._get_own_repr() - - def __call__(self, *args): - if has_varargs: - assert len(args) >= len(BArgs) - extraargs = args[len(BArgs):] - args = args[:len(BArgs)] - else: - assert len(args) == len(BArgs) - ctypes_args = [] - for arg, BArg in zip(args, BArgs): - ctypes_args.append(BArg._arg_to_ctypes(arg)) - if has_varargs: - for i, arg in enumerate(extraargs): - if arg is None: - ctypes_args.append(ctypes.c_void_p(0)) # NULL - continue - if not isinstance(arg, CTypesData): - raise TypeError( - "argument %d passed in the variadic part " - "needs to be a cdata object (got %s)" % - (1 + len(BArgs) + i, type(arg).__name__)) - ctypes_args.append(arg._arg_to_ctypes(arg)) - result = self._as_ctype_ptr(*ctypes_args) - return BResult._from_ctypes(result) - # - CTypesFunctionPtr._fix_class() - return CTypesFunctionPtr - - def new_enum_type(self, name, enumerators, enumvalues, CTypesInt): - assert isinstance(name, str) - reverse_mapping = dict(zip(reversed(enumvalues), - reversed(enumerators))) - # - class CTypesEnum(CTypesInt): - __slots__ = [] - _reftypename = '%s &' % name - - def _get_own_repr(self): - value = self._value - try: - return '%d: %s' % (value, reverse_mapping[value]) - except KeyError: - return str(value) - - def _to_string(self, maxlen): - value = self._value - try: - return reverse_mapping[value] - except KeyError: - return str(value) - # - CTypesEnum._fix_class() - return CTypesEnum - - def get_errno(self): - return ctypes.get_errno() - - def set_errno(self, value): - ctypes.set_errno(value) - - def string(self, b, maxlen=-1): - return b._to_string(maxlen) - - def buffer(self, bptr, size=-1): - raise NotImplementedError("buffer() with ctypes backend") - - def sizeof(self, cdata_or_BType): - if isinstance(cdata_or_BType, CTypesData): - return cdata_or_BType._get_size_of_instance() - else: - assert issubclass(cdata_or_BType, CTypesData) - return cdata_or_BType._get_size() - - def alignof(self, BType): - assert issubclass(BType, CTypesData) - return BType._alignment() - - def newp(self, BType, source): - if not issubclass(BType, CTypesData): - raise TypeError - return BType._newp(source) - - def cast(self, BType, source): - return BType._cast_from(source) - - def callback(self, BType, source, error, onerror): - assert onerror is None # XXX not implemented - return BType(source, error) - - _weakref_cache_ref = None - - def gcp(self, cdata, destructor, size=0): - if self._weakref_cache_ref is None: - import weakref - class MyRef(weakref.ref): - def __eq__(self, other): - myref = self() - return self is other or ( - myref is not None and myref is other()) - def __ne__(self, other): - return not (self == other) - def __hash__(self): - try: - return self._hash - except AttributeError: - self._hash = hash(self()) - return self._hash - self._weakref_cache_ref = {}, MyRef - weak_cache, MyRef = self._weakref_cache_ref - - if destructor is None: - try: - del weak_cache[MyRef(cdata)] - except KeyError: - raise TypeError("Can remove destructor only on a object " - "previously returned by ffi.gc()") - return None - - def remove(k): - cdata, destructor = weak_cache.pop(k, (None, None)) - if destructor is not None: - destructor(cdata) - - new_cdata = self.cast(self.typeof(cdata), cdata) - assert new_cdata is not cdata - weak_cache[MyRef(new_cdata, remove)] = (cdata, destructor) - return new_cdata - - typeof = type - - def getcname(self, BType, replace_with): - return BType._get_c_name(replace_with) - - def typeoffsetof(self, BType, fieldname, num=0): - if isinstance(fieldname, str): - if num == 0 and issubclass(BType, CTypesGenericPtr): - BType = BType._BItem - if not issubclass(BType, CTypesBaseStructOrUnion): - raise TypeError("expected a struct or union ctype") - BField = BType._bfield_types[fieldname] - if BField is Ellipsis: - raise TypeError("not supported for bitfields") - return (BField, BType._offsetof(fieldname)) - elif isinstance(fieldname, (int, long)): - if issubclass(BType, CTypesGenericArray): - BType = BType._CTPtr - if not issubclass(BType, CTypesGenericPtr): - raise TypeError("expected an array or ptr ctype") - BItem = BType._BItem - offset = BItem._get_size() * fieldname - if offset > sys.maxsize: - raise OverflowError - return (BItem, offset) - else: - raise TypeError(type(fieldname)) - - def rawaddressof(self, BTypePtr, cdata, offset=None): - if isinstance(cdata, CTypesBaseStructOrUnion): - ptr = ctypes.pointer(type(cdata)._to_ctypes(cdata)) - elif isinstance(cdata, CTypesGenericPtr): - if offset is None or not issubclass(type(cdata)._BItem, - CTypesBaseStructOrUnion): - raise TypeError("unexpected cdata type") - ptr = type(cdata)._to_ctypes(cdata) - elif isinstance(cdata, CTypesGenericArray): - ptr = type(cdata)._to_ctypes(cdata) - else: - raise TypeError("expected a ") - if offset: - ptr = ctypes.cast( - ctypes.c_void_p( - ctypes.cast(ptr, ctypes.c_void_p).value + offset), - type(ptr)) - return BTypePtr._from_ctypes(ptr) - - -class CTypesLibrary(object): - - def __init__(self, backend, cdll): - self.backend = backend - self.cdll = cdll - - def load_function(self, BType, name): - c_func = getattr(self.cdll, name) - funcobj = BType._from_ctypes(c_func) - funcobj._name = name - return funcobj - - def read_variable(self, BType, name): - try: - ctypes_obj = BType._ctype.in_dll(self.cdll, name) - except AttributeError as e: - raise NotImplementedError(e) - return BType._from_ctypes(ctypes_obj) - - def write_variable(self, BType, name, value): - new_ctypes_obj = BType._to_ctypes(value) - ctypes_obj = BType._ctype.in_dll(self.cdll, name) - ctypes.memmove(ctypes.addressof(ctypes_obj), - ctypes.addressof(new_ctypes_obj), - ctypes.sizeof(BType._ctype)) diff --git a/venv/lib/python3.12/site-packages/cffi/cffi_opcode.py b/venv/lib/python3.12/site-packages/cffi/cffi_opcode.py deleted file mode 100644 index 6421df6..0000000 --- a/venv/lib/python3.12/site-packages/cffi/cffi_opcode.py +++ /dev/null @@ -1,187 +0,0 @@ -from .error import VerificationError - -class CffiOp(object): - def __init__(self, op, arg): - self.op = op - self.arg = arg - - def as_c_expr(self): - if self.op is None: - assert isinstance(self.arg, str) - return '(_cffi_opcode_t)(%s)' % (self.arg,) - classname = CLASS_NAME[self.op] - return '_CFFI_OP(_CFFI_OP_%s, %s)' % (classname, self.arg) - - def as_python_bytes(self): - if self.op is None and self.arg.isdigit(): - value = int(self.arg) # non-negative: '-' not in self.arg - if value >= 2**31: - raise OverflowError("cannot emit %r: limited to 2**31-1" - % (self.arg,)) - return format_four_bytes(value) - if isinstance(self.arg, str): - raise VerificationError("cannot emit to Python: %r" % (self.arg,)) - return format_four_bytes((self.arg << 8) | self.op) - - def __str__(self): - classname = CLASS_NAME.get(self.op, self.op) - return '(%s %s)' % (classname, self.arg) - -def format_four_bytes(num): - return '\\x%02X\\x%02X\\x%02X\\x%02X' % ( - (num >> 24) & 0xFF, - (num >> 16) & 0xFF, - (num >> 8) & 0xFF, - (num ) & 0xFF) - -OP_PRIMITIVE = 1 -OP_POINTER = 3 -OP_ARRAY = 5 -OP_OPEN_ARRAY = 7 -OP_STRUCT_UNION = 9 -OP_ENUM = 11 -OP_FUNCTION = 13 -OP_FUNCTION_END = 15 -OP_NOOP = 17 -OP_BITFIELD = 19 -OP_TYPENAME = 21 -OP_CPYTHON_BLTN_V = 23 # varargs -OP_CPYTHON_BLTN_N = 25 # noargs -OP_CPYTHON_BLTN_O = 27 # O (i.e. a single arg) -OP_CONSTANT = 29 -OP_CONSTANT_INT = 31 -OP_GLOBAL_VAR = 33 -OP_DLOPEN_FUNC = 35 -OP_DLOPEN_CONST = 37 -OP_GLOBAL_VAR_F = 39 -OP_EXTERN_PYTHON = 41 - -PRIM_VOID = 0 -PRIM_BOOL = 1 -PRIM_CHAR = 2 -PRIM_SCHAR = 3 -PRIM_UCHAR = 4 -PRIM_SHORT = 5 -PRIM_USHORT = 6 -PRIM_INT = 7 -PRIM_UINT = 8 -PRIM_LONG = 9 -PRIM_ULONG = 10 -PRIM_LONGLONG = 11 -PRIM_ULONGLONG = 12 -PRIM_FLOAT = 13 -PRIM_DOUBLE = 14 -PRIM_LONGDOUBLE = 15 - -PRIM_WCHAR = 16 -PRIM_INT8 = 17 -PRIM_UINT8 = 18 -PRIM_INT16 = 19 -PRIM_UINT16 = 20 -PRIM_INT32 = 21 -PRIM_UINT32 = 22 -PRIM_INT64 = 23 -PRIM_UINT64 = 24 -PRIM_INTPTR = 25 -PRIM_UINTPTR = 26 -PRIM_PTRDIFF = 27 -PRIM_SIZE = 28 -PRIM_SSIZE = 29 -PRIM_INT_LEAST8 = 30 -PRIM_UINT_LEAST8 = 31 -PRIM_INT_LEAST16 = 32 -PRIM_UINT_LEAST16 = 33 -PRIM_INT_LEAST32 = 34 -PRIM_UINT_LEAST32 = 35 -PRIM_INT_LEAST64 = 36 -PRIM_UINT_LEAST64 = 37 -PRIM_INT_FAST8 = 38 -PRIM_UINT_FAST8 = 39 -PRIM_INT_FAST16 = 40 -PRIM_UINT_FAST16 = 41 -PRIM_INT_FAST32 = 42 -PRIM_UINT_FAST32 = 43 -PRIM_INT_FAST64 = 44 -PRIM_UINT_FAST64 = 45 -PRIM_INTMAX = 46 -PRIM_UINTMAX = 47 -PRIM_FLOATCOMPLEX = 48 -PRIM_DOUBLECOMPLEX = 49 -PRIM_CHAR16 = 50 -PRIM_CHAR32 = 51 - -_NUM_PRIM = 52 -_UNKNOWN_PRIM = -1 -_UNKNOWN_FLOAT_PRIM = -2 -_UNKNOWN_LONG_DOUBLE = -3 - -_IO_FILE_STRUCT = -1 - -PRIMITIVE_TO_INDEX = { - 'char': PRIM_CHAR, - 'short': PRIM_SHORT, - 'int': PRIM_INT, - 'long': PRIM_LONG, - 'long long': PRIM_LONGLONG, - 'signed char': PRIM_SCHAR, - 'unsigned char': PRIM_UCHAR, - 'unsigned short': PRIM_USHORT, - 'unsigned int': PRIM_UINT, - 'unsigned long': PRIM_ULONG, - 'unsigned long long': PRIM_ULONGLONG, - 'float': PRIM_FLOAT, - 'double': PRIM_DOUBLE, - 'long double': PRIM_LONGDOUBLE, - '_cffi_float_complex_t': PRIM_FLOATCOMPLEX, - '_cffi_double_complex_t': PRIM_DOUBLECOMPLEX, - '_Bool': PRIM_BOOL, - 'wchar_t': PRIM_WCHAR, - 'char16_t': PRIM_CHAR16, - 'char32_t': PRIM_CHAR32, - 'int8_t': PRIM_INT8, - 'uint8_t': PRIM_UINT8, - 'int16_t': PRIM_INT16, - 'uint16_t': PRIM_UINT16, - 'int32_t': PRIM_INT32, - 'uint32_t': PRIM_UINT32, - 'int64_t': PRIM_INT64, - 'uint64_t': PRIM_UINT64, - 'intptr_t': PRIM_INTPTR, - 'uintptr_t': PRIM_UINTPTR, - 'ptrdiff_t': PRIM_PTRDIFF, - 'size_t': PRIM_SIZE, - 'ssize_t': PRIM_SSIZE, - 'int_least8_t': PRIM_INT_LEAST8, - 'uint_least8_t': PRIM_UINT_LEAST8, - 'int_least16_t': PRIM_INT_LEAST16, - 'uint_least16_t': PRIM_UINT_LEAST16, - 'int_least32_t': PRIM_INT_LEAST32, - 'uint_least32_t': PRIM_UINT_LEAST32, - 'int_least64_t': PRIM_INT_LEAST64, - 'uint_least64_t': PRIM_UINT_LEAST64, - 'int_fast8_t': PRIM_INT_FAST8, - 'uint_fast8_t': PRIM_UINT_FAST8, - 'int_fast16_t': PRIM_INT_FAST16, - 'uint_fast16_t': PRIM_UINT_FAST16, - 'int_fast32_t': PRIM_INT_FAST32, - 'uint_fast32_t': PRIM_UINT_FAST32, - 'int_fast64_t': PRIM_INT_FAST64, - 'uint_fast64_t': PRIM_UINT_FAST64, - 'intmax_t': PRIM_INTMAX, - 'uintmax_t': PRIM_UINTMAX, - } - -F_UNION = 0x01 -F_CHECK_FIELDS = 0x02 -F_PACKED = 0x04 -F_EXTERNAL = 0x08 -F_OPAQUE = 0x10 - -G_FLAGS = dict([('_CFFI_' + _key, globals()[_key]) - for _key in ['F_UNION', 'F_CHECK_FIELDS', 'F_PACKED', - 'F_EXTERNAL', 'F_OPAQUE']]) - -CLASS_NAME = {} -for _name, _value in list(globals().items()): - if _name.startswith('OP_') and isinstance(_value, int): - CLASS_NAME[_value] = _name[3:] diff --git a/venv/lib/python3.12/site-packages/cffi/commontypes.py b/venv/lib/python3.12/site-packages/cffi/commontypes.py deleted file mode 100644 index d4dae35..0000000 --- a/venv/lib/python3.12/site-packages/cffi/commontypes.py +++ /dev/null @@ -1,82 +0,0 @@ -import sys -from . import model -from .error import FFIError - - -COMMON_TYPES = {} - -try: - # fetch "bool" and all simple Windows types - from _cffi_backend import _get_common_types - _get_common_types(COMMON_TYPES) -except ImportError: - pass - -COMMON_TYPES['FILE'] = model.unknown_type('FILE', '_IO_FILE') -COMMON_TYPES['bool'] = '_Bool' # in case we got ImportError above -COMMON_TYPES['float _Complex'] = '_cffi_float_complex_t' -COMMON_TYPES['double _Complex'] = '_cffi_double_complex_t' - -for _type in model.PrimitiveType.ALL_PRIMITIVE_TYPES: - if _type.endswith('_t'): - COMMON_TYPES[_type] = _type -del _type - -_CACHE = {} - -def resolve_common_type(parser, commontype): - try: - return _CACHE[commontype] - except KeyError: - cdecl = COMMON_TYPES.get(commontype, commontype) - if not isinstance(cdecl, str): - result, quals = cdecl, 0 # cdecl is already a BaseType - elif cdecl in model.PrimitiveType.ALL_PRIMITIVE_TYPES: - result, quals = model.PrimitiveType(cdecl), 0 - elif cdecl == 'set-unicode-needed': - raise FFIError("The Windows type %r is only available after " - "you call ffi.set_unicode()" % (commontype,)) - else: - if commontype == cdecl: - raise FFIError( - "Unsupported type: %r. Please look at " - "http://cffi.readthedocs.io/en/latest/cdef.html#ffi-cdef-limitations " - "and file an issue if you think this type should really " - "be supported." % (commontype,)) - result, quals = parser.parse_type_and_quals(cdecl) # recursive - - assert isinstance(result, model.BaseTypeByIdentity) - _CACHE[commontype] = result, quals - return result, quals - - -# ____________________________________________________________ -# extra types for Windows (most of them are in commontypes.c) - - -def win_common_types(): - return { - "UNICODE_STRING": model.StructType( - "_UNICODE_STRING", - ["Length", - "MaximumLength", - "Buffer"], - [model.PrimitiveType("unsigned short"), - model.PrimitiveType("unsigned short"), - model.PointerType(model.PrimitiveType("wchar_t"))], - [-1, -1, -1]), - "PUNICODE_STRING": "UNICODE_STRING *", - "PCUNICODE_STRING": "const UNICODE_STRING *", - - "TBYTE": "set-unicode-needed", - "TCHAR": "set-unicode-needed", - "LPCTSTR": "set-unicode-needed", - "PCTSTR": "set-unicode-needed", - "LPTSTR": "set-unicode-needed", - "PTSTR": "set-unicode-needed", - "PTBYTE": "set-unicode-needed", - "PTCHAR": "set-unicode-needed", - } - -if sys.platform == 'win32': - COMMON_TYPES.update(win_common_types()) diff --git a/venv/lib/python3.12/site-packages/cffi/cparser.py b/venv/lib/python3.12/site-packages/cffi/cparser.py deleted file mode 100644 index eee83ca..0000000 --- a/venv/lib/python3.12/site-packages/cffi/cparser.py +++ /dev/null @@ -1,1015 +0,0 @@ -from . import model -from .commontypes import COMMON_TYPES, resolve_common_type -from .error import FFIError, CDefError -try: - from . import _pycparser as pycparser -except ImportError: - import pycparser -import weakref, re, sys - -try: - if sys.version_info < (3,): - import thread as _thread - else: - import _thread - lock = _thread.allocate_lock() -except ImportError: - lock = None - -def _workaround_for_static_import_finders(): - # Issue #392: packaging tools like cx_Freeze can not find these - # because pycparser uses exec dynamic import. This is an obscure - # workaround. This function is never called. - import pycparser.yacctab - import pycparser.lextab - -CDEF_SOURCE_STRING = "" -_r_comment = re.compile(r"/\*.*?\*/|//([^\n\\]|\\.)*?$", - re.DOTALL | re.MULTILINE) -_r_define = re.compile(r"^\s*#\s*define\s+([A-Za-z_][A-Za-z_0-9]*)" - r"\b((?:[^\n\\]|\\.)*?)$", - re.DOTALL | re.MULTILINE) -_r_line_directive = re.compile(r"^[ \t]*#[ \t]*(?:line|\d+)\b.*$", re.MULTILINE) -_r_partial_enum = re.compile(r"=\s*\.\.\.\s*[,}]|\.\.\.\s*\}") -_r_enum_dotdotdot = re.compile(r"__dotdotdot\d+__$") -_r_partial_array = re.compile(r"\[\s*\.\.\.\s*\]") -_r_words = re.compile(r"\w+|\S") -_parser_cache = None -_r_int_literal = re.compile(r"-?0?x?[0-9a-f]+[lu]*$", re.IGNORECASE) -_r_stdcall1 = re.compile(r"\b(__stdcall|WINAPI)\b") -_r_stdcall2 = re.compile(r"[(]\s*(__stdcall|WINAPI)\b") -_r_cdecl = re.compile(r"\b__cdecl\b") -_r_extern_python = re.compile(r'\bextern\s*"' - r'(Python|Python\s*\+\s*C|C\s*\+\s*Python)"\s*.') -_r_star_const_space = re.compile( # matches "* const " - r"[*]\s*((const|volatile|restrict)\b\s*)+") -_r_int_dotdotdot = re.compile(r"(\b(int|long|short|signed|unsigned|char)\s*)+" - r"\.\.\.") -_r_float_dotdotdot = re.compile(r"\b(double|float)\s*\.\.\.") - -def _get_parser(): - global _parser_cache - if _parser_cache is None: - _parser_cache = pycparser.CParser() - return _parser_cache - -def _workaround_for_old_pycparser(csource): - # Workaround for a pycparser issue (fixed between pycparser 2.10 and - # 2.14): "char*const***" gives us a wrong syntax tree, the same as - # for "char***(*const)". This means we can't tell the difference - # afterwards. But "char(*const(***))" gives us the right syntax - # tree. The issue only occurs if there are several stars in - # sequence with no parenthesis inbetween, just possibly qualifiers. - # Attempt to fix it by adding some parentheses in the source: each - # time we see "* const" or "* const *", we add an opening - # parenthesis before each star---the hard part is figuring out where - # to close them. - parts = [] - while True: - match = _r_star_const_space.search(csource) - if not match: - break - #print repr(''.join(parts)+csource), '=>', - parts.append(csource[:match.start()]) - parts.append('('); closing = ')' - parts.append(match.group()) # e.g. "* const " - endpos = match.end() - if csource.startswith('*', endpos): - parts.append('('); closing += ')' - level = 0 - i = endpos - while i < len(csource): - c = csource[i] - if c == '(': - level += 1 - elif c == ')': - if level == 0: - break - level -= 1 - elif c in ',;=': - if level == 0: - break - i += 1 - csource = csource[endpos:i] + closing + csource[i:] - #print repr(''.join(parts)+csource) - parts.append(csource) - return ''.join(parts) - -def _preprocess_extern_python(csource): - # input: `extern "Python" int foo(int);` or - # `extern "Python" { int foo(int); }` - # output: - # void __cffi_extern_python_start; - # int foo(int); - # void __cffi_extern_python_stop; - # - # input: `extern "Python+C" int foo(int);` - # output: - # void __cffi_extern_python_plus_c_start; - # int foo(int); - # void __cffi_extern_python_stop; - parts = [] - while True: - match = _r_extern_python.search(csource) - if not match: - break - endpos = match.end() - 1 - #print - #print ''.join(parts)+csource - #print '=>' - parts.append(csource[:match.start()]) - if 'C' in match.group(1): - parts.append('void __cffi_extern_python_plus_c_start; ') - else: - parts.append('void __cffi_extern_python_start; ') - if csource[endpos] == '{': - # grouping variant - closing = csource.find('}', endpos) - if closing < 0: - raise CDefError("'extern \"Python\" {': no '}' found") - if csource.find('{', endpos + 1, closing) >= 0: - raise NotImplementedError("cannot use { } inside a block " - "'extern \"Python\" { ... }'") - parts.append(csource[endpos+1:closing]) - csource = csource[closing+1:] - else: - # non-grouping variant - semicolon = csource.find(';', endpos) - if semicolon < 0: - raise CDefError("'extern \"Python\": no ';' found") - parts.append(csource[endpos:semicolon+1]) - csource = csource[semicolon+1:] - parts.append(' void __cffi_extern_python_stop;') - #print ''.join(parts)+csource - #print - parts.append(csource) - return ''.join(parts) - -def _warn_for_string_literal(csource): - if '"' not in csource: - return - for line in csource.splitlines(): - if '"' in line and not line.lstrip().startswith('#'): - import warnings - warnings.warn("String literal found in cdef() or type source. " - "String literals are ignored here, but you should " - "remove them anyway because some character sequences " - "confuse pre-parsing.") - break - -def _warn_for_non_extern_non_static_global_variable(decl): - if not decl.storage: - import warnings - warnings.warn("Global variable '%s' in cdef(): for consistency " - "with C it should have a storage class specifier " - "(usually 'extern')" % (decl.name,)) - -def _remove_line_directives(csource): - # _r_line_directive matches whole lines, without the final \n, if they - # start with '#line' with some spacing allowed, or '#NUMBER'. This - # function stores them away and replaces them with exactly the string - # '#line@N', where N is the index in the list 'line_directives'. - line_directives = [] - def replace(m): - i = len(line_directives) - line_directives.append(m.group()) - return '#line@%d' % i - csource = _r_line_directive.sub(replace, csource) - return csource, line_directives - -def _put_back_line_directives(csource, line_directives): - def replace(m): - s = m.group() - if not s.startswith('#line@'): - raise AssertionError("unexpected #line directive " - "(should have been processed and removed") - return line_directives[int(s[6:])] - return _r_line_directive.sub(replace, csource) - -def _preprocess(csource): - # First, remove the lines of the form '#line N "filename"' because - # the "filename" part could confuse the rest - csource, line_directives = _remove_line_directives(csource) - # Remove comments. NOTE: this only work because the cdef() section - # should not contain any string literals (except in line directives)! - def replace_keeping_newlines(m): - return ' ' + m.group().count('\n') * '\n' - csource = _r_comment.sub(replace_keeping_newlines, csource) - # Remove the "#define FOO x" lines - macros = {} - for match in _r_define.finditer(csource): - macroname, macrovalue = match.groups() - macrovalue = macrovalue.replace('\\\n', '').strip() - macros[macroname] = macrovalue - csource = _r_define.sub('', csource) - # - if pycparser.__version__ < '2.14': - csource = _workaround_for_old_pycparser(csource) - # - # BIG HACK: replace WINAPI or __stdcall with "volatile const". - # It doesn't make sense for the return type of a function to be - # "volatile volatile const", so we abuse it to detect __stdcall... - # Hack number 2 is that "int(volatile *fptr)();" is not valid C - # syntax, so we place the "volatile" before the opening parenthesis. - csource = _r_stdcall2.sub(' volatile volatile const(', csource) - csource = _r_stdcall1.sub(' volatile volatile const ', csource) - csource = _r_cdecl.sub(' ', csource) - # - # Replace `extern "Python"` with start/end markers - csource = _preprocess_extern_python(csource) - # - # Now there should not be any string literal left; warn if we get one - _warn_for_string_literal(csource) - # - # Replace "[...]" with "[__dotdotdotarray__]" - csource = _r_partial_array.sub('[__dotdotdotarray__]', csource) - # - # Replace "...}" with "__dotdotdotNUM__}". This construction should - # occur only at the end of enums; at the end of structs we have "...;}" - # and at the end of vararg functions "...);". Also replace "=...[,}]" - # with ",__dotdotdotNUM__[,}]": this occurs in the enums too, when - # giving an unknown value. - matches = list(_r_partial_enum.finditer(csource)) - for number, match in enumerate(reversed(matches)): - p = match.start() - if csource[p] == '=': - p2 = csource.find('...', p, match.end()) - assert p2 > p - csource = '%s,__dotdotdot%d__ %s' % (csource[:p], number, - csource[p2+3:]) - else: - assert csource[p:p+3] == '...' - csource = '%s __dotdotdot%d__ %s' % (csource[:p], number, - csource[p+3:]) - # Replace "int ..." or "unsigned long int..." with "__dotdotdotint__" - csource = _r_int_dotdotdot.sub(' __dotdotdotint__ ', csource) - # Replace "float ..." or "double..." with "__dotdotdotfloat__" - csource = _r_float_dotdotdot.sub(' __dotdotdotfloat__ ', csource) - # Replace all remaining "..." with the same name, "__dotdotdot__", - # which is declared with a typedef for the purpose of C parsing. - csource = csource.replace('...', ' __dotdotdot__ ') - # Finally, put back the line directives - csource = _put_back_line_directives(csource, line_directives) - return csource, macros - -def _common_type_names(csource): - # Look in the source for what looks like usages of types from the - # list of common types. A "usage" is approximated here as the - # appearance of the word, minus a "definition" of the type, which - # is the last word in a "typedef" statement. Approximative only - # but should be fine for all the common types. - look_for_words = set(COMMON_TYPES) - look_for_words.add(';') - look_for_words.add(',') - look_for_words.add('(') - look_for_words.add(')') - look_for_words.add('typedef') - words_used = set() - is_typedef = False - paren = 0 - previous_word = '' - for word in _r_words.findall(csource): - if word in look_for_words: - if word == ';': - if is_typedef: - words_used.discard(previous_word) - look_for_words.discard(previous_word) - is_typedef = False - elif word == 'typedef': - is_typedef = True - paren = 0 - elif word == '(': - paren += 1 - elif word == ')': - paren -= 1 - elif word == ',': - if is_typedef and paren == 0: - words_used.discard(previous_word) - look_for_words.discard(previous_word) - else: # word in COMMON_TYPES - words_used.add(word) - previous_word = word - return words_used - - -class Parser(object): - - def __init__(self): - self._declarations = {} - self._included_declarations = set() - self._anonymous_counter = 0 - self._structnode2type = weakref.WeakKeyDictionary() - self._options = {} - self._int_constants = {} - self._recomplete = [] - self._uses_new_feature = None - - def _parse(self, csource): - csource, macros = _preprocess(csource) - # XXX: for more efficiency we would need to poke into the - # internals of CParser... the following registers the - # typedefs, because their presence or absence influences the - # parsing itself (but what they are typedef'ed to plays no role) - ctn = _common_type_names(csource) - typenames = [] - for name in sorted(self._declarations): - if name.startswith('typedef '): - name = name[8:] - typenames.append(name) - ctn.discard(name) - typenames += sorted(ctn) - # - csourcelines = [] - csourcelines.append('# 1 ""') - for typename in typenames: - csourcelines.append('typedef int %s;' % typename) - csourcelines.append('typedef int __dotdotdotint__, __dotdotdotfloat__,' - ' __dotdotdot__;') - # this forces pycparser to consider the following in the file - # called from line 1 - csourcelines.append('# 1 "%s"' % (CDEF_SOURCE_STRING,)) - csourcelines.append(csource) - csourcelines.append('') # see test_missing_newline_bug - fullcsource = '\n'.join(csourcelines) - if lock is not None: - lock.acquire() # pycparser is not thread-safe... - try: - ast = _get_parser().parse(fullcsource) - except pycparser.c_parser.ParseError as e: - self.convert_pycparser_error(e, csource) - finally: - if lock is not None: - lock.release() - # csource will be used to find buggy source text - return ast, macros, csource - - def _convert_pycparser_error(self, e, csource): - # xxx look for ":NUM:" at the start of str(e) - # and interpret that as a line number. This will not work if - # the user gives explicit ``# NUM "FILE"`` directives. - line = None - msg = str(e) - match = re.match(r"%s:(\d+):" % (CDEF_SOURCE_STRING,), msg) - if match: - linenum = int(match.group(1), 10) - csourcelines = csource.splitlines() - if 1 <= linenum <= len(csourcelines): - line = csourcelines[linenum-1] - return line - - def convert_pycparser_error(self, e, csource): - line = self._convert_pycparser_error(e, csource) - - msg = str(e) - if line: - msg = 'cannot parse "%s"\n%s' % (line.strip(), msg) - else: - msg = 'parse error\n%s' % (msg,) - raise CDefError(msg) - - def parse(self, csource, override=False, packed=False, pack=None, - dllexport=False): - if packed: - if packed != True: - raise ValueError("'packed' should be False or True; use " - "'pack' to give another value") - if pack: - raise ValueError("cannot give both 'pack' and 'packed'") - pack = 1 - elif pack: - if pack & (pack - 1): - raise ValueError("'pack' must be a power of two, not %r" % - (pack,)) - else: - pack = 0 - prev_options = self._options - try: - self._options = {'override': override, - 'packed': pack, - 'dllexport': dllexport} - self._internal_parse(csource) - finally: - self._options = prev_options - - def _internal_parse(self, csource): - ast, macros, csource = self._parse(csource) - # add the macros - self._process_macros(macros) - # find the first "__dotdotdot__" and use that as a separator - # between the repeated typedefs and the real csource - iterator = iter(ast.ext) - for decl in iterator: - if decl.name == '__dotdotdot__': - break - else: - assert 0 - current_decl = None - # - try: - self._inside_extern_python = '__cffi_extern_python_stop' - for decl in iterator: - current_decl = decl - if isinstance(decl, pycparser.c_ast.Decl): - self._parse_decl(decl) - elif isinstance(decl, pycparser.c_ast.Typedef): - if not decl.name: - raise CDefError("typedef does not declare any name", - decl) - quals = 0 - if (isinstance(decl.type.type, pycparser.c_ast.IdentifierType) and - decl.type.type.names[-1].startswith('__dotdotdot')): - realtype = self._get_unknown_type(decl) - elif (isinstance(decl.type, pycparser.c_ast.PtrDecl) and - isinstance(decl.type.type, pycparser.c_ast.TypeDecl) and - isinstance(decl.type.type.type, - pycparser.c_ast.IdentifierType) and - decl.type.type.type.names[-1].startswith('__dotdotdot')): - realtype = self._get_unknown_ptr_type(decl) - else: - realtype, quals = self._get_type_and_quals( - decl.type, name=decl.name, partial_length_ok=True, - typedef_example="*(%s *)0" % (decl.name,)) - self._declare('typedef ' + decl.name, realtype, quals=quals) - elif decl.__class__.__name__ == 'Pragma': - # skip pragma, only in pycparser 2.15 - import warnings - warnings.warn( - "#pragma in cdef() are entirely ignored. " - "They should be removed for now, otherwise your " - "code might behave differently in a future version " - "of CFFI if #pragma support gets added. Note that " - "'#pragma pack' needs to be replaced with the " - "'packed' keyword argument to cdef().") - else: - raise CDefError("unexpected <%s>: this construct is valid " - "C but not valid in cdef()" % - decl.__class__.__name__, decl) - except CDefError as e: - if len(e.args) == 1: - e.args = e.args + (current_decl,) - raise - except FFIError as e: - msg = self._convert_pycparser_error(e, csource) - if msg: - e.args = (e.args[0] + "\n *** Err: %s" % msg,) - raise - - def _add_constants(self, key, val): - if key in self._int_constants: - if self._int_constants[key] == val: - return # ignore identical double declarations - raise FFIError( - "multiple declarations of constant: %s" % (key,)) - self._int_constants[key] = val - - def _add_integer_constant(self, name, int_str): - int_str = int_str.lower().rstrip("ul") - neg = int_str.startswith('-') - if neg: - int_str = int_str[1:] - # "010" is not valid oct in py3 - if (int_str.startswith("0") and int_str != '0' - and not int_str.startswith("0x")): - int_str = "0o" + int_str[1:] - pyvalue = int(int_str, 0) - if neg: - pyvalue = -pyvalue - self._add_constants(name, pyvalue) - self._declare('macro ' + name, pyvalue) - - def _process_macros(self, macros): - for key, value in macros.items(): - value = value.strip() - if _r_int_literal.match(value): - self._add_integer_constant(key, value) - elif value == '...': - self._declare('macro ' + key, value) - else: - raise CDefError( - 'only supports one of the following syntax:\n' - ' #define %s ... (literally dot-dot-dot)\n' - ' #define %s NUMBER (with NUMBER an integer' - ' constant, decimal/hex/octal)\n' - 'got:\n' - ' #define %s %s' - % (key, key, key, value)) - - def _declare_function(self, tp, quals, decl): - tp = self._get_type_pointer(tp, quals) - if self._options.get('dllexport'): - tag = 'dllexport_python ' - elif self._inside_extern_python == '__cffi_extern_python_start': - tag = 'extern_python ' - elif self._inside_extern_python == '__cffi_extern_python_plus_c_start': - tag = 'extern_python_plus_c ' - else: - tag = 'function ' - self._declare(tag + decl.name, tp) - - def _parse_decl(self, decl): - node = decl.type - if isinstance(node, pycparser.c_ast.FuncDecl): - tp, quals = self._get_type_and_quals(node, name=decl.name) - assert isinstance(tp, model.RawFunctionType) - self._declare_function(tp, quals, decl) - else: - if isinstance(node, pycparser.c_ast.Struct): - self._get_struct_union_enum_type('struct', node) - elif isinstance(node, pycparser.c_ast.Union): - self._get_struct_union_enum_type('union', node) - elif isinstance(node, pycparser.c_ast.Enum): - self._get_struct_union_enum_type('enum', node) - elif not decl.name: - raise CDefError("construct does not declare any variable", - decl) - # - if decl.name: - tp, quals = self._get_type_and_quals(node, - partial_length_ok=True) - if tp.is_raw_function: - self._declare_function(tp, quals, decl) - elif (tp.is_integer_type() and - hasattr(decl, 'init') and - hasattr(decl.init, 'value') and - _r_int_literal.match(decl.init.value)): - self._add_integer_constant(decl.name, decl.init.value) - elif (tp.is_integer_type() and - isinstance(decl.init, pycparser.c_ast.UnaryOp) and - decl.init.op == '-' and - hasattr(decl.init.expr, 'value') and - _r_int_literal.match(decl.init.expr.value)): - self._add_integer_constant(decl.name, - '-' + decl.init.expr.value) - elif (tp is model.void_type and - decl.name.startswith('__cffi_extern_python_')): - # hack: `extern "Python"` in the C source is replaced - # with "void __cffi_extern_python_start;" and - # "void __cffi_extern_python_stop;" - self._inside_extern_python = decl.name - else: - if self._inside_extern_python !='__cffi_extern_python_stop': - raise CDefError( - "cannot declare constants or " - "variables with 'extern \"Python\"'") - if (quals & model.Q_CONST) and not tp.is_array_type: - self._declare('constant ' + decl.name, tp, quals=quals) - else: - _warn_for_non_extern_non_static_global_variable(decl) - self._declare('variable ' + decl.name, tp, quals=quals) - - def parse_type(self, cdecl): - return self.parse_type_and_quals(cdecl)[0] - - def parse_type_and_quals(self, cdecl): - ast, macros = self._parse('void __dummy(\n%s\n);' % cdecl)[:2] - assert not macros - exprnode = ast.ext[-1].type.args.params[0] - if isinstance(exprnode, pycparser.c_ast.ID): - raise CDefError("unknown identifier '%s'" % (exprnode.name,)) - return self._get_type_and_quals(exprnode.type) - - def _declare(self, name, obj, included=False, quals=0): - if name in self._declarations: - prevobj, prevquals = self._declarations[name] - if prevobj is obj and prevquals == quals: - return - if not self._options.get('override'): - raise FFIError( - "multiple declarations of %s (for interactive usage, " - "try cdef(xx, override=True))" % (name,)) - assert '__dotdotdot__' not in name.split() - self._declarations[name] = (obj, quals) - if included: - self._included_declarations.add(obj) - - def _extract_quals(self, type): - quals = 0 - if isinstance(type, (pycparser.c_ast.TypeDecl, - pycparser.c_ast.PtrDecl)): - if 'const' in type.quals: - quals |= model.Q_CONST - if 'volatile' in type.quals: - quals |= model.Q_VOLATILE - if 'restrict' in type.quals: - quals |= model.Q_RESTRICT - return quals - - def _get_type_pointer(self, type, quals, declname=None): - if isinstance(type, model.RawFunctionType): - return type.as_function_pointer() - if (isinstance(type, model.StructOrUnionOrEnum) and - type.name.startswith('$') and type.name[1:].isdigit() and - type.forcename is None and declname is not None): - return model.NamedPointerType(type, declname, quals) - return model.PointerType(type, quals) - - def _get_type_and_quals(self, typenode, name=None, partial_length_ok=False, - typedef_example=None): - # first, dereference typedefs, if we have it already parsed, we're good - if (isinstance(typenode, pycparser.c_ast.TypeDecl) and - isinstance(typenode.type, pycparser.c_ast.IdentifierType) and - len(typenode.type.names) == 1 and - ('typedef ' + typenode.type.names[0]) in self._declarations): - tp, quals = self._declarations['typedef ' + typenode.type.names[0]] - quals |= self._extract_quals(typenode) - return tp, quals - # - if isinstance(typenode, pycparser.c_ast.ArrayDecl): - # array type - if typenode.dim is None: - length = None - else: - length = self._parse_constant( - typenode.dim, partial_length_ok=partial_length_ok) - # a hack: in 'typedef int foo_t[...][...];', don't use '...' as - # the length but use directly the C expression that would be - # generated by recompiler.py. This lets the typedef be used in - # many more places within recompiler.py - if typedef_example is not None: - if length == '...': - length = '_cffi_array_len(%s)' % (typedef_example,) - typedef_example = "*" + typedef_example - # - tp, quals = self._get_type_and_quals(typenode.type, - partial_length_ok=partial_length_ok, - typedef_example=typedef_example) - return model.ArrayType(tp, length), quals - # - if isinstance(typenode, pycparser.c_ast.PtrDecl): - # pointer type - itemtype, itemquals = self._get_type_and_quals(typenode.type) - tp = self._get_type_pointer(itemtype, itemquals, declname=name) - quals = self._extract_quals(typenode) - return tp, quals - # - if isinstance(typenode, pycparser.c_ast.TypeDecl): - quals = self._extract_quals(typenode) - type = typenode.type - if isinstance(type, pycparser.c_ast.IdentifierType): - # assume a primitive type. get it from .names, but reduce - # synonyms to a single chosen combination - names = list(type.names) - if names != ['signed', 'char']: # keep this unmodified - prefixes = {} - while names: - name = names[0] - if name in ('short', 'long', 'signed', 'unsigned'): - prefixes[name] = prefixes.get(name, 0) + 1 - del names[0] - else: - break - # ignore the 'signed' prefix below, and reorder the others - newnames = [] - for prefix in ('unsigned', 'short', 'long'): - for i in range(prefixes.get(prefix, 0)): - newnames.append(prefix) - if not names: - names = ['int'] # implicitly - if names == ['int']: # but kill it if 'short' or 'long' - if 'short' in prefixes or 'long' in prefixes: - names = [] - names = newnames + names - ident = ' '.join(names) - if ident == 'void': - return model.void_type, quals - if ident == '__dotdotdot__': - raise FFIError(':%d: bad usage of "..."' % - typenode.coord.line) - tp0, quals0 = resolve_common_type(self, ident) - return tp0, (quals | quals0) - # - if isinstance(type, pycparser.c_ast.Struct): - # 'struct foobar' - tp = self._get_struct_union_enum_type('struct', type, name) - return tp, quals - # - if isinstance(type, pycparser.c_ast.Union): - # 'union foobar' - tp = self._get_struct_union_enum_type('union', type, name) - return tp, quals - # - if isinstance(type, pycparser.c_ast.Enum): - # 'enum foobar' - tp = self._get_struct_union_enum_type('enum', type, name) - return tp, quals - # - if isinstance(typenode, pycparser.c_ast.FuncDecl): - # a function type - return self._parse_function_type(typenode, name), 0 - # - # nested anonymous structs or unions end up here - if isinstance(typenode, pycparser.c_ast.Struct): - return self._get_struct_union_enum_type('struct', typenode, name, - nested=True), 0 - if isinstance(typenode, pycparser.c_ast.Union): - return self._get_struct_union_enum_type('union', typenode, name, - nested=True), 0 - # - raise FFIError(":%d: bad or unsupported type declaration" % - typenode.coord.line) - - def _parse_function_type(self, typenode, funcname=None): - params = list(getattr(typenode.args, 'params', [])) - for i, arg in enumerate(params): - if not hasattr(arg, 'type'): - raise CDefError("%s arg %d: unknown type '%s'" - " (if you meant to use the old C syntax of giving" - " untyped arguments, it is not supported)" - % (funcname or 'in expression', i + 1, - getattr(arg, 'name', '?'))) - ellipsis = ( - len(params) > 0 and - isinstance(params[-1].type, pycparser.c_ast.TypeDecl) and - isinstance(params[-1].type.type, - pycparser.c_ast.IdentifierType) and - params[-1].type.type.names == ['__dotdotdot__']) - if ellipsis: - params.pop() - if not params: - raise CDefError( - "%s: a function with only '(...)' as argument" - " is not correct C" % (funcname or 'in expression')) - args = [self._as_func_arg(*self._get_type_and_quals(argdeclnode.type)) - for argdeclnode in params] - if not ellipsis and args == [model.void_type]: - args = [] - result, quals = self._get_type_and_quals(typenode.type) - # the 'quals' on the result type are ignored. HACK: we absure them - # to detect __stdcall functions: we textually replace "__stdcall" - # with "volatile volatile const" above. - abi = None - if hasattr(typenode.type, 'quals'): # else, probable syntax error anyway - if typenode.type.quals[-3:] == ['volatile', 'volatile', 'const']: - abi = '__stdcall' - return model.RawFunctionType(tuple(args), result, ellipsis, abi) - - def _as_func_arg(self, type, quals): - if isinstance(type, model.ArrayType): - return model.PointerType(type.item, quals) - elif isinstance(type, model.RawFunctionType): - return type.as_function_pointer() - else: - return type - - def _get_struct_union_enum_type(self, kind, type, name=None, nested=False): - # First, a level of caching on the exact 'type' node of the AST. - # This is obscure, but needed because pycparser "unrolls" declarations - # such as "typedef struct { } foo_t, *foo_p" and we end up with - # an AST that is not a tree, but a DAG, with the "type" node of the - # two branches foo_t and foo_p of the trees being the same node. - # It's a bit silly but detecting "DAG-ness" in the AST tree seems - # to be the only way to distinguish this case from two independent - # structs. See test_struct_with_two_usages. - try: - return self._structnode2type[type] - except KeyError: - pass - # - # Note that this must handle parsing "struct foo" any number of - # times and always return the same StructType object. Additionally, - # one of these times (not necessarily the first), the fields of - # the struct can be specified with "struct foo { ...fields... }". - # If no name is given, then we have to create a new anonymous struct - # with no caching; in this case, the fields are either specified - # right now or never. - # - force_name = name - name = type.name - # - # get the type or create it if needed - if name is None: - # 'force_name' is used to guess a more readable name for - # anonymous structs, for the common case "typedef struct { } foo". - if force_name is not None: - explicit_name = '$%s' % force_name - else: - self._anonymous_counter += 1 - explicit_name = '$%d' % self._anonymous_counter - tp = None - else: - explicit_name = name - key = '%s %s' % (kind, name) - tp, _ = self._declarations.get(key, (None, None)) - # - if tp is None: - if kind == 'struct': - tp = model.StructType(explicit_name, None, None, None) - elif kind == 'union': - tp = model.UnionType(explicit_name, None, None, None) - elif kind == 'enum': - if explicit_name == '__dotdotdot__': - raise CDefError("Enums cannot be declared with ...") - tp = self._build_enum_type(explicit_name, type.values) - else: - raise AssertionError("kind = %r" % (kind,)) - if name is not None: - self._declare(key, tp) - else: - if kind == 'enum' and type.values is not None: - raise NotImplementedError( - "enum %s: the '{}' declaration should appear on the first " - "time the enum is mentioned, not later" % explicit_name) - if not tp.forcename: - tp.force_the_name(force_name) - if tp.forcename and '$' in tp.name: - self._declare('anonymous %s' % tp.forcename, tp) - # - self._structnode2type[type] = tp - # - # enums: done here - if kind == 'enum': - return tp - # - # is there a 'type.decls'? If yes, then this is the place in the - # C sources that declare the fields. If no, then just return the - # existing type, possibly still incomplete. - if type.decls is None: - return tp - # - if tp.fldnames is not None: - raise CDefError("duplicate declaration of struct %s" % name) - fldnames = [] - fldtypes = [] - fldbitsize = [] - fldquals = [] - for decl in type.decls: - if (isinstance(decl.type, pycparser.c_ast.IdentifierType) and - ''.join(decl.type.names) == '__dotdotdot__'): - # XXX pycparser is inconsistent: 'names' should be a list - # of strings, but is sometimes just one string. Use - # str.join() as a way to cope with both. - self._make_partial(tp, nested) - continue - if decl.bitsize is None: - bitsize = -1 - else: - bitsize = self._parse_constant(decl.bitsize) - self._partial_length = False - type, fqual = self._get_type_and_quals(decl.type, - partial_length_ok=True) - if self._partial_length: - self._make_partial(tp, nested) - if isinstance(type, model.StructType) and type.partial: - self._make_partial(tp, nested) - fldnames.append(decl.name or '') - fldtypes.append(type) - fldbitsize.append(bitsize) - fldquals.append(fqual) - tp.fldnames = tuple(fldnames) - tp.fldtypes = tuple(fldtypes) - tp.fldbitsize = tuple(fldbitsize) - tp.fldquals = tuple(fldquals) - if fldbitsize != [-1] * len(fldbitsize): - if isinstance(tp, model.StructType) and tp.partial: - raise NotImplementedError("%s: using both bitfields and '...;'" - % (tp,)) - tp.packed = self._options.get('packed') - if tp.completed: # must be re-completed: it is not opaque any more - tp.completed = 0 - self._recomplete.append(tp) - return tp - - def _make_partial(self, tp, nested): - if not isinstance(tp, model.StructOrUnion): - raise CDefError("%s cannot be partial" % (tp,)) - if not tp.has_c_name() and not nested: - raise NotImplementedError("%s is partial but has no C name" %(tp,)) - tp.partial = True - - def _parse_constant(self, exprnode, partial_length_ok=False): - # for now, limited to expressions that are an immediate number - # or positive/negative number - if isinstance(exprnode, pycparser.c_ast.Constant): - s = exprnode.value - if '0' <= s[0] <= '9': - s = s.rstrip('uUlL') - try: - if s.startswith('0'): - return int(s, 8) - else: - return int(s, 10) - except ValueError: - if len(s) > 1: - if s.lower()[0:2] == '0x': - return int(s, 16) - elif s.lower()[0:2] == '0b': - return int(s, 2) - raise CDefError("invalid constant %r" % (s,)) - elif s[0] == "'" and s[-1] == "'" and ( - len(s) == 3 or (len(s) == 4 and s[1] == "\\")): - return ord(s[-2]) - else: - raise CDefError("invalid constant %r" % (s,)) - # - if (isinstance(exprnode, pycparser.c_ast.UnaryOp) and - exprnode.op == '+'): - return self._parse_constant(exprnode.expr) - # - if (isinstance(exprnode, pycparser.c_ast.UnaryOp) and - exprnode.op == '-'): - return -self._parse_constant(exprnode.expr) - # load previously defined int constant - if (isinstance(exprnode, pycparser.c_ast.ID) and - exprnode.name in self._int_constants): - return self._int_constants[exprnode.name] - # - if (isinstance(exprnode, pycparser.c_ast.ID) and - exprnode.name == '__dotdotdotarray__'): - if partial_length_ok: - self._partial_length = True - return '...' - raise FFIError(":%d: unsupported '[...]' here, cannot derive " - "the actual array length in this context" - % exprnode.coord.line) - # - if isinstance(exprnode, pycparser.c_ast.BinaryOp): - left = self._parse_constant(exprnode.left) - right = self._parse_constant(exprnode.right) - if exprnode.op == '+': - return left + right - elif exprnode.op == '-': - return left - right - elif exprnode.op == '*': - return left * right - elif exprnode.op == '/': - return self._c_div(left, right) - elif exprnode.op == '%': - return left - self._c_div(left, right) * right - elif exprnode.op == '<<': - return left << right - elif exprnode.op == '>>': - return left >> right - elif exprnode.op == '&': - return left & right - elif exprnode.op == '|': - return left | right - elif exprnode.op == '^': - return left ^ right - # - raise FFIError(":%d: unsupported expression: expected a " - "simple numeric constant" % exprnode.coord.line) - - def _c_div(self, a, b): - result = a // b - if ((a < 0) ^ (b < 0)) and (a % b) != 0: - result += 1 - return result - - def _build_enum_type(self, explicit_name, decls): - if decls is not None: - partial = False - enumerators = [] - enumvalues = [] - nextenumvalue = 0 - for enum in decls.enumerators: - if _r_enum_dotdotdot.match(enum.name): - partial = True - continue - if enum.value is not None: - nextenumvalue = self._parse_constant(enum.value) - enumerators.append(enum.name) - enumvalues.append(nextenumvalue) - self._add_constants(enum.name, nextenumvalue) - nextenumvalue += 1 - enumerators = tuple(enumerators) - enumvalues = tuple(enumvalues) - tp = model.EnumType(explicit_name, enumerators, enumvalues) - tp.partial = partial - else: # opaque enum - tp = model.EnumType(explicit_name, (), ()) - return tp - - def include(self, other): - for name, (tp, quals) in other._declarations.items(): - if name.startswith('anonymous $enum_$'): - continue # fix for test_anonymous_enum_include - kind = name.split(' ', 1)[0] - if kind in ('struct', 'union', 'enum', 'anonymous', 'typedef'): - self._declare(name, tp, included=True, quals=quals) - for k, v in other._int_constants.items(): - self._add_constants(k, v) - - def _get_unknown_type(self, decl): - typenames = decl.type.type.names - if typenames == ['__dotdotdot__']: - return model.unknown_type(decl.name) - - if typenames == ['__dotdotdotint__']: - if self._uses_new_feature is None: - self._uses_new_feature = "'typedef int... %s'" % decl.name - return model.UnknownIntegerType(decl.name) - - if typenames == ['__dotdotdotfloat__']: - # note: not for 'long double' so far - if self._uses_new_feature is None: - self._uses_new_feature = "'typedef float... %s'" % decl.name - return model.UnknownFloatType(decl.name) - - raise FFIError(':%d: unsupported usage of "..." in typedef' - % decl.coord.line) - - def _get_unknown_ptr_type(self, decl): - if decl.type.type.type.names == ['__dotdotdot__']: - return model.unknown_ptr_type(decl.name) - raise FFIError(':%d: unsupported usage of "..." in typedef' - % decl.coord.line) diff --git a/venv/lib/python3.12/site-packages/cffi/error.py b/venv/lib/python3.12/site-packages/cffi/error.py deleted file mode 100644 index 0a27247..0000000 --- a/venv/lib/python3.12/site-packages/cffi/error.py +++ /dev/null @@ -1,31 +0,0 @@ - -class FFIError(Exception): - __module__ = 'cffi' - -class CDefError(Exception): - __module__ = 'cffi' - def __str__(self): - try: - current_decl = self.args[1] - filename = current_decl.coord.file - linenum = current_decl.coord.line - prefix = '%s:%d: ' % (filename, linenum) - except (AttributeError, TypeError, IndexError): - prefix = '' - return '%s%s' % (prefix, self.args[0]) - -class VerificationError(Exception): - """ An error raised when verification fails - """ - __module__ = 'cffi' - -class VerificationMissing(Exception): - """ An error raised when incomplete structures are passed into - cdef, but no verification has been done - """ - __module__ = 'cffi' - -class PkgConfigError(Exception): - """ An error raised for missing modules in pkg-config - """ - __module__ = 'cffi' diff --git a/venv/lib/python3.12/site-packages/cffi/ffiplatform.py b/venv/lib/python3.12/site-packages/cffi/ffiplatform.py deleted file mode 100644 index adca28f..0000000 --- a/venv/lib/python3.12/site-packages/cffi/ffiplatform.py +++ /dev/null @@ -1,113 +0,0 @@ -import sys, os -from .error import VerificationError - - -LIST_OF_FILE_NAMES = ['sources', 'include_dirs', 'library_dirs', - 'extra_objects', 'depends'] - -def get_extension(srcfilename, modname, sources=(), **kwds): - from cffi._shimmed_dist_utils import Extension - allsources = [srcfilename] - for src in sources: - allsources.append(os.path.normpath(src)) - return Extension(name=modname, sources=allsources, **kwds) - -def compile(tmpdir, ext, compiler_verbose=0, debug=None): - """Compile a C extension module using distutils.""" - - saved_environ = os.environ.copy() - try: - outputfilename = _build(tmpdir, ext, compiler_verbose, debug) - outputfilename = os.path.abspath(outputfilename) - finally: - # workaround for a distutils bugs where some env vars can - # become longer and longer every time it is used - for key, value in saved_environ.items(): - if os.environ.get(key) != value: - os.environ[key] = value - return outputfilename - -def _build(tmpdir, ext, compiler_verbose=0, debug=None): - # XXX compact but horrible :-( - from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity - - dist = Distribution({'ext_modules': [ext]}) - dist.parse_config_files() - options = dist.get_option_dict('build_ext') - if debug is None: - debug = sys.flags.debug - options['debug'] = ('ffiplatform', debug) - options['force'] = ('ffiplatform', True) - options['build_lib'] = ('ffiplatform', tmpdir) - options['build_temp'] = ('ffiplatform', tmpdir) - # - try: - old_level = set_threshold(0) or 0 - try: - set_verbosity(compiler_verbose) - dist.run_command('build_ext') - cmd_obj = dist.get_command_obj('build_ext') - [soname] = cmd_obj.get_outputs() - finally: - set_threshold(old_level) - except (CompileError, LinkError) as e: - raise VerificationError('%s: %s' % (e.__class__.__name__, e)) - # - return soname - -try: - from os.path import samefile -except ImportError: - def samefile(f1, f2): - return os.path.abspath(f1) == os.path.abspath(f2) - -def maybe_relative_path(path): - if not os.path.isabs(path): - return path # already relative - dir = path - names = [] - while True: - prevdir = dir - dir, name = os.path.split(prevdir) - if dir == prevdir or not dir: - return path # failed to make it relative - names.append(name) - try: - if samefile(dir, os.curdir): - names.reverse() - return os.path.join(*names) - except OSError: - pass - -# ____________________________________________________________ - -try: - int_or_long = (int, long) - import cStringIO -except NameError: - int_or_long = int # Python 3 - import io as cStringIO - -def _flatten(x, f): - if isinstance(x, str): - f.write('%ds%s' % (len(x), x)) - elif isinstance(x, dict): - keys = sorted(x.keys()) - f.write('%dd' % len(keys)) - for key in keys: - _flatten(key, f) - _flatten(x[key], f) - elif isinstance(x, (list, tuple)): - f.write('%dl' % len(x)) - for value in x: - _flatten(value, f) - elif isinstance(x, int_or_long): - f.write('%di' % (x,)) - else: - raise TypeError( - "the keywords to verify() contains unsupported object %r" % (x,)) - -def flatten(x): - f = cStringIO.StringIO() - _flatten(x, f) - return f.getvalue() diff --git a/venv/lib/python3.12/site-packages/cffi/lock.py b/venv/lib/python3.12/site-packages/cffi/lock.py deleted file mode 100644 index db91b71..0000000 --- a/venv/lib/python3.12/site-packages/cffi/lock.py +++ /dev/null @@ -1,30 +0,0 @@ -import sys - -if sys.version_info < (3,): - try: - from thread import allocate_lock - except ImportError: - from dummy_thread import allocate_lock -else: - try: - from _thread import allocate_lock - except ImportError: - from _dummy_thread import allocate_lock - - -##import sys -##l1 = allocate_lock - -##class allocate_lock(object): -## def __init__(self): -## self._real = l1() -## def __enter__(self): -## for i in range(4, 0, -1): -## print sys._getframe(i).f_code -## print -## return self._real.__enter__() -## def __exit__(self, *args): -## return self._real.__exit__(*args) -## def acquire(self, f): -## assert f is False -## return self._real.acquire(f) diff --git a/venv/lib/python3.12/site-packages/cffi/model.py b/venv/lib/python3.12/site-packages/cffi/model.py deleted file mode 100644 index e5f4cae..0000000 --- a/venv/lib/python3.12/site-packages/cffi/model.py +++ /dev/null @@ -1,618 +0,0 @@ -import types -import weakref - -from .lock import allocate_lock -from .error import CDefError, VerificationError, VerificationMissing - -# type qualifiers -Q_CONST = 0x01 -Q_RESTRICT = 0x02 -Q_VOLATILE = 0x04 - -def qualify(quals, replace_with): - if quals & Q_CONST: - replace_with = ' const ' + replace_with.lstrip() - if quals & Q_VOLATILE: - replace_with = ' volatile ' + replace_with.lstrip() - if quals & Q_RESTRICT: - # It seems that __restrict is supported by gcc and msvc. - # If you hit some different compiler, add a #define in - # _cffi_include.h for it (and in its copies, documented there) - replace_with = ' __restrict ' + replace_with.lstrip() - return replace_with - - -class BaseTypeByIdentity(object): - is_array_type = False - is_raw_function = False - - def get_c_name(self, replace_with='', context='a C file', quals=0): - result = self.c_name_with_marker - assert result.count('&') == 1 - # some logic duplication with ffi.getctype()... :-( - replace_with = replace_with.strip() - if replace_with: - if replace_with.startswith('*') and '&[' in result: - replace_with = '(%s)' % replace_with - elif not replace_with[0] in '[(': - replace_with = ' ' + replace_with - replace_with = qualify(quals, replace_with) - result = result.replace('&', replace_with) - if '$' in result: - raise VerificationError( - "cannot generate '%s' in %s: unknown type name" - % (self._get_c_name(), context)) - return result - - def _get_c_name(self): - return self.c_name_with_marker.replace('&', '') - - def has_c_name(self): - return '$' not in self._get_c_name() - - def is_integer_type(self): - return False - - def get_cached_btype(self, ffi, finishlist, can_delay=False): - try: - BType = ffi._cached_btypes[self] - except KeyError: - BType = self.build_backend_type(ffi, finishlist) - BType2 = ffi._cached_btypes.setdefault(self, BType) - assert BType2 is BType - return BType - - def __repr__(self): - return '<%s>' % (self._get_c_name(),) - - def _get_items(self): - return [(name, getattr(self, name)) for name in self._attrs_] - - -class BaseType(BaseTypeByIdentity): - - def __eq__(self, other): - return (self.__class__ == other.__class__ and - self._get_items() == other._get_items()) - - def __ne__(self, other): - return not self == other - - def __hash__(self): - return hash((self.__class__, tuple(self._get_items()))) - - -class VoidType(BaseType): - _attrs_ = () - - def __init__(self): - self.c_name_with_marker = 'void&' - - def build_backend_type(self, ffi, finishlist): - return global_cache(self, ffi, 'new_void_type') - -void_type = VoidType() - - -class BasePrimitiveType(BaseType): - def is_complex_type(self): - return False - - -class PrimitiveType(BasePrimitiveType): - _attrs_ = ('name',) - - ALL_PRIMITIVE_TYPES = { - 'char': 'c', - 'short': 'i', - 'int': 'i', - 'long': 'i', - 'long long': 'i', - 'signed char': 'i', - 'unsigned char': 'i', - 'unsigned short': 'i', - 'unsigned int': 'i', - 'unsigned long': 'i', - 'unsigned long long': 'i', - 'float': 'f', - 'double': 'f', - 'long double': 'f', - '_cffi_float_complex_t': 'j', - '_cffi_double_complex_t': 'j', - '_Bool': 'i', - # the following types are not primitive in the C sense - 'wchar_t': 'c', - 'char16_t': 'c', - 'char32_t': 'c', - 'int8_t': 'i', - 'uint8_t': 'i', - 'int16_t': 'i', - 'uint16_t': 'i', - 'int32_t': 'i', - 'uint32_t': 'i', - 'int64_t': 'i', - 'uint64_t': 'i', - 'int_least8_t': 'i', - 'uint_least8_t': 'i', - 'int_least16_t': 'i', - 'uint_least16_t': 'i', - 'int_least32_t': 'i', - 'uint_least32_t': 'i', - 'int_least64_t': 'i', - 'uint_least64_t': 'i', - 'int_fast8_t': 'i', - 'uint_fast8_t': 'i', - 'int_fast16_t': 'i', - 'uint_fast16_t': 'i', - 'int_fast32_t': 'i', - 'uint_fast32_t': 'i', - 'int_fast64_t': 'i', - 'uint_fast64_t': 'i', - 'intptr_t': 'i', - 'uintptr_t': 'i', - 'intmax_t': 'i', - 'uintmax_t': 'i', - 'ptrdiff_t': 'i', - 'size_t': 'i', - 'ssize_t': 'i', - } - - def __init__(self, name): - assert name in self.ALL_PRIMITIVE_TYPES - self.name = name - self.c_name_with_marker = name + '&' - - def is_char_type(self): - return self.ALL_PRIMITIVE_TYPES[self.name] == 'c' - def is_integer_type(self): - return self.ALL_PRIMITIVE_TYPES[self.name] == 'i' - def is_float_type(self): - return self.ALL_PRIMITIVE_TYPES[self.name] == 'f' - def is_complex_type(self): - return self.ALL_PRIMITIVE_TYPES[self.name] == 'j' - - def build_backend_type(self, ffi, finishlist): - return global_cache(self, ffi, 'new_primitive_type', self.name) - - -class UnknownIntegerType(BasePrimitiveType): - _attrs_ = ('name',) - - def __init__(self, name): - self.name = name - self.c_name_with_marker = name + '&' - - def is_integer_type(self): - return True - - def build_backend_type(self, ffi, finishlist): - raise NotImplementedError("integer type '%s' can only be used after " - "compilation" % self.name) - -class UnknownFloatType(BasePrimitiveType): - _attrs_ = ('name', ) - - def __init__(self, name): - self.name = name - self.c_name_with_marker = name + '&' - - def build_backend_type(self, ffi, finishlist): - raise NotImplementedError("float type '%s' can only be used after " - "compilation" % self.name) - - -class BaseFunctionType(BaseType): - _attrs_ = ('args', 'result', 'ellipsis', 'abi') - - def __init__(self, args, result, ellipsis, abi=None): - self.args = args - self.result = result - self.ellipsis = ellipsis - self.abi = abi - # - reprargs = [arg._get_c_name() for arg in self.args] - if self.ellipsis: - reprargs.append('...') - reprargs = reprargs or ['void'] - replace_with = self._base_pattern % (', '.join(reprargs),) - if abi is not None: - replace_with = replace_with[:1] + abi + ' ' + replace_with[1:] - self.c_name_with_marker = ( - self.result.c_name_with_marker.replace('&', replace_with)) - - -class RawFunctionType(BaseFunctionType): - # Corresponds to a C type like 'int(int)', which is the C type of - # a function, but not a pointer-to-function. The backend has no - # notion of such a type; it's used temporarily by parsing. - _base_pattern = '(&)(%s)' - is_raw_function = True - - def build_backend_type(self, ffi, finishlist): - raise CDefError("cannot render the type %r: it is a function " - "type, not a pointer-to-function type" % (self,)) - - def as_function_pointer(self): - return FunctionPtrType(self.args, self.result, self.ellipsis, self.abi) - - -class FunctionPtrType(BaseFunctionType): - _base_pattern = '(*&)(%s)' - - def build_backend_type(self, ffi, finishlist): - result = self.result.get_cached_btype(ffi, finishlist) - args = [] - for tp in self.args: - args.append(tp.get_cached_btype(ffi, finishlist)) - abi_args = () - if self.abi == "__stdcall": - if not self.ellipsis: # __stdcall ignored for variadic funcs - try: - abi_args = (ffi._backend.FFI_STDCALL,) - except AttributeError: - pass - return global_cache(self, ffi, 'new_function_type', - tuple(args), result, self.ellipsis, *abi_args) - - def as_raw_function(self): - return RawFunctionType(self.args, self.result, self.ellipsis, self.abi) - - -class PointerType(BaseType): - _attrs_ = ('totype', 'quals') - - def __init__(self, totype, quals=0): - self.totype = totype - self.quals = quals - extra = " *&" - if totype.is_array_type: - extra = "(%s)" % (extra.lstrip(),) - extra = qualify(quals, extra) - self.c_name_with_marker = totype.c_name_with_marker.replace('&', extra) - - def build_backend_type(self, ffi, finishlist): - BItem = self.totype.get_cached_btype(ffi, finishlist, can_delay=True) - return global_cache(self, ffi, 'new_pointer_type', BItem) - -voidp_type = PointerType(void_type) - -def ConstPointerType(totype): - return PointerType(totype, Q_CONST) - -const_voidp_type = ConstPointerType(void_type) - - -class NamedPointerType(PointerType): - _attrs_ = ('totype', 'name') - - def __init__(self, totype, name, quals=0): - PointerType.__init__(self, totype, quals) - self.name = name - self.c_name_with_marker = name + '&' - - -class ArrayType(BaseType): - _attrs_ = ('item', 'length') - is_array_type = True - - def __init__(self, item, length): - self.item = item - self.length = length - # - if length is None: - brackets = '&[]' - elif length == '...': - brackets = '&[/*...*/]' - else: - brackets = '&[%s]' % length - self.c_name_with_marker = ( - self.item.c_name_with_marker.replace('&', brackets)) - - def length_is_unknown(self): - return isinstance(self.length, str) - - def resolve_length(self, newlength): - return ArrayType(self.item, newlength) - - def build_backend_type(self, ffi, finishlist): - if self.length_is_unknown(): - raise CDefError("cannot render the type %r: unknown length" % - (self,)) - self.item.get_cached_btype(ffi, finishlist) # force the item BType - BPtrItem = PointerType(self.item).get_cached_btype(ffi, finishlist) - return global_cache(self, ffi, 'new_array_type', BPtrItem, self.length) - -char_array_type = ArrayType(PrimitiveType('char'), None) - - -class StructOrUnionOrEnum(BaseTypeByIdentity): - _attrs_ = ('name',) - forcename = None - - def build_c_name_with_marker(self): - name = self.forcename or '%s %s' % (self.kind, self.name) - self.c_name_with_marker = name + '&' - - def force_the_name(self, forcename): - self.forcename = forcename - self.build_c_name_with_marker() - - def get_official_name(self): - assert self.c_name_with_marker.endswith('&') - return self.c_name_with_marker[:-1] - - -class StructOrUnion(StructOrUnionOrEnum): - fixedlayout = None - completed = 0 - partial = False - packed = 0 - - def __init__(self, name, fldnames, fldtypes, fldbitsize, fldquals=None): - self.name = name - self.fldnames = fldnames - self.fldtypes = fldtypes - self.fldbitsize = fldbitsize - self.fldquals = fldquals - self.build_c_name_with_marker() - - def anonymous_struct_fields(self): - if self.fldtypes is not None: - for name, type in zip(self.fldnames, self.fldtypes): - if name == '' and isinstance(type, StructOrUnion): - yield type - - def enumfields(self, expand_anonymous_struct_union=True): - fldquals = self.fldquals - if fldquals is None: - fldquals = (0,) * len(self.fldnames) - for name, type, bitsize, quals in zip(self.fldnames, self.fldtypes, - self.fldbitsize, fldquals): - if (name == '' and isinstance(type, StructOrUnion) - and expand_anonymous_struct_union): - # nested anonymous struct/union - for result in type.enumfields(): - yield result - else: - yield (name, type, bitsize, quals) - - def force_flatten(self): - # force the struct or union to have a declaration that lists - # directly all fields returned by enumfields(), flattening - # nested anonymous structs/unions. - names = [] - types = [] - bitsizes = [] - fldquals = [] - for name, type, bitsize, quals in self.enumfields(): - names.append(name) - types.append(type) - bitsizes.append(bitsize) - fldquals.append(quals) - self.fldnames = tuple(names) - self.fldtypes = tuple(types) - self.fldbitsize = tuple(bitsizes) - self.fldquals = tuple(fldquals) - - def get_cached_btype(self, ffi, finishlist, can_delay=False): - BType = StructOrUnionOrEnum.get_cached_btype(self, ffi, finishlist, - can_delay) - if not can_delay: - self.finish_backend_type(ffi, finishlist) - return BType - - def finish_backend_type(self, ffi, finishlist): - if self.completed: - if self.completed != 2: - raise NotImplementedError("recursive structure declaration " - "for '%s'" % (self.name,)) - return - BType = ffi._cached_btypes[self] - # - self.completed = 1 - # - if self.fldtypes is None: - pass # not completing it: it's an opaque struct - # - elif self.fixedlayout is None: - fldtypes = [tp.get_cached_btype(ffi, finishlist) - for tp in self.fldtypes] - lst = list(zip(self.fldnames, fldtypes, self.fldbitsize)) - extra_flags = () - if self.packed: - if self.packed == 1: - extra_flags = (8,) # SF_PACKED - else: - extra_flags = (0, self.packed) - ffi._backend.complete_struct_or_union(BType, lst, self, - -1, -1, *extra_flags) - # - else: - fldtypes = [] - fieldofs, fieldsize, totalsize, totalalignment = self.fixedlayout - for i in range(len(self.fldnames)): - fsize = fieldsize[i] - ftype = self.fldtypes[i] - # - if isinstance(ftype, ArrayType) and ftype.length_is_unknown(): - # fix the length to match the total size - BItemType = ftype.item.get_cached_btype(ffi, finishlist) - nlen, nrest = divmod(fsize, ffi.sizeof(BItemType)) - if nrest != 0: - self._verification_error( - "field '%s.%s' has a bogus size?" % ( - self.name, self.fldnames[i] or '{}')) - ftype = ftype.resolve_length(nlen) - self.fldtypes = (self.fldtypes[:i] + (ftype,) + - self.fldtypes[i+1:]) - # - BFieldType = ftype.get_cached_btype(ffi, finishlist) - if isinstance(ftype, ArrayType) and ftype.length is None: - assert fsize == 0 - else: - bitemsize = ffi.sizeof(BFieldType) - if bitemsize != fsize: - self._verification_error( - "field '%s.%s' is declared as %d bytes, but is " - "really %d bytes" % (self.name, - self.fldnames[i] or '{}', - bitemsize, fsize)) - fldtypes.append(BFieldType) - # - lst = list(zip(self.fldnames, fldtypes, self.fldbitsize, fieldofs)) - ffi._backend.complete_struct_or_union(BType, lst, self, - totalsize, totalalignment) - self.completed = 2 - - def _verification_error(self, msg): - raise VerificationError(msg) - - def check_not_partial(self): - if self.partial and self.fixedlayout is None: - raise VerificationMissing(self._get_c_name()) - - def build_backend_type(self, ffi, finishlist): - self.check_not_partial() - finishlist.append(self) - # - return global_cache(self, ffi, 'new_%s_type' % self.kind, - self.get_official_name(), key=self) - - -class StructType(StructOrUnion): - kind = 'struct' - - -class UnionType(StructOrUnion): - kind = 'union' - - -class EnumType(StructOrUnionOrEnum): - kind = 'enum' - partial = False - partial_resolved = False - - def __init__(self, name, enumerators, enumvalues, baseinttype=None): - self.name = name - self.enumerators = enumerators - self.enumvalues = enumvalues - self.baseinttype = baseinttype - self.build_c_name_with_marker() - - def force_the_name(self, forcename): - StructOrUnionOrEnum.force_the_name(self, forcename) - if self.forcename is None: - name = self.get_official_name() - self.forcename = '$' + name.replace(' ', '_') - - def check_not_partial(self): - if self.partial and not self.partial_resolved: - raise VerificationMissing(self._get_c_name()) - - def build_backend_type(self, ffi, finishlist): - self.check_not_partial() - base_btype = self.build_baseinttype(ffi, finishlist) - return global_cache(self, ffi, 'new_enum_type', - self.get_official_name(), - self.enumerators, self.enumvalues, - base_btype, key=self) - - def build_baseinttype(self, ffi, finishlist): - if self.baseinttype is not None: - return self.baseinttype.get_cached_btype(ffi, finishlist) - # - if self.enumvalues: - smallest_value = min(self.enumvalues) - largest_value = max(self.enumvalues) - else: - import warnings - try: - # XXX! The goal is to ensure that the warnings.warn() - # will not suppress the warning. We want to get it - # several times if we reach this point several times. - __warningregistry__.clear() - except NameError: - pass - warnings.warn("%r has no values explicitly defined; " - "guessing that it is equivalent to 'unsigned int'" - % self._get_c_name()) - smallest_value = largest_value = 0 - if smallest_value < 0: # needs a signed type - sign = 1 - candidate1 = PrimitiveType("int") - candidate2 = PrimitiveType("long") - else: - sign = 0 - candidate1 = PrimitiveType("unsigned int") - candidate2 = PrimitiveType("unsigned long") - btype1 = candidate1.get_cached_btype(ffi, finishlist) - btype2 = candidate2.get_cached_btype(ffi, finishlist) - size1 = ffi.sizeof(btype1) - size2 = ffi.sizeof(btype2) - if (smallest_value >= ((-1) << (8*size1-1)) and - largest_value < (1 << (8*size1-sign))): - return btype1 - if (smallest_value >= ((-1) << (8*size2-1)) and - largest_value < (1 << (8*size2-sign))): - return btype2 - raise CDefError("%s values don't all fit into either 'long' " - "or 'unsigned long'" % self._get_c_name()) - -def unknown_type(name, structname=None): - if structname is None: - structname = '$%s' % name - tp = StructType(structname, None, None, None) - tp.force_the_name(name) - tp.origin = "unknown_type" - return tp - -def unknown_ptr_type(name, structname=None): - if structname is None: - structname = '$$%s' % name - tp = StructType(structname, None, None, None) - return NamedPointerType(tp, name) - - -global_lock = allocate_lock() -_typecache_cffi_backend = weakref.WeakValueDictionary() - -def get_typecache(backend): - # returns _typecache_cffi_backend if backend is the _cffi_backend - # module, or type(backend).__typecache if backend is an instance of - # CTypesBackend (or some FakeBackend class during tests) - if isinstance(backend, types.ModuleType): - return _typecache_cffi_backend - with global_lock: - if not hasattr(type(backend), '__typecache'): - type(backend).__typecache = weakref.WeakValueDictionary() - return type(backend).__typecache - -def global_cache(srctype, ffi, funcname, *args, **kwds): - key = kwds.pop('key', (funcname, args)) - assert not kwds - try: - return ffi._typecache[key] - except KeyError: - pass - try: - res = getattr(ffi._backend, funcname)(*args) - except NotImplementedError as e: - raise NotImplementedError("%s: %r: %s" % (funcname, srctype, e)) - # note that setdefault() on WeakValueDictionary is not atomic - # and contains a rare bug (http://bugs.python.org/issue19542); - # we have to use a lock and do it ourselves - cache = ffi._typecache - with global_lock: - res1 = cache.get(key) - if res1 is None: - cache[key] = res - return res - else: - return res1 - -def pointer_cache(ffi, BType): - return global_cache('?', ffi, 'new_pointer_type', BType) - -def attach_exception_info(e, name): - if e.args and type(e.args[0]) is str: - e.args = ('%s: %s' % (name, e.args[0]),) + e.args[1:] diff --git a/venv/lib/python3.12/site-packages/cffi/parse_c_type.h b/venv/lib/python3.12/site-packages/cffi/parse_c_type.h deleted file mode 100644 index 84e4ef8..0000000 --- a/venv/lib/python3.12/site-packages/cffi/parse_c_type.h +++ /dev/null @@ -1,181 +0,0 @@ - -/* This part is from file 'cffi/parse_c_type.h'. It is copied at the - beginning of C sources generated by CFFI's ffi.set_source(). */ - -typedef void *_cffi_opcode_t; - -#define _CFFI_OP(opcode, arg) (_cffi_opcode_t)(opcode | (((uintptr_t)(arg)) << 8)) -#define _CFFI_GETOP(cffi_opcode) ((unsigned char)(uintptr_t)cffi_opcode) -#define _CFFI_GETARG(cffi_opcode) (((intptr_t)cffi_opcode) >> 8) - -#define _CFFI_OP_PRIMITIVE 1 -#define _CFFI_OP_POINTER 3 -#define _CFFI_OP_ARRAY 5 -#define _CFFI_OP_OPEN_ARRAY 7 -#define _CFFI_OP_STRUCT_UNION 9 -#define _CFFI_OP_ENUM 11 -#define _CFFI_OP_FUNCTION 13 -#define _CFFI_OP_FUNCTION_END 15 -#define _CFFI_OP_NOOP 17 -#define _CFFI_OP_BITFIELD 19 -#define _CFFI_OP_TYPENAME 21 -#define _CFFI_OP_CPYTHON_BLTN_V 23 // varargs -#define _CFFI_OP_CPYTHON_BLTN_N 25 // noargs -#define _CFFI_OP_CPYTHON_BLTN_O 27 // O (i.e. a single arg) -#define _CFFI_OP_CONSTANT 29 -#define _CFFI_OP_CONSTANT_INT 31 -#define _CFFI_OP_GLOBAL_VAR 33 -#define _CFFI_OP_DLOPEN_FUNC 35 -#define _CFFI_OP_DLOPEN_CONST 37 -#define _CFFI_OP_GLOBAL_VAR_F 39 -#define _CFFI_OP_EXTERN_PYTHON 41 - -#define _CFFI_PRIM_VOID 0 -#define _CFFI_PRIM_BOOL 1 -#define _CFFI_PRIM_CHAR 2 -#define _CFFI_PRIM_SCHAR 3 -#define _CFFI_PRIM_UCHAR 4 -#define _CFFI_PRIM_SHORT 5 -#define _CFFI_PRIM_USHORT 6 -#define _CFFI_PRIM_INT 7 -#define _CFFI_PRIM_UINT 8 -#define _CFFI_PRIM_LONG 9 -#define _CFFI_PRIM_ULONG 10 -#define _CFFI_PRIM_LONGLONG 11 -#define _CFFI_PRIM_ULONGLONG 12 -#define _CFFI_PRIM_FLOAT 13 -#define _CFFI_PRIM_DOUBLE 14 -#define _CFFI_PRIM_LONGDOUBLE 15 - -#define _CFFI_PRIM_WCHAR 16 -#define _CFFI_PRIM_INT8 17 -#define _CFFI_PRIM_UINT8 18 -#define _CFFI_PRIM_INT16 19 -#define _CFFI_PRIM_UINT16 20 -#define _CFFI_PRIM_INT32 21 -#define _CFFI_PRIM_UINT32 22 -#define _CFFI_PRIM_INT64 23 -#define _CFFI_PRIM_UINT64 24 -#define _CFFI_PRIM_INTPTR 25 -#define _CFFI_PRIM_UINTPTR 26 -#define _CFFI_PRIM_PTRDIFF 27 -#define _CFFI_PRIM_SIZE 28 -#define _CFFI_PRIM_SSIZE 29 -#define _CFFI_PRIM_INT_LEAST8 30 -#define _CFFI_PRIM_UINT_LEAST8 31 -#define _CFFI_PRIM_INT_LEAST16 32 -#define _CFFI_PRIM_UINT_LEAST16 33 -#define _CFFI_PRIM_INT_LEAST32 34 -#define _CFFI_PRIM_UINT_LEAST32 35 -#define _CFFI_PRIM_INT_LEAST64 36 -#define _CFFI_PRIM_UINT_LEAST64 37 -#define _CFFI_PRIM_INT_FAST8 38 -#define _CFFI_PRIM_UINT_FAST8 39 -#define _CFFI_PRIM_INT_FAST16 40 -#define _CFFI_PRIM_UINT_FAST16 41 -#define _CFFI_PRIM_INT_FAST32 42 -#define _CFFI_PRIM_UINT_FAST32 43 -#define _CFFI_PRIM_INT_FAST64 44 -#define _CFFI_PRIM_UINT_FAST64 45 -#define _CFFI_PRIM_INTMAX 46 -#define _CFFI_PRIM_UINTMAX 47 -#define _CFFI_PRIM_FLOATCOMPLEX 48 -#define _CFFI_PRIM_DOUBLECOMPLEX 49 -#define _CFFI_PRIM_CHAR16 50 -#define _CFFI_PRIM_CHAR32 51 - -#define _CFFI__NUM_PRIM 52 -#define _CFFI__UNKNOWN_PRIM (-1) -#define _CFFI__UNKNOWN_FLOAT_PRIM (-2) -#define _CFFI__UNKNOWN_LONG_DOUBLE (-3) - -#define _CFFI__IO_FILE_STRUCT (-1) - - -struct _cffi_global_s { - const char *name; - void *address; - _cffi_opcode_t type_op; - void *size_or_direct_fn; // OP_GLOBAL_VAR: size, or 0 if unknown - // OP_CPYTHON_BLTN_*: addr of direct function -}; - -struct _cffi_getconst_s { - unsigned long long value; - const struct _cffi_type_context_s *ctx; - int gindex; -}; - -struct _cffi_struct_union_s { - const char *name; - int type_index; // -> _cffi_types, on a OP_STRUCT_UNION - int flags; // _CFFI_F_* flags below - size_t size; - int alignment; - int first_field_index; // -> _cffi_fields array - int num_fields; -}; -#define _CFFI_F_UNION 0x01 // is a union, not a struct -#define _CFFI_F_CHECK_FIELDS 0x02 // complain if fields are not in the - // "standard layout" or if some are missing -#define _CFFI_F_PACKED 0x04 // for CHECK_FIELDS, assume a packed struct -#define _CFFI_F_EXTERNAL 0x08 // in some other ffi.include() -#define _CFFI_F_OPAQUE 0x10 // opaque - -struct _cffi_field_s { - const char *name; - size_t field_offset; - size_t field_size; - _cffi_opcode_t field_type_op; -}; - -struct _cffi_enum_s { - const char *name; - int type_index; // -> _cffi_types, on a OP_ENUM - int type_prim; // _CFFI_PRIM_xxx - const char *enumerators; // comma-delimited string -}; - -struct _cffi_typename_s { - const char *name; - int type_index; /* if opaque, points to a possibly artificial - OP_STRUCT which is itself opaque */ -}; - -struct _cffi_type_context_s { - _cffi_opcode_t *types; - const struct _cffi_global_s *globals; - const struct _cffi_field_s *fields; - const struct _cffi_struct_union_s *struct_unions; - const struct _cffi_enum_s *enums; - const struct _cffi_typename_s *typenames; - int num_globals; - int num_struct_unions; - int num_enums; - int num_typenames; - const char *const *includes; - int num_types; - int flags; /* future extension */ -}; - -struct _cffi_parse_info_s { - const struct _cffi_type_context_s *ctx; - _cffi_opcode_t *output; - unsigned int output_size; - size_t error_location; - const char *error_message; -}; - -struct _cffi_externpy_s { - const char *name; - size_t size_of_result; - void *reserved1, *reserved2; -}; - -#ifdef _CFFI_INTERNAL -static int parse_c_type(struct _cffi_parse_info_s *info, const char *input); -static int search_in_globals(const struct _cffi_type_context_s *ctx, - const char *search, size_t search_len); -static int search_in_struct_unions(const struct _cffi_type_context_s *ctx, - const char *search, size_t search_len); -#endif diff --git a/venv/lib/python3.12/site-packages/cffi/pkgconfig.py b/venv/lib/python3.12/site-packages/cffi/pkgconfig.py deleted file mode 100644 index 5c93f15..0000000 --- a/venv/lib/python3.12/site-packages/cffi/pkgconfig.py +++ /dev/null @@ -1,121 +0,0 @@ -# pkg-config, https://www.freedesktop.org/wiki/Software/pkg-config/ integration for cffi -import sys, os, subprocess - -from .error import PkgConfigError - - -def merge_flags(cfg1, cfg2): - """Merge values from cffi config flags cfg2 to cf1 - - Example: - merge_flags({"libraries": ["one"]}, {"libraries": ["two"]}) - {"libraries": ["one", "two"]} - """ - for key, value in cfg2.items(): - if key not in cfg1: - cfg1[key] = value - else: - if not isinstance(cfg1[key], list): - raise TypeError("cfg1[%r] should be a list of strings" % (key,)) - if not isinstance(value, list): - raise TypeError("cfg2[%r] should be a list of strings" % (key,)) - cfg1[key].extend(value) - return cfg1 - - -def call(libname, flag, encoding=sys.getfilesystemencoding()): - """Calls pkg-config and returns the output if found - """ - a = ["pkg-config", "--print-errors"] - a.append(flag) - a.append(libname) - try: - pc = subprocess.Popen(a, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - except EnvironmentError as e: - raise PkgConfigError("cannot run pkg-config: %s" % (str(e).strip(),)) - - bout, berr = pc.communicate() - if pc.returncode != 0: - try: - berr = berr.decode(encoding) - except Exception: - pass - raise PkgConfigError(berr.strip()) - - if sys.version_info >= (3,) and not isinstance(bout, str): # Python 3.x - try: - bout = bout.decode(encoding) - except UnicodeDecodeError: - raise PkgConfigError("pkg-config %s %s returned bytes that cannot " - "be decoded with encoding %r:\n%r" % - (flag, libname, encoding, bout)) - - if os.altsep != '\\' and '\\' in bout: - raise PkgConfigError("pkg-config %s %s returned an unsupported " - "backslash-escaped output:\n%r" % - (flag, libname, bout)) - return bout - - -def flags_from_pkgconfig(libs): - r"""Return compiler line flags for FFI.set_source based on pkg-config output - - Usage - ... - ffibuilder.set_source("_foo", pkgconfig = ["libfoo", "libbar >= 1.8.3"]) - - If pkg-config is installed on build machine, then arguments include_dirs, - library_dirs, libraries, define_macros, extra_compile_args and - extra_link_args are extended with an output of pkg-config for libfoo and - libbar. - - Raises PkgConfigError in case the pkg-config call fails. - """ - - def get_include_dirs(string): - return [x[2:] for x in string.split() if x.startswith("-I")] - - def get_library_dirs(string): - return [x[2:] for x in string.split() if x.startswith("-L")] - - def get_libraries(string): - return [x[2:] for x in string.split() if x.startswith("-l")] - - # convert -Dfoo=bar to list of tuples [("foo", "bar")] expected by distutils - def get_macros(string): - def _macro(x): - x = x[2:] # drop "-D" - if '=' in x: - return tuple(x.split("=", 1)) # "-Dfoo=bar" => ("foo", "bar") - else: - return (x, None) # "-Dfoo" => ("foo", None) - return [_macro(x) for x in string.split() if x.startswith("-D")] - - def get_other_cflags(string): - return [x for x in string.split() if not x.startswith("-I") and - not x.startswith("-D")] - - def get_other_libs(string): - return [x for x in string.split() if not x.startswith("-L") and - not x.startswith("-l")] - - # return kwargs for given libname - def kwargs(libname): - fse = sys.getfilesystemencoding() - all_cflags = call(libname, "--cflags") - all_libs = call(libname, "--libs") - return { - "include_dirs": get_include_dirs(all_cflags), - "library_dirs": get_library_dirs(all_libs), - "libraries": get_libraries(all_libs), - "define_macros": get_macros(all_cflags), - "extra_compile_args": get_other_cflags(all_cflags), - "extra_link_args": get_other_libs(all_libs), - } - - # merge all arguments together - ret = {} - for libname in libs: - lib_flags = kwargs(libname) - merge_flags(ret, lib_flags) - return ret diff --git a/venv/lib/python3.12/site-packages/cffi/recompiler.py b/venv/lib/python3.12/site-packages/cffi/recompiler.py deleted file mode 100644 index 57781a3..0000000 --- a/venv/lib/python3.12/site-packages/cffi/recompiler.py +++ /dev/null @@ -1,1598 +0,0 @@ -import os, sys, io -from . import ffiplatform, model -from .error import VerificationError -from .cffi_opcode import * - -VERSION_BASE = 0x2601 -VERSION_EMBEDDED = 0x2701 -VERSION_CHAR16CHAR32 = 0x2801 - -USE_LIMITED_API = (sys.platform != 'win32' or sys.version_info < (3, 0) or - sys.version_info >= (3, 5)) - - -class GlobalExpr: - def __init__(self, name, address, type_op, size=0, check_value=0): - self.name = name - self.address = address - self.type_op = type_op - self.size = size - self.check_value = check_value - - def as_c_expr(self): - return ' { "%s", (void *)%s, %s, (void *)%s },' % ( - self.name, self.address, self.type_op.as_c_expr(), self.size) - - def as_python_expr(self): - return "b'%s%s',%d" % (self.type_op.as_python_bytes(), self.name, - self.check_value) - -class FieldExpr: - def __init__(self, name, field_offset, field_size, fbitsize, field_type_op): - self.name = name - self.field_offset = field_offset - self.field_size = field_size - self.fbitsize = fbitsize - self.field_type_op = field_type_op - - def as_c_expr(self): - spaces = " " * len(self.name) - return (' { "%s", %s,\n' % (self.name, self.field_offset) + - ' %s %s,\n' % (spaces, self.field_size) + - ' %s %s },' % (spaces, self.field_type_op.as_c_expr())) - - def as_python_expr(self): - raise NotImplementedError - - def as_field_python_expr(self): - if self.field_type_op.op == OP_NOOP: - size_expr = '' - elif self.field_type_op.op == OP_BITFIELD: - size_expr = format_four_bytes(self.fbitsize) - else: - raise NotImplementedError - return "b'%s%s%s'" % (self.field_type_op.as_python_bytes(), - size_expr, - self.name) - -class StructUnionExpr: - def __init__(self, name, type_index, flags, size, alignment, comment, - first_field_index, c_fields): - self.name = name - self.type_index = type_index - self.flags = flags - self.size = size - self.alignment = alignment - self.comment = comment - self.first_field_index = first_field_index - self.c_fields = c_fields - - def as_c_expr(self): - return (' { "%s", %d, %s,' % (self.name, self.type_index, self.flags) - + '\n %s, %s, ' % (self.size, self.alignment) - + '%d, %d ' % (self.first_field_index, len(self.c_fields)) - + ('/* %s */ ' % self.comment if self.comment else '') - + '},') - - def as_python_expr(self): - flags = eval(self.flags, G_FLAGS) - fields_expr = [c_field.as_field_python_expr() - for c_field in self.c_fields] - return "(b'%s%s%s',%s)" % ( - format_four_bytes(self.type_index), - format_four_bytes(flags), - self.name, - ','.join(fields_expr)) - -class EnumExpr: - def __init__(self, name, type_index, size, signed, allenums): - self.name = name - self.type_index = type_index - self.size = size - self.signed = signed - self.allenums = allenums - - def as_c_expr(self): - return (' { "%s", %d, _cffi_prim_int(%s, %s),\n' - ' "%s" },' % (self.name, self.type_index, - self.size, self.signed, self.allenums)) - - def as_python_expr(self): - prim_index = { - (1, 0): PRIM_UINT8, (1, 1): PRIM_INT8, - (2, 0): PRIM_UINT16, (2, 1): PRIM_INT16, - (4, 0): PRIM_UINT32, (4, 1): PRIM_INT32, - (8, 0): PRIM_UINT64, (8, 1): PRIM_INT64, - }[self.size, self.signed] - return "b'%s%s%s\\x00%s'" % (format_four_bytes(self.type_index), - format_four_bytes(prim_index), - self.name, self.allenums) - -class TypenameExpr: - def __init__(self, name, type_index): - self.name = name - self.type_index = type_index - - def as_c_expr(self): - return ' { "%s", %d },' % (self.name, self.type_index) - - def as_python_expr(self): - return "b'%s%s'" % (format_four_bytes(self.type_index), self.name) - - -# ____________________________________________________________ - - -class Recompiler: - _num_externpy = 0 - - def __init__(self, ffi, module_name, target_is_python=False): - self.ffi = ffi - self.module_name = module_name - self.target_is_python = target_is_python - self._version = VERSION_BASE - - def needs_version(self, ver): - self._version = max(self._version, ver) - - def collect_type_table(self): - self._typesdict = {} - self._generate("collecttype") - # - all_decls = sorted(self._typesdict, key=str) - # - # prepare all FUNCTION bytecode sequences first - self.cffi_types = [] - for tp in all_decls: - if tp.is_raw_function: - assert self._typesdict[tp] is None - self._typesdict[tp] = len(self.cffi_types) - self.cffi_types.append(tp) # placeholder - for tp1 in tp.args: - assert isinstance(tp1, (model.VoidType, - model.BasePrimitiveType, - model.PointerType, - model.StructOrUnionOrEnum, - model.FunctionPtrType)) - if self._typesdict[tp1] is None: - self._typesdict[tp1] = len(self.cffi_types) - self.cffi_types.append(tp1) # placeholder - self.cffi_types.append('END') # placeholder - # - # prepare all OTHER bytecode sequences - for tp in all_decls: - if not tp.is_raw_function and self._typesdict[tp] is None: - self._typesdict[tp] = len(self.cffi_types) - self.cffi_types.append(tp) # placeholder - if tp.is_array_type and tp.length is not None: - self.cffi_types.append('LEN') # placeholder - assert None not in self._typesdict.values() - # - # collect all structs and unions and enums - self._struct_unions = {} - self._enums = {} - for tp in all_decls: - if isinstance(tp, model.StructOrUnion): - self._struct_unions[tp] = None - elif isinstance(tp, model.EnumType): - self._enums[tp] = None - for i, tp in enumerate(sorted(self._struct_unions, - key=lambda tp: tp.name)): - self._struct_unions[tp] = i - for i, tp in enumerate(sorted(self._enums, - key=lambda tp: tp.name)): - self._enums[tp] = i - # - # emit all bytecode sequences now - for tp in all_decls: - method = getattr(self, '_emit_bytecode_' + tp.__class__.__name__) - method(tp, self._typesdict[tp]) - # - # consistency check - for op in self.cffi_types: - assert isinstance(op, CffiOp) - self.cffi_types = tuple(self.cffi_types) # don't change any more - - def _enum_fields(self, tp): - # When producing C, expand all anonymous struct/union fields. - # That's necessary to have C code checking the offsets of the - # individual fields contained in them. When producing Python, - # don't do it and instead write it like it is, with the - # corresponding fields having an empty name. Empty names are - # recognized at runtime when we import the generated Python - # file. - expand_anonymous_struct_union = not self.target_is_python - return tp.enumfields(expand_anonymous_struct_union) - - def _do_collect_type(self, tp): - if not isinstance(tp, model.BaseTypeByIdentity): - if isinstance(tp, tuple): - for x in tp: - self._do_collect_type(x) - return - if tp not in self._typesdict: - self._typesdict[tp] = None - if isinstance(tp, model.FunctionPtrType): - self._do_collect_type(tp.as_raw_function()) - elif isinstance(tp, model.StructOrUnion): - if tp.fldtypes is not None and ( - tp not in self.ffi._parser._included_declarations): - for name1, tp1, _, _ in self._enum_fields(tp): - self._do_collect_type(self._field_type(tp, name1, tp1)) - else: - for _, x in tp._get_items(): - self._do_collect_type(x) - - def _generate(self, step_name): - lst = self.ffi._parser._declarations.items() - for name, (tp, quals) in sorted(lst): - kind, realname = name.split(' ', 1) - try: - method = getattr(self, '_generate_cpy_%s_%s' % (kind, - step_name)) - except AttributeError: - raise VerificationError( - "not implemented in recompile(): %r" % name) - try: - self._current_quals = quals - method(tp, realname) - except Exception as e: - model.attach_exception_info(e, name) - raise - - # ---------- - - ALL_STEPS = ["global", "field", "struct_union", "enum", "typename"] - - def collect_step_tables(self): - # collect the declarations for '_cffi_globals', '_cffi_typenames', etc. - self._lsts = {} - for step_name in self.ALL_STEPS: - self._lsts[step_name] = [] - self._seen_struct_unions = set() - self._generate("ctx") - self._add_missing_struct_unions() - # - for step_name in self.ALL_STEPS: - lst = self._lsts[step_name] - if step_name != "field": - lst.sort(key=lambda entry: entry.name) - self._lsts[step_name] = tuple(lst) # don't change any more - # - # check for a possible internal inconsistency: _cffi_struct_unions - # should have been generated with exactly self._struct_unions - lst = self._lsts["struct_union"] - for tp, i in self._struct_unions.items(): - assert i < len(lst) - assert lst[i].name == tp.name - assert len(lst) == len(self._struct_unions) - # same with enums - lst = self._lsts["enum"] - for tp, i in self._enums.items(): - assert i < len(lst) - assert lst[i].name == tp.name - assert len(lst) == len(self._enums) - - # ---------- - - def _prnt(self, what=''): - self._f.write(what + '\n') - - def write_source_to_f(self, f, preamble): - if self.target_is_python: - assert preamble is None - self.write_py_source_to_f(f) - else: - assert preamble is not None - self.write_c_source_to_f(f, preamble) - - def _rel_readlines(self, filename): - g = open(os.path.join(os.path.dirname(__file__), filename), 'r') - lines = g.readlines() - g.close() - return lines - - def write_c_source_to_f(self, f, preamble): - self._f = f - prnt = self._prnt - if self.ffi._embedding is not None: - prnt('#define _CFFI_USE_EMBEDDING') - if not USE_LIMITED_API: - prnt('#define _CFFI_NO_LIMITED_API') - # - # first the '#include' (actually done by inlining the file's content) - lines = self._rel_readlines('_cffi_include.h') - i = lines.index('#include "parse_c_type.h"\n') - lines[i:i+1] = self._rel_readlines('parse_c_type.h') - prnt(''.join(lines)) - # - # if we have ffi._embedding != None, we give it here as a macro - # and include an extra file - base_module_name = self.module_name.split('.')[-1] - if self.ffi._embedding is not None: - prnt('#define _CFFI_MODULE_NAME "%s"' % (self.module_name,)) - prnt('static const char _CFFI_PYTHON_STARTUP_CODE[] = {') - self._print_string_literal_in_array(self.ffi._embedding) - prnt('0 };') - prnt('#ifdef PYPY_VERSION') - prnt('# define _CFFI_PYTHON_STARTUP_FUNC _cffi_pypyinit_%s' % ( - base_module_name,)) - prnt('#elif PY_MAJOR_VERSION >= 3') - prnt('# define _CFFI_PYTHON_STARTUP_FUNC PyInit_%s' % ( - base_module_name,)) - prnt('#else') - prnt('# define _CFFI_PYTHON_STARTUP_FUNC init%s' % ( - base_module_name,)) - prnt('#endif') - lines = self._rel_readlines('_embedding.h') - i = lines.index('#include "_cffi_errors.h"\n') - lines[i:i+1] = self._rel_readlines('_cffi_errors.h') - prnt(''.join(lines)) - self.needs_version(VERSION_EMBEDDED) - # - # then paste the C source given by the user, verbatim. - prnt('/************************************************************/') - prnt() - prnt(preamble) - prnt() - prnt('/************************************************************/') - prnt() - # - # the declaration of '_cffi_types' - prnt('static void *_cffi_types[] = {') - typeindex2type = dict([(i, tp) for (tp, i) in self._typesdict.items()]) - for i, op in enumerate(self.cffi_types): - comment = '' - if i in typeindex2type: - comment = ' // ' + typeindex2type[i]._get_c_name() - prnt('/* %2d */ %s,%s' % (i, op.as_c_expr(), comment)) - if not self.cffi_types: - prnt(' 0') - prnt('};') - prnt() - # - # call generate_cpy_xxx_decl(), for every xxx found from - # ffi._parser._declarations. This generates all the functions. - self._seen_constants = set() - self._generate("decl") - # - # the declaration of '_cffi_globals' and '_cffi_typenames' - nums = {} - for step_name in self.ALL_STEPS: - lst = self._lsts[step_name] - nums[step_name] = len(lst) - if nums[step_name] > 0: - prnt('static const struct _cffi_%s_s _cffi_%ss[] = {' % ( - step_name, step_name)) - for entry in lst: - prnt(entry.as_c_expr()) - prnt('};') - prnt() - # - # the declaration of '_cffi_includes' - if self.ffi._included_ffis: - prnt('static const char * const _cffi_includes[] = {') - for ffi_to_include in self.ffi._included_ffis: - try: - included_module_name, included_source = ( - ffi_to_include._assigned_source[:2]) - except AttributeError: - raise VerificationError( - "ffi object %r includes %r, but the latter has not " - "been prepared with set_source()" % ( - self.ffi, ffi_to_include,)) - if included_source is None: - raise VerificationError( - "not implemented yet: ffi.include() of a Python-based " - "ffi inside a C-based ffi") - prnt(' "%s",' % (included_module_name,)) - prnt(' NULL') - prnt('};') - prnt() - # - # the declaration of '_cffi_type_context' - prnt('static const struct _cffi_type_context_s _cffi_type_context = {') - prnt(' _cffi_types,') - for step_name in self.ALL_STEPS: - if nums[step_name] > 0: - prnt(' _cffi_%ss,' % step_name) - else: - prnt(' NULL, /* no %ss */' % step_name) - for step_name in self.ALL_STEPS: - if step_name != "field": - prnt(' %d, /* num_%ss */' % (nums[step_name], step_name)) - if self.ffi._included_ffis: - prnt(' _cffi_includes,') - else: - prnt(' NULL, /* no includes */') - prnt(' %d, /* num_types */' % (len(self.cffi_types),)) - flags = 0 - if self._num_externpy > 0 or self.ffi._embedding is not None: - flags |= 1 # set to mean that we use extern "Python" - prnt(' %d, /* flags */' % flags) - prnt('};') - prnt() - # - # the init function - prnt('#ifdef __GNUC__') - prnt('# pragma GCC visibility push(default) /* for -fvisibility= */') - prnt('#endif') - prnt() - prnt('#ifdef PYPY_VERSION') - prnt('PyMODINIT_FUNC') - prnt('_cffi_pypyinit_%s(const void *p[])' % (base_module_name,)) - prnt('{') - if flags & 1: - prnt(' if (((intptr_t)p[0]) >= 0x0A03) {') - prnt(' _cffi_call_python_org = ' - '(void(*)(struct _cffi_externpy_s *, char *))p[1];') - prnt(' }') - prnt(' p[0] = (const void *)0x%x;' % self._version) - prnt(' p[1] = &_cffi_type_context;') - prnt('#if PY_MAJOR_VERSION >= 3') - prnt(' return NULL;') - prnt('#endif') - prnt('}') - # on Windows, distutils insists on putting init_cffi_xyz in - # 'export_symbols', so instead of fighting it, just give up and - # give it one - prnt('# ifdef _MSC_VER') - prnt(' PyMODINIT_FUNC') - prnt('# if PY_MAJOR_VERSION >= 3') - prnt(' PyInit_%s(void) { return NULL; }' % (base_module_name,)) - prnt('# else') - prnt(' init%s(void) { }' % (base_module_name,)) - prnt('# endif') - prnt('# endif') - prnt('#elif PY_MAJOR_VERSION >= 3') - prnt('PyMODINIT_FUNC') - prnt('PyInit_%s(void)' % (base_module_name,)) - prnt('{') - prnt(' return _cffi_init("%s", 0x%x, &_cffi_type_context);' % ( - self.module_name, self._version)) - prnt('}') - prnt('#else') - prnt('PyMODINIT_FUNC') - prnt('init%s(void)' % (base_module_name,)) - prnt('{') - prnt(' _cffi_init("%s", 0x%x, &_cffi_type_context);' % ( - self.module_name, self._version)) - prnt('}') - prnt('#endif') - prnt() - prnt('#ifdef __GNUC__') - prnt('# pragma GCC visibility pop') - prnt('#endif') - self._version = None - - def _to_py(self, x): - if isinstance(x, str): - return "b'%s'" % (x,) - if isinstance(x, (list, tuple)): - rep = [self._to_py(item) for item in x] - if len(rep) == 1: - rep.append('') - return "(%s)" % (','.join(rep),) - return x.as_python_expr() # Py2: unicode unexpected; Py3: bytes unexp. - - def write_py_source_to_f(self, f): - self._f = f - prnt = self._prnt - # - # header - prnt("# auto-generated file") - prnt("import _cffi_backend") - # - # the 'import' of the included ffis - num_includes = len(self.ffi._included_ffis or ()) - for i in range(num_includes): - ffi_to_include = self.ffi._included_ffis[i] - try: - included_module_name, included_source = ( - ffi_to_include._assigned_source[:2]) - except AttributeError: - raise VerificationError( - "ffi object %r includes %r, but the latter has not " - "been prepared with set_source()" % ( - self.ffi, ffi_to_include,)) - if included_source is not None: - raise VerificationError( - "not implemented yet: ffi.include() of a C-based " - "ffi inside a Python-based ffi") - prnt('from %s import ffi as _ffi%d' % (included_module_name, i)) - prnt() - prnt("ffi = _cffi_backend.FFI('%s'," % (self.module_name,)) - prnt(" _version = 0x%x," % (self._version,)) - self._version = None - # - # the '_types' keyword argument - self.cffi_types = tuple(self.cffi_types) # don't change any more - types_lst = [op.as_python_bytes() for op in self.cffi_types] - prnt(' _types = %s,' % (self._to_py(''.join(types_lst)),)) - typeindex2type = dict([(i, tp) for (tp, i) in self._typesdict.items()]) - # - # the keyword arguments from ALL_STEPS - for step_name in self.ALL_STEPS: - lst = self._lsts[step_name] - if len(lst) > 0 and step_name != "field": - prnt(' _%ss = %s,' % (step_name, self._to_py(lst))) - # - # the '_includes' keyword argument - if num_includes > 0: - prnt(' _includes = (%s,),' % ( - ', '.join(['_ffi%d' % i for i in range(num_includes)]),)) - # - # the footer - prnt(')') - - # ---------- - - def _gettypenum(self, type): - # a KeyError here is a bug. please report it! :-) - return self._typesdict[type] - - def _convert_funcarg_to_c(self, tp, fromvar, tovar, errcode): - extraarg = '' - if isinstance(tp, model.BasePrimitiveType) and not tp.is_complex_type(): - if tp.is_integer_type() and tp.name != '_Bool': - converter = '_cffi_to_c_int' - extraarg = ', %s' % tp.name - elif isinstance(tp, model.UnknownFloatType): - # don't check with is_float_type(): it may be a 'long - # double' here, and _cffi_to_c_double would loose precision - converter = '(%s)_cffi_to_c_double' % (tp.get_c_name(''),) - else: - cname = tp.get_c_name('') - converter = '(%s)_cffi_to_c_%s' % (cname, - tp.name.replace(' ', '_')) - if cname in ('char16_t', 'char32_t'): - self.needs_version(VERSION_CHAR16CHAR32) - errvalue = '-1' - # - elif isinstance(tp, model.PointerType): - self._convert_funcarg_to_c_ptr_or_array(tp, fromvar, - tovar, errcode) - return - # - elif (isinstance(tp, model.StructOrUnionOrEnum) or - isinstance(tp, model.BasePrimitiveType)): - # a struct (not a struct pointer) as a function argument; - # or, a complex (the same code works) - self._prnt(' if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)' - % (tovar, self._gettypenum(tp), fromvar)) - self._prnt(' %s;' % errcode) - return - # - elif isinstance(tp, model.FunctionPtrType): - converter = '(%s)_cffi_to_c_pointer' % tp.get_c_name('') - extraarg = ', _cffi_type(%d)' % self._gettypenum(tp) - errvalue = 'NULL' - # - else: - raise NotImplementedError(tp) - # - self._prnt(' %s = %s(%s%s);' % (tovar, converter, fromvar, extraarg)) - self._prnt(' if (%s == (%s)%s && PyErr_Occurred())' % ( - tovar, tp.get_c_name(''), errvalue)) - self._prnt(' %s;' % errcode) - - def _extra_local_variables(self, tp, localvars, freelines): - if isinstance(tp, model.PointerType): - localvars.add('Py_ssize_t datasize') - localvars.add('struct _cffi_freeme_s *large_args_free = NULL') - freelines.add('if (large_args_free != NULL)' - ' _cffi_free_array_arguments(large_args_free);') - - def _convert_funcarg_to_c_ptr_or_array(self, tp, fromvar, tovar, errcode): - self._prnt(' datasize = _cffi_prepare_pointer_call_argument(') - self._prnt(' _cffi_type(%d), %s, (char **)&%s);' % ( - self._gettypenum(tp), fromvar, tovar)) - self._prnt(' if (datasize != 0) {') - self._prnt(' %s = ((size_t)datasize) <= 640 ? ' - '(%s)alloca((size_t)datasize) : NULL;' % ( - tovar, tp.get_c_name(''))) - self._prnt(' if (_cffi_convert_array_argument(_cffi_type(%d), %s, ' - '(char **)&%s,' % (self._gettypenum(tp), fromvar, tovar)) - self._prnt(' datasize, &large_args_free) < 0)') - self._prnt(' %s;' % errcode) - self._prnt(' }') - - def _convert_expr_from_c(self, tp, var, context): - if isinstance(tp, model.BasePrimitiveType): - if tp.is_integer_type() and tp.name != '_Bool': - return '_cffi_from_c_int(%s, %s)' % (var, tp.name) - elif isinstance(tp, model.UnknownFloatType): - return '_cffi_from_c_double(%s)' % (var,) - elif tp.name != 'long double' and not tp.is_complex_type(): - cname = tp.name.replace(' ', '_') - if cname in ('char16_t', 'char32_t'): - self.needs_version(VERSION_CHAR16CHAR32) - return '_cffi_from_c_%s(%s)' % (cname, var) - else: - return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( - var, self._gettypenum(tp)) - elif isinstance(tp, (model.PointerType, model.FunctionPtrType)): - return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( - var, self._gettypenum(tp)) - elif isinstance(tp, model.ArrayType): - return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( - var, self._gettypenum(model.PointerType(tp.item))) - elif isinstance(tp, model.StructOrUnion): - if tp.fldnames is None: - raise TypeError("'%s' is used as %s, but is opaque" % ( - tp._get_c_name(), context)) - return '_cffi_from_c_struct((char *)&%s, _cffi_type(%d))' % ( - var, self._gettypenum(tp)) - elif isinstance(tp, model.EnumType): - return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( - var, self._gettypenum(tp)) - else: - raise NotImplementedError(tp) - - # ---------- - # typedefs - - def _typedef_type(self, tp, name): - return self._global_type(tp, "(*(%s *)0)" % (name,)) - - def _generate_cpy_typedef_collecttype(self, tp, name): - self._do_collect_type(self._typedef_type(tp, name)) - - def _generate_cpy_typedef_decl(self, tp, name): - pass - - def _typedef_ctx(self, tp, name): - type_index = self._typesdict[tp] - self._lsts["typename"].append(TypenameExpr(name, type_index)) - - def _generate_cpy_typedef_ctx(self, tp, name): - tp = self._typedef_type(tp, name) - self._typedef_ctx(tp, name) - if getattr(tp, "origin", None) == "unknown_type": - self._struct_ctx(tp, tp.name, approxname=None) - elif isinstance(tp, model.NamedPointerType): - self._struct_ctx(tp.totype, tp.totype.name, approxname=tp.name, - named_ptr=tp) - - # ---------- - # function declarations - - def _generate_cpy_function_collecttype(self, tp, name): - self._do_collect_type(tp.as_raw_function()) - if tp.ellipsis and not self.target_is_python: - self._do_collect_type(tp) - - def _generate_cpy_function_decl(self, tp, name): - assert not self.target_is_python - assert isinstance(tp, model.FunctionPtrType) - if tp.ellipsis: - # cannot support vararg functions better than this: check for its - # exact type (including the fixed arguments), and build it as a - # constant function pointer (no CPython wrapper) - self._generate_cpy_constant_decl(tp, name) - return - prnt = self._prnt - numargs = len(tp.args) - if numargs == 0: - argname = 'noarg' - elif numargs == 1: - argname = 'arg0' - else: - argname = 'args' - # - # ------------------------------ - # the 'd' version of the function, only for addressof(lib, 'func') - arguments = [] - call_arguments = [] - context = 'argument of %s' % name - for i, type in enumerate(tp.args): - arguments.append(type.get_c_name(' x%d' % i, context)) - call_arguments.append('x%d' % i) - repr_arguments = ', '.join(arguments) - repr_arguments = repr_arguments or 'void' - if tp.abi: - abi = tp.abi + ' ' - else: - abi = '' - name_and_arguments = '%s_cffi_d_%s(%s)' % (abi, name, repr_arguments) - prnt('static %s' % (tp.result.get_c_name(name_and_arguments),)) - prnt('{') - call_arguments = ', '.join(call_arguments) - result_code = 'return ' - if isinstance(tp.result, model.VoidType): - result_code = '' - prnt(' %s%s(%s);' % (result_code, name, call_arguments)) - prnt('}') - # - prnt('#ifndef PYPY_VERSION') # ------------------------------ - # - prnt('static PyObject *') - prnt('_cffi_f_%s(PyObject *self, PyObject *%s)' % (name, argname)) - prnt('{') - # - context = 'argument of %s' % name - for i, type in enumerate(tp.args): - arg = type.get_c_name(' x%d' % i, context) - prnt(' %s;' % arg) - # - localvars = set() - freelines = set() - for type in tp.args: - self._extra_local_variables(type, localvars, freelines) - for decl in sorted(localvars): - prnt(' %s;' % (decl,)) - # - if not isinstance(tp.result, model.VoidType): - result_code = 'result = ' - context = 'result of %s' % name - result_decl = ' %s;' % tp.result.get_c_name(' result', context) - prnt(result_decl) - prnt(' PyObject *pyresult;') - else: - result_decl = None - result_code = '' - # - if len(tp.args) > 1: - rng = range(len(tp.args)) - for i in rng: - prnt(' PyObject *arg%d;' % i) - prnt() - prnt(' if (!PyArg_UnpackTuple(args, "%s", %d, %d, %s))' % ( - name, len(rng), len(rng), - ', '.join(['&arg%d' % i for i in rng]))) - prnt(' return NULL;') - prnt() - # - for i, type in enumerate(tp.args): - self._convert_funcarg_to_c(type, 'arg%d' % i, 'x%d' % i, - 'return NULL') - prnt() - # - prnt(' Py_BEGIN_ALLOW_THREADS') - prnt(' _cffi_restore_errno();') - call_arguments = ['x%d' % i for i in range(len(tp.args))] - call_arguments = ', '.join(call_arguments) - prnt(' { %s%s(%s); }' % (result_code, name, call_arguments)) - prnt(' _cffi_save_errno();') - prnt(' Py_END_ALLOW_THREADS') - prnt() - # - prnt(' (void)self; /* unused */') - if numargs == 0: - prnt(' (void)noarg; /* unused */') - if result_code: - prnt(' pyresult = %s;' % - self._convert_expr_from_c(tp.result, 'result', 'result type')) - for freeline in freelines: - prnt(' ' + freeline) - prnt(' return pyresult;') - else: - for freeline in freelines: - prnt(' ' + freeline) - prnt(' Py_INCREF(Py_None);') - prnt(' return Py_None;') - prnt('}') - # - prnt('#else') # ------------------------------ - # - # the PyPy version: need to replace struct/union arguments with - # pointers, and if the result is a struct/union, insert a first - # arg that is a pointer to the result. We also do that for - # complex args and return type. - def need_indirection(type): - return (isinstance(type, model.StructOrUnion) or - (isinstance(type, model.PrimitiveType) and - type.is_complex_type())) - difference = False - arguments = [] - call_arguments = [] - context = 'argument of %s' % name - for i, type in enumerate(tp.args): - indirection = '' - if need_indirection(type): - indirection = '*' - difference = True - arg = type.get_c_name(' %sx%d' % (indirection, i), context) - arguments.append(arg) - call_arguments.append('%sx%d' % (indirection, i)) - tp_result = tp.result - if need_indirection(tp_result): - context = 'result of %s' % name - arg = tp_result.get_c_name(' *result', context) - arguments.insert(0, arg) - tp_result = model.void_type - result_decl = None - result_code = '*result = ' - difference = True - if difference: - repr_arguments = ', '.join(arguments) - repr_arguments = repr_arguments or 'void' - name_and_arguments = '%s_cffi_f_%s(%s)' % (abi, name, - repr_arguments) - prnt('static %s' % (tp_result.get_c_name(name_and_arguments),)) - prnt('{') - if result_decl: - prnt(result_decl) - call_arguments = ', '.join(call_arguments) - prnt(' { %s%s(%s); }' % (result_code, name, call_arguments)) - if result_decl: - prnt(' return result;') - prnt('}') - else: - prnt('# define _cffi_f_%s _cffi_d_%s' % (name, name)) - # - prnt('#endif') # ------------------------------ - prnt() - - def _generate_cpy_function_ctx(self, tp, name): - if tp.ellipsis and not self.target_is_python: - self._generate_cpy_constant_ctx(tp, name) - return - type_index = self._typesdict[tp.as_raw_function()] - numargs = len(tp.args) - if self.target_is_python: - meth_kind = OP_DLOPEN_FUNC - elif numargs == 0: - meth_kind = OP_CPYTHON_BLTN_N # 'METH_NOARGS' - elif numargs == 1: - meth_kind = OP_CPYTHON_BLTN_O # 'METH_O' - else: - meth_kind = OP_CPYTHON_BLTN_V # 'METH_VARARGS' - self._lsts["global"].append( - GlobalExpr(name, '_cffi_f_%s' % name, - CffiOp(meth_kind, type_index), - size='_cffi_d_%s' % name)) - - # ---------- - # named structs or unions - - def _field_type(self, tp_struct, field_name, tp_field): - if isinstance(tp_field, model.ArrayType): - actual_length = tp_field.length - if actual_length == '...': - ptr_struct_name = tp_struct.get_c_name('*') - actual_length = '_cffi_array_len(((%s)0)->%s)' % ( - ptr_struct_name, field_name) - tp_item = self._field_type(tp_struct, '%s[0]' % field_name, - tp_field.item) - tp_field = model.ArrayType(tp_item, actual_length) - return tp_field - - def _struct_collecttype(self, tp): - self._do_collect_type(tp) - if self.target_is_python: - # also requires nested anon struct/unions in ABI mode, recursively - for fldtype in tp.anonymous_struct_fields(): - self._struct_collecttype(fldtype) - - def _struct_decl(self, tp, cname, approxname): - if tp.fldtypes is None: - return - prnt = self._prnt - checkfuncname = '_cffi_checkfld_%s' % (approxname,) - prnt('_CFFI_UNUSED_FN') - prnt('static void %s(%s *p)' % (checkfuncname, cname)) - prnt('{') - prnt(' /* only to generate compile-time warnings or errors */') - prnt(' (void)p;') - for fname, ftype, fbitsize, fqual in self._enum_fields(tp): - try: - if ftype.is_integer_type() or fbitsize >= 0: - # accept all integers, but complain on float or double - if fname != '': - prnt(" (void)((p->%s) | 0); /* check that '%s.%s' is " - "an integer */" % (fname, cname, fname)) - continue - # only accept exactly the type declared, except that '[]' - # is interpreted as a '*' and so will match any array length. - # (It would also match '*', but that's harder to detect...) - while (isinstance(ftype, model.ArrayType) - and (ftype.length is None or ftype.length == '...')): - ftype = ftype.item - fname = fname + '[0]' - prnt(' { %s = &p->%s; (void)tmp; }' % ( - ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual), - fname)) - except VerificationError as e: - prnt(' /* %s */' % str(e)) # cannot verify it, ignore - prnt('}') - prnt('struct _cffi_align_%s { char x; %s y; };' % (approxname, cname)) - prnt() - - def _struct_ctx(self, tp, cname, approxname, named_ptr=None): - type_index = self._typesdict[tp] - reason_for_not_expanding = None - flags = [] - if isinstance(tp, model.UnionType): - flags.append("_CFFI_F_UNION") - if tp.fldtypes is None: - flags.append("_CFFI_F_OPAQUE") - reason_for_not_expanding = "opaque" - if (tp not in self.ffi._parser._included_declarations and - (named_ptr is None or - named_ptr not in self.ffi._parser._included_declarations)): - if tp.fldtypes is None: - pass # opaque - elif tp.partial or any(tp.anonymous_struct_fields()): - pass # field layout obtained silently from the C compiler - else: - flags.append("_CFFI_F_CHECK_FIELDS") - if tp.packed: - if tp.packed > 1: - raise NotImplementedError( - "%r is declared with 'pack=%r'; only 0 or 1 are " - "supported in API mode (try to use \"...;\", which " - "does not require a 'pack' declaration)" % - (tp, tp.packed)) - flags.append("_CFFI_F_PACKED") - else: - flags.append("_CFFI_F_EXTERNAL") - reason_for_not_expanding = "external" - flags = '|'.join(flags) or '0' - c_fields = [] - if reason_for_not_expanding is None: - enumfields = list(self._enum_fields(tp)) - for fldname, fldtype, fbitsize, fqual in enumfields: - fldtype = self._field_type(tp, fldname, fldtype) - self._check_not_opaque(fldtype, - "field '%s.%s'" % (tp.name, fldname)) - # cname is None for _add_missing_struct_unions() only - op = OP_NOOP - if fbitsize >= 0: - op = OP_BITFIELD - size = '%d /* bits */' % fbitsize - elif cname is None or ( - isinstance(fldtype, model.ArrayType) and - fldtype.length is None): - size = '(size_t)-1' - else: - size = 'sizeof(((%s)0)->%s)' % ( - tp.get_c_name('*') if named_ptr is None - else named_ptr.name, - fldname) - if cname is None or fbitsize >= 0: - offset = '(size_t)-1' - elif named_ptr is not None: - offset = '((char *)&((%s)4096)->%s) - (char *)4096' % ( - named_ptr.name, fldname) - else: - offset = 'offsetof(%s, %s)' % (tp.get_c_name(''), fldname) - c_fields.append( - FieldExpr(fldname, offset, size, fbitsize, - CffiOp(op, self._typesdict[fldtype]))) - first_field_index = len(self._lsts["field"]) - self._lsts["field"].extend(c_fields) - # - if cname is None: # unknown name, for _add_missing_struct_unions - size = '(size_t)-2' - align = -2 - comment = "unnamed" - else: - if named_ptr is not None: - size = 'sizeof(*(%s)0)' % (named_ptr.name,) - align = '-1 /* unknown alignment */' - else: - size = 'sizeof(%s)' % (cname,) - align = 'offsetof(struct _cffi_align_%s, y)' % (approxname,) - comment = None - else: - size = '(size_t)-1' - align = -1 - first_field_index = -1 - comment = reason_for_not_expanding - self._lsts["struct_union"].append( - StructUnionExpr(tp.name, type_index, flags, size, align, comment, - first_field_index, c_fields)) - self._seen_struct_unions.add(tp) - - def _check_not_opaque(self, tp, location): - while isinstance(tp, model.ArrayType): - tp = tp.item - if isinstance(tp, model.StructOrUnion) and tp.fldtypes is None: - raise TypeError( - "%s is of an opaque type (not declared in cdef())" % location) - - def _add_missing_struct_unions(self): - # not very nice, but some struct declarations might be missing - # because they don't have any known C name. Check that they are - # not partial (we can't complete or verify them!) and emit them - # anonymously. - lst = list(self._struct_unions.items()) - lst.sort(key=lambda tp_order: tp_order[1]) - for tp, order in lst: - if tp not in self._seen_struct_unions: - if tp.partial: - raise NotImplementedError("internal inconsistency: %r is " - "partial but was not seen at " - "this point" % (tp,)) - if tp.name.startswith('$') and tp.name[1:].isdigit(): - approxname = tp.name[1:] - elif tp.name == '_IO_FILE' and tp.forcename == 'FILE': - approxname = 'FILE' - self._typedef_ctx(tp, 'FILE') - else: - raise NotImplementedError("internal inconsistency: %r" % - (tp,)) - self._struct_ctx(tp, None, approxname) - - def _generate_cpy_struct_collecttype(self, tp, name): - self._struct_collecttype(tp) - _generate_cpy_union_collecttype = _generate_cpy_struct_collecttype - - def _struct_names(self, tp): - cname = tp.get_c_name('') - if ' ' in cname: - return cname, cname.replace(' ', '_') - else: - return cname, '_' + cname - - def _generate_cpy_struct_decl(self, tp, name): - self._struct_decl(tp, *self._struct_names(tp)) - _generate_cpy_union_decl = _generate_cpy_struct_decl - - def _generate_cpy_struct_ctx(self, tp, name): - self._struct_ctx(tp, *self._struct_names(tp)) - _generate_cpy_union_ctx = _generate_cpy_struct_ctx - - # ---------- - # 'anonymous' declarations. These are produced for anonymous structs - # or unions; the 'name' is obtained by a typedef. - - def _generate_cpy_anonymous_collecttype(self, tp, name): - if isinstance(tp, model.EnumType): - self._generate_cpy_enum_collecttype(tp, name) - else: - self._struct_collecttype(tp) - - def _generate_cpy_anonymous_decl(self, tp, name): - if isinstance(tp, model.EnumType): - self._generate_cpy_enum_decl(tp) - else: - self._struct_decl(tp, name, 'typedef_' + name) - - def _generate_cpy_anonymous_ctx(self, tp, name): - if isinstance(tp, model.EnumType): - self._enum_ctx(tp, name) - else: - self._struct_ctx(tp, name, 'typedef_' + name) - - # ---------- - # constants, declared with "static const ..." - - def _generate_cpy_const(self, is_int, name, tp=None, category='const', - check_value=None): - if (category, name) in self._seen_constants: - raise VerificationError( - "duplicate declaration of %s '%s'" % (category, name)) - self._seen_constants.add((category, name)) - # - prnt = self._prnt - funcname = '_cffi_%s_%s' % (category, name) - if is_int: - prnt('static int %s(unsigned long long *o)' % funcname) - prnt('{') - prnt(' int n = (%s) <= 0;' % (name,)) - prnt(' *o = (unsigned long long)((%s) | 0);' - ' /* check that %s is an integer */' % (name, name)) - if check_value is not None: - if check_value > 0: - check_value = '%dU' % (check_value,) - prnt(' if (!_cffi_check_int(*o, n, %s))' % (check_value,)) - prnt(' n |= 2;') - prnt(' return n;') - prnt('}') - else: - assert check_value is None - prnt('static void %s(char *o)' % funcname) - prnt('{') - prnt(' *(%s)o = %s;' % (tp.get_c_name('*'), name)) - prnt('}') - prnt() - - def _generate_cpy_constant_collecttype(self, tp, name): - is_int = tp.is_integer_type() - if not is_int or self.target_is_python: - self._do_collect_type(tp) - - def _generate_cpy_constant_decl(self, tp, name): - is_int = tp.is_integer_type() - self._generate_cpy_const(is_int, name, tp) - - def _generate_cpy_constant_ctx(self, tp, name): - if not self.target_is_python and tp.is_integer_type(): - type_op = CffiOp(OP_CONSTANT_INT, -1) - else: - if self.target_is_python: - const_kind = OP_DLOPEN_CONST - else: - const_kind = OP_CONSTANT - type_index = self._typesdict[tp] - type_op = CffiOp(const_kind, type_index) - self._lsts["global"].append( - GlobalExpr(name, '_cffi_const_%s' % name, type_op)) - - # ---------- - # enums - - def _generate_cpy_enum_collecttype(self, tp, name): - self._do_collect_type(tp) - - def _generate_cpy_enum_decl(self, tp, name=None): - for enumerator in tp.enumerators: - self._generate_cpy_const(True, enumerator) - - def _enum_ctx(self, tp, cname): - type_index = self._typesdict[tp] - type_op = CffiOp(OP_ENUM, -1) - if self.target_is_python: - tp.check_not_partial() - for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): - self._lsts["global"].append( - GlobalExpr(enumerator, '_cffi_const_%s' % enumerator, type_op, - check_value=enumvalue)) - # - if cname is not None and '$' not in cname and not self.target_is_python: - size = "sizeof(%s)" % cname - signed = "((%s)-1) <= 0" % cname - else: - basetp = tp.build_baseinttype(self.ffi, []) - size = self.ffi.sizeof(basetp) - signed = int(int(self.ffi.cast(basetp, -1)) < 0) - allenums = ",".join(tp.enumerators) - self._lsts["enum"].append( - EnumExpr(tp.name, type_index, size, signed, allenums)) - - def _generate_cpy_enum_ctx(self, tp, name): - self._enum_ctx(tp, tp._get_c_name()) - - # ---------- - # macros: for now only for integers - - def _generate_cpy_macro_collecttype(self, tp, name): - pass - - def _generate_cpy_macro_decl(self, tp, name): - if tp == '...': - check_value = None - else: - check_value = tp # an integer - self._generate_cpy_const(True, name, check_value=check_value) - - def _generate_cpy_macro_ctx(self, tp, name): - if tp == '...': - if self.target_is_python: - raise VerificationError( - "cannot use the syntax '...' in '#define %s ...' when " - "using the ABI mode" % (name,)) - check_value = None - else: - check_value = tp # an integer - type_op = CffiOp(OP_CONSTANT_INT, -1) - self._lsts["global"].append( - GlobalExpr(name, '_cffi_const_%s' % name, type_op, - check_value=check_value)) - - # ---------- - # global variables - - def _global_type(self, tp, global_name): - if isinstance(tp, model.ArrayType): - actual_length = tp.length - if actual_length == '...': - actual_length = '_cffi_array_len(%s)' % (global_name,) - tp_item = self._global_type(tp.item, '%s[0]' % global_name) - tp = model.ArrayType(tp_item, actual_length) - return tp - - def _generate_cpy_variable_collecttype(self, tp, name): - self._do_collect_type(self._global_type(tp, name)) - - def _generate_cpy_variable_decl(self, tp, name): - prnt = self._prnt - tp = self._global_type(tp, name) - if isinstance(tp, model.ArrayType) and tp.length is None: - tp = tp.item - ampersand = '' - else: - ampersand = '&' - # This code assumes that casts from "tp *" to "void *" is a - # no-op, i.e. a function that returns a "tp *" can be called - # as if it returned a "void *". This should be generally true - # on any modern machine. The only exception to that rule (on - # uncommon architectures, and as far as I can tell) might be - # if 'tp' were a function type, but that is not possible here. - # (If 'tp' is a function _pointer_ type, then casts from "fn_t - # **" to "void *" are again no-ops, as far as I can tell.) - decl = '*_cffi_var_%s(void)' % (name,) - prnt('static ' + tp.get_c_name(decl, quals=self._current_quals)) - prnt('{') - prnt(' return %s(%s);' % (ampersand, name)) - prnt('}') - prnt() - - def _generate_cpy_variable_ctx(self, tp, name): - tp = self._global_type(tp, name) - type_index = self._typesdict[tp] - if self.target_is_python: - op = OP_GLOBAL_VAR - else: - op = OP_GLOBAL_VAR_F - self._lsts["global"].append( - GlobalExpr(name, '_cffi_var_%s' % name, CffiOp(op, type_index))) - - # ---------- - # extern "Python" - - def _generate_cpy_extern_python_collecttype(self, tp, name): - assert isinstance(tp, model.FunctionPtrType) - self._do_collect_type(tp) - _generate_cpy_dllexport_python_collecttype = \ - _generate_cpy_extern_python_plus_c_collecttype = \ - _generate_cpy_extern_python_collecttype - - def _extern_python_decl(self, tp, name, tag_and_space): - prnt = self._prnt - if isinstance(tp.result, model.VoidType): - size_of_result = '0' - else: - context = 'result of %s' % name - size_of_result = '(int)sizeof(%s)' % ( - tp.result.get_c_name('', context),) - prnt('static struct _cffi_externpy_s _cffi_externpy__%s =' % name) - prnt(' { "%s.%s", %s, 0, 0 };' % ( - self.module_name, name, size_of_result)) - prnt() - # - arguments = [] - context = 'argument of %s' % name - for i, type in enumerate(tp.args): - arg = type.get_c_name(' a%d' % i, context) - arguments.append(arg) - # - repr_arguments = ', '.join(arguments) - repr_arguments = repr_arguments or 'void' - name_and_arguments = '%s(%s)' % (name, repr_arguments) - if tp.abi == "__stdcall": - name_and_arguments = '_cffi_stdcall ' + name_and_arguments - # - def may_need_128_bits(tp): - return (isinstance(tp, model.PrimitiveType) and - tp.name == 'long double') - # - size_of_a = max(len(tp.args)*8, 8) - if may_need_128_bits(tp.result): - size_of_a = max(size_of_a, 16) - if isinstance(tp.result, model.StructOrUnion): - size_of_a = 'sizeof(%s) > %d ? sizeof(%s) : %d' % ( - tp.result.get_c_name(''), size_of_a, - tp.result.get_c_name(''), size_of_a) - prnt('%s%s' % (tag_and_space, tp.result.get_c_name(name_and_arguments))) - prnt('{') - prnt(' char a[%s];' % size_of_a) - prnt(' char *p = a;') - for i, type in enumerate(tp.args): - arg = 'a%d' % i - if (isinstance(type, model.StructOrUnion) or - may_need_128_bits(type)): - arg = '&' + arg - type = model.PointerType(type) - prnt(' *(%s)(p + %d) = %s;' % (type.get_c_name('*'), i*8, arg)) - prnt(' _cffi_call_python(&_cffi_externpy__%s, p);' % name) - if not isinstance(tp.result, model.VoidType): - prnt(' return *(%s)p;' % (tp.result.get_c_name('*'),)) - prnt('}') - prnt() - self._num_externpy += 1 - - def _generate_cpy_extern_python_decl(self, tp, name): - self._extern_python_decl(tp, name, 'static ') - - def _generate_cpy_dllexport_python_decl(self, tp, name): - self._extern_python_decl(tp, name, 'CFFI_DLLEXPORT ') - - def _generate_cpy_extern_python_plus_c_decl(self, tp, name): - self._extern_python_decl(tp, name, '') - - def _generate_cpy_extern_python_ctx(self, tp, name): - if self.target_is_python: - raise VerificationError( - "cannot use 'extern \"Python\"' in the ABI mode") - if tp.ellipsis: - raise NotImplementedError("a vararg function is extern \"Python\"") - type_index = self._typesdict[tp] - type_op = CffiOp(OP_EXTERN_PYTHON, type_index) - self._lsts["global"].append( - GlobalExpr(name, '&_cffi_externpy__%s' % name, type_op, name)) - - _generate_cpy_dllexport_python_ctx = \ - _generate_cpy_extern_python_plus_c_ctx = \ - _generate_cpy_extern_python_ctx - - def _print_string_literal_in_array(self, s): - prnt = self._prnt - prnt('// # NB. this is not a string because of a size limit in MSVC') - if not isinstance(s, bytes): # unicode - s = s.encode('utf-8') # -> bytes - else: - s.decode('utf-8') # got bytes, check for valid utf-8 - try: - s.decode('ascii') - except UnicodeDecodeError: - s = b'# -*- encoding: utf8 -*-\n' + s - for line in s.splitlines(True): - comment = line - if type('//') is bytes: # python2 - line = map(ord, line) # make a list of integers - else: # python3 - # type(line) is bytes, which enumerates like a list of integers - comment = ascii(comment)[1:-1] - prnt(('// ' + comment).rstrip()) - printed_line = '' - for c in line: - if len(printed_line) >= 76: - prnt(printed_line) - printed_line = '' - printed_line += '%d,' % (c,) - prnt(printed_line) - - # ---------- - # emitting the opcodes for individual types - - def _emit_bytecode_VoidType(self, tp, index): - self.cffi_types[index] = CffiOp(OP_PRIMITIVE, PRIM_VOID) - - def _emit_bytecode_PrimitiveType(self, tp, index): - prim_index = PRIMITIVE_TO_INDEX[tp.name] - self.cffi_types[index] = CffiOp(OP_PRIMITIVE, prim_index) - - def _emit_bytecode_UnknownIntegerType(self, tp, index): - s = ('_cffi_prim_int(sizeof(%s), (\n' - ' ((%s)-1) | 0 /* check that %s is an integer type */\n' - ' ) <= 0)' % (tp.name, tp.name, tp.name)) - self.cffi_types[index] = CffiOp(OP_PRIMITIVE, s) - - def _emit_bytecode_UnknownFloatType(self, tp, index): - s = ('_cffi_prim_float(sizeof(%s) *\n' - ' (((%s)1) / 2) * 2 /* integer => 0, float => 1 */\n' - ' )' % (tp.name, tp.name)) - self.cffi_types[index] = CffiOp(OP_PRIMITIVE, s) - - def _emit_bytecode_RawFunctionType(self, tp, index): - self.cffi_types[index] = CffiOp(OP_FUNCTION, self._typesdict[tp.result]) - index += 1 - for tp1 in tp.args: - realindex = self._typesdict[tp1] - if index != realindex: - if isinstance(tp1, model.PrimitiveType): - self._emit_bytecode_PrimitiveType(tp1, index) - else: - self.cffi_types[index] = CffiOp(OP_NOOP, realindex) - index += 1 - flags = int(tp.ellipsis) - if tp.abi is not None: - if tp.abi == '__stdcall': - flags |= 2 - else: - raise NotImplementedError("abi=%r" % (tp.abi,)) - self.cffi_types[index] = CffiOp(OP_FUNCTION_END, flags) - - def _emit_bytecode_PointerType(self, tp, index): - self.cffi_types[index] = CffiOp(OP_POINTER, self._typesdict[tp.totype]) - - _emit_bytecode_ConstPointerType = _emit_bytecode_PointerType - _emit_bytecode_NamedPointerType = _emit_bytecode_PointerType - - def _emit_bytecode_FunctionPtrType(self, tp, index): - raw = tp.as_raw_function() - self.cffi_types[index] = CffiOp(OP_POINTER, self._typesdict[raw]) - - def _emit_bytecode_ArrayType(self, tp, index): - item_index = self._typesdict[tp.item] - if tp.length is None: - self.cffi_types[index] = CffiOp(OP_OPEN_ARRAY, item_index) - elif tp.length == '...': - raise VerificationError( - "type %s badly placed: the '...' array length can only be " - "used on global arrays or on fields of structures" % ( - str(tp).replace('/*...*/', '...'),)) - else: - assert self.cffi_types[index + 1] == 'LEN' - self.cffi_types[index] = CffiOp(OP_ARRAY, item_index) - self.cffi_types[index + 1] = CffiOp(None, str(tp.length)) - - def _emit_bytecode_StructType(self, tp, index): - struct_index = self._struct_unions[tp] - self.cffi_types[index] = CffiOp(OP_STRUCT_UNION, struct_index) - _emit_bytecode_UnionType = _emit_bytecode_StructType - - def _emit_bytecode_EnumType(self, tp, index): - enum_index = self._enums[tp] - self.cffi_types[index] = CffiOp(OP_ENUM, enum_index) - - -if sys.version_info >= (3,): - NativeIO = io.StringIO -else: - class NativeIO(io.BytesIO): - def write(self, s): - if isinstance(s, unicode): - s = s.encode('ascii') - super(NativeIO, self).write(s) - -def _is_file_like(maybefile): - # compare to xml.etree.ElementTree._get_writer - return hasattr(maybefile, 'write') - -def _make_c_or_py_source(ffi, module_name, preamble, target_file, verbose): - if verbose: - print("generating %s" % (target_file,)) - recompiler = Recompiler(ffi, module_name, - target_is_python=(preamble is None)) - recompiler.collect_type_table() - recompiler.collect_step_tables() - if _is_file_like(target_file): - recompiler.write_source_to_f(target_file, preamble) - return True - f = NativeIO() - recompiler.write_source_to_f(f, preamble) - output = f.getvalue() - try: - with open(target_file, 'r') as f1: - if f1.read(len(output) + 1) != output: - raise IOError - if verbose: - print("(already up-to-date)") - return False # already up-to-date - except IOError: - tmp_file = '%s.~%d' % (target_file, os.getpid()) - with open(tmp_file, 'w') as f1: - f1.write(output) - try: - os.rename(tmp_file, target_file) - except OSError: - os.unlink(target_file) - os.rename(tmp_file, target_file) - return True - -def make_c_source(ffi, module_name, preamble, target_c_file, verbose=False): - assert preamble is not None - return _make_c_or_py_source(ffi, module_name, preamble, target_c_file, - verbose) - -def make_py_source(ffi, module_name, target_py_file, verbose=False): - return _make_c_or_py_source(ffi, module_name, None, target_py_file, - verbose) - -def _modname_to_file(outputdir, modname, extension): - parts = modname.split('.') - try: - os.makedirs(os.path.join(outputdir, *parts[:-1])) - except OSError: - pass - parts[-1] += extension - return os.path.join(outputdir, *parts), parts - - -# Aaargh. Distutils is not tested at all for the purpose of compiling -# DLLs that are not extension modules. Here are some hacks to work -# around that, in the _patch_for_*() functions... - -def _patch_meth(patchlist, cls, name, new_meth): - old = getattr(cls, name) - patchlist.append((cls, name, old)) - setattr(cls, name, new_meth) - return old - -def _unpatch_meths(patchlist): - for cls, name, old_meth in reversed(patchlist): - setattr(cls, name, old_meth) - -def _patch_for_embedding(patchlist): - if sys.platform == 'win32': - # we must not remove the manifest when building for embedding! - # FUTURE: this module was removed in setuptools 74; this is likely dead code and should be removed, - # since the toolchain it supports (VS2005-2008) is also long dead. - from cffi._shimmed_dist_utils import MSVCCompiler - if MSVCCompiler is not None: - _patch_meth(patchlist, MSVCCompiler, '_remove_visual_c_ref', - lambda self, manifest_file: manifest_file) - - if sys.platform == 'darwin': - # we must not make a '-bundle', but a '-dynamiclib' instead - from cffi._shimmed_dist_utils import CCompiler - def my_link_shared_object(self, *args, **kwds): - if '-bundle' in self.linker_so: - self.linker_so = list(self.linker_so) - i = self.linker_so.index('-bundle') - self.linker_so[i] = '-dynamiclib' - return old_link_shared_object(self, *args, **kwds) - old_link_shared_object = _patch_meth(patchlist, CCompiler, - 'link_shared_object', - my_link_shared_object) - -def _patch_for_target(patchlist, target): - from cffi._shimmed_dist_utils import build_ext - # if 'target' is different from '*', we need to patch some internal - # method to just return this 'target' value, instead of having it - # built from module_name - if target.endswith('.*'): - target = target[:-2] - if sys.platform == 'win32': - target += '.dll' - elif sys.platform == 'darwin': - target += '.dylib' - else: - target += '.so' - _patch_meth(patchlist, build_ext, 'get_ext_filename', - lambda self, ext_name: target) - - -def recompile(ffi, module_name, preamble, tmpdir='.', call_c_compiler=True, - c_file=None, source_extension='.c', extradir=None, - compiler_verbose=1, target=None, debug=None, - uses_ffiplatform=True, **kwds): - if not isinstance(module_name, str): - module_name = module_name.encode('ascii') - if ffi._windows_unicode: - ffi._apply_windows_unicode(kwds) - if preamble is not None: - if call_c_compiler and _is_file_like(c_file): - raise TypeError("Writing to file-like objects is not supported " - "with call_c_compiler=True") - embedding = (ffi._embedding is not None) - if embedding: - ffi._apply_embedding_fix(kwds) - if c_file is None: - c_file, parts = _modname_to_file(tmpdir, module_name, - source_extension) - if extradir: - parts = [extradir] + parts - ext_c_file = os.path.join(*parts) - else: - ext_c_file = c_file - # - if target is None: - if embedding: - target = '%s.*' % module_name - else: - target = '*' - # - if uses_ffiplatform: - ext = ffiplatform.get_extension(ext_c_file, module_name, **kwds) - else: - ext = None - updated = make_c_source(ffi, module_name, preamble, c_file, - verbose=compiler_verbose) - if call_c_compiler: - patchlist = [] - cwd = os.getcwd() - try: - if embedding: - _patch_for_embedding(patchlist) - if target != '*': - _patch_for_target(patchlist, target) - if compiler_verbose: - if tmpdir == '.': - msg = 'the current directory is' - else: - msg = 'setting the current directory to' - print('%s %r' % (msg, os.path.abspath(tmpdir))) - os.chdir(tmpdir) - outputfilename = ffiplatform.compile('.', ext, - compiler_verbose, debug) - finally: - os.chdir(cwd) - _unpatch_meths(patchlist) - return outputfilename - else: - return ext, updated - else: - if c_file is None: - c_file, _ = _modname_to_file(tmpdir, module_name, '.py') - updated = make_py_source(ffi, module_name, c_file, - verbose=compiler_verbose) - if call_c_compiler: - return c_file - else: - return None, updated - diff --git a/venv/lib/python3.12/site-packages/cffi/setuptools_ext.py b/venv/lib/python3.12/site-packages/cffi/setuptools_ext.py deleted file mode 100644 index 681b49d..0000000 --- a/venv/lib/python3.12/site-packages/cffi/setuptools_ext.py +++ /dev/null @@ -1,216 +0,0 @@ -import os -import sys - -try: - basestring -except NameError: - # Python 3.x - basestring = str - -def error(msg): - from cffi._shimmed_dist_utils import DistutilsSetupError - raise DistutilsSetupError(msg) - - -def execfile(filename, glob): - # We use execfile() (here rewritten for Python 3) instead of - # __import__() to load the build script. The problem with - # a normal import is that in some packages, the intermediate - # __init__.py files may already try to import the file that - # we are generating. - with open(filename) as f: - src = f.read() - src += '\n' # Python 2.6 compatibility - code = compile(src, filename, 'exec') - exec(code, glob, glob) - - -def add_cffi_module(dist, mod_spec): - from cffi.api import FFI - - if not isinstance(mod_spec, basestring): - error("argument to 'cffi_modules=...' must be a str or a list of str," - " not %r" % (type(mod_spec).__name__,)) - mod_spec = str(mod_spec) - try: - build_file_name, ffi_var_name = mod_spec.split(':') - except ValueError: - error("%r must be of the form 'path/build.py:ffi_variable'" % - (mod_spec,)) - if not os.path.exists(build_file_name): - ext = '' - rewritten = build_file_name.replace('.', '/') + '.py' - if os.path.exists(rewritten): - ext = ' (rewrite cffi_modules to [%r])' % ( - rewritten + ':' + ffi_var_name,) - error("%r does not name an existing file%s" % (build_file_name, ext)) - - mod_vars = {'__name__': '__cffi__', '__file__': build_file_name} - execfile(build_file_name, mod_vars) - - try: - ffi = mod_vars[ffi_var_name] - except KeyError: - error("%r: object %r not found in module" % (mod_spec, - ffi_var_name)) - if not isinstance(ffi, FFI): - ffi = ffi() # maybe it's a function instead of directly an ffi - if not isinstance(ffi, FFI): - error("%r is not an FFI instance (got %r)" % (mod_spec, - type(ffi).__name__)) - if not hasattr(ffi, '_assigned_source'): - error("%r: the set_source() method was not called" % (mod_spec,)) - module_name, source, source_extension, kwds = ffi._assigned_source - if ffi._windows_unicode: - kwds = kwds.copy() - ffi._apply_windows_unicode(kwds) - - if source is None: - _add_py_module(dist, ffi, module_name) - else: - _add_c_module(dist, ffi, module_name, source, source_extension, kwds) - -def _set_py_limited_api(Extension, kwds): - """ - Add py_limited_api to kwds if setuptools >= 26 is in use. - Do not alter the setting if it already exists. - Setuptools takes care of ignoring the flag on Python 2 and PyPy. - - CPython itself should ignore the flag in a debugging version - (by not listing .abi3.so in the extensions it supports), but - it doesn't so far, creating troubles. That's why we check - for "not hasattr(sys, 'gettotalrefcount')" (the 2.7 compatible equivalent - of 'd' not in sys.abiflags). (http://bugs.python.org/issue28401) - - On Windows, with CPython <= 3.4, it's better not to use py_limited_api - because virtualenv *still* doesn't copy PYTHON3.DLL on these versions. - Recently (2020) we started shipping only >= 3.5 wheels, though. So - we'll give it another try and set py_limited_api on Windows >= 3.5. - """ - from cffi import recompiler - - if ('py_limited_api' not in kwds and not hasattr(sys, 'gettotalrefcount') - and recompiler.USE_LIMITED_API): - import setuptools - try: - setuptools_major_version = int(setuptools.__version__.partition('.')[0]) - if setuptools_major_version >= 26: - kwds['py_limited_api'] = True - except ValueError: # certain development versions of setuptools - # If we don't know the version number of setuptools, we - # try to set 'py_limited_api' anyway. At worst, we get a - # warning. - kwds['py_limited_api'] = True - return kwds - -def _add_c_module(dist, ffi, module_name, source, source_extension, kwds): - # We are a setuptools extension. Need this build_ext for py_limited_api. - from setuptools.command.build_ext import build_ext - from cffi._shimmed_dist_utils import Extension, log, mkpath - from cffi import recompiler - - allsources = ['$PLACEHOLDER'] - allsources.extend(kwds.pop('sources', [])) - kwds = _set_py_limited_api(Extension, kwds) - ext = Extension(name=module_name, sources=allsources, **kwds) - - def make_mod(tmpdir, pre_run=None): - c_file = os.path.join(tmpdir, module_name + source_extension) - log.info("generating cffi module %r" % c_file) - mkpath(tmpdir) - # a setuptools-only, API-only hook: called with the "ext" and "ffi" - # arguments just before we turn the ffi into C code. To use it, - # subclass the 'distutils.command.build_ext.build_ext' class and - # add a method 'def pre_run(self, ext, ffi)'. - if pre_run is not None: - pre_run(ext, ffi) - updated = recompiler.make_c_source(ffi, module_name, source, c_file) - if not updated: - log.info("already up-to-date") - return c_file - - if dist.ext_modules is None: - dist.ext_modules = [] - dist.ext_modules.append(ext) - - base_class = dist.cmdclass.get('build_ext', build_ext) - class build_ext_make_mod(base_class): - def run(self): - if ext.sources[0] == '$PLACEHOLDER': - pre_run = getattr(self, 'pre_run', None) - ext.sources[0] = make_mod(self.build_temp, pre_run) - base_class.run(self) - dist.cmdclass['build_ext'] = build_ext_make_mod - # NB. multiple runs here will create multiple 'build_ext_make_mod' - # classes. Even in this case the 'build_ext' command should be - # run once; but just in case, the logic above does nothing if - # called again. - - -def _add_py_module(dist, ffi, module_name): - from setuptools.command.build_py import build_py - from setuptools.command.build_ext import build_ext - from cffi._shimmed_dist_utils import log, mkpath - from cffi import recompiler - - def generate_mod(py_file): - log.info("generating cffi module %r" % py_file) - mkpath(os.path.dirname(py_file)) - updated = recompiler.make_py_source(ffi, module_name, py_file) - if not updated: - log.info("already up-to-date") - - base_class = dist.cmdclass.get('build_py', build_py) - class build_py_make_mod(base_class): - def run(self): - base_class.run(self) - module_path = module_name.split('.') - module_path[-1] += '.py' - generate_mod(os.path.join(self.build_lib, *module_path)) - def get_source_files(self): - # This is called from 'setup.py sdist' only. Exclude - # the generate .py module in this case. - saved_py_modules = self.py_modules - try: - if saved_py_modules: - self.py_modules = [m for m in saved_py_modules - if m != module_name] - return base_class.get_source_files(self) - finally: - self.py_modules = saved_py_modules - dist.cmdclass['build_py'] = build_py_make_mod - - # distutils and setuptools have no notion I could find of a - # generated python module. If we don't add module_name to - # dist.py_modules, then things mostly work but there are some - # combination of options (--root and --record) that will miss - # the module. So we add it here, which gives a few apparently - # harmless warnings about not finding the file outside the - # build directory. - # Then we need to hack more in get_source_files(); see above. - if dist.py_modules is None: - dist.py_modules = [] - dist.py_modules.append(module_name) - - # the following is only for "build_ext -i" - base_class_2 = dist.cmdclass.get('build_ext', build_ext) - class build_ext_make_mod(base_class_2): - def run(self): - base_class_2.run(self) - if self.inplace: - # from get_ext_fullpath() in distutils/command/build_ext.py - module_path = module_name.split('.') - package = '.'.join(module_path[:-1]) - build_py = self.get_finalized_command('build_py') - package_dir = build_py.get_package_dir(package) - file_name = module_path[-1] + '.py' - generate_mod(os.path.join(package_dir, file_name)) - dist.cmdclass['build_ext'] = build_ext_make_mod - -def cffi_modules(dist, attr, value): - assert attr == 'cffi_modules' - if isinstance(value, basestring): - value = [value] - - for cffi_module in value: - add_cffi_module(dist, cffi_module) diff --git a/venv/lib/python3.12/site-packages/cffi/vengine_cpy.py b/venv/lib/python3.12/site-packages/cffi/vengine_cpy.py deleted file mode 100644 index eb0b6f7..0000000 --- a/venv/lib/python3.12/site-packages/cffi/vengine_cpy.py +++ /dev/null @@ -1,1084 +0,0 @@ -# -# DEPRECATED: implementation for ffi.verify() -# -import sys -from . import model -from .error import VerificationError -from . import _imp_emulation as imp - - -class VCPythonEngine(object): - _class_key = 'x' - _gen_python_module = True - - def __init__(self, verifier): - self.verifier = verifier - self.ffi = verifier.ffi - self._struct_pending_verification = {} - self._types_of_builtin_functions = {} - - def patch_extension_kwds(self, kwds): - pass - - def find_module(self, module_name, path, so_suffixes): - try: - f, filename, descr = imp.find_module(module_name, path) - except ImportError: - return None - if f is not None: - f.close() - # Note that after a setuptools installation, there are both .py - # and .so files with the same basename. The code here relies on - # imp.find_module() locating the .so in priority. - if descr[0] not in so_suffixes: - return None - return filename - - def collect_types(self): - self._typesdict = {} - self._generate("collecttype") - - def _prnt(self, what=''): - self._f.write(what + '\n') - - def _gettypenum(self, type): - # a KeyError here is a bug. please report it! :-) - return self._typesdict[type] - - def _do_collect_type(self, tp): - if ((not isinstance(tp, model.PrimitiveType) - or tp.name == 'long double') - and tp not in self._typesdict): - num = len(self._typesdict) - self._typesdict[tp] = num - - def write_source_to_f(self): - self.collect_types() - # - # The new module will have a _cffi_setup() function that receives - # objects from the ffi world, and that calls some setup code in - # the module. This setup code is split in several independent - # functions, e.g. one per constant. The functions are "chained" - # by ending in a tail call to each other. - # - # This is further split in two chained lists, depending on if we - # can do it at import-time or if we must wait for _cffi_setup() to - # provide us with the objects. This is needed because we - # need the values of the enum constants in order to build the - # that we may have to pass to _cffi_setup(). - # - # The following two 'chained_list_constants' items contains - # the head of these two chained lists, as a string that gives the - # call to do, if any. - self._chained_list_constants = ['((void)lib,0)', '((void)lib,0)'] - # - prnt = self._prnt - # first paste some standard set of lines that are mostly '#define' - prnt(cffimod_header) - prnt() - # then paste the C source given by the user, verbatim. - prnt(self.verifier.preamble) - prnt() - # - # call generate_cpy_xxx_decl(), for every xxx found from - # ffi._parser._declarations. This generates all the functions. - self._generate("decl") - # - # implement the function _cffi_setup_custom() as calling the - # head of the chained list. - self._generate_setup_custom() - prnt() - # - # produce the method table, including the entries for the - # generated Python->C function wrappers, which are done - # by generate_cpy_function_method(). - prnt('static PyMethodDef _cffi_methods[] = {') - self._generate("method") - prnt(' {"_cffi_setup", _cffi_setup, METH_VARARGS, NULL},') - prnt(' {NULL, NULL, 0, NULL} /* Sentinel */') - prnt('};') - prnt() - # - # standard init. - modname = self.verifier.get_module_name() - constants = self._chained_list_constants[False] - prnt('#if PY_MAJOR_VERSION >= 3') - prnt() - prnt('static struct PyModuleDef _cffi_module_def = {') - prnt(' PyModuleDef_HEAD_INIT,') - prnt(' "%s",' % modname) - prnt(' NULL,') - prnt(' -1,') - prnt(' _cffi_methods,') - prnt(' NULL, NULL, NULL, NULL') - prnt('};') - prnt() - prnt('PyMODINIT_FUNC') - prnt('PyInit_%s(void)' % modname) - prnt('{') - prnt(' PyObject *lib;') - prnt(' lib = PyModule_Create(&_cffi_module_def);') - prnt(' if (lib == NULL)') - prnt(' return NULL;') - prnt(' if (%s < 0 || _cffi_init() < 0) {' % (constants,)) - prnt(' Py_DECREF(lib);') - prnt(' return NULL;') - prnt(' }') - prnt(' return lib;') - prnt('}') - prnt() - prnt('#else') - prnt() - prnt('PyMODINIT_FUNC') - prnt('init%s(void)' % modname) - prnt('{') - prnt(' PyObject *lib;') - prnt(' lib = Py_InitModule("%s", _cffi_methods);' % modname) - prnt(' if (lib == NULL)') - prnt(' return;') - prnt(' if (%s < 0 || _cffi_init() < 0)' % (constants,)) - prnt(' return;') - prnt(' return;') - prnt('}') - prnt() - prnt('#endif') - - def load_library(self, flags=None): - # XXX review all usages of 'self' here! - # import it as a new extension module - imp.acquire_lock() - try: - if hasattr(sys, "getdlopenflags"): - previous_flags = sys.getdlopenflags() - try: - if hasattr(sys, "setdlopenflags") and flags is not None: - sys.setdlopenflags(flags) - module = imp.load_dynamic(self.verifier.get_module_name(), - self.verifier.modulefilename) - except ImportError as e: - error = "importing %r: %s" % (self.verifier.modulefilename, e) - raise VerificationError(error) - finally: - if hasattr(sys, "setdlopenflags"): - sys.setdlopenflags(previous_flags) - finally: - imp.release_lock() - # - # call loading_cpy_struct() to get the struct layout inferred by - # the C compiler - self._load(module, 'loading') - # - # the C code will need the objects. Collect them in - # order in a list. - revmapping = dict([(value, key) - for (key, value) in self._typesdict.items()]) - lst = [revmapping[i] for i in range(len(revmapping))] - lst = list(map(self.ffi._get_cached_btype, lst)) - # - # build the FFILibrary class and instance and call _cffi_setup(). - # this will set up some fields like '_cffi_types', and only then - # it will invoke the chained list of functions that will really - # build (notably) the constant objects, as if they are - # pointers, and store them as attributes on the 'library' object. - class FFILibrary(object): - _cffi_python_module = module - _cffi_ffi = self.ffi - _cffi_dir = [] - def __dir__(self): - return FFILibrary._cffi_dir + list(self.__dict__) - library = FFILibrary() - if module._cffi_setup(lst, VerificationError, library): - import warnings - warnings.warn("reimporting %r might overwrite older definitions" - % (self.verifier.get_module_name())) - # - # finally, call the loaded_cpy_xxx() functions. This will perform - # the final adjustments, like copying the Python->C wrapper - # functions from the module to the 'library' object, and setting - # up the FFILibrary class with properties for the global C variables. - self._load(module, 'loaded', library=library) - module._cffi_original_ffi = self.ffi - module._cffi_types_of_builtin_funcs = self._types_of_builtin_functions - return library - - def _get_declarations(self): - lst = [(key, tp) for (key, (tp, qual)) in - self.ffi._parser._declarations.items()] - lst.sort() - return lst - - def _generate(self, step_name): - for name, tp in self._get_declarations(): - kind, realname = name.split(' ', 1) - try: - method = getattr(self, '_generate_cpy_%s_%s' % (kind, - step_name)) - except AttributeError: - raise VerificationError( - "not implemented in verify(): %r" % name) - try: - method(tp, realname) - except Exception as e: - model.attach_exception_info(e, name) - raise - - def _load(self, module, step_name, **kwds): - for name, tp in self._get_declarations(): - kind, realname = name.split(' ', 1) - method = getattr(self, '_%s_cpy_%s' % (step_name, kind)) - try: - method(tp, realname, module, **kwds) - except Exception as e: - model.attach_exception_info(e, name) - raise - - def _generate_nothing(self, tp, name): - pass - - def _loaded_noop(self, tp, name, module, **kwds): - pass - - # ---------- - - def _convert_funcarg_to_c(self, tp, fromvar, tovar, errcode): - extraarg = '' - if isinstance(tp, model.PrimitiveType): - if tp.is_integer_type() and tp.name != '_Bool': - converter = '_cffi_to_c_int' - extraarg = ', %s' % tp.name - elif tp.is_complex_type(): - raise VerificationError( - "not implemented in verify(): complex types") - else: - converter = '(%s)_cffi_to_c_%s' % (tp.get_c_name(''), - tp.name.replace(' ', '_')) - errvalue = '-1' - # - elif isinstance(tp, model.PointerType): - self._convert_funcarg_to_c_ptr_or_array(tp, fromvar, - tovar, errcode) - return - # - elif isinstance(tp, (model.StructOrUnion, model.EnumType)): - # a struct (not a struct pointer) as a function argument - self._prnt(' if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)' - % (tovar, self._gettypenum(tp), fromvar)) - self._prnt(' %s;' % errcode) - return - # - elif isinstance(tp, model.FunctionPtrType): - converter = '(%s)_cffi_to_c_pointer' % tp.get_c_name('') - extraarg = ', _cffi_type(%d)' % self._gettypenum(tp) - errvalue = 'NULL' - # - else: - raise NotImplementedError(tp) - # - self._prnt(' %s = %s(%s%s);' % (tovar, converter, fromvar, extraarg)) - self._prnt(' if (%s == (%s)%s && PyErr_Occurred())' % ( - tovar, tp.get_c_name(''), errvalue)) - self._prnt(' %s;' % errcode) - - def _extra_local_variables(self, tp, localvars, freelines): - if isinstance(tp, model.PointerType): - localvars.add('Py_ssize_t datasize') - localvars.add('struct _cffi_freeme_s *large_args_free = NULL') - freelines.add('if (large_args_free != NULL)' - ' _cffi_free_array_arguments(large_args_free);') - - def _convert_funcarg_to_c_ptr_or_array(self, tp, fromvar, tovar, errcode): - self._prnt(' datasize = _cffi_prepare_pointer_call_argument(') - self._prnt(' _cffi_type(%d), %s, (char **)&%s);' % ( - self._gettypenum(tp), fromvar, tovar)) - self._prnt(' if (datasize != 0) {') - self._prnt(' %s = ((size_t)datasize) <= 640 ? ' - 'alloca((size_t)datasize) : NULL;' % (tovar,)) - self._prnt(' if (_cffi_convert_array_argument(_cffi_type(%d), %s, ' - '(char **)&%s,' % (self._gettypenum(tp), fromvar, tovar)) - self._prnt(' datasize, &large_args_free) < 0)') - self._prnt(' %s;' % errcode) - self._prnt(' }') - - def _convert_expr_from_c(self, tp, var, context): - if isinstance(tp, model.PrimitiveType): - if tp.is_integer_type() and tp.name != '_Bool': - return '_cffi_from_c_int(%s, %s)' % (var, tp.name) - elif tp.name != 'long double': - return '_cffi_from_c_%s(%s)' % (tp.name.replace(' ', '_'), var) - else: - return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( - var, self._gettypenum(tp)) - elif isinstance(tp, (model.PointerType, model.FunctionPtrType)): - return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( - var, self._gettypenum(tp)) - elif isinstance(tp, model.ArrayType): - return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( - var, self._gettypenum(model.PointerType(tp.item))) - elif isinstance(tp, model.StructOrUnion): - if tp.fldnames is None: - raise TypeError("'%s' is used as %s, but is opaque" % ( - tp._get_c_name(), context)) - return '_cffi_from_c_struct((char *)&%s, _cffi_type(%d))' % ( - var, self._gettypenum(tp)) - elif isinstance(tp, model.EnumType): - return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( - var, self._gettypenum(tp)) - else: - raise NotImplementedError(tp) - - # ---------- - # typedefs: generates no code so far - - _generate_cpy_typedef_collecttype = _generate_nothing - _generate_cpy_typedef_decl = _generate_nothing - _generate_cpy_typedef_method = _generate_nothing - _loading_cpy_typedef = _loaded_noop - _loaded_cpy_typedef = _loaded_noop - - # ---------- - # function declarations - - def _generate_cpy_function_collecttype(self, tp, name): - assert isinstance(tp, model.FunctionPtrType) - if tp.ellipsis: - self._do_collect_type(tp) - else: - # don't call _do_collect_type(tp) in this common case, - # otherwise test_autofilled_struct_as_argument fails - for type in tp.args: - self._do_collect_type(type) - self._do_collect_type(tp.result) - - def _generate_cpy_function_decl(self, tp, name): - assert isinstance(tp, model.FunctionPtrType) - if tp.ellipsis: - # cannot support vararg functions better than this: check for its - # exact type (including the fixed arguments), and build it as a - # constant function pointer (no CPython wrapper) - self._generate_cpy_const(False, name, tp) - return - prnt = self._prnt - numargs = len(tp.args) - if numargs == 0: - argname = 'noarg' - elif numargs == 1: - argname = 'arg0' - else: - argname = 'args' - prnt('static PyObject *') - prnt('_cffi_f_%s(PyObject *self, PyObject *%s)' % (name, argname)) - prnt('{') - # - context = 'argument of %s' % name - for i, type in enumerate(tp.args): - prnt(' %s;' % type.get_c_name(' x%d' % i, context)) - # - localvars = set() - freelines = set() - for type in tp.args: - self._extra_local_variables(type, localvars, freelines) - for decl in sorted(localvars): - prnt(' %s;' % (decl,)) - # - if not isinstance(tp.result, model.VoidType): - result_code = 'result = ' - context = 'result of %s' % name - prnt(' %s;' % tp.result.get_c_name(' result', context)) - prnt(' PyObject *pyresult;') - else: - result_code = '' - # - if len(tp.args) > 1: - rng = range(len(tp.args)) - for i in rng: - prnt(' PyObject *arg%d;' % i) - prnt() - prnt(' if (!PyArg_ParseTuple(args, "%s:%s", %s))' % ( - 'O' * numargs, name, ', '.join(['&arg%d' % i for i in rng]))) - prnt(' return NULL;') - prnt() - # - for i, type in enumerate(tp.args): - self._convert_funcarg_to_c(type, 'arg%d' % i, 'x%d' % i, - 'return NULL') - prnt() - # - prnt(' Py_BEGIN_ALLOW_THREADS') - prnt(' _cffi_restore_errno();') - prnt(' { %s%s(%s); }' % ( - result_code, name, - ', '.join(['x%d' % i for i in range(len(tp.args))]))) - prnt(' _cffi_save_errno();') - prnt(' Py_END_ALLOW_THREADS') - prnt() - # - prnt(' (void)self; /* unused */') - if numargs == 0: - prnt(' (void)noarg; /* unused */') - if result_code: - prnt(' pyresult = %s;' % - self._convert_expr_from_c(tp.result, 'result', 'result type')) - for freeline in freelines: - prnt(' ' + freeline) - prnt(' return pyresult;') - else: - for freeline in freelines: - prnt(' ' + freeline) - prnt(' Py_INCREF(Py_None);') - prnt(' return Py_None;') - prnt('}') - prnt() - - def _generate_cpy_function_method(self, tp, name): - if tp.ellipsis: - return - numargs = len(tp.args) - if numargs == 0: - meth = 'METH_NOARGS' - elif numargs == 1: - meth = 'METH_O' - else: - meth = 'METH_VARARGS' - self._prnt(' {"%s", _cffi_f_%s, %s, NULL},' % (name, name, meth)) - - _loading_cpy_function = _loaded_noop - - def _loaded_cpy_function(self, tp, name, module, library): - if tp.ellipsis: - return - func = getattr(module, name) - setattr(library, name, func) - self._types_of_builtin_functions[func] = tp - - # ---------- - # named structs - - _generate_cpy_struct_collecttype = _generate_nothing - def _generate_cpy_struct_decl(self, tp, name): - assert name == tp.name - self._generate_struct_or_union_decl(tp, 'struct', name) - def _generate_cpy_struct_method(self, tp, name): - self._generate_struct_or_union_method(tp, 'struct', name) - def _loading_cpy_struct(self, tp, name, module): - self._loading_struct_or_union(tp, 'struct', name, module) - def _loaded_cpy_struct(self, tp, name, module, **kwds): - self._loaded_struct_or_union(tp) - - _generate_cpy_union_collecttype = _generate_nothing - def _generate_cpy_union_decl(self, tp, name): - assert name == tp.name - self._generate_struct_or_union_decl(tp, 'union', name) - def _generate_cpy_union_method(self, tp, name): - self._generate_struct_or_union_method(tp, 'union', name) - def _loading_cpy_union(self, tp, name, module): - self._loading_struct_or_union(tp, 'union', name, module) - def _loaded_cpy_union(self, tp, name, module, **kwds): - self._loaded_struct_or_union(tp) - - def _generate_struct_or_union_decl(self, tp, prefix, name): - if tp.fldnames is None: - return # nothing to do with opaque structs - checkfuncname = '_cffi_check_%s_%s' % (prefix, name) - layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) - cname = ('%s %s' % (prefix, name)).strip() - # - prnt = self._prnt - prnt('static void %s(%s *p)' % (checkfuncname, cname)) - prnt('{') - prnt(' /* only to generate compile-time warnings or errors */') - prnt(' (void)p;') - for fname, ftype, fbitsize, fqual in tp.enumfields(): - if (isinstance(ftype, model.PrimitiveType) - and ftype.is_integer_type()) or fbitsize >= 0: - # accept all integers, but complain on float or double - prnt(' (void)((p->%s) << 1);' % fname) - else: - # only accept exactly the type declared. - try: - prnt(' { %s = &p->%s; (void)tmp; }' % ( - ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual), - fname)) - except VerificationError as e: - prnt(' /* %s */' % str(e)) # cannot verify it, ignore - prnt('}') - prnt('static PyObject *') - prnt('%s(PyObject *self, PyObject *noarg)' % (layoutfuncname,)) - prnt('{') - prnt(' struct _cffi_aligncheck { char x; %s y; };' % cname) - prnt(' static Py_ssize_t nums[] = {') - prnt(' sizeof(%s),' % cname) - prnt(' offsetof(struct _cffi_aligncheck, y),') - for fname, ftype, fbitsize, fqual in tp.enumfields(): - if fbitsize >= 0: - continue # xxx ignore fbitsize for now - prnt(' offsetof(%s, %s),' % (cname, fname)) - if isinstance(ftype, model.ArrayType) and ftype.length is None: - prnt(' 0, /* %s */' % ftype._get_c_name()) - else: - prnt(' sizeof(((%s *)0)->%s),' % (cname, fname)) - prnt(' -1') - prnt(' };') - prnt(' (void)self; /* unused */') - prnt(' (void)noarg; /* unused */') - prnt(' return _cffi_get_struct_layout(nums);') - prnt(' /* the next line is not executed, but compiled */') - prnt(' %s(0);' % (checkfuncname,)) - prnt('}') - prnt() - - def _generate_struct_or_union_method(self, tp, prefix, name): - if tp.fldnames is None: - return # nothing to do with opaque structs - layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) - self._prnt(' {"%s", %s, METH_NOARGS, NULL},' % (layoutfuncname, - layoutfuncname)) - - def _loading_struct_or_union(self, tp, prefix, name, module): - if tp.fldnames is None: - return # nothing to do with opaque structs - layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) - # - function = getattr(module, layoutfuncname) - layout = function() - if isinstance(tp, model.StructOrUnion) and tp.partial: - # use the function()'s sizes and offsets to guide the - # layout of the struct - totalsize = layout[0] - totalalignment = layout[1] - fieldofs = layout[2::2] - fieldsize = layout[3::2] - tp.force_flatten() - assert len(fieldofs) == len(fieldsize) == len(tp.fldnames) - tp.fixedlayout = fieldofs, fieldsize, totalsize, totalalignment - else: - cname = ('%s %s' % (prefix, name)).strip() - self._struct_pending_verification[tp] = layout, cname - - def _loaded_struct_or_union(self, tp): - if tp.fldnames is None: - return # nothing to do with opaque structs - self.ffi._get_cached_btype(tp) # force 'fixedlayout' to be considered - - if tp in self._struct_pending_verification: - # check that the layout sizes and offsets match the real ones - def check(realvalue, expectedvalue, msg): - if realvalue != expectedvalue: - raise VerificationError( - "%s (we have %d, but C compiler says %d)" - % (msg, expectedvalue, realvalue)) - ffi = self.ffi - BStruct = ffi._get_cached_btype(tp) - layout, cname = self._struct_pending_verification.pop(tp) - check(layout[0], ffi.sizeof(BStruct), "wrong total size") - check(layout[1], ffi.alignof(BStruct), "wrong total alignment") - i = 2 - for fname, ftype, fbitsize, fqual in tp.enumfields(): - if fbitsize >= 0: - continue # xxx ignore fbitsize for now - check(layout[i], ffi.offsetof(BStruct, fname), - "wrong offset for field %r" % (fname,)) - if layout[i+1] != 0: - BField = ffi._get_cached_btype(ftype) - check(layout[i+1], ffi.sizeof(BField), - "wrong size for field %r" % (fname,)) - i += 2 - assert i == len(layout) - - # ---------- - # 'anonymous' declarations. These are produced for anonymous structs - # or unions; the 'name' is obtained by a typedef. - - _generate_cpy_anonymous_collecttype = _generate_nothing - - def _generate_cpy_anonymous_decl(self, tp, name): - if isinstance(tp, model.EnumType): - self._generate_cpy_enum_decl(tp, name, '') - else: - self._generate_struct_or_union_decl(tp, '', name) - - def _generate_cpy_anonymous_method(self, tp, name): - if not isinstance(tp, model.EnumType): - self._generate_struct_or_union_method(tp, '', name) - - def _loading_cpy_anonymous(self, tp, name, module): - if isinstance(tp, model.EnumType): - self._loading_cpy_enum(tp, name, module) - else: - self._loading_struct_or_union(tp, '', name, module) - - def _loaded_cpy_anonymous(self, tp, name, module, **kwds): - if isinstance(tp, model.EnumType): - self._loaded_cpy_enum(tp, name, module, **kwds) - else: - self._loaded_struct_or_union(tp) - - # ---------- - # constants, likely declared with '#define' - - def _generate_cpy_const(self, is_int, name, tp=None, category='const', - vartp=None, delayed=True, size_too=False, - check_value=None): - prnt = self._prnt - funcname = '_cffi_%s_%s' % (category, name) - prnt('static int %s(PyObject *lib)' % funcname) - prnt('{') - prnt(' PyObject *o;') - prnt(' int res;') - if not is_int: - prnt(' %s;' % (vartp or tp).get_c_name(' i', name)) - else: - assert category == 'const' - # - if check_value is not None: - self._check_int_constant_value(name, check_value) - # - if not is_int: - if category == 'var': - realexpr = '&' + name - else: - realexpr = name - prnt(' i = (%s);' % (realexpr,)) - prnt(' o = %s;' % (self._convert_expr_from_c(tp, 'i', - 'variable type'),)) - assert delayed - else: - prnt(' o = _cffi_from_c_int_const(%s);' % name) - prnt(' if (o == NULL)') - prnt(' return -1;') - if size_too: - prnt(' {') - prnt(' PyObject *o1 = o;') - prnt(' o = Py_BuildValue("On", o1, (Py_ssize_t)sizeof(%s));' - % (name,)) - prnt(' Py_DECREF(o1);') - prnt(' if (o == NULL)') - prnt(' return -1;') - prnt(' }') - prnt(' res = PyObject_SetAttrString(lib, "%s", o);' % name) - prnt(' Py_DECREF(o);') - prnt(' if (res < 0)') - prnt(' return -1;') - prnt(' return %s;' % self._chained_list_constants[delayed]) - self._chained_list_constants[delayed] = funcname + '(lib)' - prnt('}') - prnt() - - def _generate_cpy_constant_collecttype(self, tp, name): - is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() - if not is_int: - self._do_collect_type(tp) - - def _generate_cpy_constant_decl(self, tp, name): - is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() - self._generate_cpy_const(is_int, name, tp) - - _generate_cpy_constant_method = _generate_nothing - _loading_cpy_constant = _loaded_noop - _loaded_cpy_constant = _loaded_noop - - # ---------- - # enums - - def _check_int_constant_value(self, name, value, err_prefix=''): - prnt = self._prnt - if value <= 0: - prnt(' if ((%s) > 0 || (long)(%s) != %dL) {' % ( - name, name, value)) - else: - prnt(' if ((%s) <= 0 || (unsigned long)(%s) != %dUL) {' % ( - name, name, value)) - prnt(' char buf[64];') - prnt(' if ((%s) <= 0)' % name) - prnt(' snprintf(buf, 63, "%%ld", (long)(%s));' % name) - prnt(' else') - prnt(' snprintf(buf, 63, "%%lu", (unsigned long)(%s));' % - name) - prnt(' PyErr_Format(_cffi_VerificationError,') - prnt(' "%s%s has the real value %s, not %s",') - prnt(' "%s", "%s", buf, "%d");' % ( - err_prefix, name, value)) - prnt(' return -1;') - prnt(' }') - - def _enum_funcname(self, prefix, name): - # "$enum_$1" => "___D_enum____D_1" - name = name.replace('$', '___D_') - return '_cffi_e_%s_%s' % (prefix, name) - - def _generate_cpy_enum_decl(self, tp, name, prefix='enum'): - if tp.partial: - for enumerator in tp.enumerators: - self._generate_cpy_const(True, enumerator, delayed=False) - return - # - funcname = self._enum_funcname(prefix, name) - prnt = self._prnt - prnt('static int %s(PyObject *lib)' % funcname) - prnt('{') - for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): - self._check_int_constant_value(enumerator, enumvalue, - "enum %s: " % name) - prnt(' return %s;' % self._chained_list_constants[True]) - self._chained_list_constants[True] = funcname + '(lib)' - prnt('}') - prnt() - - _generate_cpy_enum_collecttype = _generate_nothing - _generate_cpy_enum_method = _generate_nothing - - def _loading_cpy_enum(self, tp, name, module): - if tp.partial: - enumvalues = [getattr(module, enumerator) - for enumerator in tp.enumerators] - tp.enumvalues = tuple(enumvalues) - tp.partial_resolved = True - - def _loaded_cpy_enum(self, tp, name, module, library): - for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): - setattr(library, enumerator, enumvalue) - - # ---------- - # macros: for now only for integers - - def _generate_cpy_macro_decl(self, tp, name): - if tp == '...': - check_value = None - else: - check_value = tp # an integer - self._generate_cpy_const(True, name, check_value=check_value) - - _generate_cpy_macro_collecttype = _generate_nothing - _generate_cpy_macro_method = _generate_nothing - _loading_cpy_macro = _loaded_noop - _loaded_cpy_macro = _loaded_noop - - # ---------- - # global variables - - def _generate_cpy_variable_collecttype(self, tp, name): - if isinstance(tp, model.ArrayType): - tp_ptr = model.PointerType(tp.item) - else: - tp_ptr = model.PointerType(tp) - self._do_collect_type(tp_ptr) - - def _generate_cpy_variable_decl(self, tp, name): - if isinstance(tp, model.ArrayType): - tp_ptr = model.PointerType(tp.item) - self._generate_cpy_const(False, name, tp, vartp=tp_ptr, - size_too = tp.length_is_unknown()) - else: - tp_ptr = model.PointerType(tp) - self._generate_cpy_const(False, name, tp_ptr, category='var') - - _generate_cpy_variable_method = _generate_nothing - _loading_cpy_variable = _loaded_noop - - def _loaded_cpy_variable(self, tp, name, module, library): - value = getattr(library, name) - if isinstance(tp, model.ArrayType): # int a[5] is "constant" in the - # sense that "a=..." is forbidden - if tp.length_is_unknown(): - assert isinstance(value, tuple) - (value, size) = value - BItemType = self.ffi._get_cached_btype(tp.item) - length, rest = divmod(size, self.ffi.sizeof(BItemType)) - if rest != 0: - raise VerificationError( - "bad size: %r does not seem to be an array of %s" % - (name, tp.item)) - tp = tp.resolve_length(length) - # 'value' is a which we have to replace with - # a if the N is actually known - if tp.length is not None: - BArray = self.ffi._get_cached_btype(tp) - value = self.ffi.cast(BArray, value) - setattr(library, name, value) - return - # remove ptr= from the library instance, and replace - # it by a property on the class, which reads/writes into ptr[0]. - ptr = value - delattr(library, name) - def getter(library): - return ptr[0] - def setter(library, value): - ptr[0] = value - setattr(type(library), name, property(getter, setter)) - type(library)._cffi_dir.append(name) - - # ---------- - - def _generate_setup_custom(self): - prnt = self._prnt - prnt('static int _cffi_setup_custom(PyObject *lib)') - prnt('{') - prnt(' return %s;' % self._chained_list_constants[True]) - prnt('}') - -cffimod_header = r''' -#include -#include - -/* this block of #ifs should be kept exactly identical between - c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py - and cffi/_cffi_include.h */ -#if defined(_MSC_VER) -# include /* for alloca() */ -# if _MSC_VER < 1600 /* MSVC < 2010 */ - typedef __int8 int8_t; - typedef __int16 int16_t; - typedef __int32 int32_t; - typedef __int64 int64_t; - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; - typedef unsigned __int64 uint64_t; - typedef __int8 int_least8_t; - typedef __int16 int_least16_t; - typedef __int32 int_least32_t; - typedef __int64 int_least64_t; - typedef unsigned __int8 uint_least8_t; - typedef unsigned __int16 uint_least16_t; - typedef unsigned __int32 uint_least32_t; - typedef unsigned __int64 uint_least64_t; - typedef __int8 int_fast8_t; - typedef __int16 int_fast16_t; - typedef __int32 int_fast32_t; - typedef __int64 int_fast64_t; - typedef unsigned __int8 uint_fast8_t; - typedef unsigned __int16 uint_fast16_t; - typedef unsigned __int32 uint_fast32_t; - typedef unsigned __int64 uint_fast64_t; - typedef __int64 intmax_t; - typedef unsigned __int64 uintmax_t; -# else -# include -# endif -# if _MSC_VER < 1800 /* MSVC < 2013 */ -# ifndef __cplusplus - typedef unsigned char _Bool; -# endif -# endif -# define _cffi_float_complex_t _Fcomplex /* include for it */ -# define _cffi_double_complex_t _Dcomplex /* include for it */ -#else -# include -# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) -# include -# endif -# define _cffi_float_complex_t float _Complex -# define _cffi_double_complex_t double _Complex -#endif - -#if PY_MAJOR_VERSION < 3 -# undef PyCapsule_CheckExact -# undef PyCapsule_GetPointer -# define PyCapsule_CheckExact(capsule) (PyCObject_Check(capsule)) -# define PyCapsule_GetPointer(capsule, name) \ - (PyCObject_AsVoidPtr(capsule)) -#endif - -#if PY_MAJOR_VERSION >= 3 -# define PyInt_FromLong PyLong_FromLong -#endif - -#define _cffi_from_c_double PyFloat_FromDouble -#define _cffi_from_c_float PyFloat_FromDouble -#define _cffi_from_c_long PyInt_FromLong -#define _cffi_from_c_ulong PyLong_FromUnsignedLong -#define _cffi_from_c_longlong PyLong_FromLongLong -#define _cffi_from_c_ulonglong PyLong_FromUnsignedLongLong -#define _cffi_from_c__Bool PyBool_FromLong - -#define _cffi_to_c_double PyFloat_AsDouble -#define _cffi_to_c_float PyFloat_AsDouble - -#define _cffi_from_c_int_const(x) \ - (((x) > 0) ? \ - ((unsigned long long)(x) <= (unsigned long long)LONG_MAX) ? \ - PyInt_FromLong((long)(x)) : \ - PyLong_FromUnsignedLongLong((unsigned long long)(x)) : \ - ((long long)(x) >= (long long)LONG_MIN) ? \ - PyInt_FromLong((long)(x)) : \ - PyLong_FromLongLong((long long)(x))) - -#define _cffi_from_c_int(x, type) \ - (((type)-1) > 0 ? /* unsigned */ \ - (sizeof(type) < sizeof(long) ? \ - PyInt_FromLong((long)x) : \ - sizeof(type) == sizeof(long) ? \ - PyLong_FromUnsignedLong((unsigned long)x) : \ - PyLong_FromUnsignedLongLong((unsigned long long)x)) : \ - (sizeof(type) <= sizeof(long) ? \ - PyInt_FromLong((long)x) : \ - PyLong_FromLongLong((long long)x))) - -#define _cffi_to_c_int(o, type) \ - ((type)( \ - sizeof(type) == 1 ? (((type)-1) > 0 ? (type)_cffi_to_c_u8(o) \ - : (type)_cffi_to_c_i8(o)) : \ - sizeof(type) == 2 ? (((type)-1) > 0 ? (type)_cffi_to_c_u16(o) \ - : (type)_cffi_to_c_i16(o)) : \ - sizeof(type) == 4 ? (((type)-1) > 0 ? (type)_cffi_to_c_u32(o) \ - : (type)_cffi_to_c_i32(o)) : \ - sizeof(type) == 8 ? (((type)-1) > 0 ? (type)_cffi_to_c_u64(o) \ - : (type)_cffi_to_c_i64(o)) : \ - (Py_FatalError("unsupported size for type " #type), (type)0))) - -#define _cffi_to_c_i8 \ - ((int(*)(PyObject *))_cffi_exports[1]) -#define _cffi_to_c_u8 \ - ((int(*)(PyObject *))_cffi_exports[2]) -#define _cffi_to_c_i16 \ - ((int(*)(PyObject *))_cffi_exports[3]) -#define _cffi_to_c_u16 \ - ((int(*)(PyObject *))_cffi_exports[4]) -#define _cffi_to_c_i32 \ - ((int(*)(PyObject *))_cffi_exports[5]) -#define _cffi_to_c_u32 \ - ((unsigned int(*)(PyObject *))_cffi_exports[6]) -#define _cffi_to_c_i64 \ - ((long long(*)(PyObject *))_cffi_exports[7]) -#define _cffi_to_c_u64 \ - ((unsigned long long(*)(PyObject *))_cffi_exports[8]) -#define _cffi_to_c_char \ - ((int(*)(PyObject *))_cffi_exports[9]) -#define _cffi_from_c_pointer \ - ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[10]) -#define _cffi_to_c_pointer \ - ((char *(*)(PyObject *, CTypeDescrObject *))_cffi_exports[11]) -#define _cffi_get_struct_layout \ - ((PyObject *(*)(Py_ssize_t[]))_cffi_exports[12]) -#define _cffi_restore_errno \ - ((void(*)(void))_cffi_exports[13]) -#define _cffi_save_errno \ - ((void(*)(void))_cffi_exports[14]) -#define _cffi_from_c_char \ - ((PyObject *(*)(char))_cffi_exports[15]) -#define _cffi_from_c_deref \ - ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[16]) -#define _cffi_to_c \ - ((int(*)(char *, CTypeDescrObject *, PyObject *))_cffi_exports[17]) -#define _cffi_from_c_struct \ - ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[18]) -#define _cffi_to_c_wchar_t \ - ((wchar_t(*)(PyObject *))_cffi_exports[19]) -#define _cffi_from_c_wchar_t \ - ((PyObject *(*)(wchar_t))_cffi_exports[20]) -#define _cffi_to_c_long_double \ - ((long double(*)(PyObject *))_cffi_exports[21]) -#define _cffi_to_c__Bool \ - ((_Bool(*)(PyObject *))_cffi_exports[22]) -#define _cffi_prepare_pointer_call_argument \ - ((Py_ssize_t(*)(CTypeDescrObject *, PyObject *, char **))_cffi_exports[23]) -#define _cffi_convert_array_from_object \ - ((int(*)(char *, CTypeDescrObject *, PyObject *))_cffi_exports[24]) -#define _CFFI_NUM_EXPORTS 25 - -typedef struct _ctypedescr CTypeDescrObject; - -static void *_cffi_exports[_CFFI_NUM_EXPORTS]; -static PyObject *_cffi_types, *_cffi_VerificationError; - -static int _cffi_setup_custom(PyObject *lib); /* forward */ - -static PyObject *_cffi_setup(PyObject *self, PyObject *args) -{ - PyObject *library; - int was_alive = (_cffi_types != NULL); - (void)self; /* unused */ - if (!PyArg_ParseTuple(args, "OOO", &_cffi_types, &_cffi_VerificationError, - &library)) - return NULL; - Py_INCREF(_cffi_types); - Py_INCREF(_cffi_VerificationError); - if (_cffi_setup_custom(library) < 0) - return NULL; - return PyBool_FromLong(was_alive); -} - -union _cffi_union_alignment_u { - unsigned char m_char; - unsigned short m_short; - unsigned int m_int; - unsigned long m_long; - unsigned long long m_longlong; - float m_float; - double m_double; - long double m_longdouble; -}; - -struct _cffi_freeme_s { - struct _cffi_freeme_s *next; - union _cffi_union_alignment_u alignment; -}; - -#ifdef __GNUC__ - __attribute__((unused)) -#endif -static int _cffi_convert_array_argument(CTypeDescrObject *ctptr, PyObject *arg, - char **output_data, Py_ssize_t datasize, - struct _cffi_freeme_s **freeme) -{ - char *p; - if (datasize < 0) - return -1; - - p = *output_data; - if (p == NULL) { - struct _cffi_freeme_s *fp = (struct _cffi_freeme_s *)PyObject_Malloc( - offsetof(struct _cffi_freeme_s, alignment) + (size_t)datasize); - if (fp == NULL) - return -1; - fp->next = *freeme; - *freeme = fp; - p = *output_data = (char *)&fp->alignment; - } - memset((void *)p, 0, (size_t)datasize); - return _cffi_convert_array_from_object(p, ctptr, arg); -} - -#ifdef __GNUC__ - __attribute__((unused)) -#endif -static void _cffi_free_array_arguments(struct _cffi_freeme_s *freeme) -{ - do { - void *p = (void *)freeme; - freeme = freeme->next; - PyObject_Free(p); - } while (freeme != NULL); -} - -static int _cffi_init(void) -{ - PyObject *module, *c_api_object = NULL; - - module = PyImport_ImportModule("_cffi_backend"); - if (module == NULL) - goto failure; - - c_api_object = PyObject_GetAttrString(module, "_C_API"); - if (c_api_object == NULL) - goto failure; - if (!PyCapsule_CheckExact(c_api_object)) { - PyErr_SetNone(PyExc_ImportError); - goto failure; - } - memcpy(_cffi_exports, PyCapsule_GetPointer(c_api_object, "cffi"), - _CFFI_NUM_EXPORTS * sizeof(void *)); - - Py_DECREF(module); - Py_DECREF(c_api_object); - return 0; - - failure: - Py_XDECREF(module); - Py_XDECREF(c_api_object); - return -1; -} - -#define _cffi_type(num) ((CTypeDescrObject *)PyList_GET_ITEM(_cffi_types, num)) - -/**********/ -''' diff --git a/venv/lib/python3.12/site-packages/cffi/vengine_gen.py b/venv/lib/python3.12/site-packages/cffi/vengine_gen.py deleted file mode 100644 index bffc821..0000000 --- a/venv/lib/python3.12/site-packages/cffi/vengine_gen.py +++ /dev/null @@ -1,679 +0,0 @@ -# -# DEPRECATED: implementation for ffi.verify() -# -import sys, os -import types - -from . import model -from .error import VerificationError - - -class VGenericEngine(object): - _class_key = 'g' - _gen_python_module = False - - def __init__(self, verifier): - self.verifier = verifier - self.ffi = verifier.ffi - self.export_symbols = [] - self._struct_pending_verification = {} - - def patch_extension_kwds(self, kwds): - # add 'export_symbols' to the dictionary. Note that we add the - # list before filling it. When we fill it, it will thus also show - # up in kwds['export_symbols']. - kwds.setdefault('export_symbols', self.export_symbols) - - def find_module(self, module_name, path, so_suffixes): - for so_suffix in so_suffixes: - basename = module_name + so_suffix - if path is None: - path = sys.path - for dirname in path: - filename = os.path.join(dirname, basename) - if os.path.isfile(filename): - return filename - - def collect_types(self): - pass # not needed in the generic engine - - def _prnt(self, what=''): - self._f.write(what + '\n') - - def write_source_to_f(self): - prnt = self._prnt - # first paste some standard set of lines that are mostly '#include' - prnt(cffimod_header) - # then paste the C source given by the user, verbatim. - prnt(self.verifier.preamble) - # - # call generate_gen_xxx_decl(), for every xxx found from - # ffi._parser._declarations. This generates all the functions. - self._generate('decl') - # - # on Windows, distutils insists on putting init_cffi_xyz in - # 'export_symbols', so instead of fighting it, just give up and - # give it one - if sys.platform == 'win32': - if sys.version_info >= (3,): - prefix = 'PyInit_' - else: - prefix = 'init' - modname = self.verifier.get_module_name() - prnt("void %s%s(void) { }\n" % (prefix, modname)) - - def load_library(self, flags=0): - # import it with the CFFI backend - backend = self.ffi._backend - # needs to make a path that contains '/', on Posix - filename = os.path.join(os.curdir, self.verifier.modulefilename) - module = backend.load_library(filename, flags) - # - # call loading_gen_struct() to get the struct layout inferred by - # the C compiler - self._load(module, 'loading') - - # build the FFILibrary class and instance, this is a module subclass - # because modules are expected to have usually-constant-attributes and - # in PyPy this means the JIT is able to treat attributes as constant, - # which we want. - class FFILibrary(types.ModuleType): - _cffi_generic_module = module - _cffi_ffi = self.ffi - _cffi_dir = [] - def __dir__(self): - return FFILibrary._cffi_dir - library = FFILibrary("") - # - # finally, call the loaded_gen_xxx() functions. This will set - # up the 'library' object. - self._load(module, 'loaded', library=library) - return library - - def _get_declarations(self): - lst = [(key, tp) for (key, (tp, qual)) in - self.ffi._parser._declarations.items()] - lst.sort() - return lst - - def _generate(self, step_name): - for name, tp in self._get_declarations(): - kind, realname = name.split(' ', 1) - try: - method = getattr(self, '_generate_gen_%s_%s' % (kind, - step_name)) - except AttributeError: - raise VerificationError( - "not implemented in verify(): %r" % name) - try: - method(tp, realname) - except Exception as e: - model.attach_exception_info(e, name) - raise - - def _load(self, module, step_name, **kwds): - for name, tp in self._get_declarations(): - kind, realname = name.split(' ', 1) - method = getattr(self, '_%s_gen_%s' % (step_name, kind)) - try: - method(tp, realname, module, **kwds) - except Exception as e: - model.attach_exception_info(e, name) - raise - - def _generate_nothing(self, tp, name): - pass - - def _loaded_noop(self, tp, name, module, **kwds): - pass - - # ---------- - # typedefs: generates no code so far - - _generate_gen_typedef_decl = _generate_nothing - _loading_gen_typedef = _loaded_noop - _loaded_gen_typedef = _loaded_noop - - # ---------- - # function declarations - - def _generate_gen_function_decl(self, tp, name): - assert isinstance(tp, model.FunctionPtrType) - if tp.ellipsis: - # cannot support vararg functions better than this: check for its - # exact type (including the fixed arguments), and build it as a - # constant function pointer (no _cffi_f_%s wrapper) - self._generate_gen_const(False, name, tp) - return - prnt = self._prnt - numargs = len(tp.args) - argnames = [] - for i, type in enumerate(tp.args): - indirection = '' - if isinstance(type, model.StructOrUnion): - indirection = '*' - argnames.append('%sx%d' % (indirection, i)) - context = 'argument of %s' % name - arglist = [type.get_c_name(' %s' % arg, context) - for type, arg in zip(tp.args, argnames)] - tpresult = tp.result - if isinstance(tpresult, model.StructOrUnion): - arglist.insert(0, tpresult.get_c_name(' *r', context)) - tpresult = model.void_type - arglist = ', '.join(arglist) or 'void' - wrappername = '_cffi_f_%s' % name - self.export_symbols.append(wrappername) - if tp.abi: - abi = tp.abi + ' ' - else: - abi = '' - funcdecl = ' %s%s(%s)' % (abi, wrappername, arglist) - context = 'result of %s' % name - prnt(tpresult.get_c_name(funcdecl, context)) - prnt('{') - # - if isinstance(tp.result, model.StructOrUnion): - result_code = '*r = ' - elif not isinstance(tp.result, model.VoidType): - result_code = 'return ' - else: - result_code = '' - prnt(' %s%s(%s);' % (result_code, name, ', '.join(argnames))) - prnt('}') - prnt() - - _loading_gen_function = _loaded_noop - - def _loaded_gen_function(self, tp, name, module, library): - assert isinstance(tp, model.FunctionPtrType) - if tp.ellipsis: - newfunction = self._load_constant(False, tp, name, module) - else: - indirections = [] - base_tp = tp - if (any(isinstance(typ, model.StructOrUnion) for typ in tp.args) - or isinstance(tp.result, model.StructOrUnion)): - indirect_args = [] - for i, typ in enumerate(tp.args): - if isinstance(typ, model.StructOrUnion): - typ = model.PointerType(typ) - indirections.append((i, typ)) - indirect_args.append(typ) - indirect_result = tp.result - if isinstance(indirect_result, model.StructOrUnion): - if indirect_result.fldtypes is None: - raise TypeError("'%s' is used as result type, " - "but is opaque" % ( - indirect_result._get_c_name(),)) - indirect_result = model.PointerType(indirect_result) - indirect_args.insert(0, indirect_result) - indirections.insert(0, ("result", indirect_result)) - indirect_result = model.void_type - tp = model.FunctionPtrType(tuple(indirect_args), - indirect_result, tp.ellipsis) - BFunc = self.ffi._get_cached_btype(tp) - wrappername = '_cffi_f_%s' % name - newfunction = module.load_function(BFunc, wrappername) - for i, typ in indirections: - newfunction = self._make_struct_wrapper(newfunction, i, typ, - base_tp) - setattr(library, name, newfunction) - type(library)._cffi_dir.append(name) - - def _make_struct_wrapper(self, oldfunc, i, tp, base_tp): - backend = self.ffi._backend - BType = self.ffi._get_cached_btype(tp) - if i == "result": - ffi = self.ffi - def newfunc(*args): - res = ffi.new(BType) - oldfunc(res, *args) - return res[0] - else: - def newfunc(*args): - args = args[:i] + (backend.newp(BType, args[i]),) + args[i+1:] - return oldfunc(*args) - newfunc._cffi_base_type = base_tp - return newfunc - - # ---------- - # named structs - - def _generate_gen_struct_decl(self, tp, name): - assert name == tp.name - self._generate_struct_or_union_decl(tp, 'struct', name) - - def _loading_gen_struct(self, tp, name, module): - self._loading_struct_or_union(tp, 'struct', name, module) - - def _loaded_gen_struct(self, tp, name, module, **kwds): - self._loaded_struct_or_union(tp) - - def _generate_gen_union_decl(self, tp, name): - assert name == tp.name - self._generate_struct_or_union_decl(tp, 'union', name) - - def _loading_gen_union(self, tp, name, module): - self._loading_struct_or_union(tp, 'union', name, module) - - def _loaded_gen_union(self, tp, name, module, **kwds): - self._loaded_struct_or_union(tp) - - def _generate_struct_or_union_decl(self, tp, prefix, name): - if tp.fldnames is None: - return # nothing to do with opaque structs - checkfuncname = '_cffi_check_%s_%s' % (prefix, name) - layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) - cname = ('%s %s' % (prefix, name)).strip() - # - prnt = self._prnt - prnt('static void %s(%s *p)' % (checkfuncname, cname)) - prnt('{') - prnt(' /* only to generate compile-time warnings or errors */') - prnt(' (void)p;') - for fname, ftype, fbitsize, fqual in tp.enumfields(): - if (isinstance(ftype, model.PrimitiveType) - and ftype.is_integer_type()) or fbitsize >= 0: - # accept all integers, but complain on float or double - prnt(' (void)((p->%s) << 1);' % fname) - else: - # only accept exactly the type declared. - try: - prnt(' { %s = &p->%s; (void)tmp; }' % ( - ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual), - fname)) - except VerificationError as e: - prnt(' /* %s */' % str(e)) # cannot verify it, ignore - prnt('}') - self.export_symbols.append(layoutfuncname) - prnt('intptr_t %s(intptr_t i)' % (layoutfuncname,)) - prnt('{') - prnt(' struct _cffi_aligncheck { char x; %s y; };' % cname) - prnt(' static intptr_t nums[] = {') - prnt(' sizeof(%s),' % cname) - prnt(' offsetof(struct _cffi_aligncheck, y),') - for fname, ftype, fbitsize, fqual in tp.enumfields(): - if fbitsize >= 0: - continue # xxx ignore fbitsize for now - prnt(' offsetof(%s, %s),' % (cname, fname)) - if isinstance(ftype, model.ArrayType) and ftype.length is None: - prnt(' 0, /* %s */' % ftype._get_c_name()) - else: - prnt(' sizeof(((%s *)0)->%s),' % (cname, fname)) - prnt(' -1') - prnt(' };') - prnt(' return nums[i];') - prnt(' /* the next line is not executed, but compiled */') - prnt(' %s(0);' % (checkfuncname,)) - prnt('}') - prnt() - - def _loading_struct_or_union(self, tp, prefix, name, module): - if tp.fldnames is None: - return # nothing to do with opaque structs - layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) - # - BFunc = self.ffi._typeof_locked("intptr_t(*)(intptr_t)")[0] - function = module.load_function(BFunc, layoutfuncname) - layout = [] - num = 0 - while True: - x = function(num) - if x < 0: break - layout.append(x) - num += 1 - if isinstance(tp, model.StructOrUnion) and tp.partial: - # use the function()'s sizes and offsets to guide the - # layout of the struct - totalsize = layout[0] - totalalignment = layout[1] - fieldofs = layout[2::2] - fieldsize = layout[3::2] - tp.force_flatten() - assert len(fieldofs) == len(fieldsize) == len(tp.fldnames) - tp.fixedlayout = fieldofs, fieldsize, totalsize, totalalignment - else: - cname = ('%s %s' % (prefix, name)).strip() - self._struct_pending_verification[tp] = layout, cname - - def _loaded_struct_or_union(self, tp): - if tp.fldnames is None: - return # nothing to do with opaque structs - self.ffi._get_cached_btype(tp) # force 'fixedlayout' to be considered - - if tp in self._struct_pending_verification: - # check that the layout sizes and offsets match the real ones - def check(realvalue, expectedvalue, msg): - if realvalue != expectedvalue: - raise VerificationError( - "%s (we have %d, but C compiler says %d)" - % (msg, expectedvalue, realvalue)) - ffi = self.ffi - BStruct = ffi._get_cached_btype(tp) - layout, cname = self._struct_pending_verification.pop(tp) - check(layout[0], ffi.sizeof(BStruct), "wrong total size") - check(layout[1], ffi.alignof(BStruct), "wrong total alignment") - i = 2 - for fname, ftype, fbitsize, fqual in tp.enumfields(): - if fbitsize >= 0: - continue # xxx ignore fbitsize for now - check(layout[i], ffi.offsetof(BStruct, fname), - "wrong offset for field %r" % (fname,)) - if layout[i+1] != 0: - BField = ffi._get_cached_btype(ftype) - check(layout[i+1], ffi.sizeof(BField), - "wrong size for field %r" % (fname,)) - i += 2 - assert i == len(layout) - - # ---------- - # 'anonymous' declarations. These are produced for anonymous structs - # or unions; the 'name' is obtained by a typedef. - - def _generate_gen_anonymous_decl(self, tp, name): - if isinstance(tp, model.EnumType): - self._generate_gen_enum_decl(tp, name, '') - else: - self._generate_struct_or_union_decl(tp, '', name) - - def _loading_gen_anonymous(self, tp, name, module): - if isinstance(tp, model.EnumType): - self._loading_gen_enum(tp, name, module, '') - else: - self._loading_struct_or_union(tp, '', name, module) - - def _loaded_gen_anonymous(self, tp, name, module, **kwds): - if isinstance(tp, model.EnumType): - self._loaded_gen_enum(tp, name, module, **kwds) - else: - self._loaded_struct_or_union(tp) - - # ---------- - # constants, likely declared with '#define' - - def _generate_gen_const(self, is_int, name, tp=None, category='const', - check_value=None): - prnt = self._prnt - funcname = '_cffi_%s_%s' % (category, name) - self.export_symbols.append(funcname) - if check_value is not None: - assert is_int - assert category == 'const' - prnt('int %s(char *out_error)' % funcname) - prnt('{') - self._check_int_constant_value(name, check_value) - prnt(' return 0;') - prnt('}') - elif is_int: - assert category == 'const' - prnt('int %s(long long *out_value)' % funcname) - prnt('{') - prnt(' *out_value = (long long)(%s);' % (name,)) - prnt(' return (%s) <= 0;' % (name,)) - prnt('}') - else: - assert tp is not None - assert check_value is None - if category == 'var': - ampersand = '&' - else: - ampersand = '' - extra = '' - if category == 'const' and isinstance(tp, model.StructOrUnion): - extra = 'const *' - ampersand = '&' - prnt(tp.get_c_name(' %s%s(void)' % (extra, funcname), name)) - prnt('{') - prnt(' return (%s%s);' % (ampersand, name)) - prnt('}') - prnt() - - def _generate_gen_constant_decl(self, tp, name): - is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() - self._generate_gen_const(is_int, name, tp) - - _loading_gen_constant = _loaded_noop - - def _load_constant(self, is_int, tp, name, module, check_value=None): - funcname = '_cffi_const_%s' % name - if check_value is not None: - assert is_int - self._load_known_int_constant(module, funcname) - value = check_value - elif is_int: - BType = self.ffi._typeof_locked("long long*")[0] - BFunc = self.ffi._typeof_locked("int(*)(long long*)")[0] - function = module.load_function(BFunc, funcname) - p = self.ffi.new(BType) - negative = function(p) - value = int(p[0]) - if value < 0 and not negative: - BLongLong = self.ffi._typeof_locked("long long")[0] - value += (1 << (8*self.ffi.sizeof(BLongLong))) - else: - assert check_value is None - fntypeextra = '(*)(void)' - if isinstance(tp, model.StructOrUnion): - fntypeextra = '*' + fntypeextra - BFunc = self.ffi._typeof_locked(tp.get_c_name(fntypeextra, name))[0] - function = module.load_function(BFunc, funcname) - value = function() - if isinstance(tp, model.StructOrUnion): - value = value[0] - return value - - def _loaded_gen_constant(self, tp, name, module, library): - is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() - value = self._load_constant(is_int, tp, name, module) - setattr(library, name, value) - type(library)._cffi_dir.append(name) - - # ---------- - # enums - - def _check_int_constant_value(self, name, value): - prnt = self._prnt - if value <= 0: - prnt(' if ((%s) > 0 || (long)(%s) != %dL) {' % ( - name, name, value)) - else: - prnt(' if ((%s) <= 0 || (unsigned long)(%s) != %dUL) {' % ( - name, name, value)) - prnt(' char buf[64];') - prnt(' if ((%s) <= 0)' % name) - prnt(' sprintf(buf, "%%ld", (long)(%s));' % name) - prnt(' else') - prnt(' sprintf(buf, "%%lu", (unsigned long)(%s));' % - name) - prnt(' sprintf(out_error, "%s has the real value %s, not %s",') - prnt(' "%s", buf, "%d");' % (name[:100], value)) - prnt(' return -1;') - prnt(' }') - - def _load_known_int_constant(self, module, funcname): - BType = self.ffi._typeof_locked("char[]")[0] - BFunc = self.ffi._typeof_locked("int(*)(char*)")[0] - function = module.load_function(BFunc, funcname) - p = self.ffi.new(BType, 256) - if function(p) < 0: - error = self.ffi.string(p) - if sys.version_info >= (3,): - error = str(error, 'utf-8') - raise VerificationError(error) - - def _enum_funcname(self, prefix, name): - # "$enum_$1" => "___D_enum____D_1" - name = name.replace('$', '___D_') - return '_cffi_e_%s_%s' % (prefix, name) - - def _generate_gen_enum_decl(self, tp, name, prefix='enum'): - if tp.partial: - for enumerator in tp.enumerators: - self._generate_gen_const(True, enumerator) - return - # - funcname = self._enum_funcname(prefix, name) - self.export_symbols.append(funcname) - prnt = self._prnt - prnt('int %s(char *out_error)' % funcname) - prnt('{') - for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): - self._check_int_constant_value(enumerator, enumvalue) - prnt(' return 0;') - prnt('}') - prnt() - - def _loading_gen_enum(self, tp, name, module, prefix='enum'): - if tp.partial: - enumvalues = [self._load_constant(True, tp, enumerator, module) - for enumerator in tp.enumerators] - tp.enumvalues = tuple(enumvalues) - tp.partial_resolved = True - else: - funcname = self._enum_funcname(prefix, name) - self._load_known_int_constant(module, funcname) - - def _loaded_gen_enum(self, tp, name, module, library): - for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): - setattr(library, enumerator, enumvalue) - type(library)._cffi_dir.append(enumerator) - - # ---------- - # macros: for now only for integers - - def _generate_gen_macro_decl(self, tp, name): - if tp == '...': - check_value = None - else: - check_value = tp # an integer - self._generate_gen_const(True, name, check_value=check_value) - - _loading_gen_macro = _loaded_noop - - def _loaded_gen_macro(self, tp, name, module, library): - if tp == '...': - check_value = None - else: - check_value = tp # an integer - value = self._load_constant(True, tp, name, module, - check_value=check_value) - setattr(library, name, value) - type(library)._cffi_dir.append(name) - - # ---------- - # global variables - - def _generate_gen_variable_decl(self, tp, name): - if isinstance(tp, model.ArrayType): - if tp.length_is_unknown(): - prnt = self._prnt - funcname = '_cffi_sizeof_%s' % (name,) - self.export_symbols.append(funcname) - prnt("size_t %s(void)" % funcname) - prnt("{") - prnt(" return sizeof(%s);" % (name,)) - prnt("}") - tp_ptr = model.PointerType(tp.item) - self._generate_gen_const(False, name, tp_ptr) - else: - tp_ptr = model.PointerType(tp) - self._generate_gen_const(False, name, tp_ptr, category='var') - - _loading_gen_variable = _loaded_noop - - def _loaded_gen_variable(self, tp, name, module, library): - if isinstance(tp, model.ArrayType): # int a[5] is "constant" in the - # sense that "a=..." is forbidden - if tp.length_is_unknown(): - funcname = '_cffi_sizeof_%s' % (name,) - BFunc = self.ffi._typeof_locked('size_t(*)(void)')[0] - function = module.load_function(BFunc, funcname) - size = function() - BItemType = self.ffi._get_cached_btype(tp.item) - length, rest = divmod(size, self.ffi.sizeof(BItemType)) - if rest != 0: - raise VerificationError( - "bad size: %r does not seem to be an array of %s" % - (name, tp.item)) - tp = tp.resolve_length(length) - tp_ptr = model.PointerType(tp.item) - value = self._load_constant(False, tp_ptr, name, module) - # 'value' is a which we have to replace with - # a if the N is actually known - if tp.length is not None: - BArray = self.ffi._get_cached_btype(tp) - value = self.ffi.cast(BArray, value) - setattr(library, name, value) - type(library)._cffi_dir.append(name) - return - # remove ptr= from the library instance, and replace - # it by a property on the class, which reads/writes into ptr[0]. - funcname = '_cffi_var_%s' % name - BFunc = self.ffi._typeof_locked(tp.get_c_name('*(*)(void)', name))[0] - function = module.load_function(BFunc, funcname) - ptr = function() - def getter(library): - return ptr[0] - def setter(library, value): - ptr[0] = value - setattr(type(library), name, property(getter, setter)) - type(library)._cffi_dir.append(name) - -cffimod_header = r''' -#include -#include -#include -#include -#include /* XXX for ssize_t on some platforms */ - -/* this block of #ifs should be kept exactly identical between - c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py - and cffi/_cffi_include.h */ -#if defined(_MSC_VER) -# include /* for alloca() */ -# if _MSC_VER < 1600 /* MSVC < 2010 */ - typedef __int8 int8_t; - typedef __int16 int16_t; - typedef __int32 int32_t; - typedef __int64 int64_t; - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; - typedef unsigned __int64 uint64_t; - typedef __int8 int_least8_t; - typedef __int16 int_least16_t; - typedef __int32 int_least32_t; - typedef __int64 int_least64_t; - typedef unsigned __int8 uint_least8_t; - typedef unsigned __int16 uint_least16_t; - typedef unsigned __int32 uint_least32_t; - typedef unsigned __int64 uint_least64_t; - typedef __int8 int_fast8_t; - typedef __int16 int_fast16_t; - typedef __int32 int_fast32_t; - typedef __int64 int_fast64_t; - typedef unsigned __int8 uint_fast8_t; - typedef unsigned __int16 uint_fast16_t; - typedef unsigned __int32 uint_fast32_t; - typedef unsigned __int64 uint_fast64_t; - typedef __int64 intmax_t; - typedef unsigned __int64 uintmax_t; -# else -# include -# endif -# if _MSC_VER < 1800 /* MSVC < 2013 */ -# ifndef __cplusplus - typedef unsigned char _Bool; -# endif -# endif -# define _cffi_float_complex_t _Fcomplex /* include for it */ -# define _cffi_double_complex_t _Dcomplex /* include for it */ -#else -# include -# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) -# include -# endif -# define _cffi_float_complex_t float _Complex -# define _cffi_double_complex_t double _Complex -#endif -''' diff --git a/venv/lib/python3.12/site-packages/cffi/verifier.py b/venv/lib/python3.12/site-packages/cffi/verifier.py deleted file mode 100644 index e392a2b..0000000 --- a/venv/lib/python3.12/site-packages/cffi/verifier.py +++ /dev/null @@ -1,306 +0,0 @@ -# -# DEPRECATED: implementation for ffi.verify() -# -import sys, os, binascii, shutil, io -from . import __version_verifier_modules__ -from . import ffiplatform -from .error import VerificationError - -if sys.version_info >= (3, 3): - import importlib.machinery - def _extension_suffixes(): - return importlib.machinery.EXTENSION_SUFFIXES[:] -else: - import imp - def _extension_suffixes(): - return [suffix for suffix, _, type in imp.get_suffixes() - if type == imp.C_EXTENSION] - - -if sys.version_info >= (3,): - NativeIO = io.StringIO -else: - class NativeIO(io.BytesIO): - def write(self, s): - if isinstance(s, unicode): - s = s.encode('ascii') - super(NativeIO, self).write(s) - - -class Verifier(object): - - def __init__(self, ffi, preamble, tmpdir=None, modulename=None, - ext_package=None, tag='', force_generic_engine=False, - source_extension='.c', flags=None, relative_to=None, **kwds): - if ffi._parser._uses_new_feature: - raise VerificationError( - "feature not supported with ffi.verify(), but only " - "with ffi.set_source(): %s" % (ffi._parser._uses_new_feature,)) - self.ffi = ffi - self.preamble = preamble - if not modulename: - flattened_kwds = ffiplatform.flatten(kwds) - vengine_class = _locate_engine_class(ffi, force_generic_engine) - self._vengine = vengine_class(self) - self._vengine.patch_extension_kwds(kwds) - self.flags = flags - self.kwds = self.make_relative_to(kwds, relative_to) - # - if modulename: - if tag: - raise TypeError("can't specify both 'modulename' and 'tag'") - else: - key = '\x00'.join(['%d.%d' % sys.version_info[:2], - __version_verifier_modules__, - preamble, flattened_kwds] + - ffi._cdefsources) - if sys.version_info >= (3,): - key = key.encode('utf-8') - k1 = hex(binascii.crc32(key[0::2]) & 0xffffffff) - k1 = k1.lstrip('0x').rstrip('L') - k2 = hex(binascii.crc32(key[1::2]) & 0xffffffff) - k2 = k2.lstrip('0').rstrip('L') - modulename = '_cffi_%s_%s%s%s' % (tag, self._vengine._class_key, - k1, k2) - suffix = _get_so_suffixes()[0] - self.tmpdir = tmpdir or _caller_dir_pycache() - self.sourcefilename = os.path.join(self.tmpdir, modulename + source_extension) - self.modulefilename = os.path.join(self.tmpdir, modulename + suffix) - self.ext_package = ext_package - self._has_source = False - self._has_module = False - - def write_source(self, file=None): - """Write the C source code. It is produced in 'self.sourcefilename', - which can be tweaked beforehand.""" - with self.ffi._lock: - if self._has_source and file is None: - raise VerificationError( - "source code already written") - self._write_source(file) - - def compile_module(self): - """Write the C source code (if not done already) and compile it. - This produces a dynamic link library in 'self.modulefilename'.""" - with self.ffi._lock: - if self._has_module: - raise VerificationError("module already compiled") - if not self._has_source: - self._write_source() - self._compile_module() - - def load_library(self): - """Get a C module from this Verifier instance. - Returns an instance of a FFILibrary class that behaves like the - objects returned by ffi.dlopen(), but that delegates all - operations to the C module. If necessary, the C code is written - and compiled first. - """ - with self.ffi._lock: - if not self._has_module: - self._locate_module() - if not self._has_module: - if not self._has_source: - self._write_source() - self._compile_module() - return self._load_library() - - def get_module_name(self): - basename = os.path.basename(self.modulefilename) - # kill both the .so extension and the other .'s, as introduced - # by Python 3: 'basename.cpython-33m.so' - basename = basename.split('.', 1)[0] - # and the _d added in Python 2 debug builds --- but try to be - # conservative and not kill a legitimate _d - if basename.endswith('_d') and hasattr(sys, 'gettotalrefcount'): - basename = basename[:-2] - return basename - - def get_extension(self): - if not self._has_source: - with self.ffi._lock: - if not self._has_source: - self._write_source() - sourcename = ffiplatform.maybe_relative_path(self.sourcefilename) - modname = self.get_module_name() - return ffiplatform.get_extension(sourcename, modname, **self.kwds) - - def generates_python_module(self): - return self._vengine._gen_python_module - - def make_relative_to(self, kwds, relative_to): - if relative_to and os.path.dirname(relative_to): - dirname = os.path.dirname(relative_to) - kwds = kwds.copy() - for key in ffiplatform.LIST_OF_FILE_NAMES: - if key in kwds: - lst = kwds[key] - if not isinstance(lst, (list, tuple)): - raise TypeError("keyword '%s' should be a list or tuple" - % (key,)) - lst = [os.path.join(dirname, fn) for fn in lst] - kwds[key] = lst - return kwds - - # ---------- - - def _locate_module(self): - if not os.path.isfile(self.modulefilename): - if self.ext_package: - try: - pkg = __import__(self.ext_package, None, None, ['__doc__']) - except ImportError: - return # cannot import the package itself, give up - # (e.g. it might be called differently before installation) - path = pkg.__path__ - else: - path = None - filename = self._vengine.find_module(self.get_module_name(), path, - _get_so_suffixes()) - if filename is None: - return - self.modulefilename = filename - self._vengine.collect_types() - self._has_module = True - - def _write_source_to(self, file): - self._vengine._f = file - try: - self._vengine.write_source_to_f() - finally: - del self._vengine._f - - def _write_source(self, file=None): - if file is not None: - self._write_source_to(file) - else: - # Write our source file to an in memory file. - f = NativeIO() - self._write_source_to(f) - source_data = f.getvalue() - - # Determine if this matches the current file - if os.path.exists(self.sourcefilename): - with open(self.sourcefilename, "r") as fp: - needs_written = not (fp.read() == source_data) - else: - needs_written = True - - # Actually write the file out if it doesn't match - if needs_written: - _ensure_dir(self.sourcefilename) - with open(self.sourcefilename, "w") as fp: - fp.write(source_data) - - # Set this flag - self._has_source = True - - def _compile_module(self): - # compile this C source - tmpdir = os.path.dirname(self.sourcefilename) - outputfilename = ffiplatform.compile(tmpdir, self.get_extension()) - try: - same = ffiplatform.samefile(outputfilename, self.modulefilename) - except OSError: - same = False - if not same: - _ensure_dir(self.modulefilename) - shutil.move(outputfilename, self.modulefilename) - self._has_module = True - - def _load_library(self): - assert self._has_module - if self.flags is not None: - return self._vengine.load_library(self.flags) - else: - return self._vengine.load_library() - -# ____________________________________________________________ - -_FORCE_GENERIC_ENGINE = False # for tests - -def _locate_engine_class(ffi, force_generic_engine): - if _FORCE_GENERIC_ENGINE: - force_generic_engine = True - if not force_generic_engine: - if '__pypy__' in sys.builtin_module_names: - force_generic_engine = True - else: - try: - import _cffi_backend - except ImportError: - _cffi_backend = '?' - if ffi._backend is not _cffi_backend: - force_generic_engine = True - if force_generic_engine: - from . import vengine_gen - return vengine_gen.VGenericEngine - else: - from . import vengine_cpy - return vengine_cpy.VCPythonEngine - -# ____________________________________________________________ - -_TMPDIR = None - -def _caller_dir_pycache(): - if _TMPDIR: - return _TMPDIR - result = os.environ.get('CFFI_TMPDIR') - if result: - return result - filename = sys._getframe(2).f_code.co_filename - return os.path.abspath(os.path.join(os.path.dirname(filename), - '__pycache__')) - -def set_tmpdir(dirname): - """Set the temporary directory to use instead of __pycache__.""" - global _TMPDIR - _TMPDIR = dirname - -def cleanup_tmpdir(tmpdir=None, keep_so=False): - """Clean up the temporary directory by removing all files in it - called `_cffi_*.{c,so}` as well as the `build` subdirectory.""" - tmpdir = tmpdir or _caller_dir_pycache() - try: - filelist = os.listdir(tmpdir) - except OSError: - return - if keep_so: - suffix = '.c' # only remove .c files - else: - suffix = _get_so_suffixes()[0].lower() - for fn in filelist: - if fn.lower().startswith('_cffi_') and ( - fn.lower().endswith(suffix) or fn.lower().endswith('.c')): - try: - os.unlink(os.path.join(tmpdir, fn)) - except OSError: - pass - clean_dir = [os.path.join(tmpdir, 'build')] - for dir in clean_dir: - try: - for fn in os.listdir(dir): - fn = os.path.join(dir, fn) - if os.path.isdir(fn): - clean_dir.append(fn) - else: - os.unlink(fn) - except OSError: - pass - -def _get_so_suffixes(): - suffixes = _extension_suffixes() - if not suffixes: - # bah, no C_EXTENSION available. Occurs on pypy without cpyext - if sys.platform == 'win32': - suffixes = [".pyd"] - else: - suffixes = [".so"] - - return suffixes - -def _ensure_dir(filename): - dirname = os.path.dirname(filename) - if dirname and not os.path.isdir(dirname): - os.makedirs(dirname) diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/LICENSE b/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/LICENSE deleted file mode 100644 index ad82355..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 TAHRI Ahmed R. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/METADATA b/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/METADATA deleted file mode 100644 index c6ebd7d..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/METADATA +++ /dev/null @@ -1,269 +0,0 @@ -Metadata-Version: 2.1 -Name: charset-normalizer -Version: 2.1.1 -Summary: The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet. -Home-page: https://github.com/ousret/charset_normalizer -Author: Ahmed TAHRI @Ousret -Author-email: ahmed.tahri@cloudnursery.dev -License: MIT -Project-URL: Bug Reports, https://github.com/Ousret/charset_normalizer/issues -Project-URL: Documentation, https://charset-normalizer.readthedocs.io/en/latest -Keywords: encoding,i18n,txt,text,charset,charset-detector,normalization,unicode,chardet -Classifier: Development Status :: 5 - Production/Stable -Classifier: License :: OSI Approved :: MIT License -Classifier: Intended Audience :: Developers -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Topic :: Text Processing :: Linguistic -Classifier: Topic :: Utilities -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Typing :: Typed -Requires-Python: >=3.6.0 -Description-Content-Type: text/markdown -License-File: LICENSE -Provides-Extra: unicode_backport -Requires-Dist: unicodedata2 ; extra == 'unicode_backport' - - -

    - -

    - The Real First Universal Charset Detector
    - - - - - - - - Download Count Total - -

    - -> A library that helps you read text from an unknown charset encoding.
    Motivated by `chardet`, -> I'm trying to resolve the issue by taking a new approach. -> All IANA character set names for which the Python core library provides codecs are supported. - -

    - >>>>> 👉 Try Me Online Now, Then Adopt Me 👈 <<<<< -

    - -This project offers you an alternative to **Universal Charset Encoding Detector**, also known as **Chardet**. - -| Feature | [Chardet](https://github.com/chardet/chardet) | Charset Normalizer | [cChardet](https://github.com/PyYoshi/cChardet) | -| ------------- | :-------------: | :------------------: | :------------------: | -| `Fast` | âŒ
    | ✅
    | ✅
    | -| `Universal**` | ⌠| ✅ | ⌠| -| `Reliable` **without** distinguishable standards | ⌠| ✅ | ✅ | -| `Reliable` **with** distinguishable standards | ✅ | ✅ | ✅ | -| `License` | LGPL-2.1
    _restrictive_ | MIT | MPL-1.1
    _restrictive_ | -| `Native Python` | ✅ | ✅ | ⌠| -| `Detect spoken language` | ⌠| ✅ | N/A | -| `UnicodeDecodeError Safety` | ⌠| ✅ | ⌠| -| `Whl Size` | 193.6 kB | 39.5 kB | ~200 kB | -| `Supported Encoding` | 33 | :tada: [93](https://charset-normalizer.readthedocs.io/en/latest/user/support.html#supported-encodings) | 40 - -

    -Reading Normalized TextCat Reading Text - -*\*\* : They are clearly using specific code for a specific encoding even if covering most of used one*
    -Did you got there because of the logs? See [https://charset-normalizer.readthedocs.io/en/latest/user/miscellaneous.html](https://charset-normalizer.readthedocs.io/en/latest/user/miscellaneous.html) - -## ⭠Your support - -*Fork, test-it, star-it, submit your ideas! We do listen.* - -## ⚡ Performance - -This package offer better performance than its counterpart Chardet. Here are some numbers. - -| Package | Accuracy | Mean per file (ms) | File per sec (est) | -| ------------- | :-------------: | :------------------: | :------------------: | -| [chardet](https://github.com/chardet/chardet) | 86 % | 200 ms | 5 file/sec | -| charset-normalizer | **98 %** | **39 ms** | 26 file/sec | - -| Package | 99th percentile | 95th percentile | 50th percentile | -| ------------- | :-------------: | :------------------: | :------------------: | -| [chardet](https://github.com/chardet/chardet) | 1200 ms | 287 ms | 23 ms | -| charset-normalizer | 400 ms | 200 ms | 15 ms | - -Chardet's performance on larger file (1MB+) are very poor. Expect huge difference on large payload. - -> Stats are generated using 400+ files using default parameters. More details on used files, see GHA workflows. -> And yes, these results might change at any time. The dataset can be updated to include more files. -> The actual delays heavily depends on your CPU capabilities. The factors should remain the same. -> Keep in mind that the stats are generous and that Chardet accuracy vs our is measured using Chardet initial capability -> (eg. Supported Encoding) Challenge-them if you want. - -[cchardet](https://github.com/PyYoshi/cChardet) is a non-native (cpp binding) and unmaintained faster alternative with -a better accuracy than chardet but lower than this package. If speed is the most important factor, you should try it. - -## ✨ Installation - -Using PyPi for latest stable -```sh -pip install charset-normalizer -U -``` - -If you want a more up-to-date `unicodedata` than the one available in your Python setup. -```sh -pip install charset-normalizer[unicode_backport] -U -``` - -## 🚀 Basic Usage - -### CLI -This package comes with a CLI. - -``` -usage: normalizer [-h] [-v] [-a] [-n] [-m] [-r] [-f] [-t THRESHOLD] - file [file ...] - -The Real First Universal Charset Detector. Discover originating encoding used -on text file. Normalize text to unicode. - -positional arguments: - files File(s) to be analysed - -optional arguments: - -h, --help show this help message and exit - -v, --verbose Display complementary information about file if any. - Stdout will contain logs about the detection process. - -a, --with-alternative - Output complementary possibilities if any. Top-level - JSON WILL be a list. - -n, --normalize Permit to normalize input file. If not set, program - does not write anything. - -m, --minimal Only output the charset detected to STDOUT. Disabling - JSON output. - -r, --replace Replace file when trying to normalize it instead of - creating a new one. - -f, --force Replace file without asking if you are sure, use this - flag with caution. - -t THRESHOLD, --threshold THRESHOLD - Define a custom maximum amount of chaos allowed in - decoded content. 0. <= chaos <= 1. - --version Show version information and exit. -``` - -```bash -normalizer ./data/sample.1.fr.srt -``` - -:tada: Since version 1.4.0 the CLI produce easily usable stdout result in JSON format. - -```json -{ - "path": "/home/default/projects/charset_normalizer/data/sample.1.fr.srt", - "encoding": "cp1252", - "encoding_aliases": [ - "1252", - "windows_1252" - ], - "alternative_encodings": [ - "cp1254", - "cp1256", - "cp1258", - "iso8859_14", - "iso8859_15", - "iso8859_16", - "iso8859_3", - "iso8859_9", - "latin_1", - "mbcs" - ], - "language": "French", - "alphabets": [ - "Basic Latin", - "Latin-1 Supplement" - ], - "has_sig_or_bom": false, - "chaos": 0.149, - "coherence": 97.152, - "unicode_path": null, - "is_preferred": true -} -``` - -### Python -*Just print out normalized text* -```python -from charset_normalizer import from_path - -results = from_path('./my_subtitle.srt') - -print(str(results.best())) -``` - -*Normalize any text file* -```python -from charset_normalizer import normalize -try: - normalize('./my_subtitle.srt') # should write to disk my_subtitle-***.srt -except IOError as e: - print('Sadly, we are unable to perform charset normalization.', str(e)) -``` - -*Upgrade your code without effort* -```python -from charset_normalizer import detect -``` - -The above code will behave the same as **chardet**. We ensure that we offer the best (reasonable) BC result possible. - -See the docs for advanced usage : [readthedocs.io](https://charset-normalizer.readthedocs.io/en/latest/) - -## 😇 Why - -When I started using Chardet, I noticed that it was not suited to my expectations, and I wanted to propose a -reliable alternative using a completely different method. Also! I never back down on a good challenge! - -I **don't care** about the **originating charset** encoding, because **two different tables** can -produce **two identical rendered string.** -What I want is to get readable text, the best I can. - -In a way, **I'm brute forcing text decoding.** How cool is that ? 😎 - -Don't confuse package **ftfy** with charset-normalizer or chardet. ftfy goal is to repair unicode string whereas charset-normalizer to convert raw file in unknown encoding to unicode. - -## 🰠How - - - Discard all charset encoding table that could not fit the binary content. - - Measure chaos, or the mess once opened (by chunks) with a corresponding charset encoding. - - Extract matches with the lowest mess detected. - - Additionally, we measure coherence / probe for a language. - -**Wait a minute**, what is chaos/mess and coherence according to **YOU ?** - -*Chaos :* I opened hundred of text files, **written by humans**, with the wrong encoding table. **I observed**, then -**I established** some ground rules about **what is obvious** when **it seems like** a mess. - I know that my interpretation of what is chaotic is very subjective, feel free to contribute in order to - improve or rewrite it. - -*Coherence :* For each language there is on earth, we have computed ranked letter appearance occurrences (the best we can). So I thought -that intel is worth something here. So I use those records against decoded text to check if I can detect intelligent design. - -## ⚡ Known limitations - - - Language detection is unreliable when text contains two or more languages sharing identical letters. (eg. HTML (english tags) + Turkish content (Sharing Latin characters)) - - Every charset detector heavily depends on sufficient content. In common cases, do not bother run detection on very tiny content. - -## 👤 Contributing - -Contributions, issues and feature requests are very much welcome.
    -Feel free to check [issues page](https://github.com/ousret/charset_normalizer/issues) if you want to contribute. - -## 📠License - -Copyright © 2019 [Ahmed TAHRI @Ousret](https://github.com/Ousret).
    -This project is [MIT](https://github.com/Ousret/charset_normalizer/blob/master/LICENSE) licensed. - -Characters frequencies used in this project © 2012 [Denny VrandeÄić](http://simia.net/letters/) diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/RECORD b/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/RECORD deleted file mode 100644 index 738539d..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/RECORD +++ /dev/null @@ -1,33 +0,0 @@ -../../../bin/normalizer,sha256=8edvN6yT2PrQiJ4CDcLhpp2dqWXppBRq76XIkcOa0Lw,270 -charset_normalizer-2.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -charset_normalizer-2.1.1.dist-info/LICENSE,sha256=6zGgxaT7Cbik4yBV0lweX5w1iidS_vPNcgIT0cz-4kE,1070 -charset_normalizer-2.1.1.dist-info/METADATA,sha256=C99l12g4d1E9_UiW-mqPCWx7v2M_lYGWxy1GTOjXSsA,11942 -charset_normalizer-2.1.1.dist-info/RECORD,, -charset_normalizer-2.1.1.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92 -charset_normalizer-2.1.1.dist-info/entry_points.txt,sha256=uYo8aIGLWv8YgWfSna5HnfY_En4pkF1w4bgawNAXzP0,76 -charset_normalizer-2.1.1.dist-info/top_level.txt,sha256=7ASyzePr8_xuZWJsnqJjIBtyV8vhEo0wBCv1MPRRi3Q,19 -charset_normalizer/__init__.py,sha256=jGhhf1IcOgCpZsr593E9fPvjWKnflVqHe_LwkOJjInU,1790 -charset_normalizer/__pycache__/__init__.cpython-312.pyc,, -charset_normalizer/__pycache__/api.cpython-312.pyc,, -charset_normalizer/__pycache__/cd.cpython-312.pyc,, -charset_normalizer/__pycache__/constant.cpython-312.pyc,, -charset_normalizer/__pycache__/legacy.cpython-312.pyc,, -charset_normalizer/__pycache__/md.cpython-312.pyc,, -charset_normalizer/__pycache__/models.cpython-312.pyc,, -charset_normalizer/__pycache__/utils.cpython-312.pyc,, -charset_normalizer/__pycache__/version.cpython-312.pyc,, -charset_normalizer/api.py,sha256=euVPmjAMbjpqhEHPjfKtyy1mK52U0TOUBUQgM_Qy6eE,19191 -charset_normalizer/assets/__init__.py,sha256=r7aakPaRIc2FFG2mw2V8NOTvkl25_euKZ3wPf5SAVa4,15222 -charset_normalizer/assets/__pycache__/__init__.cpython-312.pyc,, -charset_normalizer/cd.py,sha256=Pxdkbn4cy0iZF42KTb1FiWIqqKobuz_fDjGwc6JMNBc,10811 -charset_normalizer/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc,, -charset_normalizer/cli/__pycache__/normalizer.cpython-312.pyc,, -charset_normalizer/cli/normalizer.py,sha256=FmD1RXeMpRBg_mjR0MaJhNUpM2qZ8wz2neAE7AayBeg,9521 -charset_normalizer/constant.py,sha256=NgU-pY8JH2a9lkVT8oKwAFmIUYNKOuSBwZgF9MrlNCM,19157 -charset_normalizer/legacy.py,sha256=XKeZOts_HdYQU_Jb3C9ZfOjY2CiUL132k9_nXer8gig,3384 -charset_normalizer/md.py,sha256=pZP8IVpSC82D8INA9Tf_y0ijJSRI-UIncZvLdfTWEd4,17642 -charset_normalizer/models.py,sha256=i68YdlSLTEI3EEBVXq8TLNAbyyjrLC2OWszc-OBAk9I,13167 -charset_normalizer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -charset_normalizer/utils.py,sha256=ykOznhcAeH-ODLBWJuI7t1nbwa1SAfN_bDYTCJGyh4U,11771 -charset_normalizer/version.py,sha256=_eh2MA3qS__IajlePQxKBmlw6zaBDvPYlLdEgxgIojw,79 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/WHEEL b/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/WHEEL deleted file mode 100644 index becc9a6..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.37.1) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/entry_points.txt b/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/entry_points.txt deleted file mode 100644 index a06d360..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/entry_points.txt +++ /dev/null @@ -1,2 +0,0 @@ -[console_scripts] -normalizer = charset_normalizer.cli.normalizer:cli_detect diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/top_level.txt deleted file mode 100644 index 66958f0..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer-2.1.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -charset_normalizer diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__init__.py b/venv/lib/python3.12/site-packages/charset_normalizer/__init__.py deleted file mode 100644 index 2dcaf56..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer/__init__.py +++ /dev/null @@ -1,56 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Charset-Normalizer -~~~~~~~~~~~~~~ -The Real First Universal Charset Detector. -A library that helps you read text from an unknown charset encoding. -Motivated by chardet, This package is trying to resolve the issue by taking a new approach. -All IANA character set names for which the Python core library provides codecs are supported. - -Basic usage: - >>> from charset_normalizer import from_bytes - >>> results = from_bytes('BÑеки човек има право на образование. Oбразованието!'.encode('utf_8')) - >>> best_guess = results.best() - >>> str(best_guess) - 'BÑеки човек има право на образование. Oбразованието!' - -Others methods and usages are available - see the full documentation -at . -:copyright: (c) 2021 by Ahmed TAHRI -:license: MIT, see LICENSE for more details. -""" -import logging - -from .api import from_bytes, from_fp, from_path, normalize -from .legacy import ( - CharsetDetector, - CharsetDoctor, - CharsetNormalizerMatch, - CharsetNormalizerMatches, - detect, -) -from .models import CharsetMatch, CharsetMatches -from .utils import set_logging_handler -from .version import VERSION, __version__ - -__all__ = ( - "from_fp", - "from_path", - "from_bytes", - "normalize", - "detect", - "CharsetMatch", - "CharsetMatches", - "CharsetNormalizerMatch", - "CharsetNormalizerMatches", - "CharsetDetector", - "CharsetDoctor", - "__version__", - "VERSION", - "set_logging_handler", -) - -# Attach a NullHandler to the top level logger by default -# https://docs.python.org/3.3/howto/logging.html#configuring-logging-for-a-library - -logging.getLogger("charset_normalizer").addHandler(logging.NullHandler()) diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 6a07dec07eb1202158d2e125cf3a576720b1f326..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1870 zcmcIkPfy%N6dy0kF6-q_fV65)o%9e`33d}Wv|6P|Bn<*7Kt*T|&cPb&VQuhuteNrB z&7q>X>573KOv_i5}_0U6=8&woV%Ax8TdzYmu*ZT1M-kbO4{ocGk zKaY)>2)?IV?|Xlj5c)$4{jb<#Uj72iSI9*cat*f-7?$ArneijR6q~lD*>&qW z$QA3Y0;0y=Tp!Hf@0!nyT-s|4w0$n~y49Bk|7Sh6?`xn=p;nEb3?XFR^N5gC&2MnQ zNZ>!F!u;Z2pSkT(yhTZXS9~EA{xtO4R7j9}uJ~iBsH3>3o69)xcLWg~tURKyM}tV> z4v(>*#Knq!uJEql43iMY;eN;uLhR)6F%2E=`eCbXu5;zLiJ~sv>14+)RdaaT^Cgam zvrk$S1FJ*_tg+&7x8y;aLP&ieW2*fW+1JMehx7oGC=#4F9smpiytcftoZU+tMFocB zaYz`Ic$W)&;Q5Z1UG+&vc^vR@K`*j`YudgGrht_?5)(L+aTIX@aO_1w z6Jxxzw3H{@%hC=nUK#sLyJg4rPDfGMcYu82KuP@3rL)v;1jb@xefa$}~Ry+56uiPf(C z;Y_X8N3%nvvRg5g8c+{fT`OlVOr#RC1G7y1f5SD+O(?gJm{F*b3zZ1n{N3}SkT&rH zvJ+4|4+YM9V>gE4yWEKx4HZ#74^8ONJDyUJY&IG#UwQFP-QldU8B0M`ITDYwnZrNkdvD?e5TWe-B@EsaT+QjQ?+jAL!2W$84Z#=x8^%&DF z1x*bQW!-$ChjZhF9_v~$HT8Vt{g9S3em6=h850rZrIm{gstu=Ua6OOd z+dXkG+v`L*Ui!|}dMeWrz=Bz>71Gh3P3|#%S)#ILq|-1rcEDRL7&F_0=MSg=xAJHA zw;rx-ZlqP))@uS@*|uxrVi?jBuw;?Yn^lxG8P#M=lW|S-G8R=$Ml`8tGO5WmO(uY( zQ%=4uF3nNx-L!1mP*&Sc%RM~l5Q+Re&>*f3nU(_DB2MR0gh5mdCoM6U>_84+rNgm; zI_2@py_9lD8k`PJf&hY7T2wuN_n;y*iR-TBPm)$QpzV6X*XSjuf^Js#?z2W6Xv?FMYoMwIQJ#ro}qhV&Jk@9jQ$MO!v(+YfzZ+x4jPX5hyh=R<~J{8gMbiZ5r8G4UsAo}%XKLdht+LO@=RBjfgO=;rUJc3zyQ77okj tU^aDFK0}jTG?`4@JVi5SXrYT1lEsyy56%`>x{E8Pi>tq)HSr$Y{|`3Hcvk=b diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc deleted file mode 100644 index 14cbd0f4325de8a095493b4174cc0b43bf868531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17125 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 D{z$pa diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/constant.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/constant.cpython-312.pyc deleted file mode 100644 index dd36eeeee316335627cbc68802d579985b4ce8f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25027 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 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/models.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/models.cpython-312.pyc deleted file mode 100644 index 6ba242e2e1064d318dac95804abf936b7950b0ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18703 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 E0Vw_v1poj5 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc deleted file mode 100644 index 8ca89c4c974c72881cc2a8ee6029944fbf8d6ed7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14216 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 F{~uZ(k4yjn diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc deleted file mode 100644 index b7d7af4fbfb2a98d4b674e690e6f246578c25f2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmX@j%ge<81noge8U8@}F^B^L%uvQ>Js@K`LkdF_LkeRQV=7}7D@+N3PGMTj2;oIB zS2Am|R0(joRutqHrz(`C78Pga=W$iB8tED88UA9_^V4Lx#U3A@lAjzOe~UXl9;yP! zVJ$Am$t=0W9_AVp?CI~flHoJR%wJLZ8Tq-X`dRsj`MLRdsa2W!&iQ%8r8y-)!Lro6 zGX0#)B>jTQl8pR3V?9G7{o>4$RNaEa(&R0RMbUscNh diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/api.py b/venv/lib/python3.12/site-packages/charset_normalizer/api.py deleted file mode 100644 index 72907f9..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer/api.py +++ /dev/null @@ -1,584 +0,0 @@ -import logging -import warnings -from os import PathLike -from os.path import basename, splitext -from typing import Any, BinaryIO, List, Optional, Set - -from .cd import ( - coherence_ratio, - encoding_languages, - mb_encoding_languages, - merge_coherence_ratios, -) -from .constant import IANA_SUPPORTED, TOO_BIG_SEQUENCE, TOO_SMALL_SEQUENCE, TRACE -from .md import mess_ratio -from .models import CharsetMatch, CharsetMatches -from .utils import ( - any_specified_encoding, - cut_sequence_chunks, - iana_name, - identify_sig_or_bom, - is_cp_similar, - is_multi_byte_encoding, - should_strip_sig_or_bom, -) - -# Will most likely be controversial -# logging.addLevelName(TRACE, "TRACE") -logger = logging.getLogger("charset_normalizer") -explain_handler = logging.StreamHandler() -explain_handler.setFormatter( - logging.Formatter("%(asctime)s | %(levelname)s | %(message)s") -) - - -def from_bytes( - sequences: bytes, - steps: int = 5, - chunk_size: int = 512, - threshold: float = 0.2, - cp_isolation: Optional[List[str]] = None, - cp_exclusion: Optional[List[str]] = None, - preemptive_behaviour: bool = True, - explain: bool = False, -) -> CharsetMatches: - """ - Given a raw bytes sequence, return the best possibles charset usable to render str objects. - If there is no results, it is a strong indicator that the source is binary/not text. - By default, the process will extract 5 blocs of 512o each to assess the mess and coherence of a given sequence. - And will give up a particular code page after 20% of measured mess. Those criteria are customizable at will. - - The preemptive behavior DOES NOT replace the traditional detection workflow, it prioritize a particular code page - but never take it for granted. Can improve the performance. - - You may want to focus your attention to some code page or/and not others, use cp_isolation and cp_exclusion for that - purpose. - - This function will strip the SIG in the payload/sequence every time except on UTF-16, UTF-32. - By default the library does not setup any handler other than the NullHandler, if you choose to set the 'explain' - toggle to True it will alter the logger configuration to add a StreamHandler that is suitable for debugging. - Custom logging format and handler can be set manually. - """ - - if not isinstance(sequences, (bytearray, bytes)): - raise TypeError( - "Expected object of type bytes or bytearray, got: {0}".format( - type(sequences) - ) - ) - - if explain: - previous_logger_level: int = logger.level - logger.addHandler(explain_handler) - logger.setLevel(TRACE) - - length: int = len(sequences) - - if length == 0: - logger.debug("Encoding detection on empty bytes, assuming utf_8 intention.") - if explain: - logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level or logging.WARNING) - return CharsetMatches([CharsetMatch(sequences, "utf_8", 0.0, False, [], "")]) - - if cp_isolation is not None: - logger.log( - TRACE, - "cp_isolation is set. use this flag for debugging purpose. " - "limited list of encoding allowed : %s.", - ", ".join(cp_isolation), - ) - cp_isolation = [iana_name(cp, False) for cp in cp_isolation] - else: - cp_isolation = [] - - if cp_exclusion is not None: - logger.log( - TRACE, - "cp_exclusion is set. use this flag for debugging purpose. " - "limited list of encoding excluded : %s.", - ", ".join(cp_exclusion), - ) - cp_exclusion = [iana_name(cp, False) for cp in cp_exclusion] - else: - cp_exclusion = [] - - if length <= (chunk_size * steps): - logger.log( - TRACE, - "override steps (%i) and chunk_size (%i) as content does not fit (%i byte(s) given) parameters.", - steps, - chunk_size, - length, - ) - steps = 1 - chunk_size = length - - if steps > 1 and length / steps < chunk_size: - chunk_size = int(length / steps) - - is_too_small_sequence: bool = len(sequences) < TOO_SMALL_SEQUENCE - is_too_large_sequence: bool = len(sequences) >= TOO_BIG_SEQUENCE - - if is_too_small_sequence: - logger.log( - TRACE, - "Trying to detect encoding from a tiny portion of ({}) byte(s).".format( - length - ), - ) - elif is_too_large_sequence: - logger.log( - TRACE, - "Using lazy str decoding because the payload is quite large, ({}) byte(s).".format( - length - ), - ) - - prioritized_encodings: List[str] = [] - - specified_encoding: Optional[str] = ( - any_specified_encoding(sequences) if preemptive_behaviour else None - ) - - if specified_encoding is not None: - prioritized_encodings.append(specified_encoding) - logger.log( - TRACE, - "Detected declarative mark in sequence. Priority +1 given for %s.", - specified_encoding, - ) - - tested: Set[str] = set() - tested_but_hard_failure: List[str] = [] - tested_but_soft_failure: List[str] = [] - - fallback_ascii: Optional[CharsetMatch] = None - fallback_u8: Optional[CharsetMatch] = None - fallback_specified: Optional[CharsetMatch] = None - - results: CharsetMatches = CharsetMatches() - - sig_encoding, sig_payload = identify_sig_or_bom(sequences) - - if sig_encoding is not None: - prioritized_encodings.append(sig_encoding) - logger.log( - TRACE, - "Detected a SIG or BOM mark on first %i byte(s). Priority +1 given for %s.", - len(sig_payload), - sig_encoding, - ) - - prioritized_encodings.append("ascii") - - if "utf_8" not in prioritized_encodings: - prioritized_encodings.append("utf_8") - - for encoding_iana in prioritized_encodings + IANA_SUPPORTED: - - if cp_isolation and encoding_iana not in cp_isolation: - continue - - if cp_exclusion and encoding_iana in cp_exclusion: - continue - - if encoding_iana in tested: - continue - - tested.add(encoding_iana) - - decoded_payload: Optional[str] = None - bom_or_sig_available: bool = sig_encoding == encoding_iana - strip_sig_or_bom: bool = bom_or_sig_available and should_strip_sig_or_bom( - encoding_iana - ) - - if encoding_iana in {"utf_16", "utf_32"} and not bom_or_sig_available: - logger.log( - TRACE, - "Encoding %s wont be tested as-is because it require a BOM. Will try some sub-encoder LE/BE.", - encoding_iana, - ) - continue - - try: - is_multi_byte_decoder: bool = is_multi_byte_encoding(encoding_iana) - except (ModuleNotFoundError, ImportError): - logger.log( - TRACE, - "Encoding %s does not provide an IncrementalDecoder", - encoding_iana, - ) - continue - - try: - if is_too_large_sequence and is_multi_byte_decoder is False: - str( - sequences[: int(50e4)] - if strip_sig_or_bom is False - else sequences[len(sig_payload) : int(50e4)], - encoding=encoding_iana, - ) - else: - decoded_payload = str( - sequences - if strip_sig_or_bom is False - else sequences[len(sig_payload) :], - encoding=encoding_iana, - ) - except (UnicodeDecodeError, LookupError) as e: - if not isinstance(e, LookupError): - logger.log( - TRACE, - "Code page %s does not fit given bytes sequence at ALL. %s", - encoding_iana, - str(e), - ) - tested_but_hard_failure.append(encoding_iana) - continue - - similar_soft_failure_test: bool = False - - for encoding_soft_failed in tested_but_soft_failure: - if is_cp_similar(encoding_iana, encoding_soft_failed): - similar_soft_failure_test = True - break - - if similar_soft_failure_test: - logger.log( - TRACE, - "%s is deemed too similar to code page %s and was consider unsuited already. Continuing!", - encoding_iana, - encoding_soft_failed, - ) - continue - - r_ = range( - 0 if not bom_or_sig_available else len(sig_payload), - length, - int(length / steps), - ) - - multi_byte_bonus: bool = ( - is_multi_byte_decoder - and decoded_payload is not None - and len(decoded_payload) < length - ) - - if multi_byte_bonus: - logger.log( - TRACE, - "Code page %s is a multi byte encoding table and it appear that at least one character " - "was encoded using n-bytes.", - encoding_iana, - ) - - max_chunk_gave_up: int = int(len(r_) / 4) - - max_chunk_gave_up = max(max_chunk_gave_up, 2) - early_stop_count: int = 0 - lazy_str_hard_failure = False - - md_chunks: List[str] = [] - md_ratios = [] - - try: - for chunk in cut_sequence_chunks( - sequences, - encoding_iana, - r_, - chunk_size, - bom_or_sig_available, - strip_sig_or_bom, - sig_payload, - is_multi_byte_decoder, - decoded_payload, - ): - md_chunks.append(chunk) - - md_ratios.append(mess_ratio(chunk, threshold)) - - if md_ratios[-1] >= threshold: - early_stop_count += 1 - - if (early_stop_count >= max_chunk_gave_up) or ( - bom_or_sig_available and strip_sig_or_bom is False - ): - break - except UnicodeDecodeError as e: # Lazy str loading may have missed something there - logger.log( - TRACE, - "LazyStr Loading: After MD chunk decode, code page %s does not fit given bytes sequence at ALL. %s", - encoding_iana, - str(e), - ) - early_stop_count = max_chunk_gave_up - lazy_str_hard_failure = True - - # We might want to check the sequence again with the whole content - # Only if initial MD tests passes - if ( - not lazy_str_hard_failure - and is_too_large_sequence - and not is_multi_byte_decoder - ): - try: - sequences[int(50e3) :].decode(encoding_iana, errors="strict") - except UnicodeDecodeError as e: - logger.log( - TRACE, - "LazyStr Loading: After final lookup, code page %s does not fit given bytes sequence at ALL. %s", - encoding_iana, - str(e), - ) - tested_but_hard_failure.append(encoding_iana) - continue - - mean_mess_ratio: float = sum(md_ratios) / len(md_ratios) if md_ratios else 0.0 - if mean_mess_ratio >= threshold or early_stop_count >= max_chunk_gave_up: - tested_but_soft_failure.append(encoding_iana) - logger.log( - TRACE, - "%s was excluded because of initial chaos probing. Gave up %i time(s). " - "Computed mean chaos is %f %%.", - encoding_iana, - early_stop_count, - round(mean_mess_ratio * 100, ndigits=3), - ) - # Preparing those fallbacks in case we got nothing. - if ( - encoding_iana in ["ascii", "utf_8", specified_encoding] - and not lazy_str_hard_failure - ): - fallback_entry = CharsetMatch( - sequences, encoding_iana, threshold, False, [], decoded_payload - ) - if encoding_iana == specified_encoding: - fallback_specified = fallback_entry - elif encoding_iana == "ascii": - fallback_ascii = fallback_entry - else: - fallback_u8 = fallback_entry - continue - - logger.log( - TRACE, - "%s passed initial chaos probing. Mean measured chaos is %f %%", - encoding_iana, - round(mean_mess_ratio * 100, ndigits=3), - ) - - if not is_multi_byte_decoder: - target_languages: List[str] = encoding_languages(encoding_iana) - else: - target_languages = mb_encoding_languages(encoding_iana) - - if target_languages: - logger.log( - TRACE, - "{} should target any language(s) of {}".format( - encoding_iana, str(target_languages) - ), - ) - - cd_ratios = [] - - # We shall skip the CD when its about ASCII - # Most of the time its not relevant to run "language-detection" on it. - if encoding_iana != "ascii": - for chunk in md_chunks: - chunk_languages = coherence_ratio( - chunk, 0.1, ",".join(target_languages) if target_languages else None - ) - - cd_ratios.append(chunk_languages) - - cd_ratios_merged = merge_coherence_ratios(cd_ratios) - - if cd_ratios_merged: - logger.log( - TRACE, - "We detected language {} using {}".format( - cd_ratios_merged, encoding_iana - ), - ) - - results.append( - CharsetMatch( - sequences, - encoding_iana, - mean_mess_ratio, - bom_or_sig_available, - cd_ratios_merged, - decoded_payload, - ) - ) - - if ( - encoding_iana in [specified_encoding, "ascii", "utf_8"] - and mean_mess_ratio < 0.1 - ): - logger.debug( - "Encoding detection: %s is most likely the one.", encoding_iana - ) - if explain: - logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) - return CharsetMatches([results[encoding_iana]]) - - if encoding_iana == sig_encoding: - logger.debug( - "Encoding detection: %s is most likely the one as we detected a BOM or SIG within " - "the beginning of the sequence.", - encoding_iana, - ) - if explain: - logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) - return CharsetMatches([results[encoding_iana]]) - - if len(results) == 0: - if fallback_u8 or fallback_ascii or fallback_specified: - logger.log( - TRACE, - "Nothing got out of the detection process. Using ASCII/UTF-8/Specified fallback.", - ) - - if fallback_specified: - logger.debug( - "Encoding detection: %s will be used as a fallback match", - fallback_specified.encoding, - ) - results.append(fallback_specified) - elif ( - (fallback_u8 and fallback_ascii is None) - or ( - fallback_u8 - and fallback_ascii - and fallback_u8.fingerprint != fallback_ascii.fingerprint - ) - or (fallback_u8 is not None) - ): - logger.debug("Encoding detection: utf_8 will be used as a fallback match") - results.append(fallback_u8) - elif fallback_ascii: - logger.debug("Encoding detection: ascii will be used as a fallback match") - results.append(fallback_ascii) - - if results: - logger.debug( - "Encoding detection: Found %s as plausible (best-candidate) for content. With %i alternatives.", - results.best().encoding, # type: ignore - len(results) - 1, - ) - else: - logger.debug("Encoding detection: Unable to determine any suitable charset.") - - if explain: - logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) - - return results - - -def from_fp( - fp: BinaryIO, - steps: int = 5, - chunk_size: int = 512, - threshold: float = 0.20, - cp_isolation: Optional[List[str]] = None, - cp_exclusion: Optional[List[str]] = None, - preemptive_behaviour: bool = True, - explain: bool = False, -) -> CharsetMatches: - """ - Same thing than the function from_bytes but using a file pointer that is already ready. - Will not close the file pointer. - """ - return from_bytes( - fp.read(), - steps, - chunk_size, - threshold, - cp_isolation, - cp_exclusion, - preemptive_behaviour, - explain, - ) - - -def from_path( - path: "PathLike[Any]", - steps: int = 5, - chunk_size: int = 512, - threshold: float = 0.20, - cp_isolation: Optional[List[str]] = None, - cp_exclusion: Optional[List[str]] = None, - preemptive_behaviour: bool = True, - explain: bool = False, -) -> CharsetMatches: - """ - Same thing than the function from_bytes but with one extra step. Opening and reading given file path in binary mode. - Can raise IOError. - """ - with open(path, "rb") as fp: - return from_fp( - fp, - steps, - chunk_size, - threshold, - cp_isolation, - cp_exclusion, - preemptive_behaviour, - explain, - ) - - -def normalize( - path: "PathLike[Any]", - steps: int = 5, - chunk_size: int = 512, - threshold: float = 0.20, - cp_isolation: Optional[List[str]] = None, - cp_exclusion: Optional[List[str]] = None, - preemptive_behaviour: bool = True, -) -> CharsetMatch: - """ - Take a (text-based) file path and try to create another file next to it, this time using UTF-8. - """ - warnings.warn( - "normalize is deprecated and will be removed in 3.0", - DeprecationWarning, - ) - - results = from_path( - path, - steps, - chunk_size, - threshold, - cp_isolation, - cp_exclusion, - preemptive_behaviour, - ) - - filename = basename(path) - target_extensions = list(splitext(filename)) - - if len(results) == 0: - raise IOError( - 'Unable to normalize "{}", no encoding charset seems to fit.'.format( - filename - ) - ) - - result = results.best() - - target_extensions[0] += "-" + result.encoding # type: ignore - - with open( - "{}".format(str(path).replace(filename, "".join(target_extensions))), "wb" - ) as fp: - fp.write(result.output()) # type: ignore - - return result # type: ignore diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/assets/__init__.py b/venv/lib/python3.12/site-packages/charset_normalizer/assets/__init__.py deleted file mode 100644 index 3c33ba3..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer/assets/__init__.py +++ /dev/null @@ -1,1122 +0,0 @@ -# -*- coding: utf-8 -*- -from typing import Dict, List - -FREQUENCIES: Dict[str, List[str]] = { - "English": [ - "e", - "a", - "t", - "i", - "o", - "n", - "s", - "r", - "h", - "l", - "d", - "c", - "u", - "m", - "f", - "p", - "g", - "w", - "y", - "b", - "v", - "k", - "x", - "j", - "z", - "q", - ], - "German": [ - "e", - "n", - "i", - "r", - "s", - "t", - "a", - "d", - "h", - "u", - "l", - "g", - "o", - "c", - "m", - "b", - "f", - "k", - "w", - "z", - "p", - "v", - "ü", - "ä", - "ö", - "j", - ], - "French": [ - "e", - "a", - "s", - "n", - "i", - "t", - "r", - "l", - "u", - "o", - "d", - "c", - "p", - "m", - "é", - "v", - "g", - "f", - "b", - "h", - "q", - "à", - "x", - "è", - "y", - "j", - ], - "Dutch": [ - "e", - "n", - "a", - "i", - "r", - "t", - "o", - "d", - "s", - "l", - "g", - "h", - "v", - "m", - "u", - "k", - "c", - "p", - "b", - "w", - "j", - "z", - "f", - "y", - "x", - "ë", - ], - "Italian": [ - "e", - "i", - "a", - "o", - "n", - "l", - "t", - "r", - "s", - "c", - "d", - "u", - "p", - "m", - "g", - "v", - "f", - "b", - "z", - "h", - "q", - "è", - "à", - "k", - "y", - "ò", - ], - "Polish": [ - "a", - "i", - "o", - "e", - "n", - "r", - "z", - "w", - "s", - "c", - "t", - "k", - "y", - "d", - "p", - "m", - "u", - "l", - "j", - "Å‚", - "g", - "b", - "h", - "Ä…", - "Ä™", - "ó", - ], - "Spanish": [ - "e", - "a", - "o", - "n", - "s", - "r", - "i", - "l", - "d", - "t", - "c", - "u", - "m", - "p", - "b", - "g", - "v", - "f", - "y", - "ó", - "h", - "q", - "í", - "j", - "z", - "á", - ], - "Russian": [ - "о", - "а", - "е", - "и", - "н", - "Ñ", - "Ñ‚", - "Ñ€", - "в", - "л", - "к", - "м", - "д", - "п", - "у", - "г", - "Ñ", - "Ñ‹", - "з", - "б", - "й", - "ÑŒ", - "ч", - "Ñ…", - "ж", - "ц", - ], - "Japanese": [ - "ã®", - "ã«", - "ã‚‹", - "ãŸ", - "ã¯", - "ー", - "ã¨", - "ã—", - "ã‚’", - "ã§", - "ã¦", - "ãŒ", - "ã„", - "ン", - "れ", - "ãª", - "å¹´", - "ス", - "ã£", - "ル", - "ã‹", - "ら", - "ã‚", - "ã•", - "ã‚‚", - "り", - ], - "Portuguese": [ - "a", - "e", - "o", - "s", - "i", - "r", - "d", - "n", - "t", - "m", - "u", - "c", - "l", - "p", - "g", - "v", - "b", - "f", - "h", - "ã", - "q", - "é", - "ç", - "á", - "z", - "í", - ], - "Swedish": [ - "e", - "a", - "n", - "r", - "t", - "s", - "i", - "l", - "d", - "o", - "m", - "k", - "g", - "v", - "h", - "f", - "u", - "p", - "ä", - "c", - "b", - "ö", - "Ã¥", - "y", - "j", - "x", - ], - "Chinese": [ - "çš„", - "一", - "是", - "ä¸", - "了", - "在", - "人", - "有", - "我", - "ä»–", - "è¿™", - "个", - "们", - "中", - "æ¥", - "上", - "大", - "为", - "å’Œ", - "国", - "地", - "到", - "以", - "说", - "æ—¶", - "è¦", - "å°±", - "出", - "会", - ], - "Ukrainian": [ - "о", - "а", - "н", - "Ñ–", - "и", - "Ñ€", - "в", - "Ñ‚", - "е", - "Ñ", - "к", - "л", - "у", - "д", - "м", - "п", - "з", - "Ñ", - "ÑŒ", - "б", - "г", - "й", - "ч", - "Ñ…", - "ц", - "Ñ—", - ], - "Norwegian": [ - "e", - "r", - "n", - "t", - "a", - "s", - "i", - "o", - "l", - "d", - "g", - "k", - "m", - "v", - "f", - "p", - "u", - "b", - "h", - "Ã¥", - "y", - "j", - "ø", - "c", - "æ", - "w", - ], - "Finnish": [ - "a", - "i", - "n", - "t", - "e", - "s", - "l", - "o", - "u", - "k", - "ä", - "m", - "r", - "v", - "j", - "h", - "p", - "y", - "d", - "ö", - "g", - "c", - "b", - "f", - "w", - "z", - ], - "Vietnamese": [ - "n", - "h", - "t", - "i", - "c", - "g", - "a", - "o", - "u", - "m", - "l", - "r", - "à", - "Ä‘", - "s", - "e", - "v", - "p", - "b", - "y", - "ư", - "d", - "á", - "k", - "á»™", - "ế", - ], - "Czech": [ - "o", - "e", - "a", - "n", - "t", - "s", - "i", - "l", - "v", - "r", - "k", - "d", - "u", - "m", - "p", - "í", - "c", - "h", - "z", - "á", - "y", - "j", - "b", - "Ä›", - "é", - "Å™", - ], - "Hungarian": [ - "e", - "a", - "t", - "l", - "s", - "n", - "k", - "r", - "i", - "o", - "z", - "á", - "é", - "g", - "m", - "b", - "y", - "v", - "d", - "h", - "u", - "p", - "j", - "ö", - "f", - "c", - ], - "Korean": [ - "ì´", - "다", - "ì—", - "ì˜", - "는", - "로", - "하", - "ì„", - "ê°€", - "ê³ ", - "ì§€", - "서", - "한", - "ì€", - "기", - "으", - "ë…„", - "대", - "사", - "시", - "를", - "리", - "ë„", - "ì¸", - "스", - "ì¼", - ], - "Indonesian": [ - "a", - "n", - "e", - "i", - "r", - "t", - "u", - "s", - "d", - "k", - "m", - "l", - "g", - "p", - "b", - "o", - "h", - "y", - "j", - "c", - "w", - "f", - "v", - "z", - "x", - "q", - ], - "Turkish": [ - "a", - "e", - "i", - "n", - "r", - "l", - "ı", - "k", - "d", - "t", - "s", - "m", - "y", - "u", - "o", - "b", - "ü", - "ÅŸ", - "v", - "g", - "z", - "h", - "c", - "p", - "ç", - "ÄŸ", - ], - "Romanian": [ - "e", - "i", - "a", - "r", - "n", - "t", - "u", - "l", - "o", - "c", - "s", - "d", - "p", - "m", - "ă", - "f", - "v", - "î", - "g", - "b", - "È™", - "È›", - "z", - "h", - "â", - "j", - ], - "Farsi": [ - "ا", - "ÛŒ", - "ر", - "د", - "Ù†", - "Ù‡", - "Ùˆ", - "Ù…", - "ت", - "ب", - "س", - "Ù„", - "Ú©", - "Ø´", - "ز", - "Ù", - "Ú¯", - "ع", - "Ø®", - "Ù‚", - "ج", - "Ø¢", - "Ù¾", - "Ø­", - "Ø·", - "ص", - ], - "Arabic": [ - "ا", - "Ù„", - "ÙŠ", - "Ù…", - "Ùˆ", - "Ù†", - "ر", - "ت", - "ب", - "Ø©", - "ع", - "د", - "س", - "Ù", - "Ù‡", - "Ùƒ", - "Ù‚", - "Ø£", - "Ø­", - "ج", - "Ø´", - "Ø·", - "ص", - "Ù‰", - "Ø®", - "Ø¥", - ], - "Danish": [ - "e", - "r", - "n", - "t", - "a", - "i", - "s", - "d", - "l", - "o", - "g", - "m", - "k", - "f", - "v", - "u", - "b", - "h", - "p", - "Ã¥", - "y", - "ø", - "æ", - "c", - "j", - "w", - ], - "Serbian": [ - "а", - "и", - "о", - "е", - "н", - "Ñ€", - "Ñ", - "у", - "Ñ‚", - "к", - "ј", - "в", - "д", - "м", - "п", - "л", - "г", - "з", - "б", - "a", - "i", - "e", - "o", - "n", - "ц", - "ш", - ], - "Lithuanian": [ - "i", - "a", - "s", - "o", - "r", - "e", - "t", - "n", - "u", - "k", - "m", - "l", - "p", - "v", - "d", - "j", - "g", - "Ä—", - "b", - "y", - "ų", - "Å¡", - "ž", - "c", - "Ä…", - "į", - ], - "Slovene": [ - "e", - "a", - "i", - "o", - "n", - "r", - "s", - "l", - "t", - "j", - "v", - "k", - "d", - "p", - "m", - "u", - "z", - "b", - "g", - "h", - "Ä", - "c", - "Å¡", - "ž", - "f", - "y", - ], - "Slovak": [ - "o", - "a", - "e", - "n", - "i", - "r", - "v", - "t", - "s", - "l", - "k", - "d", - "m", - "p", - "u", - "c", - "h", - "j", - "b", - "z", - "á", - "y", - "ý", - "í", - "Ä", - "é", - ], - "Hebrew": [ - "×™", - "ו", - "×”", - "ל", - "ר", - "ב", - "ת", - "מ", - "×", - "ש", - "× ", - "×¢", - "×", - "ד", - "×§", - "×—", - "פ", - "ס", - "×›", - "×’", - "ט", - "צ", - "ן", - "×–", - "ך", - ], - "Bulgarian": [ - "а", - "и", - "о", - "е", - "н", - "Ñ‚", - "Ñ€", - "Ñ", - "в", - "л", - "к", - "д", - "п", - "м", - "з", - "г", - "Ñ", - "ÑŠ", - "у", - "б", - "ч", - "ц", - "й", - "ж", - "щ", - "Ñ…", - ], - "Croatian": [ - "a", - "i", - "o", - "e", - "n", - "r", - "j", - "s", - "t", - "u", - "k", - "l", - "v", - "d", - "m", - "p", - "g", - "z", - "b", - "c", - "Ä", - "h", - "Å¡", - "ž", - "ć", - "f", - ], - "Hindi": [ - "क", - "र", - "स", - "न", - "त", - "म", - "ह", - "प", - "य", - "ल", - "व", - "ज", - "द", - "ग", - "ब", - "श", - "ट", - "अ", - "à¤", - "थ", - "भ", - "ड", - "च", - "ध", - "ष", - "इ", - ], - "Estonian": [ - "a", - "i", - "e", - "s", - "t", - "l", - "u", - "n", - "o", - "k", - "r", - "d", - "m", - "v", - "g", - "p", - "j", - "h", - "ä", - "b", - "õ", - "ü", - "f", - "c", - "ö", - "y", - ], - "Simple English": [ - "e", - "a", - "t", - "i", - "o", - "n", - "s", - "r", - "h", - "l", - "d", - "c", - "m", - "u", - "f", - "p", - "g", - "w", - "b", - "y", - "v", - "k", - "j", - "x", - "z", - "q", - ], - "Thai": [ - "า", - "น", - "ร", - "อ", - "à¸", - "เ", - "ง", - "ม", - "ย", - "ล", - "ว", - "ด", - "ท", - "ส", - "ต", - "ะ", - "ป", - "บ", - "ค", - "ห", - "à¹", - "จ", - "พ", - "ช", - "ข", - "ใ", - ], - "Greek": [ - "α", - "Ï„", - "ο", - "ι", - "ε", - "ν", - "Ï", - "σ", - "κ", - "η", - "Ï€", - "Ï‚", - "Ï…", - "μ", - "λ", - "ί", - "ÏŒ", - "ά", - "γ", - "έ", - "δ", - "ή", - "ω", - "χ", - "θ", - "Ï", - ], - "Tamil": [ - "க", - "த", - "ப", - "ட", - "à®°", - "à®®", - "ல", - "ன", - "வ", - "à®±", - "ய", - "ள", - "ச", - "ந", - "இ", - "ண", - "à®…", - "ஆ", - "à®´", - "à®™", - "எ", - "உ", - "à®’", - "ஸ", - ], - "Classical Chinese": [ - "之", - "å¹´", - "為", - "也", - "以", - "一", - "人", - "å…¶", - "者", - "國", - "有", - "二", - "å", - "æ–¼", - "æ›°", - "三", - "ä¸", - "大", - "而", - "å­", - "中", - "五", - "å››", - ], - "Kazakh": [ - "а", - "Ñ‹", - "е", - "н", - "Ñ‚", - "Ñ€", - "л", - "Ñ–", - "д", - "Ñ", - "м", - "Ò›", - "к", - "о", - "б", - "и", - "у", - "Ò“", - "ж", - "Ò£", - "з", - "ш", - "й", - "п", - "г", - "Ó©", - ], -} diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/assets/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/assets/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 107d67f56c70d8448d5d0c986aab8c391203f916..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7814 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 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/cd.py b/venv/lib/python3.12/site-packages/charset_normalizer/cd.py deleted file mode 100644 index ee4b742..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer/cd.py +++ /dev/null @@ -1,339 +0,0 @@ -import importlib -from codecs import IncrementalDecoder -from collections import Counter -from functools import lru_cache -from typing import Counter as TypeCounter, Dict, List, Optional, Tuple - -from .assets import FREQUENCIES -from .constant import KO_NAMES, LANGUAGE_SUPPORTED_COUNT, TOO_SMALL_SEQUENCE, ZH_NAMES -from .md import is_suspiciously_successive_range -from .models import CoherenceMatches -from .utils import ( - is_accentuated, - is_latin, - is_multi_byte_encoding, - is_unicode_range_secondary, - unicode_range, -) - - -def encoding_unicode_range(iana_name: str) -> List[str]: - """ - Return associated unicode ranges in a single byte code page. - """ - if is_multi_byte_encoding(iana_name): - raise IOError("Function not supported on multi-byte code page") - - decoder = importlib.import_module( - "encodings.{}".format(iana_name) - ).IncrementalDecoder - - p: IncrementalDecoder = decoder(errors="ignore") - seen_ranges: Dict[str, int] = {} - character_count: int = 0 - - for i in range(0x40, 0xFF): - chunk: str = p.decode(bytes([i])) - - if chunk: - character_range: Optional[str] = unicode_range(chunk) - - if character_range is None: - continue - - if is_unicode_range_secondary(character_range) is False: - if character_range not in seen_ranges: - seen_ranges[character_range] = 0 - seen_ranges[character_range] += 1 - character_count += 1 - - return sorted( - [ - character_range - for character_range in seen_ranges - if seen_ranges[character_range] / character_count >= 0.15 - ] - ) - - -def unicode_range_languages(primary_range: str) -> List[str]: - """ - Return inferred languages used with a unicode range. - """ - languages: List[str] = [] - - for language, characters in FREQUENCIES.items(): - for character in characters: - if unicode_range(character) == primary_range: - languages.append(language) - break - - return languages - - -@lru_cache() -def encoding_languages(iana_name: str) -> List[str]: - """ - Single-byte encoding language association. Some code page are heavily linked to particular language(s). - This function does the correspondence. - """ - unicode_ranges: List[str] = encoding_unicode_range(iana_name) - primary_range: Optional[str] = None - - for specified_range in unicode_ranges: - if "Latin" not in specified_range: - primary_range = specified_range - break - - if primary_range is None: - return ["Latin Based"] - - return unicode_range_languages(primary_range) - - -@lru_cache() -def mb_encoding_languages(iana_name: str) -> List[str]: - """ - Multi-byte encoding language association. Some code page are heavily linked to particular language(s). - This function does the correspondence. - """ - if ( - iana_name.startswith("shift_") - or iana_name.startswith("iso2022_jp") - or iana_name.startswith("euc_j") - or iana_name == "cp932" - ): - return ["Japanese"] - if iana_name.startswith("gb") or iana_name in ZH_NAMES: - return ["Chinese", "Classical Chinese"] - if iana_name.startswith("iso2022_kr") or iana_name in KO_NAMES: - return ["Korean"] - - return [] - - -@lru_cache(maxsize=LANGUAGE_SUPPORTED_COUNT) -def get_target_features(language: str) -> Tuple[bool, bool]: - """ - Determine main aspects from a supported language if it contains accents and if is pure Latin. - """ - target_have_accents: bool = False - target_pure_latin: bool = True - - for character in FREQUENCIES[language]: - if not target_have_accents and is_accentuated(character): - target_have_accents = True - if target_pure_latin and is_latin(character) is False: - target_pure_latin = False - - return target_have_accents, target_pure_latin - - -def alphabet_languages( - characters: List[str], ignore_non_latin: bool = False -) -> List[str]: - """ - Return associated languages associated to given characters. - """ - languages: List[Tuple[str, float]] = [] - - source_have_accents = any(is_accentuated(character) for character in characters) - - for language, language_characters in FREQUENCIES.items(): - - target_have_accents, target_pure_latin = get_target_features(language) - - if ignore_non_latin and target_pure_latin is False: - continue - - if target_have_accents is False and source_have_accents: - continue - - character_count: int = len(language_characters) - - character_match_count: int = len( - [c for c in language_characters if c in characters] - ) - - ratio: float = character_match_count / character_count - - if ratio >= 0.2: - languages.append((language, ratio)) - - languages = sorted(languages, key=lambda x: x[1], reverse=True) - - return [compatible_language[0] for compatible_language in languages] - - -def characters_popularity_compare( - language: str, ordered_characters: List[str] -) -> float: - """ - Determine if a ordered characters list (by occurrence from most appearance to rarest) match a particular language. - The result is a ratio between 0. (absolutely no correspondence) and 1. (near perfect fit). - Beware that is function is not strict on the match in order to ease the detection. (Meaning close match is 1.) - """ - if language not in FREQUENCIES: - raise ValueError("{} not available".format(language)) - - character_approved_count: int = 0 - FREQUENCIES_language_set = set(FREQUENCIES[language]) - - for character in ordered_characters: - if character not in FREQUENCIES_language_set: - continue - - characters_before_source: List[str] = FREQUENCIES[language][ - 0 : FREQUENCIES[language].index(character) - ] - characters_after_source: List[str] = FREQUENCIES[language][ - FREQUENCIES[language].index(character) : - ] - characters_before: List[str] = ordered_characters[ - 0 : ordered_characters.index(character) - ] - characters_after: List[str] = ordered_characters[ - ordered_characters.index(character) : - ] - - before_match_count: int = len( - set(characters_before) & set(characters_before_source) - ) - - after_match_count: int = len( - set(characters_after) & set(characters_after_source) - ) - - if len(characters_before_source) == 0 and before_match_count <= 4: - character_approved_count += 1 - continue - - if len(characters_after_source) == 0 and after_match_count <= 4: - character_approved_count += 1 - continue - - if ( - before_match_count / len(characters_before_source) >= 0.4 - or after_match_count / len(characters_after_source) >= 0.4 - ): - character_approved_count += 1 - continue - - return character_approved_count / len(ordered_characters) - - -def alpha_unicode_split(decoded_sequence: str) -> List[str]: - """ - Given a decoded text sequence, return a list of str. Unicode range / alphabet separation. - Ex. a text containing English/Latin with a bit a Hebrew will return two items in the resulting list; - One containing the latin letters and the other hebrew. - """ - layers: Dict[str, str] = {} - - for character in decoded_sequence: - if character.isalpha() is False: - continue - - character_range: Optional[str] = unicode_range(character) - - if character_range is None: - continue - - layer_target_range: Optional[str] = None - - for discovered_range in layers: - if ( - is_suspiciously_successive_range(discovered_range, character_range) - is False - ): - layer_target_range = discovered_range - break - - if layer_target_range is None: - layer_target_range = character_range - - if layer_target_range not in layers: - layers[layer_target_range] = character.lower() - continue - - layers[layer_target_range] += character.lower() - - return list(layers.values()) - - -def merge_coherence_ratios(results: List[CoherenceMatches]) -> CoherenceMatches: - """ - This function merge results previously given by the function coherence_ratio. - The return type is the same as coherence_ratio. - """ - per_language_ratios: Dict[str, List[float]] = {} - for result in results: - for sub_result in result: - language, ratio = sub_result - if language not in per_language_ratios: - per_language_ratios[language] = [ratio] - continue - per_language_ratios[language].append(ratio) - - merge = [ - ( - language, - round( - sum(per_language_ratios[language]) / len(per_language_ratios[language]), - 4, - ), - ) - for language in per_language_ratios - ] - - return sorted(merge, key=lambda x: x[1], reverse=True) - - -@lru_cache(maxsize=2048) -def coherence_ratio( - decoded_sequence: str, threshold: float = 0.1, lg_inclusion: Optional[str] = None -) -> CoherenceMatches: - """ - Detect ANY language that can be identified in given sequence. The sequence will be analysed by layers. - A layer = Character extraction by alphabets/ranges. - """ - - results: List[Tuple[str, float]] = [] - ignore_non_latin: bool = False - - sufficient_match_count: int = 0 - - lg_inclusion_list = lg_inclusion.split(",") if lg_inclusion is not None else [] - if "Latin Based" in lg_inclusion_list: - ignore_non_latin = True - lg_inclusion_list.remove("Latin Based") - - for layer in alpha_unicode_split(decoded_sequence): - sequence_frequencies: TypeCounter[str] = Counter(layer) - most_common = sequence_frequencies.most_common() - - character_count: int = sum(o for c, o in most_common) - - if character_count <= TOO_SMALL_SEQUENCE: - continue - - popular_character_ordered: List[str] = [c for c, o in most_common] - - for language in lg_inclusion_list or alphabet_languages( - popular_character_ordered, ignore_non_latin - ): - ratio: float = characters_popularity_compare( - language, popular_character_ordered - ) - - if ratio < threshold: - continue - elif ratio >= 0.8: - sufficient_match_count += 1 - - results.append((language, round(ratio, 4))) - - if sufficient_match_count >= 3: - break - - return sorted(results, key=lambda x: x[1], reverse=True) diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py b/venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 3661b4b8c40cc10ad156541e9e511675b6ce6be7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 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 a_HU(1Q0pCI-zMz#CTm|eak~qL@Baf=)=jbi diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/cli/normalizer.py b/venv/lib/python3.12/site-packages/charset_normalizer/cli/normalizer.py deleted file mode 100644 index b8b652a..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer/cli/normalizer.py +++ /dev/null @@ -1,295 +0,0 @@ -import argparse -import sys -from json import dumps -from os.path import abspath -from platform import python_version -from typing import List, Optional - -try: - from unicodedata2 import unidata_version -except ImportError: - from unicodedata import unidata_version - -from charset_normalizer import from_fp -from charset_normalizer.models import CliDetectionResult -from charset_normalizer.version import __version__ - - -def query_yes_no(question: str, default: str = "yes") -> bool: - """Ask a yes/no question via input() and return their answer. - - "question" is a string that is presented to the user. - "default" is the presumed answer if the user just hits . - It must be "yes" (the default), "no" or None (meaning - an answer is required of the user). - - The "answer" return value is True for "yes" or False for "no". - - Credit goes to (c) https://stackoverflow.com/questions/3041986/apt-command-line-interface-like-yes-no-input - """ - valid = {"yes": True, "y": True, "ye": True, "no": False, "n": False} - if default is None: - prompt = " [y/n] " - elif default == "yes": - prompt = " [Y/n] " - elif default == "no": - prompt = " [y/N] " - else: - raise ValueError("invalid default answer: '%s'" % default) - - while True: - sys.stdout.write(question + prompt) - choice = input().lower() - if default is not None and choice == "": - return valid[default] - elif choice in valid: - return valid[choice] - else: - sys.stdout.write("Please respond with 'yes' or 'no' " "(or 'y' or 'n').\n") - - -def cli_detect(argv: Optional[List[str]] = None) -> int: - """ - CLI assistant using ARGV and ArgumentParser - :param argv: - :return: 0 if everything is fine, anything else equal trouble - """ - parser = argparse.ArgumentParser( - description="The Real First Universal Charset Detector. " - "Discover originating encoding used on text file. " - "Normalize text to unicode." - ) - - parser.add_argument( - "files", type=argparse.FileType("rb"), nargs="+", help="File(s) to be analysed" - ) - parser.add_argument( - "-v", - "--verbose", - action="store_true", - default=False, - dest="verbose", - help="Display complementary information about file if any. " - "Stdout will contain logs about the detection process.", - ) - parser.add_argument( - "-a", - "--with-alternative", - action="store_true", - default=False, - dest="alternatives", - help="Output complementary possibilities if any. Top-level JSON WILL be a list.", - ) - parser.add_argument( - "-n", - "--normalize", - action="store_true", - default=False, - dest="normalize", - help="Permit to normalize input file. If not set, program does not write anything.", - ) - parser.add_argument( - "-m", - "--minimal", - action="store_true", - default=False, - dest="minimal", - help="Only output the charset detected to STDOUT. Disabling JSON output.", - ) - parser.add_argument( - "-r", - "--replace", - action="store_true", - default=False, - dest="replace", - help="Replace file when trying to normalize it instead of creating a new one.", - ) - parser.add_argument( - "-f", - "--force", - action="store_true", - default=False, - dest="force", - help="Replace file without asking if you are sure, use this flag with caution.", - ) - parser.add_argument( - "-t", - "--threshold", - action="store", - default=0.2, - type=float, - dest="threshold", - help="Define a custom maximum amount of chaos allowed in decoded content. 0. <= chaos <= 1.", - ) - parser.add_argument( - "--version", - action="version", - version="Charset-Normalizer {} - Python {} - Unicode {}".format( - __version__, python_version(), unidata_version - ), - help="Show version information and exit.", - ) - - args = parser.parse_args(argv) - - if args.replace is True and args.normalize is False: - print("Use --replace in addition of --normalize only.", file=sys.stderr) - return 1 - - if args.force is True and args.replace is False: - print("Use --force in addition of --replace only.", file=sys.stderr) - return 1 - - if args.threshold < 0.0 or args.threshold > 1.0: - print("--threshold VALUE should be between 0. AND 1.", file=sys.stderr) - return 1 - - x_ = [] - - for my_file in args.files: - - matches = from_fp(my_file, threshold=args.threshold, explain=args.verbose) - - best_guess = matches.best() - - if best_guess is None: - print( - 'Unable to identify originating encoding for "{}". {}'.format( - my_file.name, - "Maybe try increasing maximum amount of chaos." - if args.threshold < 1.0 - else "", - ), - file=sys.stderr, - ) - x_.append( - CliDetectionResult( - abspath(my_file.name), - None, - [], - [], - "Unknown", - [], - False, - 1.0, - 0.0, - None, - True, - ) - ) - else: - x_.append( - CliDetectionResult( - abspath(my_file.name), - best_guess.encoding, - best_guess.encoding_aliases, - [ - cp - for cp in best_guess.could_be_from_charset - if cp != best_guess.encoding - ], - best_guess.language, - best_guess.alphabets, - best_guess.bom, - best_guess.percent_chaos, - best_guess.percent_coherence, - None, - True, - ) - ) - - if len(matches) > 1 and args.alternatives: - for el in matches: - if el != best_guess: - x_.append( - CliDetectionResult( - abspath(my_file.name), - el.encoding, - el.encoding_aliases, - [ - cp - for cp in el.could_be_from_charset - if cp != el.encoding - ], - el.language, - el.alphabets, - el.bom, - el.percent_chaos, - el.percent_coherence, - None, - False, - ) - ) - - if args.normalize is True: - - if best_guess.encoding.startswith("utf") is True: - print( - '"{}" file does not need to be normalized, as it already came from unicode.'.format( - my_file.name - ), - file=sys.stderr, - ) - if my_file.closed is False: - my_file.close() - continue - - o_: List[str] = my_file.name.split(".") - - if args.replace is False: - o_.insert(-1, best_guess.encoding) - if my_file.closed is False: - my_file.close() - elif ( - args.force is False - and query_yes_no( - 'Are you sure to normalize "{}" by replacing it ?'.format( - my_file.name - ), - "no", - ) - is False - ): - if my_file.closed is False: - my_file.close() - continue - - try: - x_[0].unicode_path = abspath("./{}".format(".".join(o_))) - - with open(x_[0].unicode_path, "w", encoding="utf-8") as fp: - fp.write(str(best_guess)) - except IOError as e: - print(str(e), file=sys.stderr) - if my_file.closed is False: - my_file.close() - return 2 - - if my_file.closed is False: - my_file.close() - - if args.minimal is False: - print( - dumps( - [el.__dict__ for el in x_] if len(x_) > 1 else x_[0].__dict__, - ensure_ascii=True, - indent=4, - ) - ) - else: - for my_file in args.files: - print( - ", ".join( - [ - el.encoding or "undefined" - for el in x_ - if el.path == abspath(my_file.name) - ] - ) - ) - - return 0 - - -if __name__ == "__main__": - cli_detect() diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/constant.py b/venv/lib/python3.12/site-packages/charset_normalizer/constant.py deleted file mode 100644 index ac840c4..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer/constant.py +++ /dev/null @@ -1,497 +0,0 @@ -from codecs import BOM_UTF8, BOM_UTF16_BE, BOM_UTF16_LE, BOM_UTF32_BE, BOM_UTF32_LE -from encodings.aliases import aliases -from re import IGNORECASE, compile as re_compile -from typing import Dict, List, Set, Union - -from .assets import FREQUENCIES - -# Contain for each eligible encoding a list of/item bytes SIG/BOM -ENCODING_MARKS: Dict[str, Union[bytes, List[bytes]]] = { - "utf_8": BOM_UTF8, - "utf_7": [ - b"\x2b\x2f\x76\x38", - b"\x2b\x2f\x76\x39", - b"\x2b\x2f\x76\x2b", - b"\x2b\x2f\x76\x2f", - b"\x2b\x2f\x76\x38\x2d", - ], - "gb18030": b"\x84\x31\x95\x33", - "utf_32": [BOM_UTF32_BE, BOM_UTF32_LE], - "utf_16": [BOM_UTF16_BE, BOM_UTF16_LE], -} - -TOO_SMALL_SEQUENCE: int = 32 -TOO_BIG_SEQUENCE: int = int(10e6) - -UTF8_MAXIMAL_ALLOCATION: int = 1112064 - -UNICODE_RANGES_COMBINED: Dict[str, range] = { - "Control character": range(31 + 1), - "Basic Latin": range(32, 127 + 1), - "Latin-1 Supplement": range(128, 255 + 1), - "Latin Extended-A": range(256, 383 + 1), - "Latin Extended-B": range(384, 591 + 1), - "IPA Extensions": range(592, 687 + 1), - "Spacing Modifier Letters": range(688, 767 + 1), - "Combining Diacritical Marks": range(768, 879 + 1), - "Greek and Coptic": range(880, 1023 + 1), - "Cyrillic": range(1024, 1279 + 1), - "Cyrillic Supplement": range(1280, 1327 + 1), - "Armenian": range(1328, 1423 + 1), - "Hebrew": range(1424, 1535 + 1), - "Arabic": range(1536, 1791 + 1), - "Syriac": range(1792, 1871 + 1), - "Arabic Supplement": range(1872, 1919 + 1), - "Thaana": range(1920, 1983 + 1), - "NKo": range(1984, 2047 + 1), - "Samaritan": range(2048, 2111 + 1), - "Mandaic": range(2112, 2143 + 1), - "Syriac Supplement": range(2144, 2159 + 1), - "Arabic Extended-A": range(2208, 2303 + 1), - "Devanagari": range(2304, 2431 + 1), - "Bengali": range(2432, 2559 + 1), - "Gurmukhi": range(2560, 2687 + 1), - "Gujarati": range(2688, 2815 + 1), - "Oriya": range(2816, 2943 + 1), - "Tamil": range(2944, 3071 + 1), - "Telugu": range(3072, 3199 + 1), - "Kannada": range(3200, 3327 + 1), - "Malayalam": range(3328, 3455 + 1), - "Sinhala": range(3456, 3583 + 1), - "Thai": range(3584, 3711 + 1), - "Lao": range(3712, 3839 + 1), - "Tibetan": range(3840, 4095 + 1), - "Myanmar": range(4096, 4255 + 1), - "Georgian": range(4256, 4351 + 1), - "Hangul Jamo": range(4352, 4607 + 1), - "Ethiopic": range(4608, 4991 + 1), - "Ethiopic Supplement": range(4992, 5023 + 1), - "Cherokee": range(5024, 5119 + 1), - "Unified Canadian Aboriginal Syllabics": range(5120, 5759 + 1), - "Ogham": range(5760, 5791 + 1), - "Runic": range(5792, 5887 + 1), - "Tagalog": range(5888, 5919 + 1), - "Hanunoo": range(5920, 5951 + 1), - "Buhid": range(5952, 5983 + 1), - "Tagbanwa": range(5984, 6015 + 1), - "Khmer": range(6016, 6143 + 1), - "Mongolian": range(6144, 6319 + 1), - "Unified Canadian Aboriginal Syllabics Extended": range(6320, 6399 + 1), - "Limbu": range(6400, 6479 + 1), - "Tai Le": range(6480, 6527 + 1), - "New Tai Lue": range(6528, 6623 + 1), - "Khmer Symbols": range(6624, 6655 + 1), - "Buginese": range(6656, 6687 + 1), - "Tai Tham": range(6688, 6831 + 1), - "Combining Diacritical Marks Extended": range(6832, 6911 + 1), - "Balinese": range(6912, 7039 + 1), - "Sundanese": range(7040, 7103 + 1), - "Batak": range(7104, 7167 + 1), - "Lepcha": range(7168, 7247 + 1), - "Ol Chiki": range(7248, 7295 + 1), - "Cyrillic Extended C": range(7296, 7311 + 1), - "Sundanese Supplement": range(7360, 7375 + 1), - "Vedic Extensions": range(7376, 7423 + 1), - "Phonetic Extensions": range(7424, 7551 + 1), - "Phonetic Extensions Supplement": range(7552, 7615 + 1), - "Combining Diacritical Marks Supplement": range(7616, 7679 + 1), - "Latin Extended Additional": range(7680, 7935 + 1), - "Greek Extended": range(7936, 8191 + 1), - "General Punctuation": range(8192, 8303 + 1), - "Superscripts and Subscripts": range(8304, 8351 + 1), - "Currency Symbols": range(8352, 8399 + 1), - "Combining Diacritical Marks for Symbols": range(8400, 8447 + 1), - "Letterlike Symbols": range(8448, 8527 + 1), - "Number Forms": range(8528, 8591 + 1), - "Arrows": range(8592, 8703 + 1), - "Mathematical Operators": range(8704, 8959 + 1), - "Miscellaneous Technical": range(8960, 9215 + 1), - "Control Pictures": range(9216, 9279 + 1), - "Optical Character Recognition": range(9280, 9311 + 1), - "Enclosed Alphanumerics": range(9312, 9471 + 1), - "Box Drawing": range(9472, 9599 + 1), - "Block Elements": range(9600, 9631 + 1), - "Geometric Shapes": range(9632, 9727 + 1), - "Miscellaneous Symbols": range(9728, 9983 + 1), - "Dingbats": range(9984, 10175 + 1), - "Miscellaneous Mathematical Symbols-A": range(10176, 10223 + 1), - "Supplemental Arrows-A": range(10224, 10239 + 1), - "Braille Patterns": range(10240, 10495 + 1), - "Supplemental Arrows-B": range(10496, 10623 + 1), - "Miscellaneous Mathematical Symbols-B": range(10624, 10751 + 1), - "Supplemental Mathematical Operators": range(10752, 11007 + 1), - "Miscellaneous Symbols and Arrows": range(11008, 11263 + 1), - "Glagolitic": range(11264, 11359 + 1), - "Latin Extended-C": range(11360, 11391 + 1), - "Coptic": range(11392, 11519 + 1), - "Georgian Supplement": range(11520, 11567 + 1), - "Tifinagh": range(11568, 11647 + 1), - "Ethiopic Extended": range(11648, 11743 + 1), - "Cyrillic Extended-A": range(11744, 11775 + 1), - "Supplemental Punctuation": range(11776, 11903 + 1), - "CJK Radicals Supplement": range(11904, 12031 + 1), - "Kangxi Radicals": range(12032, 12255 + 1), - "Ideographic Description Characters": range(12272, 12287 + 1), - "CJK Symbols and Punctuation": range(12288, 12351 + 1), - "Hiragana": range(12352, 12447 + 1), - "Katakana": range(12448, 12543 + 1), - "Bopomofo": range(12544, 12591 + 1), - "Hangul Compatibility Jamo": range(12592, 12687 + 1), - "Kanbun": range(12688, 12703 + 1), - "Bopomofo Extended": range(12704, 12735 + 1), - "CJK Strokes": range(12736, 12783 + 1), - "Katakana Phonetic Extensions": range(12784, 12799 + 1), - "Enclosed CJK Letters and Months": range(12800, 13055 + 1), - "CJK Compatibility": range(13056, 13311 + 1), - "CJK Unified Ideographs Extension A": range(13312, 19903 + 1), - "Yijing Hexagram Symbols": range(19904, 19967 + 1), - "CJK Unified Ideographs": range(19968, 40959 + 1), - "Yi Syllables": range(40960, 42127 + 1), - "Yi Radicals": range(42128, 42191 + 1), - "Lisu": range(42192, 42239 + 1), - "Vai": range(42240, 42559 + 1), - "Cyrillic Extended-B": range(42560, 42655 + 1), - "Bamum": range(42656, 42751 + 1), - "Modifier Tone Letters": range(42752, 42783 + 1), - "Latin Extended-D": range(42784, 43007 + 1), - "Syloti Nagri": range(43008, 43055 + 1), - "Common Indic Number Forms": range(43056, 43071 + 1), - "Phags-pa": range(43072, 43135 + 1), - "Saurashtra": range(43136, 43231 + 1), - "Devanagari Extended": range(43232, 43263 + 1), - "Kayah Li": range(43264, 43311 + 1), - "Rejang": range(43312, 43359 + 1), - "Hangul Jamo Extended-A": range(43360, 43391 + 1), - "Javanese": range(43392, 43487 + 1), - "Myanmar Extended-B": range(43488, 43519 + 1), - "Cham": range(43520, 43615 + 1), - "Myanmar Extended-A": range(43616, 43647 + 1), - "Tai Viet": range(43648, 43743 + 1), - "Meetei Mayek Extensions": range(43744, 43775 + 1), - "Ethiopic Extended-A": range(43776, 43823 + 1), - "Latin Extended-E": range(43824, 43887 + 1), - "Cherokee Supplement": range(43888, 43967 + 1), - "Meetei Mayek": range(43968, 44031 + 1), - "Hangul Syllables": range(44032, 55215 + 1), - "Hangul Jamo Extended-B": range(55216, 55295 + 1), - "High Surrogates": range(55296, 56191 + 1), - "High Private Use Surrogates": range(56192, 56319 + 1), - "Low Surrogates": range(56320, 57343 + 1), - "Private Use Area": range(57344, 63743 + 1), - "CJK Compatibility Ideographs": range(63744, 64255 + 1), - "Alphabetic Presentation Forms": range(64256, 64335 + 1), - "Arabic Presentation Forms-A": range(64336, 65023 + 1), - "Variation Selectors": range(65024, 65039 + 1), - "Vertical Forms": range(65040, 65055 + 1), - "Combining Half Marks": range(65056, 65071 + 1), - "CJK Compatibility Forms": range(65072, 65103 + 1), - "Small Form Variants": range(65104, 65135 + 1), - "Arabic Presentation Forms-B": range(65136, 65279 + 1), - "Halfwidth and Fullwidth Forms": range(65280, 65519 + 1), - "Specials": range(65520, 65535 + 1), - "Linear B Syllabary": range(65536, 65663 + 1), - "Linear B Ideograms": range(65664, 65791 + 1), - "Aegean Numbers": range(65792, 65855 + 1), - "Ancient Greek Numbers": range(65856, 65935 + 1), - "Ancient Symbols": range(65936, 65999 + 1), - "Phaistos Disc": range(66000, 66047 + 1), - "Lycian": range(66176, 66207 + 1), - "Carian": range(66208, 66271 + 1), - "Coptic Epact Numbers": range(66272, 66303 + 1), - "Old Italic": range(66304, 66351 + 1), - "Gothic": range(66352, 66383 + 1), - "Old Permic": range(66384, 66431 + 1), - "Ugaritic": range(66432, 66463 + 1), - "Old Persian": range(66464, 66527 + 1), - "Deseret": range(66560, 66639 + 1), - "Shavian": range(66640, 66687 + 1), - "Osmanya": range(66688, 66735 + 1), - "Osage": range(66736, 66815 + 1), - "Elbasan": range(66816, 66863 + 1), - "Caucasian Albanian": range(66864, 66927 + 1), - "Linear A": range(67072, 67455 + 1), - "Cypriot Syllabary": range(67584, 67647 + 1), - "Imperial Aramaic": range(67648, 67679 + 1), - "Palmyrene": range(67680, 67711 + 1), - "Nabataean": range(67712, 67759 + 1), - "Hatran": range(67808, 67839 + 1), - "Phoenician": range(67840, 67871 + 1), - "Lydian": range(67872, 67903 + 1), - "Meroitic Hieroglyphs": range(67968, 67999 + 1), - "Meroitic Cursive": range(68000, 68095 + 1), - "Kharoshthi": range(68096, 68191 + 1), - "Old South Arabian": range(68192, 68223 + 1), - "Old North Arabian": range(68224, 68255 + 1), - "Manichaean": range(68288, 68351 + 1), - "Avestan": range(68352, 68415 + 1), - "Inscriptional Parthian": range(68416, 68447 + 1), - "Inscriptional Pahlavi": range(68448, 68479 + 1), - "Psalter Pahlavi": range(68480, 68527 + 1), - "Old Turkic": range(68608, 68687 + 1), - "Old Hungarian": range(68736, 68863 + 1), - "Rumi Numeral Symbols": range(69216, 69247 + 1), - "Brahmi": range(69632, 69759 + 1), - "Kaithi": range(69760, 69839 + 1), - "Sora Sompeng": range(69840, 69887 + 1), - "Chakma": range(69888, 69967 + 1), - "Mahajani": range(69968, 70015 + 1), - "Sharada": range(70016, 70111 + 1), - "Sinhala Archaic Numbers": range(70112, 70143 + 1), - "Khojki": range(70144, 70223 + 1), - "Multani": range(70272, 70319 + 1), - "Khudawadi": range(70320, 70399 + 1), - "Grantha": range(70400, 70527 + 1), - "Newa": range(70656, 70783 + 1), - "Tirhuta": range(70784, 70879 + 1), - "Siddham": range(71040, 71167 + 1), - "Modi": range(71168, 71263 + 1), - "Mongolian Supplement": range(71264, 71295 + 1), - "Takri": range(71296, 71375 + 1), - "Ahom": range(71424, 71487 + 1), - "Warang Citi": range(71840, 71935 + 1), - "Zanabazar Square": range(72192, 72271 + 1), - "Soyombo": range(72272, 72367 + 1), - "Pau Cin Hau": range(72384, 72447 + 1), - "Bhaiksuki": range(72704, 72815 + 1), - "Marchen": range(72816, 72895 + 1), - "Masaram Gondi": range(72960, 73055 + 1), - "Cuneiform": range(73728, 74751 + 1), - "Cuneiform Numbers and Punctuation": range(74752, 74879 + 1), - "Early Dynastic Cuneiform": range(74880, 75087 + 1), - "Egyptian Hieroglyphs": range(77824, 78895 + 1), - "Anatolian Hieroglyphs": range(82944, 83583 + 1), - "Bamum Supplement": range(92160, 92735 + 1), - "Mro": range(92736, 92783 + 1), - "Bassa Vah": range(92880, 92927 + 1), - "Pahawh Hmong": range(92928, 93071 + 1), - "Miao": range(93952, 94111 + 1), - "Ideographic Symbols and Punctuation": range(94176, 94207 + 1), - "Tangut": range(94208, 100351 + 1), - "Tangut Components": range(100352, 101119 + 1), - "Kana Supplement": range(110592, 110847 + 1), - "Kana Extended-A": range(110848, 110895 + 1), - "Nushu": range(110960, 111359 + 1), - "Duployan": range(113664, 113823 + 1), - "Shorthand Format Controls": range(113824, 113839 + 1), - "Byzantine Musical Symbols": range(118784, 119039 + 1), - "Musical Symbols": range(119040, 119295 + 1), - "Ancient Greek Musical Notation": range(119296, 119375 + 1), - "Tai Xuan Jing Symbols": range(119552, 119647 + 1), - "Counting Rod Numerals": range(119648, 119679 + 1), - "Mathematical Alphanumeric Symbols": range(119808, 120831 + 1), - "Sutton SignWriting": range(120832, 121519 + 1), - "Glagolitic Supplement": range(122880, 122927 + 1), - "Mende Kikakui": range(124928, 125151 + 1), - "Adlam": range(125184, 125279 + 1), - "Arabic Mathematical Alphabetic Symbols": range(126464, 126719 + 1), - "Mahjong Tiles": range(126976, 127023 + 1), - "Domino Tiles": range(127024, 127135 + 1), - "Playing Cards": range(127136, 127231 + 1), - "Enclosed Alphanumeric Supplement": range(127232, 127487 + 1), - "Enclosed Ideographic Supplement": range(127488, 127743 + 1), - "Miscellaneous Symbols and Pictographs": range(127744, 128511 + 1), - "Emoticons range(Emoji)": range(128512, 128591 + 1), - "Ornamental Dingbats": range(128592, 128639 + 1), - "Transport and Map Symbols": range(128640, 128767 + 1), - "Alchemical Symbols": range(128768, 128895 + 1), - "Geometric Shapes Extended": range(128896, 129023 + 1), - "Supplemental Arrows-C": range(129024, 129279 + 1), - "Supplemental Symbols and Pictographs": range(129280, 129535 + 1), - "CJK Unified Ideographs Extension B": range(131072, 173791 + 1), - "CJK Unified Ideographs Extension C": range(173824, 177983 + 1), - "CJK Unified Ideographs Extension D": range(177984, 178207 + 1), - "CJK Unified Ideographs Extension E": range(178208, 183983 + 1), - "CJK Unified Ideographs Extension F": range(183984, 191471 + 1), - "CJK Compatibility Ideographs Supplement": range(194560, 195103 + 1), - "Tags": range(917504, 917631 + 1), - "Variation Selectors Supplement": range(917760, 917999 + 1), -} - - -UNICODE_SECONDARY_RANGE_KEYWORD: List[str] = [ - "Supplement", - "Extended", - "Extensions", - "Modifier", - "Marks", - "Punctuation", - "Symbols", - "Forms", - "Operators", - "Miscellaneous", - "Drawing", - "Block", - "Shapes", - "Supplemental", - "Tags", -] - -RE_POSSIBLE_ENCODING_INDICATION = re_compile( - r"(?:(?:encoding)|(?:charset)|(?:coding))(?:[\:= ]{1,10})(?:[\"\']?)([a-zA-Z0-9\-_]+)(?:[\"\']?)", - IGNORECASE, -) - -IANA_SUPPORTED: List[str] = sorted( - filter( - lambda x: x.endswith("_codec") is False - and x not in {"rot_13", "tactis", "mbcs"}, - list(set(aliases.values())), - ) -) - -IANA_SUPPORTED_COUNT: int = len(IANA_SUPPORTED) - -# pre-computed code page that are similar using the function cp_similarity. -IANA_SUPPORTED_SIMILAR: Dict[str, List[str]] = { - "cp037": ["cp1026", "cp1140", "cp273", "cp500"], - "cp1026": ["cp037", "cp1140", "cp273", "cp500"], - "cp1125": ["cp866"], - "cp1140": ["cp037", "cp1026", "cp273", "cp500"], - "cp1250": ["iso8859_2"], - "cp1251": ["kz1048", "ptcp154"], - "cp1252": ["iso8859_15", "iso8859_9", "latin_1"], - "cp1253": ["iso8859_7"], - "cp1254": ["iso8859_15", "iso8859_9", "latin_1"], - "cp1257": ["iso8859_13"], - "cp273": ["cp037", "cp1026", "cp1140", "cp500"], - "cp437": ["cp850", "cp858", "cp860", "cp861", "cp862", "cp863", "cp865"], - "cp500": ["cp037", "cp1026", "cp1140", "cp273"], - "cp850": ["cp437", "cp857", "cp858", "cp865"], - "cp857": ["cp850", "cp858", "cp865"], - "cp858": ["cp437", "cp850", "cp857", "cp865"], - "cp860": ["cp437", "cp861", "cp862", "cp863", "cp865"], - "cp861": ["cp437", "cp860", "cp862", "cp863", "cp865"], - "cp862": ["cp437", "cp860", "cp861", "cp863", "cp865"], - "cp863": ["cp437", "cp860", "cp861", "cp862", "cp865"], - "cp865": ["cp437", "cp850", "cp857", "cp858", "cp860", "cp861", "cp862", "cp863"], - "cp866": ["cp1125"], - "iso8859_10": ["iso8859_14", "iso8859_15", "iso8859_4", "iso8859_9", "latin_1"], - "iso8859_11": ["tis_620"], - "iso8859_13": ["cp1257"], - "iso8859_14": [ - "iso8859_10", - "iso8859_15", - "iso8859_16", - "iso8859_3", - "iso8859_9", - "latin_1", - ], - "iso8859_15": [ - "cp1252", - "cp1254", - "iso8859_10", - "iso8859_14", - "iso8859_16", - "iso8859_3", - "iso8859_9", - "latin_1", - ], - "iso8859_16": [ - "iso8859_14", - "iso8859_15", - "iso8859_2", - "iso8859_3", - "iso8859_9", - "latin_1", - ], - "iso8859_2": ["cp1250", "iso8859_16", "iso8859_4"], - "iso8859_3": ["iso8859_14", "iso8859_15", "iso8859_16", "iso8859_9", "latin_1"], - "iso8859_4": ["iso8859_10", "iso8859_2", "iso8859_9", "latin_1"], - "iso8859_7": ["cp1253"], - "iso8859_9": [ - "cp1252", - "cp1254", - "cp1258", - "iso8859_10", - "iso8859_14", - "iso8859_15", - "iso8859_16", - "iso8859_3", - "iso8859_4", - "latin_1", - ], - "kz1048": ["cp1251", "ptcp154"], - "latin_1": [ - "cp1252", - "cp1254", - "cp1258", - "iso8859_10", - "iso8859_14", - "iso8859_15", - "iso8859_16", - "iso8859_3", - "iso8859_4", - "iso8859_9", - ], - "mac_iceland": ["mac_roman", "mac_turkish"], - "mac_roman": ["mac_iceland", "mac_turkish"], - "mac_turkish": ["mac_iceland", "mac_roman"], - "ptcp154": ["cp1251", "kz1048"], - "tis_620": ["iso8859_11"], -} - - -CHARDET_CORRESPONDENCE: Dict[str, str] = { - "iso2022_kr": "ISO-2022-KR", - "iso2022_jp": "ISO-2022-JP", - "euc_kr": "EUC-KR", - "tis_620": "TIS-620", - "utf_32": "UTF-32", - "euc_jp": "EUC-JP", - "koi8_r": "KOI8-R", - "iso8859_1": "ISO-8859-1", - "iso8859_2": "ISO-8859-2", - "iso8859_5": "ISO-8859-5", - "iso8859_6": "ISO-8859-6", - "iso8859_7": "ISO-8859-7", - "iso8859_8": "ISO-8859-8", - "utf_16": "UTF-16", - "cp855": "IBM855", - "mac_cyrillic": "MacCyrillic", - "gb2312": "GB2312", - "gb18030": "GB18030", - "cp932": "CP932", - "cp866": "IBM866", - "utf_8": "utf-8", - "utf_8_sig": "UTF-8-SIG", - "shift_jis": "SHIFT_JIS", - "big5": "Big5", - "cp1250": "windows-1250", - "cp1251": "windows-1251", - "cp1252": "Windows-1252", - "cp1253": "windows-1253", - "cp1255": "windows-1255", - "cp1256": "windows-1256", - "cp1254": "Windows-1254", - "cp949": "CP949", -} - - -COMMON_SAFE_ASCII_CHARACTERS: Set[str] = { - "<", - ">", - "=", - ":", - "/", - "&", - ";", - "{", - "}", - "[", - "]", - ",", - "|", - '"', - "-", -} - - -KO_NAMES: Set[str] = {"johab", "cp949", "euc_kr"} -ZH_NAMES: Set[str] = {"big5", "cp950", "big5hkscs", "hz"} - -NOT_PRINTABLE_PATTERN = re_compile(r"[0-9\W\n\r\t]+") - -LANGUAGE_SUPPORTED_COUNT: int = len(FREQUENCIES) - -# Logging LEVEL bellow DEBUG -TRACE: int = 5 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/legacy.py b/venv/lib/python3.12/site-packages/charset_normalizer/legacy.py deleted file mode 100644 index cdebe2b..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer/legacy.py +++ /dev/null @@ -1,95 +0,0 @@ -import warnings -from typing import Dict, Optional, Union - -from .api import from_bytes, from_fp, from_path, normalize -from .constant import CHARDET_CORRESPONDENCE -from .models import CharsetMatch, CharsetMatches - - -def detect(byte_str: bytes) -> Dict[str, Optional[Union[str, float]]]: - """ - chardet legacy method - Detect the encoding of the given byte string. It should be mostly backward-compatible. - Encoding name will match Chardet own writing whenever possible. (Not on encoding name unsupported by it) - This function is deprecated and should be used to migrate your project easily, consult the documentation for - further information. Not planned for removal. - - :param byte_str: The byte sequence to examine. - """ - if not isinstance(byte_str, (bytearray, bytes)): - raise TypeError( # pragma: nocover - "Expected object of type bytes or bytearray, got: " - "{0}".format(type(byte_str)) - ) - - if isinstance(byte_str, bytearray): - byte_str = bytes(byte_str) - - r = from_bytes(byte_str).best() - - encoding = r.encoding if r is not None else None - language = r.language if r is not None and r.language != "Unknown" else "" - confidence = 1.0 - r.chaos if r is not None else None - - # Note: CharsetNormalizer does not return 'UTF-8-SIG' as the sig get stripped in the detection/normalization process - # but chardet does return 'utf-8-sig' and it is a valid codec name. - if r is not None and encoding == "utf_8" and r.bom: - encoding += "_sig" - - return { - "encoding": encoding - if encoding not in CHARDET_CORRESPONDENCE - else CHARDET_CORRESPONDENCE[encoding], - "language": language, - "confidence": confidence, - } - - -class CharsetNormalizerMatch(CharsetMatch): - pass - - -class CharsetNormalizerMatches(CharsetMatches): - @staticmethod - def from_fp(*args, **kwargs): # type: ignore - warnings.warn( # pragma: nocover - "staticmethod from_fp, from_bytes, from_path and normalize are deprecated " - "and scheduled to be removed in 3.0", - DeprecationWarning, - ) - return from_fp(*args, **kwargs) # pragma: nocover - - @staticmethod - def from_bytes(*args, **kwargs): # type: ignore - warnings.warn( # pragma: nocover - "staticmethod from_fp, from_bytes, from_path and normalize are deprecated " - "and scheduled to be removed in 3.0", - DeprecationWarning, - ) - return from_bytes(*args, **kwargs) # pragma: nocover - - @staticmethod - def from_path(*args, **kwargs): # type: ignore - warnings.warn( # pragma: nocover - "staticmethod from_fp, from_bytes, from_path and normalize are deprecated " - "and scheduled to be removed in 3.0", - DeprecationWarning, - ) - return from_path(*args, **kwargs) # pragma: nocover - - @staticmethod - def normalize(*args, **kwargs): # type: ignore - warnings.warn( # pragma: nocover - "staticmethod from_fp, from_bytes, from_path and normalize are deprecated " - "and scheduled to be removed in 3.0", - DeprecationWarning, - ) - return normalize(*args, **kwargs) # pragma: nocover - - -class CharsetDetector(CharsetNormalizerMatches): - pass - - -class CharsetDoctor(CharsetNormalizerMatches): - pass diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/md.py b/venv/lib/python3.12/site-packages/charset_normalizer/md.py deleted file mode 100644 index 31808af..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer/md.py +++ /dev/null @@ -1,553 +0,0 @@ -from functools import lru_cache -from typing import List, Optional - -from .constant import COMMON_SAFE_ASCII_CHARACTERS, UNICODE_SECONDARY_RANGE_KEYWORD -from .utils import ( - is_accentuated, - is_ascii, - is_case_variable, - is_cjk, - is_emoticon, - is_hangul, - is_hiragana, - is_katakana, - is_latin, - is_punctuation, - is_separator, - is_symbol, - is_thai, - is_unprintable, - remove_accent, - unicode_range, -) - - -class MessDetectorPlugin: - """ - Base abstract class used for mess detection plugins. - All detectors MUST extend and implement given methods. - """ - - def eligible(self, character: str) -> bool: - """ - Determine if given character should be fed in. - """ - raise NotImplementedError # pragma: nocover - - def feed(self, character: str) -> None: - """ - The main routine to be executed upon character. - Insert the logic in witch the text would be considered chaotic. - """ - raise NotImplementedError # pragma: nocover - - def reset(self) -> None: # pragma: no cover - """ - Permit to reset the plugin to the initial state. - """ - raise NotImplementedError - - @property - def ratio(self) -> float: - """ - Compute the chaos ratio based on what your feed() has seen. - Must NOT be lower than 0.; No restriction gt 0. - """ - raise NotImplementedError # pragma: nocover - - -class TooManySymbolOrPunctuationPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._punctuation_count: int = 0 - self._symbol_count: int = 0 - self._character_count: int = 0 - - self._last_printable_char: Optional[str] = None - self._frenzy_symbol_in_word: bool = False - - def eligible(self, character: str) -> bool: - return character.isprintable() - - def feed(self, character: str) -> None: - self._character_count += 1 - - if ( - character != self._last_printable_char - and character not in COMMON_SAFE_ASCII_CHARACTERS - ): - if is_punctuation(character): - self._punctuation_count += 1 - elif ( - character.isdigit() is False - and is_symbol(character) - and is_emoticon(character) is False - ): - self._symbol_count += 2 - - self._last_printable_char = character - - def reset(self) -> None: # pragma: no cover - self._punctuation_count = 0 - self._character_count = 0 - self._symbol_count = 0 - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - - ratio_of_punctuation: float = ( - self._punctuation_count + self._symbol_count - ) / self._character_count - - return ratio_of_punctuation if ratio_of_punctuation >= 0.3 else 0.0 - - -class TooManyAccentuatedPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._character_count: int = 0 - self._accentuated_count: int = 0 - - def eligible(self, character: str) -> bool: - return character.isalpha() - - def feed(self, character: str) -> None: - self._character_count += 1 - - if is_accentuated(character): - self._accentuated_count += 1 - - def reset(self) -> None: # pragma: no cover - self._character_count = 0 - self._accentuated_count = 0 - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - ratio_of_accentuation: float = self._accentuated_count / self._character_count - return ratio_of_accentuation if ratio_of_accentuation >= 0.35 else 0.0 - - -class UnprintablePlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._unprintable_count: int = 0 - self._character_count: int = 0 - - def eligible(self, character: str) -> bool: - return True - - def feed(self, character: str) -> None: - if is_unprintable(character): - self._unprintable_count += 1 - self._character_count += 1 - - def reset(self) -> None: # pragma: no cover - self._unprintable_count = 0 - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - - return (self._unprintable_count * 8) / self._character_count - - -class SuspiciousDuplicateAccentPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._successive_count: int = 0 - self._character_count: int = 0 - - self._last_latin_character: Optional[str] = None - - def eligible(self, character: str) -> bool: - return character.isalpha() and is_latin(character) - - def feed(self, character: str) -> None: - self._character_count += 1 - if ( - self._last_latin_character is not None - and is_accentuated(character) - and is_accentuated(self._last_latin_character) - ): - if character.isupper() and self._last_latin_character.isupper(): - self._successive_count += 1 - # Worse if its the same char duplicated with different accent. - if remove_accent(character) == remove_accent(self._last_latin_character): - self._successive_count += 1 - self._last_latin_character = character - - def reset(self) -> None: # pragma: no cover - self._successive_count = 0 - self._character_count = 0 - self._last_latin_character = None - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - - return (self._successive_count * 2) / self._character_count - - -class SuspiciousRange(MessDetectorPlugin): - def __init__(self) -> None: - self._suspicious_successive_range_count: int = 0 - self._character_count: int = 0 - self._last_printable_seen: Optional[str] = None - - def eligible(self, character: str) -> bool: - return character.isprintable() - - def feed(self, character: str) -> None: - self._character_count += 1 - - if ( - character.isspace() - or is_punctuation(character) - or character in COMMON_SAFE_ASCII_CHARACTERS - ): - self._last_printable_seen = None - return - - if self._last_printable_seen is None: - self._last_printable_seen = character - return - - unicode_range_a: Optional[str] = unicode_range(self._last_printable_seen) - unicode_range_b: Optional[str] = unicode_range(character) - - if is_suspiciously_successive_range(unicode_range_a, unicode_range_b): - self._suspicious_successive_range_count += 1 - - self._last_printable_seen = character - - def reset(self) -> None: # pragma: no cover - self._character_count = 0 - self._suspicious_successive_range_count = 0 - self._last_printable_seen = None - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - - ratio_of_suspicious_range_usage: float = ( - self._suspicious_successive_range_count * 2 - ) / self._character_count - - if ratio_of_suspicious_range_usage < 0.1: - return 0.0 - - return ratio_of_suspicious_range_usage - - -class SuperWeirdWordPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._word_count: int = 0 - self._bad_word_count: int = 0 - self._foreign_long_count: int = 0 - - self._is_current_word_bad: bool = False - self._foreign_long_watch: bool = False - - self._character_count: int = 0 - self._bad_character_count: int = 0 - - self._buffer: str = "" - self._buffer_accent_count: int = 0 - - def eligible(self, character: str) -> bool: - return True - - def feed(self, character: str) -> None: - if character.isalpha(): - self._buffer += character - if is_accentuated(character): - self._buffer_accent_count += 1 - if ( - self._foreign_long_watch is False - and (is_latin(character) is False or is_accentuated(character)) - and is_cjk(character) is False - and is_hangul(character) is False - and is_katakana(character) is False - and is_hiragana(character) is False - and is_thai(character) is False - ): - self._foreign_long_watch = True - return - if not self._buffer: - return - if ( - character.isspace() or is_punctuation(character) or is_separator(character) - ) and self._buffer: - self._word_count += 1 - buffer_length: int = len(self._buffer) - - self._character_count += buffer_length - - if buffer_length >= 4: - if self._buffer_accent_count / buffer_length > 0.34: - self._is_current_word_bad = True - # Word/Buffer ending with a upper case accentuated letter are so rare, - # that we will consider them all as suspicious. Same weight as foreign_long suspicious. - if is_accentuated(self._buffer[-1]) and self._buffer[-1].isupper(): - self._foreign_long_count += 1 - self._is_current_word_bad = True - if buffer_length >= 24 and self._foreign_long_watch: - self._foreign_long_count += 1 - self._is_current_word_bad = True - - if self._is_current_word_bad: - self._bad_word_count += 1 - self._bad_character_count += len(self._buffer) - self._is_current_word_bad = False - - self._foreign_long_watch = False - self._buffer = "" - self._buffer_accent_count = 0 - elif ( - character not in {"<", ">", "-", "=", "~", "|", "_"} - and character.isdigit() is False - and is_symbol(character) - ): - self._is_current_word_bad = True - self._buffer += character - - def reset(self) -> None: # pragma: no cover - self._buffer = "" - self._is_current_word_bad = False - self._foreign_long_watch = False - self._bad_word_count = 0 - self._word_count = 0 - self._character_count = 0 - self._bad_character_count = 0 - self._foreign_long_count = 0 - - @property - def ratio(self) -> float: - if self._word_count <= 10 and self._foreign_long_count == 0: - return 0.0 - - return self._bad_character_count / self._character_count - - -class CjkInvalidStopPlugin(MessDetectorPlugin): - """ - GB(Chinese) based encoding often render the stop incorrectly when the content does not fit and - can be easily detected. Searching for the overuse of '丅' and '丄'. - """ - - def __init__(self) -> None: - self._wrong_stop_count: int = 0 - self._cjk_character_count: int = 0 - - def eligible(self, character: str) -> bool: - return True - - def feed(self, character: str) -> None: - if character in {"丅", "丄"}: - self._wrong_stop_count += 1 - return - if is_cjk(character): - self._cjk_character_count += 1 - - def reset(self) -> None: # pragma: no cover - self._wrong_stop_count = 0 - self._cjk_character_count = 0 - - @property - def ratio(self) -> float: - if self._cjk_character_count < 16: - return 0.0 - return self._wrong_stop_count / self._cjk_character_count - - -class ArchaicUpperLowerPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._buf: bool = False - - self._character_count_since_last_sep: int = 0 - - self._successive_upper_lower_count: int = 0 - self._successive_upper_lower_count_final: int = 0 - - self._character_count: int = 0 - - self._last_alpha_seen: Optional[str] = None - self._current_ascii_only: bool = True - - def eligible(self, character: str) -> bool: - return True - - def feed(self, character: str) -> None: - is_concerned = character.isalpha() and is_case_variable(character) - chunk_sep = is_concerned is False - - if chunk_sep and self._character_count_since_last_sep > 0: - if ( - self._character_count_since_last_sep <= 64 - and character.isdigit() is False - and self._current_ascii_only is False - ): - self._successive_upper_lower_count_final += ( - self._successive_upper_lower_count - ) - - self._successive_upper_lower_count = 0 - self._character_count_since_last_sep = 0 - self._last_alpha_seen = None - self._buf = False - self._character_count += 1 - self._current_ascii_only = True - - return - - if self._current_ascii_only is True and is_ascii(character) is False: - self._current_ascii_only = False - - if self._last_alpha_seen is not None: - if (character.isupper() and self._last_alpha_seen.islower()) or ( - character.islower() and self._last_alpha_seen.isupper() - ): - if self._buf is True: - self._successive_upper_lower_count += 2 - self._buf = False - else: - self._buf = True - else: - self._buf = False - - self._character_count += 1 - self._character_count_since_last_sep += 1 - self._last_alpha_seen = character - - def reset(self) -> None: # pragma: no cover - self._character_count = 0 - self._character_count_since_last_sep = 0 - self._successive_upper_lower_count = 0 - self._successive_upper_lower_count_final = 0 - self._last_alpha_seen = None - self._buf = False - self._current_ascii_only = True - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - - return self._successive_upper_lower_count_final / self._character_count - - -@lru_cache(maxsize=1024) -def is_suspiciously_successive_range( - unicode_range_a: Optional[str], unicode_range_b: Optional[str] -) -> bool: - """ - Determine if two Unicode range seen next to each other can be considered as suspicious. - """ - if unicode_range_a is None or unicode_range_b is None: - return True - - if unicode_range_a == unicode_range_b: - return False - - if "Latin" in unicode_range_a and "Latin" in unicode_range_b: - return False - - if "Emoticons" in unicode_range_a or "Emoticons" in unicode_range_b: - return False - - # Latin characters can be accompanied with a combining diacritical mark - # eg. Vietnamese. - if ("Latin" in unicode_range_a or "Latin" in unicode_range_b) and ( - "Combining" in unicode_range_a or "Combining" in unicode_range_b - ): - return False - - keywords_range_a, keywords_range_b = unicode_range_a.split( - " " - ), unicode_range_b.split(" ") - - for el in keywords_range_a: - if el in UNICODE_SECONDARY_RANGE_KEYWORD: - continue - if el in keywords_range_b: - return False - - # Japanese Exception - range_a_jp_chars, range_b_jp_chars = ( - unicode_range_a - in ( - "Hiragana", - "Katakana", - ), - unicode_range_b in ("Hiragana", "Katakana"), - ) - if (range_a_jp_chars or range_b_jp_chars) and ( - "CJK" in unicode_range_a or "CJK" in unicode_range_b - ): - return False - if range_a_jp_chars and range_b_jp_chars: - return False - - if "Hangul" in unicode_range_a or "Hangul" in unicode_range_b: - if "CJK" in unicode_range_a or "CJK" in unicode_range_b: - return False - if unicode_range_a == "Basic Latin" or unicode_range_b == "Basic Latin": - return False - - # Chinese/Japanese use dedicated range for punctuation and/or separators. - if ("CJK" in unicode_range_a or "CJK" in unicode_range_b) or ( - unicode_range_a in ["Katakana", "Hiragana"] - and unicode_range_b in ["Katakana", "Hiragana"] - ): - if "Punctuation" in unicode_range_a or "Punctuation" in unicode_range_b: - return False - if "Forms" in unicode_range_a or "Forms" in unicode_range_b: - return False - - return True - - -@lru_cache(maxsize=2048) -def mess_ratio( - decoded_sequence: str, maximum_threshold: float = 0.2, debug: bool = False -) -> float: - """ - Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier. - """ - - detectors: List[MessDetectorPlugin] = [ - md_class() for md_class in MessDetectorPlugin.__subclasses__() - ] - - length: int = len(decoded_sequence) + 1 - - mean_mess_ratio: float = 0.0 - - if length < 512: - intermediary_mean_mess_ratio_calc: int = 32 - elif length <= 1024: - intermediary_mean_mess_ratio_calc = 64 - else: - intermediary_mean_mess_ratio_calc = 128 - - for character, index in zip(decoded_sequence + "\n", range(length)): - for detector in detectors: - if detector.eligible(character): - detector.feed(character) - - if ( - index > 0 and index % intermediary_mean_mess_ratio_calc == 0 - ) or index == length - 1: - mean_mess_ratio = sum(dt.ratio for dt in detectors) - - if mean_mess_ratio >= maximum_threshold: - break - - if debug: - for dt in detectors: # pragma: nocover - print(dt.__class__, dt.ratio) - - return round(mean_mess_ratio, 3) diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/models.py b/venv/lib/python3.12/site-packages/charset_normalizer/models.py deleted file mode 100644 index ccb0d47..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer/models.py +++ /dev/null @@ -1,401 +0,0 @@ -import warnings -from collections import Counter -from encodings.aliases import aliases -from hashlib import sha256 -from json import dumps -from re import sub -from typing import ( - Any, - Counter as TypeCounter, - Dict, - Iterator, - List, - Optional, - Tuple, - Union, -) - -from .constant import NOT_PRINTABLE_PATTERN, TOO_BIG_SEQUENCE -from .md import mess_ratio -from .utils import iana_name, is_multi_byte_encoding, unicode_range - - -class CharsetMatch: - def __init__( - self, - payload: bytes, - guessed_encoding: str, - mean_mess_ratio: float, - has_sig_or_bom: bool, - languages: "CoherenceMatches", - decoded_payload: Optional[str] = None, - ): - self._payload: bytes = payload - - self._encoding: str = guessed_encoding - self._mean_mess_ratio: float = mean_mess_ratio - self._languages: CoherenceMatches = languages - self._has_sig_or_bom: bool = has_sig_or_bom - self._unicode_ranges: Optional[List[str]] = None - - self._leaves: List[CharsetMatch] = [] - self._mean_coherence_ratio: float = 0.0 - - self._output_payload: Optional[bytes] = None - self._output_encoding: Optional[str] = None - - self._string: Optional[str] = decoded_payload - - def __eq__(self, other: object) -> bool: - if not isinstance(other, CharsetMatch): - raise TypeError( - "__eq__ cannot be invoked on {} and {}.".format( - str(other.__class__), str(self.__class__) - ) - ) - return self.encoding == other.encoding and self.fingerprint == other.fingerprint - - def __lt__(self, other: object) -> bool: - """ - Implemented to make sorted available upon CharsetMatches items. - """ - if not isinstance(other, CharsetMatch): - raise ValueError - - chaos_difference: float = abs(self.chaos - other.chaos) - coherence_difference: float = abs(self.coherence - other.coherence) - - # Bellow 1% difference --> Use Coherence - if chaos_difference < 0.01 and coherence_difference > 0.02: - # When having a tough decision, use the result that decoded as many multi-byte as possible. - if chaos_difference == 0.0 and self.coherence == other.coherence: - return self.multi_byte_usage > other.multi_byte_usage - return self.coherence > other.coherence - - return self.chaos < other.chaos - - @property - def multi_byte_usage(self) -> float: - return 1.0 - len(str(self)) / len(self.raw) - - @property - def chaos_secondary_pass(self) -> float: - """ - Check once again chaos in decoded text, except this time, with full content. - Use with caution, this can be very slow. - Notice: Will be removed in 3.0 - """ - warnings.warn( - "chaos_secondary_pass is deprecated and will be removed in 3.0", - DeprecationWarning, - ) - return mess_ratio(str(self), 1.0) - - @property - def coherence_non_latin(self) -> float: - """ - Coherence ratio on the first non-latin language detected if ANY. - Notice: Will be removed in 3.0 - """ - warnings.warn( - "coherence_non_latin is deprecated and will be removed in 3.0", - DeprecationWarning, - ) - return 0.0 - - @property - def w_counter(self) -> TypeCounter[str]: - """ - Word counter instance on decoded text. - Notice: Will be removed in 3.0 - """ - warnings.warn( - "w_counter is deprecated and will be removed in 3.0", DeprecationWarning - ) - - string_printable_only = sub(NOT_PRINTABLE_PATTERN, " ", str(self).lower()) - - return Counter(string_printable_only.split()) - - def __str__(self) -> str: - # Lazy Str Loading - if self._string is None: - self._string = str(self._payload, self._encoding, "strict") - return self._string - - def __repr__(self) -> str: - return "".format(self.encoding, self.fingerprint) - - def add_submatch(self, other: "CharsetMatch") -> None: - if not isinstance(other, CharsetMatch) or other == self: - raise ValueError( - "Unable to add instance <{}> as a submatch of a CharsetMatch".format( - other.__class__ - ) - ) - - other._string = None # Unload RAM usage; dirty trick. - self._leaves.append(other) - - @property - def encoding(self) -> str: - return self._encoding - - @property - def encoding_aliases(self) -> List[str]: - """ - Encoding name are known by many name, using this could help when searching for IBM855 when it's listed as CP855. - """ - also_known_as: List[str] = [] - for u, p in aliases.items(): - if self.encoding == u: - also_known_as.append(p) - elif self.encoding == p: - also_known_as.append(u) - return also_known_as - - @property - def bom(self) -> bool: - return self._has_sig_or_bom - - @property - def byte_order_mark(self) -> bool: - return self._has_sig_or_bom - - @property - def languages(self) -> List[str]: - """ - Return the complete list of possible languages found in decoded sequence. - Usually not really useful. Returned list may be empty even if 'language' property return something != 'Unknown'. - """ - return [e[0] for e in self._languages] - - @property - def language(self) -> str: - """ - Most probable language found in decoded sequence. If none were detected or inferred, the property will return - "Unknown". - """ - if not self._languages: - # Trying to infer the language based on the given encoding - # Its either English or we should not pronounce ourselves in certain cases. - if "ascii" in self.could_be_from_charset: - return "English" - - # doing it there to avoid circular import - from charset_normalizer.cd import encoding_languages, mb_encoding_languages - - languages = ( - mb_encoding_languages(self.encoding) - if is_multi_byte_encoding(self.encoding) - else encoding_languages(self.encoding) - ) - - if len(languages) == 0 or "Latin Based" in languages: - return "Unknown" - - return languages[0] - - return self._languages[0][0] - - @property - def chaos(self) -> float: - return self._mean_mess_ratio - - @property - def coherence(self) -> float: - if not self._languages: - return 0.0 - return self._languages[0][1] - - @property - def percent_chaos(self) -> float: - return round(self.chaos * 100, ndigits=3) - - @property - def percent_coherence(self) -> float: - return round(self.coherence * 100, ndigits=3) - - @property - def raw(self) -> bytes: - """ - Original untouched bytes. - """ - return self._payload - - @property - def submatch(self) -> List["CharsetMatch"]: - return self._leaves - - @property - def has_submatch(self) -> bool: - return len(self._leaves) > 0 - - @property - def alphabets(self) -> List[str]: - if self._unicode_ranges is not None: - return self._unicode_ranges - # list detected ranges - detected_ranges: List[Optional[str]] = [ - unicode_range(char) for char in str(self) - ] - # filter and sort - self._unicode_ranges = sorted(list({r for r in detected_ranges if r})) - return self._unicode_ranges - - @property - def could_be_from_charset(self) -> List[str]: - """ - The complete list of encoding that output the exact SAME str result and therefore could be the originating - encoding. - This list does include the encoding available in property 'encoding'. - """ - return [self._encoding] + [m.encoding for m in self._leaves] - - def first(self) -> "CharsetMatch": - """ - Kept for BC reasons. Will be removed in 3.0. - """ - return self - - def best(self) -> "CharsetMatch": - """ - Kept for BC reasons. Will be removed in 3.0. - """ - return self - - def output(self, encoding: str = "utf_8") -> bytes: - """ - Method to get re-encoded bytes payload using given target encoding. Default to UTF-8. - Any errors will be simply ignored by the encoder NOT replaced. - """ - if self._output_encoding is None or self._output_encoding != encoding: - self._output_encoding = encoding - self._output_payload = str(self).encode(encoding, "replace") - - return self._output_payload # type: ignore - - @property - def fingerprint(self) -> str: - """ - Retrieve the unique SHA256 computed using the transformed (re-encoded) payload. Not the original one. - """ - return sha256(self.output()).hexdigest() - - -class CharsetMatches: - """ - Container with every CharsetMatch items ordered by default from most probable to the less one. - Act like a list(iterable) but does not implements all related methods. - """ - - def __init__(self, results: Optional[List[CharsetMatch]] = None): - self._results: List[CharsetMatch] = sorted(results) if results else [] - - def __iter__(self) -> Iterator[CharsetMatch]: - yield from self._results - - def __getitem__(self, item: Union[int, str]) -> CharsetMatch: - """ - Retrieve a single item either by its position or encoding name (alias may be used here). - Raise KeyError upon invalid index or encoding not present in results. - """ - if isinstance(item, int): - return self._results[item] - if isinstance(item, str): - item = iana_name(item, False) - for result in self._results: - if item in result.could_be_from_charset: - return result - raise KeyError - - def __len__(self) -> int: - return len(self._results) - - def __bool__(self) -> bool: - return len(self._results) > 0 - - def append(self, item: CharsetMatch) -> None: - """ - Insert a single match. Will be inserted accordingly to preserve sort. - Can be inserted as a submatch. - """ - if not isinstance(item, CharsetMatch): - raise ValueError( - "Cannot append instance '{}' to CharsetMatches".format( - str(item.__class__) - ) - ) - # We should disable the submatch factoring when the input file is too heavy (conserve RAM usage) - if len(item.raw) <= TOO_BIG_SEQUENCE: - for match in self._results: - if match.fingerprint == item.fingerprint and match.chaos == item.chaos: - match.add_submatch(item) - return - self._results.append(item) - self._results = sorted(self._results) - - def best(self) -> Optional["CharsetMatch"]: - """ - Simply return the first match. Strict equivalent to matches[0]. - """ - if not self._results: - return None - return self._results[0] - - def first(self) -> Optional["CharsetMatch"]: - """ - Redundant method, call the method best(). Kept for BC reasons. - """ - return self.best() - - -CoherenceMatch = Tuple[str, float] -CoherenceMatches = List[CoherenceMatch] - - -class CliDetectionResult: - def __init__( - self, - path: str, - encoding: Optional[str], - encoding_aliases: List[str], - alternative_encodings: List[str], - language: str, - alphabets: List[str], - has_sig_or_bom: bool, - chaos: float, - coherence: float, - unicode_path: Optional[str], - is_preferred: bool, - ): - self.path: str = path - self.unicode_path: Optional[str] = unicode_path - self.encoding: Optional[str] = encoding - self.encoding_aliases: List[str] = encoding_aliases - self.alternative_encodings: List[str] = alternative_encodings - self.language: str = language - self.alphabets: List[str] = alphabets - self.has_sig_or_bom: bool = has_sig_or_bom - self.chaos: float = chaos - self.coherence: float = coherence - self.is_preferred: bool = is_preferred - - @property - def __dict__(self) -> Dict[str, Any]: # type: ignore - return { - "path": self.path, - "encoding": self.encoding, - "encoding_aliases": self.encoding_aliases, - "alternative_encodings": self.alternative_encodings, - "language": self.language, - "alphabets": self.alphabets, - "has_sig_or_bom": self.has_sig_or_bom, - "chaos": self.chaos, - "coherence": self.coherence, - "unicode_path": self.unicode_path, - "is_preferred": self.is_preferred, - } - - def to_json(self) -> str: - return dumps(self.__dict__, ensure_ascii=True, indent=4) diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/py.typed b/venv/lib/python3.12/site-packages/charset_normalizer/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/utils.py b/venv/lib/python3.12/site-packages/charset_normalizer/utils.py deleted file mode 100644 index 859f212..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer/utils.py +++ /dev/null @@ -1,424 +0,0 @@ -try: - # WARNING: unicodedata2 support is going to be removed in 3.0 - # Python is quickly catching up. - import unicodedata2 as unicodedata -except ImportError: - import unicodedata # type: ignore[no-redef] - -import importlib -import logging -from codecs import IncrementalDecoder -from encodings.aliases import aliases -from functools import lru_cache -from re import findall -from typing import Generator, List, Optional, Set, Tuple, Union - -from _multibytecodec import MultibyteIncrementalDecoder - -from .constant import ( - ENCODING_MARKS, - IANA_SUPPORTED_SIMILAR, - RE_POSSIBLE_ENCODING_INDICATION, - UNICODE_RANGES_COMBINED, - UNICODE_SECONDARY_RANGE_KEYWORD, - UTF8_MAXIMAL_ALLOCATION, -) - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_accentuated(character: str) -> bool: - try: - description: str = unicodedata.name(character) - except ValueError: - return False - return ( - "WITH GRAVE" in description - or "WITH ACUTE" in description - or "WITH CEDILLA" in description - or "WITH DIAERESIS" in description - or "WITH CIRCUMFLEX" in description - or "WITH TILDE" in description - ) - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def remove_accent(character: str) -> str: - decomposed: str = unicodedata.decomposition(character) - if not decomposed: - return character - - codes: List[str] = decomposed.split(" ") - - return chr(int(codes[0], 16)) - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def unicode_range(character: str) -> Optional[str]: - """ - Retrieve the Unicode range official name from a single character. - """ - character_ord: int = ord(character) - - for range_name, ord_range in UNICODE_RANGES_COMBINED.items(): - if character_ord in ord_range: - return range_name - - return None - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_latin(character: str) -> bool: - try: - description: str = unicodedata.name(character) - except ValueError: - return False - return "LATIN" in description - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_ascii(character: str) -> bool: - try: - character.encode("ascii") - except UnicodeEncodeError: - return False - return True - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_punctuation(character: str) -> bool: - character_category: str = unicodedata.category(character) - - if "P" in character_category: - return True - - character_range: Optional[str] = unicode_range(character) - - if character_range is None: - return False - - return "Punctuation" in character_range - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_symbol(character: str) -> bool: - character_category: str = unicodedata.category(character) - - if "S" in character_category or "N" in character_category: - return True - - character_range: Optional[str] = unicode_range(character) - - if character_range is None: - return False - - return "Forms" in character_range - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_emoticon(character: str) -> bool: - character_range: Optional[str] = unicode_range(character) - - if character_range is None: - return False - - return "Emoticons" in character_range - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_separator(character: str) -> bool: - if character.isspace() or character in {"|", "+", ",", ";", "<", ">"}: - return True - - character_category: str = unicodedata.category(character) - - return "Z" in character_category - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_case_variable(character: str) -> bool: - return character.islower() != character.isupper() - - -def is_private_use_only(character: str) -> bool: - character_category: str = unicodedata.category(character) - - return character_category == "Co" - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_cjk(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: - return False - - return "CJK" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_hiragana(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: - return False - - return "HIRAGANA" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_katakana(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: - return False - - return "KATAKANA" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_hangul(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: - return False - - return "HANGUL" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_thai(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: - return False - - return "THAI" in character_name - - -@lru_cache(maxsize=len(UNICODE_RANGES_COMBINED)) -def is_unicode_range_secondary(range_name: str) -> bool: - return any(keyword in range_name for keyword in UNICODE_SECONDARY_RANGE_KEYWORD) - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_unprintable(character: str) -> bool: - return ( - character.isspace() is False # includes \n \t \r \v - and character.isprintable() is False - and character != "\x1A" # Why? Its the ASCII substitute character. - and character != "\ufeff" # bug discovered in Python, - # Zero Width No-Break Space located in Arabic Presentation Forms-B, Unicode 1.1 not acknowledged as space. - ) - - -def any_specified_encoding(sequence: bytes, search_zone: int = 4096) -> Optional[str]: - """ - Extract using ASCII-only decoder any specified encoding in the first n-bytes. - """ - if not isinstance(sequence, bytes): - raise TypeError - - seq_len: int = len(sequence) - - results: List[str] = findall( - RE_POSSIBLE_ENCODING_INDICATION, - sequence[: min(seq_len, search_zone)].decode("ascii", errors="ignore"), - ) - - if len(results) == 0: - return None - - for specified_encoding in results: - specified_encoding = specified_encoding.lower().replace("-", "_") - - encoding_alias: str - encoding_iana: str - - for encoding_alias, encoding_iana in aliases.items(): - if encoding_alias == specified_encoding: - return encoding_iana - if encoding_iana == specified_encoding: - return encoding_iana - - return None - - -@lru_cache(maxsize=128) -def is_multi_byte_encoding(name: str) -> bool: - """ - Verify is a specific encoding is a multi byte one based on it IANA name - """ - return name in { - "utf_8", - "utf_8_sig", - "utf_16", - "utf_16_be", - "utf_16_le", - "utf_32", - "utf_32_le", - "utf_32_be", - "utf_7", - } or issubclass( - importlib.import_module("encodings.{}".format(name)).IncrementalDecoder, - MultibyteIncrementalDecoder, - ) - - -def identify_sig_or_bom(sequence: bytes) -> Tuple[Optional[str], bytes]: - """ - Identify and extract SIG/BOM in given sequence. - """ - - for iana_encoding in ENCODING_MARKS: - marks: Union[bytes, List[bytes]] = ENCODING_MARKS[iana_encoding] - - if isinstance(marks, bytes): - marks = [marks] - - for mark in marks: - if sequence.startswith(mark): - return iana_encoding, mark - - return None, b"" - - -def should_strip_sig_or_bom(iana_encoding: str) -> bool: - return iana_encoding not in {"utf_16", "utf_32"} - - -def iana_name(cp_name: str, strict: bool = True) -> str: - cp_name = cp_name.lower().replace("-", "_") - - encoding_alias: str - encoding_iana: str - - for encoding_alias, encoding_iana in aliases.items(): - if cp_name in [encoding_alias, encoding_iana]: - return encoding_iana - - if strict: - raise ValueError("Unable to retrieve IANA for '{}'".format(cp_name)) - - return cp_name - - -def range_scan(decoded_sequence: str) -> List[str]: - ranges: Set[str] = set() - - for character in decoded_sequence: - character_range: Optional[str] = unicode_range(character) - - if character_range is None: - continue - - ranges.add(character_range) - - return list(ranges) - - -def cp_similarity(iana_name_a: str, iana_name_b: str) -> float: - - if is_multi_byte_encoding(iana_name_a) or is_multi_byte_encoding(iana_name_b): - return 0.0 - - decoder_a = importlib.import_module( - "encodings.{}".format(iana_name_a) - ).IncrementalDecoder - decoder_b = importlib.import_module( - "encodings.{}".format(iana_name_b) - ).IncrementalDecoder - - id_a: IncrementalDecoder = decoder_a(errors="ignore") - id_b: IncrementalDecoder = decoder_b(errors="ignore") - - character_match_count: int = 0 - - for i in range(255): - to_be_decoded: bytes = bytes([i]) - if id_a.decode(to_be_decoded) == id_b.decode(to_be_decoded): - character_match_count += 1 - - return character_match_count / 254 - - -def is_cp_similar(iana_name_a: str, iana_name_b: str) -> bool: - """ - Determine if two code page are at least 80% similar. IANA_SUPPORTED_SIMILAR dict was generated using - the function cp_similarity. - """ - return ( - iana_name_a in IANA_SUPPORTED_SIMILAR - and iana_name_b in IANA_SUPPORTED_SIMILAR[iana_name_a] - ) - - -def set_logging_handler( - name: str = "charset_normalizer", - level: int = logging.INFO, - format_string: str = "%(asctime)s | %(levelname)s | %(message)s", -) -> None: - - logger = logging.getLogger(name) - logger.setLevel(level) - - handler = logging.StreamHandler() - handler.setFormatter(logging.Formatter(format_string)) - logger.addHandler(handler) - - -def cut_sequence_chunks( - sequences: bytes, - encoding_iana: str, - offsets: range, - chunk_size: int, - bom_or_sig_available: bool, - strip_sig_or_bom: bool, - sig_payload: bytes, - is_multi_byte_decoder: bool, - decoded_payload: Optional[str] = None, -) -> Generator[str, None, None]: - - if decoded_payload and is_multi_byte_decoder is False: - for i in offsets: - chunk = decoded_payload[i : i + chunk_size] - if not chunk: - break - yield chunk - else: - for i in offsets: - chunk_end = i + chunk_size - if chunk_end > len(sequences) + 8: - continue - - cut_sequence = sequences[i : i + chunk_size] - - if bom_or_sig_available and strip_sig_or_bom is False: - cut_sequence = sig_payload + cut_sequence - - chunk = cut_sequence.decode( - encoding_iana, - errors="ignore" if is_multi_byte_decoder else "strict", - ) - - # multi-byte bad cutting detector and adjustment - # not the cleanest way to perform that fix but clever enough for now. - if is_multi_byte_decoder and i > 0 and sequences[i] >= 0x80: - - chunk_partial_size_chk: int = min(chunk_size, 16) - - if ( - decoded_payload - and chunk[:chunk_partial_size_chk] not in decoded_payload - ): - for j in range(i, i - 4, -1): - cut_sequence = sequences[j:chunk_end] - - if bom_or_sig_available and strip_sig_or_bom is False: - cut_sequence = sig_payload + cut_sequence - - chunk = cut_sequence.decode(encoding_iana, errors="ignore") - - if chunk[:chunk_partial_size_chk] in decoded_payload: - break - - yield chunk diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/version.py b/venv/lib/python3.12/site-packages/charset_normalizer/version.py deleted file mode 100644 index 64c0dbd..0000000 --- a/venv/lib/python3.12/site-packages/charset_normalizer/version.py +++ /dev/null @@ -1,6 +0,0 @@ -""" -Expose version -""" - -__version__ = "2.1.1" -VERSION = __version__.split(".") diff --git a/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/METADATA b/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/METADATA deleted file mode 100644 index 37ae330..0000000 --- a/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/METADATA +++ /dev/null @@ -1,82 +0,0 @@ -Metadata-Version: 2.4 -Name: click -Version: 8.2.0 -Summary: Composable command line interface toolkit -Maintainer-email: Pallets -Requires-Python: >=3.10 -Description-Content-Type: text/markdown -License-Expression: BSD-3-Clause -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Typing :: Typed -License-File: LICENSE.txt -Requires-Dist: colorama; platform_system == 'Windows' -Project-URL: Changes, https://click.palletsprojects.com/changes/ -Project-URL: Chat, https://discord.gg/pallets -Project-URL: Documentation, https://click.palletsprojects.com/ -Project-URL: Donate, https://palletsprojects.com/donate -Project-URL: Source, https://github.com/pallets/click/ - -# $ 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 - - -## A Simple Example - -```python -import click - -@click.command() -@click.option("--count", default=1, help="Number of greetings.") -@click.option("--name", prompt="Your name", help="The person to greet.") -def hello(count, name): - """Simple program that greets NAME for a total of COUNT times.""" - for _ in range(count): - click.echo(f"Hello, {name}!") - -if __name__ == '__main__': - hello() -``` - -``` -$ 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 - -## Contributing - -See our [detailed contributing documentation][contrib] for many ways to -contribute, including reporting issues, requesting features, asking or answering -questions, and making PRs. - -[contrib]: https://palletsprojects.com/contributing/ - diff --git a/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/RECORD b/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/RECORD deleted file mode 100644 index 2918bcf..0000000 --- a/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/RECORD +++ /dev/null @@ -1,38 +0,0 @@ -click-8.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -click-8.2.0.dist-info/METADATA,sha256=b1wO_9Blfi0EN6Dvjb6YKj6xj7jthLcEgTADVm3qiUc,2466 -click-8.2.0.dist-info/RECORD,, -click-8.2.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82 -click-8.2.0.dist-info/licenses/LICENSE.txt,sha256=morRBqOU6FO_4h9C9OctWSgZoigF2ZG18ydQKSkrZY0,1475 -click/__init__.py,sha256=6YyS1aeyknZ0LYweWozNZy0A9nZ_11wmYIhv3cbQrYo,4473 -click/__pycache__/__init__.cpython-312.pyc,, -click/__pycache__/_compat.cpython-312.pyc,, -click/__pycache__/_termui_impl.cpython-312.pyc,, -click/__pycache__/_textwrap.cpython-312.pyc,, -click/__pycache__/_winconsole.cpython-312.pyc,, -click/__pycache__/core.cpython-312.pyc,, -click/__pycache__/decorators.cpython-312.pyc,, -click/__pycache__/exceptions.cpython-312.pyc,, -click/__pycache__/formatting.cpython-312.pyc,, -click/__pycache__/globals.cpython-312.pyc,, -click/__pycache__/parser.cpython-312.pyc,, -click/__pycache__/shell_completion.cpython-312.pyc,, -click/__pycache__/termui.cpython-312.pyc,, -click/__pycache__/testing.cpython-312.pyc,, -click/__pycache__/types.cpython-312.pyc,, -click/__pycache__/utils.cpython-312.pyc,, -click/_compat.py,sha256=v3xBZkFbvA1BXPRkFfBJc6-pIwPI7345m-kQEnpVAs4,18693 -click/_termui_impl.py,sha256=ASXhLi9IQIc0Js9KQSS-3-SLZcPet3VqysBf9WgbbpI,26712 -click/_textwrap.py,sha256=BOae0RQ6vg3FkNgSJyOoGzG1meGMxJ_ukWVZKx_v-0o,1400 -click/_winconsole.py,sha256=6hzKWpPTXRv-v9SuH3-SwBpuMl3W9Dgox5QHPJFc7e4,8488 -click/core.py,sha256=yI_kKz2ewr2hFHnovdXUXZ5lFr88vFUkShCo7qrHLZo,117338 -click/decorators.py,sha256=5P7abhJtAQYp_KHgjUvhMv464ERwOzrv2enNknlwHyQ,18461 -click/exceptions.py,sha256=1rdtXgHJ1b3OjGkN-UpXB9t_HCBihJvh_DtpmLmwn9s,9891 -click/formatting.py,sha256=Bhqx4QXdKQ9W4WKknIwj5KPKFmtduGOuGq1yw_THLZ8,9726 -click/globals.py,sha256=gM-Nh6A4M0HB_SgkaF5M4ncGGMDHc_flHXu9_oh4GEU,1923 -click/parser.py,sha256=nU1Ah2p11q29ul1vNdU9swPo_PUuKrxU6YXToi71q1c,18979 -click/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -click/shell_completion.py,sha256=-WBu9SXYo85hNdO1syMu4OgY1gA9F_yhY0iE9eSogMs,19857 -click/termui.py,sha256=vAYrKC2a7f_NfEIhAThEVYfa__ib5XQbTSCGtJlABRA,30847 -click/testing.py,sha256=dqC7F_EYJ-z84bcIVF5NTN5fP3dAuF7dq6hYace6PcQ,18487 -click/types.py,sha256=KBTRxN28cR1VZ5mb9iJX98MQSw_p9SGzljqfEI8z5Tw,38389 -click/utils.py,sha256=b1Mm-usEDBHtEwcPltPIn3zSK4nw2KTp5GC7_oSTlLo,20245 diff --git a/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/WHEEL b/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/WHEEL deleted file mode 100644 index d8b9936..0000000 --- a/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/WHEEL +++ /dev/null @@ -1,4 +0,0 @@ -Wheel-Version: 1.0 -Generator: flit 3.12.0 -Root-Is-Purelib: true -Tag: py3-none-any diff --git a/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/licenses/LICENSE.txt b/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/licenses/LICENSE.txt deleted file mode 100644 index d12a849..0000000 --- a/venv/lib/python3.12/site-packages/click-8.2.0.dist-info/licenses/LICENSE.txt +++ /dev/null @@ -1,28 +0,0 @@ -Copyright 2014 Pallets - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/lib/python3.12/site-packages/click/__init__.py b/venv/lib/python3.12/site-packages/click/__init__.py deleted file mode 100644 index 1aa547c..0000000 --- a/venv/lib/python3.12/site-packages/click/__init__.py +++ /dev/null @@ -1,123 +0,0 @@ -""" -Click is a simple Python module inspired by the stdlib optparse to make -writing command line scripts fun. Unlike other modules, it's based -around a simple API that does not come with too much magic and is -composable. -""" - -from __future__ import annotations - -from .core import Argument as Argument -from .core import Command as Command -from .core import CommandCollection as CommandCollection -from .core import Context as Context -from .core import Group as Group -from .core import Option as Option -from .core import Parameter as Parameter -from .decorators import argument as argument -from .decorators import command as command -from .decorators import confirmation_option as confirmation_option -from .decorators import group as group -from .decorators import help_option as help_option -from .decorators import make_pass_decorator as make_pass_decorator -from .decorators import option as option -from .decorators import pass_context as pass_context -from .decorators import pass_obj as pass_obj -from .decorators import password_option as password_option -from .decorators import version_option as version_option -from .exceptions import Abort as Abort -from .exceptions import BadArgumentUsage as BadArgumentUsage -from .exceptions import BadOptionUsage as BadOptionUsage -from .exceptions import BadParameter as BadParameter -from .exceptions import ClickException as ClickException -from .exceptions import FileError as FileError -from .exceptions import MissingParameter as MissingParameter -from .exceptions import NoSuchOption as NoSuchOption -from .exceptions import UsageError as UsageError -from .formatting import HelpFormatter as HelpFormatter -from .formatting import wrap_text as wrap_text -from .globals import get_current_context as get_current_context -from .termui import clear as clear -from .termui import confirm as confirm -from .termui import echo_via_pager as echo_via_pager -from .termui import edit as edit -from .termui import getchar as getchar -from .termui import launch as launch -from .termui import pause as pause -from .termui import progressbar as progressbar -from .termui import prompt as prompt -from .termui import secho as secho -from .termui import style as style -from .termui import unstyle as unstyle -from .types import BOOL as BOOL -from .types import Choice as Choice -from .types import DateTime as DateTime -from .types import File as File -from .types import FLOAT as FLOAT -from .types import FloatRange as FloatRange -from .types import INT as INT -from .types import IntRange as IntRange -from .types import ParamType as ParamType -from .types import Path as Path -from .types import STRING as STRING -from .types import Tuple as Tuple -from .types import UNPROCESSED as UNPROCESSED -from .types import UUID as UUID -from .utils import echo as echo -from .utils import format_filename as format_filename -from .utils import get_app_dir as get_app_dir -from .utils import get_binary_stream as get_binary_stream -from .utils import get_text_stream as get_text_stream -from .utils import open_file as open_file - - -def __getattr__(name: str) -> object: - import warnings - - if name == "BaseCommand": - from .core import _BaseCommand - - warnings.warn( - "'BaseCommand' is deprecated and will be removed in Click 9.0. Use" - " 'Command' instead.", - DeprecationWarning, - stacklevel=2, - ) - return _BaseCommand - - if name == "MultiCommand": - from .core import _MultiCommand - - warnings.warn( - "'MultiCommand' is deprecated and will be removed in Click 9.0. Use" - " 'Group' instead.", - DeprecationWarning, - stacklevel=2, - ) - return _MultiCommand - - if name == "OptionParser": - from .parser import _OptionParser - - warnings.warn( - "'OptionParser' is deprecated and will be removed in Click 9.0. The" - " old parser is available in 'optparse'.", - DeprecationWarning, - stacklevel=2, - ) - return _OptionParser - - if name == "__version__": - import importlib.metadata - import warnings - - warnings.warn( - "The '__version__' attribute is deprecated and will be removed in" - " Click 9.1. Use feature detection or" - " 'importlib.metadata.version(\"click\")' instead.", - DeprecationWarning, - stacklevel=2, - ) - return importlib.metadata.version("click") - - raise AttributeError(name) diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index fa64dd5b536395b73300e9c1b7c876c779142384..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4061 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 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/_compat.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/_compat.cpython-312.pyc deleted file mode 100644 index 7470776f90a3393ef47e0de47402be500989d760..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24183 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 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/_termui_impl.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/_termui_impl.cpython-312.pyc deleted file mode 100644 index e975c4a572415197c922290190924768c2ecd1cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31519 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 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/_textwrap.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/_textwrap.cpython-312.pyc deleted file mode 100644 index 88b3e8f5c7164c49dda380ee44026e7325ebb31d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2414 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 KCRzL`nEwren-(kp diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/exceptions.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/exceptions.cpython-312.pyc deleted file mode 100644 index 19f8eba7d6fd044c84a4b6d4521c755c81e4a73d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14765 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 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/formatting.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/formatting.cpython-312.pyc deleted file mode 100644 index 5dfa20bba5d983874c2de8feed4884effd179e7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13661 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 F{{andgPQ;V diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/globals.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/globals.cpython-312.pyc deleted file mode 100644 index c4c77b9aee5e544e6c4c58fcf28be0cda6937c0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2954 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 URXe?R>|*Z~q5Zyq-)yn|Hw|*Jg#Z8m diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/termui.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/termui.cpython-312.pyc deleted file mode 100644 index 7f51473d69294c08c0945b17e5ecfbb4074ced15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34512 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 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/testing.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/testing.cpython-312.pyc deleted file mode 100644 index 87a5117856c3363d6707061fa224fe9866a4ed2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26406 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 F`v2+>WoiHb diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/types.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/types.cpython-312.pyc deleted file mode 100644 index 6aa128af54dfae9a8c8cd7d69a31a57b9da20161..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48948 zcmeIb3w&GGnJ0EHUIYk`011F^QV{i|L{V=`q$OEznYK(hlI)D>Xi10wB}gP7Ux1Pb zlVdsdG*lixlgXr_$DUfAamUg)Gm$&fwWm96>|~mCXSQ8XP(lV#cA2iT+v(%?qfI(- z)NQx_?>qMe5R{WmGxPgxdnMj`aPGP1`JL~4uk)S1D=RCNaDC}`^Vv_nDM|l^erQ*T z2*~qKS|#b46pDiaoB@!b$7KaMN7|Z(wbpBl`5`FZFe2YDI2ICZ0K&_@5&Kw>~7?+cc5u-S@$wo zvQRF2jjy#(#P^mg!rjX)(h(_A@uC!|e9NN7HFKOFae-*_Tj)8ux>s;)5V2LJ*p(bx zjo2Df>?)3}MQoiZb~VS=Beo&hjGA?coXz*>@>=|S%O>Kw*YX#Q_@c>_PYcH`Lu|+t zyN+X*BeprZPOtTPj$MJ+m8RHMj$MV=)zS6QR=vCp9KQzfYfY)!IJO0`>yWxlPrZ@j z*CW2wRF6#@y8*Fnrr6CKyAiRQOtD)c4@Ne>XzSj}Z@1v>R@2*U9J>v%+oLP=7HyC0 zitLU&@S?r@0gUgex76p0X z6h+6?@ZS>*BBHVf5j|n$%*CE)ye|=n#m^wtowyK<_aswFG(31y&UyBSBaerb@L)6* zRq)!|pHK$Fsh2*r(G9{v@KlwshVF3E)nMR((0q&iZL;dMo7B3`5^ zjnqbbc)E=gB7}4mi1$S5B9(ZSQS73;>LY&SRlexkhDZS4c!x_{8grsssO91B0SO$B zUQnXRXgrk+rOrk}Da3~o{h@H^f;IqcA#_oU#y1%X$0MP>MEqh@LHdi-bIH;Wu6`vk z$lv!R1_vq8KrD`Yl+feDsk4cAC>Bp8)c1-K?MrbvZKeF}$wVkdV>5_KpxnNpWQsCF zMOs72q0@Z>;iM?olqwY(h=!BM=4@1ypBNZOTmmq4h&(r-PAAcvj&Lfabo3I?^oG=& z5EDB+l!}H1QBvr1G?a{{+Bg^b>Hy#f`Jkn!bTSo=_i=ydeRC<6IveWk?MlR>y}cp} zC7K#i;+zBZh4!)yHHalc_#YksU`K|HW=12S)5D=iv_CvFU@E%<0DrclSM6XmclB2Y zvxDj-Iz3dhJE?SPL(zP~eSOgjDgFDiVRW_<)$2wL>`U-9z9A)a>1;Hv z6+jKY01&&7(sPN$FAS+&cR1}!wH+WZc`~d#eL9gCIF<9nl0AUM3yEY5ID|-pwAYjf z@OUa`4=b_MaL$UJ&DjV8t3glM2oTl+dP@zTQ`cNhuinnt&A&uAB5PknEVM$7$|G{obk@RjDU}A2 zq!B4%)7E&UY(zTeTwKnmC2kp!NAWjeiP&GYoRC@^>3@493{X%2`~v9$VPZ@HEPaWg z0f22ZG?a|?4-JIy8snZqZ->rA<52}`LHvw9JV>N$=nwbN$VC!;Jm9=qsFR*R^@$`V zs0#7}vA*+dD(-GeC3>j%o=B`O)ytr+gn@F9oS+n-6H~;rr(6yk?WDOe)Q3q3Xw_@b z))t~~Q2%fw5{-0pgm$)V(%&jU^oK$Nk}K2K2||hr^>~XVSIS`9LsLLR*>g7fk#qL+ z5Ulj{)lZ5~>kNtvOpVI?%5)QW=zA5|AOGuJ<0@cs4N@-FPk$P7DID z(y@(ba}r1Zkrx4D8wX;iH(p?zxwUQcmW>3x8!m+V&WF!LlNq9sCvi>a@&z3o>zF0K@#9^QZ4Wski zND=bq$`V?Pr3istj76}BV&L1lZb~<;+%RQ5GF4h})1X8&$4!KinsGX4w8#|w1$;D5 zF#Npqt5rI6>;i!+dTBT`7&~(|6%uP#2-KPq&YSb$(}^Kkjt67OqBA3(`tum4PCsEcp@ z8eWuWY7K>xp-a($0X+4>xnKgdr59~MQH5xc4i95hPwK0)o=bueJFSYq#JqwtCNWUv zNi;@ZuhrFCUCH$|n{vk@pe@^gnNS}(HykqvARw(F!5I(%*LRj%RCG1R*Sw1BRqPZ5 zgy?9{0yGvVO+^LKNGp$wwrcc;V*|Y*rpUs27MNjuN(^v*5hEjj$}}V$Vn%WS9ZVvM zvJ7HI5Ilrd)U^DCNUH7**yPs0Ja0AY4 zm3+Z5kC=6YakLB5OU$~x2+*v%EGI1xOvpu1y;O_@dP`jtFkdaC#kNS3*oBG|;FL zf56pzNY8|-nGVo&d-{M5@14Myr&@dpVXs_iPtRZ?GBiM(pQoqi8K78|4=m~F0gKzy zqf}8kZ%>a&Hj3D4Duhs~vXX8a=(d?|+vrAXuhK!c-E`YaH>Q_~z-3e;SXJUz2@fVe z#qIZ`k1SrhbFNuhz5dG4Ol5P{wr-}e>B^z8hqAV&Ifvvff1wlDcH7R3ttL~qDQnv? zZ}Z!C&TW!bteI(Qo^zGhx6XP4b9OwD+!vZFp^#H5Z{T-xrBbPP-i^5VO426B`aUeGThLU76R&A1x^TN2ksZ4q0<@}f@KR5rstm zQrhDEyBBZ1WbR>GM22A58nKT_{WAL5(`{QMe0D^vNP`rY_lTX>(OM4w)f?gnZnj!XsCW&`WSTr&-!*E(PB9CMAY zo^saCcxy7w8U~U)S&su>a+|-8z%?i)mXh?mr4HK(X@!*12W=%55E);kh~VREM3;b$ z%JJn$OC|7yw9umhENGD{xFUc+P3Ac&KPAO&m!!+qr=&~N&os9Ru6)UpEIkF;llH|; zYggJnlr>jL3w@p5g^{>cyR(yKbTl=x(aJ9@?tYz(YYw9Nty;3@1|MaeZ z*~gMx);?3y_?qWs&-KsWh-GVbe%(H2MdUr8-Li_8I)9 z$&(}r(5Ej#_GPixe&V#+Yv)Sc_7+~6=t)ZxJ!xse6HC)C?05?7Mw#^CPrp<+l;<}g zDu4A@gv;!-mOufh;bk{K1hiqnxSFw zmok8?^M;v5m;1XLy=kT#Mq~r!X=qAmGLRlYHeI7wLV@6PRgQ?I`-n|LprjHyA*H<9 zI|E@dYISPyK$mA^DdpCFpYv!TGe=0U7Lm&Wc1iM}Ly+6p}Qk#QUq*vFkQQ4s&-4ZcH6jP#$P*m;_JJy0tENTGoe*)dS3V3crqK>_OczcG-dMX zf=g;xiv_`y;Pba)+0foUuwyNtBy%o$Nh?ER^J_<6K6<12R!g>F*TkV2e+}OHQR=-U z@hPuXbV&bA^Zs?#_ZutrZMM9>xqg3z{kt9+G2ivc6s`zTxP@Z!$RK>Y80$DroIKvy zb)+c5Q3wyDYYMwmLo+|aTOG|*o6wB%4BjXT-3pKh5nc-2{w4nMkw}HTju#7h5)z>& zArU+oiQu`gTDA*Phx5ooBADKE$@4dG&!dM`0}+^Juz`kHKO*IzfXU*_%T%%rRI&pp zeCpeZh#hZBB9##b))r^PA1T4p6$wO~c$O|&gMtwk;@y#|NGYBk7>2m-jK zUB++7KUsLszQ*b5<{$rxFC!-So)~2$d;3-BGXGTh-c06eUcVI zsXPR85H3JSmWH4ap_GX@^j1g?NhZ|IC^7+ofLb862Zk(ArIJubErdP_4_pclliZW^ zZe-d5aVjiRVrODP4@NaaR-!LZeVXJaqPk`pQdkI)W9ev*NYTr(v_Z&bAyVv5XtLzN z@P!L3T1JoX3X$ZD&>Ssek*N~xhk*z8`-a4YR8nL|;_b^};vv=6Xu_{>GTH;<9B5P^ z6YoG4EO+jQdWTgFgW>bqC_?In#9Sz~0K=ty))qP_3{6-T2Ti$Fh#{ovI~#_fme7&s zsqPZ-4ZXc+P;W0ZK59!4Cc}+*;*v4=ZKQZ2+YRX2StHK!XY_eEK5W#9h7BZRTWEh2 z;=5>Q7(j9<%6X9{5@I!AW=N%3W~c%VWPBJ;h#dhJLK>>*88V!xJ!UkID>{yoj61uu@9SHB?#E1jd2v)}@MYti{zYnP%o2kZq| zDhR$nk5&E&;)?LIezm1$M%GEK-H!B&7};ejUK@FN1dMFUl(S)G^}6ZR?Nh7U$6OGe zO*vPXIa`%Pvzp|nu* z|AytOH8y-R3cH&=j1q+|kqQiU#gY!dcO0UDUhO&{1rdMVgF~a4T29%bjB;jB(=Tj#dVV9F6>?e7DD9J{7p-T$t2T5^Q zNem&mYSp8cq~Xq1G9KdM^cvB+LTW0ZLqneWf?|l{!Ae{~U$O`nf*gX3oUbr*ZE~=j zmy+jAj-0xh+ATbs?0-K8z8fFgnK#H!6O!b<=~3GdYPS*)sp zJ`l+b_&5}X`c=(?%`MKtTnwKM#bZz!ECP5FAn(_$FbOh~8sMrr4j59Mhh4G`96cmS z6lRSu=@E7!rZrbzabcyPnw&r<%@hsc@&3dBt!+%2n5ytu3m0@97txtHTQoj2n6n+i zoo&j5>?u&Jio7=DoLZrprs)c@;W?D^P?MsO9zn7Z5Yns`l9n<2N>{5B!)UtNy)-Ly zYqB+)Z&m$u;5)T{ReNXkf$@vip8fi>|HA*llYdt~=9zVuk3BS*oL;tLYT1s=vI8^q zP1E&Tr|P%fI-0HDH+FQ^>!0>E-}W}o)UTPY-!xUfDOBwMWpRQAdh|HGGXYwDzMtUS7TQm{B|Wy-rJMJe45gjh}ibV&l0!b&6XzM8_eJRR$#q`na`I0%eh)B|=hnyTslC+2B zATBWtN$8cXRHvcI=5HI#K;niWZ*%*m-JvOW==#IA-L1EtnBIQm_Vy#QhadUp1Md&~ z+-g}?KC^58?|WW7d42UOU_P5U-Z`8H1bwom!C|G>9nj#7*ro0IT>D4@RSwY4v= z&8#^1#>qENy?*M}L)lda@GDz)=<1`hb&d3LX8Ee=uJn&TIKE->nT&UN#<~2LA2*^xzx>!ERXirMO6*U!9@uL8?$*i! zJDqupC-oVSggpOs1k8)4VL)As48xQmd1b+cDN{`1W}Y(of@*xKO&M)kd`p+mVZpPf z4O@xFge6*tATSPM2dqY1;|+U9LZQQKhku4` z=7iWow<`tygBgCSK>(4B9Fg;|dxLRnO2{ZEBkZo~V@6wF@Kr(uf&^v+R6`_<$Dq9} z0AXQMLJ9Qha87{FW=+J>tbStvsPZL@0mI=UzH_U_Lw{3#RFawFI#n)7U%+}kN;?%S zSFOBi*hb|4T)rmD(pP;pXzl*YdP%6`Sq9i*%URks<(yg#a-~MAl$TI8)8c6L6-Kr9 zT)Suk!{rOgp7e4R;i{`b+pYoF9StP+wCPE{KtR3__WUDFvX<+U6!;|M` z{EgQeZu>VZ*rkfvkF0p{OD^e!Ks5~1gnXHn1h6yu^3a6^gD5Vsrr1!8RL;(pdbzR_ zsl)}CpwP~WM4a`BxjLG5swtbgkZG3FONg;6jkarSkLUwkq`g-xI3S&*ba{UJAE(An zP-EG6ucl$Tx^=3$_12+xlbPz)Z1sUL&rIX;>Bj9-joaT{k!jqXZQPS_*3H@6uJXJ7 z>Urv%+15SNtp}%C4`y2rFW3=**g*N5WGgHGbfHx8HGVAFUF9<#AL%G(d;zga-HN{F z&-gZGeTQbM>WRB5k;beremj2d(dS$hhY%4?4{_i=@~O zT+}2rrK5(Fj%t=%3Uq`~O#7@M28}b*&;lq*H!8qa#2T@sbSe?$0JaM+?K^GipQDx* zT!bpj=mCq3BYpJd06`*dXUwO`1{` zWm{j;`yDfdzLd>u8dNN#4)L>(P&$`dC@ynK&vlUZQ$wGq3MGAe*vKu7cWye zD|o}4jTDro6^kG`XT=s#AyImh(hGA=W9}(`j96{{tEAR{g(!XIFFnD|(quS|w3rL! zQg!{c*hK6N>l+7etejrAe`?+S_mY`)`?KpFonCi*YTfbdx|7+^6WOXK$J}?l)ia*8 zGoDR%J>GHKHP3`6>uH=XvH41W;gsAJS67b@U4Q!B^<%5ErHAKSHrEk(u~3eH6QC;3 zZ$p59*}TE57`vl^5lCwbk<%?OXebf0d+j~B1;)NM!s()`3Y5P>7h^~gg(CPOwZER* zKT}cjYG5+*+Q7>L+1mA)n${cpGTyd~vu*LBO@qP}pGDwHR;oJo;$vU_DE8tTi>_he zfmuN_x8Txd6}Swk81JQc#;oeHZ8w(YQAfP~snZg z(vr~<3)HV8C0e(F|M4*YQ=)S!CE!o&;d=BE8F|4V7veJ^$7P8Z^a9u}ChU=EIvU2F zi$nsN^q+PD{HJF6N}RbuC@pX8C-COA|1bikwZDeeeejRy)WYkkj*XM@SHWYd^gvx6 zJ%D{=usub;Cux@mET;Yx+2rItg)Bc+>Q+zz%AX-7y;fcS^6hPlkO5a|GBn^5K?dBe zdSvo*w<_Lgc)Q`sVZ*2u2fRZ{wdus@{&MKFH-2cxIq%uOkrlL*Hef_k-y2g zfyy+_K3Ad=p~`!B&w~JBuNQwR!rzPNbg<}94^ykYfcKzyKB+A1SJ#zKPZ0(Ba+Lo!>7U06MM}Ay&oZ^p<9hqIf<%iy_ z*TWO#lh6FXxBRwuYsR_tmw2!_!TYt|ed}#4@<|YGw6vug+0K~>KC-LQO-!C7%kxu0 zre~ww&1_<&oWVE3!fFjdSm?N0X#Vi~^m5MbF`+jo$PN3l$cow_7FIuflmE5o{v(v} zeeAVqj4&v?L?5I~cue<0x4)+s1aYt@`^XZ2QFW{23Bc0GA$7^ejQ<@}s=t(&*w_x#FAd&B%%pS^j0 zrPE$I7pStAtLD??s`+#|n;js2)>TdB)8+G8r9rK(ke+ptQAcwmcQgDpatutiv8dr+?0 zCU}Ky0^1h2L0tH9&V$g%pM(RD@S`aFBo;U=Lf99m92It#Af2Wo$07*vcrQhf?+|^z zib`oxEcrZcK(gI28~9YbBB zn;}A(K_B(%J==!)4zVe^xYyXOqjm}`1!!wU3bqwuM;vWpyHCfnr3h^ug|9Vm1jax^xNLv zHLIT5uxfC_s>mAZW7F@Gs~+xH^;pNM6ZGP> zYl9oKd=j#Ubb9?32uE5=aobS}TX}W!C=%!wVJZB{^ZOC_4J{35yEkm*siNQ-4Ko6Y zSjvJRsMp_YL-1{#uqiZ#&$l5k8N*XUw2Ov|8?_e!!R{0zU%|#ue->PCsoevv&B|Px ztxLIvGzy8hl}X$%A}pxob}g3C(o&cX=ZzZ&-Qu9|yE4?g%}utu76t+f8JywaLy?d!rz z9_{1E+pL2qYV8XHkP{>m)_VkBtJgv46qIM9HoPs-;*2NyRF@2c1-4(2zgjb5Cl%QV z$ws0rszw>IeDoJ_7 zG2(#MM1?oAD-aoi-4=V7Lc1c;8w_DlBmqS|iISMgH?LLC3aka$(#BsQc`~G?Pmbz> zCW148L)@%&XXMKf3R#hgsmJ`uJM?om-AKZryh}IwT2lZr*fKp#0LQO#E)`azk(^sa zu%!Q6to&PxPtraemetSxTLNF2{Dxie@7!^(W~1HNs=8|f69YiDuH|EgXCSGq**sOV z`PQm;tFkqF$2w=dHB;V|Gu5Hn*y{%w({gx0F^jOi-FmY%8`_br+BxQ)ae7{IU3J~{ z1ZI2>&G`1+^}*DIv^QDba)_0-Ki>A%40;ttZ7DZ8WGAbnhDc1VSWSn66#CO;p>sx{t~_ zLTSw`2#+OIX6|f`BgfNiM=n4L#DC@y3r`rUz z=rIJC^{52vu@=_iR}L=N?Do=6%CW6w9y=K}%sXuMnmJDp33*2B zq^nK-vS{iZz0Tg3GYoFsXoxphlq6 zqEbYt1l2`39}$^%hLIq3je%ZNu{PUH!@a<>YO|>`fL4UoC+9ZB0tSDGYV#T=5Xhg< zPliSYsTTY!kWjBhRJx(q2xxl_eoV0RPml~to5KZtiobf=ziP_A>UuQmZ_RjG#llvi zYg+C?KU?`=*0*cgcVNnQV5V-_jg#Mg>gH3>!d4uVp@yxf1PfeIHRJQc?2Xhe`1W3s zj8u5j*gk1rmG%9gjJw$H(_$~2B?Q`nBi~3NQkp3%==KBcHbb@EfM36d9jWWEiFwZE zQF&x~5}4DIz#LD2`GOr!krQQ79KwGWZ_GTe0oRcdBWw;uoY==|$39lqefF`I@;fW6 z_w5mP#0Eauq4Ucg!7npE>;ffPmh-8jb(}1#X|D9qI-y+zWjqHSL4ZhjGuaNmc4gD=H}4Lec~VO74=&967@P>;ZB1v-+;IVVCr#_)!zWqijZf z1na;KsQP_;q+dE>_)A26COc5nB_5`=xtrCj5$n`T(F4U%0Ah7&Nl!{NTM<S7hy-oBu4b`uq~UTV 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 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/utils.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/utils.cpython-312.pyc deleted file mode 100644 index 3ee398f5f193b21739c969ab459f5836d55e5430..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24868 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 diff --git a/venv/lib/python3.12/site-packages/click/_compat.py b/venv/lib/python3.12/site-packages/click/_compat.py deleted file mode 100644 index f2726b9..0000000 --- a/venv/lib/python3.12/site-packages/click/_compat.py +++ /dev/null @@ -1,622 +0,0 @@ -from __future__ import annotations - -import codecs -import collections.abc as cabc -import io -import os -import re -import sys -import typing as t -from types import TracebackType -from weakref import WeakKeyDictionary - -CYGWIN = sys.platform.startswith("cygwin") -WIN = sys.platform.startswith("win") -auto_wrap_for_ansi: t.Callable[[t.TextIO], t.TextIO] | None = None -_ansi_re = re.compile(r"\033\[[;?0-9]*[a-zA-Z]") - - -def _make_text_stream( - stream: t.BinaryIO, - encoding: str | None, - errors: str | None, - force_readable: bool = False, - force_writable: bool = False, -) -> t.TextIO: - if encoding is None: - encoding = get_best_encoding(stream) - if errors is None: - errors = "replace" - return _NonClosingTextIOWrapper( - stream, - encoding, - errors, - line_buffering=True, - force_readable=force_readable, - force_writable=force_writable, - ) - - -def is_ascii_encoding(encoding: str) -> bool: - """Checks if a given encoding is ascii.""" - try: - return codecs.lookup(encoding).name == "ascii" - except LookupError: - return False - - -def get_best_encoding(stream: t.IO[t.Any]) -> str: - """Returns the default stream encoding if not found.""" - rv = getattr(stream, "encoding", None) or sys.getdefaultencoding() - if is_ascii_encoding(rv): - return "utf-8" - return rv - - -class _NonClosingTextIOWrapper(io.TextIOWrapper): - def __init__( - self, - stream: t.BinaryIO, - encoding: str | None, - errors: str | None, - force_readable: bool = False, - force_writable: bool = False, - **extra: t.Any, - ) -> None: - self._stream = stream = t.cast( - t.BinaryIO, _FixupStream(stream, force_readable, force_writable) - ) - super().__init__(stream, encoding, errors, **extra) - - def __del__(self) -> None: - try: - self.detach() - except Exception: - pass - - def isatty(self) -> bool: - # https://bitbucket.org/pypy/pypy/issue/1803 - return self._stream.isatty() - - -class _FixupStream: - """The new io interface needs more from streams than streams - traditionally implement. As such, this fix-up code is necessary in - some circumstances. - - The forcing of readable and writable flags are there because some tools - put badly patched objects on sys (one such offender are certain version - of jupyter notebook). - """ - - def __init__( - self, - stream: t.BinaryIO, - force_readable: bool = False, - force_writable: bool = False, - ): - self._stream = stream - self._force_readable = force_readable - self._force_writable = force_writable - - def __getattr__(self, name: str) -> t.Any: - return getattr(self._stream, name) - - def read1(self, size: int) -> bytes: - f = getattr(self._stream, "read1", None) - - if f is not None: - return t.cast(bytes, f(size)) - - return self._stream.read(size) - - def readable(self) -> bool: - if self._force_readable: - return True - x = getattr(self._stream, "readable", None) - if x is not None: - return t.cast(bool, x()) - try: - self._stream.read(0) - except Exception: - return False - return True - - def writable(self) -> bool: - if self._force_writable: - return True - x = getattr(self._stream, "writable", None) - if x is not None: - return t.cast(bool, x()) - try: - self._stream.write(b"") - except Exception: - try: - self._stream.write(b"") - except Exception: - return False - return True - - def seekable(self) -> bool: - x = getattr(self._stream, "seekable", None) - if x is not None: - return t.cast(bool, x()) - try: - self._stream.seek(self._stream.tell()) - except Exception: - return False - return True - - -def _is_binary_reader(stream: t.IO[t.Any], default: bool = False) -> bool: - try: - return isinstance(stream.read(0), bytes) - except Exception: - return default - # This happens in some cases where the stream was already - # closed. In this case, we assume the default. - - -def _is_binary_writer(stream: t.IO[t.Any], default: bool = False) -> bool: - try: - stream.write(b"") - except Exception: - try: - stream.write("") - return False - except Exception: - pass - return default - return True - - -def _find_binary_reader(stream: t.IO[t.Any]) -> t.BinaryIO | None: - # We need to figure out if the given stream is already binary. - # This can happen because the official docs recommend detaching - # the streams to get binary streams. Some code might do this, so - # we need to deal with this case explicitly. - if _is_binary_reader(stream, False): - return t.cast(t.BinaryIO, stream) - - buf = getattr(stream, "buffer", None) - - # Same situation here; this time we assume that the buffer is - # actually binary in case it's closed. - if buf is not None and _is_binary_reader(buf, True): - return t.cast(t.BinaryIO, buf) - - return None - - -def _find_binary_writer(stream: t.IO[t.Any]) -> t.BinaryIO | None: - # We need to figure out if the given stream is already binary. - # This can happen because the official docs recommend detaching - # the streams to get binary streams. Some code might do this, so - # we need to deal with this case explicitly. - if _is_binary_writer(stream, False): - return t.cast(t.BinaryIO, stream) - - buf = getattr(stream, "buffer", None) - - # Same situation here; this time we assume that the buffer is - # actually binary in case it's closed. - if buf is not None and _is_binary_writer(buf, True): - return t.cast(t.BinaryIO, buf) - - return None - - -def _stream_is_misconfigured(stream: t.TextIO) -> bool: - """A stream is misconfigured if its encoding is ASCII.""" - # If the stream does not have an encoding set, we assume it's set - # to ASCII. This appears to happen in certain unittest - # environments. It's not quite clear what the correct behavior is - # but this at least will force Click to recover somehow. - return is_ascii_encoding(getattr(stream, "encoding", None) or "ascii") - - -def _is_compat_stream_attr(stream: t.TextIO, attr: str, value: str | None) -> bool: - """A stream attribute is compatible if it is equal to the - desired value or the desired value is unset and the attribute - has a value. - """ - stream_value = getattr(stream, attr, None) - return stream_value == value or (value is None and stream_value is not None) - - -def _is_compatible_text_stream( - stream: t.TextIO, encoding: str | None, errors: str | None -) -> bool: - """Check if a stream's encoding and errors attributes are - compatible with the desired values. - """ - return _is_compat_stream_attr( - stream, "encoding", encoding - ) and _is_compat_stream_attr(stream, "errors", errors) - - -def _force_correct_text_stream( - text_stream: t.IO[t.Any], - encoding: str | None, - errors: str | None, - is_binary: t.Callable[[t.IO[t.Any], bool], bool], - find_binary: t.Callable[[t.IO[t.Any]], t.BinaryIO | None], - force_readable: bool = False, - force_writable: bool = False, -) -> t.TextIO: - if is_binary(text_stream, False): - binary_reader = t.cast(t.BinaryIO, text_stream) - else: - text_stream = t.cast(t.TextIO, text_stream) - # If the stream looks compatible, and won't default to a - # misconfigured ascii encoding, return it as-is. - if _is_compatible_text_stream(text_stream, encoding, errors) and not ( - encoding is None and _stream_is_misconfigured(text_stream) - ): - return text_stream - - # Otherwise, get the underlying binary reader. - possible_binary_reader = find_binary(text_stream) - - # If that's not possible, silently use the original reader - # and get mojibake instead of exceptions. - if possible_binary_reader is None: - return text_stream - - binary_reader = possible_binary_reader - - # Default errors to replace instead of strict in order to get - # something that works. - if errors is None: - errors = "replace" - - # Wrap the binary stream in a text stream with the correct - # encoding parameters. - return _make_text_stream( - binary_reader, - encoding, - errors, - force_readable=force_readable, - force_writable=force_writable, - ) - - -def _force_correct_text_reader( - text_reader: t.IO[t.Any], - encoding: str | None, - errors: str | None, - force_readable: bool = False, -) -> t.TextIO: - return _force_correct_text_stream( - text_reader, - encoding, - errors, - _is_binary_reader, - _find_binary_reader, - force_readable=force_readable, - ) - - -def _force_correct_text_writer( - text_writer: t.IO[t.Any], - encoding: str | None, - errors: str | None, - force_writable: bool = False, -) -> t.TextIO: - return _force_correct_text_stream( - text_writer, - encoding, - errors, - _is_binary_writer, - _find_binary_writer, - force_writable=force_writable, - ) - - -def get_binary_stdin() -> t.BinaryIO: - reader = _find_binary_reader(sys.stdin) - if reader is None: - raise RuntimeError("Was not able to determine binary stream for sys.stdin.") - return reader - - -def get_binary_stdout() -> t.BinaryIO: - writer = _find_binary_writer(sys.stdout) - if writer is None: - raise RuntimeError("Was not able to determine binary stream for sys.stdout.") - return writer - - -def get_binary_stderr() -> t.BinaryIO: - writer = _find_binary_writer(sys.stderr) - if writer is None: - raise RuntimeError("Was not able to determine binary stream for sys.stderr.") - return writer - - -def get_text_stdin(encoding: str | None = None, errors: str | None = None) -> t.TextIO: - rv = _get_windows_console_stream(sys.stdin, encoding, errors) - if rv is not None: - return rv - return _force_correct_text_reader(sys.stdin, encoding, errors, force_readable=True) - - -def get_text_stdout(encoding: str | None = None, errors: str | None = None) -> t.TextIO: - rv = _get_windows_console_stream(sys.stdout, encoding, errors) - if rv is not None: - return rv - return _force_correct_text_writer(sys.stdout, encoding, errors, force_writable=True) - - -def get_text_stderr(encoding: str | None = None, errors: str | None = None) -> t.TextIO: - rv = _get_windows_console_stream(sys.stderr, encoding, errors) - if rv is not None: - return rv - return _force_correct_text_writer(sys.stderr, encoding, errors, force_writable=True) - - -def _wrap_io_open( - file: str | os.PathLike[str] | int, - mode: str, - encoding: str | None, - errors: str | None, -) -> t.IO[t.Any]: - """Handles not passing ``encoding`` and ``errors`` in binary mode.""" - if "b" in mode: - return open(file, mode) - - return open(file, mode, encoding=encoding, errors=errors) - - -def open_stream( - filename: str | os.PathLike[str], - mode: str = "r", - encoding: str | None = None, - errors: str | None = "strict", - atomic: bool = False, -) -> tuple[t.IO[t.Any], bool]: - binary = "b" in mode - filename = os.fspath(filename) - - # Standard streams first. These are simple because they ignore the - # atomic flag. Use fsdecode to handle Path("-"). - if os.fsdecode(filename) == "-": - if any(m in mode for m in ["w", "a", "x"]): - if binary: - return get_binary_stdout(), False - return get_text_stdout(encoding=encoding, errors=errors), False - if binary: - return get_binary_stdin(), False - return get_text_stdin(encoding=encoding, errors=errors), False - - # Non-atomic writes directly go out through the regular open functions. - if not atomic: - return _wrap_io_open(filename, mode, encoding, errors), True - - # Some usability stuff for atomic writes - if "a" in mode: - raise ValueError( - "Appending to an existing file is not supported, because that" - " would involve an expensive `copy`-operation to a temporary" - " file. Open the file in normal `w`-mode and copy explicitly" - " if that's what you're after." - ) - if "x" in mode: - raise ValueError("Use the `overwrite`-parameter instead.") - if "w" not in mode: - raise ValueError("Atomic writes only make sense with `w`-mode.") - - # Atomic writes are more complicated. They work by opening a file - # as a proxy in the same folder and then using the fdopen - # functionality to wrap it in a Python file. Then we wrap it in an - # atomic file that moves the file over on close. - import errno - import random - - try: - perm: int | None = os.stat(filename).st_mode - except OSError: - perm = None - - flags = os.O_RDWR | os.O_CREAT | os.O_EXCL - - if binary: - flags |= getattr(os, "O_BINARY", 0) - - while True: - tmp_filename = os.path.join( - os.path.dirname(filename), - f".__atomic-write{random.randrange(1 << 32):08x}", - ) - try: - fd = os.open(tmp_filename, flags, 0o666 if perm is None else perm) - break - except OSError as e: - if e.errno == errno.EEXIST or ( - os.name == "nt" - and e.errno == errno.EACCES - and os.path.isdir(e.filename) - and os.access(e.filename, os.W_OK) - ): - continue - raise - - if perm is not None: - os.chmod(tmp_filename, perm) # in case perm includes bits in umask - - f = _wrap_io_open(fd, mode, encoding, errors) - af = _AtomicFile(f, tmp_filename, os.path.realpath(filename)) - return t.cast(t.IO[t.Any], af), True - - -class _AtomicFile: - def __init__(self, f: t.IO[t.Any], tmp_filename: str, real_filename: str) -> None: - self._f = f - self._tmp_filename = tmp_filename - self._real_filename = real_filename - self.closed = False - - @property - def name(self) -> str: - return self._real_filename - - def close(self, delete: bool = False) -> None: - if self.closed: - return - self._f.close() - os.replace(self._tmp_filename, self._real_filename) - self.closed = True - - def __getattr__(self, name: str) -> t.Any: - return getattr(self._f, name) - - def __enter__(self) -> _AtomicFile: - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_value: BaseException | None, - tb: TracebackType | None, - ) -> None: - self.close(delete=exc_type is not None) - - def __repr__(self) -> str: - return repr(self._f) - - -def strip_ansi(value: str) -> str: - return _ansi_re.sub("", value) - - -def _is_jupyter_kernel_output(stream: t.IO[t.Any]) -> bool: - while isinstance(stream, (_FixupStream, _NonClosingTextIOWrapper)): - stream = stream._stream - - return stream.__class__.__module__.startswith("ipykernel.") - - -def should_strip_ansi( - stream: t.IO[t.Any] | None = None, color: bool | None = None -) -> bool: - if color is None: - if stream is None: - stream = sys.stdin - return not isatty(stream) and not _is_jupyter_kernel_output(stream) - return not color - - -# On Windows, wrap the output streams with colorama to support ANSI -# color codes. -# NOTE: double check is needed so mypy does not analyze this on Linux -if sys.platform.startswith("win") and WIN: - from ._winconsole import _get_windows_console_stream - - def _get_argv_encoding() -> str: - import locale - - return locale.getpreferredencoding() - - _ansi_stream_wrappers: cabc.MutableMapping[t.TextIO, t.TextIO] = WeakKeyDictionary() - - def auto_wrap_for_ansi(stream: t.TextIO, color: bool | None = None) -> t.TextIO: - """Support ANSI color and style codes on Windows by wrapping a - stream with colorama. - """ - try: - cached = _ansi_stream_wrappers.get(stream) - except Exception: - cached = None - - if cached is not None: - return cached - - import colorama - - strip = should_strip_ansi(stream, color) - ansi_wrapper = colorama.AnsiToWin32(stream, strip=strip) - rv = t.cast(t.TextIO, ansi_wrapper.stream) - _write = rv.write - - def _safe_write(s: str) -> int: - try: - return _write(s) - except BaseException: - ansi_wrapper.reset_all() - raise - - rv.write = _safe_write # type: ignore[method-assign] - - try: - _ansi_stream_wrappers[stream] = rv - except Exception: - pass - - return rv - -else: - - def _get_argv_encoding() -> str: - return getattr(sys.stdin, "encoding", None) or sys.getfilesystemencoding() - - def _get_windows_console_stream( - f: t.TextIO, encoding: str | None, errors: str | None - ) -> t.TextIO | None: - return None - - -def term_len(x: str) -> int: - return len(strip_ansi(x)) - - -def isatty(stream: t.IO[t.Any]) -> bool: - try: - return stream.isatty() - except Exception: - return False - - -def _make_cached_stream_func( - src_func: t.Callable[[], t.TextIO | None], - wrapper_func: t.Callable[[], t.TextIO], -) -> t.Callable[[], t.TextIO | None]: - cache: cabc.MutableMapping[t.TextIO, t.TextIO] = WeakKeyDictionary() - - def func() -> t.TextIO | None: - stream = src_func() - - if stream is None: - return None - - try: - rv = cache.get(stream) - except Exception: - rv = None - if rv is not None: - return rv - rv = wrapper_func() - try: - cache[stream] = rv - except Exception: - pass - return rv - - return func - - -_default_text_stdin = _make_cached_stream_func(lambda: sys.stdin, get_text_stdin) -_default_text_stdout = _make_cached_stream_func(lambda: sys.stdout, get_text_stdout) -_default_text_stderr = _make_cached_stream_func(lambda: sys.stderr, get_text_stderr) - - -binary_streams: cabc.Mapping[str, t.Callable[[], t.BinaryIO]] = { - "stdin": get_binary_stdin, - "stdout": get_binary_stdout, - "stderr": get_binary_stderr, -} - -text_streams: cabc.Mapping[str, t.Callable[[str | None, str | None], t.TextIO]] = { - "stdin": get_text_stdin, - "stdout": get_text_stdout, - "stderr": get_text_stderr, -} diff --git a/venv/lib/python3.12/site-packages/click/_termui_impl.py b/venv/lib/python3.12/site-packages/click/_termui_impl.py deleted file mode 100644 index 51fd9bf..0000000 --- a/venv/lib/python3.12/site-packages/click/_termui_impl.py +++ /dev/null @@ -1,839 +0,0 @@ -""" -This module contains implementations for the termui module. To keep the -import time of Click down, some infrequently used functionality is -placed in this module and only imported as needed. -""" - -from __future__ import annotations - -import collections.abc as cabc -import contextlib -import math -import os -import shlex -import sys -import time -import typing as t -from gettext import gettext as _ -from io import StringIO -from pathlib import Path -from shutil import which -from types import TracebackType - -from ._compat import _default_text_stdout -from ._compat import CYGWIN -from ._compat import get_best_encoding -from ._compat import isatty -from ._compat import open_stream -from ._compat import strip_ansi -from ._compat import term_len -from ._compat import WIN -from .exceptions import ClickException -from .utils import echo - -V = t.TypeVar("V") - -if os.name == "nt": - BEFORE_BAR = "\r" - AFTER_BAR = "\n" -else: - BEFORE_BAR = "\r\033[?25l" - AFTER_BAR = "\033[?25h\n" - - -class ProgressBar(t.Generic[V]): - def __init__( - self, - iterable: cabc.Iterable[V] | None, - length: int | None = None, - fill_char: str = "#", - empty_char: str = " ", - bar_template: str = "%(bar)s", - info_sep: str = " ", - hidden: bool = False, - show_eta: bool = True, - show_percent: bool | None = None, - show_pos: bool = False, - item_show_func: t.Callable[[V | None], str | None] | None = None, - label: str | None = None, - file: t.TextIO | None = None, - color: bool | None = None, - update_min_steps: int = 1, - width: int = 30, - ) -> None: - self.fill_char = fill_char - self.empty_char = empty_char - self.bar_template = bar_template - self.info_sep = info_sep - self.hidden = hidden - self.show_eta = show_eta - self.show_percent = show_percent - self.show_pos = show_pos - self.item_show_func = item_show_func - self.label: str = label or "" - - if file is None: - file = _default_text_stdout() - - # There are no standard streams attached to write to. For example, - # pythonw on Windows. - if file is None: - file = StringIO() - - self.file = file - self.color = color - self.update_min_steps = update_min_steps - self._completed_intervals = 0 - self.width: int = width - self.autowidth: bool = width == 0 - - if length is None: - from operator import length_hint - - length = length_hint(iterable, -1) - - if length == -1: - length = None - if iterable is None: - if length is None: - raise TypeError("iterable or length is required") - iterable = t.cast("cabc.Iterable[V]", range(length)) - self.iter: cabc.Iterable[V] = iter(iterable) - self.length = length - self.pos: int = 0 - self.avg: list[float] = [] - self.last_eta: float - self.start: float - self.start = self.last_eta = time.time() - self.eta_known: bool = False - self.finished: bool = False - self.max_width: int | None = None - self.entered: bool = False - self.current_item: V | None = None - self._is_atty = isatty(self.file) - self._last_line: str | None = None - - def __enter__(self) -> ProgressBar[V]: - self.entered = True - self.render_progress() - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_value: BaseException | None, - tb: TracebackType | None, - ) -> None: - self.render_finish() - - def __iter__(self) -> cabc.Iterator[V]: - if not self.entered: - raise RuntimeError("You need to use progress bars in a with block.") - self.render_progress() - return self.generator() - - def __next__(self) -> V: - # Iteration is defined in terms of a generator function, - # returned by iter(self); use that to define next(). This works - # because `self.iter` is an iterable consumed by that generator, - # so it is re-entry safe. Calling `next(self.generator())` - # twice works and does "what you want". - return next(iter(self)) - - def render_finish(self) -> None: - if self.hidden or not self._is_atty: - return - self.file.write(AFTER_BAR) - self.file.flush() - - @property - def pct(self) -> float: - if self.finished: - return 1.0 - return min(self.pos / (float(self.length or 1) or 1), 1.0) - - @property - def time_per_iteration(self) -> float: - if not self.avg: - return 0.0 - return sum(self.avg) / float(len(self.avg)) - - @property - def eta(self) -> float: - if self.length is not None and not self.finished: - return self.time_per_iteration * (self.length - self.pos) - return 0.0 - - def format_eta(self) -> str: - if self.eta_known: - t = int(self.eta) - seconds = t % 60 - t //= 60 - minutes = t % 60 - t //= 60 - hours = t % 24 - t //= 24 - if t > 0: - return f"{t}d {hours:02}:{minutes:02}:{seconds:02}" - else: - return f"{hours:02}:{minutes:02}:{seconds:02}" - return "" - - def format_pos(self) -> str: - pos = str(self.pos) - if self.length is not None: - pos += f"/{self.length}" - return pos - - def format_pct(self) -> str: - return f"{int(self.pct * 100): 4}%"[1:] - - def format_bar(self) -> str: - if self.length is not None: - bar_length = int(self.pct * self.width) - bar = self.fill_char * bar_length - bar += self.empty_char * (self.width - bar_length) - elif self.finished: - bar = self.fill_char * self.width - else: - chars = list(self.empty_char * (self.width or 1)) - if self.time_per_iteration != 0: - chars[ - int( - (math.cos(self.pos * self.time_per_iteration) / 2.0 + 0.5) - * self.width - ) - ] = self.fill_char - bar = "".join(chars) - return bar - - def format_progress_line(self) -> str: - show_percent = self.show_percent - - info_bits = [] - if self.length is not None and show_percent is None: - show_percent = not self.show_pos - - if self.show_pos: - info_bits.append(self.format_pos()) - if show_percent: - info_bits.append(self.format_pct()) - if self.show_eta and self.eta_known and not self.finished: - info_bits.append(self.format_eta()) - if self.item_show_func is not None: - item_info = self.item_show_func(self.current_item) - if item_info is not None: - info_bits.append(item_info) - - return ( - self.bar_template - % { - "label": self.label, - "bar": self.format_bar(), - "info": self.info_sep.join(info_bits), - } - ).rstrip() - - def render_progress(self) -> None: - import shutil - - if self.hidden: - return - - if not self._is_atty: - # Only output the label once if the output is not a TTY. - if self._last_line != self.label: - self._last_line = self.label - echo(self.label, file=self.file, color=self.color) - return - - buf = [] - # Update width in case the terminal has been resized - if self.autowidth: - old_width = self.width - self.width = 0 - clutter_length = term_len(self.format_progress_line()) - new_width = max(0, shutil.get_terminal_size().columns - clutter_length) - if new_width < old_width and self.max_width is not None: - 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: - self._last_line = line - echo(line, file=self.file, color=self.color, nl=False) - self.file.flush() - - def make_step(self, n_steps: int) -> None: - self.pos += n_steps - if self.length is not None and self.pos >= self.length: - self.finished = True - - if (time.time() - self.last_eta) < 1.0: - return - - self.last_eta = time.time() - - # self.avg is a rolling list of length <= 7 of steps where steps are - # defined as time elapsed divided by the total progress through - # self.length. - if self.pos: - step = (time.time() - self.start) / self.pos - else: - step = time.time() - self.start - - self.avg = self.avg[-6:] + [step] - - self.eta_known = self.length is not None - - def update(self, n_steps: int, current_item: V | None = None) -> None: - """Update the progress bar by advancing a specified number of - steps, and optionally set the ``current_item`` for this new - position. - - :param n_steps: Number of steps to advance. - :param current_item: Optional item to set as ``current_item`` - for the updated position. - - .. versionchanged:: 8.0 - Added the ``current_item`` optional parameter. - - .. versionchanged:: 8.0 - Only render when the number of steps meets the - ``update_min_steps`` threshold. - """ - if current_item is not None: - self.current_item = current_item - - self._completed_intervals += n_steps - - if self._completed_intervals >= self.update_min_steps: - self.make_step(self._completed_intervals) - self.render_progress() - self._completed_intervals = 0 - - def finish(self) -> None: - self.eta_known = False - self.current_item = None - self.finished = True - - def generator(self) -> cabc.Iterator[V]: - """Return a generator which yields the items added to the bar - during construction, and updates the progress bar *after* the - yielded block returns. - """ - # WARNING: the iterator interface for `ProgressBar` relies on - # this and only works because this is a simple generator which - # doesn't create or manage additional state. If this function - # changes, the impact should be evaluated both against - # `iter(bar)` and `next(bar)`. `next()` in particular may call - # `self.generator()` repeatedly, and this must remain safe in - # order for that interface to work. - if not self.entered: - raise RuntimeError("You need to use progress bars in a with block.") - - if not self._is_atty: - yield from self.iter - else: - for rv in self.iter: - self.current_item = rv - - # This allows show_item_func to be updated before the - # item is processed. Only trigger at the beginning of - # the update interval. - if self._completed_intervals == 0: - self.render_progress() - - yield rv - self.update(1) - - self.finish() - self.render_progress() - - -def pager(generator: cabc.Iterable[str], color: bool | None = None) -> None: - """Decide what method to use for paging through text.""" - stdout = _default_text_stdout() - - # There are no standard streams attached to write to. For example, - # pythonw on Windows. - if stdout is None: - stdout = StringIO() - - if not isatty(sys.stdin) or not isatty(stdout): - return _nullpager(stdout, generator, color) - - # Split and normalize the pager command into parts. - pager_cmd_parts = shlex.split(os.environ.get("PAGER", ""), posix=False) - if pager_cmd_parts: - if WIN: - if _tempfilepager(generator, pager_cmd_parts, color): - return - elif _pipepager(generator, pager_cmd_parts, color): - return - - if os.environ.get("TERM") in ("dumb", "emacs"): - return _nullpager(stdout, generator, color) - if (WIN or sys.platform.startswith("os2")) and _tempfilepager( - generator, ["more"], color - ): - return - if _pipepager(generator, ["less"], color): - return - - import tempfile - - fd, filename = tempfile.mkstemp() - os.close(fd) - try: - if _pipepager(generator, ["more"], color): - return - return _nullpager(stdout, generator, color) - finally: - os.unlink(filename) - - -def _pipepager( - generator: cabc.Iterable[str], cmd_parts: list[str], color: bool | None -) -> bool: - """Page through text by feeding it to another program. Invoking a - pager through this might support colors. - - Returns `True` if the command was found, `False` otherwise and thus another - pager should be attempted. - """ - # Split the command into the invoked CLI and its parameters. - if not cmd_parts: - return False - cmd = cmd_parts[0] - cmd_params = cmd_parts[1:] - - cmd_filepath = which(cmd) - if not cmd_filepath: - return False - # Resolves symlinks and produces a normalized absolute path string. - cmd_path = Path(cmd_filepath).resolve() - cmd_name = cmd_path.name - - import subprocess - - # Make a local copy of the environment to not affect the global one. - env = dict(os.environ) - - # If we're piping to less and the user hasn't decided on colors, we enable - # them by default we find the -R flag in the command line arguments. - if color is None and cmd_name == "less": - less_flags = f"{os.environ.get('LESS', '')}{' '.join(cmd_params)}" - if not less_flags: - env["LESS"] = "-R" - color = True - elif "r" in less_flags or "R" in less_flags: - color = True - - c = subprocess.Popen( - [str(cmd_path)] + cmd_params, - shell=True, - stdin=subprocess.PIPE, - env=env, - errors="replace", - text=True, - ) - assert c.stdin is not None - try: - for text in generator: - if not color: - text = strip_ansi(text) - - c.stdin.write(text) - except BrokenPipeError: - # In case the pager exited unexpectedly, ignore the broken pipe error. - pass - except Exception as e: - # In case there is an exception we want to close the pager immediately - # and let the caller handle it. - # Otherwise the pager will keep running, and the user may not notice - # the error message, or worse yet it may leave the terminal in a broken state. - c.terminate() - raise e - finally: - # We must close stdin and wait for the pager to exit before we continue - try: - c.stdin.close() - # Close implies flush, so it might throw a BrokenPipeError if the pager - # process exited already. - except BrokenPipeError: - pass - - # 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 - - return True - - -def _tempfilepager( - generator: cabc.Iterable[str], cmd_parts: list[str], color: bool | None -) -> bool: - """Page through text by invoking a program on a temporary file. - - Returns `True` if the command was found, `False` otherwise and thus another - pager should be attempted. - """ - # Split the command into the invoked CLI and its parameters. - if not cmd_parts: - return False - cmd = cmd_parts[0] - - cmd_filepath = which(cmd) - if not cmd_filepath: - return False - # Resolves symlinks and produces a normalized absolute path string. - cmd_path = Path(cmd_filepath).resolve() - - import subprocess - import tempfile - - fd, filename = tempfile.mkstemp() - # TODO: This never terminates if the passed generator never terminates. - text = "".join(generator) - if not color: - text = strip_ansi(text) - encoding = get_best_encoding(sys.stdout) - with open_stream(filename, "wb")[0] as f: - f.write(text.encode(encoding)) - try: - subprocess.call([str(cmd_path), filename]) - except OSError: - # Command not found - pass - finally: - os.close(fd) - os.unlink(filename) - - return True - - -def _nullpager( - stream: t.TextIO, generator: cabc.Iterable[str], color: bool | None -) -> None: - """Simply print unformatted text. This is the ultimate fallback.""" - for text in generator: - if not color: - text = strip_ansi(text) - stream.write(text) - - -class Editor: - def __init__( - self, - editor: str | None = None, - env: cabc.Mapping[str, str] | None = None, - require_save: bool = True, - extension: str = ".txt", - ) -> None: - self.editor = editor - self.env = env - self.require_save = require_save - self.extension = extension - - def get_editor(self) -> str: - if self.editor is not None: - return self.editor - for key in "VISUAL", "EDITOR": - rv = os.environ.get(key) - if rv: - return rv - if WIN: - return "notepad" - for editor in "sensible-editor", "vim", "nano": - if which(editor) is not None: - return editor - return "vi" - - def edit_files(self, filenames: cabc.Iterable[str]) -> None: - import subprocess - - editor = self.get_editor() - environ: dict[str, str] | None = None - - if self.env: - environ = os.environ.copy() - environ.update(self.env) - - exc_filename = " ".join(f'"{filename}"' for filename in filenames) - - try: - c = subprocess.Popen( - args=f"{editor} {exc_filename}", env=environ, shell=True - ) - exit_code = c.wait() - if exit_code != 0: - raise ClickException( - _("{editor}: Editing failed").format(editor=editor) - ) - except OSError as e: - raise ClickException( - _("{editor}: Editing failed: {e}").format(editor=editor, e=e) - ) from e - - @t.overload - def edit(self, text: bytes | bytearray) -> bytes | None: ... - - # We cannot know whether or not the type expected is str or bytes when None - # is passed, so str is returned as that was what was done before. - @t.overload - def edit(self, text: str | None) -> str | None: ... - - def edit(self, text: str | bytes | bytearray | None) -> str | bytes | None: - import tempfile - - if text is None: - data = b"" - elif isinstance(text, (bytes, bytearray)): - data = text - else: - if text and not text.endswith("\n"): - text += "\n" - - if WIN: - data = text.replace("\n", "\r\n").encode("utf-8-sig") - else: - data = text.encode("utf-8") - - fd, name = tempfile.mkstemp(prefix="editor-", suffix=self.extension) - f: t.BinaryIO - - try: - with os.fdopen(fd, "wb") as f: - f.write(data) - - # If the filesystem resolution is 1 second, like Mac OS - # 10.12 Extended, or 2 seconds, like FAT32, and the editor - # closes very fast, require_save can fail. Set the modified - # time to be 2 seconds in the past to work around this. - os.utime(name, (os.path.getatime(name), os.path.getmtime(name) - 2)) - # Depending on the resolution, the exact value might not be - # recorded, so get the new recorded value. - timestamp = os.path.getmtime(name) - - self.edit_files((name,)) - - if self.require_save and os.path.getmtime(name) == timestamp: - return None - - with open(name, "rb") as f: - rv = f.read() - - if isinstance(text, (bytes, bytearray)): - return rv - - return rv.decode("utf-8-sig").replace("\r\n", "\n") - finally: - os.unlink(name) - - -def open_url(url: str, wait: bool = False, locate: bool = False) -> int: - import subprocess - - def _unquote_file(url: str) -> str: - from urllib.parse import unquote - - if url.startswith("file://"): - url = unquote(url[7:]) - - return url - - if sys.platform == "darwin": - args = ["open"] - if wait: - args.append("-W") - if locate: - args.append("-R") - args.append(_unquote_file(url)) - null = open("/dev/null", "w") - try: - return subprocess.Popen(args, stderr=null).wait() - finally: - null.close() - elif WIN: - if locate: - url = _unquote_file(url) - args = ["explorer", f"/select,{url}"] - else: - args = ["start"] - if wait: - args.append("/WAIT") - args.append("") - args.append(url) - try: - return subprocess.call(args) - except OSError: - # Command not found - return 127 - elif CYGWIN: - if locate: - url = _unquote_file(url) - args = ["cygstart", os.path.dirname(url)] - else: - args = ["cygstart"] - if wait: - args.append("-w") - args.append(url) - try: - return subprocess.call(args) - except OSError: - # Command not found - return 127 - - try: - if locate: - url = os.path.dirname(_unquote_file(url)) or "." - else: - url = _unquote_file(url) - c = subprocess.Popen(["xdg-open", url]) - if wait: - return c.wait() - return 0 - except OSError: - if url.startswith(("http://", "https://")) and not locate and not wait: - import webbrowser - - webbrowser.open(url) - return 0 - return 1 - - -def _translate_ch_to_exc(ch: str) -> None: - if ch == "\x03": - raise KeyboardInterrupt() - - if ch == "\x04" and not WIN: # Unix-like, Ctrl+D - raise EOFError() - - if ch == "\x1a" and WIN: # Windows, Ctrl+Z - raise EOFError() - - return None - - -if sys.platform == "win32": - import msvcrt - - @contextlib.contextmanager - def raw_terminal() -> cabc.Iterator[int]: - yield -1 - - def getchar(echo: bool) -> str: - # The function `getch` will return a bytes object corresponding to - # the pressed character. Since Windows 10 build 1803, it will also - # return \x00 when called a second time after pressing a regular key. - # - # `getwch` does not share this probably-bugged behavior. Moreover, it - # returns a Unicode object by default, which is what we want. - # - # Either of these functions will return \x00 or \xe0 to indicate - # a special key, and you need to call the same function again to get - # the "rest" of the code. The fun part is that \u00e0 is - # "latin small letter a with grave", so if you type that on a French - # keyboard, you _also_ get a \xe0. - # E.g., consider the Up arrow. This returns \xe0 and then \x48. The - # resulting Unicode string reads as "a with grave" + "capital H". - # This is indistinguishable from when the user actually types - # "a with grave" and then "capital H". - # - # When \xe0 is returned, we assume it's part of a special-key sequence - # and call `getwch` again, but that means that when the user types - # the \u00e0 character, `getchar` doesn't return until a second - # character is typed. - # The alternative is returning immediately, but that would mess up - # cross-platform handling of arrow keys and others that start with - # \xe0. Another option is using `getch`, but then we can't reliably - # read non-ASCII characters, because return values of `getch` are - # limited to the current 8-bit codepage. - # - # Anyway, Click doesn't claim to do this Right(tm), and using `getwch` - # is doing the right thing in more situations than with `getch`. - - if echo: - func = t.cast(t.Callable[[], str], msvcrt.getwche) - else: - func = t.cast(t.Callable[[], str], msvcrt.getwch) - - rv = func() - - if rv in ("\x00", "\xe0"): - # \x00 and \xe0 are control characters that indicate special key, - # see above. - rv += func() - - _translate_ch_to_exc(rv) - return rv - -else: - import termios - import tty - - @contextlib.contextmanager - def raw_terminal() -> cabc.Iterator[int]: - f: t.TextIO | None - fd: int - - if not isatty(sys.stdin): - f = open("/dev/tty") - fd = f.fileno() - else: - fd = sys.stdin.fileno() - f = None - - try: - old_settings = termios.tcgetattr(fd) - - try: - tty.setraw(fd) - yield fd - finally: - termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) - sys.stdout.flush() - - if f is not None: - f.close() - except termios.error: - pass - - def getchar(echo: bool) -> str: - with raw_terminal() as fd: - ch = os.read(fd, 32).decode(get_best_encoding(sys.stdin), "replace") - - if echo and isatty(sys.stdout): - sys.stdout.write(ch) - - _translate_ch_to_exc(ch) - return ch diff --git a/venv/lib/python3.12/site-packages/click/_textwrap.py b/venv/lib/python3.12/site-packages/click/_textwrap.py deleted file mode 100644 index 97fbee3..0000000 --- a/venv/lib/python3.12/site-packages/click/_textwrap.py +++ /dev/null @@ -1,51 +0,0 @@ -from __future__ import annotations - -import collections.abc as cabc -import textwrap -from contextlib import contextmanager - - -class TextWrapper(textwrap.TextWrapper): - def _handle_long_word( - self, - reversed_chunks: list[str], - cur_line: list[str], - cur_len: int, - width: int, - ) -> None: - space_left = max(width - cur_len, 1) - - if self.break_long_words: - last = reversed_chunks[-1] - cut = last[:space_left] - res = last[space_left:] - cur_line.append(cut) - reversed_chunks[-1] = res - elif not cur_line: - cur_line.append(reversed_chunks.pop()) - - @contextmanager - def extra_indent(self, indent: str) -> cabc.Iterator[None]: - old_initial_indent = self.initial_indent - old_subsequent_indent = self.subsequent_indent - self.initial_indent += indent - self.subsequent_indent += indent - - try: - yield - finally: - self.initial_indent = old_initial_indent - self.subsequent_indent = old_subsequent_indent - - def indent_only(self, text: str) -> str: - rv = [] - - for idx, line in enumerate(text.splitlines()): - indent = self.initial_indent - - if idx > 0: - indent = self.subsequent_indent - - rv.append(f"{indent}{line}") - - return "\n".join(rv) diff --git a/venv/lib/python3.12/site-packages/click/_winconsole.py b/venv/lib/python3.12/site-packages/click/_winconsole.py deleted file mode 100644 index 566dd9c..0000000 --- a/venv/lib/python3.12/site-packages/click/_winconsole.py +++ /dev/null @@ -1,295 +0,0 @@ -# This module is based on the excellent work by Adam Bartoš who -# provided a lot of what went into the implementation here in -# the discussion to issue1602 in the Python bug tracker. -# -# There are some general differences in regards to how this works -# compared to the original patches as we do not need to patch -# the entire interpreter but just work in our little world of -# echo and prompt. -from __future__ import annotations - -import collections.abc as cabc -import io -import sys -import time -import typing as t -from ctypes import Array -from ctypes import byref -from ctypes import c_char -from ctypes import c_char_p -from ctypes import c_int -from ctypes import c_ssize_t -from ctypes import c_ulong -from ctypes import c_void_p -from ctypes import POINTER -from ctypes import py_object -from ctypes import Structure -from ctypes.wintypes import DWORD -from ctypes.wintypes import HANDLE -from ctypes.wintypes import LPCWSTR -from ctypes.wintypes import LPWSTR - -from ._compat import _NonClosingTextIOWrapper - -assert sys.platform == "win32" -import msvcrt # noqa: E402 -from ctypes import windll # noqa: E402 -from ctypes import WINFUNCTYPE # noqa: E402 - -c_ssize_p = POINTER(c_ssize_t) - -kernel32 = windll.kernel32 -GetStdHandle = kernel32.GetStdHandle -ReadConsoleW = kernel32.ReadConsoleW -WriteConsoleW = kernel32.WriteConsoleW -GetConsoleMode = kernel32.GetConsoleMode -GetLastError = kernel32.GetLastError -GetCommandLineW = WINFUNCTYPE(LPWSTR)(("GetCommandLineW", windll.kernel32)) -CommandLineToArgvW = WINFUNCTYPE(POINTER(LPWSTR), LPCWSTR, POINTER(c_int))( - ("CommandLineToArgvW", windll.shell32) -) -LocalFree = WINFUNCTYPE(c_void_p, c_void_p)(("LocalFree", windll.kernel32)) - -STDIN_HANDLE = GetStdHandle(-10) -STDOUT_HANDLE = GetStdHandle(-11) -STDERR_HANDLE = GetStdHandle(-12) - -PyBUF_SIMPLE = 0 -PyBUF_WRITABLE = 1 - -ERROR_SUCCESS = 0 -ERROR_NOT_ENOUGH_MEMORY = 8 -ERROR_OPERATION_ABORTED = 995 - -STDIN_FILENO = 0 -STDOUT_FILENO = 1 -STDERR_FILENO = 2 - -EOF = b"\x1a" -MAX_BYTES_WRITTEN = 32767 - -if t.TYPE_CHECKING: - try: - # Using `typing_extensions.Buffer` instead of `collections.abc` - # on Windows for some reason does not have `Sized` implemented. - from collections.abc import Buffer # type: ignore - except ImportError: - from typing_extensions import Buffer - -try: - from ctypes import pythonapi -except ImportError: - # On PyPy we cannot get buffers so our ability to operate here is - # severely limited. - get_buffer = None -else: - - class Py_buffer(Structure): - _fields_ = [ # noqa: RUF012 - ("buf", c_void_p), - ("obj", py_object), - ("len", c_ssize_t), - ("itemsize", c_ssize_t), - ("readonly", c_int), - ("ndim", c_int), - ("format", c_char_p), - ("shape", c_ssize_p), - ("strides", c_ssize_p), - ("suboffsets", c_ssize_p), - ("internal", c_void_p), - ] - - PyObject_GetBuffer = pythonapi.PyObject_GetBuffer - PyBuffer_Release = pythonapi.PyBuffer_Release - - def get_buffer(obj: Buffer, writable: bool = False) -> Array[c_char]: - buf = Py_buffer() - flags: int = PyBUF_WRITABLE if writable else PyBUF_SIMPLE - PyObject_GetBuffer(py_object(obj), byref(buf), flags) - - try: - buffer_type: Array[c_char] = c_char * buf.len - return buffer_type.from_address(buf.buf) # type: ignore[attr-defined, no-any-return] - finally: - PyBuffer_Release(byref(buf)) - - -class _WindowsConsoleRawIOBase(io.RawIOBase): - def __init__(self, handle: int | None) -> None: - self.handle = handle - - def isatty(self) -> t.Literal[True]: - super().isatty() - return True - - -class _WindowsConsoleReader(_WindowsConsoleRawIOBase): - def readable(self) -> t.Literal[True]: - return True - - def readinto(self, b: Buffer) -> int: - bytes_to_be_read = len(b) - if not bytes_to_be_read: - return 0 - elif bytes_to_be_read % 2: - raise ValueError( - "cannot read odd number of bytes from UTF-16-LE encoded console" - ) - - buffer = get_buffer(b, writable=True) - code_units_to_be_read = bytes_to_be_read // 2 - code_units_read = c_ulong() - - rv = ReadConsoleW( - HANDLE(self.handle), - buffer, - code_units_to_be_read, - byref(code_units_read), - None, - ) - if GetLastError() == ERROR_OPERATION_ABORTED: - # wait for KeyboardInterrupt - time.sleep(0.1) - if not rv: - raise OSError(f"Windows error: {GetLastError()}") - - if buffer[0] == EOF: - return 0 - return 2 * code_units_read.value - - -class _WindowsConsoleWriter(_WindowsConsoleRawIOBase): - def writable(self) -> t.Literal[True]: - return True - - @staticmethod - def _get_error_message(errno: int) -> str: - if errno == ERROR_SUCCESS: - return "ERROR_SUCCESS" - elif errno == ERROR_NOT_ENOUGH_MEMORY: - return "ERROR_NOT_ENOUGH_MEMORY" - return f"Windows error {errno}" - - def write(self, b: Buffer) -> int: - bytes_to_be_written = len(b) - buf = get_buffer(b) - code_units_to_be_written = min(bytes_to_be_written, MAX_BYTES_WRITTEN) // 2 - code_units_written = c_ulong() - - WriteConsoleW( - HANDLE(self.handle), - buf, - code_units_to_be_written, - byref(code_units_written), - None, - ) - bytes_written = 2 * code_units_written.value - - if bytes_written == 0 and bytes_to_be_written > 0: - raise OSError(self._get_error_message(GetLastError())) - return bytes_written - - -class ConsoleStream: - def __init__(self, text_stream: t.TextIO, byte_stream: t.BinaryIO) -> None: - self._text_stream = text_stream - self.buffer = byte_stream - - @property - def name(self) -> str: - return self.buffer.name - - def write(self, x: t.AnyStr) -> int: - if isinstance(x, str): - return self._text_stream.write(x) - try: - self.flush() - except Exception: - pass - return self.buffer.write(x) - - def writelines(self, lines: cabc.Iterable[t.AnyStr]) -> None: - for line in lines: - self.write(line) - - def __getattr__(self, name: str) -> t.Any: - return getattr(self._text_stream, name) - - def isatty(self) -> bool: - return self.buffer.isatty() - - def __repr__(self) -> str: - return f"" - - -def _get_text_stdin(buffer_stream: t.BinaryIO) -> t.TextIO: - text_stream = _NonClosingTextIOWrapper( - io.BufferedReader(_WindowsConsoleReader(STDIN_HANDLE)), - "utf-16-le", - "strict", - line_buffering=True, - ) - return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) - - -def _get_text_stdout(buffer_stream: t.BinaryIO) -> t.TextIO: - text_stream = _NonClosingTextIOWrapper( - io.BufferedWriter(_WindowsConsoleWriter(STDOUT_HANDLE)), - "utf-16-le", - "strict", - line_buffering=True, - ) - return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) - - -def _get_text_stderr(buffer_stream: t.BinaryIO) -> t.TextIO: - text_stream = _NonClosingTextIOWrapper( - io.BufferedWriter(_WindowsConsoleWriter(STDERR_HANDLE)), - "utf-16-le", - "strict", - line_buffering=True, - ) - return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) - - -_stream_factories: cabc.Mapping[int, t.Callable[[t.BinaryIO], t.TextIO]] = { - 0: _get_text_stdin, - 1: _get_text_stdout, - 2: _get_text_stderr, -} - - -def _is_console(f: t.TextIO) -> bool: - if not hasattr(f, "fileno"): - return False - - try: - fileno = f.fileno() - except (OSError, io.UnsupportedOperation): - return False - - handle = msvcrt.get_osfhandle(fileno) - return bool(GetConsoleMode(handle, byref(DWORD()))) - - -def _get_windows_console_stream( - f: t.TextIO, encoding: str | None, errors: str | None -) -> t.TextIO | None: - if ( - get_buffer is None - or encoding not in {"utf-16-le", None} - or errors not in {"strict", None} - or not _is_console(f) - ): - return None - - func = _stream_factories.get(f.fileno()) - if func is None: - return None - - b = getattr(f, "buffer", None) - - if b is None: - return None - - return func(b) diff --git a/venv/lib/python3.12/site-packages/click/core.py b/venv/lib/python3.12/site-packages/click/core.py deleted file mode 100644 index 4745b53..0000000 --- a/venv/lib/python3.12/site-packages/click/core.py +++ /dev/null @@ -1,3134 +0,0 @@ -from __future__ import annotations - -import collections.abc as cabc -import enum -import errno -import inspect -import os -import sys -import typing as t -from collections import abc -from collections import Counter -from contextlib import AbstractContextManager -from contextlib import contextmanager -from contextlib import ExitStack -from functools import update_wrapper -from gettext import gettext as _ -from gettext import ngettext -from itertools import repeat -from types import TracebackType - -from . import types -from .exceptions import Abort -from .exceptions import BadParameter -from .exceptions import ClickException -from .exceptions import Exit -from .exceptions import MissingParameter -from .exceptions import NoArgsIsHelpError -from .exceptions import UsageError -from .formatting import HelpFormatter -from .formatting import join_options -from .globals import pop_context -from .globals import push_context -from .parser import _flag_needs_value -from .parser import _OptionParser -from .parser import _split_opt -from .termui import confirm -from .termui import prompt -from .termui import style -from .utils import _detect_program_name -from .utils import _expand_args -from .utils import echo -from .utils import make_default_short_help -from .utils import make_str -from .utils import PacifyFlushWrapper - -if t.TYPE_CHECKING: - from .shell_completion import CompletionItem - -F = t.TypeVar("F", bound="t.Callable[..., t.Any]") -V = t.TypeVar("V") - - -def _complete_visible_commands( - ctx: Context, incomplete: str -) -> cabc.Iterator[tuple[str, Command]]: - """List all the subcommands of a group that start with the - incomplete value and aren't hidden. - - :param ctx: Invocation context for the group. - :param incomplete: Value being completed. May be empty. - """ - multi = t.cast(Group, ctx.command) - - for name in multi.list_commands(ctx): - if name.startswith(incomplete): - command = multi.get_command(ctx, name) - - if command is not None and not command.hidden: - yield name, command - - -def _check_nested_chain( - base_command: Group, cmd_name: str, cmd: Command, register: bool = False -) -> None: - if not base_command.chain or not isinstance(cmd, Group): - return - - if register: - message = ( - f"It is not possible to add the group {cmd_name!r} to another" - f" group {base_command.name!r} that is in chain mode." - ) - else: - message = ( - f"Found the group {cmd_name!r} as subcommand to another group " - f" {base_command.name!r} that is in chain mode. This is not supported." - ) - - raise RuntimeError(message) - - -def batch(iterable: cabc.Iterable[V], batch_size: int) -> list[tuple[V, ...]]: - return list(zip(*repeat(iter(iterable), batch_size), strict=False)) - - -@contextmanager -def augment_usage_errors( - ctx: Context, param: Parameter | None = None -) -> cabc.Iterator[None]: - """Context manager that attaches extra information to exceptions.""" - try: - yield - except BadParameter as e: - if e.ctx is None: - e.ctx = ctx - if param is not None and e.param is None: - e.param = param - raise - except UsageError as e: - if e.ctx is None: - e.ctx = ctx - raise - - -def iter_params_for_processing( - invocation_order: cabc.Sequence[Parameter], - declaration_order: cabc.Sequence[Parameter], -) -> list[Parameter]: - """Returns all declared parameters in the order they should be processed. - - The declared parameters are re-shuffled depending on the order in which - they were invoked, as well as the eagerness of each parameters. - - The invocation order takes precedence over the declaration order. I.e. the - order in which the user provided them to the CLI is respected. - - This behavior and its effect on callback evaluation is detailed at: - https://click.palletsprojects.com/en/stable/advanced/#callback-evaluation-order - """ - - def sort_key(item: Parameter) -> tuple[bool, float]: - try: - idx: float = invocation_order.index(item) - except ValueError: - idx = float("inf") - - return not item.is_eager, idx - - return sorted(declaration_order, key=sort_key) - - -class ParameterSource(enum.Enum): - """This is an :class:`~enum.Enum` that indicates the source of a - parameter's value. - - Use :meth:`click.Context.get_parameter_source` to get the - source for a parameter by name. - - .. versionchanged:: 8.0 - Use :class:`~enum.Enum` and drop the ``validate`` method. - - .. versionchanged:: 8.0 - Added the ``PROMPT`` value. - """ - - COMMANDLINE = enum.auto() - """The value was provided by the command line args.""" - ENVIRONMENT = enum.auto() - """The value was provided with an environment variable.""" - DEFAULT = enum.auto() - """Used the default specified by the parameter.""" - DEFAULT_MAP = enum.auto() - """Used a default provided by :attr:`Context.default_map`.""" - PROMPT = enum.auto() - """Used a prompt to confirm a default or provide a value.""" - - -class Context: - """The context is a special internal object that holds state relevant - for the script execution at every single level. It's normally invisible - to commands unless they opt-in to getting access to it. - - The context is useful as it can pass internal objects around and can - control special execution features such as reading data from - environment variables. - - A context can be used as context manager in which case it will call - :meth:`close` on teardown. - - :param command: the command class for this context. - :param parent: the parent context. - :param info_name: the info name for this invocation. Generally this - is the most descriptive name for the script or - command. For the toplevel script it is usually - the name of the script, for commands below it it's - the name of the script. - :param obj: an arbitrary object of user data. - :param auto_envvar_prefix: the prefix to use for automatic environment - variables. If this is `None` then reading - from environment variables is disabled. This - does not affect manually set environment - variables which are always read. - :param default_map: a dictionary (like object) with default values - for parameters. - :param terminal_width: the width of the terminal. The default is - inherit from parent context. If no context - defines the terminal width then auto - detection will be applied. - :param max_content_width: the maximum width for content rendered by - Click (this currently only affects help - pages). This defaults to 80 characters if - not overridden. In other words: even if the - terminal is larger than that, Click will not - format things wider than 80 characters by - default. In addition to that, formatters might - add some safety mapping on the right. - :param resilient_parsing: if this flag is enabled then Click will - parse without any interactivity or callback - invocation. Default values will also be - ignored. This is useful for implementing - things such as completion support. - :param allow_extra_args: if this is set to `True` then extra arguments - at the end will not raise an error and will be - kept on the context. The default is to inherit - from the command. - :param allow_interspersed_args: if this is set to `False` then options - and arguments cannot be mixed. The - default is to inherit from the command. - :param ignore_unknown_options: instructs click to ignore options it does - not know and keeps them for later - processing. - :param help_option_names: optionally a list of strings that define how - the default help parameter is named. The - default is ``['--help']``. - :param token_normalize_func: an optional function that is used to - normalize tokens (options, choices, - etc.). This for instance can be used to - implement case insensitive behavior. - :param color: controls if the terminal supports ANSI colors or not. The - default is autodetection. This is only needed if ANSI - codes are used in texts that Click prints which is by - default not the case. This for instance would affect - help output. - :param show_default: Show the default value for commands. If this - value is not set, it defaults to the value from the parent - context. ``Command.show_default`` overrides this default for the - specific command. - - .. versionchanged:: 8.2 - The ``protected_args`` attribute is deprecated and will be removed in - Click 9.0. ``args`` will contain remaining unparsed tokens. - - .. versionchanged:: 8.1 - The ``show_default`` parameter is overridden by - ``Command.show_default``, instead of the other way around. - - .. versionchanged:: 8.0 - The ``show_default`` parameter defaults to the value from the - parent context. - - .. versionchanged:: 7.1 - Added the ``show_default`` parameter. - - .. versionchanged:: 4.0 - Added the ``color``, ``ignore_unknown_options``, and - ``max_content_width`` parameters. - - .. versionchanged:: 3.0 - Added the ``allow_extra_args`` and ``allow_interspersed_args`` - parameters. - - .. versionchanged:: 2.0 - Added the ``resilient_parsing``, ``help_option_names``, and - ``token_normalize_func`` parameters. - """ - - #: The formatter class to create with :meth:`make_formatter`. - #: - #: .. versionadded:: 8.0 - formatter_class: type[HelpFormatter] = HelpFormatter - - def __init__( - self, - command: Command, - parent: Context | None = None, - info_name: str | None = None, - obj: t.Any | None = None, - auto_envvar_prefix: str | None = None, - default_map: cabc.MutableMapping[str, t.Any] | None = None, - terminal_width: int | None = None, - max_content_width: int | None = None, - resilient_parsing: bool = False, - allow_extra_args: bool | None = None, - allow_interspersed_args: bool | None = None, - ignore_unknown_options: bool | None = None, - help_option_names: list[str] | None = None, - token_normalize_func: t.Callable[[str], str] | None = None, - color: bool | None = None, - show_default: bool | None = None, - ) -> None: - #: the parent context or `None` if none exists. - self.parent = parent - #: the :class:`Command` for this context. - self.command = command - #: the descriptive information name - self.info_name = info_name - #: Map of parameter names to their parsed values. Parameters - #: with ``expose_value=False`` are not stored. - self.params: dict[str, t.Any] = {} - #: the leftover arguments. - self.args: list[str] = [] - #: protected arguments. These are arguments that are prepended - #: to `args` when certain parsing scenarios are encountered but - #: must be never propagated to another arguments. This is used - #: to implement nested parsing. - self._protected_args: list[str] = [] - #: the collected prefixes of the command's options. - self._opt_prefixes: set[str] = set(parent._opt_prefixes) if parent else set() - - if obj is None and parent is not None: - obj = parent.obj - - #: the user object stored. - self.obj: t.Any = obj - self._meta: dict[str, t.Any] = getattr(parent, "meta", {}) - - #: A dictionary (-like object) with defaults for parameters. - if ( - default_map is None - and info_name is not None - and parent is not None - and parent.default_map is not None - ): - default_map = parent.default_map.get(info_name) - - self.default_map: cabc.MutableMapping[str, t.Any] | None = default_map - - #: This flag indicates if a subcommand is going to be executed. A - #: group callback can use this information to figure out if it's - #: being executed directly or because the execution flow passes - #: onwards to a subcommand. By default it's None, but it can be - #: the name of the subcommand to execute. - #: - #: If chaining is enabled this will be set to ``'*'`` in case - #: any commands are executed. It is however not possible to - #: figure out which ones. If you require this knowledge you - #: should use a :func:`result_callback`. - self.invoked_subcommand: str | None = 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: int | None = 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: int | None = max_content_width - - if allow_extra_args is None: - allow_extra_args = command.allow_extra_args - - #: Indicates if the context allows extra args or if it should - #: fail on parsing. - #: - #: .. versionadded:: 3.0 - self.allow_extra_args = allow_extra_args - - if allow_interspersed_args is None: - allow_interspersed_args = command.allow_interspersed_args - - #: Indicates if the context allows mixing of arguments and - #: options or not. - #: - #: .. versionadded:: 3.0 - self.allow_interspersed_args: bool = allow_interspersed_args - - if ignore_unknown_options is None: - ignore_unknown_options = command.ignore_unknown_options - - #: Instructs click to ignore options that a command does not - #: understand and will store it on the context for later - #: processing. This is primarily useful for situations where you - #: want to call into external programs. Generally this pattern is - #: strongly discouraged because it's not possibly to losslessly - #: forward all arguments. - #: - #: .. versionadded:: 4.0 - self.ignore_unknown_options: bool = ignore_unknown_options - - if help_option_names is None: - if parent is not None: - help_option_names = parent.help_option_names - else: - help_option_names = ["--help"] - - #: The names for the help options. - self.help_option_names: list[str] = help_option_names - - if token_normalize_func is None and parent is not None: - token_normalize_func = parent.token_normalize_func - - #: An optional normalization function for tokens. This is - #: options, choices, commands etc. - self.token_normalize_func: t.Callable[[str], str] | None = token_normalize_func - - #: Indicates if resilient parsing is enabled. In that case Click - #: will do its best to not cause any failures and default values - #: will be ignored. Useful for completion. - self.resilient_parsing: bool = resilient_parsing - - # If there is no envvar prefix yet, but the parent has one and - # the command on this level has a name, we can expand the envvar - # prefix automatically. - if auto_envvar_prefix is None: - if ( - parent is not None - and parent.auto_envvar_prefix is not None - and self.info_name is not None - ): - auto_envvar_prefix = ( - f"{parent.auto_envvar_prefix}_{self.info_name.upper()}" - ) - else: - auto_envvar_prefix = auto_envvar_prefix.upper() - - if auto_envvar_prefix is not None: - auto_envvar_prefix = auto_envvar_prefix.replace("-", "_") - - self.auto_envvar_prefix: str | None = 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: bool | None = color - - if show_default is None and parent is not None: - show_default = parent.show_default - - #: Show option default values when formatting help text. - self.show_default: bool | None = show_default - - self._close_callbacks: list[t.Callable[[], t.Any]] = [] - self._depth = 0 - self._parameter_source: dict[str, ParameterSource] = {} - self._exit_stack = ExitStack() - - @property - def protected_args(self) -> list[str]: - import warnings - - warnings.warn( - "'protected_args' is deprecated and will be removed in Click 9.0." - " 'args' will contain remaining unparsed tokens.", - DeprecationWarning, - stacklevel=2, - ) - return self._protected_args - - def to_info_dict(self) -> dict[str, t.Any]: - """Gather information that could be useful for a tool generating - user-facing documentation. This traverses the entire CLI - structure. - - .. code-block:: python - - with Context(cli) as ctx: - info = ctx.to_info_dict() - - .. versionadded:: 8.0 - """ - return { - "command": self.command.to_info_dict(self), - "info_name": self.info_name, - "allow_extra_args": self.allow_extra_args, - "allow_interspersed_args": self.allow_interspersed_args, - "ignore_unknown_options": self.ignore_unknown_options, - "auto_envvar_prefix": self.auto_envvar_prefix, - } - - def __enter__(self) -> Context: - self._depth += 1 - push_context(self) - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_value: BaseException | None, - tb: TracebackType | None, - ) -> None: - self._depth -= 1 - if self._depth == 0: - self.close() - pop_context() - - @contextmanager - def scope(self, cleanup: bool = True) -> cabc.Iterator[Context]: - """This helper method can be used with the context object to promote - it to the current thread local (see :func:`get_current_context`). - The default behavior of this is to invoke the cleanup functions which - can be disabled by setting `cleanup` to `False`. The cleanup - functions are typically used for things such as closing file handles. - - If the cleanup is intended the context object can also be directly - used as a context manager. - - Example usage:: - - with ctx.scope(): - assert get_current_context() is ctx - - This is equivalent:: - - with ctx: - assert get_current_context() is ctx - - .. versionadded:: 5.0 - - :param cleanup: controls if the cleanup functions should be run or - not. The default is to run these functions. In - some situations the context only wants to be - temporarily pushed in which case this can be disabled. - Nested pushes automatically defer the cleanup. - """ - if not cleanup: - self._depth += 1 - try: - with self as rv: - yield rv - finally: - if not cleanup: - self._depth -= 1 - - @property - def meta(self) -> dict[str, t.Any]: - """This is a dictionary which is shared with all the contexts - that are nested. It exists so that click utilities can store some - state here if they need to. It is however the responsibility of - that code to manage this dictionary well. - - The keys are supposed to be unique dotted strings. For instance - module paths are a good choice for it. What is stored in there is - irrelevant for the operation of click. However what is important is - that code that places data here adheres to the general semantics of - the system. - - Example usage:: - - LANG_KEY = f'{__name__}.lang' - - def set_language(value): - ctx = get_current_context() - ctx.meta[LANG_KEY] = value - - def get_language(): - return get_current_context().meta.get(LANG_KEY, 'en_US') - - .. versionadded:: 5.0 - """ - return self._meta - - def make_formatter(self) -> HelpFormatter: - """Creates the :class:`~click.HelpFormatter` for the help and - usage output. - - To quickly customize the formatter class used without overriding - this method, set the :attr:`formatter_class` attribute. - - .. versionchanged:: 8.0 - Added the :attr:`formatter_class` attribute. - """ - return self.formatter_class( - width=self.terminal_width, max_width=self.max_content_width - ) - - def with_resource(self, context_manager: AbstractContextManager[V]) -> V: - """Register a resource as if it were used in a ``with`` - statement. The resource will be cleaned up when the context is - popped. - - Uses :meth:`contextlib.ExitStack.enter_context`. It calls the - resource's ``__enter__()`` method and returns the result. When - the context is popped, it closes the stack, which calls the - resource's ``__exit__()`` method. - - To register a cleanup function for something that isn't a - context manager, use :meth:`call_on_close`. Or use something - from :mod:`contextlib` to turn it into a context manager first. - - .. code-block:: python - - @click.group() - @click.option("--name") - @click.pass_context - def cli(ctx): - ctx.obj = ctx.with_resource(connect_db(name)) - - :param context_manager: The context manager to enter. - :return: Whatever ``context_manager.__enter__()`` returns. - - .. versionadded:: 8.0 - """ - return self._exit_stack.enter_context(context_manager) - - def call_on_close(self, f: t.Callable[..., t.Any]) -> t.Callable[..., t.Any]: - """Register a function to be called when the context tears down. - - This can be used to close resources opened during the script - execution. Resources that support Python's context manager - protocol which would be used in a ``with`` statement should be - registered with :meth:`with_resource` instead. - - :param f: The function to execute on teardown. - """ - return self._exit_stack.callback(f) - - def close(self) -> None: - """Invoke all close callbacks registered with - :meth:`call_on_close`, and exit all context managers entered - with :meth:`with_resource`. - """ - self._exit_stack.close() - # In case the context is reused, create a new exit stack. - self._exit_stack = ExitStack() - - @property - def command_path(self) -> str: - """The computed command path. This is used for the ``usage`` - information on the help page. It's automatically created by - combining the info names of the chain of contexts to the root. - """ - rv = "" - if self.info_name is not None: - rv = self.info_name - if self.parent is not None: - parent_command_path = [self.parent.command_path] - - if isinstance(self.parent.command, Command): - for param in self.parent.command.get_params(self): - parent_command_path.extend(param.get_usage_pieces(self)) - - rv = f"{' '.join(parent_command_path)} {rv}" - return rv.lstrip() - - def find_root(self) -> Context: - """Finds the outermost context.""" - node = self - while node.parent is not None: - node = node.parent - return node - - def find_object(self, object_type: type[V]) -> V | None: - """Finds the closest object of a given type.""" - node: Context | None = self - - while node is not None: - if isinstance(node.obj, object_type): - return node.obj - - node = node.parent - - return None - - def ensure_object(self, object_type: type[V]) -> V: - """Like :meth:`find_object` but sets the innermost object to a - new instance of `object_type` if it does not exist. - """ - rv = self.find_object(object_type) - if rv is None: - self.obj = rv = object_type() - return rv - - @t.overload - def lookup_default( - self, name: str, call: t.Literal[True] = True - ) -> t.Any | None: ... - - @t.overload - def lookup_default( - self, name: str, call: t.Literal[False] = ... - ) -> t.Any | t.Callable[[], t.Any] | None: ... - - def lookup_default(self, name: str, call: bool = True) -> t.Any | None: - """Get the default for a parameter from :attr:`default_map`. - - :param name: Name of the parameter. - :param call: If the default is a callable, call it. Disable to - return the callable instead. - - .. versionchanged:: 8.0 - Added the ``call`` parameter. - """ - if self.default_map is not None: - value = self.default_map.get(name) - - if call and callable(value): - return value() - - return value - - return None - - def fail(self, message: str) -> t.NoReturn: - """Aborts the execution of the program with a specific error - message. - - :param message: the error message to fail with. - """ - raise UsageError(message, self) - - def abort(self) -> t.NoReturn: - """Aborts the script.""" - raise Abort() - - def exit(self, code: int = 0) -> t.NoReturn: - """Exits the application with a given exit code. - - .. versionchanged:: 8.2 - Callbacks and context managers registered with :meth:`call_on_close` - and :meth:`with_resource` are closed before exiting. - """ - self.close() - raise Exit(code) - - def get_usage(self) -> str: - """Helper method to get formatted usage string for the current - context and command. - """ - return self.command.get_usage(self) - - def get_help(self) -> str: - """Helper method to get formatted help page for the current - context and command. - """ - return self.command.get_help(self) - - def _make_sub_context(self, command: Command) -> Context: - """Create a new context of the same type as this context, but - for a new command. - - :meta private: - """ - return type(self)(command, info_name=command.name, parent=self) - - @t.overload - def invoke( - self, callback: t.Callable[..., V], /, *args: t.Any, **kwargs: t.Any - ) -> V: ... - - @t.overload - def invoke(self, callback: Command, /, *args: t.Any, **kwargs: t.Any) -> t.Any: ... - - def invoke( - self, callback: Command | t.Callable[..., V], /, *args: t.Any, **kwargs: t.Any - ) -> t.Any | V: - """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. - - .. versionchanged:: 8.0 - All ``kwargs`` are tracked in :attr:`params` so they will be - passed if :meth:`forward` is called at multiple levels. - - .. versionchanged:: 3.2 - A new context is created, and missing arguments use default values. - """ - if isinstance(callback, Command): - other_cmd = callback - - if other_cmd.callback is None: - raise TypeError( - "The given command does not have a callback that can be invoked." - ) - else: - callback = t.cast("t.Callable[..., V]", other_cmd.callback) - - ctx = self._make_sub_context(other_cmd) - - for param in other_cmd.params: - if param.name not in kwargs and param.expose_value: - kwargs[param.name] = param.type_cast_value( # type: ignore - ctx, param.get_default(ctx) - ) - - # Track all kwargs as params, so that forward() will pass - # them on in subsequent calls. - ctx.params.update(kwargs) - else: - ctx = self - - with augment_usage_errors(self): - with ctx: - return callback(*args, **kwargs) - - def forward(self, cmd: Command, /, *args: t.Any, **kwargs: t.Any) -> t.Any: - """Similar to :meth:`invoke` but fills in default keyword - arguments from the current context if the other command expects - it. This cannot invoke callbacks directly, only other commands. - - .. versionchanged:: 8.0 - All ``kwargs`` are tracked in :attr:`params` so they will be - passed if ``forward`` is called at multiple levels. - """ - # Can only forward to other commands, not direct callbacks. - if not isinstance(cmd, Command): - raise TypeError("Callback is not a command.") - - for param in self.params: - if param not in kwargs: - kwargs[param] = self.params[param] - - return self.invoke(cmd, *args, **kwargs) - - def set_parameter_source(self, name: str, source: ParameterSource) -> None: - """Set the source of a parameter. This indicates the location - from which the value of the parameter was obtained. - - :param name: The name of the parameter. - :param source: A member of :class:`~click.core.ParameterSource`. - """ - self._parameter_source[name] = source - - def get_parameter_source(self, name: str) -> ParameterSource | None: - """Get the source of a parameter. This indicates the location - from which the value of the parameter was obtained. - - This can be useful for determining when a user specified a value - on the command line that is the same as the default value. It - will be :attr:`~click.core.ParameterSource.DEFAULT` only if the - value was actually taken from the default. - - :param name: The name of the parameter. - :rtype: ParameterSource - - .. versionchanged:: 8.0 - Returns ``None`` if the parameter was not provided from any - source. - """ - return self._parameter_source.get(name) - - -class Command: - """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. - - :param name: the name of the command to use unless a group overrides it. - :param context_settings: an optional dictionary with defaults that are - passed to the context object. - :param callback: the callback to invoke. This is optional. - :param params: the parameters to register with this command. This can - be either :class:`Option` or :class:`Argument` objects. - :param help: the help string to use for this command. - :param epilog: like the help string but it's printed at the end of the - help page after everything else. - :param short_help: the short help to use for this command. This is - shown on the command listing of the parent command. - :param add_help_option: by default each command registers a ``--help`` - option. This can be disabled by this parameter. - :param no_args_is_help: this controls what happens if no arguments are - provided. This option is disabled by default. - If enabled this will add ``--help`` as argument - if no arguments are passed - :param hidden: hide this command from help outputs. - :param deprecated: If ``True`` or non-empty string, issues a message - indicating that the command is deprecated and highlights - its deprecation in --help. The message can be customized - by using a string as the value. - - .. versionchanged:: 8.2 - This is the base class for all commands, not ``BaseCommand``. - ``deprecated`` can be set to a string as well to customize the - deprecation message. - - .. versionchanged:: 8.1 - ``help``, ``epilog``, and ``short_help`` are stored unprocessed, - all formatting is done when outputting help text, not at init, - and is done even if not using the ``@command`` decorator. - - .. versionchanged:: 8.0 - Added a ``repr`` showing the command name. - - .. versionchanged:: 7.1 - Added the ``no_args_is_help`` parameter. - - .. versionchanged:: 2.0 - Added the ``context_settings`` parameter. - """ - - #: The context class to create with :meth:`make_context`. - #: - #: .. versionadded:: 8.0 - context_class: type[Context] = Context - - #: the default for the :attr:`Context.allow_extra_args` flag. - allow_extra_args = False - - #: the default for the :attr:`Context.allow_interspersed_args` flag. - allow_interspersed_args = True - - #: the default for the :attr:`Context.ignore_unknown_options` flag. - ignore_unknown_options = False - - def __init__( - self, - name: str | None, - context_settings: cabc.MutableMapping[str, t.Any] | None = None, - callback: t.Callable[..., t.Any] | None = None, - params: list[Parameter] | None = None, - help: str | None = None, - epilog: str | None = None, - short_help: str | None = None, - options_metavar: str | None = "[OPTIONS]", - add_help_option: bool = True, - no_args_is_help: bool = False, - hidden: bool = False, - deprecated: bool | str = False, - ) -> 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: cabc.MutableMapping[str, t.Any] = 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: list[Parameter] = params or [] - self.help = help - self.epilog = epilog - self.options_metavar = options_metavar - self.short_help = short_help - self.add_help_option = add_help_option - self._help_option = None - self.no_args_is_help = no_args_is_help - self.hidden = hidden - self.deprecated = deprecated - - def to_info_dict(self, ctx: Context) -> dict[str, t.Any]: - return { - "name": self.name, - "params": [param.to_info_dict() for param in self.get_params(ctx)], - "help": self.help, - "epilog": self.epilog, - "short_help": self.short_help, - "hidden": self.hidden, - "deprecated": self.deprecated, - } - - def __repr__(self) -> str: - return f"<{self.__class__.__name__} {self.name}>" - - def get_usage(self, ctx: Context) -> str: - """Formats the usage line into a string and returns it. - - Calls :meth:`format_usage` internally. - """ - formatter = ctx.make_formatter() - self.format_usage(ctx, formatter) - return formatter.getvalue().rstrip("\n") - - def get_params(self, ctx: Context) -> list[Parameter]: - params = self.params - help_option = self.get_help_option(ctx) - - if help_option is not None: - params = [*params, help_option] - - if __debug__: - import warnings - - opts = [opt for param in params for opt in param.opts] - opts_counter = Counter(opts) - duplicate_opts = (opt for opt, count in opts_counter.items() if count > 1) - - for duplicate_opt in duplicate_opts: - warnings.warn( - ( - f"The parameter {duplicate_opt} is used more than once. " - "Remove its duplicate as parameters should be unique." - ), - stacklevel=3, - ) - - return params - - def format_usage(self, ctx: Context, formatter: HelpFormatter) -> None: - """Writes the usage line into the formatter. - - This is a low-level method called by :meth:`get_usage`. - """ - pieces = self.collect_usage_pieces(ctx) - formatter.write_usage(ctx.command_path, " ".join(pieces)) - - def collect_usage_pieces(self, ctx: Context) -> list[str]: - """Returns all the pieces that go into the usage line and returns - it as a list of strings. - """ - rv = [self.options_metavar] if self.options_metavar else [] - - for param in self.get_params(ctx): - rv.extend(param.get_usage_pieces(ctx)) - - return rv - - def get_help_option_names(self, ctx: Context) -> list[str]: - """Returns the names for the help option.""" - all_names = set(ctx.help_option_names) - for param in self.params: - all_names.difference_update(param.opts) - all_names.difference_update(param.secondary_opts) - return list(all_names) - - def get_help_option(self, ctx: Context) -> Option | None: - """Returns the help option object. - - Skipped if :attr:`add_help_option` is ``False``. - - .. versionchanged:: 8.1.8 - The help option is now cached to avoid creating it multiple times. - """ - help_option_names = self.get_help_option_names(ctx) - - if not help_option_names or not self.add_help_option: - return None - - # Cache the help option object in private _help_option attribute to - # avoid creating it multiple times. Not doing this will break the - # callback odering by iter_params_for_processing(), which relies on - # object comparison. - if self._help_option is None: - # Avoid circular import. - from .decorators import help_option - - # Apply help_option decorator and pop resulting option - help_option(*help_option_names)(self) - self._help_option = self.params.pop() # type: ignore[assignment] - - return self._help_option - - def make_parser(self, ctx: Context) -> _OptionParser: - """Creates the underlying option parser for this command.""" - parser = _OptionParser(ctx) - for param in self.get_params(ctx): - param.add_to_parser(parser, ctx) - return parser - - def get_help(self, ctx: Context) -> str: - """Formats the help into a string and returns it. - - Calls :meth:`format_help` internally. - """ - formatter = ctx.make_formatter() - self.format_help(ctx, formatter) - return formatter.getvalue().rstrip("\n") - - def get_short_help_str(self, limit: int = 45) -> str: - """Gets short help for the command or makes it by shortening the - long help string. - """ - if self.short_help: - text = inspect.cleandoc(self.short_help) - elif self.help: - text = make_default_short_help(self.help, limit) - else: - text = "" - - if self.deprecated: - deprecated_message = ( - f"(DEPRECATED: {self.deprecated})" - if isinstance(self.deprecated, str) - else "(DEPRECATED)" - ) - text = _("{text} {deprecated_message}").format( - text=text, deprecated_message=deprecated_message - ) - - return text.strip() - - def format_help(self, ctx: Context, formatter: HelpFormatter) -> None: - """Writes the help into the formatter if it exists. - - This is a low-level method called by :meth:`get_help`. - - This calls the following methods: - - - :meth:`format_usage` - - :meth:`format_help_text` - - :meth:`format_options` - - :meth:`format_epilog` - """ - self.format_usage(ctx, formatter) - self.format_help_text(ctx, formatter) - self.format_options(ctx, formatter) - self.format_epilog(ctx, formatter) - - def format_help_text(self, ctx: Context, formatter: HelpFormatter) -> None: - """Writes the help text to the formatter if it exists.""" - if self.help is not None: - # truncate the help text to the first form feed - text = inspect.cleandoc(self.help).partition("\f")[0] - else: - text = "" - - if self.deprecated: - deprecated_message = ( - f"(DEPRECATED: {self.deprecated})" - if isinstance(self.deprecated, str) - else "(DEPRECATED)" - ) - text = _("{text} {deprecated_message}").format( - text=text, deprecated_message=deprecated_message - ) - - if text: - formatter.write_paragraph() - - with formatter.indentation(): - formatter.write_text(text) - - def format_options(self, ctx: Context, formatter: HelpFormatter) -> None: - """Writes all the options into the formatter if they exist.""" - opts = [] - for param in self.get_params(ctx): - rv = param.get_help_record(ctx) - if rv is not None: - opts.append(rv) - - if opts: - with formatter.section(_("Options")): - formatter.write_dl(opts) - - def format_epilog(self, ctx: Context, formatter: HelpFormatter) -> None: - """Writes the epilog into the formatter if it exists.""" - if self.epilog: - epilog = inspect.cleandoc(self.epilog) - formatter.write_paragraph() - - with formatter.indentation(): - formatter.write_text(epilog) - - def make_context( - self, - info_name: str | None, - args: list[str], - parent: Context | None = None, - **extra: t.Any, - ) -> Context: - """This function when given an info name and arguments will kick - off the parsing and create a new :class:`Context`. It does not - invoke the actual command callback though. - - To quickly customize the context class used without overriding - this method, set the :attr:`context_class` attribute. - - :param info_name: the info name for this invocation. Generally this - is the most descriptive name for the script or - command. For the toplevel script it's usually - the name of the script, for commands below it's - the name of the command. - :param args: the arguments to parse as list of strings. - :param parent: the parent context if available. - :param extra: extra keyword arguments forwarded to the context - constructor. - - .. versionchanged:: 8.0 - Added the :attr:`context_class` attribute. - """ - for key, value in self.context_settings.items(): - if key not in extra: - extra[key] = value - - ctx = self.context_class(self, info_name=info_name, parent=parent, **extra) - - with ctx.scope(cleanup=False): - self.parse_args(ctx, args) - return ctx - - def parse_args(self, ctx: Context, args: list[str]) -> list[str]: - if not args and self.no_args_is_help and not ctx.resilient_parsing: - raise NoArgsIsHelpError(ctx) - - parser = self.make_parser(ctx) - opts, args, param_order = parser.parse_args(args=args) - - for param in iter_params_for_processing(param_order, self.get_params(ctx)): - value, args = param.handle_parse_result(ctx, opts, args) - - if args and not ctx.allow_extra_args and not ctx.resilient_parsing: - ctx.fail( - ngettext( - "Got unexpected extra argument ({args})", - "Got unexpected extra arguments ({args})", - len(args), - ).format(args=" ".join(map(str, args))) - ) - - ctx.args = args - ctx._opt_prefixes.update(parser._opt_prefixes) - return args - - def invoke(self, ctx: Context) -> t.Any: - """Given a context, this invokes the attached callback (if it exists) - in the right way. - """ - if self.deprecated: - extra_message = ( - f" {self.deprecated}" if isinstance(self.deprecated, str) else "" - ) - message = _( - "DeprecationWarning: The command {name!r} is deprecated.{extra_message}" - ).format(name=self.name, extra_message=extra_message) - echo(style(message, fg="red"), err=True) - - if self.callback is not None: - return ctx.invoke(self.callback, **ctx.params) - - def shell_complete(self, ctx: Context, incomplete: str) -> list[CompletionItem]: - """Return a list of completions for the incomplete value. Looks - at the names of options and chained multi-commands. - - Any command could be part of a chained multi-command, so sibling - commands are valid at any point during command completion. - - :param ctx: Invocation context for this command. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - from click.shell_completion import CompletionItem - - results: list[CompletionItem] = [] - - if incomplete and not incomplete[0].isalnum(): - for param in self.get_params(ctx): - if ( - not isinstance(param, Option) - or param.hidden - or ( - not param.multiple - and ctx.get_parameter_source(param.name) # type: ignore - is ParameterSource.COMMANDLINE - ) - ): - continue - - results.extend( - CompletionItem(name, help=param.help) - for name in [*param.opts, *param.secondary_opts] - if name.startswith(incomplete) - ) - - while ctx.parent is not None: - ctx = ctx.parent - - if isinstance(ctx.command, Group) and ctx.command.chain: - results.extend( - CompletionItem(name, help=command.get_short_help_str()) - for name, command in _complete_visible_commands(ctx, incomplete) - if name not in ctx._protected_args - ) - - return results - - @t.overload - def main( - self, - args: cabc.Sequence[str] | None = None, - prog_name: str | None = None, - complete_var: str | None = None, - standalone_mode: t.Literal[True] = True, - **extra: t.Any, - ) -> t.NoReturn: ... - - @t.overload - def main( - self, - args: cabc.Sequence[str] | None = None, - prog_name: str | None = None, - complete_var: str | None = None, - standalone_mode: bool = ..., - **extra: t.Any, - ) -> t.Any: ... - - def main( - self, - args: cabc.Sequence[str] | None = None, - prog_name: str | None = None, - complete_var: str | None = None, - standalone_mode: bool = True, - windows_expand_args: bool = True, - **extra: t.Any, - ) -> t.Any: - """This is the way to invoke a script with all the bells and - whistles as a command line application. This will always terminate - the application after a call. If this is not wanted, ``SystemExit`` - needs to be caught. - - This method is also available by directly calling the instance of - a :class:`Command`. - - :param args: the arguments that should be used for parsing. If not - provided, ``sys.argv[1:]`` is used. - :param prog_name: the program name that should be used. By default - the program name is constructed by taking the file - name from ``sys.argv[0]``. - :param complete_var: the environment variable that controls the - bash completion support. The default is - ``"__COMPLETE"`` with prog_name in - uppercase. - :param standalone_mode: the default behavior is to invoke the script - in standalone mode. Click will then - handle exceptions and convert them into - error messages and the function will never - return but shut down the interpreter. If - this is set to `False` they will be - propagated to the caller and the return - value of this function is the return value - of :meth:`invoke`. - :param windows_expand_args: Expand glob patterns, user dir, and - env vars in command line args on Windows. - :param extra: extra keyword arguments are forwarded to the context - constructor. See :class:`Context` for more information. - - .. versionchanged:: 8.0.1 - Added the ``windows_expand_args`` parameter to allow - disabling command line arg expansion on Windows. - - .. versionchanged:: 8.0 - When taking arguments from ``sys.argv`` on Windows, glob - patterns, user dir, and env vars are expanded. - - .. versionchanged:: 3.0 - Added the ``standalone_mode`` parameter. - """ - if args is None: - args = sys.argv[1:] - - if os.name == "nt" and windows_expand_args: - args = _expand_args(args) - else: - args = list(args) - - if prog_name is None: - prog_name = _detect_program_name() - - # Process shell completion requests and exit early. - self._main_shell_completion(extra, prog_name, complete_var) - - try: - try: - with self.make_context(prog_name, args, **extra) as ctx: - rv = self.invoke(ctx) - if not standalone_mode: - return rv - # it's not safe to `ctx.exit(rv)` here! - # note that `rv` may actually contain data like "1" which - # has obvious effects - # more subtle case: `rv=[None, None]` can come out of - # chained commands which all returned `None` -- so it's not - # even always obvious that `rv` indicates success/failure - # by its truthiness/falsiness - ctx.exit() - except (EOFError, KeyboardInterrupt) as e: - echo(file=sys.stderr) - raise Abort() from e - except ClickException as e: - if not standalone_mode: - raise - e.show() - sys.exit(e.exit_code) - except OSError as e: - if e.errno == errno.EPIPE: - sys.stdout = t.cast(t.TextIO, PacifyFlushWrapper(sys.stdout)) - sys.stderr = t.cast(t.TextIO, PacifyFlushWrapper(sys.stderr)) - sys.exit(1) - else: - raise - except Exit as e: - if standalone_mode: - sys.exit(e.exit_code) - else: - # in non-standalone mode, return the exit code - # note that this is only reached if `self.invoke` above raises - # an Exit explicitly -- thus bypassing the check there which - # would return its result - # the results of non-standalone execution may therefore be - # somewhat ambiguous: if there are codepaths which lead to - # `ctx.exit(1)` and to `return 1`, the caller won't be able to - # tell the difference between the two - return e.exit_code - except Abort: - if not standalone_mode: - raise - echo(_("Aborted!"), file=sys.stderr) - sys.exit(1) - - def _main_shell_completion( - self, - ctx_args: cabc.MutableMapping[str, t.Any], - prog_name: str, - complete_var: str | None = None, - ) -> None: - """Check if the shell is asking for tab completion, process - that, then exit early. Called from :meth:`main` before the - program is invoked. - - :param prog_name: Name of the executable in the shell. - :param complete_var: Name of the environment variable that holds - the completion instruction. Defaults to - ``_{PROG_NAME}_COMPLETE``. - - .. versionchanged:: 8.2.0 - Dots (``.``) in ``prog_name`` are replaced with underscores (``_``). - """ - if complete_var is None: - complete_name = prog_name.replace("-", "_").replace(".", "_") - complete_var = f"_{complete_name}_COMPLETE".upper() - - instruction = os.environ.get(complete_var) - - if not instruction: - return - - from .shell_completion import shell_complete - - rv = shell_complete(self, ctx_args, prog_name, complete_var, instruction) - sys.exit(rv) - - def __call__(self, *args: t.Any, **kwargs: t.Any) -> t.Any: - """Alias for :meth:`main`.""" - return self.main(*args, **kwargs) - - -class _FakeSubclassCheck(type): - def __subclasscheck__(cls, subclass: type) -> bool: - return issubclass(subclass, cls.__bases__[0]) - - def __instancecheck__(cls, instance: t.Any) -> bool: - return isinstance(instance, cls.__bases__[0]) - - -class _BaseCommand(Command, metaclass=_FakeSubclassCheck): - """ - .. deprecated:: 8.2 - Will be removed in Click 9.0. Use ``Command`` instead. - """ - - -class Group(Command): - """A group is a command that nests other commands (or more groups). - - :param name: The name of the group command. - :param commands: Map names to :class:`Command` objects. Can be a list, which - will use :attr:`Command.name` as the keys. - :param invoke_without_command: Invoke the group's callback even if a - subcommand is not given. - :param no_args_is_help: If no arguments are given, show the group's help and - exit. Defaults to the opposite of ``invoke_without_command``. - :param subcommand_metavar: How to represent the subcommand argument in help. - The default will represent whether ``chain`` is set or not. - :param chain: Allow passing more than one subcommand argument. After parsing - a command's arguments, if any arguments remain another command will be - matched, and so on. - :param result_callback: A function to call after the group's and - subcommand's callbacks. The value returned by the subcommand is passed. - If ``chain`` is enabled, the value will be a list of values returned by - all the commands. If ``invoke_without_command`` is enabled, the value - will be the value returned by the group's callback, or an empty list if - ``chain`` is enabled. - :param kwargs: Other arguments passed to :class:`Command`. - - .. versionchanged:: 8.0 - The ``commands`` argument can be a list of command objects. - - .. versionchanged:: 8.2 - Merged with and replaces the ``MultiCommand`` base class. - """ - - allow_extra_args = True - allow_interspersed_args = False - - #: If set, this is used by the group's :meth:`command` decorator - #: as the default :class:`Command` class. This is useful to make all - #: subcommands use a custom command class. - #: - #: .. versionadded:: 8.0 - command_class: type[Command] | None = None - - #: If set, this is used by the group's :meth:`group` decorator - #: as the default :class:`Group` class. This is useful to make all - #: subgroups use a custom group class. - #: - #: If set to the special value :class:`type` (literally - #: ``group_class = type``), this group's class will be used as the - #: default class. This makes a custom group class continue to make - #: custom groups. - #: - #: .. versionadded:: 8.0 - group_class: type[Group] | type[type] | None = None - # Literal[type] isn't valid, so use Type[type] - - def __init__( - self, - name: str | None = None, - commands: cabc.MutableMapping[str, Command] - | cabc.Sequence[Command] - | None = None, - invoke_without_command: bool = False, - no_args_is_help: bool | None = None, - subcommand_metavar: str | None = None, - chain: bool = False, - result_callback: t.Callable[..., t.Any] | None = None, - **kwargs: t.Any, - ) -> None: - super().__init__(name, **kwargs) - - if commands is None: - commands = {} - elif isinstance(commands, abc.Sequence): - commands = {c.name: c for c in commands if c.name is not None} - - #: The registered subcommands by their exported names. - self.commands: cabc.MutableMapping[str, Command] = commands - - if no_args_is_help is None: - no_args_is_help = not invoke_without_command - - self.no_args_is_help = no_args_is_help - self.invoke_without_command = invoke_without_command - - if subcommand_metavar is None: - if chain: - subcommand_metavar = "COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]..." - else: - subcommand_metavar = "COMMAND [ARGS]..." - - self.subcommand_metavar = subcommand_metavar - self.chain = chain - # The result callback that is stored. This can be set or - # overridden with the :func:`result_callback` decorator. - self._result_callback = result_callback - - if self.chain: - for param in self.params: - if isinstance(param, Argument) and not param.required: - raise RuntimeError( - "A group in chain mode cannot have optional arguments." - ) - - def to_info_dict(self, ctx: Context) -> dict[str, t.Any]: - info_dict = super().to_info_dict(ctx) - commands = {} - - for name in self.list_commands(ctx): - command = self.get_command(ctx, name) - - if command is None: - continue - - sub_ctx = ctx._make_sub_context(command) - - with sub_ctx.scope(cleanup=False): - commands[name] = command.to_info_dict(sub_ctx) - - info_dict.update(commands=commands, chain=self.chain) - return info_dict - - def add_command(self, cmd: Command, name: str | None = None) -> None: - """Registers another :class:`Command` with this group. If the name - is not provided, the name of the command is used. - """ - name = name or cmd.name - if name is None: - raise TypeError("Command has no name.") - _check_nested_chain(self, name, cmd, register=True) - self.commands[name] = cmd - - @t.overload - def command(self, __func: t.Callable[..., t.Any]) -> Command: ... - - @t.overload - def command( - self, *args: t.Any, **kwargs: t.Any - ) -> t.Callable[[t.Callable[..., t.Any]], Command]: ... - - def command( - self, *args: t.Any, **kwargs: t.Any - ) -> t.Callable[[t.Callable[..., t.Any]], Command] | Command: - """A shortcut decorator for declaring and attaching a command to - the group. This takes the same arguments as :func:`command` and - immediately registers the created command with this group by - calling :meth:`add_command`. - - To customize the command class used, set the - :attr:`command_class` attribute. - - .. versionchanged:: 8.1 - This decorator can be applied without parentheses. - - .. versionchanged:: 8.0 - Added the :attr:`command_class` attribute. - """ - from .decorators import command - - func: t.Callable[..., t.Any] | None = None - - if args and callable(args[0]): - assert len(args) == 1 and not kwargs, ( - "Use 'command(**kwargs)(callable)' to provide arguments." - ) - (func,) = args - args = () - - if self.command_class and kwargs.get("cls") is None: - kwargs["cls"] = self.command_class - - def decorator(f: t.Callable[..., t.Any]) -> Command: - cmd: Command = command(*args, **kwargs)(f) - self.add_command(cmd) - return cmd - - if func is not None: - return decorator(func) - - return decorator - - @t.overload - def group(self, __func: t.Callable[..., t.Any]) -> Group: ... - - @t.overload - def group( - self, *args: t.Any, **kwargs: t.Any - ) -> t.Callable[[t.Callable[..., t.Any]], Group]: ... - - def group( - self, *args: t.Any, **kwargs: t.Any - ) -> t.Callable[[t.Callable[..., t.Any]], Group] | Group: - """A shortcut decorator for declaring and attaching a group to - the group. This takes the same arguments as :func:`group` and - immediately registers the created group with this group by - calling :meth:`add_command`. - - To customize the group class used, set the :attr:`group_class` - attribute. - - .. versionchanged:: 8.1 - This decorator can be applied without parentheses. - - .. versionchanged:: 8.0 - Added the :attr:`group_class` attribute. - """ - from .decorators import group - - func: t.Callable[..., t.Any] | None = None - - if args and callable(args[0]): - assert len(args) == 1 and not kwargs, ( - "Use 'group(**kwargs)(callable)' to provide arguments." - ) - (func,) = args - args = () - - if self.group_class is not None and kwargs.get("cls") is None: - if self.group_class is type: - kwargs["cls"] = type(self) - else: - kwargs["cls"] = self.group_class - - def decorator(f: t.Callable[..., t.Any]) -> Group: - cmd: Group = group(*args, **kwargs)(f) - self.add_command(cmd) - return cmd - - if func is not None: - return decorator(func) - - return decorator - - def result_callback(self, replace: bool = False) -> t.Callable[[F], F]: - """Adds a result callback to the command. By default if a - result callback is already registered this will chain them but - this can be disabled with the `replace` parameter. The result - callback is invoked with the return value of the subcommand - (or the list of return values from all subcommands if chaining - is enabled) as well as the parameters as they would be passed - to the main callback. - - Example:: - - @click.group() - @click.option('-i', '--input', default=23) - def cli(input): - return 42 - - @cli.result_callback() - def process_result(result, input): - return result + input - - :param replace: if set to `True` an already existing result - callback will be removed. - - .. versionchanged:: 8.0 - Renamed from ``resultcallback``. - - .. versionadded:: 3.0 - """ - - def decorator(f: F) -> F: - old_callback = self._result_callback - - if old_callback is None or replace: - self._result_callback = f - return f - - def function(value: t.Any, /, *args: t.Any, **kwargs: t.Any) -> t.Any: - inner = old_callback(value, *args, **kwargs) - return f(inner, *args, **kwargs) - - self._result_callback = rv = update_wrapper(t.cast(F, function), f) - return rv # type: ignore[return-value] - - return decorator - - def get_command(self, ctx: Context, cmd_name: str) -> Command | None: - """Given a context and a command name, this returns a :class:`Command` - object if it exists or returns ``None``. - """ - return self.commands.get(cmd_name) - - def list_commands(self, ctx: Context) -> list[str]: - """Returns a list of subcommand names in the order they should appear.""" - return sorted(self.commands) - - def collect_usage_pieces(self, ctx: Context) -> list[str]: - rv = super().collect_usage_pieces(ctx) - rv.append(self.subcommand_metavar) - return rv - - def format_options(self, ctx: Context, formatter: HelpFormatter) -> None: - super().format_options(ctx, formatter) - self.format_commands(ctx, formatter) - - def format_commands(self, ctx: Context, formatter: HelpFormatter) -> None: - """Extra format methods for multi methods that adds all the commands - after the options. - """ - commands = [] - for subcommand in self.list_commands(ctx): - cmd = self.get_command(ctx, subcommand) - # What is this, the tool lied about a command. Ignore it - if cmd is None: - continue - if cmd.hidden: - continue - - commands.append((subcommand, cmd)) - - # allow for 3 times the default spacing - if len(commands): - limit = formatter.width - 6 - max(len(cmd[0]) for cmd in commands) - - rows = [] - for subcommand, cmd in commands: - help = cmd.get_short_help_str(limit) - rows.append((subcommand, help)) - - if rows: - with formatter.section(_("Commands")): - formatter.write_dl(rows) - - def parse_args(self, ctx: Context, args: list[str]) -> list[str]: - if not args and self.no_args_is_help and not ctx.resilient_parsing: - raise NoArgsIsHelpError(ctx) - - rest = super().parse_args(ctx, args) - - if self.chain: - ctx._protected_args = rest - ctx.args = [] - elif rest: - ctx._protected_args, ctx.args = rest[:1], rest[1:] - - return ctx.args - - def invoke(self, ctx: Context) -> t.Any: - def _process_result(value: t.Any) -> t.Any: - if self._result_callback is not None: - value = ctx.invoke(self._result_callback, value, **ctx.params) - return value - - if not ctx._protected_args: - if self.invoke_without_command: - # No subcommand was invoked, so the result callback is - # invoked with the group return value for regular - # groups, or an empty list for chained groups. - with ctx: - rv = super().invoke(ctx) - return _process_result([] if self.chain else rv) - ctx.fail(_("Missing command.")) - - # Fetch args back out - args = [*ctx._protected_args, *ctx.args] - ctx.args = [] - ctx._protected_args = [] - - # If we're not in chain mode, we only allow the invocation of a - # single command but we also inform the current context about the - # name of the command to invoke. - if not self.chain: - # Make sure the context is entered so we do not clean up - # resources until the result processor has worked. - with ctx: - cmd_name, cmd, args = self.resolve_command(ctx, args) - assert cmd is not None - ctx.invoked_subcommand = cmd_name - super().invoke(ctx) - sub_ctx = cmd.make_context(cmd_name, args, parent=ctx) - with sub_ctx: - return _process_result(sub_ctx.command.invoke(sub_ctx)) - - # In chain mode we create the contexts step by step, but after the - # base command has been invoked. Because at that point we do not - # know the subcommands yet, the invoked subcommand attribute is - # set to ``*`` to inform the command that subcommands are executed - # but nothing else. - with ctx: - ctx.invoked_subcommand = "*" if args else None - super().invoke(ctx) - - # Otherwise we make every single context and invoke them in a - # chain. In that case the return value to the result processor - # is the list of all invoked subcommand's results. - contexts = [] - while args: - cmd_name, cmd, args = self.resolve_command(ctx, args) - assert cmd is not None - sub_ctx = cmd.make_context( - cmd_name, - args, - parent=ctx, - allow_extra_args=True, - allow_interspersed_args=False, - ) - contexts.append(sub_ctx) - args, sub_ctx.args = sub_ctx.args, [] - - rv = [] - for sub_ctx in contexts: - with sub_ctx: - rv.append(sub_ctx.command.invoke(sub_ctx)) - return _process_result(rv) - - def resolve_command( - self, ctx: Context, args: list[str] - ) -> tuple[str | None, Command | None, list[str]]: - cmd_name = make_str(args[0]) - original_cmd_name = cmd_name - - # Get the command - cmd = self.get_command(ctx, cmd_name) - - # If we can't find the command but there is a normalization - # function available, we try with that one. - if cmd is None and ctx.token_normalize_func is not None: - cmd_name = ctx.token_normalize_func(cmd_name) - cmd = self.get_command(ctx, cmd_name) - - # If we don't find the command we want to show an error message - # to the user that it was not provided. However, there is - # something else we should do: if the first argument looks like - # an option we want to kick off parsing again for arguments to - # resolve things like --help which now should go to the main - # place. - if cmd is None and not ctx.resilient_parsing: - if _split_opt(cmd_name)[0]: - self.parse_args(ctx, args) - ctx.fail(_("No such command {name!r}.").format(name=original_cmd_name)) - return cmd_name if cmd else None, cmd, args[1:] - - def shell_complete(self, ctx: Context, incomplete: str) -> list[CompletionItem]: - """Return a list of completions for the incomplete value. Looks - at the names of options, subcommands, and chained - multi-commands. - - :param ctx: Invocation context for this command. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - from click.shell_completion import CompletionItem - - results = [ - CompletionItem(name, help=command.get_short_help_str()) - for name, command in _complete_visible_commands(ctx, incomplete) - ] - results.extend(super().shell_complete(ctx, incomplete)) - return results - - -class _MultiCommand(Group, metaclass=_FakeSubclassCheck): - """ - .. deprecated:: 8.2 - Will be removed in Click 9.0. Use ``Group`` instead. - """ - - -class CommandCollection(Group): - """A :class:`Group` that looks up subcommands on other groups. If a command - is not found on this group, each registered source is checked in order. - Parameters on a source are not added to this group, and a source's callback - is not invoked when invoking its commands. In other words, this "flattens" - commands in many groups into this one group. - - :param name: The name of the group command. - :param sources: A list of :class:`Group` objects to look up commands from. - :param kwargs: Other arguments passed to :class:`Group`. - - .. versionchanged:: 8.2 - This is a subclass of ``Group``. Commands are looked up first on this - group, then each of its sources. - """ - - def __init__( - self, - name: str | None = None, - sources: list[Group] | None = None, - **kwargs: t.Any, - ) -> None: - super().__init__(name, **kwargs) - #: The list of registered groups. - self.sources: list[Group] = sources or [] - - def add_source(self, group: Group) -> None: - """Add a group as a source of commands.""" - self.sources.append(group) - - def get_command(self, ctx: Context, cmd_name: str) -> Command | None: - rv = super().get_command(ctx, cmd_name) - - if rv is not None: - return rv - - for source in self.sources: - rv = source.get_command(ctx, cmd_name) - - if rv is not None: - if self.chain: - _check_nested_chain(self, cmd_name, rv) - - return rv - - return None - - def list_commands(self, ctx: Context) -> list[str]: - rv: set[str] = set(super().list_commands(ctx)) - - for source in self.sources: - rv.update(source.list_commands(ctx)) - - return sorted(rv) - - -def _check_iter(value: t.Any) -> cabc.Iterator[t.Any]: - """Check if the value is iterable but not a string. Raises a type - error, or return an iterator over the value. - """ - if isinstance(value, str): - raise TypeError - - return iter(value) - - -class Parameter: - r"""A parameter to a command comes in two versions: they are either - :class:`Option`\s or :class:`Argument`\s. Other subclasses are currently - not supported by design as some of the internals for parsing are - intentionally not finalized. - - Some settings are supported by both options and arguments. - - :param param_decls: the parameter declarations for this option or - argument. This is a list of flags or argument - names. - :param type: the type that should be used. Either a :class:`ParamType` - or a Python type. The latter is converted into the former - automatically if supported. - :param required: controls if this is optional or not. - :param default: the default value if omitted. This can also be a callable, - in which case it's invoked when the default is needed - without any arguments. - :param callback: A function to further process or validate the value - after type conversion. It is called as ``f(ctx, param, value)`` - and must return the value. It is called for all sources, - including prompts. - :param nargs: the number of arguments to match. If not ``1`` the return - value is a tuple instead of single value. The default for - nargs is ``1`` (except if the type is a tuple, then it's - the arity of the tuple). If ``nargs=-1``, all remaining - parameters are collected. - :param metavar: how the value is represented in the help page. - :param expose_value: if this is `True` then the value is passed onwards - to the command callback and stored on the context, - otherwise it's skipped. - :param is_eager: eager values are processed before non eager ones. This - should not be set for arguments or it will inverse the - order of processing. - :param envvar: a string or list of strings that are environment variables - that should be checked. - :param shell_complete: A function that returns custom shell - completions. Used instead of the param's type completion if - given. Takes ``ctx, param, incomplete`` and must return a list - of :class:`~click.shell_completion.CompletionItem` or a list of - strings. - :param deprecated: If ``True`` or non-empty string, issues a message - indicating that the argument is deprecated and highlights - its deprecation in --help. The message can be customized - by using a string as the value. A deprecated parameter - cannot be required, a ValueError will be raised otherwise. - - .. versionchanged:: 8.2.0 - Introduction of ``deprecated``. - - .. versionchanged:: 8.2 - Adding duplicate parameter names to a :class:`~click.core.Command` will - result in a ``UserWarning`` being shown. - - .. versionchanged:: 8.2 - Adding duplicate parameter names to a :class:`~click.core.Command` will - result in a ``UserWarning`` being shown. - - .. versionchanged:: 8.0 - ``process_value`` validates required parameters and bounded - ``nargs``, and invokes the parameter callback before returning - the value. This allows the callback to validate prompts. - ``full_process_value`` is removed. - - .. versionchanged:: 8.0 - ``autocompletion`` is renamed to ``shell_complete`` and has new - semantics described above. The old name is deprecated and will - be removed in 8.1, until then it will be wrapped to match the - new requirements. - - .. versionchanged:: 8.0 - For ``multiple=True, nargs>1``, the default must be a list of - tuples. - - .. versionchanged:: 8.0 - Setting a default is no longer required for ``nargs>1``, it will - default to ``None``. ``multiple=True`` or ``nargs=-1`` will - default to ``()``. - - .. versionchanged:: 7.1 - Empty environment variables are ignored rather than taking the - empty string value. This makes it possible for scripts to clear - variables if they can't unset them. - - .. versionchanged:: 2.0 - Changed signature for parameter callback to also be passed the - parameter. The old callback format will still work, but it will - raise a warning to give you a chance to migrate the code easier. - """ - - param_type_name = "parameter" - - def __init__( - self, - param_decls: cabc.Sequence[str] | None = None, - type: types.ParamType | t.Any | None = None, - required: bool = False, - default: t.Any | t.Callable[[], t.Any] | None = None, - callback: t.Callable[[Context, Parameter, t.Any], t.Any] | None = None, - nargs: int | None = None, - multiple: bool = False, - metavar: str | None = None, - expose_value: bool = True, - is_eager: bool = False, - envvar: str | cabc.Sequence[str] | None = None, - shell_complete: t.Callable[ - [Context, Parameter, str], list[CompletionItem] | list[str] - ] - | None = None, - deprecated: bool | str = False, - ) -> None: - self.name: str | None - self.opts: list[str] - self.secondary_opts: list[str] - self.name, self.opts, self.secondary_opts = self._parse_decls( - param_decls or (), expose_value - ) - self.type: types.ParamType = types.convert_type(type, default) - - # Default nargs to what the type tells us if we have that - # information available. - if nargs is None: - if self.type.is_composite: - nargs = self.type.arity - else: - nargs = 1 - - self.required = required - self.callback = callback - self.nargs = nargs - self.multiple = multiple - self.expose_value = expose_value - self.default = default - self.is_eager = is_eager - self.metavar = metavar - self.envvar = envvar - self._custom_shell_complete = shell_complete - self.deprecated = deprecated - - if __debug__: - if self.type.is_composite and nargs != self.type.arity: - raise ValueError( - f"'nargs' must be {self.type.arity} (or None) for" - f" type {self.type!r}, but it was {nargs}." - ) - - # Skip no default or callable default. - check_default = default if not callable(default) else None - - if check_default is not None: - if multiple: - try: - # Only check the first value against nargs. - check_default = next(_check_iter(check_default), None) - except TypeError: - raise ValueError( - "'default' must be a list when 'multiple' is true." - ) from None - - # Can be None for multiple with empty default. - if nargs != 1 and check_default is not None: - try: - _check_iter(check_default) - except TypeError: - if multiple: - message = ( - "'default' must be a list of lists when 'multiple' is" - " true and 'nargs' != 1." - ) - else: - message = "'default' must be a list when 'nargs' != 1." - - raise ValueError(message) from None - - if nargs > 1 and len(check_default) != nargs: - subject = "item length" if multiple else "length" - raise ValueError( - f"'default' {subject} must match nargs={nargs}." - ) - - if required and deprecated: - raise ValueError( - f"The {self.param_type_name} '{self.human_readable_name}' " - "is deprecated and still required. A deprecated " - f"{self.param_type_name} cannot be required." - ) - - def to_info_dict(self) -> dict[str, t.Any]: - """Gather information that could be useful for a tool generating - user-facing documentation. - - Use :meth:`click.Context.to_info_dict` to traverse the entire - CLI structure. - - .. versionadded:: 8.0 - """ - return { - "name": self.name, - "param_type_name": self.param_type_name, - "opts": self.opts, - "secondary_opts": self.secondary_opts, - "type": self.type.to_info_dict(), - "required": self.required, - "nargs": self.nargs, - "multiple": self.multiple, - "default": self.default, - "envvar": self.envvar, - } - - def __repr__(self) -> str: - return f"<{self.__class__.__name__} {self.name}>" - - def _parse_decls( - self, decls: cabc.Sequence[str], expose_value: bool - ) -> tuple[str | None, list[str], list[str]]: - raise NotImplementedError() - - @property - def human_readable_name(self) -> str: - """Returns the human readable name of this parameter. This is the - same as the name for options, but the metavar for arguments. - """ - return self.name # type: ignore - - def make_metavar(self, ctx: Context) -> str: - if self.metavar is not None: - return self.metavar - - metavar = self.type.get_metavar(param=self, ctx=ctx) - - if metavar is None: - metavar = self.type.name.upper() - - if self.nargs != 1: - metavar += "..." - - return metavar - - @t.overload - def get_default( - self, ctx: Context, call: t.Literal[True] = True - ) -> t.Any | None: ... - - @t.overload - def get_default( - self, ctx: Context, call: bool = ... - ) -> t.Any | t.Callable[[], t.Any] | None: ... - - def get_default( - self, ctx: Context, call: bool = True - ) -> t.Any | t.Callable[[], t.Any] | None: - """Get the default for the parameter. Tries - :meth:`Context.lookup_default` first, then the local default. - - :param ctx: Current context. - :param call: If the default is a callable, call it. Disable to - return the callable instead. - - .. versionchanged:: 8.0.2 - Type casting is no longer performed when getting a default. - - .. versionchanged:: 8.0.1 - Type casting can fail in resilient parsing mode. Invalid - defaults will not prevent showing help text. - - .. versionchanged:: 8.0 - Looks at ``ctx.default_map`` first. - - .. versionchanged:: 8.0 - Added the ``call`` parameter. - """ - value = ctx.lookup_default(self.name, call=False) # type: ignore - - if value is None: - value = self.default - - if call and callable(value): - value = value() - - return value - - def add_to_parser(self, parser: _OptionParser, ctx: Context) -> None: - raise NotImplementedError() - - def consume_value( - self, ctx: Context, opts: cabc.Mapping[str, t.Any] - ) -> tuple[t.Any, ParameterSource]: - value = opts.get(self.name) # type: ignore - source = ParameterSource.COMMANDLINE - - if value is None: - value = self.value_from_envvar(ctx) - source = ParameterSource.ENVIRONMENT - - if value is None: - value = ctx.lookup_default(self.name) # type: ignore - source = ParameterSource.DEFAULT_MAP - - if value is None: - value = self.get_default(ctx) - source = ParameterSource.DEFAULT - - return value, source - - def type_cast_value(self, ctx: Context, value: t.Any) -> t.Any: - """Convert and validate a value against the option's - :attr:`type`, :attr:`multiple`, and :attr:`nargs`. - """ - if value is None: - return () if self.multiple or self.nargs == -1 else None - - def check_iter(value: t.Any) -> cabc.Iterator[t.Any]: - try: - return _check_iter(value) - except TypeError: - # This should only happen when passing in args manually, - # the parser should construct an iterable when parsing - # the command line. - raise BadParameter( - _("Value must be an iterable."), ctx=ctx, param=self - ) from None - - if self.nargs == 1 or self.type.is_composite: - - def convert(value: t.Any) -> t.Any: - return self.type(value, param=self, ctx=ctx) - - elif self.nargs == -1: - - def convert(value: t.Any) -> t.Any: # tuple[t.Any, ...] - return tuple(self.type(x, self, ctx) for x in check_iter(value)) - - else: # nargs > 1 - - def convert(value: t.Any) -> t.Any: # tuple[t.Any, ...] - value = tuple(check_iter(value)) - - if len(value) != self.nargs: - raise BadParameter( - ngettext( - "Takes {nargs} values but 1 was given.", - "Takes {nargs} values but {len} were given.", - len(value), - ).format(nargs=self.nargs, len=len(value)), - ctx=ctx, - param=self, - ) - - return tuple(self.type(x, self, ctx) for x in value) - - if self.multiple: - return tuple(convert(x) for x in check_iter(value)) - - return convert(value) - - def value_is_missing(self, value: t.Any) -> bool: - if value is None: - return True - - if (self.nargs != 1 or self.multiple) and value == (): - return True - - return False - - def process_value(self, ctx: Context, value: t.Any) -> t.Any: - value = self.type_cast_value(ctx, value) - - if self.required and self.value_is_missing(value): - raise MissingParameter(ctx=ctx, param=self) - - if self.callback is not None: - value = self.callback(ctx, self, value) - - return value - - def resolve_envvar_value(self, ctx: Context) -> str | None: - if self.envvar is None: - return None - - if isinstance(self.envvar, str): - rv = os.environ.get(self.envvar) - - if rv: - return rv - else: - for envvar in self.envvar: - rv = os.environ.get(envvar) - - if rv: - return rv - - return None - - def value_from_envvar(self, ctx: Context) -> t.Any | None: - rv: t.Any | None = self.resolve_envvar_value(ctx) - - if rv is not None and self.nargs != 1: - rv = self.type.split_envvar_value(rv) - - return rv - - def handle_parse_result( - self, ctx: Context, opts: cabc.Mapping[str, t.Any], args: list[str] - ) -> tuple[t.Any, list[str]]: - with augment_usage_errors(ctx, param=self): - value, source = self.consume_value(ctx, opts) - - if ( - self.deprecated - and value is not None - and source - not in ( - ParameterSource.DEFAULT, - ParameterSource.DEFAULT_MAP, - ) - ): - extra_message = ( - f" {self.deprecated}" if isinstance(self.deprecated, str) else "" - ) - message = _( - "DeprecationWarning: The {param_type} {name!r} is deprecated." - "{extra_message}" - ).format( - param_type=self.param_type_name, - name=self.human_readable_name, - extra_message=extra_message, - ) - echo(style(message, fg="red"), err=True) - - ctx.set_parameter_source(self.name, source) # type: ignore - - try: - value = self.process_value(ctx, value) - except Exception: - if not ctx.resilient_parsing: - raise - - value = None - - if self.expose_value: - ctx.params[self.name] = value # type: ignore - - return value, args - - def get_help_record(self, ctx: Context) -> tuple[str, str] | None: - pass - - def get_usage_pieces(self, ctx: Context) -> list[str]: - return [] - - def get_error_hint(self, ctx: Context) -> str: - """Get a stringified version of the param for use in error messages to - indicate which param caused the error. - """ - hint_list = self.opts or [self.human_readable_name] - return " / ".join(f"'{x}'" for x in hint_list) - - def shell_complete(self, ctx: Context, incomplete: str) -> list[CompletionItem]: - """Return a list of completions for the incomplete value. If a - ``shell_complete`` function was given during init, it is used. - Otherwise, the :attr:`type` - :meth:`~click.types.ParamType.shell_complete` function is used. - - :param ctx: Invocation context for this command. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - if self._custom_shell_complete is not None: - results = self._custom_shell_complete(ctx, self, incomplete) - - if results and isinstance(results[0], str): - from click.shell_completion import CompletionItem - - results = [CompletionItem(c) for c in results] - - return t.cast("list[CompletionItem]", results) - - return self.type.shell_complete(ctx, self, incomplete) - - -class Option(Parameter): - """Options are usually optional values on the command line and - have some extra features that arguments don't have. - - All other parameters are passed onwards to the parameter constructor. - - :param show_default: Show the default value for this option in its - help text. Values are not shown by default, unless - :attr:`Context.show_default` is ``True``. If this value is a - string, it shows that string in parentheses instead of the - actual value. This is particularly useful for dynamic options. - For single option boolean flags, the default remains hidden if - its value is ``False``. - :param show_envvar: Controls if an environment variable should be - shown on the help page and error messages. - 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. A deprecated option cannot be - prompted. - :param confirmation_prompt: Prompt a second time to confirm the - value if it was prompted for. Can be set to a string instead of - ``True`` to customize the message. - :param prompt_required: If set to ``False``, the user will be - prompted for input only when the option was specified as a flag - without a value. - :param hide_input: If this is ``True`` then the input on the prompt - will be hidden from the user. This is useful for password input. - :param is_flag: forces this option to act as a flag. The default is - auto detection. - :param flag_value: which value should be used for this flag if it's - enabled. This is set to a boolean automatically if - the option string contains a slash to mark two options. - :param multiple: if this is set to `True` then the argument is accepted - multiple times and recorded. This is similar to ``nargs`` - in how it works but supports arbitrary number of - arguments. - :param count: this flag makes an option increment an integer. - :param allow_from_autoenv: if this is enabled then the value of this - parameter will be pulled from an environment - variable in case a prefix is defined on the - context. - :param help: the help string. - :param hidden: hide this option from help outputs. - :param attrs: Other command arguments described in :class:`Parameter`. - - .. versionchanged:: 8.2 - ``envvar`` used with ``flag_value`` will always use the ``flag_value``, - previously it would use the value of the environment variable. - - .. versionchanged:: 8.1 - Help text indentation is cleaned here instead of only in the - ``@option`` decorator. - - .. versionchanged:: 8.1 - The ``show_default`` parameter overrides - ``Context.show_default``. - - .. versionchanged:: 8.1 - The default of a single option boolean flag is not shown if the - default value is ``False``. - - .. versionchanged:: 8.0.1 - ``type`` is detected from ``flag_value`` if given. - """ - - param_type_name = "option" - - def __init__( - self, - param_decls: cabc.Sequence[str] | None = None, - show_default: bool | str | None = None, - prompt: bool | str = False, - confirmation_prompt: bool | str = False, - prompt_required: bool = True, - hide_input: bool = False, - is_flag: bool | None = None, - flag_value: t.Any | None = None, - multiple: bool = False, - count: bool = False, - allow_from_autoenv: bool = True, - type: types.ParamType | t.Any | None = None, - help: str | None = None, - hidden: bool = False, - show_choices: bool = True, - show_envvar: bool = False, - deprecated: bool | str = False, - **attrs: t.Any, - ) -> None: - if help: - help = inspect.cleandoc(help) - - default_is_missing = "default" not in attrs - super().__init__( - param_decls, type=type, multiple=multiple, deprecated=deprecated, **attrs - ) - - if prompt is True: - if self.name is None: - raise TypeError("'name' is required with 'prompt=True'.") - - prompt_text: str | None = self.name.replace("_", " ").capitalize() - elif prompt is False: - prompt_text = None - else: - prompt_text = prompt - - if deprecated: - deprecated_message = ( - f"(DEPRECATED: {deprecated})" - if isinstance(deprecated, str) - else "(DEPRECATED)" - ) - help = help + deprecated_message if help is not None else deprecated_message - - self.prompt = prompt_text - self.confirmation_prompt = confirmation_prompt - self.prompt_required = prompt_required - self.hide_input = hide_input - self.hidden = hidden - - # If prompt is enabled but not required, then the option can be - # used as a flag to indicate using prompt or flag_value. - self._flag_needs_value = self.prompt is not None and not self.prompt_required - - if is_flag is None: - if flag_value is not None: - # Implicitly a flag because flag_value was set. - is_flag = True - elif self._flag_needs_value: - # Not a flag, but when used as a flag it shows a prompt. - is_flag = False - else: - # Implicitly a flag because flag options were given. - is_flag = bool(self.secondary_opts) - elif is_flag is False and not self._flag_needs_value: - # Not a flag, and prompt is not enabled, can be used as a - # flag if flag_value is set. - self._flag_needs_value = flag_value is not None - - self.default: t.Any | t.Callable[[], t.Any] - - if is_flag and default_is_missing and not self.required: - if multiple: - self.default = () - else: - self.default = False - - self.type: types.ParamType - if is_flag and type is None: - if flag_value is None: - flag_value = not self.default - # Re-guess the type from the flag value instead of the - # default. - self.type = types.convert_type(None, flag_value) - - self.is_flag: bool = is_flag - self.is_bool_flag: bool = is_flag and isinstance(self.type, types.BoolParamType) - self.flag_value: t.Any = flag_value - - # Counting - self.count = count - if count: - if type is None: - self.type = types.IntRange(min=0) - if default_is_missing: - self.default = 0 - - self.allow_from_autoenv = allow_from_autoenv - self.help = help - self.show_default = show_default - self.show_choices = show_choices - self.show_envvar = show_envvar - - if __debug__: - if deprecated and prompt: - raise ValueError("`deprecated` options cannot use `prompt`.") - - if self.nargs == -1: - raise TypeError("nargs=-1 is not supported for options.") - - if self.prompt and self.is_flag and not self.is_bool_flag: - raise TypeError("'prompt' is not valid for non-boolean flag.") - - if not self.is_bool_flag and self.secondary_opts: - raise TypeError("Secondary flag is not valid for non-boolean flag.") - - if self.is_bool_flag and self.hide_input and self.prompt is not None: - raise TypeError( - "'prompt' with 'hide_input' is not valid for boolean flag." - ) - - if self.count: - if self.multiple: - raise TypeError("'count' is not valid with 'multiple'.") - - if self.is_flag: - raise TypeError("'count' is not valid with 'is_flag'.") - - def to_info_dict(self) -> dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict.update( - help=self.help, - prompt=self.prompt, - is_flag=self.is_flag, - flag_value=self.flag_value, - count=self.count, - hidden=self.hidden, - ) - return info_dict - - def get_error_hint(self, ctx: Context) -> str: - result = super().get_error_hint(ctx) - if self.show_envvar: - result += f" (env var: '{self.envvar}')" - return result - - def _parse_decls( - self, decls: cabc.Sequence[str], expose_value: bool - ) -> tuple[str | None, list[str], list[str]]: - opts = [] - secondary_opts = [] - name = None - possible_names = [] - - for decl in decls: - if decl.isidentifier(): - if name is not None: - raise TypeError(f"Name '{name}' defined twice") - name = decl - else: - split_char = ";" if decl[:1] == "/" else "/" - if split_char in decl: - first, second = decl.split(split_char, 1) - first = first.rstrip() - if first: - possible_names.append(_split_opt(first)) - opts.append(first) - second = second.lstrip() - if second: - secondary_opts.append(second.lstrip()) - if first == second: - raise ValueError( - f"Boolean option {decl!r} cannot use the" - " same flag for true/false." - ) - else: - possible_names.append(_split_opt(decl)) - opts.append(decl) - - if name is None and possible_names: - possible_names.sort(key=lambda x: -len(x[0])) # group long options first - name = possible_names[0][1].replace("-", "_").lower() - if not name.isidentifier(): - name = None - - if name is None: - if not expose_value: - return None, opts, secondary_opts - raise TypeError( - f"Could not determine name for option with declarations {decls!r}" - ) - - if not opts and not secondary_opts: - raise TypeError( - f"No options defined but a name was passed ({name})." - " Did you mean to declare an argument instead? Did" - f" you mean to pass '--{name}'?" - ) - - return name, opts, secondary_opts - - def add_to_parser(self, parser: _OptionParser, ctx: Context) -> None: - if self.multiple: - action = "append" - elif self.count: - action = "count" - else: - action = "store" - - if self.is_flag: - action = f"{action}_const" - - if self.is_bool_flag and self.secondary_opts: - parser.add_option( - obj=self, opts=self.opts, dest=self.name, action=action, const=True - ) - parser.add_option( - obj=self, - opts=self.secondary_opts, - dest=self.name, - action=action, - const=False, - ) - else: - parser.add_option( - obj=self, - opts=self.opts, - dest=self.name, - action=action, - const=self.flag_value, - ) - else: - parser.add_option( - obj=self, - opts=self.opts, - dest=self.name, - action=action, - nargs=self.nargs, - ) - - def get_help_record(self, ctx: Context) -> tuple[str, str] | None: - if self.hidden: - return None - - any_prefix_is_slash = False - - def _write_opts(opts: cabc.Sequence[str]) -> str: - nonlocal any_prefix_is_slash - - rv, any_slashes = join_options(opts) - - if any_slashes: - any_prefix_is_slash = True - - if not self.is_flag and not self.count: - rv += f" {self.make_metavar(ctx=ctx)}" - - return rv - - rv = [_write_opts(self.opts)] - - if self.secondary_opts: - rv.append(_write_opts(self.secondary_opts)) - - help = self.help or "" - - extra = self.get_help_extra(ctx) - extra_items = [] - if "envvars" in extra: - extra_items.append( - _("env var: {var}").format(var=", ".join(extra["envvars"])) - ) - if "default" in extra: - extra_items.append(_("default: {default}").format(default=extra["default"])) - if "range" in extra: - extra_items.append(extra["range"]) - if "required" in extra: - extra_items.append(_(extra["required"])) - - if extra_items: - extra_str = "; ".join(extra_items) - help = f"{help} [{extra_str}]" if help else f"[{extra_str}]" - - return ("; " if any_prefix_is_slash else " / ").join(rv), help - - def get_help_extra(self, ctx: Context) -> types.OptionHelpExtra: - extra: types.OptionHelpExtra = {} - - if self.show_envvar: - envvar = self.envvar - - if envvar is None: - if ( - self.allow_from_autoenv - and ctx.auto_envvar_prefix is not None - and self.name is not None - ): - envvar = f"{ctx.auto_envvar_prefix}_{self.name.upper()}" - - if envvar is not None: - if isinstance(envvar, str): - extra["envvars"] = (envvar,) - else: - extra["envvars"] = tuple(str(d) for d in envvar) - - # Temporarily enable resilient parsing to avoid type casting - # failing for the default. Might be possible to extend this to - # help formatting in general. - resilient = ctx.resilient_parsing - ctx.resilient_parsing = True - - try: - default_value = self.get_default(ctx, call=False) - finally: - ctx.resilient_parsing = resilient - - show_default = False - show_default_is_str = False - - if self.show_default is not None: - if isinstance(self.show_default, str): - show_default_is_str = show_default = True - else: - show_default = self.show_default - elif ctx.show_default is not None: - show_default = ctx.show_default - - if show_default_is_str or (show_default and (default_value is not None)): - if show_default_is_str: - default_string = f"({self.show_default})" - elif isinstance(default_value, (list, tuple)): - default_string = ", ".join(str(d) for d in default_value) - elif inspect.isfunction(default_value): - default_string = _("(dynamic)") - elif self.is_bool_flag and self.secondary_opts: - # For boolean flags that have distinct True/False opts, - # use the opt without prefix instead of the value. - default_string = _split_opt( - (self.opts if default_value else self.secondary_opts)[0] - )[1] - elif self.is_bool_flag and not self.secondary_opts and not default_value: - default_string = "" - elif default_value == "": - default_string = '""' - else: - default_string = str(default_value) - - if default_string: - extra["default"] = default_string - - if ( - isinstance(self.type, types._NumberRangeBase) - # skip count with default range type - and not (self.count and self.type.min == 0 and self.type.max is None) - ): - range_str = self.type._describe_range() - - if range_str: - extra["range"] = range_str - - if self.required: - extra["required"] = "required" - - return extra - - @t.overload - def get_default( - self, ctx: Context, call: t.Literal[True] = True - ) -> t.Any | None: ... - - @t.overload - def get_default( - self, ctx: Context, call: bool = ... - ) -> t.Any | t.Callable[[], t.Any] | None: ... - - def get_default( - self, ctx: Context, call: bool = True - ) -> t.Any | t.Callable[[], t.Any] | None: - # If we're a non boolean flag our default is more complex because - # we need to look at all flags in the same group to figure out - # if we're the 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 t.cast(Option, param).flag_value - - return None - - return super().get_default(ctx, call=call) - - def prompt_for_value(self, ctx: Context) -> t.Any: - """This is an alternative flow that can be activated in the full - value processing if a value does not exist. It will prompt the - user until a valid value exists and then returns the processed - value as result. - """ - assert self.prompt is not None - - # Calculate the default before prompting anything to be stable. - default = self.get_default(ctx) - - # If this is a prompt for a flag we need to handle this - # differently. - if self.is_bool_flag: - return confirm(self.prompt, default) - - # If show_default is set to True/False, provide this to `prompt` as well. For - # non-bool values of `show_default`, we use `prompt`'s default behavior - prompt_kwargs: t.Any = {} - if isinstance(self.show_default, bool): - prompt_kwargs["show_default"] = self.show_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), - **prompt_kwargs, - ) - - def resolve_envvar_value(self, ctx: Context) -> str | None: - rv = super().resolve_envvar_value(ctx) - - if rv is not None: - if self.is_flag and self.flag_value: - return str(self.flag_value) - return rv - - if ( - self.allow_from_autoenv - and ctx.auto_envvar_prefix is not None - and self.name is not None - ): - envvar = f"{ctx.auto_envvar_prefix}_{self.name.upper()}" - rv = os.environ.get(envvar) - - if rv: - return rv - - return None - - def value_from_envvar(self, ctx: Context) -> t.Any | None: - rv: t.Any | None = self.resolve_envvar_value(ctx) - - if rv is None: - return None - - value_depth = (self.nargs != 1) + bool(self.multiple) - - if value_depth > 0: - rv = self.type.split_envvar_value(rv) - - if self.multiple and self.nargs != 1: - rv = batch(rv, self.nargs) - - return rv - - def consume_value( - self, ctx: Context, opts: cabc.Mapping[str, Parameter] - ) -> tuple[t.Any, ParameterSource]: - value, source = super().consume_value(ctx, opts) - - # The parser will emit a sentinel value if the option can be - # given as a flag without a value. This is different from None - # to distinguish from the flag not being given at all. - if value is _flag_needs_value: - if self.prompt is not None and not ctx.resilient_parsing: - value = self.prompt_for_value(ctx) - source = ParameterSource.PROMPT - else: - value = self.flag_value - source = ParameterSource.COMMANDLINE - - elif ( - self.multiple - and value is not None - and any(v is _flag_needs_value for v in value) - ): - value = [self.flag_value if v is _flag_needs_value else v for v in value] - source = ParameterSource.COMMANDLINE - - # The value wasn't set, or used the param's default, prompt if - # prompting is enabled. - elif ( - source in {None, ParameterSource.DEFAULT} - and self.prompt is not None - and (self.required or self.prompt_required) - and not ctx.resilient_parsing - ): - value = self.prompt_for_value(ctx) - source = ParameterSource.PROMPT - - return value, source - - -class Argument(Parameter): - """Arguments are positional parameters to a command. They generally - provide fewer features than options but can have infinite ``nargs`` - and are required by default. - - All parameters are passed onwards to the constructor of :class:`Parameter`. - """ - - param_type_name = "argument" - - def __init__( - self, - param_decls: cabc.Sequence[str], - required: bool | None = None, - **attrs: t.Any, - ) -> None: - if required is None: - if attrs.get("default") is not None: - required = False - else: - required = attrs.get("nargs", 1) > 0 - - if "multiple" in attrs: - raise TypeError("__init__() got an unexpected keyword argument 'multiple'.") - - super().__init__(param_decls, required=required, **attrs) - - if __debug__: - if self.default is not None and self.nargs == -1: - raise TypeError("'default' is not supported for nargs=-1.") - - @property - def human_readable_name(self) -> str: - if self.metavar is not None: - return self.metavar - return self.name.upper() # type: ignore - - def make_metavar(self, ctx: Context) -> str: - if self.metavar is not None: - return self.metavar - var = self.type.get_metavar(param=self, ctx=ctx) - if not var: - var = self.name.upper() # type: ignore - if self.deprecated: - var += "!" - if not self.required: - var = f"[{var}]" - if self.nargs != 1: - var += "..." - return var - - def _parse_decls( - self, decls: cabc.Sequence[str], expose_value: bool - ) -> tuple[str | None, list[str], list[str]]: - if not decls: - if not expose_value: - return None, [], [] - raise TypeError("Argument is marked as exposed, but does not have a name.") - if len(decls) == 1: - name = arg = decls[0] - name = name.replace("-", "_").lower() - else: - raise TypeError( - "Arguments take exactly one parameter declaration, got" - f" {len(decls)}: {decls}." - ) - return name, [arg], [] - - def get_usage_pieces(self, ctx: Context) -> list[str]: - return [self.make_metavar(ctx)] - - def get_error_hint(self, ctx: Context) -> str: - return f"'{self.make_metavar(ctx)}'" - - def add_to_parser(self, parser: _OptionParser, ctx: Context) -> None: - parser.add_argument(dest=self.name, nargs=self.nargs, obj=self) - - -def __getattr__(name: str) -> object: - import warnings - - if name == "BaseCommand": - warnings.warn( - "'BaseCommand' is deprecated and will be removed in Click 9.0. Use" - " 'Command' instead.", - DeprecationWarning, - stacklevel=2, - ) - return _BaseCommand - - if name == "MultiCommand": - warnings.warn( - "'MultiCommand' is deprecated and will be removed in Click 9.0. Use" - " 'Group' instead.", - DeprecationWarning, - stacklevel=2, - ) - return _MultiCommand - - raise AttributeError(name) diff --git a/venv/lib/python3.12/site-packages/click/decorators.py b/venv/lib/python3.12/site-packages/click/decorators.py deleted file mode 100644 index 21f4c34..0000000 --- a/venv/lib/python3.12/site-packages/click/decorators.py +++ /dev/null @@ -1,551 +0,0 @@ -from __future__ import annotations - -import inspect -import typing as t -from functools import update_wrapper -from gettext import gettext as _ - -from .core import Argument -from .core import Command -from .core import Context -from .core import Group -from .core import Option -from .core import Parameter -from .globals import get_current_context -from .utils import echo - -if t.TYPE_CHECKING: - import typing_extensions as te - - P = te.ParamSpec("P") - -R = t.TypeVar("R") -T = t.TypeVar("T") -_AnyCallable = t.Callable[..., t.Any] -FC = t.TypeVar("FC", bound="_AnyCallable | Command") - - -def pass_context(f: t.Callable[te.Concatenate[Context, P], R]) -> t.Callable[P, R]: - """Marks a callback as wanting to receive the current context - object as first argument. - """ - - def new_func(*args: P.args, **kwargs: P.kwargs) -> R: - return f(get_current_context(), *args, **kwargs) - - return update_wrapper(new_func, f) - - -def pass_obj(f: t.Callable[te.Concatenate[T, P], R]) -> t.Callable[P, R]: - """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: P.args, **kwargs: P.kwargs) -> R: - return f(get_current_context().obj, *args, **kwargs) - - return update_wrapper(new_func, f) - - -def make_pass_decorator( - object_type: type[T], ensure: bool = False -) -> t.Callable[[t.Callable[te.Concatenate[T, P], R]], t.Callable[P, R]]: - """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: t.Callable[te.Concatenate[T, P], R]) -> t.Callable[P, R]: - def new_func(*args: P.args, **kwargs: P.kwargs) -> R: - ctx = get_current_context() - - obj: T | None - if ensure: - obj = ctx.ensure_object(object_type) - else: - obj = ctx.find_object(object_type) - - if obj is None: - raise RuntimeError( - "Managed to invoke callback without a context" - f" object of type {object_type.__name__!r}" - " existing." - ) - - return ctx.invoke(f, obj, *args, **kwargs) - - return update_wrapper(new_func, f) - - return decorator - - -def pass_meta_key( - key: str, *, doc_description: str | None = None -) -> t.Callable[[t.Callable[te.Concatenate[T, P], R]], t.Callable[P, R]]: - """Create a decorator that passes a key from - :attr:`click.Context.meta` as the first argument to the decorated - function. - - :param key: Key in ``Context.meta`` to pass. - :param doc_description: Description of the object being passed, - inserted into the decorator's docstring. Defaults to "the 'key' - key from Context.meta". - - .. versionadded:: 8.0 - """ - - def decorator(f: t.Callable[te.Concatenate[T, P], R]) -> t.Callable[P, R]: - def new_func(*args: P.args, **kwargs: P.kwargs) -> R: - ctx = get_current_context() - obj = ctx.meta[key] - return ctx.invoke(f, obj, *args, **kwargs) - - return update_wrapper(new_func, f) - - if doc_description is None: - doc_description = f"the {key!r} key from :attr:`click.Context.meta`" - - decorator.__doc__ = ( - f"Decorator that passes {doc_description} as the first argument" - " to the decorated function." - ) - return decorator - - -CmdType = t.TypeVar("CmdType", bound=Command) - - -# variant: no call, directly as decorator for a function. -@t.overload -def command(name: _AnyCallable) -> Command: ... - - -# variant: with positional name and with positional or keyword cls argument: -# @command(namearg, CommandCls, ...) or @command(namearg, cls=CommandCls, ...) -@t.overload -def command( - name: str | None, - cls: type[CmdType], - **attrs: t.Any, -) -> t.Callable[[_AnyCallable], CmdType]: ... - - -# variant: name omitted, cls _must_ be a keyword argument, @command(cls=CommandCls, ...) -@t.overload -def command( - name: None = None, - *, - cls: type[CmdType], - **attrs: t.Any, -) -> t.Callable[[_AnyCallable], CmdType]: ... - - -# variant: with optional string name, no cls argument provided. -@t.overload -def command( - name: str | None = ..., cls: None = None, **attrs: t.Any -) -> t.Callable[[_AnyCallable], Command]: ... - - -def command( - name: str | _AnyCallable | None = None, - cls: type[CmdType] | None = None, - **attrs: t.Any, -) -> Command | t.Callable[[_AnyCallable], Command | CmdType]: - 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, converted to - lowercase, with underscores ``_`` replaced by dashes ``-``, and the suffixes - ``_command``, ``_cmd``, ``_group``, and ``_grp`` are removed. For example, - ``init_data_command`` becomes ``init-data``. - - All keyword arguments are forwarded to the underlying command class. - For the ``params`` argument, any decorated params are appended to - the end of the list. - - 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. Defaults to modifying the function's - name as described above. - :param cls: The command class to create. Defaults to :class:`Command`. - - .. versionchanged:: 8.2 - The suffixes ``_command``, ``_cmd``, ``_group``, and ``_grp`` are - removed when generating the name. - - .. versionchanged:: 8.1 - This decorator can be applied without parentheses. - - .. versionchanged:: 8.1 - The ``params`` argument can be used. Decorated params are - appended to the end of the list. - """ - - func: t.Callable[[_AnyCallable], t.Any] | None = None - - if callable(name): - func = name - name = None - assert cls is None, "Use 'command(cls=cls)(callable)' to specify a class." - assert not attrs, "Use 'command(**kwargs)(callable)' to provide arguments." - - if cls is None: - cls = t.cast("type[CmdType]", Command) - - def decorator(f: _AnyCallable) -> CmdType: - if isinstance(f, Command): - raise TypeError("Attempted to convert a callback into a command twice.") - - attr_params = attrs.pop("params", None) - params = attr_params if attr_params is not None else [] - - try: - decorator_params = f.__click_params__ # type: ignore - except AttributeError: - pass - else: - del f.__click_params__ # type: ignore - params.extend(reversed(decorator_params)) - - if attrs.get("help") is None: - attrs["help"] = f.__doc__ - - if t.TYPE_CHECKING: - assert cls is not None - assert not callable(name) - - if name is not None: - cmd_name = name - else: - cmd_name = f.__name__.lower().replace("_", "-") - cmd_left, sep, suffix = cmd_name.rpartition("-") - - if sep and suffix in {"command", "cmd", "group", "grp"}: - cmd_name = cmd_left - - cmd = cls(name=cmd_name, callback=f, params=params, **attrs) - cmd.__doc__ = f.__doc__ - return cmd - - if func is not None: - return decorator(func) - - return decorator - - -GrpType = t.TypeVar("GrpType", bound=Group) - - -# variant: no call, directly as decorator for a function. -@t.overload -def group(name: _AnyCallable) -> Group: ... - - -# variant: with positional name and with positional or keyword cls argument: -# @group(namearg, GroupCls, ...) or @group(namearg, cls=GroupCls, ...) -@t.overload -def group( - name: str | None, - cls: type[GrpType], - **attrs: t.Any, -) -> t.Callable[[_AnyCallable], GrpType]: ... - - -# variant: name omitted, cls _must_ be a keyword argument, @group(cmd=GroupCls, ...) -@t.overload -def group( - name: None = None, - *, - cls: type[GrpType], - **attrs: t.Any, -) -> t.Callable[[_AnyCallable], GrpType]: ... - - -# variant: with optional string name, no cls argument provided. -@t.overload -def group( - name: str | None = ..., cls: None = None, **attrs: t.Any -) -> t.Callable[[_AnyCallable], Group]: ... - - -def group( - name: str | _AnyCallable | None = None, - cls: type[GrpType] | None = None, - **attrs: t.Any, -) -> Group | t.Callable[[_AnyCallable], Group | GrpType]: - """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`. - - .. versionchanged:: 8.1 - This decorator can be applied without parentheses. - """ - if cls is None: - cls = t.cast("type[GrpType]", Group) - - if callable(name): - return command(cls=cls, **attrs)(name) - - return command(name, cls, **attrs) - - -def _param_memo(f: t.Callable[..., t.Any], param: Parameter) -> None: - if isinstance(f, Command): - f.params.append(param) - else: - if not hasattr(f, "__click_params__"): - f.__click_params__ = [] # type: ignore - - f.__click_params__.append(param) # type: ignore - - -def argument( - *param_decls: str, cls: type[Argument] | None = None, **attrs: t.Any -) -> t.Callable[[FC], FC]: - """Attaches an argument to the command. All positional arguments are - passed as parameter declarations to :class:`Argument`; all keyword - arguments are forwarded unchanged (except ``cls``). - This is equivalent to creating an :class:`Argument` instance manually - and attaching it to the :attr:`Command.params` list. - - For the default argument class, refer to :class:`Argument` and - :class:`Parameter` for descriptions of parameters. - - :param cls: the argument class to instantiate. This defaults to - :class:`Argument`. - :param param_decls: Passed as positional arguments to the constructor of - ``cls``. - :param attrs: Passed as keyword arguments to the constructor of ``cls``. - """ - if cls is None: - cls = Argument - - def decorator(f: FC) -> FC: - _param_memo(f, cls(param_decls, **attrs)) - return f - - return decorator - - -def option( - *param_decls: str, cls: type[Option] | None = None, **attrs: t.Any -) -> t.Callable[[FC], FC]: - """Attaches an option to the command. All positional arguments are - passed as parameter declarations to :class:`Option`; all keyword - arguments are forwarded unchanged (except ``cls``). - This is equivalent to creating an :class:`Option` instance manually - and attaching it to the :attr:`Command.params` list. - - For the default option class, refer to :class:`Option` and - :class:`Parameter` for descriptions of parameters. - - :param cls: the option class to instantiate. This defaults to - :class:`Option`. - :param param_decls: Passed as positional arguments to the constructor of - ``cls``. - :param attrs: Passed as keyword arguments to the constructor of ``cls``. - """ - if cls is None: - cls = Option - - def decorator(f: FC) -> FC: - _param_memo(f, cls(param_decls, **attrs)) - return f - - return decorator - - -def confirmation_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: - """Add a ``--yes`` option which shows a prompt before continuing if - not passed. If the prompt is declined, the program will exit. - - :param param_decls: One or more option names. Defaults to the single - value ``"--yes"``. - :param kwargs: Extra arguments are passed to :func:`option`. - """ - - def callback(ctx: Context, param: Parameter, value: bool) -> None: - if not value: - ctx.abort() - - if not param_decls: - param_decls = ("--yes",) - - kwargs.setdefault("is_flag", True) - kwargs.setdefault("callback", callback) - kwargs.setdefault("expose_value", False) - kwargs.setdefault("prompt", "Do you want to continue?") - kwargs.setdefault("help", "Confirm the action without prompting.") - return option(*param_decls, **kwargs) - - -def password_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: - """Add a ``--password`` option which prompts for a password, hiding - input and asking to enter the value again for confirmation. - - :param param_decls: One or more option names. Defaults to the single - value ``"--password"``. - :param kwargs: Extra arguments are passed to :func:`option`. - """ - if not param_decls: - param_decls = ("--password",) - - kwargs.setdefault("prompt", True) - kwargs.setdefault("confirmation_prompt", True) - kwargs.setdefault("hide_input", True) - return option(*param_decls, **kwargs) - - -def version_option( - version: str | None = None, - *param_decls: str, - package_name: str | None = None, - prog_name: str | None = None, - message: str | None = None, - **kwargs: t.Any, -) -> t.Callable[[FC], FC]: - """Add a ``--version`` option which immediately prints the version - number and exits the program. - - If ``version`` is not provided, Click will try to detect it using - :func:`importlib.metadata.version` to get the version for the - ``package_name``. - - If ``package_name`` is not provided, Click will try to detect it by - inspecting the stack frames. This will be used to detect the - version, so it must match the name of the installed package. - - :param version: The version number to show. If not provided, Click - will try to detect it. - :param param_decls: One or more option names. Defaults to the single - value ``"--version"``. - :param package_name: The package name to detect the version from. If - not provided, Click will try to detect it. - :param prog_name: The name of the CLI to show in the message. If not - provided, it will be detected from the command. - :param message: The message to show. The values ``%(prog)s``, - ``%(package)s``, and ``%(version)s`` are available. Defaults to - ``"%(prog)s, version %(version)s"``. - :param kwargs: Extra arguments are passed to :func:`option`. - :raise RuntimeError: ``version`` could not be detected. - - .. versionchanged:: 8.0 - Add the ``package_name`` parameter, and the ``%(package)s`` - value for messages. - - .. versionchanged:: 8.0 - Use :mod:`importlib.metadata` instead of ``pkg_resources``. The - version is detected based on the package name, not the entry - point name. The Python package name must match the installed - package name, or be passed with ``package_name=``. - """ - if message is None: - message = _("%(prog)s, version %(version)s") - - if version is None and package_name is None: - frame = inspect.currentframe() - f_back = frame.f_back if frame is not None else None - f_globals = f_back.f_globals if f_back is not None else None - # break reference cycle - # https://docs.python.org/3/library/inspect.html#the-interpreter-stack - del frame - - if f_globals is not None: - package_name = f_globals.get("__name__") - - if package_name == "__main__": - package_name = f_globals.get("__package__") - - if package_name: - package_name = package_name.partition(".")[0] - - def callback(ctx: Context, param: Parameter, value: bool) -> None: - if not value or ctx.resilient_parsing: - return - - nonlocal prog_name - nonlocal version - - if prog_name is None: - prog_name = ctx.find_root().info_name - - if version is None and package_name is not None: - import importlib.metadata - - try: - version = importlib.metadata.version(package_name) - except importlib.metadata.PackageNotFoundError: - raise RuntimeError( - f"{package_name!r} is not installed. Try passing" - " 'package_name' instead." - ) from None - - if version is None: - raise RuntimeError( - f"Could not determine the version for {package_name!r} automatically." - ) - - echo( - message % {"prog": prog_name, "package": package_name, "version": version}, - color=ctx.color, - ) - ctx.exit() - - if not param_decls: - param_decls = ("--version",) - - kwargs.setdefault("is_flag", True) - kwargs.setdefault("expose_value", False) - kwargs.setdefault("is_eager", True) - kwargs.setdefault("help", _("Show the version and exit.")) - kwargs["callback"] = callback - return option(*param_decls, **kwargs) - - -def help_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: - """Pre-configured ``--help`` option which immediately prints the help page - and exits the program. - - :param param_decls: One or more option names. Defaults to the single - value ``"--help"``. - :param kwargs: Extra arguments are passed to :func:`option`. - """ - - def show_help(ctx: Context, param: Parameter, value: bool) -> None: - """Callback that print the help page on ```` and exits.""" - if value and not ctx.resilient_parsing: - echo(ctx.get_help(), color=ctx.color) - ctx.exit() - - if not param_decls: - param_decls = ("--help",) - - kwargs.setdefault("is_flag", True) - kwargs.setdefault("expose_value", False) - kwargs.setdefault("is_eager", True) - kwargs.setdefault("help", _("Show this message and exit.")) - kwargs.setdefault("callback", show_help) - - return option(*param_decls, **kwargs) diff --git a/venv/lib/python3.12/site-packages/click/exceptions.py b/venv/lib/python3.12/site-packages/click/exceptions.py deleted file mode 100644 index f141a83..0000000 --- a/venv/lib/python3.12/site-packages/click/exceptions.py +++ /dev/null @@ -1,308 +0,0 @@ -from __future__ import annotations - -import collections.abc as cabc -import typing as t -from gettext import gettext as _ -from gettext import ngettext - -from ._compat import get_text_stderr -from .globals import resolve_color_default -from .utils import echo -from .utils import format_filename - -if t.TYPE_CHECKING: - from .core import Command - from .core import Context - from .core import Parameter - - -def _join_param_hints(param_hint: cabc.Sequence[str] | str | None) -> str | None: - if param_hint is not None and not isinstance(param_hint, str): - return " / ".join(repr(x) for x in param_hint) - - return param_hint - - -class ClickException(Exception): - """An exception that Click can handle and show to the user.""" - - #: The exit code for this exception. - exit_code = 1 - - def __init__(self, message: str) -> None: - super().__init__(message) - # The context will be removed by the time we print the message, so cache - # the color settings here to be used later on (in `show`) - self.show_color: bool | None = resolve_color_default() - self.message = message - - def format_message(self) -> str: - return self.message - - def __str__(self) -> str: - return self.message - - def show(self, file: t.IO[t.Any] | None = None) -> None: - if file is None: - file = get_text_stderr() - - echo( - _("Error: {message}").format(message=self.format_message()), - file=file, - color=self.show_color, - ) - - -class UsageError(ClickException): - """An internal exception that signals a usage error. This typically - aborts any further handling. - - :param message: the error message to display. - :param ctx: optionally the context that caused this error. Click will - fill in the context automatically in some situations. - """ - - exit_code = 2 - - def __init__(self, message: str, ctx: Context | None = None) -> None: - super().__init__(message) - self.ctx = ctx - self.cmd: Command | None = self.ctx.command if self.ctx else None - - def show(self, file: t.IO[t.Any] | None = None) -> None: - if file is None: - file = get_text_stderr() - color = None - hint = "" - if ( - self.ctx is not None - and self.ctx.command.get_help_option(self.ctx) is not None - ): - hint = _("Try '{command} {option}' for help.").format( - command=self.ctx.command_path, option=self.ctx.help_option_names[0] - ) - hint = f"{hint}\n" - if self.ctx is not None: - color = self.ctx.color - echo(f"{self.ctx.get_usage()}\n{hint}", file=file, color=color) - echo( - _("Error: {message}").format(message=self.format_message()), - file=file, - color=color, - ) - - -class BadParameter(UsageError): - """An exception that formats out a standardized error message for a - bad parameter. This is useful when thrown from a callback or type as - Click will attach contextual information to it (for instance, which - parameter it is). - - .. versionadded:: 2.0 - - :param param: the parameter object that caused this error. This can - be left out, and Click will attach this info itself - if possible. - :param param_hint: a string that shows up as parameter name. This - can be used as alternative to `param` in cases - where custom validation should happen. If it is - a string it's used as such, if it's a list then - each item is quoted and separated. - """ - - def __init__( - self, - message: str, - ctx: Context | None = None, - param: Parameter | None = None, - param_hint: str | None = None, - ) -> None: - super().__init__(message, ctx) - self.param = param - self.param_hint = param_hint - - def format_message(self) -> str: - if self.param_hint is not None: - param_hint = self.param_hint - elif self.param is not None: - param_hint = self.param.get_error_hint(self.ctx) # type: ignore - else: - return _("Invalid value: {message}").format(message=self.message) - - return _("Invalid value for {param_hint}: {message}").format( - param_hint=_join_param_hints(param_hint), message=self.message - ) - - -class MissingParameter(BadParameter): - """Raised if click required an option or argument but it was not - provided when invoking the script. - - .. versionadded:: 4.0 - - :param param_type: a string that indicates the type of the parameter. - The default is to inherit the parameter type from - the given `param`. Valid values are ``'parameter'``, - ``'option'`` or ``'argument'``. - """ - - def __init__( - self, - message: str | None = None, - ctx: Context | None = None, - param: Parameter | None = None, - param_hint: str | None = None, - param_type: str | None = None, - ) -> None: - super().__init__(message or "", ctx, param, param_hint) - self.param_type = param_type - - def format_message(self) -> str: - if self.param_hint is not None: - param_hint: str | None = self.param_hint - elif self.param is not None: - param_hint = self.param.get_error_hint(self.ctx) # type: ignore - else: - param_hint = None - - param_hint = _join_param_hints(param_hint) - param_hint = f" {param_hint}" if param_hint else "" - - param_type = self.param_type - if param_type is None and self.param is not None: - param_type = self.param.param_type_name - - msg = self.message - if self.param is not None: - msg_extra = self.param.type.get_missing_message( - param=self.param, ctx=self.ctx - ) - if msg_extra: - if msg: - msg += f". {msg_extra}" - else: - msg = msg_extra - - msg = f" {msg}" if msg else "" - - # Translate param_type for known types. - if param_type == "argument": - missing = _("Missing argument") - elif param_type == "option": - missing = _("Missing option") - elif param_type == "parameter": - missing = _("Missing parameter") - else: - missing = _("Missing {param_type}").format(param_type=param_type) - - return f"{missing}{param_hint}.{msg}" - - def __str__(self) -> str: - if not self.message: - param_name = self.param.name if self.param else None - return _("Missing parameter: {param_name}").format(param_name=param_name) - else: - return self.message - - -class NoSuchOption(UsageError): - """Raised if click attempted to handle an option that does not - exist. - - .. versionadded:: 4.0 - """ - - def __init__( - self, - option_name: str, - message: str | None = None, - possibilities: cabc.Sequence[str] | None = None, - ctx: Context | None = None, - ) -> None: - if message is None: - message = _("No such option: {name}").format(name=option_name) - - super().__init__(message, ctx) - self.option_name = option_name - self.possibilities = possibilities - - def format_message(self) -> str: - if not self.possibilities: - return self.message - - possibility_str = ", ".join(sorted(self.possibilities)) - suggest = ngettext( - "Did you mean {possibility}?", - "(Possible options: {possibilities})", - len(self.possibilities), - ).format(possibility=possibility_str, possibilities=possibility_str) - return f"{self.message} {suggest}" - - -class BadOptionUsage(UsageError): - """Raised if an option is generally supplied but the use of the option - was incorrect. This is for instance raised if the number of arguments - for an option is not correct. - - .. versionadded:: 4.0 - - :param option_name: the name of the option being used incorrectly. - """ - - def __init__( - self, option_name: str, message: str, ctx: Context | None = None - ) -> None: - super().__init__(message, ctx) - self.option_name = option_name - - -class BadArgumentUsage(UsageError): - """Raised if an argument is generally supplied but the use of the argument - was incorrect. This is for instance raised if the number of values - for an argument is not correct. - - .. versionadded:: 6.0 - """ - - -class NoArgsIsHelpError(UsageError): - def __init__(self, ctx: Context) -> None: - self.ctx: Context - super().__init__(ctx.get_help(), ctx=ctx) - - def show(self, file: t.IO[t.Any] | None = None) -> None: - echo(self.format_message(), file=file, err=True, color=self.ctx.color) - - -class FileError(ClickException): - """Raised if a file cannot be opened.""" - - def __init__(self, filename: str, hint: str | None = None) -> None: - if hint is None: - hint = _("unknown error") - - super().__init__(hint) - self.ui_filename: str = format_filename(filename) - self.filename = filename - - def format_message(self) -> str: - return _("Could not open file {filename!r}: {message}").format( - filename=self.ui_filename, message=self.message - ) - - -class Abort(RuntimeError): - """An internal signalling exception that signals Click to abort.""" - - -class Exit(RuntimeError): - """An exception that indicates that the application should exit with some - status code. - - :param code: the status code to exit with. - """ - - __slots__ = ("exit_code",) - - def __init__(self, code: int = 0) -> None: - self.exit_code: int = code diff --git a/venv/lib/python3.12/site-packages/click/formatting.py b/venv/lib/python3.12/site-packages/click/formatting.py deleted file mode 100644 index 9891f88..0000000 --- a/venv/lib/python3.12/site-packages/click/formatting.py +++ /dev/null @@ -1,301 +0,0 @@ -from __future__ import annotations - -import collections.abc as cabc -from contextlib import contextmanager -from gettext import gettext as _ - -from ._compat import term_len -from .parser import _split_opt - -# Can force a width. This is used by the test system -FORCED_WIDTH: int | None = None - - -def measure_table(rows: cabc.Iterable[tuple[str, str]]) -> tuple[int, ...]: - widths: dict[int, int] = {} - - for row in rows: - for idx, col in enumerate(row): - widths[idx] = max(widths.get(idx, 0), term_len(col)) - - return tuple(y for x, y in sorted(widths.items())) - - -def iter_rows( - rows: cabc.Iterable[tuple[str, str]], col_count: int -) -> cabc.Iterator[tuple[str, ...]]: - for row in rows: - yield row + ("",) * (col_count - len(row)) - - -def wrap_text( - text: str, - width: int = 78, - initial_indent: str = "", - subsequent_indent: str = "", - preserve_paragraphs: bool = False, -) -> str: - """A helper function that intelligently wraps text. By default, it - assumes that it operates on a single paragraph of text but if the - `preserve_paragraphs` parameter is provided it will intelligently - handle paragraphs (defined by two empty lines). - - If paragraphs are handled, a paragraph can be prefixed with an empty - line containing the ``\\b`` character (``\\x08``) to indicate that - no rewrapping should happen in that block. - - :param text: the text that should be rewrapped. - :param width: the maximum width for the text. - :param initial_indent: the initial indent that should be placed on the - first line as a string. - :param subsequent_indent: the indent string that should be placed on - each consecutive line. - :param preserve_paragraphs: if this flag is set then the wrapping will - intelligently handle paragraphs. - """ - from ._textwrap import TextWrapper - - text = text.expandtabs() - wrapper = TextWrapper( - width, - initial_indent=initial_indent, - subsequent_indent=subsequent_indent, - replace_whitespace=False, - ) - if not preserve_paragraphs: - return wrapper.fill(text) - - p: list[tuple[int, bool, str]] = [] - buf: list[str] = [] - indent = None - - def _flush_par() -> None: - if not buf: - return - if buf[0].strip() == "\b": - p.append((indent or 0, True, "\n".join(buf[1:]))) - else: - p.append((indent or 0, False, " ".join(buf))) - del buf[:] - - for line in text.splitlines(): - if not line: - _flush_par() - indent = None - else: - if indent is None: - orig_len = term_len(line) - line = line.lstrip() - indent = orig_len - term_len(line) - buf.append(line) - _flush_par() - - rv = [] - for indent, raw, text in p: - with wrapper.extra_indent(" " * indent): - if raw: - rv.append(wrapper.indent_only(text)) - else: - rv.append(wrapper.fill(text)) - - return "\n\n".join(rv) - - -class HelpFormatter: - """This class helps with formatting text-based help pages. It's - usually just needed for very special internal cases, but it's also - exposed so that developers can write their own fancy outputs. - - At present, it always writes into memory. - - :param indent_increment: the additional increment for each level. - :param width: the width for the text. This defaults to the terminal - width clamped to a maximum of 78. - """ - - def __init__( - self, - indent_increment: int = 2, - width: int | None = None, - max_width: int | None = None, - ) -> None: - import shutil - - self.indent_increment = indent_increment - if max_width is None: - max_width = 80 - if width is None: - width = FORCED_WIDTH - if width is None: - width = max(min(shutil.get_terminal_size().columns, max_width) - 2, 50) - self.width = width - self.current_indent: int = 0 - self.buffer: list[str] = [] - - def write(self, string: str) -> None: - """Writes a unicode string into the internal buffer.""" - self.buffer.append(string) - - def indent(self) -> None: - """Increases the indentation.""" - self.current_indent += self.indent_increment - - def dedent(self) -> None: - """Decreases the indentation.""" - self.current_indent -= self.indent_increment - - def write_usage(self, prog: str, args: str = "", prefix: str | None = None) -> None: - """Writes a usage line into the buffer. - - :param prog: the program name. - :param args: whitespace separated list of arguments. - :param prefix: The prefix for the first line. Defaults to - ``"Usage: "``. - """ - if prefix is None: - prefix = f"{_('Usage:')} " - - usage_prefix = f"{prefix:>{self.current_indent}}{prog} " - text_width = self.width - self.current_indent - - if text_width >= (term_len(usage_prefix) + 20): - # The arguments will fit to the right of the prefix. - indent = " " * term_len(usage_prefix) - self.write( - wrap_text( - args, - text_width, - initial_indent=usage_prefix, - subsequent_indent=indent, - ) - ) - else: - # The prefix is too long, put the arguments on the next line. - self.write(usage_prefix) - self.write("\n") - indent = " " * (max(self.current_indent, term_len(prefix)) + 4) - self.write( - wrap_text( - args, text_width, initial_indent=indent, subsequent_indent=indent - ) - ) - - self.write("\n") - - def write_heading(self, heading: str) -> None: - """Writes a heading into the buffer.""" - self.write(f"{'':>{self.current_indent}}{heading}:\n") - - def write_paragraph(self) -> None: - """Writes a paragraph into the buffer.""" - if self.buffer: - self.write("\n") - - def write_text(self, text: str) -> None: - """Writes re-indented text into the buffer. This rewraps and - preserves paragraphs. - """ - indent = " " * self.current_indent - self.write( - wrap_text( - text, - self.width, - initial_indent=indent, - subsequent_indent=indent, - preserve_paragraphs=True, - ) - ) - self.write("\n") - - def write_dl( - self, - rows: cabc.Sequence[tuple[str, str]], - col_max: int = 30, - col_spacing: int = 2, - ) -> None: - """Writes a definition list into the buffer. This is how options - and commands are usually formatted. - - :param rows: a list of two item tuples for the terms and values. - :param col_max: the maximum width of the first column. - :param col_spacing: the number of spaces between the first and - second column. - """ - rows = list(rows) - widths = measure_table(rows) - if len(widths) != 2: - raise TypeError("Expected two columns for definition list") - - first_col = min(widths[0], col_max) + col_spacing - - for first, second in iter_rows(rows, len(widths)): - self.write(f"{'':>{self.current_indent}}{first}") - if not second: - self.write("\n") - continue - if term_len(first) <= first_col - col_spacing: - self.write(" " * (first_col - term_len(first))) - else: - self.write("\n") - self.write(" " * (first_col + self.current_indent)) - - text_width = max(self.width - first_col - 2, 10) - wrapped_text = wrap_text(second, text_width, preserve_paragraphs=True) - lines = wrapped_text.splitlines() - - if lines: - self.write(f"{lines[0]}\n") - - for line in lines[1:]: - self.write(f"{'':>{first_col + self.current_indent}}{line}\n") - else: - self.write("\n") - - @contextmanager - def section(self, name: str) -> cabc.Iterator[None]: - """Helpful context manager that writes a paragraph, a heading, - and the indents. - - :param name: the section name that is written as heading. - """ - self.write_paragraph() - self.write_heading(name) - self.indent() - try: - yield - finally: - self.dedent() - - @contextmanager - def indentation(self) -> cabc.Iterator[None]: - """A context manager that increases the indentation.""" - self.indent() - try: - yield - finally: - self.dedent() - - def getvalue(self) -> str: - """Returns the buffer contents.""" - return "".join(self.buffer) - - -def join_options(options: cabc.Sequence[str]) -> tuple[str, bool]: - """Given a list of option strings this joins them in the most appropriate - way and returns them in the form ``(formatted_string, - any_prefix_is_slash)`` where the second item in the tuple is a flag that - indicates if any of the option prefixes was a slash. - """ - rv = [] - any_prefix_is_slash = False - - for opt in options: - prefix = _split_opt(opt)[0] - - if prefix == "/": - any_prefix_is_slash = True - - rv.append((len(prefix), opt)) - - rv.sort(key=lambda x: x[0]) - return ", ".join(x[1] for x in rv), any_prefix_is_slash diff --git a/venv/lib/python3.12/site-packages/click/globals.py b/venv/lib/python3.12/site-packages/click/globals.py deleted file mode 100644 index a2f9172..0000000 --- a/venv/lib/python3.12/site-packages/click/globals.py +++ /dev/null @@ -1,67 +0,0 @@ -from __future__ import annotations - -import typing as t -from threading import local - -if t.TYPE_CHECKING: - from .core import Context - -_local = local() - - -@t.overload -def get_current_context(silent: t.Literal[False] = False) -> Context: ... - - -@t.overload -def get_current_context(silent: bool = ...) -> Context | None: ... - - -def get_current_context(silent: bool = False) -> Context | None: - """Returns the current click context. This can be used as a way to - access the current context object from anywhere. This is a more implicit - alternative to the :func:`pass_context` decorator. This function is - primarily useful for helpers such as :func:`echo` which might be - interested in changing its behavior based on the current context. - - To push the current context, :meth:`Context.scope` can be used. - - .. versionadded:: 5.0 - - :param silent: if set to `True` the return value is `None` if no context - is available. The default behavior is to raise a - :exc:`RuntimeError`. - """ - try: - return t.cast("Context", _local.stack[-1]) - except (AttributeError, IndexError) as e: - if not silent: - raise RuntimeError("There is no active click context.") from e - - return None - - -def push_context(ctx: Context) -> None: - """Pushes a new context to the current stack.""" - _local.__dict__.setdefault("stack", []).append(ctx) - - -def pop_context() -> None: - """Removes the top level from the stack.""" - _local.stack.pop() - - -def resolve_color_default(color: bool | None = None) -> bool | 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 - - return None diff --git a/venv/lib/python3.12/site-packages/click/parser.py b/venv/lib/python3.12/site-packages/click/parser.py deleted file mode 100644 index a8b7d26..0000000 --- a/venv/lib/python3.12/site-packages/click/parser.py +++ /dev/null @@ -1,532 +0,0 @@ -""" -This module started out as largely a copy paste from the stdlib's -optparse module with the features removed that we do not need from -optparse because we implement them in Click on a higher level (for -instance type handling, help formatting and a lot more). - -The plan is to remove more and more from here over time. - -The reason this is a different module and not optparse from the stdlib -is that there are differences in 2.x and 3.x about the error messages -generated and optparse in the stdlib uses gettext for no good reason -and might cause us issues. - -Click uses parts of optparse written by Gregory P. Ward and maintained -by the Python Software Foundation. This is limited to code in parser.py. - -Copyright 2001-2006 Gregory P. Ward. All rights reserved. -Copyright 2002-2006 Python Software Foundation. All rights reserved. -""" - -# This code uses parts of optparse written by Gregory P. Ward and -# maintained by the Python Software Foundation. -# Copyright 2001-2006 Gregory P. Ward -# Copyright 2002-2006 Python Software Foundation -from __future__ import annotations - -import collections.abc as cabc -import typing as t -from collections import deque -from gettext import gettext as _ -from gettext import ngettext - -from .exceptions import BadArgumentUsage -from .exceptions import BadOptionUsage -from .exceptions import NoSuchOption -from .exceptions import UsageError - -if t.TYPE_CHECKING: - from .core import Argument as CoreArgument - from .core import Context - from .core import Option as CoreOption - from .core import Parameter as CoreParameter - -V = t.TypeVar("V") - -# Sentinel value that indicates an option was passed as a flag without a -# value but is not a flag option. Option.consume_value uses this to -# prompt or use the flag_value. -_flag_needs_value = object() - - -def _unpack_args( - args: cabc.Sequence[str], nargs_spec: cabc.Sequence[int] -) -> tuple[cabc.Sequence[str | cabc.Sequence[str | None] | None], list[str]]: - """Given an iterable of arguments and an iterable of nargs specifications, - it returns a tuple with all the unpacked arguments at the first index - and all remaining arguments as the second. - - The nargs specification is the number of arguments that should be consumed - or `-1` to indicate that this position should eat up all the remainders. - - Missing items are filled with `None`. - """ - args = deque(args) - nargs_spec = deque(nargs_spec) - rv: list[str | tuple[str | None, ...] | None] = [] - spos: int | None = None - - def _fetch(c: deque[V]) -> V | None: - try: - if spos is None: - return c.popleft() - else: - return c.pop() - except IndexError: - return None - - while nargs_spec: - nargs = _fetch(nargs_spec) - - if nargs is None: - continue - - if nargs == 1: - rv.append(_fetch(args)) - elif nargs > 1: - x = [_fetch(args) for _ in range(nargs)] - - # If we're reversed, we're pulling in the arguments in reverse, - # so we need to turn them around. - if spos is not None: - x.reverse() - - rv.append(tuple(x)) - elif nargs < 0: - if spos is not None: - raise TypeError("Cannot have two nargs < 0") - - spos = len(rv) - rv.append(None) - - # spos is the position of the wildcard (star). If it's not `None`, - # we fill it with the remainder. - if spos is not None: - rv[spos] = tuple(args) - args = [] - rv[spos + 1 :] = reversed(rv[spos + 1 :]) - - return tuple(rv), list(args) - - -def _split_opt(opt: str) -> tuple[str, str]: - first = opt[:1] - if first.isalnum(): - return "", opt - if opt[1:2] == first: - return opt[:2], opt[2:] - return first, opt[1:] - - -def _normalize_opt(opt: str, ctx: Context | None) -> str: - if ctx is None or ctx.token_normalize_func is None: - return opt - prefix, opt = _split_opt(opt) - return f"{prefix}{ctx.token_normalize_func(opt)}" - - -class _Option: - def __init__( - self, - obj: CoreOption, - opts: cabc.Sequence[str], - dest: str | None, - action: str | None = None, - nargs: int = 1, - const: t.Any | None = None, - ): - self._short_opts = [] - self._long_opts = [] - self.prefixes: set[str] = set() - - for opt in opts: - prefix, value = _split_opt(opt) - if not prefix: - raise ValueError(f"Invalid start character for option ({opt})") - self.prefixes.add(prefix[0]) - if len(prefix) == 1 and len(value) == 1: - self._short_opts.append(opt) - else: - self._long_opts.append(opt) - self.prefixes.add(prefix) - - if action is None: - action = "store" - - self.dest = dest - self.action = action - self.nargs = nargs - self.const = const - self.obj = obj - - @property - def takes_value(self) -> bool: - return self.action in ("store", "append") - - def process(self, value: t.Any, state: _ParsingState) -> None: - if self.action == "store": - state.opts[self.dest] = value # type: ignore - elif self.action == "store_const": - state.opts[self.dest] = self.const # type: ignore - elif self.action == "append": - state.opts.setdefault(self.dest, []).append(value) # type: ignore - elif self.action == "append_const": - state.opts.setdefault(self.dest, []).append(self.const) # type: ignore - elif self.action == "count": - state.opts[self.dest] = state.opts.get(self.dest, 0) + 1 # type: ignore - else: - raise ValueError(f"unknown action '{self.action}'") - state.order.append(self.obj) - - -class _Argument: - def __init__(self, obj: CoreArgument, dest: str | None, nargs: int = 1): - self.dest = dest - self.nargs = nargs - self.obj = obj - - def process( - self, - value: str | cabc.Sequence[str | None] | None, - state: _ParsingState, - ) -> None: - if self.nargs > 1: - assert value is not None - holes = sum(1 for x in value if x is None) - if holes == len(value): - value = None - elif holes != 0: - raise BadArgumentUsage( - _("Argument {name!r} takes {nargs} values.").format( - name=self.dest, nargs=self.nargs - ) - ) - - if self.nargs == -1 and self.obj.envvar is not None and value == (): - # Replace empty tuple with None so that a value from the - # environment may be tried. - value = None - - state.opts[self.dest] = value # type: ignore - state.order.append(self.obj) - - -class _ParsingState: - def __init__(self, rargs: list[str]) -> None: - self.opts: dict[str, t.Any] = {} - self.largs: list[str] = [] - self.rargs = rargs - self.order: list[CoreParameter] = [] - - -class _OptionParser: - """The option parser is an internal class that is ultimately used to - parse options and arguments. It's modelled after optparse and brings - a similar but vastly simplified API. It should generally not be used - directly as the high level Click classes wrap it for you. - - It's not nearly as extensible as optparse or argparse as it does not - implement features that are implemented on a higher level (such as - types or defaults). - - :param ctx: optionally the :class:`~click.Context` where this parser - should go with. - - .. deprecated:: 8.2 - Will be removed in Click 9.0. - """ - - def __init__(self, ctx: Context | None = None) -> None: - #: The :class:`~click.Context` for this parser. This might be - #: `None` for some advanced use cases. - self.ctx = ctx - #: This controls how the parser deals with interspersed arguments. - #: If this is set to `False`, the parser will stop on the first - #: non-option. Click uses this to implement nested subcommands - #: safely. - self.allow_interspersed_args: bool = 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: bool = 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: dict[str, _Option] = {} - self._long_opt: dict[str, _Option] = {} - self._opt_prefixes = {"-", "--"} - self._args: list[_Argument] = [] - - def add_option( - self, - obj: CoreOption, - opts: cabc.Sequence[str], - dest: str | None, - action: str | None = None, - nargs: int = 1, - const: t.Any | None = None, - ) -> None: - """Adds a new option named `dest` to the parser. The destination - is not inferred (unlike with optparse) and needs to be explicitly - provided. Action can be any of ``store``, ``store_const``, - ``append``, ``append_const`` or ``count``. - - The `obj` can be used to identify the option in the order list - that is returned from the parser. - """ - opts = [_normalize_opt(opt, self.ctx) for opt in opts] - option = _Option(obj, opts, dest, action=action, nargs=nargs, const=const) - self._opt_prefixes.update(option.prefixes) - for opt in option._short_opts: - self._short_opt[opt] = option - for opt in option._long_opts: - self._long_opt[opt] = option - - def add_argument(self, obj: CoreArgument, dest: str | None, nargs: int = 1) -> None: - """Adds a positional argument named `dest` to the parser. - - The `obj` can be used to identify the option in the order list - that is returned from the parser. - """ - self._args.append(_Argument(obj, dest=dest, nargs=nargs)) - - def parse_args( - self, args: list[str] - ) -> tuple[dict[str, t.Any], list[str], list[CoreParameter]]: - """Parses positional arguments and returns ``(values, args, order)`` - for the parsed options and arguments as well as the leftover - arguments if there are any. The order is a list of objects as they - appear on the command line. If arguments appear multiple times they - will be memorized multiple times as well. - """ - state = _ParsingState(args) - try: - self._process_args_for_options(state) - self._process_args_for_args(state) - except UsageError: - if self.ctx is None or not self.ctx.resilient_parsing: - raise - return state.opts, state.largs, state.order - - def _process_args_for_args(self, state: _ParsingState) -> None: - pargs, args = _unpack_args( - state.largs + state.rargs, [x.nargs for x in self._args] - ) - - for idx, arg in enumerate(self._args): - arg.process(pargs[idx], state) - - state.largs = args - state.rargs = [] - - def _process_args_for_options(self, state: _ParsingState) -> None: - while state.rargs: - arg = state.rargs.pop(0) - arglen = len(arg) - # Double dashes always handled explicitly regardless of what - # prefixes are valid. - if arg == "--": - return - elif arg[:1] in self._opt_prefixes and arglen > 1: - self._process_opts(arg, state) - elif self.allow_interspersed_args: - state.largs.append(arg) - else: - state.rargs.insert(0, arg) - return - - # Say this is the original argument list: - # [arg0, arg1, ..., arg(i-1), arg(i), arg(i+1), ..., arg(N-1)] - # ^ - # (we are about to process arg(i)). - # - # Then rargs is [arg(i), ..., arg(N-1)] and largs is a *subset* of - # [arg0, ..., arg(i-1)] (any options and their arguments will have - # been removed from largs). - # - # The while loop will usually consume 1 or more arguments per pass. - # If it consumes 1 (eg. arg is an option that takes no arguments), - # then after _process_arg() is done the situation is: - # - # largs = subset of [arg0, ..., arg(i)] - # rargs = [arg(i+1), ..., arg(N-1)] - # - # If allow_interspersed_args is false, largs will always be - # *empty* -- still a subset of [arg0, ..., arg(i-1)], but - # not a very interesting subset! - - def _match_long_opt( - self, opt: str, explicit_value: str | None, state: _ParsingState - ) -> None: - if opt not in self._long_opt: - from difflib import get_close_matches - - possibilities = get_close_matches(opt, self._long_opt) - raise NoSuchOption(opt, possibilities=possibilities, ctx=self.ctx) - - option = self._long_opt[opt] - if option.takes_value: - # At this point it's safe to modify rargs by injecting the - # explicit value, because no exception is raised in this - # branch. This means that the inserted value will be fully - # consumed. - if explicit_value is not None: - state.rargs.insert(0, explicit_value) - - value = self._get_value_from_state(opt, option, state) - - elif explicit_value is not None: - raise BadOptionUsage( - opt, _("Option {name!r} does not take a value.").format(name=opt) - ) - - else: - value = None - - option.process(value, state) - - def _match_short_opt(self, arg: str, state: _ParsingState) -> None: - stop = False - i = 1 - prefix = arg[0] - unknown_options = [] - - for ch in arg[1:]: - opt = _normalize_opt(f"{prefix}{ch}", self.ctx) - option = self._short_opt.get(opt) - i += 1 - - if not option: - if self.ignore_unknown_options: - unknown_options.append(ch) - continue - raise NoSuchOption(opt, ctx=self.ctx) - if option.takes_value: - # Any characters left in arg? Pretend they're the - # next arg, and stop consuming characters of arg. - if i < len(arg): - state.rargs.insert(0, arg[i:]) - stop = True - - value = self._get_value_from_state(opt, option, state) - - else: - value = None - - option.process(value, state) - - if stop: - break - - # If we got any unknown options we recombine the string of the - # remaining options and re-attach the prefix, then report that - # to the state as new larg. This way there is basic combinatorics - # that can be achieved while still ignoring unknown arguments. - if self.ignore_unknown_options and unknown_options: - state.largs.append(f"{prefix}{''.join(unknown_options)}") - - def _get_value_from_state( - self, option_name: str, option: _Option, state: _ParsingState - ) -> t.Any: - nargs = option.nargs - - if len(state.rargs) < nargs: - if option.obj._flag_needs_value: - # Option allows omitting the value. - value = _flag_needs_value - else: - raise BadOptionUsage( - option_name, - ngettext( - "Option {name!r} requires an argument.", - "Option {name!r} requires {nargs} arguments.", - nargs, - ).format(name=option_name, nargs=nargs), - ) - elif nargs == 1: - next_rarg = state.rargs[0] - - if ( - option.obj._flag_needs_value - and isinstance(next_rarg, str) - and next_rarg[:1] in self._opt_prefixes - and len(next_rarg) > 1 - ): - # The next arg looks like the start of an option, don't - # use it as the value if omitting the value is allowed. - value = _flag_needs_value - else: - value = state.rargs.pop(0) - else: - value = tuple(state.rargs[:nargs]) - del state.rargs[:nargs] - - return value - - def _process_opts(self, arg: str, state: _ParsingState) -> None: - explicit_value = None - # Long option handling happens in two parts. The first part is - # supporting explicitly attached values. In any case, we will try - # to long match the option first. - if "=" in arg: - long_opt, explicit_value = arg.split("=", 1) - else: - long_opt = arg - norm_long_opt = _normalize_opt(long_opt, self.ctx) - - # At this point we will match the (assumed) long option through - # the long option matching code. Note that this allows options - # like "-foo" to be matched as long options. - try: - self._match_long_opt(norm_long_opt, explicit_value, state) - except NoSuchOption: - # At this point the long option matching failed, and we need - # to try with short options. However there is a special rule - # which says, that if we have a two character options prefix - # (applies to "--foo" for instance), we do not dispatch to the - # short option code and will instead raise the no option - # error. - if arg[:2] not in self._opt_prefixes: - self._match_short_opt(arg, state) - return - - if not self.ignore_unknown_options: - raise - - state.largs.append(arg) - - -def __getattr__(name: str) -> object: - import warnings - - if name in { - "OptionParser", - "Argument", - "Option", - "split_opt", - "normalize_opt", - "ParsingState", - }: - warnings.warn( - f"'parser.{name}' is deprecated and will be removed in Click 9.0." - " The old parser is available in 'optparse'.", - DeprecationWarning, - stacklevel=2, - ) - return globals()[f"_{name}"] - - if name == "split_arg_string": - from .shell_completion import split_arg_string - - warnings.warn( - "Importing 'parser.split_arg_string' is deprecated, it will only be" - " available in 'shell_completion' in Click 9.0.", - DeprecationWarning, - stacklevel=2, - ) - return split_arg_string - - raise AttributeError(name) diff --git a/venv/lib/python3.12/site-packages/click/py.typed b/venv/lib/python3.12/site-packages/click/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/click/shell_completion.py b/venv/lib/python3.12/site-packages/click/shell_completion.py deleted file mode 100644 index cdb5822..0000000 --- a/venv/lib/python3.12/site-packages/click/shell_completion.py +++ /dev/null @@ -1,644 +0,0 @@ -from __future__ import annotations - -import collections.abc as cabc -import os -import re -import typing as t -from gettext import gettext as _ - -from .core import Argument -from .core import Command -from .core import Context -from .core import Group -from .core import Option -from .core import Parameter -from .core import ParameterSource -from .utils import echo - - -def shell_complete( - cli: Command, - ctx_args: cabc.MutableMapping[str, t.Any], - prog_name: str, - complete_var: str, - instruction: str, -) -> int: - """Perform shell completion for the given CLI program. - - :param cli: Command being called. - :param ctx_args: Extra arguments to pass to - ``cli.make_context``. - :param prog_name: Name of the executable in the shell. - :param complete_var: Name of the environment variable that holds - the completion instruction. - :param instruction: Value of ``complete_var`` with the completion - instruction and shell, in the form ``instruction_shell``. - :return: Status code to exit with. - """ - shell, _, instruction = instruction.partition("_") - comp_cls = get_completion_class(shell) - - if comp_cls is None: - return 1 - - comp = comp_cls(cli, ctx_args, prog_name, complete_var) - - if instruction == "source": - echo(comp.source()) - return 0 - - if instruction == "complete": - echo(comp.complete()) - return 0 - - return 1 - - -class CompletionItem: - """Represents a completion value and metadata about the value. The - default metadata is ``type`` to indicate special shell handling, - and ``help`` if a shell supports showing a help string next to the - value. - - Arbitrary parameters can be passed when creating the object, and - accessed using ``item.attr``. If an attribute wasn't passed, - accessing it returns ``None``. - - :param value: The completion suggestion. - :param type: Tells the shell script to provide special completion - support for the type. Click uses ``"dir"`` and ``"file"``. - :param help: String shown next to the value if supported. - :param kwargs: Arbitrary metadata. The built-in implementations - don't use this, but custom type completions paired with custom - shell support could use it. - """ - - __slots__ = ("value", "type", "help", "_info") - - def __init__( - self, - value: t.Any, - type: str = "plain", - help: str | None = None, - **kwargs: t.Any, - ) -> None: - self.value: t.Any = value - self.type: str = type - self.help: str | None = help - self._info = kwargs - - def __getattr__(self, name: str) -> t.Any: - return self._info.get(name) - - -# Only Bash >= 4.4 has the nosort option. -_SOURCE_BASH = """\ -%(complete_func)s() { - local IFS=$'\\n' - local response - - response=$(env COMP_WORDS="${COMP_WORDS[*]}" COMP_CWORD=$COMP_CWORD \ -%(complete_var)s=bash_complete $1) - - for completion in $response; do - IFS=',' read type value <<< "$completion" - - if [[ $type == 'dir' ]]; then - COMPREPLY=() - compopt -o dirnames - elif [[ $type == 'file' ]]; then - COMPREPLY=() - compopt -o default - elif [[ $type == 'plain' ]]; then - COMPREPLY+=($value) - fi - done - - return 0 -} - -%(complete_func)s_setup() { - complete -o nosort -F %(complete_func)s %(prog_name)s -} - -%(complete_func)s_setup; -""" - -_SOURCE_ZSH = """\ -#compdef %(prog_name)s - -%(complete_func)s() { - local -a completions - local -a completions_with_descriptions - local -a response - (( ! $+commands[%(prog_name)s] )) && return 1 - - response=("${(@f)$(env COMP_WORDS="${words[*]}" COMP_CWORD=$((CURRENT-1)) \ -%(complete_var)s=zsh_complete %(prog_name)s)}") - - for type key descr in ${response}; do - if [[ "$type" == "plain" ]]; then - if [[ "$descr" == "_" ]]; then - completions+=("$key") - else - completions_with_descriptions+=("$key":"$descr") - fi - elif [[ "$type" == "dir" ]]; then - _path_files -/ - elif [[ "$type" == "file" ]]; then - _path_files -f - fi - done - - if [ -n "$completions_with_descriptions" ]; then - _describe -V unsorted completions_with_descriptions -U - fi - - if [ -n "$completions" ]; then - compadd -U -V unsorted -a completions - fi -} - -if [[ $zsh_eval_context[-1] == loadautofunc ]]; then - # autoload from fpath, call function directly - %(complete_func)s "$@" -else - # eval/source/. command, register function for later - compdef %(complete_func)s %(prog_name)s -fi -""" - -_SOURCE_FISH = """\ -function %(complete_func)s; - set -l response (env %(complete_var)s=fish_complete COMP_WORDS=(commandline -cp) \ -COMP_CWORD=(commandline -t) %(prog_name)s); - - for completion in $response; - set -l metadata (string split "," $completion); - - if test $metadata[1] = "dir"; - __fish_complete_directories $metadata[2]; - else if test $metadata[1] = "file"; - __fish_complete_path $metadata[2]; - else if test $metadata[1] = "plain"; - echo $metadata[2]; - end; - end; -end; - -complete --no-files --command %(prog_name)s --arguments \ -"(%(complete_func)s)"; -""" - - -class ShellComplete: - """Base class for providing shell completion support. A subclass for - a given shell will override attributes and methods to implement the - completion instructions (``source`` and ``complete``). - - :param cli: Command being called. - :param prog_name: Name of the executable in the shell. - :param complete_var: Name of the environment variable that holds - the completion instruction. - - .. versionadded:: 8.0 - """ - - name: t.ClassVar[str] - """Name to register the shell as with :func:`add_completion_class`. - This is used in completion instructions (``{name}_source`` and - ``{name}_complete``). - """ - - source_template: t.ClassVar[str] - """Completion script template formatted by :meth:`source`. This must - be provided by subclasses. - """ - - def __init__( - self, - cli: Command, - ctx_args: cabc.MutableMapping[str, t.Any], - prog_name: str, - complete_var: str, - ) -> None: - self.cli = cli - self.ctx_args = ctx_args - self.prog_name = prog_name - self.complete_var = complete_var - - @property - def func_name(self) -> str: - """The name of the shell function defined by the completion - script. - """ - safe_name = re.sub(r"\W*", "", self.prog_name.replace("-", "_"), flags=re.ASCII) - return f"_{safe_name}_completion" - - def source_vars(self) -> dict[str, t.Any]: - """Vars for formatting :attr:`source_template`. - - By default this provides ``complete_func``, ``complete_var``, - and ``prog_name``. - """ - return { - "complete_func": self.func_name, - "complete_var": self.complete_var, - "prog_name": self.prog_name, - } - - def source(self) -> str: - """Produce the shell script that defines the completion - function. By default this ``%``-style formats - :attr:`source_template` with the dict returned by - :meth:`source_vars`. - """ - return self.source_template % self.source_vars() - - def get_completion_args(self) -> tuple[list[str], str]: - """Use the env vars defined by the shell script to return a - tuple of ``args, incomplete``. This must be implemented by - subclasses. - """ - raise NotImplementedError - - def get_completions(self, args: list[str], incomplete: str) -> list[CompletionItem]: - """Determine the context and last complete command or parameter - from the complete args. Call that object's ``shell_complete`` - method to get the completions for the incomplete value. - - :param args: List of complete args before the incomplete value. - :param incomplete: Value being completed. May be empty. - """ - ctx = _resolve_context(self.cli, self.ctx_args, self.prog_name, args) - obj, incomplete = _resolve_incomplete(ctx, args, incomplete) - return obj.shell_complete(ctx, incomplete) - - def format_completion(self, item: CompletionItem) -> str: - """Format a completion item into the form recognized by the - shell script. This must be implemented by subclasses. - - :param item: Completion item to format. - """ - raise NotImplementedError - - def complete(self) -> str: - """Produce the completion data to send back to the shell. - - By default this calls :meth:`get_completion_args`, gets the - completions, then calls :meth:`format_completion` for each - completion. - """ - args, incomplete = self.get_completion_args() - completions = self.get_completions(args, incomplete) - out = [self.format_completion(item) for item in completions] - return "\n".join(out) - - -class BashComplete(ShellComplete): - """Shell completion for Bash.""" - - name = "bash" - source_template = _SOURCE_BASH - - @staticmethod - def _check_version() -> None: - import shutil - import subprocess - - bash_exe = shutil.which("bash") - - if bash_exe is None: - match = None - else: - output = subprocess.run( - [bash_exe, "--norc", "-c", 'echo "${BASH_VERSION}"'], - stdout=subprocess.PIPE, - ) - match = re.search(r"^(\d+)\.(\d+)\.\d+", output.stdout.decode()) - - if match is not None: - major, minor = match.groups() - - if major < "4" or major == "4" and minor < "4": - echo( - _( - "Shell completion is not supported for Bash" - " versions older than 4.4." - ), - err=True, - ) - else: - echo( - _("Couldn't detect Bash version, shell completion is not supported."), - err=True, - ) - - def source(self) -> str: - self._check_version() - return super().source() - - def get_completion_args(self) -> tuple[list[str], str]: - cwords = split_arg_string(os.environ["COMP_WORDS"]) - cword = int(os.environ["COMP_CWORD"]) - args = cwords[1:cword] - - try: - incomplete = cwords[cword] - except IndexError: - incomplete = "" - - return args, incomplete - - def format_completion(self, item: CompletionItem) -> str: - return f"{item.type},{item.value}" - - -class ZshComplete(ShellComplete): - """Shell completion for Zsh.""" - - name = "zsh" - source_template = _SOURCE_ZSH - - def get_completion_args(self) -> tuple[list[str], str]: - cwords = split_arg_string(os.environ["COMP_WORDS"]) - cword = int(os.environ["COMP_CWORD"]) - args = cwords[1:cword] - - try: - incomplete = cwords[cword] - except IndexError: - incomplete = "" - - return args, incomplete - - def format_completion(self, item: CompletionItem) -> str: - return f"{item.type}\n{item.value}\n{item.help if item.help else '_'}" - - -class FishComplete(ShellComplete): - """Shell completion for Fish.""" - - name = "fish" - source_template = _SOURCE_FISH - - def get_completion_args(self) -> tuple[list[str], str]: - cwords = split_arg_string(os.environ["COMP_WORDS"]) - incomplete = os.environ["COMP_CWORD"] - args = cwords[1:] - - # Fish stores the partial word in both COMP_WORDS and - # COMP_CWORD, remove it from complete args. - if incomplete and args and args[-1] == incomplete: - args.pop() - - return args, incomplete - - def format_completion(self, item: CompletionItem) -> str: - if item.help: - return f"{item.type},{item.value}\t{item.help}" - - return f"{item.type},{item.value}" - - -ShellCompleteType = t.TypeVar("ShellCompleteType", bound="type[ShellComplete]") - - -_available_shells: dict[str, type[ShellComplete]] = { - "bash": BashComplete, - "fish": FishComplete, - "zsh": ZshComplete, -} - - -def add_completion_class( - cls: ShellCompleteType, name: str | None = None -) -> ShellCompleteType: - """Register a :class:`ShellComplete` subclass under the given name. - The name will be provided by the completion instruction environment - variable during completion. - - :param cls: The completion class that will handle completion for the - shell. - :param name: Name to register the class under. Defaults to the - class's ``name`` attribute. - """ - if name is None: - name = cls.name - - _available_shells[name] = cls - - return cls - - -def get_completion_class(shell: str) -> type[ShellComplete] | None: - """Look up a registered :class:`ShellComplete` subclass by the name - provided by the completion instruction environment variable. If the - name isn't registered, returns ``None``. - - :param shell: Name the class is registered under. - """ - return _available_shells.get(shell) - - -def split_arg_string(string: str) -> list[str]: - """Split an argument string as with :func:`shlex.split`, but don't - fail if the string is incomplete. Ignores a missing closing quote or - incomplete escape sequence and uses the partial token as-is. - - .. code-block:: python - - split_arg_string("example 'my file") - ["example", "my file"] - - split_arg_string("example my\\") - ["example", "my"] - - :param string: String to split. - - .. versionchanged:: 8.2 - Moved to ``shell_completion`` from ``parser``. - """ - import shlex - - lex = shlex.shlex(string, posix=True) - lex.whitespace_split = True - lex.commenters = "" - out = [] - - try: - for token in lex: - out.append(token) - except ValueError: - # Raised when end-of-string is reached in an invalid state. Use - # the partial token as-is. The quote or escape character is in - # lex.state, not lex.token. - out.append(lex.token) - - return out - - -def _is_incomplete_argument(ctx: Context, param: Parameter) -> bool: - """Determine if the given parameter is an argument that can still - accept values. - - :param ctx: Invocation context for the command represented by the - parsed complete args. - :param param: Argument object being checked. - """ - if not isinstance(param, Argument): - return False - - assert param.name is not None - # Will be None if expose_value is False. - value = ctx.params.get(param.name) - return ( - param.nargs == -1 - or ctx.get_parameter_source(param.name) is not ParameterSource.COMMANDLINE - or ( - param.nargs > 1 - and isinstance(value, (tuple, list)) - and len(value) < param.nargs - ) - ) - - -def _start_of_option(ctx: Context, value: str) -> bool: - """Check if the value looks like the start of an option.""" - if not value: - return False - - c = value[0] - return c in ctx._opt_prefixes - - -def _is_incomplete_option(ctx: Context, args: list[str], param: Parameter) -> bool: - """Determine if the given parameter is an option that needs a value. - - :param args: List of complete args before the incomplete value. - :param param: Option object being checked. - """ - if not isinstance(param, Option): - return False - - if param.is_flag or param.count: - return False - - last_option = None - - for index, arg in enumerate(reversed(args)): - if index + 1 > param.nargs: - break - - if _start_of_option(ctx, arg): - last_option = arg - - return last_option is not None and last_option in param.opts - - -def _resolve_context( - cli: Command, - ctx_args: cabc.MutableMapping[str, t.Any], - prog_name: str, - args: list[str], -) -> Context: - """Produce the context hierarchy starting with the command and - traversing the complete arguments. This only follows the commands, - it doesn't trigger input prompts or callbacks. - - :param cli: Command being called. - :param prog_name: Name of the executable in the shell. - :param args: List of complete args before the incomplete value. - """ - ctx_args["resilient_parsing"] = True - with cli.make_context(prog_name, args.copy(), **ctx_args) as ctx: - args = ctx._protected_args + ctx.args - - while args: - command = ctx.command - - if isinstance(command, Group): - if not command.chain: - name, cmd, args = command.resolve_command(ctx, args) - - if cmd is None: - return ctx - - with cmd.make_context( - name, args, parent=ctx, resilient_parsing=True - ) as sub_ctx: - args = ctx._protected_args + ctx.args - ctx = sub_ctx - else: - sub_ctx = ctx - - while args: - name, cmd, args = command.resolve_command(ctx, args) - - if cmd is None: - return ctx - - with cmd.make_context( - name, - args, - parent=ctx, - allow_extra_args=True, - allow_interspersed_args=False, - resilient_parsing=True, - ) as sub_sub_ctx: - args = sub_ctx.args - sub_ctx = sub_sub_ctx - - ctx = sub_ctx - args = [*sub_ctx._protected_args, *sub_ctx.args] - else: - break - - return ctx - - -def _resolve_incomplete( - ctx: Context, args: list[str], incomplete: str -) -> tuple[Command | Parameter, str]: - """Find the Click object that will handle the completion of the - incomplete value. Return the object and the incomplete value. - - :param ctx: Invocation context for the command represented by - the parsed complete args. - :param args: List of complete args before the incomplete value. - :param incomplete: Value being completed. May be empty. - """ - # Different shells treat an "=" between a long option name and - # value differently. Might keep the value joined, return the "=" - # as a separate item, or return the split name and value. Always - # split and discard the "=" to make completion easier. - if incomplete == "=": - incomplete = "" - elif "=" in incomplete and _start_of_option(ctx, incomplete): - name, _, incomplete = incomplete.partition("=") - args.append(name) - - # The "--" marker tells Click to stop treating values as options - # even if they start with the option character. If it hasn't been - # given and the incomplete arg looks like an option, the current - # command will provide option name completions. - if "--" not in args and _start_of_option(ctx, incomplete): - return ctx.command, incomplete - - params = ctx.command.get_params(ctx) - - # If the last complete arg is an option name with an incomplete - # value, the option will provide value completions. - for param in params: - if _is_incomplete_option(ctx, args, param): - return param, incomplete - - # It's not an option name or value. The first argument without a - # parsed value will provide value completions. - for param in params: - if _is_incomplete_argument(ctx, param): - return param, incomplete - - # There were no unparsed arguments, the command may be a group that - # will provide command name completions. - return ctx.command, incomplete diff --git a/venv/lib/python3.12/site-packages/click/termui.py b/venv/lib/python3.12/site-packages/click/termui.py deleted file mode 100644 index dcbb222..0000000 --- a/venv/lib/python3.12/site-packages/click/termui.py +++ /dev/null @@ -1,877 +0,0 @@ -from __future__ import annotations - -import collections.abc as cabc -import inspect -import io -import itertools -import sys -import typing as t -from contextlib import AbstractContextManager -from gettext import gettext as _ - -from ._compat import isatty -from ._compat import strip_ansi -from .exceptions import Abort -from .exceptions import UsageError -from .globals import resolve_color_default -from .types import Choice -from .types import convert_type -from .types import ParamType -from .utils import echo -from .utils import LazyFile - -if t.TYPE_CHECKING: - from ._termui_impl import ProgressBar - -V = t.TypeVar("V") - -# The prompt functions to use. The doc tools currently override these -# functions to customize how they work. -visible_prompt_func: t.Callable[[str], str] = input - -_ansi_colors = { - "black": 30, - "red": 31, - "green": 32, - "yellow": 33, - "blue": 34, - "magenta": 35, - "cyan": 36, - "white": 37, - "reset": 39, - "bright_black": 90, - "bright_red": 91, - "bright_green": 92, - "bright_yellow": 93, - "bright_blue": 94, - "bright_magenta": 95, - "bright_cyan": 96, - "bright_white": 97, -} -_ansi_reset_all = "\033[0m" - - -def hidden_prompt_func(prompt: str) -> str: - import getpass - - return getpass.getpass(prompt) - - -def _build_prompt( - text: str, - suffix: str, - show_default: bool = False, - default: t.Any | None = None, - show_choices: bool = True, - type: ParamType | None = None, -) -> str: - prompt = text - if type is not None and show_choices and isinstance(type, Choice): - prompt += f" ({', '.join(map(str, type.choices))})" - if default is not None and show_default: - prompt = f"{prompt} [{_format_default(default)}]" - return f"{prompt}{suffix}" - - -def _format_default(default: t.Any) -> t.Any: - if isinstance(default, (io.IOBase, LazyFile)) and hasattr(default, "name"): - return default.name - - return default - - -def prompt( - text: str, - default: t.Any | None = None, - hide_input: bool = False, - confirmation_prompt: bool | str = False, - type: ParamType | t.Any | None = None, - value_proc: t.Callable[[str], t.Any] | None = None, - prompt_suffix: str = ": ", - show_default: bool = True, - err: bool = False, - show_choices: bool = True, -) -> t.Any: - """Prompts a user for input. This is a convenience function that can - be used to prompt a user for input later. - - If the user aborts the input by sending an interrupt signal, this - function will catch it and raise a :exc:`Abort` exception. - - :param text: the text to show for the prompt. - :param default: the default value to use if no input happens. If this - is not given it will prompt until it's aborted. - :param hide_input: if this is set to true then the input value will - be hidden. - :param confirmation_prompt: Prompt a second time to confirm the - value. Can be set to a string instead of ``True`` to customize - the message. - :param type: the type to use to check the value against. - :param value_proc: if this parameter is provided it's a function that - is invoked instead of the type conversion to - convert a value. - :param prompt_suffix: a suffix that should be added to the prompt. - :param show_default: shows or hides the default value in the prompt. - :param err: if set to true the file defaults to ``stderr`` instead of - ``stdout``, the same as with echo. - :param show_choices: Show or hide choices if the passed type is a Choice. - For example if type is a Choice of either day or week, - show_choices is true and text is "Group by" then the - prompt will be "Group by (day, week): ". - - .. versionadded:: 8.0 - ``confirmation_prompt`` can be a custom string. - - .. versionadded:: 7.0 - Added the ``show_choices`` parameter. - - .. versionadded:: 6.0 - Added unicode support for cmd.exe on Windows. - - .. versionadded:: 4.0 - Added the `err` parameter. - - """ - - def prompt_func(text: str) -> str: - f = hidden_prompt_func if hide_input else visible_prompt_func - try: - # Write the prompt separately so that we get nice - # coloring through colorama on Windows - echo(text.rstrip(" "), nl=False, err=err) - # Echo a space to stdout to work around an issue where - # readline causes backspace to clear the whole line. - return f(" ") - except (KeyboardInterrupt, EOFError): - # getpass doesn't print a newline if the user aborts input with ^C. - # Allegedly this behavior is inherited from getpass(3). - # A doc bug has been filed at https://bugs.python.org/issue24711 - if hide_input: - echo(None, err=err) - raise Abort() from None - - if value_proc is None: - value_proc = convert_type(type, default) - - prompt = _build_prompt( - text, prompt_suffix, show_default, default, show_choices, type - ) - - if confirmation_prompt: - if confirmation_prompt is True: - confirmation_prompt = _("Repeat for confirmation") - - confirmation_prompt = _build_prompt(confirmation_prompt, prompt_suffix) - - while True: - while True: - value = prompt_func(prompt) - if value: - break - elif default is not None: - value = default - break - try: - result = value_proc(value) - except UsageError as e: - if hide_input: - echo(_("Error: The value you entered was invalid."), err=err) - else: - echo(_("Error: {e.message}").format(e=e), err=err) - continue - if not confirmation_prompt: - return result - while True: - value2 = prompt_func(confirmation_prompt) - is_empty = not value and not value2 - if value2 or is_empty: - break - if value == value2: - return result - echo(_("Error: The two entered values do not match."), err=err) - - -def confirm( - text: str, - default: bool | None = False, - abort: bool = False, - prompt_suffix: str = ": ", - show_default: bool = True, - err: bool = False, -) -> bool: - """Prompts for confirmation (yes/no question). - - If the user aborts the input by sending a interrupt signal this - function will catch it and raise a :exc:`Abort` exception. - - :param text: the question to ask. - :param default: The default value to use when no input is given. If - ``None``, repeat until input is given. - :param abort: if this is set to `True` a negative answer aborts the - exception by raising :exc:`Abort`. - :param prompt_suffix: a suffix that should be added to the prompt. - :param show_default: shows or hides the default value in the prompt. - :param err: if set to true the file defaults to ``stderr`` instead of - ``stdout``, the same as with echo. - - .. versionchanged:: 8.0 - Repeat until input is given if ``default`` is ``None``. - - .. versionadded:: 4.0 - Added the ``err`` parameter. - """ - prompt = _build_prompt( - text, - prompt_suffix, - show_default, - "y/n" if default is None else ("Y/n" if default else "y/N"), - ) - - while True: - try: - # Write the prompt separately so that we get nice - # coloring through colorama on Windows - echo(prompt.rstrip(" "), nl=False, err=err) - # Echo a space to stdout to work around an issue where - # readline causes backspace to clear the whole line. - value = visible_prompt_func(" ").lower().strip() - except (KeyboardInterrupt, EOFError): - raise Abort() from None - if value in ("y", "yes"): - rv = True - elif value in ("n", "no"): - rv = False - elif default is not None and value == "": - rv = default - else: - echo(_("Error: invalid input"), err=err) - continue - break - if abort and not rv: - raise Abort() - return rv - - -def echo_via_pager( - text_or_generator: cabc.Iterable[str] | t.Callable[[], cabc.Iterable[str]] | str, - color: bool | None = None, -) -> None: - """This function takes a text and shows it via an environment specific - pager on stdout. - - .. versionchanged:: 3.0 - Added the `color` flag. - - :param text_or_generator: the text to page, or alternatively, a - generator emitting the text to page. - :param color: controls if the pager supports ANSI colors or not. The - default is autodetection. - """ - color = resolve_color_default(color) - - if inspect.isgeneratorfunction(text_or_generator): - i = t.cast("t.Callable[[], cabc.Iterable[str]]", text_or_generator)() - elif isinstance(text_or_generator, str): - i = [text_or_generator] - else: - i = iter(t.cast("cabc.Iterable[str]", text_or_generator)) - - # convert every element of i to a text type if necessary - text_generator = (el if isinstance(el, str) else str(el) for el in i) - - from ._termui_impl import pager - - return pager(itertools.chain(text_generator, "\n"), color) - - -@t.overload -def progressbar( - *, - length: int, - label: str | None = None, - hidden: bool = False, - show_eta: bool = True, - show_percent: bool | None = None, - show_pos: bool = False, - fill_char: str = "#", - empty_char: str = "-", - bar_template: str = "%(label)s [%(bar)s] %(info)s", - info_sep: str = " ", - width: int = 36, - file: t.TextIO | None = None, - color: bool | None = None, - update_min_steps: int = 1, -) -> ProgressBar[int]: ... - - -@t.overload -def progressbar( - iterable: cabc.Iterable[V] | None = None, - length: int | None = None, - label: str | None = None, - hidden: bool = False, - show_eta: bool = True, - show_percent: bool | None = None, - show_pos: bool = False, - item_show_func: t.Callable[[V | None], str | None] | None = None, - fill_char: str = "#", - empty_char: str = "-", - bar_template: str = "%(label)s [%(bar)s] %(info)s", - info_sep: str = " ", - width: int = 36, - file: t.TextIO | None = None, - color: bool | None = None, - update_min_steps: int = 1, -) -> ProgressBar[V]: ... - - -def progressbar( - iterable: cabc.Iterable[V] | None = None, - length: int | None = None, - label: str | None = None, - hidden: bool = False, - show_eta: bool = True, - show_percent: bool | None = None, - show_pos: bool = False, - item_show_func: t.Callable[[V | None], str | None] | None = None, - fill_char: str = "#", - empty_char: str = "-", - bar_template: str = "%(label)s [%(bar)s] %(info)s", - info_sep: str = " ", - width: int = 36, - file: t.TextIO | None = None, - color: bool | None = None, - update_min_steps: int = 1, -) -> ProgressBar[V]: - """This function creates an iterable context manager that can be used - to iterate over something while showing a progress bar. It will - either iterate over the `iterable` or `length` items (that are counted - up). While iteration happens, this function will print a rendered - progress bar to the given `file` (defaults to stdout) and will attempt - to calculate remaining time and more. By default, this progress bar - will not be rendered if the file is not a terminal. - - The context manager creates the progress bar. When the context - manager is entered the progress bar is already created. With every - iteration over the progress bar, the iterable passed to the bar is - advanced and the bar is updated. When the context manager exits, - a newline is printed and the progress bar is finalized on screen. - - Note: The progress bar is currently designed for use cases where the - total progress can be expected to take at least several seconds. - Because of this, the ProgressBar class object won't display - progress that is considered too fast, and progress where the time - between steps is less than a second. - - No printing must happen or the progress bar will be unintentionally - destroyed. - - Example usage:: - - with progressbar(items) as bar: - for item in bar: - do_something_with(item) - - Alternatively, if no iterable is specified, one can manually update the - progress bar through the `update()` method instead of directly - iterating over the progress bar. The update method accepts the number - of steps to increment the bar with:: - - with progressbar(length=chunks.total_bytes) as bar: - for chunk in chunks: - process_chunk(chunk) - bar.update(chunks.bytes) - - The ``update()`` method also takes an optional value specifying the - ``current_item`` at the new position. This is useful when used - together with ``item_show_func`` to customize the output for each - manual step:: - - with click.progressbar( - length=total_size, - label='Unzipping archive', - item_show_func=lambda a: a.filename - ) as bar: - for archive in zip_file: - archive.extract() - bar.update(archive.size, archive) - - :param iterable: an iterable to iterate over. If not provided the length - is required. - :param length: the number of items to iterate over. By default the - progressbar will attempt to ask the iterator about its - length, which might or might not work. If an iterable is - also provided this parameter can be used to override the - length. If an iterable is not provided the progress bar - will iterate over a range of that length. - :param label: the label to show next to the progress bar. - :param hidden: hide the progressbar. Defaults to ``False``. When no tty is - detected, it will only print the progressbar label. Setting this to - ``False`` also disables that. - :param show_eta: enables or disables the estimated time display. This is - automatically disabled if the length cannot be - determined. - :param show_percent: enables or disables the percentage display. The - default is `True` if the iterable has a length or - `False` if not. - :param show_pos: enables or disables the absolute position display. The - default is `False`. - :param item_show_func: A function called with the current item which - can return a string to show next to the progress bar. If the - function returns ``None`` nothing is shown. The current item can - be ``None``, such as when entering and exiting the bar. - :param fill_char: the character to use to show the filled part of the - progress bar. - :param empty_char: the character to use to show the non-filled part of - the progress bar. - :param bar_template: the format string to use as template for the bar. - The parameters in it are ``label`` for the label, - ``bar`` for the progress bar and ``info`` for the - info section. - :param info_sep: the separator between multiple info items (eta etc.) - :param width: the width of the progress bar in characters, 0 means full - terminal width - :param file: The file to write to. If this is not a terminal then - only the label is printed. - :param color: controls if the terminal supports ANSI colors or not. The - default is autodetection. This is only needed if ANSI - codes are included anywhere in the progress bar output - which is not the case by default. - :param update_min_steps: Render only when this many updates have - completed. This allows tuning for very fast iterators. - - .. versionadded:: 8.2 - The ``hidden`` argument. - - .. versionchanged:: 8.0 - Output is shown even if execution time is less than 0.5 seconds. - - .. versionchanged:: 8.0 - ``item_show_func`` shows the current item, not the previous one. - - .. versionchanged:: 8.0 - Labels are echoed if the output is not a TTY. Reverts a change - in 7.0 that removed all output. - - .. versionadded:: 8.0 - The ``update_min_steps`` parameter. - - .. versionadded:: 4.0 - The ``color`` parameter and ``update`` method. - - .. versionadded:: 2.0 - """ - from ._termui_impl import ProgressBar - - color = resolve_color_default(color) - return ProgressBar( - iterable=iterable, - length=length, - hidden=hidden, - show_eta=show_eta, - show_percent=show_percent, - show_pos=show_pos, - item_show_func=item_show_func, - fill_char=fill_char, - empty_char=empty_char, - bar_template=bar_template, - info_sep=info_sep, - file=file, - label=label, - width=width, - color=color, - update_min_steps=update_min_steps, - ) - - -def clear() -> None: - """Clears the terminal screen. This will have the effect of clearing - the whole visible space of the terminal and moving the cursor to the - top left. This does not do anything if not connected to a terminal. - - .. versionadded:: 2.0 - """ - if not isatty(sys.stdout): - return - - # ANSI escape \033[2J clears the screen, \033[1;1H moves the cursor - echo("\033[2J\033[1;1H", nl=False) - - -def _interpret_color(color: int | tuple[int, int, int] | str, offset: int = 0) -> str: - if isinstance(color, int): - return f"{38 + offset};5;{color:d}" - - if isinstance(color, (tuple, list)): - r, g, b = color - return f"{38 + offset};2;{r:d};{g:d};{b:d}" - - return str(_ansi_colors[color] + offset) - - -def style( - text: t.Any, - fg: int | tuple[int, int, int] | str | None = None, - bg: int | tuple[int, int, int] | str | None = None, - bold: bool | None = None, - dim: bool | None = None, - underline: bool | None = None, - overline: bool | None = None, - italic: bool | None = None, - blink: bool | None = None, - reverse: bool | None = None, - strikethrough: bool | None = None, - reset: bool = True, -) -> str: - """Styles a text with ANSI styles and returns the new string. By - default the styling is self contained which means that at the end - of the string a reset code is issued. This can be prevented by - passing ``reset=False``. - - Examples:: - - click.echo(click.style('Hello World!', fg='green')) - click.echo(click.style('ATTENTION!', blink=True)) - click.echo(click.style('Some things', reverse=True, fg='cyan')) - click.echo(click.style('More colors', fg=(255, 12, 128), bg=117)) - - Supported color names: - - * ``black`` (might be a gray) - * ``red`` - * ``green`` - * ``yellow`` (might be an orange) - * ``blue`` - * ``magenta`` - * ``cyan`` - * ``white`` (might be light gray) - * ``bright_black`` - * ``bright_red`` - * ``bright_green`` - * ``bright_yellow`` - * ``bright_blue`` - * ``bright_magenta`` - * ``bright_cyan`` - * ``bright_white`` - * ``reset`` (reset the color code only) - - If the terminal supports it, color may also be specified as: - - - An integer in the interval [0, 255]. The terminal must support - 8-bit/256-color mode. - - An RGB tuple of three integers in [0, 255]. The terminal must - support 24-bit/true-color mode. - - See https://en.wikipedia.org/wiki/ANSI_color and - https://gist.github.com/XVilka/8346728 for more information. - - :param text: the string to style with ansi codes. - :param fg: if provided this will become the foreground color. - :param bg: if provided this will become the background color. - :param bold: if provided this will enable or disable bold mode. - :param dim: if provided this will enable or disable dim mode. This is - badly supported. - :param underline: if provided this will enable or disable underline. - :param overline: if provided this will enable or disable overline. - :param italic: if provided this will enable or disable italic. - :param blink: if provided this will enable or disable blinking. - :param reverse: if provided this will enable or disable inverse - rendering (foreground becomes background and the - other way round). - :param strikethrough: if provided this will enable or disable - striking through text. - :param reset: by default a reset-all code is added at the end of the - string which means that styles do not carry over. This - can be disabled to compose styles. - - .. versionchanged:: 8.0 - A non-string ``message`` is converted to a string. - - .. versionchanged:: 8.0 - Added support for 256 and RGB color codes. - - .. versionchanged:: 8.0 - Added the ``strikethrough``, ``italic``, and ``overline`` - parameters. - - .. versionchanged:: 7.0 - Added support for bright colors. - - .. versionadded:: 2.0 - """ - if not isinstance(text, str): - text = str(text) - - bits = [] - - if fg: - try: - bits.append(f"\033[{_interpret_color(fg)}m") - except KeyError: - raise TypeError(f"Unknown color {fg!r}") from None - - if bg: - try: - bits.append(f"\033[{_interpret_color(bg, 10)}m") - except KeyError: - raise TypeError(f"Unknown color {bg!r}") from None - - if bold is not None: - bits.append(f"\033[{1 if bold else 22}m") - if dim is not None: - bits.append(f"\033[{2 if dim else 22}m") - if underline is not None: - bits.append(f"\033[{4 if underline else 24}m") - if overline is not None: - bits.append(f"\033[{53 if overline else 55}m") - if italic is not None: - bits.append(f"\033[{3 if italic else 23}m") - if blink is not None: - bits.append(f"\033[{5 if blink else 25}m") - if reverse is not None: - bits.append(f"\033[{7 if reverse else 27}m") - if strikethrough is not None: - bits.append(f"\033[{9 if strikethrough else 29}m") - bits.append(text) - if reset: - bits.append(_ansi_reset_all) - return "".join(bits) - - -def unstyle(text: str) -> str: - """Removes ANSI styling information from a string. Usually it's not - necessary to use this function as Click's echo function will - automatically remove styling if necessary. - - .. versionadded:: 2.0 - - :param text: the text to remove style information from. - """ - return strip_ansi(text) - - -def secho( - message: t.Any | None = None, - file: t.IO[t.AnyStr] | None = None, - nl: bool = True, - err: bool = False, - color: bool | None = None, - **styles: t.Any, -) -> None: - """This function combines :func:`echo` and :func:`style` into one - call. As such the following two calls are the same:: - - click.secho('Hello World!', fg='green') - click.echo(click.style('Hello World!', fg='green')) - - All keyword arguments are forwarded to the underlying functions - depending on which one they go with. - - Non-string types will be converted to :class:`str`. However, - :class:`bytes` are passed directly to :meth:`echo` without applying - style. If you want to style bytes that represent text, call - :meth:`bytes.decode` first. - - .. versionchanged:: 8.0 - A non-string ``message`` is converted to a string. Bytes are - passed through without style applied. - - .. versionadded:: 2.0 - """ - if message is not None and not isinstance(message, (bytes, bytearray)): - message = style(message, **styles) - - return echo(message, file=file, nl=nl, err=err, color=color) - - -@t.overload -def edit( - text: bytes | bytearray, - editor: str | None = None, - env: cabc.Mapping[str, str] | None = None, - require_save: bool = False, - extension: str = ".txt", -) -> bytes | None: ... - - -@t.overload -def edit( - text: str, - editor: str | None = None, - env: cabc.Mapping[str, str] | None = None, - require_save: bool = True, - extension: str = ".txt", -) -> str | None: ... - - -@t.overload -def edit( - text: None = None, - editor: str | None = None, - env: cabc.Mapping[str, str] | None = None, - require_save: bool = True, - extension: str = ".txt", - filename: str | cabc.Iterable[str] | None = None, -) -> None: ... - - -def edit( - text: str | bytes | bytearray | None = None, - editor: str | None = None, - env: cabc.Mapping[str, str] | None = None, - require_save: bool = True, - extension: str = ".txt", - filename: str | cabc.Iterable[str] | None = None, -) -> str | bytes | bytearray | 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. If the editor supports - editing multiple files at once, a sequence of files may be - passed as well. Invoke `click.file` once per file instead - if multiple files cannot be managed at once or editing the - files serially is desired. - - .. versionchanged:: 8.2.0 - ``filename`` now accepts any ``Iterable[str]`` in addition to a ``str`` - if the ``editor`` supports editing multiple files at once. - - """ - from ._termui_impl import Editor - - ed = Editor(editor=editor, env=env, require_save=require_save, extension=extension) - - if filename is None: - return ed.edit(text) - - if isinstance(filename, str): - filename = (filename,) - - ed.edit_files(filenames=filename) - return None - - -def launch(url: str, wait: bool = False, locate: bool = False) -> int: - """This function launches the given URL (or filename) in the default - viewer application for this file type. If this is an executable, it - might launch the executable in a new session. The return value is - the exit code of the launched application. Usually, ``0`` indicates - success. - - Examples:: - - click.launch('https://click.palletsprojects.com/') - click.launch('/my/downloaded/file', locate=True) - - .. versionadded:: 2.0 - - :param url: URL or filename of the thing to launch. - :param wait: Wait for the program to exit before returning. This - only works if the launched program blocks. In particular, - ``xdg-open`` on Linux does not block. - :param locate: if this is set to `True` then instead of launching the - application associated with the URL it will attempt to - launch a file manager with the file located. This - might have weird effects if the URL does not point to - the filesystem. - """ - from ._termui_impl import open_url - - return open_url(url, wait=wait, locate=locate) - - -# If this is provided, getchar() calls into this instead. This is used -# for unittesting purposes. -_getchar: t.Callable[[bool], str] | None = None - - -def getchar(echo: bool = False) -> str: - """Fetches a single character from the terminal and returns it. This - will always return a unicode character and under certain rare - circumstances this might return more than one character. The - situations which more than one character is returned is when for - whatever reason multiple characters end up in the terminal buffer or - standard input was not actually a terminal. - - Note that this will always read from the terminal, even if something - is piped into the standard input. - - Note for Windows: in rare cases when typing non-ASCII characters, this - function might wait for a second character and then return both at once. - This is because certain Unicode characters look like special-key markers. - - .. versionadded:: 2.0 - - :param echo: if set to `True`, the character read will also show up on - the terminal. The default is to not show it. - """ - global _getchar - - if _getchar is None: - from ._termui_impl import getchar as f - - _getchar = f - - return _getchar(echo) - - -def raw_terminal() -> AbstractContextManager[int]: - from ._termui_impl import raw_terminal as f - - return f() - - -def pause(info: str | None = None, err: bool = False) -> None: - """This command stops execution and waits for the user to press any - key to continue. This is similar to the Windows batch "pause" - command. If the program is not run through a terminal, this command - will instead do nothing. - - .. versionadded:: 2.0 - - .. versionadded:: 4.0 - Added the `err` parameter. - - :param info: The message to print before pausing. Defaults to - ``"Press any key to continue..."``. - :param err: if set to message goes to ``stderr`` instead of - ``stdout``, the same as with echo. - """ - if not isatty(sys.stdin) or not isatty(sys.stdout): - return - - if info is None: - info = _("Press any key to continue...") - - try: - if info: - echo(info, nl=False, err=err) - try: - getchar() - except (KeyboardInterrupt, EOFError): - pass - finally: - if info: - echo(err=err) diff --git a/venv/lib/python3.12/site-packages/click/testing.py b/venv/lib/python3.12/site-packages/click/testing.py deleted file mode 100644 index d19c103..0000000 --- a/venv/lib/python3.12/site-packages/click/testing.py +++ /dev/null @@ -1,557 +0,0 @@ -from __future__ import annotations - -import collections.abc as cabc -import contextlib -import io -import os -import shlex -import shutil -import sys -import tempfile -import typing as t -from types import TracebackType - -from . import _compat -from . import formatting -from . import termui -from . import utils -from ._compat import _find_binary_reader - -if t.TYPE_CHECKING: - from _typeshed import ReadableBuffer - - from .core import Command - - -class EchoingStdin: - def __init__(self, input: t.BinaryIO, output: t.BinaryIO) -> None: - self._input = input - self._output = output - self._paused = False - - def __getattr__(self, x: str) -> t.Any: - return getattr(self._input, x) - - def _echo(self, rv: bytes) -> bytes: - if not self._paused: - self._output.write(rv) - - return rv - - def read(self, n: int = -1) -> bytes: - return self._echo(self._input.read(n)) - - def read1(self, n: int = -1) -> bytes: - return self._echo(self._input.read1(n)) # type: ignore - - def readline(self, n: int = -1) -> bytes: - return self._echo(self._input.readline(n)) - - def readlines(self) -> list[bytes]: - return [self._echo(x) for x in self._input.readlines()] - - def __iter__(self) -> cabc.Iterator[bytes]: - return iter(self._echo(x) for x in self._input) - - def __repr__(self) -> str: - return repr(self._input) - - -@contextlib.contextmanager -def _pause_echo(stream: EchoingStdin | None) -> cabc.Iterator[None]: - if stream is None: - yield - else: - stream._paused = True - yield - stream._paused = False - - -class BytesIOCopy(io.BytesIO): - """Patch ``io.BytesIO`` to let the written stream be copied to another. - - .. versionadded:: 8.2 - """ - - def __init__(self, copy_to: io.BytesIO) -> None: - super().__init__() - self.copy_to = copy_to - - def flush(self) -> None: - super().flush() - self.copy_to.flush() - - def write(self, b: ReadableBuffer) -> int: - self.copy_to.write(b) - return super().write(b) - - -class StreamMixer: - """Mixes `` and `` streams. - - The result is available in the ``output`` attribute. - - .. versionadded:: 8.2 - """ - - def __init__(self) -> None: - self.output: io.BytesIO = io.BytesIO() - self.stdout: io.BytesIO = BytesIOCopy(copy_to=self.output) - self.stderr: io.BytesIO = BytesIOCopy(copy_to=self.output) - - -class _NamedTextIOWrapper(io.TextIOWrapper): - def __init__( - self, buffer: t.BinaryIO, name: str, mode: str, **kwargs: t.Any - ) -> None: - super().__init__(buffer, **kwargs) - self._name = name - self._mode = mode - - @property - def name(self) -> str: - return self._name - - @property - def mode(self) -> str: - return self._mode - - -def make_input_stream( - input: str | bytes | t.IO[t.Any] | None, charset: str -) -> t.BinaryIO: - # Is already an input stream. - if hasattr(input, "read"): - rv = _find_binary_reader(t.cast("t.IO[t.Any]", input)) - - if rv is not None: - return rv - - raise TypeError("Could not find binary reader for input stream.") - - if input is None: - input = b"" - elif isinstance(input, str): - input = input.encode(charset) - - return io.BytesIO(input) - - -class Result: - """Holds the captured result of an invoked CLI script. - - :param runner: The runner that created the result - :param stdout_bytes: The standard output as bytes. - :param stderr_bytes: The standard error as bytes. - :param output_bytes: A mix of ``stdout_bytes`` and ``stderr_bytes``, as the - user would see it in its terminal. - :param return_value: The value returned from the invoked command. - :param exit_code: The exit code as integer. - :param exception: The exception that happened if one did. - :param exc_info: Exception information (exception type, exception instance, - traceback type). - - .. versionchanged:: 8.2 - ``stderr_bytes`` no longer optional, ``output_bytes`` introduced and - ``mix_stderr`` has been removed. - - .. versionadded:: 8.0 - Added ``return_value``. - """ - - def __init__( - self, - runner: CliRunner, - stdout_bytes: bytes, - stderr_bytes: bytes, - output_bytes: bytes, - return_value: t.Any, - exit_code: int, - exception: BaseException | None, - exc_info: tuple[type[BaseException], BaseException, TracebackType] - | None = None, - ): - self.runner = runner - self.stdout_bytes = stdout_bytes - self.stderr_bytes = stderr_bytes - self.output_bytes = output_bytes - self.return_value = return_value - self.exit_code = exit_code - self.exception = exception - self.exc_info = exc_info - - @property - def output(self) -> str: - """The terminal output as unicode string, as the user would see it. - - .. versionchanged:: 8.2 - No longer a proxy for ``self.stdout``. Now has its own independent stream - that is mixing `` and ``, in the order they were written. - """ - return self.output_bytes.decode(self.runner.charset, "replace").replace( - "\r\n", "\n" - ) - - @property - def stdout(self) -> str: - """The standard output as unicode string.""" - return self.stdout_bytes.decode(self.runner.charset, "replace").replace( - "\r\n", "\n" - ) - - @property - def stderr(self) -> str: - """The standard error as unicode string. - - .. versionchanged:: 8.2 - No longer raise an exception, always returns the `` string. - """ - return self.stderr_bytes.decode(self.runner.charset, "replace").replace( - "\r\n", "\n" - ) - - def __repr__(self) -> str: - exc_str = repr(self.exception) if self.exception else "okay" - return f"<{type(self).__name__} {exc_str}>" - - -class CliRunner: - """The CLI runner provides functionality to invoke a Click command line - script for unittesting purposes in a isolated environment. This only - works in single-threaded systems without any concurrency as it changes the - global interpreter state. - - :param charset: the character set for the input and output data. - :param env: a dictionary with environment variables for overriding. - :param echo_stdin: if this is set to `True`, then reading from `` writes - to ``. This is useful for showing examples in - some circumstances. Note that regular prompts - will automatically echo the input. - :param catch_exceptions: Whether to catch any exceptions other than - ``SystemExit`` when running :meth:`~CliRunner.invoke`. - - .. versionchanged:: 8.2 - Added the ``catch_exceptions`` parameter. - - .. versionchanged:: 8.2 - ``mix_stderr`` parameter has been removed. - """ - - def __init__( - self, - charset: str = "utf-8", - env: cabc.Mapping[str, str | None] | None = None, - echo_stdin: bool = False, - catch_exceptions: bool = True, - ) -> None: - self.charset = charset - self.env: cabc.Mapping[str, str | None] = env or {} - self.echo_stdin = echo_stdin - self.catch_exceptions = catch_exceptions - - def get_default_prog_name(self, cli: Command) -> str: - """Given a command object it will return the default program name - for it. The default is the `name` attribute or ``"root"`` if not - set. - """ - return cli.name or "root" - - def make_env( - self, overrides: cabc.Mapping[str, str | None] | None = None - ) -> cabc.Mapping[str, str | 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: str | bytes | t.IO[t.Any] | None = None, - env: cabc.Mapping[str, str | None] | None = None, - color: bool = False, - ) -> cabc.Iterator[tuple[io.BytesIO, io.BytesIO, io.BytesIO]]: - """A context manager that sets up the isolation for invoking of a - command line tool. This sets up `` with the given input data - and `os.environ` with the overrides from the given dictionary. - This also rebinds some internals in Click to be mocked (like the - prompt functionality). - - This is automatically done in the :meth:`invoke` method. - - :param input: the input stream to put into `sys.stdin`. - :param env: the environment overrides as dictionary. - :param color: whether the output should contain color codes. The - application can still override this explicitly. - - .. versionadded:: 8.2 - An additional output stream is returned, which is a mix of - `` and `` streams. - - .. versionchanged:: 8.2 - Always returns the `` stream. - - .. versionchanged:: 8.0 - `` is opened with ``errors="backslashreplace"`` - instead of the default ``"strict"``. - - .. versionchanged:: 4.0 - Added the ``color`` parameter. - """ - bytes_input = make_input_stream(input, self.charset) - echo_input = None - - old_stdin = sys.stdin - old_stdout = sys.stdout - old_stderr = sys.stderr - old_forced_width = formatting.FORCED_WIDTH - formatting.FORCED_WIDTH = 80 - - env = self.make_env(env) - - stream_mixer = StreamMixer() - - if self.echo_stdin: - bytes_input = echo_input = t.cast( - t.BinaryIO, EchoingStdin(bytes_input, stream_mixer.stdout) - ) - - sys.stdin = text_input = _NamedTextIOWrapper( - bytes_input, encoding=self.charset, name="", mode="r" - ) - - if self.echo_stdin: - # Force unbuffered reads, otherwise TextIOWrapper reads a - # large chunk which is echoed early. - text_input._CHUNK_SIZE = 1 # type: ignore - - sys.stdout = _NamedTextIOWrapper( - stream_mixer.stdout, encoding=self.charset, name="", mode="w" - ) - - sys.stderr = _NamedTextIOWrapper( - stream_mixer.stderr, - encoding=self.charset, - name="", - mode="w", - errors="backslashreplace", - ) - - @_pause_echo(echo_input) # type: ignore - def visible_input(prompt: str | None = None) -> str: - sys.stdout.write(prompt or "") - val = text_input.readline().rstrip("\r\n") - sys.stdout.write(f"{val}\n") - sys.stdout.flush() - return val - - @_pause_echo(echo_input) # type: ignore - def hidden_input(prompt: str | None = None) -> str: - sys.stdout.write(f"{prompt or ''}\n") - sys.stdout.flush() - return text_input.readline().rstrip("\r\n") - - @_pause_echo(echo_input) # type: ignore - def _getchar(echo: bool) -> str: - char = sys.stdin.read(1) - - if echo: - sys.stdout.write(char) - - sys.stdout.flush() - return char - - default_color = color - - def should_strip_ansi( - stream: t.IO[t.Any] | None = None, color: bool | None = None - ) -> bool: - if color is None: - return not default_color - return not color - - old_visible_prompt_func = termui.visible_prompt_func - old_hidden_prompt_func = termui.hidden_prompt_func - old__getchar_func = termui._getchar - old_should_strip_ansi = utils.should_strip_ansi # type: ignore - old__compat_should_strip_ansi = _compat.should_strip_ansi - termui.visible_prompt_func = visible_input - termui.hidden_prompt_func = hidden_input - termui._getchar = _getchar - utils.should_strip_ansi = should_strip_ansi # type: ignore - _compat.should_strip_ansi = should_strip_ansi - - old_env = {} - try: - for key, value in env.items(): - old_env[key] = os.environ.get(key) - if value is None: - try: - del os.environ[key] - except Exception: - pass - else: - os.environ[key] = value - yield (stream_mixer.stdout, stream_mixer.stderr, stream_mixer.output) - finally: - for key, value in old_env.items(): - if value is None: - try: - del os.environ[key] - except Exception: - pass - else: - os.environ[key] = value - sys.stdout = old_stdout - sys.stderr = old_stderr - sys.stdin = old_stdin - termui.visible_prompt_func = old_visible_prompt_func - termui.hidden_prompt_func = old_hidden_prompt_func - termui._getchar = old__getchar_func - utils.should_strip_ansi = old_should_strip_ansi # type: ignore - _compat.should_strip_ansi = old__compat_should_strip_ansi - formatting.FORCED_WIDTH = old_forced_width - - def invoke( - self, - cli: Command, - args: str | cabc.Sequence[str] | None = None, - input: str | bytes | t.IO[t.Any] | None = None, - env: cabc.Mapping[str, str | None] | None = None, - catch_exceptions: bool | None = None, - color: bool = False, - **extra: t.Any, - ) -> Result: - """Invokes a command in an isolated environment. The arguments are - forwarded directly to the command line script, the `extra` keyword - arguments are passed to the :meth:`~clickpkg.Command.main` function of - the command. - - This returns a :class:`Result` object. - - :param cli: the command to invoke - :param args: the arguments to invoke. It may be given as an iterable - or a string. When given as string it will be interpreted - as a Unix shell command. More details at - :func:`shlex.split`. - :param input: the input data for `sys.stdin`. - :param env: the environment overrides. - :param catch_exceptions: Whether to catch any other exceptions than - ``SystemExit``. If :data:`None`, the value - from :class:`CliRunner` is used. - :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. - - .. versionadded:: 8.2 - The result object has the ``output_bytes`` attribute with - the mix of ``stdout_bytes`` and ``stderr_bytes``, as the user would - see it in its terminal. - - .. versionchanged:: 8.2 - The result object always returns the ``stderr_bytes`` stream. - - .. versionchanged:: 8.0 - The result object has the ``return_value`` attribute with - the value returned from the invoked command. - - .. versionchanged:: 4.0 - Added the ``color`` parameter. - - .. versionchanged:: 3.0 - Added the ``catch_exceptions`` parameter. - - .. versionchanged:: 3.0 - The result object has the ``exc_info`` attribute with the - traceback if available. - """ - exc_info = None - if catch_exceptions is None: - catch_exceptions = self.catch_exceptions - - with self.isolation(input=input, env=env, color=color) as outstreams: - return_value = None - exception: BaseException | None = None - exit_code = 0 - - if isinstance(args, str): - args = shlex.split(args) - - try: - prog_name = extra.pop("prog_name") - except KeyError: - prog_name = self.get_default_prog_name(cli) - - try: - return_value = cli.main(args=args or (), prog_name=prog_name, **extra) - except SystemExit as e: - exc_info = sys.exc_info() - e_code = t.cast("int | t.Any | None", e.code) - - if e_code is None: - e_code = 0 - - if e_code != 0: - exception = e - - if not isinstance(e_code, int): - sys.stdout.write(str(e_code)) - sys.stdout.write("\n") - e_code = 1 - - exit_code = e_code - - except Exception as e: - if not catch_exceptions: - raise - exception = e - exit_code = 1 - exc_info = sys.exc_info() - finally: - sys.stdout.flush() - stdout = outstreams[0].getvalue() - stderr = outstreams[1].getvalue() - output = outstreams[2].getvalue() - - return Result( - runner=self, - stdout_bytes=stdout, - stderr_bytes=stderr, - output_bytes=output, - return_value=return_value, - exit_code=exit_code, - exception=exception, - exc_info=exc_info, # type: ignore - ) - - @contextlib.contextmanager - def isolated_filesystem( - self, temp_dir: str | os.PathLike[str] | None = None - ) -> cabc.Iterator[str]: - """A context manager that creates a temporary directory and - changes the current working directory to it. This isolates tests - that affect the contents of the CWD to prevent them from - interfering with each other. - - :param temp_dir: Create the temporary directory under this - directory. If given, the created directory is not removed - when exiting. - - .. versionchanged:: 8.0 - Added the ``temp_dir`` parameter. - """ - cwd = os.getcwd() - dt = tempfile.mkdtemp(dir=temp_dir) - os.chdir(dt) - - try: - yield dt - finally: - os.chdir(cwd) - - if temp_dir is None: - try: - shutil.rmtree(dt) - except OSError: - pass diff --git a/venv/lib/python3.12/site-packages/click/types.py b/venv/lib/python3.12/site-packages/click/types.py deleted file mode 100644 index 684cb3b..0000000 --- a/venv/lib/python3.12/site-packages/click/types.py +++ /dev/null @@ -1,1165 +0,0 @@ -from __future__ import annotations - -import collections.abc as cabc -import enum -import os -import stat -import sys -import typing as t -from datetime import datetime -from gettext import gettext as _ -from gettext import ngettext - -from ._compat import _get_argv_encoding -from ._compat import open_stream -from .exceptions import BadParameter -from .utils import format_filename -from .utils import LazyFile -from .utils import safecall - -if t.TYPE_CHECKING: - import typing_extensions as te - - from .core import Context - from .core import Parameter - from .shell_completion import CompletionItem - -ParamTypeValue = t.TypeVar("ParamTypeValue") - - -class ParamType: - """Represents the type of a parameter. Validates and converts values - from the command line or Python into the correct type. - - To implement a custom type, subclass and implement at least the - following: - - - The :attr:`name` class attribute must be set. - - Calling an instance of the type with ``None`` must return - ``None``. This is already implemented by default. - - :meth:`convert` must convert string values to the correct type. - - :meth:`convert` must accept values that are already the correct - type. - - It must be able to convert a value if the ``ctx`` and ``param`` - arguments are ``None``. This can occur when converting prompt - input. - """ - - is_composite: t.ClassVar[bool] = False - arity: t.ClassVar[int] = 1 - - #: the descriptive name of this type - name: str - - #: if a list of this type is expected and the value is pulled from a - #: string environment variable, this is what splits it up. `None` - #: means any whitespace. For all parameters the general rule is that - #: whitespace splits them up. The exception are paths and files which - #: are split by ``os.path.pathsep`` by default (":" on Unix and ";" on - #: Windows). - envvar_list_splitter: t.ClassVar[str | None] = None - - def to_info_dict(self) -> dict[str, t.Any]: - """Gather information that could be useful for a tool generating - user-facing documentation. - - Use :meth:`click.Context.to_info_dict` to traverse the entire - CLI structure. - - .. versionadded:: 8.0 - """ - # The class name without the "ParamType" suffix. - param_type = type(self).__name__.partition("ParamType")[0] - param_type = param_type.partition("ParameterType")[0] - - # Custom subclasses might not remember to set a name. - if hasattr(self, "name"): - name = self.name - else: - name = param_type - - return {"param_type": param_type, "name": name} - - def __call__( - self, - value: t.Any, - param: Parameter | None = None, - ctx: Context | None = None, - ) -> t.Any: - if value is not None: - return self.convert(value, param, ctx) - - def get_metavar(self, param: Parameter, ctx: Context) -> str | None: - """Returns the metavar default for this param if it provides one.""" - - def get_missing_message(self, param: Parameter, ctx: Context | None) -> str | None: - """Optionally might return extra information about a missing - parameter. - - .. versionadded:: 2.0 - """ - - def convert( - self, value: t.Any, param: Parameter | None, ctx: Context | None - ) -> t.Any: - """Convert the value to the correct type. This is not called if - the value is ``None`` (the missing value). - - This must accept string values from the command line, as well as - values that are already the correct type. It may also convert - other compatible types. - - The ``param`` and ``ctx`` arguments may be ``None`` in certain - situations, such as when converting prompt input. - - If the value cannot be converted, call :meth:`fail` with a - descriptive message. - - :param value: The value to convert. - :param param: The parameter that is using this type to convert - its value. May be ``None``. - :param ctx: The current context that arrived at this value. May - be ``None``. - """ - return value - - def split_envvar_value(self, rv: str) -> cabc.Sequence[str]: - """Given a value from an environment variable this splits it up - into small chunks depending on the defined envvar list splitter. - - If the splitter is set to `None`, which means that whitespace splits, - then leading and trailing whitespace is ignored. Otherwise, leading - and trailing splitters usually lead to empty items being included. - """ - return (rv or "").split(self.envvar_list_splitter) - - def fail( - self, - message: str, - param: Parameter | None = None, - ctx: Context | None = None, - ) -> t.NoReturn: - """Helper method to fail with an invalid value message.""" - raise BadParameter(message, ctx=ctx, param=param) - - def shell_complete( - self, ctx: Context, param: Parameter, incomplete: str - ) -> list[CompletionItem]: - """Return a list of - :class:`~click.shell_completion.CompletionItem` objects for the - incomplete value. Most types do not provide completions, but - some do, and this allows custom types to provide custom - completions as well. - - :param ctx: Invocation context for this command. - :param param: The parameter that is requesting completion. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - return [] - - -class CompositeParamType(ParamType): - is_composite = True - - @property - def arity(self) -> int: # type: ignore - raise NotImplementedError() - - -class FuncParamType(ParamType): - def __init__(self, func: t.Callable[[t.Any], t.Any]) -> None: - self.name: str = func.__name__ - self.func = func - - def to_info_dict(self) -> dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict["func"] = self.func - return info_dict - - def convert( - self, value: t.Any, param: Parameter | None, ctx: Context | None - ) -> t.Any: - try: - return self.func(value) - except ValueError: - try: - value = str(value) - except UnicodeError: - value = value.decode("utf-8", "replace") - - self.fail(value, param, ctx) - - -class UnprocessedParamType(ParamType): - name = "text" - - def convert( - self, value: t.Any, param: Parameter | None, ctx: Context | None - ) -> t.Any: - return value - - def __repr__(self) -> str: - return "UNPROCESSED" - - -class StringParamType(ParamType): - name = "text" - - def convert( - self, value: t.Any, param: Parameter | None, ctx: Context | None - ) -> t.Any: - if isinstance(value, bytes): - enc = _get_argv_encoding() - try: - value = value.decode(enc) - except UnicodeError: - fs_enc = sys.getfilesystemencoding() - if fs_enc != enc: - try: - value = value.decode(fs_enc) - except UnicodeError: - value = value.decode("utf-8", "replace") - else: - value = value.decode("utf-8", "replace") - return value - return str(value) - - def __repr__(self) -> str: - return "STRING" - - -class Choice(ParamType, t.Generic[ParamTypeValue]): - """The choice type allows a value to be checked against a fixed set - of supported values. - - You may pass any iterable value which will be converted to a tuple - and thus will only be iterated once. - - The resulting value will always be one of the originally passed choices. - See :meth:`normalize_choice` for more info on the mapping of strings - to choices. See :ref:`choice-opts` for an example. - - :param case_sensitive: Set to false to make choices case - insensitive. Defaults to true. - - .. versionchanged:: 8.2.0 - Non-``str`` ``choices`` are now supported. It can additionally be any - iterable. Before you were not recommended to pass anything but a list or - tuple. - - .. versionadded:: 8.2.0 - Choice normalization can be overridden via :meth:`normalize_choice`. - """ - - name = "choice" - - def __init__( - self, choices: cabc.Iterable[ParamTypeValue], case_sensitive: bool = True - ) -> None: - self.choices: cabc.Sequence[ParamTypeValue] = tuple(choices) - self.case_sensitive = case_sensitive - - def to_info_dict(self) -> dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict["choices"] = self.choices - info_dict["case_sensitive"] = self.case_sensitive - return info_dict - - def _normalized_mapping( - self, ctx: Context | None = None - ) -> cabc.Mapping[ParamTypeValue, str]: - """ - Returns mapping where keys are the original choices and the values are - the normalized values that are accepted via the command line. - - This is a simple wrapper around :meth:`normalize_choice`, use that - instead which is supported. - """ - return { - choice: self.normalize_choice( - choice=choice, - ctx=ctx, - ) - for choice in self.choices - } - - def normalize_choice(self, choice: ParamTypeValue, ctx: Context | None) -> str: - """ - Normalize a choice value, used to map a passed string to a choice. - Each choice must have a unique normalized value. - - By default uses :meth:`Context.token_normalize_func` and if not case - sensitive, convert it to a casefolded value. - - .. versionadded:: 8.2.0 - """ - normed_value = choice.name if isinstance(choice, enum.Enum) else str(choice) - - if ctx is not None and ctx.token_normalize_func is not None: - normed_value = ctx.token_normalize_func(normed_value) - - if not self.case_sensitive: - normed_value = normed_value.casefold() - - return normed_value - - def get_metavar(self, param: Parameter, ctx: Context) -> str | None: - if param.param_type_name == "option" and not param.show_choices: # type: ignore - choice_metavars = [ - convert_type(type(choice)).name.upper() for choice in self.choices - ] - choices_str = "|".join([*dict.fromkeys(choice_metavars)]) - else: - choices_str = "|".join( - [str(i) for i in self._normalized_mapping(ctx=ctx).values()] - ) - - # Use curly braces to indicate a required argument. - if param.required and param.param_type_name == "argument": - return f"{{{choices_str}}}" - - # Use square braces to indicate an option or optional argument. - return f"[{choices_str}]" - - def get_missing_message(self, param: Parameter, ctx: Context | None) -> str: - """ - Message shown when no choice is passed. - - .. versionchanged:: 8.2.0 Added ``ctx`` argument. - """ - return _("Choose from:\n\t{choices}").format( - choices=",\n\t".join(self._normalized_mapping(ctx=ctx).values()) - ) - - def convert( - self, value: t.Any, param: Parameter | None, ctx: Context | None - ) -> ParamTypeValue: - """ - For a given value from the parser, normalize it and find its - matching normalized value in the list of choices. Then return the - matched "original" choice. - """ - normed_value = self.normalize_choice(choice=value, ctx=ctx) - normalized_mapping = self._normalized_mapping(ctx=ctx) - - try: - return next( - original - for original, normalized in normalized_mapping.items() - if normalized == normed_value - ) - except StopIteration: - self.fail( - self.get_invalid_choice_message(value=value, ctx=ctx), - param=param, - ctx=ctx, - ) - - def get_invalid_choice_message(self, value: t.Any, ctx: Context | None) -> str: - """Get the error message when the given choice is invalid. - - :param value: The invalid value. - - .. versionadded:: 8.2 - """ - choices_str = ", ".join(map(repr, self._normalized_mapping(ctx=ctx).values())) - return ngettext( - "{value!r} is not {choice}.", - "{value!r} is not one of {choices}.", - len(self.choices), - ).format(value=value, choice=choices_str, choices=choices_str) - - def __repr__(self) -> str: - return f"Choice({list(self.choices)})" - - def shell_complete( - self, ctx: Context, param: Parameter, incomplete: str - ) -> list[CompletionItem]: - """Complete choices that start with the incomplete value. - - :param ctx: Invocation context for this command. - :param param: The parameter that is requesting completion. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - from click.shell_completion import CompletionItem - - str_choices = map(str, self.choices) - - if self.case_sensitive: - matched = (c for c in str_choices if c.startswith(incomplete)) - else: - incomplete = incomplete.lower() - matched = (c for c in str_choices if c.lower().startswith(incomplete)) - - return [CompletionItem(c) for c in matched] - - -class DateTime(ParamType): - """The DateTime type converts date strings into `datetime` objects. - - The format strings which are checked are configurable, but default to some - common (non-timezone aware) ISO 8601 formats. - - When specifying *DateTime* formats, you should only pass a list or a tuple. - Other iterables, like generators, may lead to surprising results. - - The format strings are processed using ``datetime.strptime``, and this - consequently defines the format strings which are allowed. - - Parsing is tried using each format, in order, and the first format which - parses successfully is used. - - :param formats: A list or tuple of date format strings, in the order in - which they should be tried. Defaults to - ``'%Y-%m-%d'``, ``'%Y-%m-%dT%H:%M:%S'``, - ``'%Y-%m-%d %H:%M:%S'``. - """ - - name = "datetime" - - def __init__(self, formats: cabc.Sequence[str] | None = None): - self.formats: cabc.Sequence[str] = formats or [ - "%Y-%m-%d", - "%Y-%m-%dT%H:%M:%S", - "%Y-%m-%d %H:%M:%S", - ] - - def to_info_dict(self) -> dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict["formats"] = self.formats - return info_dict - - def get_metavar(self, param: Parameter, ctx: Context) -> str | None: - return f"[{'|'.join(self.formats)}]" - - def _try_to_convert_date(self, value: t.Any, format: str) -> datetime | None: - try: - return datetime.strptime(value, format) - except ValueError: - return None - - def convert( - self, value: t.Any, param: Parameter | None, ctx: Context | None - ) -> t.Any: - if isinstance(value, datetime): - return value - - for format in self.formats: - converted = self._try_to_convert_date(value, format) - - if converted is not None: - return converted - - formats_str = ", ".join(map(repr, self.formats)) - self.fail( - ngettext( - "{value!r} does not match the format {format}.", - "{value!r} does not match the formats {formats}.", - len(self.formats), - ).format(value=value, format=formats_str, formats=formats_str), - param, - ctx, - ) - - def __repr__(self) -> str: - return "DateTime" - - -class _NumberParamTypeBase(ParamType): - _number_class: t.ClassVar[type[t.Any]] - - def convert( - self, value: t.Any, param: Parameter | None, ctx: Context | None - ) -> t.Any: - try: - return self._number_class(value) - except ValueError: - self.fail( - _("{value!r} is not a valid {number_type}.").format( - value=value, number_type=self.name - ), - param, - ctx, - ) - - -class _NumberRangeBase(_NumberParamTypeBase): - def __init__( - self, - min: float | None = None, - max: float | None = None, - min_open: bool = False, - max_open: bool = False, - clamp: bool = False, - ) -> None: - self.min = min - self.max = max - self.min_open = min_open - self.max_open = max_open - self.clamp = clamp - - def to_info_dict(self) -> dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict.update( - min=self.min, - max=self.max, - min_open=self.min_open, - max_open=self.max_open, - clamp=self.clamp, - ) - return info_dict - - def convert( - self, value: t.Any, param: Parameter | None, ctx: Context | None - ) -> t.Any: - import operator - - rv = super().convert(value, param, ctx) - lt_min: bool = self.min is not None and ( - operator.le if self.min_open else operator.lt - )(rv, self.min) - gt_max: bool = self.max is not None and ( - operator.ge if self.max_open else operator.gt - )(rv, self.max) - - if self.clamp: - if lt_min: - return self._clamp(self.min, 1, self.min_open) # type: ignore - - if gt_max: - return self._clamp(self.max, -1, self.max_open) # type: ignore - - if lt_min or gt_max: - self.fail( - _("{value} is not in the range {range}.").format( - value=rv, range=self._describe_range() - ), - param, - ctx, - ) - - return rv - - def _clamp(self, bound: float, dir: t.Literal[1, -1], open: bool) -> float: - """Find the valid value to clamp to bound in the given - direction. - - :param bound: The boundary value. - :param dir: 1 or -1 indicating the direction to move. - :param open: If true, the range does not include the bound. - """ - raise NotImplementedError - - def _describe_range(self) -> str: - """Describe the range for use in help text.""" - if self.min is None: - op = "<" if self.max_open else "<=" - return f"x{op}{self.max}" - - if self.max is None: - op = ">" if self.min_open else ">=" - return f"x{op}{self.min}" - - lop = "<" if self.min_open else "<=" - rop = "<" if self.max_open else "<=" - return f"{self.min}{lop}x{rop}{self.max}" - - def __repr__(self) -> str: - clamp = " clamped" if self.clamp else "" - return f"<{type(self).__name__} {self._describe_range()}{clamp}>" - - -class IntParamType(_NumberParamTypeBase): - name = "integer" - _number_class = int - - def __repr__(self) -> str: - return "INT" - - -class IntRange(_NumberRangeBase, IntParamType): - """Restrict an :data:`click.INT` value to a range of accepted - values. See :ref:`ranges`. - - If ``min`` or ``max`` are not passed, any value is accepted in that - direction. If ``min_open`` or ``max_open`` are enabled, the - corresponding boundary is not included in the range. - - If ``clamp`` is enabled, a value outside the range is clamped to the - boundary instead of failing. - - .. versionchanged:: 8.0 - Added the ``min_open`` and ``max_open`` parameters. - """ - - name = "integer range" - - def _clamp( # type: ignore - self, bound: int, dir: t.Literal[1, -1], open: bool - ) -> int: - if not open: - return bound - - return bound + dir - - -class FloatParamType(_NumberParamTypeBase): - name = "float" - _number_class = float - - def __repr__(self) -> str: - return "FLOAT" - - -class FloatRange(_NumberRangeBase, FloatParamType): - """Restrict a :data:`click.FLOAT` value to a range of accepted - values. See :ref:`ranges`. - - If ``min`` or ``max`` are not passed, any value is accepted in that - direction. If ``min_open`` or ``max_open`` are enabled, the - corresponding boundary is not included in the range. - - If ``clamp`` is enabled, a value outside the range is clamped to the - boundary instead of failing. This is not supported if either - boundary is marked ``open``. - - .. versionchanged:: 8.0 - Added the ``min_open`` and ``max_open`` parameters. - """ - - name = "float range" - - def __init__( - self, - min: float | None = None, - max: float | None = None, - min_open: bool = False, - max_open: bool = False, - clamp: bool = False, - ) -> None: - super().__init__( - min=min, max=max, min_open=min_open, max_open=max_open, clamp=clamp - ) - - if (min_open or max_open) and clamp: - raise TypeError("Clamping is not supported for open bounds.") - - def _clamp(self, bound: float, dir: t.Literal[1, -1], open: bool) -> float: - if not open: - return bound - - # Could use math.nextafter here, but clamping an - # open float range doesn't seem to be particularly useful. It's - # left up to the user to write a callback to do it if needed. - raise RuntimeError("Clamping is not supported for open bounds.") - - -class BoolParamType(ParamType): - name = "boolean" - - def convert( - self, value: t.Any, param: Parameter | None, ctx: Context | None - ) -> t.Any: - if value in {False, True}: - return bool(value) - - norm = value.strip().lower() - - if norm in {"1", "true", "t", "yes", "y", "on"}: - return True - - if norm in {"0", "false", "f", "no", "n", "off"}: - return False - - self.fail( - _("{value!r} is not a valid boolean.").format(value=value), param, ctx - ) - - def __repr__(self) -> str: - return "BOOL" - - -class UUIDParameterType(ParamType): - name = "uuid" - - def convert( - self, value: t.Any, param: Parameter | None, ctx: Context | None - ) -> t.Any: - import uuid - - if isinstance(value, uuid.UUID): - return value - - value = value.strip() - - try: - return uuid.UUID(value) - except ValueError: - self.fail( - _("{value!r} is not a valid UUID.").format(value=value), param, ctx - ) - - def __repr__(self) -> str: - return "UUID" - - -class File(ParamType): - """Declares a parameter to be a file for reading or writing. The file - is automatically closed once the context tears down (after the command - finished working). - - Files can be opened for reading or writing. The special value ``-`` - indicates stdin or stdout depending on the mode. - - By default, the file is opened for reading text data, but it can also be - opened in binary mode or for writing. The encoding parameter can be used - to force a specific encoding. - - The `lazy` flag controls if the file should be opened immediately or upon - first IO. The default is to be non-lazy for standard input and output - streams as well as files opened for reading, `lazy` otherwise. When opening a - file lazily for reading, it is still opened temporarily for validation, but - will not be held open until first IO. lazy is mainly useful when opening - for writing to avoid creating the file until it is needed. - - 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. - - .. versionchanged:: 2.0 - Added the ``atomic`` parameter. - """ - - name = "filename" - envvar_list_splitter: t.ClassVar[str] = os.path.pathsep - - def __init__( - self, - mode: str = "r", - encoding: str | None = None, - errors: str | None = "strict", - lazy: bool | None = None, - atomic: bool = False, - ) -> None: - self.mode = mode - self.encoding = encoding - self.errors = errors - self.lazy = lazy - self.atomic = atomic - - def to_info_dict(self) -> dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict.update(mode=self.mode, encoding=self.encoding) - return info_dict - - def resolve_lazy_flag(self, value: str | os.PathLike[str]) -> bool: - if self.lazy is not None: - return self.lazy - if os.fspath(value) == "-": - return False - elif "w" in self.mode: - return True - return False - - def convert( - self, - value: str | os.PathLike[str] | t.IO[t.Any], - param: Parameter | None, - ctx: Context | None, - ) -> t.IO[t.Any]: - if _is_file_like(value): - return value - - value = t.cast("str | os.PathLike[str]", value) - - try: - lazy = self.resolve_lazy_flag(value) - - if lazy: - lf = LazyFile( - value, self.mode, self.encoding, self.errors, atomic=self.atomic - ) - - if ctx is not None: - ctx.call_on_close(lf.close_intelligently) - - return t.cast("t.IO[t.Any]", lf) - - f, should_close = open_stream( - value, self.mode, self.encoding, self.errors, atomic=self.atomic - ) - - # If a context is provided, we automatically close the file - # at the end of the context execution (or flush out). If a - # context does not exist, it's the caller's responsibility to - # properly close the file. This for instance happens when the - # type is used with prompts. - if ctx is not None: - if should_close: - ctx.call_on_close(safecall(f.close)) - else: - ctx.call_on_close(safecall(f.flush)) - - return f - except OSError as e: - self.fail(f"'{format_filename(value)}': {e.strerror}", param, ctx) - - def shell_complete( - self, ctx: Context, param: Parameter, incomplete: str - ) -> list[CompletionItem]: - """Return a special completion marker that tells the completion - system to use the shell to provide file path completions. - - :param ctx: Invocation context for this command. - :param param: The parameter that is requesting completion. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - from click.shell_completion import CompletionItem - - return [CompletionItem(incomplete, type="file")] - - -def _is_file_like(value: t.Any) -> te.TypeGuard[t.IO[t.Any]]: - return hasattr(value, "read") or hasattr(value, "write") - - -class Path(ParamType): - """The ``Path`` type is similar to the :class:`File` type, but - returns the filename instead of an open file. Various checks can be - enabled to validate the type of file and permissions. - - :param exists: The file or directory needs to exist for the value to - be valid. If this is not set to ``True``, and the file does not - exist, then all further checks are silently skipped. - :param file_okay: Allow a file as a value. - :param dir_okay: Allow a directory as a value. - :param readable: if true, a readable check is performed. - :param writable: if true, a writable check is performed. - :param executable: if true, an executable check is performed. - :param resolve_path: Make the value absolute and resolve any - symlinks. A ``~`` is not expanded, as this is supposed to be - done by the shell only. - :param allow_dash: Allow a single dash as a value, which indicates - a standard stream (but does not open it). Use - :func:`~click.open_file` to handle opening this value. - :param path_type: Convert the incoming path value to this type. If - ``None``, keep Python's default, which is ``str``. Useful to - convert to :class:`pathlib.Path`. - - .. versionchanged:: 8.1 - Added the ``executable`` parameter. - - .. versionchanged:: 8.0 - Allow passing ``path_type=pathlib.Path``. - - .. versionchanged:: 6.0 - Added the ``allow_dash`` parameter. - """ - - envvar_list_splitter: t.ClassVar[str] = os.path.pathsep - - def __init__( - self, - exists: bool = False, - file_okay: bool = True, - dir_okay: bool = True, - writable: bool = False, - readable: bool = True, - resolve_path: bool = False, - allow_dash: bool = False, - path_type: type[t.Any] | None = None, - executable: bool = False, - ): - self.exists = exists - self.file_okay = file_okay - self.dir_okay = dir_okay - self.readable = readable - self.writable = writable - self.executable = executable - 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: str = _("file") - elif self.dir_okay and not self.file_okay: - self.name = _("directory") - else: - self.name = _("path") - - def to_info_dict(self) -> dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict.update( - exists=self.exists, - file_okay=self.file_okay, - dir_okay=self.dir_okay, - writable=self.writable, - readable=self.readable, - allow_dash=self.allow_dash, - ) - return info_dict - - def coerce_path_result( - self, value: str | os.PathLike[str] - ) -> str | bytes | os.PathLike[str]: - if self.type is not None and not isinstance(value, self.type): - if self.type is str: - return os.fsdecode(value) - elif self.type is bytes: - return os.fsencode(value) - else: - return t.cast("os.PathLike[str]", self.type(value)) - - return value - - def convert( - self, - value: str | os.PathLike[str], - param: Parameter | None, - ctx: Context | None, - ) -> str | bytes | os.PathLike[str]: - 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( - _("{name} {filename!r} does not exist.").format( - name=self.name.title(), filename=format_filename(value) - ), - param, - ctx, - ) - - if not self.file_okay and stat.S_ISREG(st.st_mode): - self.fail( - _("{name} {filename!r} is a file.").format( - name=self.name.title(), filename=format_filename(value) - ), - param, - ctx, - ) - if not self.dir_okay and stat.S_ISDIR(st.st_mode): - self.fail( - _("{name} {filename!r} is a directory.").format( - name=self.name.title(), filename=format_filename(value) - ), - param, - ctx, - ) - - if self.readable and not os.access(rv, os.R_OK): - self.fail( - _("{name} {filename!r} is not readable.").format( - name=self.name.title(), filename=format_filename(value) - ), - param, - ctx, - ) - - if self.writable and not os.access(rv, os.W_OK): - self.fail( - _("{name} {filename!r} is not writable.").format( - name=self.name.title(), filename=format_filename(value) - ), - param, - ctx, - ) - - if self.executable and not os.access(value, os.X_OK): - self.fail( - _("{name} {filename!r} is not executable.").format( - name=self.name.title(), filename=format_filename(value) - ), - param, - ctx, - ) - - return self.coerce_path_result(rv) - - def shell_complete( - self, ctx: Context, param: Parameter, incomplete: str - ) -> list[CompletionItem]: - """Return a special completion marker that tells the completion - system to use the shell to provide path completions for only - directories or any paths. - - :param ctx: Invocation context for this command. - :param param: The parameter that is requesting completion. - :param incomplete: Value being completed. May be empty. - - .. versionadded:: 8.0 - """ - from click.shell_completion import CompletionItem - - type = "dir" if self.dir_okay and not self.file_okay else "file" - return [CompletionItem(incomplete, type=type)] - - -class Tuple(CompositeParamType): - """The default behavior of Click is to apply a type on a value directly. - This works well in most cases, except for when `nargs` is set to a fixed - count and different types should be used for different items. In this - case the :class:`Tuple` type can be used. This type can only be used - if `nargs` is set to a fixed number. - - For more information see :ref:`tuple-type`. - - This can be selected by using a Python tuple literal as a type. - - :param types: a list of types that should be used for the tuple items. - """ - - def __init__(self, types: cabc.Sequence[type[t.Any] | ParamType]) -> None: - self.types: cabc.Sequence[ParamType] = [convert_type(ty) for ty in types] - - def to_info_dict(self) -> dict[str, t.Any]: - info_dict = super().to_info_dict() - info_dict["types"] = [t.to_info_dict() for t in self.types] - return info_dict - - @property - def name(self) -> str: # type: ignore - return f"<{' '.join(ty.name for ty in self.types)}>" - - @property - def arity(self) -> int: # type: ignore - return len(self.types) - - def convert( - self, value: t.Any, param: Parameter | None, ctx: Context | None - ) -> t.Any: - len_type = len(self.types) - len_value = len(value) - - if len_value != len_type: - self.fail( - ngettext( - "{len_type} values are required, but {len_value} was given.", - "{len_type} values are required, but {len_value} were given.", - len_value, - ).format(len_type=len_type, len_value=len_value), - param=param, - ctx=ctx, - ) - - return tuple( - ty(x, param, ctx) for ty, x in zip(self.types, value, strict=False) - ) - - -def convert_type(ty: t.Any | None, default: t.Any | None = None) -> ParamType: - """Find the most appropriate :class:`ParamType` for the given Python - type. If the type isn't provided, it can be inferred from a default - value. - """ - guessed_type = False - - if ty is None and default is not None: - if isinstance(default, (tuple, list)): - # If the default is empty, ty will remain None and will - # return STRING. - if default: - item = default[0] - - # A tuple of tuples needs to detect the inner types. - # Can't call convert recursively because that would - # incorrectly unwind the tuple to a single type. - if isinstance(item, (tuple, list)): - ty = tuple(map(type, item)) - else: - ty = type(item) - else: - ty = type(default) - - guessed_type = True - - if isinstance(ty, tuple): - return Tuple(ty) - - if isinstance(ty, ParamType): - return ty - - if ty is str or ty is None: - return STRING - - if ty is int: - return INT - - if ty is float: - return FLOAT - - if ty is bool: - return BOOL - - if guessed_type: - return STRING - - if __debug__: - try: - if issubclass(ty, ParamType): - raise AssertionError( - f"Attempted to use an uninstantiated parameter type ({ty})." - ) - except TypeError: - # ty is an instance (correct), so issubclass fails. - pass - - return FuncParamType(ty) - - -#: A dummy parameter type that just does nothing. From a user's -#: perspective this appears to just be the same as `STRING` but -#: internally no string conversion takes place if the input was bytes. -#: This is usually useful when working with file paths as they can -#: appear in bytes and unicode. -#: -#: For path related uses the :class:`Path` type is a better choice but -#: there are situations where an unprocessed type is useful which is why -#: it is is provided. -#: -#: .. versionadded:: 4.0 -UNPROCESSED = UnprocessedParamType() - -#: A unicode string parameter type which is the implicit default. This -#: can also be selected by using ``str`` as type. -STRING = StringParamType() - -#: An integer parameter. This can also be selected by using ``int`` as -#: type. -INT = IntParamType() - -#: A floating point value parameter. This can also be selected by using -#: ``float`` as type. -FLOAT = FloatParamType() - -#: A boolean parameter. This is the default for boolean flags. This can -#: also be selected by using ``bool`` as a type. -BOOL = BoolParamType() - -#: A UUID parameter. -UUID = UUIDParameterType() - - -class OptionHelpExtra(t.TypedDict, total=False): - envvars: tuple[str, ...] - default: str - range: str - required: str diff --git a/venv/lib/python3.12/site-packages/click/utils.py b/venv/lib/python3.12/site-packages/click/utils.py deleted file mode 100644 index ab2fe58..0000000 --- a/venv/lib/python3.12/site-packages/click/utils.py +++ /dev/null @@ -1,627 +0,0 @@ -from __future__ import annotations - -import collections.abc as cabc -import os -import re -import sys -import typing as t -from functools import update_wrapper -from types import ModuleType -from types import TracebackType - -from ._compat import _default_text_stderr -from ._compat import _default_text_stdout -from ._compat import _find_binary_writer -from ._compat import auto_wrap_for_ansi -from ._compat import binary_streams -from ._compat import open_stream -from ._compat import should_strip_ansi -from ._compat import strip_ansi -from ._compat import text_streams -from ._compat import WIN -from .globals import resolve_color_default - -if t.TYPE_CHECKING: - import typing_extensions as te - - P = te.ParamSpec("P") - -R = t.TypeVar("R") - - -def _posixify(name: str) -> str: - return "-".join(name.split()).lower() - - -def safecall(func: t.Callable[P, R]) -> t.Callable[P, R | None]: - """Wraps a function so that it swallows exceptions.""" - - def wrapper(*args: P.args, **kwargs: P.kwargs) -> R | None: - try: - return func(*args, **kwargs) - except Exception: - pass - return None - - return update_wrapper(wrapper, func) - - -def make_str(value: t.Any) -> str: - """Converts a value into a valid string.""" - if isinstance(value, bytes): - try: - return value.decode(sys.getfilesystemencoding()) - except UnicodeError: - return value.decode("utf-8", "replace") - return str(value) - - -def make_default_short_help(help: str, max_length: int = 45) -> str: - """Returns a condensed version of help string.""" - # Consider only the first paragraph. - paragraph_end = help.find("\n\n") - - if paragraph_end != -1: - help = help[:paragraph_end] - - # Collapse newlines, tabs, and spaces. - words = help.split() - - if not words: - return "" - - # The first paragraph started with a "no rewrap" marker, ignore it. - if words[0] == "\b": - words = words[1:] - - total_length = 0 - last_index = len(words) - 1 - - for i, word in enumerate(words): - total_length += len(word) + (i > 0) - - if total_length > max_length: # too long, truncate - break - - if word[-1] == ".": # sentence end, truncate without "..." - return " ".join(words[: i + 1]) - - if total_length == max_length and i != last_index: - break # not at sentence end, truncate with "..." - else: - return " ".join(words) # no truncation needed - - # Account for the length of the suffix. - total_length += len("...") - - # remove words until the length is short enough - while i > 0: - total_length -= len(words[i]) + (i > 0) - - if total_length <= max_length: - break - - i -= 1 - - return " ".join(words[:i]) + "..." - - -class LazyFile: - """A lazy file works like a regular file but it does not fully open - the file but it does perform some basic checks early to see if the - filename parameter does make sense. This is useful for safely opening - files for writing. - """ - - def __init__( - self, - filename: str | os.PathLike[str], - mode: str = "r", - encoding: str | None = None, - errors: str | None = "strict", - atomic: bool = False, - ): - self.name: str = os.fspath(filename) - self.mode = mode - self.encoding = encoding - self.errors = errors - self.atomic = atomic - self._f: t.IO[t.Any] | None - self.should_close: bool - - if self.name == "-": - self._f, self.should_close = open_stream(filename, mode, encoding, errors) - else: - if "r" in mode: - # Open and close the file in case we're opening it for - # reading so that we can catch at least some errors in - # some cases early. - open(filename, mode).close() - self._f = None - self.should_close = True - - def __getattr__(self, name: str) -> t.Any: - return getattr(self.open(), name) - - def __repr__(self) -> str: - if self._f is not None: - return repr(self._f) - return f"" - - def open(self) -> t.IO[t.Any]: - """Opens the file if it's not yet open. This call might fail with - a :exc:`FileError`. Not handling this error will produce an error - that Click shows. - """ - if self._f is not None: - return self._f - try: - rv, self.should_close = open_stream( - self.name, self.mode, self.encoding, self.errors, atomic=self.atomic - ) - except OSError as e: - from .exceptions import FileError - - raise FileError(self.name, hint=e.strerror) from e - self._f = rv - return rv - - def close(self) -> None: - """Closes the underlying file, no matter what.""" - if self._f is not None: - self._f.close() - - def close_intelligently(self) -> None: - """This function only closes the file if it was opened by the lazy - file wrapper. For instance this will never close stdin. - """ - if self.should_close: - self.close() - - def __enter__(self) -> LazyFile: - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_value: BaseException | None, - tb: TracebackType | None, - ) -> None: - self.close_intelligently() - - def __iter__(self) -> cabc.Iterator[t.AnyStr]: - self.open() - return iter(self._f) # type: ignore - - -class KeepOpenFile: - def __init__(self, file: t.IO[t.Any]) -> None: - self._file: t.IO[t.Any] = file - - def __getattr__(self, name: str) -> t.Any: - return getattr(self._file, name) - - def __enter__(self) -> KeepOpenFile: - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_value: BaseException | None, - tb: TracebackType | None, - ) -> None: - pass - - def __repr__(self) -> str: - return repr(self._file) - - def __iter__(self) -> cabc.Iterator[t.AnyStr]: - return iter(self._file) - - -def echo( - message: t.Any | None = None, - file: t.IO[t.Any] | None = None, - nl: bool = True, - err: bool = False, - color: bool | None = None, -) -> None: - """Print a message and newline to stdout or a file. This should be - used instead of :func:`print` because it provides better support - for different data, files, and environments. - - Compared to :func:`print`, this does the following: - - - Ensures that the output encoding is not misconfigured on Linux. - - Supports Unicode in the Windows console. - - Supports writing to binary outputs, and supports writing bytes - to text outputs. - - Supports colors and styles on Windows. - - Removes ANSI color and style codes if the output does not look - like an interactive terminal. - - Always flushes the output. - - :param message: The string or bytes to output. Other objects are - converted to strings. - :param file: The file to write to. Defaults to ``stdout``. - :param err: Write to ``stderr`` instead of ``stdout``. - :param nl: Print a newline after the message. Enabled by default. - :param color: Force showing or hiding colors and other styles. By - default Click will remove color if the output does not look like - an interactive terminal. - - .. versionchanged:: 6.0 - Support Unicode output on the Windows console. Click does not - modify ``sys.stdout``, so ``sys.stdout.write()`` and ``print()`` - will still not support Unicode. - - .. versionchanged:: 4.0 - Added the ``color`` parameter. - - .. versionadded:: 3.0 - Added the ``err`` parameter. - - .. versionchanged:: 2.0 - Support colors on Windows if colorama is installed. - """ - if file is None: - if err: - file = _default_text_stderr() - else: - file = _default_text_stdout() - - # There are no standard streams attached to write to. For example, - # pythonw on Windows. - if file is None: - return - - # Convert non bytes/text into the native string type. - if message is not None and not isinstance(message, (str, bytes, bytearray)): - out: str | bytes | None = str(message) - else: - out = message - - if nl: - out = out or "" - if isinstance(out, str): - out += "\n" - else: - out += b"\n" - - if not out: - file.flush() - return - - # If there is a message and the value looks like bytes, we manually - # need to find the binary stream and write the message in there. - # This is done separately so that most stream types will work as you - # would expect. Eg: you can write to StringIO for other cases. - if isinstance(out, (bytes, bytearray)): - binary_file = _find_binary_writer(file) - - if binary_file is not None: - file.flush() - binary_file.write(out) - binary_file.flush() - return - - # ANSI style code support. For no message or bytes, nothing happens. - # When outputting to a file instead of a terminal, strip codes. - else: - color = resolve_color_default(color) - - if should_strip_ansi(file, color): - out = strip_ansi(out) - elif WIN: - if auto_wrap_for_ansi is not None: - file = auto_wrap_for_ansi(file, color) # type: ignore - elif not color: - out = strip_ansi(out) - - file.write(out) # type: ignore - file.flush() - - -def get_binary_stream(name: t.Literal["stdin", "stdout", "stderr"]) -> t.BinaryIO: - """Returns a system stream for byte processing. - - :param name: the name of the stream to open. Valid names are ``'stdin'``, - ``'stdout'`` and ``'stderr'`` - """ - opener = binary_streams.get(name) - if opener is None: - raise TypeError(f"Unknown standard stream '{name}'") - return opener() - - -def get_text_stream( - name: t.Literal["stdin", "stdout", "stderr"], - encoding: str | None = None, - errors: str | None = "strict", -) -> t.TextIO: - """Returns a system stream for text processing. This usually returns - a wrapped stream around a binary stream returned from - :func:`get_binary_stream` but it also can take shortcuts for already - correctly configured streams. - - :param name: the name of the stream to open. Valid names are ``'stdin'``, - ``'stdout'`` and ``'stderr'`` - :param encoding: overrides the detected default encoding. - :param errors: overrides the default error mode. - """ - opener = text_streams.get(name) - if opener is None: - raise TypeError(f"Unknown standard stream '{name}'") - return opener(encoding, errors) - - -def open_file( - filename: str | os.PathLike[str], - mode: str = "r", - encoding: str | None = None, - errors: str | None = "strict", - lazy: bool = False, - atomic: bool = False, -) -> t.IO[t.Any]: - """Open a file, with extra behavior to handle ``'-'`` to indicate - a standard stream, lazy open on write, and atomic write. Similar to - the behavior of the :class:`~click.File` param type. - - If ``'-'`` is given to open ``stdout`` or ``stdin``, the stream is - wrapped so that using it in a context manager will not close it. - This makes it possible to use the function without accidentally - closing a standard stream: - - .. code-block:: python - - with open_file(filename) as f: - ... - - :param filename: The name or Path of the file to open, or ``'-'`` for - ``stdin``/``stdout``. - :param mode: The mode in which to open the file. - :param encoding: The encoding to decode or encode a file opened in - text mode. - :param errors: The error handling mode. - :param lazy: Wait to open the file until it is accessed. For read - mode, the file is temporarily opened to raise access errors - early, then closed until it is read again. - :param atomic: Write to a temporary file and replace the given file - on close. - - .. versionadded:: 3.0 - """ - if lazy: - return t.cast( - "t.IO[t.Any]", LazyFile(filename, mode, encoding, errors, atomic=atomic) - ) - - f, should_close = open_stream(filename, mode, encoding, errors, atomic=atomic) - - if not should_close: - f = t.cast("t.IO[t.Any]", KeepOpenFile(f)) - - return f - - -def format_filename( - filename: str | bytes | os.PathLike[str] | os.PathLike[bytes], - shorten: bool = False, -) -> str: - """Format a filename as a string for display. Ensures the filename can be - displayed by replacing any invalid bytes or surrogate escapes in the name - with the replacement character ``�``. - - Invalid bytes or surrogate escapes will raise an error when written to a - stream with ``errors="strict"``. This will typically happen with ``stdout`` - when the locale is something like ``en_GB.UTF-8``. - - Many scenarios *are* safe to write surrogates though, due to PEP 538 and - PEP 540, including: - - - Writing to ``stderr``, which uses ``errors="backslashreplace"``. - - The system has ``LANG=C.UTF-8``, ``C``, or ``POSIX``. Python opens - stdout and stderr with ``errors="surrogateescape"``. - - None of ``LANG/LC_*`` are set. Python assumes ``LANG=C.UTF-8``. - - Python is started in UTF-8 mode with ``PYTHONUTF8=1`` or ``-X utf8``. - Python opens stdout and stderr with ``errors="surrogateescape"``. - - :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) - else: - filename = os.fspath(filename) - - if isinstance(filename, bytes): - filename = filename.decode(sys.getfilesystemencoding(), "replace") - else: - filename = filename.encode("utf-8", "surrogateescape").decode( - "utf-8", "replace" - ) - - return filename - - -def get_app_dir(app_name: str, roaming: bool = True, force_posix: bool = False) -> str: - r"""Returns the config folder for the application. The default behavior - is to return whatever is most appropriate for the operating system. - - To give you an idea, for an app called ``"Foo Bar"``, something like - the following folders could be returned: - - Mac OS X: - ``~/Library/Application Support/Foo Bar`` - Mac OS X (POSIX): - ``~/.foo-bar`` - Unix: - ``~/.config/foo-bar`` - Unix (POSIX): - ``~/.foo-bar`` - Windows (roaming): - ``C:\Users\\AppData\Roaming\Foo Bar`` - Windows (not roaming): - ``C:\Users\\AppData\Local\Foo Bar`` - - .. versionadded:: 2.0 - - :param app_name: the application name. This should be properly capitalized - and can contain whitespace. - :param roaming: controls if the folder should be roaming or not on Windows. - Has no effect otherwise. - :param force_posix: if this is set to `True` then on any POSIX system the - folder will be stored in the home folder with a leading - dot instead of the XDG config home or darwin's - application support folder. - """ - if WIN: - key = "APPDATA" if roaming else "LOCALAPPDATA" - folder = os.environ.get(key) - if folder is None: - folder = os.path.expanduser("~") - return os.path.join(folder, app_name) - if force_posix: - return os.path.join(os.path.expanduser(f"~/.{_posixify(app_name)}")) - if sys.platform == "darwin": - return os.path.join( - os.path.expanduser("~/Library/Application Support"), app_name - ) - return os.path.join( - os.environ.get("XDG_CONFIG_HOME", os.path.expanduser("~/.config")), - _posixify(app_name), - ) - - -class PacifyFlushWrapper: - """This wrapper is used to catch and suppress BrokenPipeErrors resulting - from ``.flush()`` being called on broken pipe during the shutdown/final-GC - of the Python interpreter. Notably ``.flush()`` is always called on - ``sys.stdout`` and ``sys.stderr``. So as to have minimal impact on any - other cleanup code, and the case where the underlying file is not a broken - pipe, all calls and attributes are proxied. - """ - - def __init__(self, wrapped: t.IO[t.Any]) -> None: - self.wrapped = wrapped - - def flush(self) -> None: - try: - self.wrapped.flush() - except OSError as e: - import errno - - if e.errno != errno.EPIPE: - raise - - def __getattr__(self, attr: str) -> t.Any: - return getattr(self.wrapped, attr) - - -def _detect_program_name( - path: str | None = None, _main: ModuleType | None = None -) -> str: - """Determine the command used to run the program, for use in help - text. If a file or entry point was executed, the file name is - returned. If ``python -m`` was used to execute a module or package, - ``python -m name`` is returned. - - This doesn't try to be too precise, the goal is to give a concise - name for help text. Files are only shown as their name without the - path. ``python`` is only shown for modules, and the full path to - ``sys.executable`` is not shown. - - :param path: The Python file being executed. Python puts this in - ``sys.argv[0]``, which is used by default. - :param _main: The ``__main__`` module. This should only be passed - during internal testing. - - .. versionadded:: 8.0 - Based on command args detection in the Werkzeug reloader. - - :meta private: - """ - if _main is None: - _main = sys.modules["__main__"] - - if not path: - path = sys.argv[0] - - # The value of __package__ indicates how Python was called. It may - # not exist if a setuptools script is installed as an egg. It may be - # set incorrectly for entry points created with pip on Windows. - # It is set to "" inside a Shiv or PEX zipapp. - if getattr(_main, "__package__", None) in {None, ""} or ( - os.name == "nt" - and _main.__package__ == "" - and not os.path.exists(path) - and os.path.exists(f"{path}.exe") - ): - # Executed a file, like "python app.py". - return os.path.basename(path) - - # Executed a module, like "python -m example". - # Rewritten by Python from "-m script" to "/path/to/script.py". - # Need to look at main module to determine how it was executed. - py_module = t.cast(str, _main.__package__) - name = os.path.splitext(os.path.basename(path))[0] - - # A submodule like "example.cli". - if name != "__main__": - py_module = f"{py_module}.{name}" - - return f"python -m {py_module.lstrip('.')}" - - -def _expand_args( - args: cabc.Iterable[str], - *, - user: bool = True, - env: bool = True, - glob_recursive: bool = True, -) -> list[str]: - """Simulate Unix shell expansion with Python functions. - - See :func:`glob.glob`, :func:`os.path.expanduser`, and - :func:`os.path.expandvars`. - - This is intended for use on Windows, where the shell does not do any - expansion. It may not exactly match what a Unix shell would do. - - :param args: List of command line arguments to expand. - :param user: Expand user home directory. - :param env: Expand environment variables. - :param glob_recursive: ``**`` matches directories recursively. - - .. versionchanged:: 8.1 - Invalid glob patterns are treated as empty expansions rather - than raising an error. - - .. versionadded:: 8.0 - - :meta private: - """ - from glob import glob - - out = [] - - for arg in args: - if user: - arg = os.path.expanduser(arg) - - if env: - arg = os.path.expandvars(arg) - - try: - matches = glob(arg, recursive=glob_recursive) - except re.error: - matches = [] - - if not matches: - out.append(arg) - else: - out.extend(matches) - - return out diff --git a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/METADATA b/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/METADATA deleted file mode 100644 index f3769fd..0000000 --- a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/METADATA +++ /dev/null @@ -1,139 +0,0 @@ -Metadata-Version: 2.4 -Name: cryptography -Version: 45.0.4 -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: Natural Language :: English -Classifier: Operating System :: MacOS :: MacOS X -Classifier: Operating System :: POSIX -Classifier: Operating System :: POSIX :: BSD -Classifier: Operating System :: POSIX :: Linux -Classifier: Operating System :: Microsoft :: Windows -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: 3.13 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Security :: Cryptography -Requires-Dist: cffi>=1.14 ; platform_python_implementation != 'PyPy' -Requires-Dist: bcrypt>=3.1.5 ; extra == 'ssh' -Requires-Dist: nox>=2024.4.15 ; extra == 'nox' -Requires-Dist: nox[uv]>=2024.3.2 ; python_full_version >= '3.8' and extra == 'nox' -Requires-Dist: cryptography-vectors==45.0.4 ; extra == 'test' -Requires-Dist: pytest>=7.4.0 ; extra == 'test' -Requires-Dist: pytest-benchmark>=4.0 ; extra == 'test' -Requires-Dist: pytest-cov>=2.10.1 ; extra == 'test' -Requires-Dist: pytest-xdist>=3.5.0 ; extra == 'test' -Requires-Dist: pretend>=0.7 ; extra == 'test' -Requires-Dist: certifi>=2024 ; extra == 'test' -Requires-Dist: pytest-randomly ; extra == 'test-randomorder' -Requires-Dist: sphinx>=5.3.0 ; extra == 'docs' -Requires-Dist: sphinx-rtd-theme>=3.0.0 ; python_full_version >= '3.8' and extra == 'docs' -Requires-Dist: sphinx-inline-tabs ; python_full_version >= '3.8' and extra == 'docs' -Requires-Dist: pyenchant>=3 ; extra == 'docstest' -Requires-Dist: readme-renderer>=30.0 ; extra == 'docstest' -Requires-Dist: sphinxcontrib-spelling>=7.3.1 ; extra == 'docstest' -Requires-Dist: build>=1.0.0 ; extra == 'sdist' -Requires-Dist: ruff>=0.3.6 ; extra == 'pep8test' -Requires-Dist: mypy>=1.4 ; extra == 'pep8test' -Requires-Dist: check-sdist ; python_full_version >= '3.8' and extra == 'pep8test' -Requires-Dist: click>=8.0.1 ; extra == 'pep8test' -Provides-Extra: ssh -Provides-Extra: nox -Provides-Extra: test -Provides-Extra: test-randomorder -Provides-Extra: docs -Provides-Extra: docstest -Provides-Extra: sdist -Provides-Extra: pep8test -License-File: LICENSE -License-File: LICENSE.APACHE -License-File: LICENSE.BSD -Summary: cryptography is a package which provides cryptographic recipes and primitives to Python developers. -Author: The cryptography developers -Author-email: The Python Cryptographic Authority and individual contributors -License: Apache-2.0 OR BSD-3-Clause -Requires-Python: >=3.7, !=3.9.0, !=3.9.1 -Description-Content-Type: text/x-rst; charset=UTF-8 -Project-URL: homepage, https://github.com/pyca/cryptography -Project-URL: documentation, https://cryptography.io/ -Project-URL: source, https://github.com/pyca/cryptography/ -Project-URL: issues, https://github.com/pyca/cryptography/issues -Project-URL: changelog, https://cryptography.io/en/latest/changelog/ - -pyca/cryptography -================= - -.. image:: https://img.shields.io/pypi/v/cryptography.svg - :target: https://pypi.org/project/cryptography/ - :alt: Latest Version - -.. image:: https://readthedocs.org/projects/cryptography/badge/?version=latest - :target: https://cryptography.io - :alt: Latest Docs - -.. image:: https://github.com/pyca/cryptography/workflows/CI/badge.svg?branch=main - :target: https://github.com/pyca/cryptography/actions?query=workflow%3ACI+branch%3Amain - - -``cryptography`` is a package which provides cryptographic recipes and -primitives to Python developers. Our goal is for it to be your "cryptographic -standard library". It supports Python 3.7+ and PyPy3 7.3.11+. - -``cryptography`` includes both high level recipes and low level interfaces to -common cryptographic algorithms such as symmetric ciphers, message digests, and -key derivation functions. For example, to encrypt something with -``cryptography``'s high level symmetric encryption recipe: - -.. code-block:: pycon - - >>> from cryptography.fernet import Fernet - >>> # Put this somewhere safe! - >>> key = Fernet.generate_key() - >>> f = Fernet(key) - >>> token = f.encrypt(b"A really secret message. Not for prying eyes.") - >>> token - b'...' - >>> f.decrypt(token) - b'A really secret message. Not for prying eyes.' - -You can find more information in the `documentation`_. - -You can install ``cryptography`` with: - -.. code-block:: console - - $ pip install cryptography - -For full details see `the installation documentation`_. - -Discussion -~~~~~~~~~~ - -If you run into bugs, you can file them in our `issue tracker`_. - -We maintain a `cryptography-dev`_ mailing list for development discussion. - -You can also join ``#pyca`` on ``irc.libera.chat`` to ask questions or get -involved. - -Security -~~~~~~~~ - -Need to report a security issue? Please consult our `security reporting`_ -documentation. - - -.. _`documentation`: https://cryptography.io/ -.. _`the installation documentation`: https://cryptography.io/en/latest/installation/ -.. _`issue tracker`: https://github.com/pyca/cryptography/issues -.. _`cryptography-dev`: https://mail.python.org/mailman/listinfo/cryptography-dev -.. _`security reporting`: https://cryptography.io/en/latest/security/ - diff --git a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/RECORD b/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/RECORD deleted file mode 100644 index 69fba28..0000000 --- a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/RECORD +++ /dev/null @@ -1,176 +0,0 @@ -cryptography-45.0.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -cryptography-45.0.4.dist-info/METADATA,sha256=EXZWt9D7C1FgbmnL-se9trEQ6qnwPiR_s95mW2NhYrM,5690 -cryptography-45.0.4.dist-info/RECORD,, -cryptography-45.0.4.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -cryptography-45.0.4.dist-info/WHEEL,sha256=HtUbfzRcAXGXf-iEXmW-Ewc1Johi5GG5yMyzaKqxc44,108 -cryptography-45.0.4.dist-info/licenses/LICENSE,sha256=Pgx8CRqUi4JTO6mP18u0BDLW8amsv4X1ki0vmak65rs,197 -cryptography-45.0.4.dist-info/licenses/LICENSE.APACHE,sha256=qsc7MUj20dcRHbyjIJn2jSbGRMaBOuHk8F9leaomY_4,11360 -cryptography-45.0.4.dist-info/licenses/LICENSE.BSD,sha256=YCxMdILeZHndLpeTzaJ15eY9dz2s0eymiSMqtwCPtPs,1532 -cryptography/__about__.py,sha256=o6GoY8CfEXTh8w9LsUaVRFiytF46YOlF2fPDVCAHuC0,445 -cryptography/__init__.py,sha256=QDuQ3te_14R9iGF-2Q5yEwD1FTJrCWqpnuhlMIJBsno,762 -cryptography/__pycache__/__about__.cpython-312.pyc,, -cryptography/__pycache__/__init__.cpython-312.pyc,, -cryptography/__pycache__/exceptions.cpython-312.pyc,, -cryptography/__pycache__/fernet.cpython-312.pyc,, -cryptography/__pycache__/utils.cpython-312.pyc,, -cryptography/exceptions.py,sha256=835EWILc2fwxw-gyFMriciC2SqhViETB10LBSytnDIc,1087 -cryptography/fernet.py,sha256=3Cvxkh0KJSbX8HbnCHu4wfCW7U0GgfUA3v_qQ8a8iWc,6963 -cryptography/hazmat/__init__.py,sha256=5IwrLWrVp0AjEr_4FdWG_V057NSJGY_W4egNNsuct0g,455 -cryptography/hazmat/__pycache__/__init__.cpython-312.pyc,, -cryptography/hazmat/__pycache__/_oid.cpython-312.pyc,, -cryptography/hazmat/_oid.py,sha256=7-aiQLWCYT7FDrQ0sUWBNYkN5ADEGTZwLQE_ZCksPxs,16795 -cryptography/hazmat/backends/__init__.py,sha256=O5jvKFQdZnXhKeqJ-HtulaEL9Ni7mr1mDzZY5kHlYhI,361 -cryptography/hazmat/backends/__pycache__/__init__.cpython-312.pyc,, -cryptography/hazmat/backends/openssl/__init__.py,sha256=p3jmJfnCag9iE5sdMrN6VvVEu55u46xaS_IjoI0SrmA,305 -cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-312.pyc,, -cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc,, -cryptography/hazmat/backends/openssl/backend.py,sha256=ev-Prba_u1bCMk3ZWspkdOuLBbDlf_7wJnHK6xdYs7c,10329 -cryptography/hazmat/bindings/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 -cryptography/hazmat/bindings/__pycache__/__init__.cpython-312.pyc,, -cryptography/hazmat/bindings/_rust.abi3.so,sha256=eZXOQELF8YU8yuNatbRhQFjdYHgoS8SA02sSWN-u_Dc,12481104 -cryptography/hazmat/bindings/_rust/__init__.pyi,sha256=KhqLhXFPArPzzJ7DYO9Fl8FoXB_BagAd_r4Dm_Ze9Xo,1257 -cryptography/hazmat/bindings/_rust/_openssl.pyi,sha256=mpNJLuYLbCVrd5i33FBTmWwL_55Dw7JPkSLlSX9Q7oI,230 -cryptography/hazmat/bindings/_rust/asn1.pyi,sha256=BrGjC8J6nwuS-r3EVcdXJB8ndotfY9mbQYOfpbPG0HA,354 -cryptography/hazmat/bindings/_rust/exceptions.pyi,sha256=exXr2xw_0pB1kk93cYbM3MohbzoUkjOms1ZMUi0uQZE,640 -cryptography/hazmat/bindings/_rust/ocsp.pyi,sha256=VPVWuKHI9EMs09ZLRYAGvR0Iz0mCMmEzXAkgJHovpoM,4020 -cryptography/hazmat/bindings/_rust/openssl/__init__.pyi,sha256=iOAMDyHoNwwCSZfZzuXDr64g4GpGUeDgEN-LjXqdrBM,1522 -cryptography/hazmat/bindings/_rust/openssl/aead.pyi,sha256=4Nddw6-ynzIB3w2W86WvkGKTLlTDk_6F5l54RHCuy3E,2688 -cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi,sha256=LhPzHWSXJq4grAJXn6zSvSSdV-aYIIscHDwIPlJGGPs,1315 -cryptography/hazmat/bindings/_rust/openssl/cmac.pyi,sha256=nPH0X57RYpsAkRowVpjQiHE566ThUTx7YXrsadmrmHk,564 -cryptography/hazmat/bindings/_rust/openssl/dh.pyi,sha256=Z3TC-G04-THtSdAOPLM1h2G7ml5bda1ElZUcn5wpuhk,1564 -cryptography/hazmat/bindings/_rust/openssl/dsa.pyi,sha256=qBtkgj2albt2qFcnZ9UDrhzoNhCVO7HTby5VSf1EXMI,1299 -cryptography/hazmat/bindings/_rust/openssl/ec.pyi,sha256=zJy0pRa5n-_p2dm45PxECB_-B6SVZyNKfjxFDpPqT38,1691 -cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi,sha256=VXfXd5G6hUivg399R1DYdmW3eTb0EebzDTqjRC2gaRw,532 -cryptography/hazmat/bindings/_rust/openssl/ed448.pyi,sha256=Yx49lqdnjsD7bxiDV1kcaMrDktug5evi5a6zerMiy2s,514 -cryptography/hazmat/bindings/_rust/openssl/hashes.pyi,sha256=OWZvBx7xfo_HJl41Nc--DugVyCVPIprZ3HlOPTSWH9g,984 -cryptography/hazmat/bindings/_rust/openssl/hmac.pyi,sha256=BXZn7NDjL3JAbYW0SQ8pg1iyC5DbQXVhUAiwsi8DFR8,702 -cryptography/hazmat/bindings/_rust/openssl/kdf.pyi,sha256=4FGpmCR2H8SVGoe4SUX7h5wzhyvuRi8hnzKKfvnJJrw,1379 -cryptography/hazmat/bindings/_rust/openssl/keys.pyi,sha256=teIt8M6ZEMJrn4s3W0UnW0DZ-30Jd68WnSsKKG124l0,912 -cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi,sha256=_SW9NtQ5FDlAbdclFtWpT4lGmxKIKHpN-4j8J2BzYfQ,585 -cryptography/hazmat/bindings/_rust/openssl/rsa.pyi,sha256=2OQCNSXkxgc-3uw1xiCCloIQTV6p9_kK79Yu0rhZgPc,1364 -cryptography/hazmat/bindings/_rust/openssl/x25519.pyi,sha256=ewn4GpQyb7zPwE-ni7GtyQgMC0A1mLuqYsSyqv6nI_s,523 -cryptography/hazmat/bindings/_rust/openssl/x448.pyi,sha256=juTZTmli8jO_5Vcufg-vHvx_tCyezmSLIh_9PU3TczI,505 -cryptography/hazmat/bindings/_rust/pkcs12.pyi,sha256=vEEd5wDiZvb8ZGFaziLCaWLzAwoG_tvPUxLQw5_uOl8,1605 -cryptography/hazmat/bindings/_rust/pkcs7.pyi,sha256=txGBJijqZshEcqra6byPNbnisIdlxzOSIHP2hl9arPs,1601 -cryptography/hazmat/bindings/_rust/test_support.pyi,sha256=PPhld-WkO743iXFPebeG0LtgK0aTzGdjcIsay1Gm5GE,757 -cryptography/hazmat/bindings/_rust/x509.pyi,sha256=WWFr7RV3n1eFYbLpmM_xwXGKYZalyYi_V07p6KLOHX8,10189 -cryptography/hazmat/bindings/openssl/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 -cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-312.pyc,, -cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-312.pyc,, -cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-312.pyc,, -cryptography/hazmat/bindings/openssl/_conditional.py,sha256=eKiDLdRSXTGA6mQ8jj5S2OXEB_sod6iL7cwed-yOuUw,5340 -cryptography/hazmat/bindings/openssl/binding.py,sha256=hAmRXYzQlpIAP_jj2tl-SIBJBxwtclLlr_3aIL-RkR0,4072 -cryptography/hazmat/decrepit/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 -cryptography/hazmat/decrepit/__pycache__/__init__.cpython-312.pyc,, -cryptography/hazmat/decrepit/ciphers/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 -cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-312.pyc,, -cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-312.pyc,, -cryptography/hazmat/decrepit/ciphers/algorithms.py,sha256=YrKgHS4MfwWaMmPBYRymRRlC0phwWp9ycICFezeJPGk,2595 -cryptography/hazmat/primitives/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 -cryptography/hazmat/primitives/__pycache__/__init__.cpython-312.pyc,, -cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-312.pyc,, -cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-312.pyc,, -cryptography/hazmat/primitives/__pycache__/_serialization.cpython-312.pyc,, -cryptography/hazmat/primitives/__pycache__/cmac.cpython-312.pyc,, -cryptography/hazmat/primitives/__pycache__/constant_time.cpython-312.pyc,, -cryptography/hazmat/primitives/__pycache__/hashes.cpython-312.pyc,, -cryptography/hazmat/primitives/__pycache__/hmac.cpython-312.pyc,, -cryptography/hazmat/primitives/__pycache__/keywrap.cpython-312.pyc,, -cryptography/hazmat/primitives/__pycache__/padding.cpython-312.pyc,, -cryptography/hazmat/primitives/__pycache__/poly1305.cpython-312.pyc,, -cryptography/hazmat/primitives/_asymmetric.py,sha256=RhgcouUB6HTiFDBrR1LxqkMjpUxIiNvQ1r_zJjRG6qQ,532 -cryptography/hazmat/primitives/_cipheralgorithm.py,sha256=Eh3i7lwedHfi0eLSsH93PZxQKzY9I6lkK67vL4V5tOc,1522 -cryptography/hazmat/primitives/_serialization.py,sha256=chgPCSF2jxI2Cr5gB-qbWXOvOfupBh4CARS0KAhv9AM,5123 -cryptography/hazmat/primitives/asymmetric/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 -cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-312.pyc,, -cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-312.pyc,, -cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-312.pyc,, -cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-312.pyc,, -cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-312.pyc,, -cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-312.pyc,, -cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-312.pyc,, -cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-312.pyc,, -cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-312.pyc,, -cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-312.pyc,, -cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-312.pyc,, -cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-312.pyc,, -cryptography/hazmat/primitives/asymmetric/dh.py,sha256=0v_vEFFz5pQ1QG-FkWDyvgv7IfuVZSH5Q6LyFI5A8rg,3645 -cryptography/hazmat/primitives/asymmetric/dsa.py,sha256=Ld_bbbqQFz12dObHxIkzEQzX0SWWP41RLSWkYSaKhqE,4213 -cryptography/hazmat/primitives/asymmetric/ec.py,sha256=Vf5ig2PcS3PVnsb5N49Kx1uIkFBJyhg4BWXThDz5cug,12999 -cryptography/hazmat/primitives/asymmetric/ed25519.py,sha256=jZW5cs472wXXV3eB0sE1b8w64gdazwwU0_MT5UOTiXs,3700 -cryptography/hazmat/primitives/asymmetric/ed448.py,sha256=yAetgn2f2JYf0BO8MapGzXeThsvSMG5LmUCrxVOidAA,3729 -cryptography/hazmat/primitives/asymmetric/padding.py,sha256=eZcvUqVLbe3u48SunLdeniaPlV4-k6pwBl67OW4jSy8,2885 -cryptography/hazmat/primitives/asymmetric/rsa.py,sha256=kegiZAGeb6yJISjpxpaAEpM3wGdfhJSU9RgZpVwKYwk,7967 -cryptography/hazmat/primitives/asymmetric/types.py,sha256=LnsOJym-wmPUJ7Knu_7bCNU3kIiELCd6krOaW_JU08I,2996 -cryptography/hazmat/primitives/asymmetric/utils.py,sha256=DPTs6T4F-UhwzFQTh-1fSEpQzazH2jf2xpIro3ItF4o,790 -cryptography/hazmat/primitives/asymmetric/x25519.py,sha256=_4nQeZ3yJ3Lg0RpXnaqA-1yt6vbx1F-wzLcaZHwSpeE,3613 -cryptography/hazmat/primitives/asymmetric/x448.py,sha256=WKBLtuVfJqiBRro654fGaQAlvsKbqbNkK7c4A_ZCdV0,3642 -cryptography/hazmat/primitives/ciphers/__init__.py,sha256=eyEXmjk6_CZXaOPYDr7vAYGXr29QvzgWL2-4CSolLFs,680 -cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-312.pyc,, -cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-312.pyc,, -cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-312.pyc,, -cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-312.pyc,, -cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-312.pyc,, -cryptography/hazmat/primitives/ciphers/aead.py,sha256=Fzlyx7w8KYQakzDp1zWgJnIr62zgZrgVh1u2h4exB54,634 -cryptography/hazmat/primitives/ciphers/algorithms.py,sha256=S04j4NdFCBDt5KLIvbYohohRO--MCWhTia_lkVt8xD8,4542 -cryptography/hazmat/primitives/ciphers/base.py,sha256=aBC7HHBBoixebmparVr0UlODs3VD0A7B6oz_AaRjDv8,4253 -cryptography/hazmat/primitives/ciphers/modes.py,sha256=20stpwhDtbAvpH0SMf9EDHIciwmTF-JMBUOZ9bU8WiQ,8318 -cryptography/hazmat/primitives/cmac.py,sha256=sz_s6H_cYnOvx-VNWdIKhRhe3Ymp8z8J0D3CBqOX3gg,338 -cryptography/hazmat/primitives/constant_time.py,sha256=xdunWT0nf8OvKdcqUhhlFKayGp4_PgVJRU2W1wLSr_A,422 -cryptography/hazmat/primitives/hashes.py,sha256=M8BrlKB3U6DEtHvWTV5VRjpteHv1kS3Zxm_Bsk04cr8,5184 -cryptography/hazmat/primitives/hmac.py,sha256=RpB3z9z5skirCQrm7zQbtnp9pLMnAjrlTUvKqF5aDDc,423 -cryptography/hazmat/primitives/kdf/__init__.py,sha256=4XibZnrYq4hh5xBjWiIXzaYW6FKx8hPbVaa_cB9zS64,750 -cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-312.pyc,, -cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-312.pyc,, -cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-312.pyc,, -cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-312.pyc,, -cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-312.pyc,, -cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-312.pyc,, -cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-312.pyc,, -cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-312.pyc,, -cryptography/hazmat/primitives/kdf/argon2.py,sha256=UFDNXG0v-rw3DqAQTB1UQAsQC2M5Ejg0k_6OCyhLKus,460 -cryptography/hazmat/primitives/kdf/concatkdf.py,sha256=Ua8KoLXXnzgsrAUmHpyKymaPt8aPRP0EHEaBz7QCQ9I,3737 -cryptography/hazmat/primitives/kdf/hkdf.py,sha256=2HlP_huUzGAy_FZWOn8L9qP9B5ke7XKmbiER7_2l__Q,3043 -cryptography/hazmat/primitives/kdf/kbkdf.py,sha256=tGH5dQGEVaKYMEbgeqlaSPpqhlDMoF0xwCxk2vuhcTc,9211 -cryptography/hazmat/primitives/kdf/pbkdf2.py,sha256=1WIwhELR0w8ztTpTu8BrFiYWmK3hUfJq08I79TxwieE,1957 -cryptography/hazmat/primitives/kdf/scrypt.py,sha256=XyWUdUUmhuI9V6TqAPOvujCSMGv1XQdg0a21IWCmO-U,590 -cryptography/hazmat/primitives/kdf/x963kdf.py,sha256=zLTcF665QFvXX2f8TS7fmBZTteXpFjKahzfjjQcCJyw,1999 -cryptography/hazmat/primitives/keywrap.py,sha256=XV4Pj2fqSeD-RqZVvY2cA3j5_7RwJSFygYuLfk2ujCo,5650 -cryptography/hazmat/primitives/padding.py,sha256=QT-U-NvV2eQGO1wVPbDiNGNSc9keRDS-ig5cQOrLz0E,1865 -cryptography/hazmat/primitives/poly1305.py,sha256=P5EPQV-RB_FJPahpg01u0Ts4S_PnAmsroxIGXbGeRRo,355 -cryptography/hazmat/primitives/serialization/__init__.py,sha256=Q7uTgDlt7n3WfsMT6jYwutC6DIg_7SEeoAm1GHZ5B5E,1705 -cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-312.pyc,, -cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-312.pyc,, -cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-312.pyc,, -cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-312.pyc,, -cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-312.pyc,, -cryptography/hazmat/primitives/serialization/base.py,sha256=ikq5MJIwp_oUnjiaBco_PmQwOTYuGi-XkYUYHKy8Vo0,615 -cryptography/hazmat/primitives/serialization/pkcs12.py,sha256=mS9cFNG4afzvseoc5e1MWoY2VskfL8N8Y_OFjl67luY,5104 -cryptography/hazmat/primitives/serialization/pkcs7.py,sha256=5OR_Tkysxaprn4FegvJIfbep9rJ9wok6FLWvWwQ5-Mg,13943 -cryptography/hazmat/primitives/serialization/ssh.py,sha256=CeDSD_KmtcpQDSUg8QY3jruZDOKjjWBKcUByDOGQXnY,53693 -cryptography/hazmat/primitives/twofactor/__init__.py,sha256=tmMZGB-g4IU1r7lIFqASU019zr0uPp_wEBYcwdDCKCA,258 -cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-312.pyc,, -cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-312.pyc,, -cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-312.pyc,, -cryptography/hazmat/primitives/twofactor/hotp.py,sha256=ivZo5BrcCGWLsqql4nZV0XXCjyGPi_iHfDFltGlOJwk,3256 -cryptography/hazmat/primitives/twofactor/totp.py,sha256=m5LPpRL00kp4zY8gTjr55Hfz9aMlPS53kHmVkSQCmdY,1652 -cryptography/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -cryptography/utils.py,sha256=r90VtamCjiba37omFqp2aa--eEQVXiQIMrvWeLT-BY4,4397 -cryptography/x509/__init__.py,sha256=xloN0swseNx-m2WFZmCA17gOoxQWqeU82UVjEdJBePQ,8257 -cryptography/x509/__pycache__/__init__.cpython-312.pyc,, -cryptography/x509/__pycache__/base.cpython-312.pyc,, -cryptography/x509/__pycache__/certificate_transparency.cpython-312.pyc,, -cryptography/x509/__pycache__/extensions.cpython-312.pyc,, -cryptography/x509/__pycache__/general_name.cpython-312.pyc,, -cryptography/x509/__pycache__/name.cpython-312.pyc,, -cryptography/x509/__pycache__/ocsp.cpython-312.pyc,, -cryptography/x509/__pycache__/oid.cpython-312.pyc,, -cryptography/x509/__pycache__/verification.cpython-312.pyc,, -cryptography/x509/base.py,sha256=OrmTw3y8B6AE_nGXQPN8x9kq-d7rDWeH13gCq6T6D6U,27997 -cryptography/x509/certificate_transparency.py,sha256=JqoOIDhlwInrYMFW6IFn77WJ0viF-PB_rlZV3vs9MYc,797 -cryptography/x509/extensions.py,sha256=QxYrqR6SF1qzR9ZraP8wDiIczlEVlAFuwDRVcltB6Tk,77724 -cryptography/x509/general_name.py,sha256=sP_rV11Qlpsk4x3XXGJY_Mv0Q_s9dtjeLckHsjpLQoQ,7836 -cryptography/x509/name.py,sha256=oi0CqY_B72CEJgNXy9XkJya26QWXfwOeGJBYfXjRYvI,15121 -cryptography/x509/ocsp.py,sha256=Yey6NdFV1MPjop24Mj_VenjEpg3kUaMopSWOK0AbeBs,12699 -cryptography/x509/oid.py,sha256=BUzgXXGVWilkBkdKPTm9R4qElE9gAGHgdYPMZAp7PJo,931 -cryptography/x509/verification.py,sha256=gR2C2c-XZQtblZhT5T5vjSKOtCb74ef2alPVmEcwFlM,958 diff --git a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/REQUESTED deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/WHEEL b/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/WHEEL deleted file mode 100644 index 08b4127..0000000 --- a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: maturin (1.8.6) -Root-Is-Purelib: false -Tag: cp311-abi3-manylinux_2_34_x86_64 - diff --git a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/licenses/LICENSE b/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/licenses/LICENSE deleted file mode 100644 index b11f379..0000000 --- a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/licenses/LICENSE +++ /dev/null @@ -1,3 +0,0 @@ -This software is made available under the terms of *either* of the licenses -found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made -under the terms of *both* these licenses. diff --git a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/licenses/LICENSE.APACHE b/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/licenses/LICENSE.APACHE deleted file mode 100644 index 62589ed..0000000 --- a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/licenses/LICENSE.APACHE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/licenses/LICENSE.BSD b/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/licenses/LICENSE.BSD deleted file mode 100644 index ec1a29d..0000000 --- a/venv/lib/python3.12/site-packages/cryptography-45.0.4.dist-info/licenses/LICENSE.BSD +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Individual contributors. -All rights reserved. - -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 PyCA Cryptography 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 OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/lib/python3.12/site-packages/cryptography/__about__.py b/venv/lib/python3.12/site-packages/cryptography/__about__.py deleted file mode 100644 index 1c93667..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/__about__.py +++ /dev/null @@ -1,17 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -__all__ = [ - "__author__", - "__copyright__", - "__version__", -] - -__version__ = "45.0.4" - - -__author__ = "The Python Cryptographic Authority and individual contributors" -__copyright__ = f"Copyright 2013-2025 {__author__}" diff --git a/venv/lib/python3.12/site-packages/cryptography/__init__.py b/venv/lib/python3.12/site-packages/cryptography/__init__.py deleted file mode 100644 index e8febfb..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import sys -import warnings - -from cryptography import utils -from cryptography.__about__ import __author__, __copyright__, __version__ - -__all__ = [ - "__author__", - "__copyright__", - "__version__", -] - -if sys.version_info[:2] == (3, 7): - warnings.warn( - "Python 3.7 is no longer supported by the Python core team " - "and support for it is deprecated in cryptography. The next release " - "of cryptography will remove support for Python 3.7.", - utils.CryptographyDeprecationWarning, - stacklevel=2, - ) diff --git a/venv/lib/python3.12/site-packages/cryptography/__pycache__/__about__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/__pycache__/__about__.cpython-312.pyc deleted file mode 100644 index 2a43fb092db584f4bc06602db303dcd269f9ab64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 454 zcmYLGJ*yKz6rI`KY$PA=i72)Uf)IJhCYz*t1SEY>5Q}Yw$YC*w{EwEAfDLQ=~s-<&zfAq`Iq413rId9 zh8WJ!8pjx;6=Ke396QX7UFO9eYjE!#eRASP>Gzty>c$@4x2crMP$QHqdhWhO2(>0v znvi{$kVNIB7OT_%Z4`lspS0!}FV6MyDsFkL9Dw5#kd5kb+ zKqU)=WMU(jrCE?DX|z~cqjXU{o?jG#XgC`8qhT}+7CpZdKrSyQdwAeke8AmS6u0jqcS+hJR4AxJWndvv$q6dKf;vzJIuua}gmea$NiU&?hV z6Kgk^*$^H0KUgSBt7BlO7_voFFl54R8zr@L@5ArC-@W(q`!+jU1NvOgH@hPXfD_}4 zk9%&w(*tdM05OOm0|^WvG`7X8&^pt0XlrdVCvijfEatFE;)Pz~hkjBGs}OWR?0kY@ zjaa>fG5kcwR_rc?B2~ubZo^QaeIqnZ=z%O!2e>O`w$dXVKu4)<2GPf zk2n`9QdIElx%S;$QI<9AvW9V#tFDk3m$MkRL|RDN=_>8kG42zY=@N_wniJ5l1_plM zX|enDMWM?$T4_E)G(%hWbYzrviza%hVK{lKkR*&m89}0bDFf|L#&j?deR2tU(qvOlUCUI| z+GeCrSYytN-p*An3C7aQRoYpRmHtj7Ipv+KoSE)HIwoUb`l_j^+Y-5^N}3Ik6(bBc zrKcl|X$oh?1XA7>rDLGWrM0Qio?Z;CNq&9)-_PJwLx9n%peqs*^h6{Q!O1QS*7V!u zOzF!$;r)Qotsp&ngO%p}2SG*^xtHqkq7KP|={^IDDW|&4W?GE=$BBq@MpmWSEU3Ti zjTS>2Lio1^;GGjt`w6c621~!d`XN~V<2ZF|&l}DF$2+p;5AFH=C;OYaYT;b4UL2p}%}Qf9+qr;#P(>aBfSp>i+>875iBL diff --git a/venv/lib/python3.12/site-packages/cryptography/__pycache__/exceptions.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/__pycache__/exceptions.cpython-312.pyc deleted file mode 100644 index d031b4c625903a42562f71981d819dfba764f024..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2378 zcmbVNTWcFf6rS1DWp!CgzS}K!WV<)DjYN}|7D`)V+|*4_FHR^{Da%GXmeyVEsxvDS z2|xJ3kmMndmy-Milb_P3lt9eVLLl^^Z*HZKkf)wAD@E&Kis^{`=FB%U=ggcr=jaz* zPZMazv1*(WrtD;gTSq-l zz?vAWNmeyj6W^H_%?+h$N+Fks6+a+Wf~6m*Az#f%HVLd2VY8A=0h^Anx@0rJW+UvF zWOZQ2B5Y2wIbib+Nw39RA)MOqve<*CvC-Z#;7#x?BUNe<@TX#_x5zfN=z(4Z=?1OFHc2rSOkHzD zyVdfz&#YCa?s401G;0G-No6R*M|&4Q_?g}#zN8Uut9#@QyyhN#056G+l09XQ7)m%I zq(csArKkpRFv57C8HVlJzF`DOgELcjE*v2yn6n)un@k9^&VocZ5u^;G=9oelhQMnT z3Wfcb-<2C)la+To(`$Mz>)Pcta8BFtf!t;8ZrQP~ms=gb;kg$}A6zI4+h^xnX6;8% zEXp9tIo2K7RKGf#!&py(Yj%F8b z#qMN#FhzI@pqSue&;_dSInROA%^Bay+lsniHH@FyrW4M{GY0y=D>ddghH*%F9`ppSVj*j4S2=f4kB-ATUuz)NAuIXX2 zACRM%7Op`4%$COnmanxe6XLVN7hyL)haj&Z&0(l>gx66hAjnCi&TJ`H@%%03kFI#C zsW(tLf;>V2N758hXEv4IaCgCv)>X59`i0&?y$CBP6cD5pq|R(5Kd`cC*Ig4rjh$}m z9n_BSHVOpO&d6 z|65$bbW=J0*M#|@G0u&eXR%_8WAF!RQ`9*gI?R+|DG8HBrv1!`aE6 zk{Sy$e)5sFa5PtdjMt^BAlc8O_DKZX(>>?d!vCJPg>MXMbm=Ro)tj4FK8GNk7;!8)9Gsi0S%d4_~lG2~YVf+^X2p_??#R)`R6}sVz0kZqxKj*KOB= zNl`M;HymFg$VoSiYH^@n-THdnSo>mq?ea$D636NhWTU=>QaPxlL27;YhZt5pS$JeQ zz=V`3Bx74TQ(og=wd1Asaae0V;UB^dbd|UXaI8{FpQQ<1c}ny@$dxB*>ajZet2+C8 z?8_&a*B)n99%fedwSGdSi}ye36X^O`N>g_`eF9xyLwPGA+Yxy_A`jQc>C)YeK7p>E M$G!8

    =NWKk)VOvH$=8 diff --git a/venv/lib/python3.12/site-packages/cryptography/__pycache__/fernet.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/__pycache__/fernet.cpython-312.pyc deleted file mode 100644 index 889a0ab46524865ae8460fb2df146f938abb03a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11128 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 diff --git a/venv/lib/python3.12/site-packages/cryptography/__pycache__/utils.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/__pycache__/utils.cpython-312.pyc deleted file mode 100644 index 2c224daae7b2a4a02f83571078015c6f38b633f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6604 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 RV)D?4AkZ5jXo diff --git a/venv/lib/python3.12/site-packages/cryptography/exceptions.py b/venv/lib/python3.12/site-packages/cryptography/exceptions.py deleted file mode 100644 index fe125ea..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/exceptions.py +++ /dev/null @@ -1,52 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import typing - -from cryptography.hazmat.bindings._rust import exceptions as rust_exceptions - -if typing.TYPE_CHECKING: - from cryptography.hazmat.bindings._rust import openssl as rust_openssl - -_Reasons = rust_exceptions._Reasons - - -class UnsupportedAlgorithm(Exception): - def __init__(self, message: str, reason: _Reasons | None = None) -> None: - super().__init__(message) - self._reason = reason - - -class AlreadyFinalized(Exception): - pass - - -class AlreadyUpdated(Exception): - pass - - -class NotYetFinalized(Exception): - pass - - -class InvalidTag(Exception): - pass - - -class InvalidSignature(Exception): - pass - - -class InternalError(Exception): - def __init__( - self, msg: str, err_code: list[rust_openssl.OpenSSLError] - ) -> None: - super().__init__(msg) - self.err_code = err_code - - -class InvalidKey(Exception): - pass diff --git a/venv/lib/python3.12/site-packages/cryptography/fernet.py b/venv/lib/python3.12/site-packages/cryptography/fernet.py deleted file mode 100644 index c6744ae..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/fernet.py +++ /dev/null @@ -1,224 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import base64 -import binascii -import os -import time -import typing -from collections.abc import Iterable - -from cryptography import utils -from cryptography.exceptions import InvalidSignature -from cryptography.hazmat.primitives import hashes, padding -from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes -from cryptography.hazmat.primitives.hmac import HMAC - - -class InvalidToken(Exception): - pass - - -_MAX_CLOCK_SKEW = 60 - - -class Fernet: - def __init__( - self, - key: bytes | str, - backend: typing.Any = None, - ) -> None: - try: - key = base64.urlsafe_b64decode(key) - except binascii.Error as exc: - raise ValueError( - "Fernet key must be 32 url-safe base64-encoded bytes." - ) from exc - if len(key) != 32: - raise ValueError( - "Fernet key must be 32 url-safe base64-encoded bytes." - ) - - self._signing_key = key[:16] - self._encryption_key = key[16:] - - @classmethod - def generate_key(cls) -> bytes: - return base64.urlsafe_b64encode(os.urandom(32)) - - def encrypt(self, data: bytes) -> bytes: - return self.encrypt_at_time(data, int(time.time())) - - def encrypt_at_time(self, data: bytes, current_time: int) -> bytes: - iv = os.urandom(16) - return self._encrypt_from_parts(data, current_time, iv) - - def _encrypt_from_parts( - self, data: bytes, current_time: int, iv: bytes - ) -> bytes: - utils._check_bytes("data", data) - - padder = padding.PKCS7(algorithms.AES.block_size).padder() - padded_data = padder.update(data) + padder.finalize() - encryptor = Cipher( - algorithms.AES(self._encryption_key), - modes.CBC(iv), - ).encryptor() - ciphertext = encryptor.update(padded_data) + encryptor.finalize() - - basic_parts = ( - b"\x80" - + current_time.to_bytes(length=8, byteorder="big") - + iv - + ciphertext - ) - - h = HMAC(self._signing_key, hashes.SHA256()) - h.update(basic_parts) - hmac = h.finalize() - return base64.urlsafe_b64encode(basic_parts + hmac) - - def decrypt(self, token: bytes | str, ttl: int | None = None) -> bytes: - timestamp, data = Fernet._get_unverified_token_data(token) - if ttl is None: - time_info = None - else: - time_info = (ttl, int(time.time())) - return self._decrypt_data(data, timestamp, time_info) - - def decrypt_at_time( - self, token: bytes | str, ttl: int, current_time: int - ) -> bytes: - if ttl is None: - raise ValueError( - "decrypt_at_time() can only be used with a non-None ttl" - ) - timestamp, data = Fernet._get_unverified_token_data(token) - return self._decrypt_data(data, timestamp, (ttl, current_time)) - - def extract_timestamp(self, token: bytes | str) -> int: - timestamp, data = Fernet._get_unverified_token_data(token) - # Verify the token was not tampered with. - self._verify_signature(data) - return timestamp - - @staticmethod - def _get_unverified_token_data(token: bytes | str) -> tuple[int, bytes]: - if not isinstance(token, (str, bytes)): - raise TypeError("token must be bytes or str") - - try: - data = base64.urlsafe_b64decode(token) - except (TypeError, binascii.Error): - raise InvalidToken - - if not data or data[0] != 0x80: - raise InvalidToken - - if len(data) < 9: - raise InvalidToken - - timestamp = int.from_bytes(data[1:9], byteorder="big") - return timestamp, data - - def _verify_signature(self, data: bytes) -> None: - h = HMAC(self._signing_key, hashes.SHA256()) - h.update(data[:-32]) - try: - h.verify(data[-32:]) - except InvalidSignature: - raise InvalidToken - - def _decrypt_data( - self, - data: bytes, - timestamp: int, - time_info: tuple[int, int] | None, - ) -> bytes: - if time_info is not None: - ttl, current_time = time_info - if timestamp + ttl < current_time: - raise InvalidToken - - if current_time + _MAX_CLOCK_SKEW < timestamp: - raise InvalidToken - - self._verify_signature(data) - - iv = data[9:25] - ciphertext = data[25:-32] - decryptor = Cipher( - algorithms.AES(self._encryption_key), modes.CBC(iv) - ).decryptor() - plaintext_padded = decryptor.update(ciphertext) - try: - plaintext_padded += decryptor.finalize() - except ValueError: - raise InvalidToken - unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder() - - unpadded = unpadder.update(plaintext_padded) - try: - unpadded += unpadder.finalize() - except ValueError: - raise InvalidToken - return unpadded - - -class MultiFernet: - def __init__(self, fernets: Iterable[Fernet]): - fernets = list(fernets) - if not fernets: - raise ValueError( - "MultiFernet requires at least one Fernet instance" - ) - self._fernets = fernets - - def encrypt(self, msg: bytes) -> bytes: - return self.encrypt_at_time(msg, int(time.time())) - - def encrypt_at_time(self, msg: bytes, current_time: int) -> bytes: - return self._fernets[0].encrypt_at_time(msg, current_time) - - def rotate(self, msg: bytes | str) -> bytes: - timestamp, data = Fernet._get_unverified_token_data(msg) - for f in self._fernets: - try: - p = f._decrypt_data(data, timestamp, None) - break - except InvalidToken: - pass - else: - raise InvalidToken - - iv = os.urandom(16) - return self._fernets[0]._encrypt_from_parts(p, timestamp, iv) - - def decrypt(self, msg: bytes | str, ttl: int | None = None) -> bytes: - for f in self._fernets: - try: - return f.decrypt(msg, ttl) - except InvalidToken: - pass - raise InvalidToken - - def decrypt_at_time( - self, msg: bytes | str, ttl: int, current_time: int - ) -> bytes: - for f in self._fernets: - try: - return f.decrypt_at_time(msg, ttl, current_time) - except InvalidToken: - pass - raise InvalidToken - - def extract_timestamp(self, msg: bytes | str) -> int: - for f in self._fernets: - try: - return f.extract_timestamp(msg) - except InvalidToken: - pass - raise InvalidToken diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/__init__.py deleted file mode 100644 index b9f1187..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -""" -Hazardous Materials - -This is a "Hazardous Materials" module. You should ONLY use it if you're -100% absolutely sure that you know what you're doing because this module -is full of land mines, dragons, and dinosaurs with laser guns. -""" diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index baab3119d3b7d1741b89e907a2a5d6a7b7f5ee13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245 zcmXv}F-`+95Zt|sqUcZr4KJX&f>=O{Xy}n>5t3zcCN`YCmd}ple1tdf5(<8hmWnP? zM3ag=A*NW(%+6{xpYwSGjMIE?J`mt*6#uCH2<}gqyg>&Y_TcaV5lYq8-{ZQ)?UC}H zl1i5RaMxDbM#|@$a@11Bnj`P9ACreiVaRFmLW&%Dy|Ln!FLIyQTx-7;y?qj)Bt!mc zad9aIoAh~5%U8A1gILBA60M>NrU;`pP9-6w^)^Yl2<0%lcGTrw-^3X|<0>#5^Vrph P_|pKM?Iu&4#3_5f;BG@2 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/__pycache__/_oid.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/__pycache__/_oid.cpython-312.pyc deleted file mode 100644 index 2613cc3149b9c7eac41325eb6861981d63386b36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20602 zcmeHu3v63idLAiJFY5i4^_JhVElPap>9IwTlthanWs>sS!=ZI)o3dVWNqI(`m%Z8D z*=)AyG@G_Y5~N0(ZR9w}41ypCf*>f0wkX;~LisK-)#vX z@Xrm42FV~9R}8DhYepmLMJq+C#n*~SFJ3XNmRu__8j1`v2FdhIgH-agh^4<)N?0ji zWjU;juyVjEa#%TGX22?QSOsBKfK}%(bHWfeFSqbwim=EKFIjFAHrJkJmG2uNT{}lb zNa;F-&9#Db-5eF+*Gktb;&YAC9p;t@3-UWEaIR6h>dVL`f4fpd-0jdM$c1?kQToNJWs9JfSR zkZw}oT%&Za>n~G0wg@TR>)yLZ#OE5Nd)<4V=CMUc>0bBVXGMIjQM%W?_X|9>2r1p` z-n(DK=NhGZ#e0WQ8{lz8NU2`&)*;n`h|M)h^@?{6sX{!i2r1Po-Z-R+h}c}CRIhm7 zkm?eTD?&>3ink4^u87!NlWG9J#w`&NenZ$?Bm7NniIDKOgv~XnCQP8@EYy zIGAW=u7{bqAvZJI32OwbDTg@-YX+<(hdBvr1*|QH4HI?d7 z%maaNO*&4@H@GcA=>##~6bRR(lf-&#z+Pi`*8W?K)5Ci6Z0>*EkbF8m|qeI*Q8Nm{x!EnD2)-bEfB6r15c8V?;hJ=lnBU^I2&FfHaW4P1K)5DFiTNFFi%@!tnBNr$ z*Q6LR|AyNllx`98Zw10NX^EJB$88ZxQuggRm;Zx6xhBOa-GAh^2&LP=lrH}#fpAT_ zL(C7kEkfxoF~27eu1N`EGTauSv`ox1fpAT_N6e47EkbF9m_HB**Q8Zqo^xA-(i$UrF2&MOk z`742NO?sc0|H*9;N*@sOl|Z;AeMrn-b6bScN5uS%K)5D7K;{$UG6(WP>0y>D$^)~i z^o=ZM(&2t0%a!VI-vn+1@+;TjzJ>3RShEiM?f599tI}aUj*kITqr-fMm^vNiC*x(1 zra_1KZhRb=CLQLd5~bkB|I}7Z|M&ho()~uYGPbt1o{FUs>uX6c>w>qI<4Y-@6kkgv zZYSb0V5N6s$-D97QvL&rnPL3$heq5ViW{yOCBwBM_ziTG4i*j}e*~K{< zc84IoDQCmZ5ZEO-8+L`jF3s7nBLsF?&Nh=>p0g{-uE^O{WSet#HQALpyN2wloLx(H zbSC1)QZyESLG zliilHJIFqivpdOd&)HpMcjWADvO9Bj&sJA|w_4?WHx*w?LXQagJn3?q#c8pPS;o>8 zS_a)!ZWXFcsCJ=>EbJl+yU4;JP^T!FZ8TkPwb(7g7AutB zX&Hggnr_$!S<_90m}3-E?2l>7d$uUPZ6w{w(>pK=s}T5L5QjjHBobah?YTtU4m8hv{+w!#=0r!}=Ryf}5i z>yAV{z7Pb#(AB6b5()XH79-xU+QQj6@71W!;|)Z7(>`xVtw4J*?3(eaZ3`jaC0E27 z%|X!xZ^#$)sBJv4%OCNE0Q zk=bC#7r9Dh&Z|~KHfnzU4c;peZ@}aAhzhDz(;;to)*FsQp(tvDFEHzy@YR7ove+)IIBU FWe>ghr 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 Any: - from cryptography.hazmat.backends.openssl.backend import backend - - return backend diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 3196e853660ec823e880169942799af4ce8c63d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 495 zcmYjN!Ab)$5S?__t+o`UqGv%b3%WtQiXeI}h__xs?8ffuZn7lV!iqu<{)6ApZ}ATn z1VKD_6RMYS2}#}NQYy=Bs-!{coylsja9c!Y?E#Q!7Xexmv_tDhAn*WJ z5PCiBo=iyHyyk;DA>*)7?+i~nnxnO4| zXrgjKZxvU$lHxw4=lHoYvzQzSIigv5O^eDVN*+gtN7STN92D4`4~3!sThm2rx@=7u zOJ!;qi;AjVkHrl~SN5lBw_kUS3uAcoFW%bSac_zYdN@^}g)OzzKJsv-ZZURKVnQ&c zaYIlCwklFNoa=M53FtNodJV&D^(0qunTb=qfz(ZE+)BSZLdZ`G$nFPhe+M4foY(vU Dge`!d diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__init__.py deleted file mode 100644 index 51b0447..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -from cryptography.hazmat.backends.openssl.backend import backend - -__all__ = ["backend"] diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 93a500a7a24c1f6ba1ed0712f6afd062a07920cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmYk2ze>bF5XN^eIid;IoiCtOP_vx2B7(hOn`YU&tVwkLvAa3Qb#}gi&)~E82C0O@ z!cI7Bu5#jCz$u1rzG3D!%==^#BZ#BszM5f#)_pO=XeaRI7{n_oP=N)KILElxBQcUe z9)J!?oQG|gj=%bW6n6S!TGgJ?%(UBsE2)b{@N1g@9X^NL a6w-HqG5(1WKKVp9AIbFP^f|JJ(D()4nQ62D diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc deleted file mode 100644 index 0de108809c715807d21dd394294efe74a2c0bc45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13506 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 None: - self._binding = binding.Binding() - self._ffi = self._binding.ffi - self._lib = self._binding.lib - self._fips_enabled = rust_openssl.is_fips_enabled() - - def __repr__(self) -> str: - return ( - f"" - ) - - def openssl_assert(self, ok: bool) -> None: - return binding._openssl_assert(ok) - - def _enable_fips(self) -> None: - # This function enables FIPS mode for OpenSSL 3.0.0 on installs that - # have the FIPS provider installed properly. - rust_openssl.enable_fips(rust_openssl._providers) - assert rust_openssl.is_fips_enabled() - self._fips_enabled = rust_openssl.is_fips_enabled() - - def openssl_version_text(self) -> str: - """ - Friendly string name of the loaded OpenSSL library. This is not - necessarily the same version as it was compiled against. - - Example: OpenSSL 3.2.1 30 Jan 2024 - """ - return rust_openssl.openssl_version_text() - - def openssl_version_number(self) -> int: - return rust_openssl.openssl_version() - - def hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: - if self._fips_enabled and not isinstance(algorithm, self._fips_hashes): - return False - - return rust_openssl.hashes.hash_supported(algorithm) - - def signature_hash_supported( - self, algorithm: hashes.HashAlgorithm - ) -> bool: - # Dedicated check for hashing algorithm use in message digest for - # signatures, e.g. RSA PKCS#1 v1.5 SHA1 (sha1WithRSAEncryption). - if self._fips_enabled and isinstance(algorithm, hashes.SHA1): - return False - return self.hash_supported(algorithm) - - def scrypt_supported(self) -> bool: - if self._fips_enabled: - return False - else: - return hasattr(rust_openssl.kdf.Scrypt, "derive") - - def argon2_supported(self) -> bool: - if self._fips_enabled: - return False - else: - return hasattr(rust_openssl.kdf.Argon2id, "derive") - - def hmac_supported(self, algorithm: hashes.HashAlgorithm) -> bool: - # FIPS mode still allows SHA1 for HMAC - if self._fips_enabled and isinstance(algorithm, hashes.SHA1): - return True - if rust_openssl.CRYPTOGRAPHY_IS_AWSLC: - return isinstance( - algorithm, - ( - hashes.SHA1, - hashes.SHA224, - hashes.SHA256, - hashes.SHA384, - hashes.SHA512, - hashes.SHA512_224, - hashes.SHA512_256, - ), - ) - return self.hash_supported(algorithm) - - def cipher_supported(self, cipher: CipherAlgorithm, mode: Mode) -> bool: - if self._fips_enabled: - # FIPS mode requires AES. TripleDES is disallowed/deprecated in - # FIPS 140-3. - if not isinstance(cipher, self._fips_ciphers): - return False - - return rust_openssl.ciphers.cipher_supported(cipher, mode) - - def pbkdf2_hmac_supported(self, algorithm: hashes.HashAlgorithm) -> bool: - return self.hmac_supported(algorithm) - - def _consume_errors(self) -> list[rust_openssl.OpenSSLError]: - return rust_openssl.capture_error_stack() - - def _oaep_hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: - if self._fips_enabled and isinstance(algorithm, hashes.SHA1): - return False - - return isinstance( - algorithm, - ( - hashes.SHA1, - hashes.SHA224, - hashes.SHA256, - hashes.SHA384, - hashes.SHA512, - ), - ) - - def rsa_padding_supported(self, padding: AsymmetricPadding) -> bool: - if isinstance(padding, PKCS1v15): - return True - elif isinstance(padding, PSS) and isinstance(padding._mgf, MGF1): - # FIPS 186-4 only allows salt length == digest length for PSS - # It is technically acceptable to set an explicit salt length - # equal to the digest length and this will incorrectly fail, but - # since we don't do that in the tests and this method is - # private, we'll ignore that until we need to do otherwise. - if ( - self._fips_enabled - and padding._salt_length != PSS.DIGEST_LENGTH - ): - return False - return self.hash_supported(padding._mgf._algorithm) - elif isinstance(padding, OAEP) and isinstance(padding._mgf, MGF1): - return self._oaep_hash_supported( - padding._mgf._algorithm - ) and self._oaep_hash_supported(padding._algorithm) - else: - return False - - def rsa_encryption_supported(self, padding: AsymmetricPadding) -> bool: - if self._fips_enabled and isinstance(padding, PKCS1v15): - return False - else: - return self.rsa_padding_supported(padding) - - def dsa_supported(self) -> bool: - return ( - not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL - and not self._fips_enabled - ) - - def dsa_hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: - if not self.dsa_supported(): - return False - return self.signature_hash_supported(algorithm) - - def cmac_algorithm_supported(self, algorithm) -> bool: - return self.cipher_supported( - algorithm, CBC(b"\x00" * algorithm.block_size) - ) - - def elliptic_curve_supported(self, curve: ec.EllipticCurve) -> bool: - if self._fips_enabled and not isinstance( - curve, self._fips_ecdh_curves - ): - return False - - return rust_openssl.ec.curve_supported(curve) - - def elliptic_curve_signature_algorithm_supported( - self, - signature_algorithm: ec.EllipticCurveSignatureAlgorithm, - curve: ec.EllipticCurve, - ) -> bool: - # We only support ECDSA right now. - if not isinstance(signature_algorithm, ec.ECDSA): - return False - - return self.elliptic_curve_supported(curve) and ( - isinstance(signature_algorithm.algorithm, asym_utils.Prehashed) - or self.hash_supported(signature_algorithm.algorithm) - ) - - def elliptic_curve_exchange_algorithm_supported( - self, algorithm: ec.ECDH, curve: ec.EllipticCurve - ) -> bool: - return self.elliptic_curve_supported(curve) and isinstance( - algorithm, ec.ECDH - ) - - def dh_supported(self) -> bool: - return ( - not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL - and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC - ) - - def dh_x942_serialization_supported(self) -> bool: - return self._lib.Cryptography_HAS_EVP_PKEY_DHX == 1 - - def x25519_supported(self) -> bool: - if self._fips_enabled: - return False - return True - - def x448_supported(self) -> bool: - if self._fips_enabled: - return False - return ( - not rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL - and not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL - and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC - ) - - def ed25519_supported(self) -> bool: - if self._fips_enabled: - return False - return True - - def ed448_supported(self) -> bool: - if self._fips_enabled: - return False - return ( - not rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL - and not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL - and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC - ) - - def ecdsa_deterministic_supported(self) -> bool: - return ( - rust_openssl.CRYPTOGRAPHY_OPENSSL_320_OR_GREATER - and not self._fips_enabled - ) - - def poly1305_supported(self) -> bool: - if self._fips_enabled: - return False - return True - - def pkcs7_supported(self) -> bool: - return ( - not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL - and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC - ) - - -backend = Backend() diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__init__.py deleted file mode 100644 index b509336..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 21e9360e21395a5fe12073c0655dd9a49e5430f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 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⁢g?Qot+n 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�Fw2vpxI>Ha`fo9q+|xBa4ejXeXgm?(!l&=v()6 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�V{v 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

    -gk|kEvg~ zqlbUg`nF^q2WYU~7Lp(;2INkEzMEQ{WD7dC_Q)Q6?K&>o*KGZL`n&sQ=7~>=p@{DnA<*H^f;riid zEr;Zv}PcN|RKpqsbXTmX73);Sf`p^sQUSZK-k^0^H@iP4p#d#`V z*SVXJ40YO<@F3;7Il+kob$ooh3Y$XOT-S+5BtJpHmhc4NDU1UTy`z^8y0o$TW3 zcduUbU;Tks{)jZI-jbvFgpVWMY-r7uUF4VjiB+@uaD_4afxnyGzx9Rng#sLFzP|7% zMvA`rLY#RG^o5RS8yGBHYZfM>I)FGpq3Y7RBs>Gv0fQ;8z4yPGr#;vmnQ_LxIqjjJ zlXuc_s*;OEwBsC2DWroOO~ckp`ZdK*b4l-buA0v4}_t)kYFn8QS9p?)nX=5>PiKF>cvtP6N9xOE!msny$%w<->&h!4cn%^aAdk&xg22&M7J=u}u~7dzW?GmwijHUWZr5r#Q5Y#^moQAC)kgg5XzeSAvu z5fl#5I)5lTCBnCI*kgI;#T)Lx?G0z(_QI9E++Gx&$L+_27R`^^&59hQbxGbV+_zuf zSqODp&IGHI!l(d_r@=W4j;~eb!Leg8MS-g7E(mp$FqySlhw5LOR76MG9Dc)i(>h%% z&!h<0S5pq%>*)b#I3!IuK#5vMwp_UKhw? z)cN!k0w4@cqnE8wqpt}q`cuH8ypc1ch&wtKm_!Bg&Wb7NLkZ@1s;HHoNa=TRG2&Ey zG{x1@Oq0dO%+X`eC?3ghEq{$EmI6A3a80w;!$VbwqrphiuZ^j0l>$DrP0 zTt{wcQ`&%A*?o$daQOeC_tU|SkN04-aaC-S5BeEGAVd}#GW0J*3}C1-neZ> zy>{qlLPmbx2}ysb5i$$5VB+Zov+(hO8dcT!{J~wjS3iT>Vk{HQRCZq#V3`2xT7A*G zJCqxodeuem0`VT|{3WR^9w=-~wd62xhz5p)(umP#Ers$7U*)HvlHLj{**AB9D=R|d zJbO~d1EIfK;6s)XTmqJj_J*sLY-UD;+9g8&1QNjJ27o)R0BGK)+b80`DvL3ly3IZGySyq zx-?PKKw%>FmY!>IJfXp-YvcB0t{X;0LpR0qCWjREFU5NTkuGX6@01b-7I~#K)fMUE z=uwug#m$6I;$jwApl51i=?#Jnei@QpYcq7+#f&QGLINWnL6!F2T{bX_jcgqLzg0HD zmt+OlbLlp;tgs}y8=+sOZ4M2jIkAqBr{DAVUE=><5ag$-e$|x2 z1@FGy`XT1e$*FFmu>f4Ga=ixzNeKwx?YuYv9k-4(M6scLM(IIK>op+~yHHm85H*+0 z70({#w;nscK&uo4{A$RQR`6{j6w{>PWfqdpFL1hh};%i9#J0S~D){+Sq{A=(I2H z$z!c4&4f(Ojc@|D!v*~M5gzD~>p&#wmC`=-ERfnwei=_}1zarsmm!41XP#zi_?rVo z5uj);Yd@y2briu9CAoow_xb+x0`DovNrgpyLJ1>I2-(4LyP@&qC1ti0>@JNb$8mt` zxUyl7h01PdHdJs5t0u5q-@|hv_GDGd6C1FqE#&zxo`WrNO#QBK{Z{|;$ECgrX|hs& z<#w42A1|gY>zqI&MrDn_sMLsnA;w_Jwmr#L=NQB~-m5Y(ws>MNZ&0)0a)D zkwg8jtm(t`)kOQMs`;Ee0yutWNx3;+aJ{S8{>t=T*4;oq{n(rI^LMle6A0M=VwXUQ zgh{HqI%_sSEkU^V(sqMpm!<71_Uwp0!!zCPeIKCe%&jXJc-% zj#qY{p%s`A*`25Wky)dK*@NUi!Br%oxETuuhUz2s)#4TDaxg#AYiS}_v$l*A^{rya z0+m~ix}{Q<3Qj;frnsiJuw|TvHdy@{>cr8)!_z@n-DYdqHm{b}aLXt>@;3mNp|q@BSR2y5?yTDja)IfN4Z+R1iRF&-u3e)tpbWHs+YWSKAzJ zvh;i-FMVIH@|0VweA116dKGC=_=TjUOFT^)PO*-M$zB7Nk5A=f)}`kA<0}69&@-sg zdBj3x#lQ2Df(FUCezMvnulAFINlw{;>HBG??_i81J+mYFJdcOg(5|<%MiCE>Y7*6# zCCW4>*=0yaIp{BJ8f_ee zm(0}Y^JS@~#Hf#Q8kWilz7|cbbPDUMW>bP!d#_a3JNYa(1RMA8FS&$7m^b1G64`Md zLH`0N;eGcoSI)*gXDHYK<`R{XKKTugTa=@>(4EKQ{qfejb-w7Pah{jrWLP zLCb{y%CNTghEo(YwOdlY|SBz@mgkd(MeA>-h<-1S)VQeC8gE zSqOL%KXh_b=Q^Ta({J;~3K`873yqQ^52c7HXV3Blv!&u44*`)Zx@XC0@1aPE`2tqr z5fd95b`ShjYRprrxI1F5tv6bB?_0q?S&n4=TZWu-qbMNPxca=e4kmF)Cj95!C^m)6 z?n~SodkRqt7{0dvn(RJKuP@Y})A*xzR^M|6YSNw7>SYe0;6B}ZSS56De9&F%{O};9 z@cd*rp?0j3jHK(1Ump!xN?h=6}jZeG`dv%3; zW`X@%-yIv&^6P9Z*#b8yE8EPsa|O&I@vU4sut=QOAlE$80bkJX5ntlgNPciyhY1ShCqXRxqkUF(BeEO%i-f6lxwgSs+ps}9-kC4Q}9 zaRDXRA9vm@c;ZVfnBy0*xVD2xIDf$&c^-XB1uZIk+^}KSRrxrVL~n zy#I-ab6+f^pzpr8zzoPb-%jeFD)4<5v)%8A^4r|+eBTAZ93{I5+&c6EG`6Geui{=u zopX=3)3(4JFN~t?3U5qH9~agO`@ubjQX*NrKRcw_H{qxKA!4sCHDr6zwMktTzSEa= zhxtKKV;hP>j;KDi!lk`s|Ir$rEpg0Cb75<3wxfs#>pVheo^{;qz?Obm4}7Im#&`U3qZfTTCeu8y~DIjw>KAj!uIBN z&#RqyuXf@fx>Q!#&(#N;*RHToXUGG3YzCYyXFE`SaOr%Rn3R@1T`l)eOE2D4&!PuutJ?g46?HYZ<627sk)~efT-kM! ztPV^YyuJS}v8_dxkw46%i^2{vBv$(gcVPjE-VrKRx}w*1w>}XnVpCb4rQLCjkzkDA z?k~(Rd$M-|vw}^mI~+lJqm$e7qg~{S=xiNE-$fZaep842x!@T8yuTAn6?5iU6_3!a z8iG<>SiiKKo2W}9SEiScpm7z(x}M=Fydhm^TY_k$2SN5j#!gjL9qM0*Iz**(ZQ`DJ zMC*10Ekf}SptqE04H+`wNjnPR0wVndPDsv2g}FGBArfgElx?%hd0mGH9N>yDk zS=r%wdq5iAF%54U3A#&dLLG6+2}Ch5R%T_gHpPE->Pv4hh3t{;SocnLY4e1{E8Qb4 zo*F{wj`kI|w`ie)xNTi(;?^klk{yhWGT|os!EnCD4;#8jxWZeoGctHoCOmDhK7It! zJH~y|lasl^SE_Jufizn_RKa=VsnyKy6y-CFYO?2x{5R!yqjWhZzlUH%>>Hm`qD4dY zu-*cZn@~|`loQ~;O*#S2)>^lq^cs#Z0bb_c92R$BIb*nemRaO@lgWtkej;p-M`4zv zwE7_II((7NhbUwv?Ukv(l z;zs=LDO0QN4H@$KjJt$q`X$Y(;LAxE9N|iw4b~?CViZ>qZVp7Yf(~q0&7IMo{ z->PX!4cf0=+wD04I98%kf=U^Xknq#*a(?rl{f_8|e#7)C_zgfGzskkUR+9ANW+fZ= zFzy#l&w~SsJaF8ZlwN8O&V*lsL~C_{jQ+Jr(8ejLIn`vDnlM+j0xC_Hn5(8p%ypHX zfZwc9Fh=9RV6>R6bgebK*G#BF?^xMl@X0sId~NKw!v6xhmeqib%)DdM#FJ*y8wmw5 zaD#3<#kbr`RHo@e6RaElLa5^iwP2WOgJO8TZ1ZJ}lWio{QH>H237!S26W|F$B$YJP zlKduc+CMCA-T4891|L=uS`;g4Uw`B_t3n++2z;sHgOBPnll!Pgn#n&KA`F_m3kc_C z@=#U0WivV8%1@g~K~y8~)^E=m`7t#CIt#|Ktkv_>Ts7De3!CyGTXQr$bP0u(8TR zv}#2~6qq=;=wS2p8hhB$q$qc zgLU2e=I0DhPFa4=+uJf;Z7~xUHOQZsgZ#Z(j-YbPx@Uc+dq1;0Wa%`H&(x_XOm?|9 z9B-VNR>1aix9N@Ts$@Ks^mqQSV!!JWe-sNVXNGGN&)99wBcgRosF<^!atmd`?_uZQ zN+j;{E&f)OBXg0hFMKXyC`RUYEACe2sN$cLifavsuO#}7f-6Rs4X{mx;3x+32wDD4 z?7Gy*hc2JazPb(R^XX5r_=EAbIMgl~NsLhEB~;2H@o(gd;g`6T;%iJ-ZL$a@Q5XnX zHBwl6)X``D$$56t6rrYO%LS_#hOkSeM86VW;snZ%r?}eQ(llw$gD3wijK~>s%fMdy z7XYV=e3Ua6KLRm$&Dae!g_Wq2?VAc)nNnE>xYO7+C9StO=f{g+=(fgTziSb3oApK_XJN>TeO1f@l!k5!XvUu@{2Cz`) zK*A#c)I8FvH0}Vk3`k5!M(uLvX4sAOAM*zHT*>@RD{T@qOm&xF1B_HkFj}ZCrbceM z8CU?SW&_p1yY3Rs(|-ZH#J8BKK98rI?^WQD3_DYKR2@-O^0XbMc@Z%5h0A^M0V4U>RzKrdq+=^X%THk6X1=T(z z#n;H=3X5zt@;JDkYJvKxmj-7Q=%!ww*umGs&=o`APyf^DgZ&X|qFDd%npNAfF+PO7 zw>Ijq!Ku*(v`3-bxfI(HY^zPYo|a2WT)M$IUv;fRVb<|F_(U{-JIv7h62_b7L2z#d$5?I5(FI1BiZ{Xoc_XaJn{1x|vH zKhc1xu_yqO!3BU}QOtyE$<|Ny*dAj)w~NMC7J}*^=2;kpFF`f`DyJ)cGveP1SW|&; zizI5Q$0W{Y55t}%_7%#Kp#4`hD6Yvbt{aDQ^$_F5r=73X2A$3$8J@yli&=Tu0+_-R z^)e+Q09>lXYw#sJogj7r4D)G|0f51MzJEFxlOGK{N zlYMWowvS?=&et`%WYxRyh$Uk8NEkEUjfmE!rkD6x|0IhW<<(-*F>2UFpV8t2SE z4I9u-S;t?bU`}SM@v};=nb>=9xee4<@1s2%D_&CfDPOTsT(vM;AJ~Nxc`JJCHv3Yh(IUW|c^p<@0Lwx|$rx?RvFk z>kt-c5mP)1&8B_WhW1-Z+Y1o8bGq#41D%|DVP_B-k{#SdyI`YE|nqAwH1?nrHmh_i!UQ7`hinsrp4se)DCjEDE@-^5m3xi&f zOiLA?b6_87+Q93$lz>@QWYCXHB{Y+SFf^XbGT`{iniA?}ZCg{u15njyl{kK?mU1-_ zTNl<;tgNZl%UIi^kHkWY9__si`T0#4fr4$wpzqDc8Twvo520_{=$`1iX2TYu?}J)! z5N#*JvCT4yvmpaBtF)rK#-fD~9IOyJTAajCX;F z{*3D&*-xDDUqefsU9I=XQC45j`fKr?22GzjHVh9hwV!t zfR)XJ&ydK|xlcN^0^De0G@0;`I04$K4+wQ`pk&*$!t3B-_G_znsPjepHGsS|_N!=P zsPhT?RXixvx!itj4XG`$UjzBI(0-Nh>lgeAEsB?x#qW=cO*OLuq_48jefsR2ttg)Y;$?JD0}8q0Zx7qP#S|OQ`c0m)NZ|zH6v+ zm`m(Y8s9zC8Fh)hO5=NmI(Ko2NNIfUP-m%2>{}Y&C)D{7vqMLtrSbhjo$Fm<|I+x7 zQ0Gf7QBfNIQmFG8mpGs_J~Y(%m`fZ~8b2`9xzr^NDUBZ->imsMRF=lS9O}H)B@Qi( z4-0kP=n{vQ#t#d1&UA?*O5;_b&MRG_x-@=dsPiJ1II1*0Jk)uXON=OuA06tP>=MV6 z#^ICWNwiHH1#Cz13ldp$v`7Tgrf_B18`2h0+eonHR~}QcjfRc#)~Xi@v){4Dw?v}je^2S+VFibUwxWg`w~Ig`T>+BXetIj()v zKK4=T$==bMKF)Mc(lRKfM)3OykmCJ3y*m+V=Jz zz>=Q8Uj1Ie@7#83Bqryavy{=v0Fr*K7)8UQ2`1i4(I8Imng(Fv)lGL_P|nQ*HV z!Xxu#*aaV6ThKiO_LiS{vNC;Rjnj+9kb|)%5RZxfkGpq)kFvP_xD!YqD7ZmcjrY|C zO}qvb4L3=+?&1bhQN)TGt01kdQc09nE0JuJ?YjPHOIzAnOIuoPOIvC!qE#DE0q>xq zsQp*GRCir3h!(-yzTe-O=h;gF*4lsH&*y#ffqkC2JTqs`IdkUBnKLtgPi_6*kD*q~ zc4EPI5}KuLSiszLT3uzKbsff9o@#br;OFTo5xPnvUBzY|jBcDB1WA{@H@_rZB`HjE z8Z7FEMB!Jzbvk^K81N2{MDQbinMkyrP{?48(JnjEW2g>SA*bL+C#M7ns&^frXaU9)@AP+3ul;hnm8CLehEN^tLXKC!TmLL5z?A-Q zatvzLx7LXxp~!mUg!wCle9Gu@K`C4cF1O$qj$WO_0`GSgD7x}Ti!GHdt5g<6jGI)k zg*_w93S4Xnx35AtZD@ag_#I9-J=nfuNFesIN?7qg#}390@rGJOb&m8yeYzx+gXU7C8!tm^o4K*}%`vo5vugoGJr74-&!lgXu zje8C)sJF@LWvQMtpQ{3$zp$KmQt`CCec532Z90Qrm2QH6Ep^DIt=aTbWGQY}QTcDY zvXgdo{@5`5Z;ffu`0NUVMEY*9{a1;E)MY`5paJb4Yw6KM-1$U*IuZBi`MVHt>2pNg z&w%oAU+jtUwt98X*@hvAXHWQu=O+!^&(R9Vbn)>8Wct-VgvMerwOZ+2Ug_(-(l_tA z^k{rmMI`>enO4!UfV5wGs|RT(JSA73rRHb@TeMJUY3r1Kvo+Cpi<7O*Tjy)ug#V+x z;2>}^FX=6mN;LD)V+l&ZmRA$AQD%<_nQ7t92LiF}!iHj^iG~)xyI^3}Zqt%sZ~!B~ zauwut9ziXf$gs0cPuq*Aa{$di()lKB)yXH@ybBMAH9z3{KAz7h*Q!8bE)`^ubH`FP zr}}-!Ktn=^LQ=19`?zr2PF!X8!SXRATQEu_(-^t!C8=`wi+hH@A$+R&X^U3)XKSgo z-P*Ma^{u%gt?7p|GJJ~zP2uyiKFIO;X#4hGP2RqB?#_5z?M)25XG?*=%zRmdtuuM5 zLGl{Grl^oa?Z8IhWzOy1X@KunbiKD8=bg&PX^kb8=PV}SpKoBCWvp!sVb)`2eLkkW zud!lTT7cqPOR`y%y+BMWS6(~?q$a(K((`Q{90|@v+He9>daC!+W>8Z^Y1>62drE2X zShY=B0827V!@kHa6mQa#mFMrPOXDMUtvzGam-93&2+Ja%GAczFmCys6N{}AUcU)|{ z2Owa<`y-)}RusyiwL^UJ?(<@yHLdN`Pfc2NiS$1x&=iaksGws%<4lGiH@0}{9|q#8D=R~8QvPR5AiKjq{=f)pmmOt=2&_i;3cc&H#v8%6s)bHw+w<5gQ>lz$MTn=d#q3%T;j8|aM# zEyUWyCWW}59Sj4=gM`vAgD9c7lk#0Qdc$&3a{5Q+T;e4kruvJ4hMJ|)NXL?tIXTlm z6UrRLE8|h-IGz-bE%M8hA~PhmNCUwtJ;MjVz?(>@pa(4f=wtPORy+MmV|;4z+aDu# z(hoc6L<;Fgm4)zW5L{M}p6TNt$OhA|&o5Ex4KB54c416M#-hk<@X;OMWSJO+N|G!Q zes9WA52r)6L{BeSod=`UzBvVGP2 zP_^Ly=H+6gEbSE{vpd$owTE??BxtjT>0d>ir%SWv>GCQTFkw>3rZLzPjlnQ`3fjPw8q+X@ zIyn`O*PbJJiO1k|fbO_h& zV`s9CgH7k^Q>5q&n8za#jPq-Y!!=rVO9a2BL=QOi00EZ`_QpsdX(Bk7QyY|cWKpB3 z#Ka1^&Gtkk))U<`rF3*p$5|}FtNq|aoJSTqByJl#DN#|J@-dQV zlfV^Y5OJN05=UX;}fu^Rh;pmy2esx@}rVl1TK{< zw7JDvoa~`&1PLL1ii88nzCfut| zv7H+>7FBOnS>RX$S0Rq2>ns5z?4K`6GGSg6fLvP_5|j$0-XC4KamBds2aEzaj_tHl z6~u!St|Rf9sA{~sB2Qe0fH&?#z>DkXtCjTG5Pg?HF@^7jq(*^&=S;k1)!$a5lSBI) zT0owkJ=v2yf!H}_i7v+IMATEm=u#pxQ6Y zs7`An+{=o;hdWqqvDfl0@zdBq#< z#Mmm4>eNw{zC<_%Vyhu_+Pj*`>%Fw?e0euGeA*DE=Rx(pddn|uG!!aXOV@73v?c+eBLm_D;I(DqXsrG{;9$B#43E87e2xZ zAL@no^TK<2;oZFO<3b4XM~lp|v23;Hjn%y@-;LEeu}$ONYxcap`dNE|Xr6L+plP0C z@$EEuCIK4}X`*_M(O6RgBQJAsf49E7sVy5kh#AzRg5CTBZH|sivN?K*OPxVUZWenW zd%?U}ynH&?FT=bq-B&xrs8Ncg2BhT%o9iBmPZ2M2sXHj#Y;7-pCOzGT)-BfL@;klY zW*7Xi7jz><`Bh#}BI#;V=J#7Yw=7^jDVu(F+>sD$8&6 zf^K7e`JcRCi~IIAFQ{$$@_O(YMsVEOMMKRF+m}&Qlcwsb9!ebH0}>b*l~&qzj`P^mRItEhQ-a$Q;S%Qm#$auvD|-$Op0%HF z!6GJt6)9e-`6lB+tU4q|AJAII)3R@TR-(WB(FQ~5V>}YUXZSUgt`Qv*!BtB1WMv+u zd(oNxODMf@UqQDER3=*O96N`?89q|~8>qbF8BkdXECrSHL}`PE(qAjM7v>1D@Du~|>N9#{{N?;s6PX+H5kE{!mU*bj;gp-5TVCz3=yqg}?qc5cfY#23$_j8R5-(Vm7!C zwKAvw#*R@A@M1u8bU_(sin244rMVe{zx(ujF0Oew5Od-Q|1MH=9srvM!nVrsB$qp4 zmu3$U(b_I=_o`CZEl_}{DvN5u#N=r$aTcuoHlTEnz;V;$ZCoj8MnRYAN*$WsrVCnx z7c5nOt5kb@%>p4Gu2hFy2x7HjyF>`40*5GINuQ<|c24$oP8=%I+syGZF__%;&Or3o zo-I$>z${MB!KFbElr--U1VSMet&tLto(wYKpq&7sM|@1BWW>N;j6A<&qo&}J0zvRs zUQk*a!JEC{LKnQn3ocP9zQ_XzH$b}cFjH5aS_s5*l1xQFoQ~6DAq3yGLQN=^U*Wws zQ1{v1JMyf2wD*o9xCd&DxA@H@!hox}(G0p=wav~!e%S%Z?{uUgIn`=QX%Nc02t^=& zGf_~Mk#2UxqrUviTZm@#0-p*|qqOT93F(^Y_6>?UiR3!Hdaji^i(kB5)FN`z^gdWpfZYH}E`py@`YC>sc`90pdh`ZW*7tz;v@68%%gt+L4WrozYL8@BlWj?d` zR1ReP++$9O7Mdd$KfeL9=g}Wp5mz(oQ{k8Wlr2fu(7gGP|y?-)N=S&8v zk3RBWL8`~7Lh?=-^}RJ>RBud?;;+AU4J32L-&|xFyUA>EPM(TILt;@-EB#vGDlcp- zBH`}iU5T<;D{K@dTt{ZnqhM?}ikW~L3m6+1z{$~Vc&Knug~NkYS~NUh9W+1|RV#ab zgb=t*@rP3%u~MApqjRhmb{iy|%4~xLVB52B(BNw!r6hM#3;Q0}KTA|L82G!iJ6}em z*JC+AVA_~d@B(%If$0JS@=Dzk#PN6i8prj>6B!*U=G}7x# zy-{oMojd1HI%A8x@ih=$vKNsZr~p17h@;PGF$)@pnCXauTZA-bv^J-rwVS6(sAEny#1d~{|H3p+9L_BT$AxNEov0F zDQc7#&Na#l|I0=xpBiP)VvZ9K(o=J@wI8z5ARyFR!U_JdUBg3s>WvTFpdiguAE@Hg z+_!pspmTLk_RrN7Y1zl}0C-DX^=0P{tT?sIaf7F7Ci?xWV|ANVFVvpKGr+jrVoy8{ z6%Wi?z@pOE(;)Q);{vEJB|zczMpevSURYR{%CN+q9@SAU92Ynx!<_$=pT5*?Pp6cq z12~C-6A%XtKl2ZXl#SX6Z8Ak&C6ZvRjL2v_)x;8JrNUL&^^t^53J0l%8n0W)r|u0- zc9XZnKS7T?izDS~*Y(wJ2!+VUq_`BcZ5H}ySGyNp?}cYum_DyC+^tTgi&U4}ldfs` zfLrIlP53iV_?O<8iR_vW8I*1^Vd|0q>6MQ(LgBQwnrnbmBuoxol1fxnrj z&?K^}FsD-8prJ)D81)BUDPgjGtm^M?w#N}@&2}kK$3=?2Dm?58VX5ZV@Gj{RNH)QPaLvNkum=O*>$1t; zda0Hzz@xa%Be&vO!$pOo)*rwaz?I;$@5PMskZt-m;}1%==2bOe%$IfKTg+)R;bd!d zD79uFIkj5{eRv7*>JQ1ePyhU2l6w5Eo~qV=w%Q`-yQnGs27^dZ&90+q&HAq8dDX3L zhD63XwU=i6H`Z6u7XXQ`8wO%yLHCfZ0?5+p-(qxQWEfqHtbQxr`gH4um{HW^_r-Mo z<<{7QyJHe2eOHR8dsF2jqAaQlUZnq)S$(z6zP)rn|PY} zh-dDU7f7%E;R6LYZghTfEkc<>f2>6Cqr%idT0DTAp!CENh_^}^DVvp!glVv+o9U_Y zF3S0ID{DGv1<5Yykea&A4V$xJfYcp$GOBM%xTXH~?8jN{o+d0wnTkF{IL3X9wd%Qv z!a@d8NP16;203aE?GXHGSG(6Pji&_+rgGKya}xF|D>PQ`O!aP738>zkEdc4`k+_od zO)#lHd31(2hsPqbrjNQ}3IA`QOk3Uc*B;KUO?_@Ht*!nKyN57y3ndCuT|Cpb@$;Yb zH($hLTK?OeEw9%PykAX(-BanUMrLnyDbZMGZH9jT*HkLv z$#32dJAKj=3mA8Hw(;qZ(Y_NQGDIWF)c!eC-m^>0 z`)OA7>GZ;3>aPfs^m5*?nYLCRBF1k($e7|tY$UrzQI&`kMYT8-ZHBw-x@E}?qDd(Gpn~KzqR6l{Z3Bzs*|!A+ zG(d6j1SbLOFM$yLlf=kxu>Z zCO5XUDA4W=G@7iXe({t`(Nr(B%}bGbn2Kz4DGdrN>vDmR0*|c{HkZ1!FR;oY{%vmk zu5+6@n+BnRHQLP-oeh5D5ht#+yo$KeC)0$r*pV+5oat>gQf`&T|3ks z&Q~IjXl`U~Cs|YsiS1RLjx`ENu81T~rzK$AfM$qp>$?)V>IG^j^)>d0rhLses zjmYB@kaI>K0swM}Ooh3OFwji#+2HTIT%urMt}R|!iq8hGQ!bE;ouF(y8AW%WFXS5! z=VXIlv`mO@r5EJOAJc9+4OJ^gHh7%ncm7ENdnFW1ox>4m04==}U%6|a(_Vs2|C)FH zE}NInJGJHTP8qzTQZ-(LFUEYwb5^)?E30pJ)VkF-Q`Y)ls@v$7dj2i!+fl=l1ExPH z7aL?k<4R#h2S!|WqIQ76RN~!*Y9s*@G0l7<_vAWNs8V&x+n!vuU1lSCijWKvYywMZ-2aS#O`j?Mh~%hmSQCR6)Xyuq zXKzbQJxS^#_JP+zI!8#|#!Ast&@PP8fd$-T&*p`~E)`b5?^4Zy72~P{3p5VG!-kV2 zT~NEae)C6nRg}6vKr0Qw`=LN*uyS1&a{|$3;L!6^Ia)5O?xGAkvdL{V7Q1n8-rY26 zyShF6VZ)g)EvPj9agNw(hP7n*!zXgQ)DeDkab6t3YAo*`T;7%B1%c_6;*kN59}WVK zRGEoIUcSSbl%(x&E$UP?Mdg`O`Gu~iPKrwZj*o@dkgAu(DlA;3zV=P$`?;7HQI`jZ z`Wcyps3intI$3T{CdPVx3Pg!}yR1UCHGKb0&&ZkNC4Djz`sgkpzIBx$s<&(W>$h9u zHy-9S-cCn3b`7OmPvL$g{;*uG3KOFax9W5W1bu>EJFN7F?-vXklFv3|4iXBlCTZ6I z9Rfg*;foHEQ-B0IzJ5X>KsTXU2XCE$HC;7I*Lql!wbH$R#ZxFZFUwYE%x}ZXz<%&{UT3H!TMy7430k>V0H=`j>>TB?%)DZT2?8ZHxs5FIawXruaj>igb&*`~;MNQ+Im zuZ=P#f+h{%>C3z_i%LqbEGQ{jSkk4MTyxIh7u;v*3EuNozi?Ro7q?TmY(l`AK89!d z%!1TTrA}9@Zc|p4pAg7Q=gnAXhSGna^k2DjF^}}L0!=Ou6TO`08WMOK4Hn-hSNa2T z`rbw=JxU}`EEs;@PkloZV-1mo`E-M`Y$B3rh4C7ncNRa>m7A6-O!*oKG*8Y3m#)xI z9&<~tjN)^YR4)J>RYSugqvf>*gdSugsYmrMBFwO(|oa{Vj4Xp&{>sTW0a93l*fL!4f; zANe!Kf;sC8@7_k}5aF@e$D_Guzbk3XzOskU-NIbT2)sm8q!?4A2GQMgFUre*%J0Fv zg|hU`V!jC+9HTrw_%H59D-n4+Y(Luli1R?t{Uqud@eedgh&%PCO(eoO47jRJ!>slq zq2DV#mEDA`fQWzdVD-TsVpN6|$UZ+-_q;u5Pm`LzJ3X8*k0A7aF_|dCx%T(DK4Wy! zdgU!ZC?lKHRE@=5dg3!OTY>c!K$Fpv@Mb-k|1RXIsYi><=^UFvJHp9U9g&?9T@r+w zhP@YvNlr)+tSUGyzLHZ{wM^BZG+h^GWsd7{{PtDVEt<{F(qUDz%iH!_sbjGlkJk++ zE27n99dDo1kG1zBg!W|lp3m!)8@CJHb4}{=XIiQjHV9?O0mE#woE^U4AC0XZL849b zTX^T6z0cB%-q9~+^G*e+gCQV64MKKY3`pS>YA^IMv(KY&pZ>?$-~mkWv<;`7qO=cX z0Z(!TVjX%(&a8+gk6!tuijqu#D+0zrxsLm)BH71UFN#38?NYqo(5bA}w^*0U;5iII zyW`VGB?jO+0awd9vpu_=^^Ei;T4btBtuF6Vl4($PpR4K5-bH5{nNHVokNCvt+Ja;+ z$ySldpveXsNJsLhNbf!nA<(}ML?fW|L?!1pEx{#7)CP*v8BYyF@qJ%iq4M2;G6$ z61FlJs-Z?YY5PXZaU_gUfTb6p@z0&9Y{oR;oqP=sbSViQSk6<()}cnH4eD`$$wFz9 z;Mdz7&uW5N#sRIl4TXj$Z7BREbF9Jxk7oQ)il`mDN*_(V!YUPFJhjJJTe35c@ny00 z2N&(v-2{3g@h2m3&ZqrAc$Wmr2CJA$vd%ZcNzK4De}Z6Q^GcCQZD>kdT?JX}Fy}x_ zn;>k%>@3EN`28K*_YQQfusHTfRWm+VkB_0FhZCGJMu%NO85Vgdk<^F$)18h8FP1!* zv6Gw)KKmC+8&^FYadE?F07dbNdLYisx5>{xPM7gb{Eb&xIr#-0vql2~_f|sVg-8O}4jv^Yl_G+AeMs z?sip0q$A7m>tTu)R3RPb>ZZCHTBQwXKKAV?|HK^SFibaAd3c9?PcXqVEy~2{wp+R1 zoIYy;;iTWqFWH8~2lVf&Y(!LjV|L9rj+UGr=zIYV^>#J4;$Wcj4Q}|odb=xIBN3aB zUQG2{%OTe*V%6t>w2>TWI!d+b>o@4(ZqEaO+veOvqRw7)8quymLCiK9RK( zDsWImB)!pkRrqe+^w%yS!niTFp1X;Ag_8%)Wz{x6eyj~gvX8VjMH2HiM-o@0*5JPa zPxW;&`w5~EOWD>vBZ-rGBwevCJnYS@?o$5S$++J8Ci5G)2USH@z1;hh+Ayh4Ta*%BFb_XtW~E@y+o znL=guQLP~*h;3^Ws#C}#s9D(rK(hSDnh8)0GP%6(z77a=Jt>U>#x)^k`-}+Y0k>9= zsmsqqpHPGIfY$?wI<#UXA!aL;ZESOSI{b$C)>Dl#zxD9@52P)ECmN^gah6GZTIHIC zs=l@-dR%n_4Qb{h%8?v_F|es~Uz_8M;K`an{Z(C}(Z~id$3k4r4B;rk%Jdooul(y9 zdocc2{n~%wY6lsS--_qQmqgZ%ulPJAc88!_J!kK&deRqA#ZHeh4EzFvj(@tVup%T! zl2=!y?qHgiKZL{N&E*IbGhA4x`4&RUgtWiHdnM_&_)(``rzfPV%&En-V2FgxBoN=s z>&x!dwt%O2*D%~pQTk-N7hdRvEA%9Ni5IT&!ppsIjTi3X$<>`n$H@g_zL*;K90vb^ zxbF`%-kT+izPp?glUoJZbD_r54! zpwP=6{R=4|(=4j0)0&$ZMg2-lmmKg1S5)Y8uBa9>r*gjvN)wl>CWF`QHLv8aG_Ax$ ziC5xrzxGtBZoK&{0GQq4j$hJaQL=u0YW^;>UwU!h^WzwFzfD{QL%y9F7P6jdN(Q>b z4Qk8)yD%-ig!-kxIZ990N9Pl^9x$1Z)j8fPe`rDZcl^r1afpkPWN67rhFP9usHUcF zf^wi5BJ5cebG%ZXn{2Jg>piGYruV!EwtT5$pB0Oqdr7u}j_?Zljw>j~Bah$gbkc7S zU!cGJ7wrR^@6Oo=eu*fy`CQ{v-JDv5lrzHs12v@g zBp}^D$YMG|QJh=Q}LWlnb@(?q8%$puCYk1Q$qBAW;C00 zEdqEtyYXD^gDIHkSO+UUxN`|$$=hk6Jv{+O%en|N*O}SZ&2`!ddPk@%m7+p#RSt8f zwx>I3pm4^sg?Kwc|``sBT^6a!w^zC>(>`!TiE|QG^ z6v5mq?L}!{ z&ZV7B+MrM&T$6KY^`zAmr5%?`LsSio7Nza&r?s6VeW=0d%{C&+_ZIhpxQqLY$sE9k(Qr+={+S*4 zf!-VLSX&_%?ewPI-p|?l3g(v`uk)cwo^sVV}*K@k8F2slVJDHj;fbu;^Z$B1_kulpM)9JA5)Jc|y&dI@T~7JR41h z^VG+VWrgtAQ^yV;chsqECt9Fcf#$Z_Qxc~iTXD*W(~qiXJ1~;`>a`qj)grRJ|DPc%_o?O7~8Y`f%?WZ7tTob+qFOTs!D7`vJIPhf$#hq*^v89Y45 z_(AN0!h=5S!7M!=T-Sw>oZfhD<9Q7HU>s7Q&58oOGcTGpu#+#R=}Q!kx`|t|b|3g>!uM%dX8zy7 z_qy+W8hroe01w|^50Nq6mJnOj)_0dO>EiVwcnLev?JV+E)C4rG_WZ#fr~0v1v=UYz%Q^+ zBr&z3G2YeKzOH@Tg0kJLpU^1LCRRqSWOKIt{euJ7eM#^AH!7)pM?;{aKjBDxQ{;)% zIQ$?gMlz;Jx{gaWeB9W+y>H;U452Z}{`c#PNc@?|6X|gaqSgJ{-zVon;*x_bDLE;X zPu-1AOIzELlQy^S7#+Ay+I+r_-A9(Sejzz&lO-jKlKPJS1rE^?WOCGtma@#H{L%tH zwLoyQP4gdPD9Z+8zfk7jPb}&^vlV{LqDDP#pOpQ<(*H@oNj{07Y_N$uIe9lFnm8$% zm{)<(tZgCL6AY9b7~0P!3hzPXZ19cm5g%X8!0RA4_r#%(S*>I}@h7G{r_LR#3yK#q zF8DTE@ft%y-*DnQ%4bGJ^)Oqav7WnD>g}BY=0XXo_2C4Pre4;hN&n0F z|H$F`s^f(%;nGJLvj?^g4A(w(r^GODN?}j*HnGF7gZx1+EtthF=U#^U>NIMVPu*XA zw2XVV3Wd2)qJf4LD$F)R8!Z!pa~*=SNFS)DA&maJZb%>|%dP2a+4W6{lbaHUOVr0! zQA0!+;6j|(9|=U`Csa2jF2xG{Mr+&5#=xaz)icKhp5D^<-cykz`=oOBJI@^7xvlNU zy#6pVaOwCG%Nn`nzIN_E!e&?5cn!)W>##5K`8$n)yViu?+Z4XIYi=YtvJ5R}LF)2@ z{+Vq|PRNcsWJ_aw4fedYo5L61J2zZ@9k7HuHiK5wp?e2L5%jHtB8k!A+O>vVyUOsE zrMML)PL>W{p@E&{qSLEu*ad!Oh@Vrn|GcjuxxP@>V13KjgO7ynN)TgXXH@~ZL!euH z>M#~O(etBiAsA!!8lo(XVK>XFzAHTwl0`b++_!jsh4-Vshwv*n(_uJoiV;Vh7?E zX6%12Hcptb4co-?sX2gvP17F@tsfFSU6AFpy_pL&zNruR@VzehZnl}LgYOrZY}vP=j(facX6_V@G8xXO8XIy=_GJ zjfwB`}T5 z7q0cmDVjT(m|)h#>6@OiJmaUr?3Ef`WEVU;JGl4vt$*hETiujdLhrzQDLxdV_t;|I zb%cNHDPE$9Im|V$)Y_#>VZpyXa(6G1_-kkB`0fZxH-if2n`r1-|Np9X-for?K(`ef z_Um3H$AE0>UJ;~!@fr?^t<~$IEaKd*(fC&7^;U56a! z{&!5@t4;a`<`{UUJRJu2;l$|d;C(=0VfUgx=lhmF^bYPvN%!XU&7JnYfBZPt|Mm-5 z|LgdU8y_{_KSMMAoqqQ_z5}}!hhQpP1?q5S!s8X|b z;t$hoK+UOB*TU3vWxWZDTvy5tK9&r*AWfwG+xnIYSCV2B%B{2WDs!HR*})&9uM{Gz zp~TZaMwhgx1eZUY>DYo^0^*B&#dbo+KB&HJL${ z%RsrDN?G5q$p}IdP*|K9+G4Q}606U)o+ve^`uf5a%l^l-7R*%I__9AtRhb=pg``Yk zo}}*qDr4}ql;QAM(El{=MMsY&F0JH*9K?v^d8Ff`($;~|L&!Tl*wLhPNP zYX0CvVe_T$`TPu{v|j3(#F#NpV@B&q(c}ek5c|PcxOWfZC!c>0(6J2+16|HPEXPyw z5qpj!zm44vF7oLDoE&pz2X~;t<%0L-<}W#T+ULzEZ@XFmb%+@wiE}GGH=Nc653CY_ zwNE#Dsn@^$WB6Xe?y?K`rT|qmFVf-OlErb4>YNR4!?v2vecnGtlR4kBkZ*c{L6zox%SG>wLN&)ZGi;(;W` z#9bLGV;*87C;C$1KzuH86Rw~$DH9#XC1!)A#HtZ@9Ir|;3rzlfvOM`cN=i3*qWMJp zgOr`le9gV0}G8`=-?hW3Dl z_Tz=34A;_RYW3F0q&GjPKLI4&FuX;xwrlRypiX`xl`X>qVYi%X$ms_0T=taq4+!#a z9Vc|%b)C@VXYC78+`Q% z|4+54zAmk4sl$so;}K|?C#N2)=mGj@#z!$5B1fk>+ht#Wz5CG$t&lk=77a* zV;f4_cFXr7z6+bkU<7H-iHux&cJL*94Yo4}iYXx3xwf_H%24VI_cAxd5uCK=-Ug+H zw7&+7R}B%yCtVA#Xg!R*Qak01dXG1%#T)xD2i2NyKn2{)bp@uuWd`TFh?LZG)BWuR z=qp0Xwgfe$kP$rXln%54yQliIbT?bwF3QHfAWMHfbxB>}WZ3v)SMVOvI@*Kx$d2tt za5zxnypS5be-RMGco1g?4^btqho=o+-g{ctUwS>ih?V&`8~gyhMvZ&oSSgtK@gO(4 z&8rl{)O#}b`cW{oRPNMxoSq%h{E13-@Or5_hDbl|UXGij;K~AgP{qJV@;n$On|iFjhUe!quX)Aq zRa89I6Dddx<7XZt299^kFY)X@iGz1Bbvef4i37yL4bj91M;q#TiM?Hp|MnM~oKD}! z3%gg~;zE|Bw%*j8kKz+=Xv(1Kh)WzR7x9a56?}+v6MaP=XM=z8)U3qOg)DCUQS$%7 z&*2B?bU>C_uPnaF*5gk4KZO*qs`tS@JwC_=$9dHqP*k0>pP9Vv#=nP+AM!G1PW^K} zLZWbeby8yFOOfn-s4Y#yUTu5ZBh>y7s&{@m=aD-*_)#Vpc~15FujUx$W`JyJ4<`rh z5$<@P56hp!9t{Vgt0nLT{6$7gX6t=gt21N%Ql)@X;wQQpzo3n;!eub+sLiVJNO2gsw;X-y7`t*wgEb&k(`QMOfLqIkt)$gO9E9oy&3rCFHG>`r7H_#qidTz<1Rwhb;)N1DyRHeSh z*e$j``bbla3j5o`tpo9c539fZfkOqG;%{YM^Qv=}*BwXjO}E)4{BPAhpL&i|{H5D9 zTr*$F%Nr0{(`UQQX=d(!3&$S{uX?Eu7cn0kz4-0flahl@io_pl zil4UNtMykmzqjhOMTUDW!%bgnUZ5l###c!?#-0T zVVY?Z8^NyN3d(mQwXX-}4`poOC|+h%;fm<6M+4Ullo}z&*Jz@YbKuCht*LfRVEzHb zTZS#LL6prgh)fEOCTgOkZ#0#rn&PiE)naDd8VQVf(g0-H*cOLIUkxc1cXmYsKV210jL=++^}R@KHZcED6$+aG!_)F2+51ImFX&cVt zZ{lqoe}w%w-*m->1LHSoMZ=1%S=CSnTY#&%Bct(m?7J~csPGi9FW=7wmw)1SmEk}b zFz5<3IleguQ(*9iC1P$G_-Hm*ekD~WgV$OVd++}DatmKhII8~khzrjooDFulz*+wH zESKH?jba6~8-Ij5KCTGN|CJ~c$6kpS#M_QX9*wMerB9^vhXcY# z1$1eQKgK;XUfFPpIVX4|9ap!5t~~d&@$nB$lrVRV)V>uCj7b@9Ls+iU!fq_8bmz00 zRpaVjhz7#uptmK%`oZ(~;mKit7Nb|Vc2js&iq)y^)c)khr=uBn)(|ZF5ME2 zuL}1QjYF-+40$~K9vextf9aZ!OR-$fIXcYR(1w(_pmr4^qhV!(`UjV- z5G$;|zQg(n(>G*+N~#go>ch!!jmX%-3)0xRnQ@*cwR1rTB{rJjXUKEohoJvnC^snQ zUL3BalUy_QUMB_?GnVz+lmMI^?;Puqo|f zAYm6sFV^kLu&VFQgw?Yjyx(ii5z+Yi^kw=K`wOj(3|p;Qn@S&##y6zTSAswP5gx*k z#MMmxC*$h!K)7~CVE(T){S}DO1ign_dWWS0*DWQI;oEEvtQ^&D4a`?mcvvcM-S2r3 zp=W7OoE^0e!>4qgQud?B38{2VB>rfm_9=+9f%R!Il4H;Kl?x&*1S%Z7#y@@A=g{`1_{L12 zu+^X{IzoGuP-z;phoIRo5t#q9L=f((Vg$(lBO`4p{d=B~__|2PW=1Y|V94ZT|9zsR zPlbEq#7gRrthz^DUt#ICaZ8|b57xjVTLJ^QjP(7cA6k!e|2;|SH->Y! z_rw_4E7GwlgagCo$gu5g_ikHNib8~c&3hZdt6nWrhvus?R@(dT##jAM=BwQ@2Urip z5J~5I2GSJOk8i|y;t=_6_aQyeBo=B!ctaZHb^mbf>Tt3QPcd$+4F~?Pf&Z(*L)QOg z9$$q6cW>%=XS6!@oRiWgQV@EKq&oZ%GNd6TBJos|kE>D(kLq1AIXUR7s*g`f1J{1c z+nD+rNB)^-VE#76XCIrCh<&)7SF!enH;^uo4R1Cjk2;2viLMC6SB>kpq2q7S-Kg3urJnZk6A1Ajv^<0lW znD9N>9=KKqe59*&ln3m-0VN=nJ_q&`oNXs)1o{NXGz_!&Dr!lbKajfq$q%zQK5HZ_ z)}p4oceNufZu>WXm5!DSHdqvc7TX1vea)hdCdzazM&D~(uKg?*VwGIix?FuN3YFws zm*u@}D*G|Za)Hb8GEp`lQc%6iwZWoXL8HiJ9Oc$B=M>MTbBW$27AHJU2^{*gSD#bvqx+L0g?xyZPMH z9Wx+@?IlXD)u0TmmMfEn5`gP9*}3d8D< z=M?Cl4eq5WFVmlE?o+eyI+9v?vc?~|mU!oA#sBW~7j33VS>1AE2ilc_3h36^)4P$g zR<|(#YMpHy%fzuiVU4u%tjZ^J-E6Y!6A<48p z+yq}ton{#|@L$fre?n2t6AN-~b(3LpDor0qLSEQn&jR8R6GClgV-p-ae8S+i(|D;K zKB2lT5>A|n7Bsb@ZM3tQzY|7zU>eRsVz3VrA)Kmf@Kvk|kC;-`b`Vn_4x_%Btqrd+ zE5WsUQI|gnXHB2Ueuvo$?-jnBzoa2-T;TT6k}d3uK(F;J3MpNwE=krHxP3yenXrbJ zZW;yHn@YN{S|(3N_oGj?Gy7&siCqbzl|-s(YPJqUy^A&xcWq>{IYgHh3hYlRdNd{$|fSLjYg% zdI^JJ4fpcfWyO%aPk;bxk0kp1ZSV zaA5dmCGBEsJXrtz&7?+F#* z*)Xs}MWZE5;2M_7$=t|N`TYeh=B6K5KD1Na3d4Eb{{H(LtCcc7u|ht0+7u^or!&dB z?CEVwW)t0Jg=>KXVS}3-qe`Gwr0tS@KJTN*clruiUBT8`+jJ_ikA5 zTZPBP|K##WD2i|p{v40;qFOe15u*W=mv|ItslF+Uow!g;yd-bC^!r*ixG!^6am3qI zTe1tMgiFt4739>0rp^aik8NC8!S_wI>mtL}N8(R31;%WObbL^D*+JtHd#^;402`|G z1EtYn&s?^D<{0KbX;nCW$m81G;3v%q25vu~kLP(De&VG_zh@bPdqszBnp4S1q6hTB z_!M6idE%v}e$V2dESpJ5N)))r5mF0QyY-~>_3SPSszWD$Ji8z zmOcZp6_L_akyZB&hz!B-#I+8qR)wNN)-{zrL*&44>8d7+4@TpBGh|(a{;zaX_EQkmsVM>m#dH51{(U zkk!;u>8cJz0kd=yNdqH89wa^}SRzC24G#fvT};H*Uv@WOQ1_XYVd@XZ`!;s$D7!2; zCNZdwVKlx9e2yFTz-5)08llk-&)IKMvVR}s<)8}RhZ_|2dt8_tH*DRUy&|PuV*)Eq zaL5cl@k+Sg*08W=Sj)|?ipMLh(k3qIG0?oH>#3#e*+7#f#L_YY%}n4f9+Dm@%K2B9 zGepjs?m2%^l=FKoC(himqkRu%DINvel+LosVH8CZiYuK~RMaF_RKu={I>IYz2m@uf z`#?FMps1pO@?D$II7ckGmizPVPldnR^>Ge=zb3RR{3VNW&T~1z-{s)1cu2pXAZHPz zlSs%9>E2i^S zQ6Dz`yO%wkAu9jLLiFv9(WPxcR@*=Szh{+rPS9(!gA<($D%uhzHzhOxJZ1*`AtNQX zKi8!VoziYQb)tqgN5~9s!#b4b@vh6{0pQe6J zSb9W5Pd(x~Rp6If)FQXunA0zDJi(fMQIBpoK?UR(uAUH7Mb9p#YKVAL%V?aXy8@=@ zr|jUNjWtUAQo4PVVWA8XBQZS^J4Lb#uRMSKzEGc&+eZ&|?q-#t8un{UOeo8%b8ZBA zK6Ra?uQ9*&3ggux{Ldn}fNOJ@N^@0Q0qZ;cOa3~A_(FtV1W}76$liRI$5(}_PfRd_ zULj((upNMSnqG{@O)kC%e!GYt-xI&TR(7?1A8WlU%WwMiB+?*r_>`RKE?-!k-3k0t z^;M4EVM6Bnlb9Lm-qNFravnrzClK}}dY2HshJ#2Ug!#@b`sZc|(+eaI`k`hCn^8lU zCDi9;3CHAT3HP})+$g5jFoURRW7;_k?=sS27EFdA6G&kyb-mP1`}F zg-D})>nyFHwxStQF@Ak{HXDf^O^$l>+jbO7-@nd6-gxTys*61Je7$6ln^rJ!tw=S{ zmBI=1SASwL&7W9sEW9Qb$gTYTlK?Xd)-JovEDq37Zbj9d=BmTxjKvGB!&qHU_VwzD z#3#0>F#&@7xe-`jMh)@Ot5gmv0# zckiPxbkP}x1@Uy2Y_N`aDY_MVn1iI|6Tf@jxybx;fTs3`Ur;!;FPP6E8Z^B(zkgrS zSNb9;wGIc8yrkcjT1i-vel(Ikpg|#E>k+_^`ib*3VYl$P&R^2e*PQ6j3x!AY4X^Es z3eU!#iJIOp?Ru{DNVZ79RaaC=iHHvSSdQfkxh$TQA_Shz1}jkDBc;zb#jo~eqInkb z{0j_tT;38VrZNnqY>;GA5@pDT)D83LCy38?xE%j?mq$C*7uUX1D30zRgxEyCEf$+U zQ?3G0=i?WDq`t%Zv^6j*K7@PZ+8XI|l~^7s+l~&4zwl7W1{Y!T>g>v}ko+;Xc|eYE zc8#~g`|Fm}Iw%i)exHpExWnP~yg4F|oSZ(BI1?)d{TE+%hbi^qdGz9gtmw8wXbw_p zY)#ufffclB zMv0iU3nk*K+?kYTt&daZ5T;Gn-VAT_)FVcd8cE)Bix?;V_f!jIV?nuAv&EelQ3jHG zd|<^rdy>49L3``l-k@-hD%^`qJu7^aJTx+A0BJzpc(juq)+{sS2!N|Tr}C$uTh8kri5(NLG8JkvviKLwAO(+Qd&Lyh~(S)00oe| zs3CmBSOaAfH9uM0KbXzVo6(q@_z`YMBZuEH96|)ftRwb??&IG0TrVr(W;BCCIY9T5rIcwxMS^yJh@x3Lr|K{?DDoK1!GGS;Aa#%}!<~?bPfG zRc0rJ#m^wAXF&m^Y0ualI|YTq^mdZ>5&A&S60YECd5m0|QEuA_hBm!PGAXeyv0~Bl z>wR;GE^GmJotgij>lNzy=d*r}B>rYZ-9I^JmM6}BGt2r2n^;{pAKszP-Zs_m*vUVs zf2Tg@z8;rjtwY`2bG(t0>`?CW>o;T`J81=29b?errD?zsgM5c3yh zmNtvgY(_E+TR+ggWB8qpuQvo%JSbnOuP{@)p#QhRr5my@z`G0ju9-MP2V0myGEmuv z-K@k6Esnw9R*70r$&*Eai6L?vlgr^1Qj?4D3&HciE7r?$oF5U^2Ft#bRzYbMls3Xo z@j*JQd&J@0BM!<%P+#R_V4DhTeYGW5Itqo#{na(gtADTV5yy6q80bfYJ5DYM#O%Tw zIl{b`y5=>yLHzl&&S&$1Jl@Y8STT9@$X=}nbJWT?a=bX2rlCVkZk8<(GvYW5inmXl zDfIe~R-St-`V{}q1ZsiYcfqNnbqrXgj`R_h8;Eb#iVlt#r=GK5;*6Q`GiUlW(mWjV zx>4JlWcE~ZeH1WW|iyHXi2>%P-_x9g=^skYAiprJk+IloE4dKMO^xQQejry?p zYp)>q;6mM(-p5X*<7Gl+BtC&0=hif?nK0w%Tv;BMu{W<62?uwNkZx5(*4pk72j(Jt z=`qZY>Cu?s#VIuWBtOO{+K^m?UmTtu4g_RqTp~^m(FRjua%o~}8NGJ*INpU(X^HN{ zqFIBE9ubAAB$z@#7mq}X%E+)IjCzi&qD2v7?VwO3RZd}lptLSbu zn%&i5%dTH=swh|K1CZB;eElS_;=CEju?X<>?e7m?X##xgdK8n(QCB8^#LFs9`WW6A z7}Hh1+8x)syp)`Q>*T={Sn)VlU7UXr2S8phXkoN;b@s*B1A)%(kd)RpIX$Fe#WBr3&bu~riUzaU?6smLU&teAXnTg^al$a66pLDFWNN3)L)y0 zmn$e0;CfzChhslU$1Ll?f!N->q%XJ79)VbeLbEJX8|XZbm((njj`SH8RUL@EikwJK zv`}3jCWn;tFbf?Nh&`mxkrt{9#O_w;Knv|3i2XsKfQ9g{`k6wd78)FgeOIA(_-Ws9 zc%bt&UQ$y~TGE>>irvq;=py~Ng#v-tg$mtgp-><;RiPCY8p73A3f*EMETzL0`jLhD z1Y$=ibiIZ824V*(bhU+s20C@14SfgWZ=h3$fZoE_=kZKTEE_SQEYLZHcf0wbeaD`G z*o&w%=`lpL@7O00ds3kjEL0zeX>Bikn1v1t#I$Oc)-qT74z_duMxos-bfWXO@~GVT zj#6~XPy3FtKy1E3s-%6#(XDgSS_o|4F(AQz?UdAg@I+=@`;MBn(W!d0=1hJ2j+5A- z1*$GoqLp^gV89fM7boRvYjO=#&1nVUgJ2`@4^M%-> zq!zjZPy8b&YCjeDd*#7j`~{VRqq7~9a++XVSinEmyk6rmh`1=6XCvG%mv0eABvwjx zaPA%jfw%rz5MOMpg5UJ}spUT@Cy(=9)p^WINQ!iPT#lC*_`~<;2bctK$fS)-$K6Rv z16iA@Sug+T?@SSN@|LSl%Zej+BgrM57~D=t3Y&{UE$&SU2o{a@EefQ(0BVyv^IBd? zEA6vIp10DCb~CX&1{%Cu(|yg~18@764LtmA0MAak(9*dbbMbw9LC{N>MR3$)(>F&Y zNmRLe<2&xhjr!=n_hGkMu+aZ9(s6${oPDVELas&F%pD0mPq+9cyPEBAi?)&;hg-C* z3!6_Y)wFYF*HwQ+=Cm%OsN5kJKaH5V_|IJkokQK#_DB#+Fj@gD+=PO^9NgQaPOSx{ z0^O%Zr&!j26?zN`5x?MtU!wUHwmfZ9N-3``maj#xv+Z@Zd@kC7k&yQS)sd0-Q;4Ms z9R2=Zs-Gpz)Mf9z#k7NU4r3`9i(6cbNA2CdL}w;;60w{!5S7DUgMS`Tp%nGcBGSoP z>V}SSbt1u~kBD)fX)fxXCZzM-EVGSnmOtO6puhcpR$ebot$F-Ek=NU&eKvVr|LCWY z*M};Xlh-$&@hRo?gn#<-T5GR$pEQiNUTo7^I}Yw_<{_WyNVsih3b0RgB-~hd%*>ac zbR^s{mWd>QxuP9H}vnJc|S8~*xgI1OWg{l|~bvY{0h)bd|H zTu3%lY8z&2ctR&-=Nr4%K)zQ-I<^erG{ATZnsgDRya;E@|L=0=OBW)a@Bc@?HD9_v z5ohaUT7kpE%npbLL}oM8H&!Eup0e@+*;sbWmDd?yV?%bf-q@P8W9uz3*Pfvhucz>2 zFvNrXLCK+gU3has(OMCle8U#50BNnR+=do`LjDW}OaW26dl5r`4t?hQR|k$AAMe%T z91KHLoDG(oqV+dqmQJ>wCQ*-O$jv0S+LaBi5;r5Tez?_`H6~y^`pyb>K92d6HbQ7- z39+uZSYep(Em{?m>u79MASM^~MEQ;E&o_cA2*G27jj(@dQKw}6pj8AM8h8@|s*QI_ zk@u0=>|Bw?k$t(751+k`Pq0cYuiZ8ryIa_y^vBV%7l6xnha7z8|=QE zGdYnadXs*O__HF`iiWv(fO~9_2oSu*9-_mV>x=1d1m5$XKnEj$tJbg00az=a!Q`lY z&o*b7&1-QRPnI`6D1pM3R_|E*ekdxCDH*IJVMule4(m5D1VA?fxtBnOOk1~f)2}f5 zGU*7cxMW5{`~4r$3GW{{yzy?C4#u%z4IPlhqklBgBi`=VzE9vfLvwP#;nQReF1sdN zx-Pr9eFP@Ym-!-5{t~;mjF5YSJyxv>_ancc(hiaM9AIW@CjK?*UJV+oSGx# zNb$=~38_w+4Q?9i6Ows4gv7+uosf+9Q+3kfrhjxq>*&Ug4{Py>?D+5y4vzw3%Wp%8scauXM>+rkdU+j%ay#Ia@zp!Y z_$tTzgcSPvJ%yXiiNXK;G8rl4_2>WS8&S#V7bh)ykFod|m? z)y19=t71>>JOfH053cjrNX8J!1HvW`emgxU4=O<91Ft(as=4z) zY{ak`)n-CsO@90G;MPIujL%Nwo|deCHA11 zso!7ca!par-V>Ss)kFO&){WrVhAiRGGLbIpCqy#^BT8bHP^W3B`At#NZhk z?4;m_5M7<~^-Q7q+ikvi3xZu%ZCIuywY6irQG@B+I0kTLeY1_Rv|oljsqG4&wFEk^ zG1nL-8j6X>>;^!Nopt$V2Ij@=EO|y^8lO&q8w<|5>6aFRZ!w1 zUZ`WCed%5B>3|Ez%c{3I1YthB2?W})zt5LR z%c% zHoiY5>jfTEi>(RV)RPU?YJk+JZP3D5 zmTBnYFeK-LOp?tk&^ek$wck~JGijW6J;Znfnky?Ni8`Ly;Mx(AC- z4Mu6;2?^PQF5oEXdWDJ9V*ELy zi3_V|d4!!$z1$~&8YJm8O}mt*c|6nN@yslq@CAF8G zV4vsCauBB83xDoVCW3;QJGRwws~w0sFG2dH|AwSUl>eq(4LJJ8JWSvEn$`VHFtC7* z6Xmu`T|PDKuV9L}uZ$$OB*}+-ELA?fmU|WBFGdrChaJyJ%GoFFngn3sWCB969LN7Y z+${ z-RL2|)WfUf2lDne{0g_t!kcir8vA$pXHe1#8hY70>PrSs;gR~dUE>v;<~Tfdu*k5u z!q2*o%ev)ivOYmpA>Qu{Y2}hwPoKvim-Dxy#eW1Df-krUj!l#gw?Ym)k_Yr`Ju0me zDGKs0HN#?}d{39Jx62pk{H3*H1ouse@e})dsJ?QzhpsmO02fXpcsMbLGoy~4I7GPK z=v|C~9`_<4@X1CHQM?_7Fe<$c?|^B;F3F%+4e{`-;mhz`iZm?5^Bx|aYYfkwC(ujN zClTk+dJ0Gat<}QS&GUq-oZyHJ^~UzuNIOPWDv*$q&SknUN3_rLlwWjkN(8ubD-4B$ zX>Iy&7(>@5Z?=>hB;sXtUC&b*^IQeGyud64+6h=yszOyQu_w2p@#K?p<=i?oZ1vWw z2o_?2i*`lglS8?&UFj@zyD0>dk&5)689Ssd%$643;2$(#GF(t0nwfSY;TID?RE5SN z?R4>5X0$j`QpCX1(=T8l0XGQnk}KdA0)7F@c-Opq8qx%$@T)U=h^XiMmto+?E^HMS ze-_Zv*Mo2aK<#%}{kD?4>bHI2mJWd+-JH|dS>9QE{7%zR3Rb?F2S+*288E? zzg%6?D5HK!`gicUDSX-Bk~+Ge=?a|^yw>qOlwq@lRPB6FNKCi0&!=b1w)S}xP5%!i zXfPM4HBsd|)JT4{)ex2wKL~j>hP*06p5}EzUiv%%#m8IR$BG9>CAO&S0sGFe>h(ug zpOl07VjpI!WVXI<=Oc}Yb%jvxoCOWw&%z)uTUzM)EZ?Tj(EhAs`O{zQ!5t6Pd%{Sb z29WuSOJu=g($i3JG_CT;>?pvkoRvVJzx<6y5Sx3-jmR9~dfV>WaxVp7E8`k{ME4%4 zYcrp|BxGH>gd&U#HDFHVHA1$=_$4Dfsx-xCRv-=eHvLy>0_;#vum|~IKWTh5;I}{B z8Q74ZkULpYp0lIE!Ah|ez-m;Z3Cu>F1lCBW@r7BfyEQHwtf3_ZuxSCL!I~7INeXH0 zWI_!y%8;5eo~DEulex!9Ln_6Hy|Td<6uRa~hBQ0Hco*XjAP&{Ru9NscEQf==_HD2#kwks32Ud$ni*(>RbVJrN}d zqA)r>k!QJx}XXRD+uK&IKg(9^nz1wWZDDO=)z>hwo6nfJ7o zTivHH+>gkWeZq~qPh>9f^U6Sak@|nM*P)e)tf=vaUkA1FAD$&9I9}HakRJUs4cPPH5#j{1(PJ+3+?$`&Kry zuZqdZf{k9%{UlieB_8Izn2wPR-fCGu%ddIy)Qp?#)t5^P6;h|V&Wm<(=Iex1?UyJ! zr{5N=KeFDB2yk1lvcY$-&PoWf#5ozOlq~@}Pei=nIL;4E{t9RmO)jmjwB9L(r|0347mBWr$Mhy-u$f9j|zrj>a1cX%>H}7k?h{h34~d z(AoAkU-P=KCj&Z8<*l6F{c7rhc_N?mP|-`&JD(mtgOVg5g4fesG9z#}#ZBAcJDM0e z(NZz8Ut*n!^GuC@ZLiQl0D$#kWPILG_ES3Xx6Qiabg#-@n$*((5NH}!63=Q?8>Meci zk&Y-YZtS)mcFpT^)iJ$Q3w+_|J|S+1OI01R!?-@A=Hl5KbG8FpUBD9D0{d8Z?rf8) zn&Z@%pbhQ#i95>Vbzkl?O+paDgx2AyE5|SG%L}8%yDahN^S_Na*piSjft83f$nI@MITK#*8@6I*p40qTDG>y<9eH9!)p$i=A(jLTaAb;# zLMx@`@oRDw?;h!?W!1Ph4nh9lzL?skEjBQENV2L%_o&y&aVyYyvgUjo4hwO>OD41s ztH$|9s1Ljazh5^-{r<^&V>ahhZiPe?lmxe3)Q4nGo#Aa;filmR+->K*Z+SIq9LLal+n0H z4H~x^swfoDq=3#yh*41E9t$E?)ToK#9weiTW0Y33w&K^cMWq&7tO$r(P(;+KxMQt~ z)@7z+6*ok!&j0;6=b6bQ1Z#io_rK-!%G~F3pZnbHoO|xM=Wgjl;k9RywYGgO$B}Jk zSn5^c?P6~v7}WirJ%VQZ7`%}vJjOqZ_-CQmZ~2NvR`AYkydRrrhL|RV)wjVl6{?a- z*8x;7D&Cg;xD74KM6&Lo6MT~V=7Uejt=mT_r%J+Vx)E)kD0}v7DP&AYcE2$fBT#-45{CT!=>Wt3JC7z;`aX#$Vu218Mto0}8a?JSC z!Yibd**~h*?{YM=7GbK7-O-%uPgD&mpxuodv|V2-K`eMP8+eD}*%!8n z@|aq_qj)NKy~=7`HNfVURx68usd}@Zqy&U3+8)gk4cvn}%q zJXs$RczzJs)BtzrBR-y?NaERArjvMeH!Ard1QFE!M>PJrt=D#91jS^UP67}y&(nA) zwtkPBY9ZSHXKKK7mjM)lV}ar6VtYaoykfmB?%4Rd>2tc*TlabuHXh2=dl#Z~osp%R zgL>J6pn`*;5TL5#Y~34=aE`bXnVR?+?D7a`QW1nhIvOh=9arnS{v1Eve++Za<6y|+ zBe~P0`j4#79VR7aCLYn8@KaT&GNb2oVRMaSSBIIeNVpM{5*~4UMAb(x@Wy0*mPn>ORfcTPJk3SD_N!gUbJ;KN94QxLS{!bWetK)9*VmYQ&QdvCuEK=f00)L9-b zN8jE0fR~v5_Prv}>B~5r`)|$fh?BL>m_GNeU9Ko-+QnicrY_$Pf8XyD&?g^9B%-x) zj0?Lj(F)+;T7gV>y4f%3yCf{i(j0p;_$DGHZSv1ZWUTli$}VEMX{zhZR1-Wb`P1O$ zO=zmFSg*V-*;8hXTvWnbMHRb_L{u~NmahiYiRLko8fKrWl&B>L!_KP2yz*;! zOzE8BAkw{wG>DIwiFBMrs{4^GQY*1U$xM8{Pu!2{%eKPU*!3)J7mD3t9ii6WSn`{V z9h@_q=UG(IabWr?Vli8)n6A7}*F^iMs-~tf+fFIR z*cq_>HqsP~)HBBgcCiPx{Z5Xhfaz=V&0puk6zP(DpNV13m|tAg@Y)Q%`pF*#)9bEMrD))Eo06h!a`#z znuR!p+m3NoBUFJ+EoQ=-lRIOzd3Yj#COytOaXcC&E0J#9RV@k9!TF`VnoU{CQ!6Cq z7{=DI+9^^N>R-k2PE)n}L)@2I$*-m((YXcuRw(J%V(%JVQWz_X18=K97pO_5AAUqCN+uj*$|qQTwDFP`O$z z>(y(qDlam96`A>%QzCT6IF=WE%{I!7Gt-_>Mn4Tb@SJ+2dIeU$*&q^NSEm-$z0`9r z0hUm9YYn5@3bm+r7weTuV?(jET8*GwRH-)gm%4$UNLzM?3ZZ?yP&%aVzKbN0_~a}} z(g!Lq%5~n%Ru3d>$c8t5owB{!6jd;Rhlf-kTUBh$elnvW>n<|k(Y&>|Xnf+%u8r@i z2Hv)X8_b~+lC`IJ<13@_l~RLa8Jhg-lGJB&mY!wZyk&>`-{7t^2BHylw@TN!vp;ZW z;IRg87Tki=F9HT%?2f`kqbzY-kBmXF?Sf`#WxYVCP`9x?+O5dV(g|o0oJn&efn+rL z@ng1MB=8*``0kBwC%1Q7zm^m=JM9-b=6iYaxR14tO@<>I4^P3yKth~)$?#en43&d% zt)#4)N%JYvErrzati-kDR=>B{Is2PaBR@%Q`Ftj`wof^ge4G4Xt|4xm6PLjXFx`0K z?qP&50BYNOy2Td^*bvQLPayx~%rR zikkR@%GBL(zU*JyipgaEVoD=D3Nu=e`5TY<)<&U4(}$P$YTipVP@?3^lssZ5&jQ)G zL_T#qvD!MdUz2mKOtb7zRjMMH-84QU5oy+XmHguw-OOxF7ioCW!n^;j?W=8Y(=XB1 zRn*sLF}AUlA<&`Q1dZ%0CIS+LGfxZz`W<9|bvskRx(_82uI2sML^*ri#3TG5a)*O- zgAxK&h2h{lR(&Mr6=PNiL@EXZz3J6FNTq7$Q6|~>=FTebkh^|OYP6hNvMSxqreRJj z71Qg$Tk&w$R{q=x*2?dc!-(LgC;FP4BImwg!P=33ML#a`l(_k9YpUnZGGnWw#N%&x z1RdqzeQydX@kTY&Ex2cWE2T+5raP7pQ0?;0rTHze%lM-d&bI#Z>r8mReLB|)M-vA| zwb2(r9Z6o@;_FHy;yRxlfUmSxxk2_d4e8vPc)PWeR`)^Bn_W%)fYyd^1OziaXtMLo zBDOuZz)j&!R5))wAvz_58fKMs#qUzt!Td*6(B)MoAKU^hf8o4xnQvH4UL0zjLa-&b z0Y!N49_j81k%gf}t>qso+>CkUw<(c$Yq_re(X!ElaakT3!K9cqS9npRrk5#D$?Wod zaU*Rt<wGn`D1Ym?j6_%umG^0E#}$m&Ss ziNa~e(VE%@o{M8@k(5DiJ|UEWXkzc|YPWR*;1ns^)1Zxwg>B8GjO5J+OWqp6TTQ78Aj#}3_<<3 z9>=EvbHu)tX)Y!YeKL5_u|(e%o{5v(^*C=vb##^b?1w=+s+Sz3Gas*O0k$vip#>vh zX-jl&b17%)Dr!;Ee1%x1)BLs=D9eQSK^4U_k#<)T#1#^n*g25#U5#+o5CS8daeY@K zoC&+#lmlJRqGXJo2%wdQnG&;{ZJ-Dj7s2k3)^@cZ$f^iTYkGuVZ5gh!Z)dx~TuVZ= zmx*)SxD9w<{Haa2S}}J&IJ@XGPlZ||1c)XMW%F!D6Zah+oV(r=%A{Xa{;YU{u;=HBR2BR8?bxUUs6K`~Icst7wn& zQT@~&6aC6NjdRs>ndjJ86p>b4f!HmJR}UE#zi@cuajih5q{q^=vPfO6*t0#vvOU|x ztXg!W(-t>N9b(&vU%h9xxZ8I(TimmI-2%$pPQ^aKwaP%Jh)|3zBcYJx2U+gln4D{6|@@+KZw1+02 zhOmJ%Vip(^q{*Z2(cT2YuGOHuX{=&`p=)61z|6#WJ%1Bcuu%Yr+#-`JXgm2I;|1mUXAkEr+E(;>Q;iAjC5OR+RTUMyZ|2y z*z}6>OB;VLdDD|>OA~`VV@ z3k_`IklyrVO@LfX99S=mH23q~?tL{WdzU(DEpeG+pM8;>wa6FD$Zuxg*W!NY78dlv z!25K(dtU!?6B3avnL2(W{HYltkjIe(8@!m_qOFBWkgC%!E}{dVSCvQWoXw>;HI-M@ zw6ST&=rzwKTQvyLHxk(MLkSPQoyh!X!}Iwj`Cf17q`v++GW~0I!OUahk)}Tz zq-ZrFzpQncs@0H1rflg1C*JkET4r{66|bdqX~T<@t}=7c-TX7!E+1n!;5WM_Hmeh$ z$+goj=&SkWGNv$hcKJ$Nz6ewc00~lW1yd8_+`t=imQF8VxN5y!6SX>^37F|<*CBd}YLvcppv&!#6&9ja` zX(-nLR;Gk!2Dn|gA}9^BJ{^X=G@3%ibbFdwC!-TA@-lIYJjBe=3>Y; z7ZnOu@lRFLo(UgV{5BKZ0unP0A!o+prty(fm67Ed*G;LO$x^%PRYv0Ikei*lhBqgh zKRd;68N;YL>za3g1@`M3u)uM$(IUr7Qn$ha+4G^)Rw^Whs1B7|^sh9rhfEwAK19#L1lz=}jLHCe`5kBE|aOxS`q zHnmLn4_l}c!iqC?6HDI1#}1?)O2zny`$AdkZi(@Uas0(3!+tVUJ=>#|9ZI`tMipdi z)0Q1m#UGupD(}AMpM-f^|1-{0dIC+k+?6a2Qzv$x51IL zs9b&d9aa9NnFt`va&KcA@mu2A1dw7XYVw)iY3#qiIk-)?&&IuFp_kMzqy?Wy+?R$8h1(@ z9DA+#*JylqnI~4I7x7FKUg=R^;8BNSTFPy^-tXmgR7Y*mQL18ED1)*NCwgx!QRwYu zUU>&EYvS{4pegg@O7O!pFbZ*MAEgb?>mqiR9cQf)Y(_*T?ECdJmM(W1B|ZT_Eh58$ z{C5BqDxl>+FFXVvI{3-(xQm82 zmr-bH3*?FFaH`hRvHy|HqX0Sv>^s?S@AU6s#~d>%m_GG zmho3Vmj27Ajw;MDF)IBb0lJ*ZVd0KFA-q z0Gg@?wS0n00&MvOmjzh)HWF3h0f}16m19{lN>b07t;st$&Pn=mnmSKs;nZk7a3J0s0^~XLj|jG`B_2xSDQ7?Dxp6*5B^p`(s_CAP~~-NIx@>yrS?CT z=#D_wjh2ZyBJp04_~}KdAOGK+rVFa-qEv@Xe+Dg$OskQpy;tCFsJ%zx^^D@bunj;` z4%B?Dq8I@TQ4OfKQ4OpxH@I@O{}Gt|qL}@vnM*ZuSE@$FEwa)m4yno;)-$HpKsRSF zIg#T>3SZiDdiVXIPZYrY>a(PyW4ddY+>`09j0y2dveI?u9}=nB`?I!v?t8%ucQo=Z z=$>fg@sCoaEHIWfDHfGfl??ARzHO}@y=}w}FPQOdj{#hzOjd0dpfc>ePL$q-y@PG?!M882CT`oFJUuy6LK@Ox~hdq9U&D z6VO4<4k&ld{85bQfdiVpbVCzZowx#Qd_pj8tVLIN}gS2p3z2- z<>NFxNY}A=(o?g+4_EL}>0N>}OzscE57Sd}uiIp3@|4quWS=bA&dzOfMX=d=FI&hK z_54+kd{Pgdy!CRc>;-lAY&OJl3t{Qs&!f`+{ha*i&#vdS`Y{*lxZ9v)`j>l!S}#M+ zO#kvI)RjF83R*7fze6atJx{#fV*1igrhi!xx~d--ovpebi^V!GnW!C5T)Sl`_R$^| zc&p;ta47b+gVN&KtwXVw9Bf-$yG?#Ml71s_7#V&GCQC!Q>+Gjf0v$&SSy&D|tU0k~t=UY4YL2>Oq zq1Yh~DvN9P4aJ5!_+fGFpipdY2m2S-?#Joo4h|@;jfP?~9n=)pjtRx4JE$$L9UF?B4`{jUa89$D!jrAP4yd7R- zq|F>AOP-Q9ydj<0?RjVpdda|V%#c6?NldHH=`h#VOWP<@>;71_q2++s3p$qwqN=C1 zj(gmJbKDXK z&T)4+aE@zt;2d|o1LwFa9XQ8b=)gH{iUa4klN~t69qGV1ZnOjExFHUlb+G zc(*zL4SKUC0F45sYN_^$HZG}Lf#g6ya+Z5LVY8`A>T)S;3R_$Pi;@a&)vHczFR9w3w z<_rfr7uS}BV%s{{wYYYdP;4^?1B+{EngtGaFRtA!6#JBvDaIbfwH2Y*dk*$0uH~@) zR~_tAT)THD_GbtC7T5kD6noggpyJxfQ0z|*_A9RC4FB643@)zavWS};99Ue-odO95 zLyK#NgkqOD7*<^SqfqP|2P2AWhlgSl9UNR-dk|X+98?$AR)u1RIT%@7`{Ph-goDw= zwWC6@N(YA)*B%mz?dl*}TpJ0+wsJ70xc0D6tgnNy#kDn|*gtm>oocZZd}2?BBdC%* zv8+heskXtrhh-(}(s#Q^)|dng3R{=Cz?ygx33-&n3}7J8)rlf&&+JhdXd#_hSbx>;^kT2RU$IH^_ktyK)CE?6w9V?E1q0JoO;#4tXvRcB9mD zjzUKpFp3G^QXaOKEGv_Ql2i~dktbOpP^C8}Kmc_Dk}599mX`6vU`O&NcZiV$l6{Oo zvhUc2q)#}-FOaJJgMPPvuuq9|1XmNoC@hcd=FTghW9}SV=@XwWkjNRrxIUWl=>%92{v$baJ2*PoL_L@o%3=B&ad}5aDJWV!1?u7 z2hOiQci{XQbKv|s)q(Tt84jFZPjcY=dV~Y#*HI3fUk`NP{JN(D=hqz^IKP%SaDMIW z!1;CUj#g~v*OUY2*S|V&etp(~^XnrHoL}#C;QTt*f%EIl4xC@Fb>RFu&4Kf4lLP11 z(*Ujxp2$-V{CefLUu4xm_*G~4vbkC6;3`DAbHc8B`;yzN9=L8>y%{{fcH2u){A9Jn zS&mg&=TaeAMUjPhy3pZGu4qZUyjLDeJiUVfXNe96&Jy=HaF)2;fwROf9XLx|5=Q?nfIMso(M7;xNi7^hGB@S}nEHTJ|vqZTAXNj#HI7<{eaF+OHdn=E##2N?A z5`S~xEb+1fXNe~qI7>X>z**vt4xA-^=o25`n0 z#8dvzF+1j4o;+r_9Zt|rH-U_}0J>@Hw^+SKoC!;M9~m0wg4Kalf>VJG;T^#%+gLR@ zai4VH#C_0#6L-D?C+=?@IB{=u;KYqPaN=I#z=?ad11IiJ95`{0a^S>`IB?<)bKtH1 z2M(OLJ3DaV4shVa-Nb5r-zoi%t@9|o+JRI01qV*)8TE!(q}kuN}uGwDSd68Pf^j{q~rJr@+lzzm4Q~F*9PU*Q0oYFTta7th6z$rb=fm6B(;FSI;Pd&)@ zaSL+tojzNly)?9N3bNVy{ja1av<;rLPnP-vUhOK{zucmL4F~V`s+z%$ll+y0fs|-t z1+ygk@RhK{i7q3ZCH@l5V~M97I7@UmaF)2ofwRQz4xA-^>A+dy8VAl2mpgElIM;!* z#HkLPCF&hGON?>gEOC$nXNf@$oF&Q~I7@8pz*(Z$fwROn1FUe)5^EedOZ?4&v&72| zoF$%c;4JZg180dpI&hZwjRR+i8yq-G%y8f=aj^quiL)FyOPm65mNfdNrIS{tBVL~8}=g#BEv({BDU(_-ev*eggATgLE4vj5IHlzEo* zD>)lu>!w(DY-z)X$@X(U)*2T@*sFPg^0SJ^NPM&o?+p4QjF5}*)GXQxx&4n~;%jUv z1DDaveEG;amC6@kdv2M>uRAz!el2m}{My@r^Xpn#2Qtw4HRZth^{)<`U!Qg0{Q8Ik z=hu53IKR$y;QV^C1LxOk9XP*EbKv~i>wXTLUw3oh z{JM<;=huD?oL@8jt=P`5pEz)Seb<5W>naD%uTME}etpP+^XuIJ=hr)U>RA(cdcS;4 zWC!(G|4I{iCSMqh^#r%F8Hy?gPTc(*IB|D#;Kbd=ffKi%11D~##LDl){ltM2_gx20 z+*J;oxKBB7;y&cSiF>yLC+-{vPTXHOaN=I=z=?aQ11D~y11IhT2Tt6h9XN5L4xG5d z9XN6Kb>PI^#eowy?7)dz2yo&)$x{#g)2FXW_Rx!j z79o2yB;6vkXiE9El0Mu_%{8>K5R}v=Hj^!^Kp>YnJhYoSzJT%mS z^U&T7oQHOD;5@X21LvVa2hKz5SguPQI1i;AI1jzyz+0PUCC3vfS~WtEY}~)105&Vf3>Saphu(sa_g9@JNu%`=1lyZ{S~5QzCH+g zG!&v6wC>va#@;KtC`7SJhSA+wh(jm7W0uQKNJ;&LmC96>v(iHjoR#i&;H)&qfwR&t z95^do?Z8>-QU}gTjSifZCOB|bI@*D=Qq+O7(r^dPO8Yu+R@%jZvr^cBvr>@*XQi)M zluLP>l|FRftn`)xXQdY%I4eEwz*%XD181eX95^erJ8)LI-hs2yl@6ShE_C3mG{u3l z(#Z~-m5y}atTYmc*bHqyHHDOw#z2>sg@8NS;W)YE(8FEb+P5%nX2Fdph!{?WU%gIVedl_Ewbo7eK2_vx z&^f88*vR0Vq+1(uLg_dM&Pih(I44y(a8BCKfpgMs4xE#=ap0WP&w+DNrmv;rob-tU z=cIQXI47-g;GFc71LvfN95^T4?Z7!{jsxeUUpR11y4rzr(xncZlNud3CrxnRoOHAU z=cK3u=cM5doRju-;GDFJ1Lvf$1Lve72hK@f7iBr=W1ezD?D2Q4N43~7v>Rl~Aa($| zO!?zeU5D7GQn}rR*s~vCJaxT~^qkUHlMKXlN?+>0Wk#a|r}P8|PU)i^IHjWwoYKP` zIHmV>;FR9Qfm1r{z$sniz$yLpCYBwi^oI_d(r-C%O26p9DgC$ur}PpBPU*WGIHlVi zIHj+5;FP}7fm8ZI2TtiJ4xG{_J8()L>A)#H+JRGghy$neUJjhnJ34Sm_XoJl*o3DX zrS~*rN>);EYa+&!I~W{jr)+!-gACn+!e!?hTRk}qmpgD8-siw+IM0F8@Ky&-!=F2F z8pa$r4W~MA8lK_6X?T(Yr=hM2f^nRNqZ~L54|L!(+|z;6a0drY!x9Hh!`=>@hHEJz zQ9BJ&4xEO6b>K97)`8Pd=Xvst)9_vgPQ$qloQ5|$a2j6gz-c(mfzzBc6%%QPP@HNN4l6U@Wta@+wEP{MYneQ&SKi_YYdiJF58+( z`j`6XsT9_DiYJQg1lHPofD`y`2TtHQ4xGThaNq>ieOG+r1isXP6S&cV6L^9HC-Bh@ zoWM~BPT=7VoWT1!a02h*zzH07-~=vm-~`qpf3o8Q{?LIF_$>!c;1?Y@fpsA#-#CGn zIB){r<-iGSdy*E`I)ShEH%{Oy9XNq6bl?P@0)W6w)&7L19tgbG;y_1qO>h@A<+i~) zXg`k8cDv}BSmeOhTiofu z*IV4;z}H)7s}xcDdW-1}e7(i_4t%}E=?;9o#R(34y~W`Ue7(hw9r${S!47=Ag_awW zj<2`SK^_2KZ?U-pUvJUNfv>mtjIkHNe7(i{4t%}EUmW;)i>DpVG`@wkPRzeMaALmhz=^riffMsl2Tsg|4xE_3bKu0B z?ZAn7odYN46%Itq<_k$(glul)K}2jmjRz61`6M1hyyl~L5aF6@co5N=NAe(oHUEeQ z5sQO?7S@VT+-142Rzzyvi3bs=c`F`7oaW7VFv7HsQ@uZ4MFWvrfI!u$?OIftw^m$= zazmG``PO=_Zy_`%Pc(A!L_w4wM>GG%9{x$*A}l z14hLsl*Z54K6N3RW+3*(b|8Z$s-us5ZdOg(4HzNM!P2c~tB>#*WCq{fzo%@p7BZ$6bz3A0;E&7IR^fb~SdWOu*8t8nB zN*(G!%k8{eAWLf^B*SBhQp-7W(}*722%n|>qp+$rOx97otebpG>)>tXq7sk1L%NER zr{1DoJ%8px%$J+F(ENnYT-?ssP3&You#@aPIq_rUZ&$9^ogp_jd7&I=@(Oojjur8U=ripW5xXAvrDI1Z-a5|)qBY=cx6JTnPsx9`HK1!h2~gtwWMW#+KJ2D z1dF3bbEZZxIT2R_pt)IoIPmI69Im4h%q4%>*$W)_WFX0l+ZK1f zl^k++Pm8;gXiEQf3e41`zR{>wO*$9}{T(cRZ6T*_G4p5fXCpPhuXP&s*kH^GBh`qJ z#=}T(Qys7T7Z09!=PSy~w4$77F%HsNquMR6BWFuf6S>?ln`YNG(v^vOOzpdRp9sBA zBtEV*wb6H{U=dS-8kJzYPIKZyDI(^79Ia+dl^R85UbohHPU3_z&PuFE{aU;3;mZc; zwMeFRirKjZYQRbwM_b{ytJ%B+TdxtHvh{o&E@mlSnMrAuztD#Hy^tg((^S`abA5rW zw2BY)rb04SZArk+|5wWqi0IAC0N4Tf?E$c35#|TL4#@8Sh-Y0y`4Vi`zyB)Lj5kWp z+F_+Vu$HkvVwj?owA*Sfa_$TcG^PpkSpDqaif zOV6Bf4#MmlmGl%IPB8-RECOhoOOV}&>!=k+5nsyV{Lo3-%h+9zr6Fb@yo(D*5?;iiuAxQUqA8x3VxXJSjxTgZ5^cMSHIB>4 ziZ#y9;juxquD8dYyJKF_Yx28ZqVay^K9ex>vrd_o*XcLGtxbx4A`cU-80BKB{l!$H z#8l&9TmHw5f^GK~+m`3p_PnA=aaQ!k$89kwe#W+R&f81F*o~B=>7q;dX4!5vy^DOIuqg-Y0?A%W6r6$7QJ-5j!l?36LcL5awd>m4AjC7Bx zoc*0k8FJlvSJ66-)-i^biAb&e^nXcn+S1gTk3R99+S@B<@u*k~2PEPoJnPhssezTa za7?aR3DSX=Rnb&^Fh7gz5{X98h6YM}gV5l&hl*D6ofWOb^R{78?cQmohAP*c-L-n~ zVbf^34At&_>o6ABtg>~V$;RC@ zi=12W9Ggvu?qULFtb`fM#B;ivi<*PBtc+i7(fOc=bH87jrX!*vL*T7g#hWz+cOU)bd9yI@t`Ot|tHd9W!Z8{+I&`63VR zw0s(NjHfuG@0F!*7xjHIwD20sVrb!la^-62dqsVpk*9LA^sSPElp=1~lGQk79pz)bkiRnz=X9nq>L{(zmd?!BUs1}&n&sy&!bs|O^1be&pdmtk6K zf)^4vCe{9Hw`WkW z)HJ^4q73@Dqc~{CnRn#f!N4=Her!Ztem~}&P{hGSO?@$aa4rozW|y$Mi@Iw?8;6gI zwh=|^Mliw;<}IQv_0B(3@WEU4$!2H4d}SxM%{2BD*-@vJ*W=QLX-Z?uXu+o3cvEUN z(}1K`N`}r2R#NusoNlDgBk`j;Ki|_>BVVf3#NSH3HV38fTgkw-!57%M0(nEiPLZRE>7P75l0uL&r}Llqj@QuotMH|pNQ|(G=76Dvf+Y~ z0Ehnj3c*15WWuN4uL37irIe2myp7QHGFyCTdk8^vrNkHdNv1yhJ2inw4(bOo43-cY~B3Dhb9gnz61Pa2w=uC|ZkLj;lTOiRWzH zquHtovNi2J&ll#`e=lD*{n_$$u;;6Bcz(XFUPiuh_hE@TE3Ghv+o~|s0m2qJ%nCUQ zaTkpouYO3RCxfL>^-Ev_UVWkwB&P{9AeZWUHC2fclQle@spxcmVOE9L;YKL#vg`0v zsY49Qlu$*ajm<%s@Qi1t6%2Y!pkF3@&kN!W9Wt$K9sg)19Dhnak7vTGByni&H(3J9 zGvUh@D+{f*vR4sWih3*cbFR6weEIJlvK;Lp8xlDvOJB*kOp4W$tRhLc7{GNN*WW`E z4u^T03E#0Wzp6qzjVdS@7n%M+mG11|W`p^cV%D<@DO7gY){oaN(inw)tlM=OZ~@I{ zBW`<%a~033$n<4Z$3NQjJdOx_U>k?O#gud2-#9E~VZp<7bW;z(*W~B4`^d9S*n!yz zxGd7PSnGvq;`43Ukg7DA*ko+t0@@Mx$wi*zSf^oJTRfZKk;KSGGl91L0)*`{_G?9w z_yI3C*A3PWl}v9TnMlGMjZ#Y@v48M2o;o(TtOhH>3hXsC)Kq0n+e9qgtmD?^WJKTf zbYOOVBehuIIaIB1kTUsQqzvewLOhUZIu!ZQhd7{+c*ve8wZsd;!E{{6rUTRzE$`0Z zOOB~YPTa@zjpUzyfJn_e-TVthZrd2jEQP32$fb95UV5S{x5Chdl82L~Sk@p{Dt}D^ zFInl{k4%5OXh{{7nF&7un?>U~^;}m-i6(i|S&C?g%y3f)+i8Bg!B}&|%~xByyW=TN zFlsAY`ShiE*U@jWl&<(mRdCyg&1smNKlpomv^pK1Wk0^GAiW6>FYu5F|KmtmD4B_*DzSu)Lx)ZrjXijzLaC^k@EVk^^aN#6mDridHR{0HMy!onCO7g- z?$sreXQEoCX_q4=l8sc8O{I-k^Jg92vyooubn>?heu_#PoKF5l@&Krl-X#-0pT?8k zTHQt4;Ggf0P?VPbFTG@O>8RJb+?1ES<6MN~vS%V! z4?-n=n!FDgqP<8}i9Y3o?M)=rgdde9yitb3Fr`pLj8@$H4F^Z=qc-%{Vq6g!x}urp z%rWnXrQ}CQn@GYotPXx*klNvhd#4q!Go^~7Id-HmpjmMr|9LN#Lu)Xs3~wTwdbFM;c+XT*bkctVasDm_t$>MnSy(i7j9RILkDc_mg7%DmysVe;}<4{rmRe9u?0OKEqT70 zLL@PBogB0b_1DQAzUiY$Ha!3WaJ9tERWx~f%({}Qhx<$1uP0A?Xl9|L{lJ9c# z2g|86-6NYm$>``w^bkMf21A8ZmJ06TVB#@9tBsabOXagaARR+zXRn-9C_X4t97;3W z{8hk8)ms&w#KyEXnNX;9b6uDyKnGaG)B8+#Gb}z>yp+j4nec%$KEGo?1d)QQ%Sct& zGs#A}FXyt+iP;JJ$n_|KTQMaSV;psC4S^zwR&H{WhbJW+Pyr;*RI{|1S&X2AOwQLE zBv`w-Oef){PNHd{hmlf{t#+m!q@O)d-oks*`JI%ra|w_M_qi*-_u#zc4fF3gCCb)+ zz`vD4a{T)_qQv<3JJS0#TZR6k^g1|4I%qGk?~&d)2mXiY)pe#9&ZgI;KX$^ZnSR*e z&2%mVQ8N`Gy_sH&RHBj@V9qwOiiWg*pRY`wxLS>MeD>mwapK#C?8KN_?$n^=YWP6& zZIJMxISkiD#X1?%5Ls8zPI(JGJS;pG-WpNpNzYTQR-R zDUHOR`oq8(TLu%)pm#zD)p6OH$yZu^^048V%-F<(jl3S4xNRy>|8#Fbv! z$J=z|Mg`I7kC)aA{igXT?u2f;v`FH%E_p_ZUDpDZ<=Z zr0wFVxy(Nng(QiK8)_00CU+;-g>+k;cS-O4NByoHd16U25g7S4q z?{Ed-Wz$5XdY5Gh1sw8+w>n?-s(5*hSyWNAl9WYEgU(&c55UQb4P zE$3DL$e`!&4@Z_hQWhDsCNk*T$h1!~hy;DkSNb^kQlIfPU+Ocy4!-0oef%GX?~Ggd ziN9?59P~_N5GlRPUdwM0tf-`!n$VBestP1dbs^HmnefEhy<4t9|9m8?EvR3}Q|?g^ zI182Q7@x&nA+W2>NTl_gJLkV?^K8tSaEM4D3HLWL>^0p>2}-57MaiL3NQID8u9QBp z7$ALOg}K3r#(OY>9CQzT%2RKDDIMZ)*-PL;GJArl6P(M=H{9FsYv~S^yv~FlnUk+U zbm{LV%d~;5hjlggd4E?&N!8!g<9dIWKp7!pebnD|5V<%Jy%4c4!v>Xl~VViffFEz}B1j|@PJPPD=Cq^CZi)z2|6ZY(Zr zrV-7tSuYKekkDCE2lub&Yq)cWj4W7tv|jOFB>gNwlygm!QRegmUgn0N%#(39u^@%- zEj+&9unGOzx%xQsmh|7%d}4+MBjZ&VHbh1dDAG2|CcfztGU0`H&`DoUJT{2ag1Qb1 zLY3LjX5l<1w?53CP_Nr@R)JB&6}VUPQ1QTO9>oJ|G=(oOspHmVCKlM7zZ!tDgR$h)T{YT#*0`PdrcC&szwz%B zUPYsRn$%~RfoE$BIciJN%wHg2s!<6h4k=LqRac>sjnlj1VMBs-?hz`fh0l&=I&GF~ z{VbO1_kTf&7s@*E3ioeu4;mQEF2e>T2(uefEB)}~JE-;M2SE`*zBsH! z?moLNT8#j(Qr}|Cs#1NDaT`?nO)XZJ$^NH_`QbGp7jqZuTi^oce3RY5-GUcPCqlzcBz#>If z;u34&d-qF3!9YA0@9QnJp485=rCs5}|G)5w5_rV_D#^ zVZ}x^FpX436PFc5hJMjhoC(jTz}yZxo&(cg$A$^DwC-9|f(TlC-8T5Hon+*s)&`jL zumI}FMo>S&qAI&Q(DVs!x72vKXMh7PZ+KJWzy#_H&7=W~E-{CR}A!YoOcZ zr$R_VD|{y00yin!)_t%#aAc+W5h`tDnI2SgNQ99^sR!xI-7J%c!0>@35;J{peSC<{ zvr$sCK}~|nWXP6${ut~+Gu=M3LWyhA!;@A3IvWSc`18612y4+=$lj~TZs+bwM_Uo2 z+yobi8Z93rPAZ#AqaNqRj!`tD(89>Ub~9usFKZ?BTs_>wg^)7q(Ima*WC!|jwfb4N zA<$RoMK4`u7~G^pBbbYq_8q9|yA}C9Wr@j|Cn9lf?;9Ch7$Vb5sKTyE9a*APJzCvk zjrK%(SD&R))!0;`=3SxuNPF{Ua=$}030k20Fx5KdlR#(dDB+|0*6|1RE>vo%T1QE8 z>qo40lm@M%F55aFtERA+S*q%(brg_>x(Ql<%zSh}^~n!bI&sP%PH8}#3Pm$S(Xgzv z^Xl|`;@nIAqHX8HY;Gxvw2dcUCnqyHa7XM}*xXN*Ee;*@MEYpyDP<%trqJua21diU zn1;Xi#6fTGBI0&o+|a!s3&BykG72x*T=`qEX~or%@?1DhX)RmDD{pAW7wDLNr1uBzOI1aB{2c?M#gHmjG#}2!tv~ z{fZwcM4ah3#f-V($9;BD;^iR)L7x}rYPN1uaOA#`qmLXPJtR6Z5-)nZYLk)G<3~%b z*Xsj`+y9jFMSmX~_x>h#hn+Qx@m)zy`Zx|f_hD22AN>zwJa^Ta>BEcZSWNek1ahb>ln(?Bl17(^)dw2H^B(w zmt@pG@61=1QJFZV5+%v_XGo}mL}=6)v^8{-=BJgxbz0okAi3kUfEJzH`a}^vdjLF| zo>D?kbXbZgdlX7|Wq?Zqyc%qL&_%Kb-&F+nX~7N(w;nrO^ouMzh%&i;I}r0H*xNUg zHP!jEC-j$ryq~Fh7By|U_!2Z>n);CBiBCBlr_$6Ldo{5p+r^!9w3*6{0(q3TUI@{H|YU{kh`1Wmb@$ufSzMJ@6 z8&p@?bxLDn^Mh~9R-LLLCy4FcuJ-QD_Cv(QypxmS9^hXQaLi=eXRTlBYZTlE_}cT*1|Th4vF99f(AX2 znyf%np&(k?(|1Wr!?q_imz@IgOWo0BK#Vw}G{JzFPVju>g{qr*vA0c1+;tO5{vaQ+ zNo8Zawxf^NP=-OBgSGLrNty*(9o=Toce;|J5lS6d%JC4m%CH0@pfUgr0%ZZ9eYM(n zO?Ip*DT4*P@o7?k_(qMG9w*!0)Kddg(b-!HrL(TGl0V=#mr^@we91G9^_HqCQ@$GI z(lXn5Y55HB`~ZtTvMsqQg9YEvN-Zp{v_s$Ib^OLoFJ7NzHStgPR=UvMzL~sz#QO5~ zJNfP2$N#(h_FzH`(8+H%-1q(YZNl&K_$@HNwB7cd{I>D0y7AixTHXI2`R$vd|8M5E zi9h=;emlh8zL`8=SQmZ^^h-4~?h5bTCqy4}17Xl79GGj*-TDO9VRX4Cp1bV1c%3*4 zQcL)WB-n{4X`h_&sjGsGfht%nNu`!(GKi`ACIUTrlsItWzv%H7>#Ou2X^m4O$ln&A zU5>hao2(Pdr2qJm4}4w!L9!0&h{iY81@>M0cnWYx2|u-ERunU744A2bwah1~old0- z^H#oY<#A^uMr8n~*>;MeiYdXhw&|ug zf0119sE9Jl%!G6}de^JTERPL5s>5kCm+=U$;!sBbvZ_Oiu9{COlK`6w z{7FdzO3B=!1%T?rRri{o8`Ts>I<7wGC-6Yw}{GyC*RR*~5f&^dv<5Zh4*7Mi%1%3-~dY+5P`dLK`uFf~^*Z&Yf| z2D>FM6rhxxsB+rD>chNuqx%f7DU#XBgQiZ~SpjWl8*M|}pOJ))vYV>U3t>0apkMJV z##O!=sD(otdAe?O5TZA{z<%fqVj^J0##ht-|>GXj0KWKiIdacr8P#HZ} z+n3nb&82L(&6|yizyBbWRFKjPm3F$nfg4R+P(LVhUp3c<6yi_%uScTgX7B&r+Rgbd;d{|s%aWBzf1)1J6;<#+30w1 zbow&w1shc;u~SpXyZ++~dDs7h!hd& zh;Jt8^O3L;D2E{*j4 zOZC$CN}_$2oBi8--zu%?`*GEb2g(OXBEhgu1V$zdkA$5V805j$y7^2(r@>qp)La-; zE_|d}BQd6I&|=i7=FTpk5qvN1QMj7|+#cY$U~4d7V;_63p_q-~_6S-fOLVMhEJ9-F z1l9r*q}P;hgd4)MpFE4rb5?mjdD5uVI+bU&SLt|-=3;!rRg1MoisIN#g)W)P4|egN zA>b*#*jm|H8Dy^`z^jzKg`>(hrOm7k-icooHW^^G0Aah%m$1czU8i^Pd4AbE@!w=L z#3d_g1CkHYZRZAAQ`W6Fy8%Uto4kaXLwlRgRI;JK!2Hl!-dBKPZe#AO@;%I*9hlk~ z%gV57BWbq8jViyK?E~$^(@W&|wIYOUcbhw_e5tv9!>rU|9s!h_jDvj6}b_PP9^B5$NY%iWatU#F|h=3BV&HFz)f4~*iFi0!aukg zzLIHc6xp?f^MwQ2kLRgRc~qmgLCPI#se=l_a;BQmpNd>zbtAz%Ad-+(=8QG6!nG?M(o`GZ z6MOE!)t@4>E>IPrK^>%>=~=xVH+e42k-61WMkLl&U+&Jv+Of=^aJU zq02(CUlPmxipgly#1LC^O<6+L#xN&6+_aO2%FO5H7(RQtPl@@&<-^QP zwq=DIu2rIJFSzbXnTc&E^G>Msc|x11m?4Z6sgm5L9>CY;H3?=ji5pGFS9x=fE-F86cH4vP`kh+)m6YB5~U658gDI_mqbg7l*SNr##!VT+`R?u7)e+kgkYC+Sc zicj{oD}2DV!`|BRaX6o5=U8p+h`=QxKiyPF@Fe7CVb9ik}60v{FvG^v(YW&z&Bw<@+a@EH19W)=kJw2e$Vca z3&!qszE_RGw$>9S?)A}oDa^^_4HJ$qyK-8ooK~T0ZfMYcA&i(POgzmr^g6Dxy$D#- zHsU;RG;wey{L^2u)jDyoPGDmMIQYmtgGuZqXHpRM$swzQ>FXQ$QVY;952F8yAeOhH zYNc_}d%KCDA$jV%vb&J8 zO!!FNQ}%{lO=l?f$%>W9$(V(c@b_x0HE+BSPKW1GW%-&=BK ze0g24UG!5_6q6M!wpD|)x?L;QWmipKvw9>!aBp%|Mfd%+64}9Q1H6(yEB?Ws+>ohE z(h<+V>D9yuMp+K%HY?uqJW~1`BY(8FPc}x92fX7m26eDiq*wDm)e2S!Th=ok=3&~0 zIbE31CXlQX=`saFQ}JyKO#LvX?>2ogrnf2Vzl{GILd#?}9u?Xv-X?YVs(VsEg2mv?WU8VB|;A3F9A-p>cN z?|*wf^fubsL$UyP*@NlOV{ZFg>r^y`_U#f+! z)1d?G-J8iiyNYM3g8gtgdEV1{t8MP;q8okR^;Qp2RS$brX$JHKCb0jr1y|2)C&}tV zn*a3$S07xEt;6np!t?g#&Ez9H!*l;?{{8je|8MZy}##=GeP8le5YKehbzsw8I@i`()*q#sFxyrOCVQ^!ge?55nSg)5ELWHi&lHuz`v8 z^l{R|$F^NYR5j%xt@kadP8?k}{j1*1hg;{_hRqk{R+e2mB}prD|Md!;_nWf?Q+9)f zG`*wBCNGpqnam|jzL>4W3V~LvB@WG>dspG*2(?~-omxsuepz%DFwts1VvD(C$u#KH zF@(0`PFQ3%!Se8Ca@vuHpkHkOKAVDT2VqnyfTmO2Ebtm*%!TQ%Tg;d2-IYb(!>Gn4M;~uVw3lfoj6Cu{GlqoZL>MoSj{YoH3(h5bly;Ss(oKb(%Yfcc@1xpN8@c;H*@*yZ7>rt41LHA` zNuY%o^u|}%0jzD`GsOnkg?R${N$UQwu0$wut>6dejM=X&zfY1%7i~Y+YLKg zX&lLDdGmCbC*y|O8_AD`z_;)qRkdwfI?dc+K*+N$`=4$iQ}LIAWy@`aU$%;2y~7uW z%7);Zpsplogl@m--xP+f($yvLBn z_mZLJlKs_Sg3yQuzcJ0KBNP4{f>Be++up*UcC5rcG-y4C66wn_g0q@9)Y>2q&ztZ4 zXUpt;Ff$~dewq#D$YN|Of~!NScV1$}dj7(8mO19F>`HAz;F`7xw8S}Ga!90}ls46F z{u7hYD*p+{3ANUGSsO}o3mJ5f1~Zq;cP?x#U#2({gJ-mI=-7{J!*VEgAKyh2n3#DN z9d?79P;8EQ-rFd@M0TIc-3SN7RqQIgr2f1UxK~bc@Yd=BLak@mhs>f38%;DPf=t3a zLZ*X$04*Y#IEoHoY-#e=+t+1$4~NYdQKPGa(m`o9_5d>Bucih(`sJB6aK)&0jO2Mm zZo!)5TyDWymJcu^1g7k)^lDcy*mb^K@-LhTZ-=#(-8-pEI24ZqH~JSe^`nYTmC>~U zFP<-)#PfKbqfodg+SXi@yzv$9aV~+zOgC-s`?{Lb08)z6;$~PAI17MI+`S_mvZheJUUlFLqx!q1fx@OZJxV zpiIaO#g+>N+0!^tZ{&tz^Z2!BGjgg0GxVtR?H);l6T0v7csrm%6W< zP;7kG_YwD%6N(+guj;gnIxS27@TqT&g(?Ey27DWm{n&&g#@a%@u%c3pChnEPj6$gO za}iTb@M9jt$1@aQ*bQ<*vA-IL*P%~{ai0NM>1Ohha>xnAG&PlafgenA#aAMs+QJ8a z!9h)&)&P6FBSyH^-qLWjdKNXtH_g=P^SqrY^aNG%q9>>{*E=pm^06^RdyUD9C51$0 z!uJS-jI~n&t683oG0Tk6Eu<--Q~5e}a|HHYsW-pUhMf^#q;>Gp5$8zQQ|P8Li|4JM z2H!>a&ZPOX_@sW%H>$Clh@KjgqdA!U_2J{Hsdl{>c7vSeg_-d4s3WnC=6O~_bMd5x z(UC1}h*GIKLG@2OAjPI8lHSNH1k)~3SuL?p{CGVkQ5}{52OTRPV@*Z1dzsPAFDxp7+XZuOi6Jga=s$L$OVGX_>6Tn@q}S zR-;|{6N;UpYvg$jHr*8U$2mIQ)!l!(YH3Z{dO>x0cLp9mq>7vNq2AEwIsXt}Y#Hh8 z)7xgkJITCAzGoUM#81^uw@uCD_&DdioaHYYD2?s8>qV{G_}4s`eB-NZCoeN}BmUMe z$(7om_uZznQxm?Xbm7}CQQUt1T`L9A@FWwin2hg+&oeoK_=2I1q@zzNGxE^WklaA1 zN>8ji*2E`IWqP7ZWpI>iU?wLr-Ol3~NCxbDh%WvATxyy@q0Nlb(`q<_4>=t?`ZKgo zYD#6&h^8Sqp^XuZd-Q4^u6kK#`P06>)?j04u;G-xT77U&TbO>U9)vMTLpJhE_%C$H zYkjtWKJ^y_&}63i04e6GbZtJHtbTb`N6oOo8&PYaSxbwSHWec0)4nxm2Q%<&_Qs1$ z7q=CbOEC#@Uwz+C6ot-Pcsu!n<1`fa#B$l*L)L1_AiY}l>@oo>0KhakmDE;AXoXLa zv4d7i*w90ps`K`pn!&q*<0nFU%r0*azGJ#1JLdE;sH%WnUp_CY;?5<2Pag zcO9lT=lq<r$V(E)ChYv1nAXO0nog8Z0aS;sn2a_ z1iDpZ>1tLA>|Yg}Zo)8b`MGMU3(DISlmcyOH4~v?7vn?w<9+8gu@)M>b}A`}!sZLb z5SBHHEvc%hF>6pLEza<+p`Np;+rz|~IfiYW15$;#bjTk5796~WRA^L;kiWrP9~Iok zb3yuSZLBY)9;F*8FTuDCBgAe~oC`V#C%tg(9zF4`N7l)@KK|(BULW9jV)c>qQ;#A$?W{p9dfxISrlmPpGjF@!Vzm`!i{@_DX^;Qk zl&2*h=H%&1s37ah(}<)SGu;e6A|f$=c_yMGK605VmaIX0P>^K5875Zc7l_q0`pULT zXXR9|kqNQ7ns+^k)jb%FivJa*hC-Hvwk==EkPJ?@=tHerE7*g?p}!V=(7}TiGm59Z z(-^jzLPCPdNZZ&=a`u3B3&)01oxU_*VCafaOs8GutS7`~QVap40Ee~p`3FuxO|N9M zt#A=}jEDw8AnZ%hhafavrLW|`ZFL@jm( zuCm8ur1P_chBq?gx#BE~W*$TTnxwzn5I8#h8wOY3SUp`HK@uj5xz7~Qn|@cZVOR({ z0@lH_D+zE1t|Y&eTOvxB)Kngch>D;M3nwqWw@*RpIQfvtY{)gFr*_#v2<3NmfL8_B z+8^(e0d5K2uM62?vSwuLmh zNYqUD0!C(8KQw)yU+0Iv+*OAsl2rK|L%A?o|O;Jx%ob&(=OK=kbS)S`FOxSBSn^^Wg5 zty5Zmv{iKJI~<_3|2x@JvNGYzrl@CN1XJMW7?pLVCMAKaDXEmsT2Tz=caI@`l2)Or zTErL5A1oCECnwy~XFX;yfzP>>3`j+tlH@br78-R}UDeUVz(m3`zq8AP|9XaU=tZS9 z9Id3N8D&c>Iz%-AQB^}@+6G)6X&dmI4Chm`rvj)zYC3AiGjVI$CTc;$98(%1ZDI_X zjxBM(RDlG!UY#W$sjhA8e+N;U5CpEYa@L37OXOA- zJ8+dnWmQ?StOiL5ua-YpSy)Uq3&zIZOOG5q=pB(^wQ3Mus4TOI1i z5uEv4q|4=FYSd$gz8{J`%D3LCZ)BfhFxPS(3!u(G{+&^(Vyk$v*;;XRZUh%>dgrdb zs$1vYq4;btjKbfgXJ;9UmU~o535J#r_(>{lgEw31-Fjuvt=FPwsfbg_qO`{u=5k)2 zTs!MS{kw0xv@ZU@FEtP@-0F3tK1^mUhMqz>;S;lys~U^=4~*cdO;r5Wzp9_WaH#W# ztkU2xeLg6YyyWOL8Qa&u5c>qeaW2a#47$`Eg-WW5q~F1V#+BJds=nrDyg)KOs*hemrnCO^bzAka=+$y2aur=H@8bC{2n5P39pkEfB}A7`F!>K|=8 zJA$xDUj9}gqUEFX-x02%R*9$X0yYzVO~MkT@1EXTY4~ovMV!~a=f}5iUVJ@?`|EOo z_g!h19B_RD@nOIASWPaBQ`QmAQC!W)z z8f~$W<4SO<;nm-<0+U|fmCk-#+=iRYV3|gI8D}%Q8#U89-%R~Rk&)JXB4SDoU5irjP^O%#1e&?Cv1p~u-Q%lr$hRsQ zKdVl`R1kU8kB*-;Ssp5kJf?^iDvZEXMO{`sL2n#BJ_-Mhd?SzLeI zi4chw+<>k|s}eQTP;a4?3JMwoaU(&aqN1Y4JGNd@O%yB2VuB`Jwx)`TmDX6bqQ$?c zsGz993m5AJt5v*Iu(h~rP^mZY#=hU*ndjMkHk&}ifB*0M^3lxB^UO1I=FGXxnKLs* z6BdFdcI~rukf!DNifr zOn5_wnxZF%msK`j#IYW3Wc8pzpG5e?&=K{DjpO0Y!I!H}{X*k!Bp$FGQ`B3?U%a3Ad z(s{jjIjTmPCElBAWkj^9bB3kaw^Z}RsTKUm4j|vWviU0RKVr+UDoXeIUtc)YYD^0$ zs2_W?Ie-ycaKwJqtR{z%%Wxj@tjl*dC_(L$s6B=OfLKDSeB-F;xk z9b;a0Hg`z31?;t#gojK7QZuRmOt4>J@Wb=>oE6ebH>8Xm2-m2>ND z;-3o?`b3x84`jXEy=nJ%UC5G5w9I$+0T#Bi{gdhj-S&#N6u9 z)+T=R4Hu<_$55a7hyI)XsOZ~}g!Atoc9z$ke?Es!JWdjZV$o`yr^h{T$lH6sSz)Mgl-}sLu4WwdLee-5lw9}24i{E@ z*L_N^dr)--#WYmq_T85{r1)-b(?u`oNkRQDMAn1(DRz>`m8NK;Eg45PVNhozJZ#YZ z`h_lo1%4NtJvB;6^`|7WXG4oM_LwORu6cx%v))hAoUe@*RGAvj%=vCS-dTaniN8!t z*v#Pk>Z+YgaUfT`^u5h;eoo*3jz?}|O z){h)aL^ye{38v7a(@J->`lppv*z@V7)t1gIt+DjZ(ppO!OQTBB*9Hghw2+s#S8&Qq z{R8=?#?re;&H?;Clg0{u@_Ssy>w1iYo@Q$JrjCWYBJo|ej*jSizMK>rwBkNMhk8{t_x0n);f`$HKLG=?!Ki#*nAN z$BkF{nZ}J@x3Z?v6Q~4YW~ld=0xKCC)c1om?-fIQKb_2?**U@ z76i7EM=i5j3Q=^i%Z%I4XcWF@)=Dbo?#M8885R|4@f!ME06J z*^(D&RcxO=R7Ul~Q-7y!{f!m;&qLH7>wP~-EIgmTMh<^auVdlc^)j0rMxCVcjvT;% z(2`$&@FtSOL;1i4(VyKd-~k9=?e~Yv>GBPRXOy0oE$$1)X%KV9A4q zg{361@T>eaEPTC%Vc~JT%*H~6CN+|})RV@7(VP<`SbDrMOOLc`nv+;7Olr~~PwZeI zIn_aOnn7}&56RydamM55Tu2^~gQO!Q=Wfb)07)dq#*9?>L+rMPxc&mmVFf?ccM($J z!^a3jAyD#sBDRus{1MPhx(k**ARu}_PZA5i#$V89r)Yz0C8+gY#@Iq5xaF7klh3pI<6WJL}dbq7@ zSigyM4s?L_PjM8WHQ89RAS2K)8k(RF{nPIjepAeT&j>tk4g8)JC^N@<{!o4pwH1lo zui>~z%!DlJJPtQD9uZ&t=7)+Zv6_x9*+h*?mp(uShl*T9$eLPuWGl{I&x!+3mjs|L z^Pk5GUb)}s=5Hji@H_l9wp+7x9^?nnJgwK+M6>v~T%rk0t)j|JB%EY{DVRZzT(7pm z*IDA^T4JZ)aGq!f)fZ~Knxl6%r7_fB@~0MUHt59PSz|x7#B1z6RAX*qhx~xXX7H`{ zy>d(7^wL(*6{A1PQf~z{K5X)Rf@H3}PMj3uhTJdLI=-%kagP2UVY~M+B(d;#{@VDQ z!T2ybBlVKeaT1&PM=CsEtjfc{D66z8zF5fmeyZ4s#Tsf!!*9F@{Gw?Yc#^YBG*`@a z@auKr_l#HaWrLs7h@Gt>2&Ht@NfkN=gw6S!1(v2CW*Xvsh;op&B;6;W07z+$!wdy~SG!;Ib*_dQ0p=E^Y z=@nC^G8}=sZ^Lh&1L%QS0cZXjD*!APo2~0lBO24T?i$)qH`dWz838N3ytP>hn-V?3Rw=U7d001s zMWLXT+7pA(K*>YoweacM>@&tr7MbXxRcUR6QCD=s3M7v_YV%$<0737L)8`# z=iX4w(Ib%2YAFhev>QW}r>;Knkn@t+xJBnNZr2J@=u#`=m_&{l^g!3c+hoB+#ZG?i z487aZ&mE)O^H#;Q(zh&~UizV>GfTfFrH1jPhnlVRQ~p+!?rwGV4L!=3a0FQuu8A09 zCG#8SZci@rV&ken?HdI3?~eki7B12xW&#f6N~(#(B+DSNJ7+l()9XaPYap>@UpUS1 z|3U{RW;$4#+rfbk2FBv^N62Vu(c@q`5M$d%D!gu(EIuJb6qC4};ZjCYD)IRo?_<5W z)_c>W%!i;#!mJ5wrNVQmLpd2=#Q9l{NFtkNU{;bI*7&6yRTZJBtzas7Cx14Ex)OLl2+GBT7De*ERaOgeSSb8d5(dm&~;_Fniy_eWl zhf?9=Rqhe`iZVJ|P7s93&m}s}ktZTnaFrU3^`1-;3pexERQ^4536=jVgUHhaj3n-X zpI51T_Dsm_*b~1>CVn3mf#x8UeuE(WYgX{@4bdu?NunHFRdOH zrOqiHLX1SgT_W@rDl2kbwkZ>`UqoKrEw`!O?qXB9w)}0ZDOJGn+&WJ2~ zrj=*H#4Jmloi52d?BPE-@>PMvoXL>y@=qaOkM*4ONJbo|@1qpcs$OiDX&9HDvsU7{ zhytlsHNSF&B51;qq6a7V9PrMOD-%b>t5BO|iAj~V^DicrU@wubVA-5$lq314SLAe%SXNZGB01DJcL$l>2&AyCF-))%FQfoQ#m}^ zb1a37Ep=W%DWz6{gi^A>hHfNU1}+7jpVBu^)G!M;9ht7-S}73)cow4ofvUI&RI7xO+C*V1J&-e^V?7Ao&ut=iw(Yl_qd)0a+@% zaG?C5AF#)Wh{pwQLq1bKN*}Vl)()2YayWaf^W;GEseQ!wn)HdXS@0O*BP+r>$3eYCJB&s;j< zUK)JYd#GJ4f8+OK{0|Zxww549lM7slWv=rw;)ujC z3}X8MURkpRDtMx@_Tibq504LixTA{2Oe6mIXF#G@%V3iOf?w_&{Bi|Uk$leqtcI-B z=XscJ^`k!rz+LHO4BR{P?OmB~TVTt?lU|8Djno6d;&m#1X{NZ9xGq@Y7?l{?p~MBj z66GrK(+(v@2TN?D5)$5C{|(ZwG=SfLV((##fP0^Z>ZPPc;@o>&#)^M^r%`NI4EQ!u zQw-Qfg{r_9@W)h;D;}0> z_qJfBm5lk9)epuSpY_jark(XArWZWqgWtIiY^JlLV7M{xppXapkg3mi9|HkxpWrq$7KqdEdSz zaJKg~VAY_pbQ29WzFmJn`=LDNGQ1iJ+Jen%wqWyG`z}1^XM0HRwU~CWE5W+I+N2)o zq(l*;fbdTgzoig}BlhFo)eYU({)6{7M)Au;y!Z!AF#3%|j@fN&h0+F@jg4BECju($|nx3~nt+u83l2KOIX zmQy87G#BclxWRGe9H`>s3GE#p%-IYJX^F5qOAW+vb|zk2X^|0nP*6{dxVMJ_wJeK7 zicvbx#INJi3eWGj*L*`nTra@oUMV`(5lB+E}Buxf{&8Ur}Dh^8pTIUlvzM3 z5Hj%*^@BtQw5Iro$Y)&3NSFNh2v>)ivV%sfVloyb(VDJ3dxu(-=Q47vFm{8=1rHK* zu@V|*J3o-t*qVe<4s>cLD|*GV)v+>U!po=HLaO4e%G1|8FJEGL?}!QdzJ^vc0EX1~ zpua`jzHdE#Y+L?t@306@=ofqnE3nkRNuaS*;!^g_p_WcBJw`1tYzfK`{*QgP4`bBfoYeZgdB#zU4bNtslX|K> zUXeKR^^XIw8g_n}ohQ|>x?20(kbBIWJt{9uteNP5bfGu(yLTk6z~PgkR?eLr6T6Dz zn-CVKj5LwM{`|dk%FY;V*S(~W!=oH<)h-~$JC8}{wMGqpIUro%gYYHf*Zr&Z8mR3_ zsUrV~y`sdK%)b@Ar3DSEW#x9L76@c z?6$Nu&vvXRN7U+?7Xaj4M)tD3TakF`wd~=Lyz|cYYU3jtlDVZ({bW=a8kb3&a9I}h zboWHLzf+M2DD+5EFDS^nx-%+|WT>b~#!9HDC1J^owMqz%*+M?h9ThS&K%UXTP2N48 z4k+j)@#_~ARp+cuW*d6p-Q(#519Jr)X$54CQnp!if#(63;)drr*p68zjco|e4HR~G zZln5aJfCatRwPb%_2cyYk)88n!KGOk?Jhs|7dkn=SfRN1KljLG$oI=SWylxp@ruL~ zf6JzTJe{swV*`&Z{CX<9Hw7EkacNJ(y8O`e5%~k#ntH(9H79e;A^X}=;nBNMfM5Cb zTp-O1`?JtR#DYm&SBSbJp#fW$N-+`mUPL;+{dj`T7LRq?7>Yodcb5F)qDgkC)o>8d ztizCt?m(}7G-f(!zh^1>R^{`~iG(g}J12C>Ita30^}H*cHi12cv3rF2 zj3|@RKo~Y3J9JLI4|nifr1cC?CU#8nDA4~@_!Br!FmWQ?h(e=?tgcs=1iFqg^1H6R zIbC-Bg=2HN-X=1knX~BneIvWqbrTSjU;QW+2he$4=gL`KlbF?YR}|4_!xrp*iop$b zAO4SUlyv{aSYiJCDV9GVoj3VV6+56RHkm++g5!1p^cdU8@Wdyvr2RSRi@Wo@`Dqx# zafFL^z5fvbOVRBaY>FlhUM9<~w!f-x)Yv-tld1o%A({G{1NC3fY5hm}^*;heRsXv$ ztNx;{>W>c_^lR^^LW*n-fNuJml^y#9BAP@TJZ5d2CmG- z|9*ZeH+ii*`I7Ln2Dy>OzsV;UV<7J)VjXv1U<1}SGoaq%FG8R3k*>8sY^ zh1P)6vEod}7R>dKwTIW_XlwFHYtq*@et+V_ZoFJrx>&#siCX!NmtX_>h9V z0c=OW)T`kJ<|WWrW{BN+q#1mieVOoa?IC>O;iCbV{82u)pTXCG%PMKexNOdk9X^)7 zAbf18hU|XshSfH{v4Wd-%+$LV^>&VhHxKk%$sXGG9`xFYc9BuWe;yT&#meah=h9O&!uJi_$4^Iy$|=b z7`ZbJ2QUux*m)}w|N864oEtRRACJ%XRVP*?Uf^*Cx^r5Nm9C2q8Z(`RF*kBYAnb(E zXKel#VeI3*U%vGuo*h-V`0ygBpvdCGi;GDYA1(tQ+P!}F=TqITq3O`vT#)oJI^2u()i)0=%(~jQvF+*k2uKuX8^dk zD&GJ8va5XiA-n!n9qaEKte^Y5s1X^N_%Z!Tg~wrB*!X1d!yr9xLOFw<&35&naLQEp z`Is*?Snn?Gh@TGif$z;sc4X>%kZ(KU`;T6Izs;@B=1YuSEEH*2xSpfW3Y@(aI&@(q z9!c?_$HjxO?&^P36}tl0UMjJa4GT}sg37&fA~+6>yExg4|D{IaiXu-A9V&yk;qfL4 z=GFZ)5_`OrA3C9p?a_nIzE4i>m!%J5kGJSWe9+N6GaZ%c{|GOfx`O<&+Je4hZBBVc z^-3WA5)ViFE~#+)j~uP0tJ}<)IG>t?$?1zUB8w=Lk)CFc$ll2sp9e*+0s1{-XZ0gv z>}Y(B1G=l#jxoB9qF{Ris%6!1FM_b$)WftQ}m!H?*-QcJ7|3l3-&NzC{o z+vZ)rc7Q(%eE#={>mKZvG;w+5#K-A!sqi(PC3b3Vd%{P{Ij&_llyw z6Z63*jLX$L@cNPJ|L+b=>580Y-z@c*^FPmMboRie$&ge_C*zaETuF~lKwiq`1q;k< zY{zWlm2e0rtPZYx0v6G~Xe7SR`LA%8$F`XUD)Dqxre3Z)R>zmFtYlFyv8Wep`ej`& z$H#xyi*@Sdww1B{OLJb+Ar z|6)3n{VZdDL}G{A;V(sNBB{dqAE9E3QvENJXc6w?gLb|LwD-RTo^tk%(}$m>!hb2I z3@0BVA#1RtvG;pI8$1{LG4=0ByvF`h@}8^)G1-8jIIqDj3(#Ozp;UMRZ$*t2Pk)^H zvR8h6K8H$h`7B-i5~zwYx2*L)n35S>r{#@NPEjg+0)VlFh;AG=OVsm}SjmybNFJoA z=Wd>hrQNFmR`v#u#U5WMs`+SpO@TBY@%VKVN3#?EwF4D8B%F+HPb1;aYRDnsXDrcW z^)KD(6ee$7BjHTm3JC|%ex{2pvbWYQukCwD$X(29WH)4S{dPM$SDuG5Ao;bK7>$n9~N}>aP!=U4U2jiltGXT{>|KQG7a=N&+Kc> zZ#wVqp(d7GfA?jNEdAZD|Nr;;8z0px7YW)~-3bo4Rw@^ zll!n?QK<8A`Gv^XCW!vHWZ3DPmW+JI$)CrhN2_%b<}5h8$~D1}SCYD#c)*g#l=UUI z_u?`~{jCZey1sJA;;PW7b(K?6`An)V+3zqMfDP-14-Z}6rr3nS`FT99Y<@G*tk94t z&lXa7nl?^(h9!r}g{yk9pt>+IwEjvN;+gx7D~Bw)>=%{IU%=A~4l#eA-4$%EP=rD% zd>+Hzn&8k>+Cyle>aN9m`N2h^~Ql&`kyJOw_D!WGNF{ zysL#Y9*N5|u)vvz5Y5T=^sM3QqWV(?B8Jv&EkVTrI1U!DlnQT6F^QNO1NZel=CLi# zuOAkPt71;4QamFYjaeaZC-z(Hb&17Z@Btm%yS0QVy zR^gj}NLP4n=N0bfSGawq!qz~A+q(*TdKEThD%`&F3g3mj3^mV%yuk`hJt|OP*j30H zltFkvro!h~R_z3ValgX4Ooi*U0_$~|L)RcmyX8SRTs1S@W$i%hq{5+og?nTwyf088 zlNnV=kd8rkW2VAAI$MR{W|e{8OgF^3E$A6|%F;D$L7N_}k7aJl?NxSf;|o z6!p8zR9{{0?NxaH@6$LO)_H{meub-%g>b1D`O-jzTe}L`kYx~_nyGL#oBBHG^4z{2 z4sXp=*gsI=R<6R3S7Gl=g|~KI;hBDgM`S8|jiT1&il$%Yk8JwoW}!zoW~*s*52f2T zjqa&5+%&pC>2^({H&?oC)97AG`!iT}siU!u?27DZ|?y4k|;NA1GE}4V{%09WU5> zfL7~R3Xz5?c6XcH3&Zkg>qx9eBsQ8!HP;8lt|+dGjX>RSUoOs`(3qG_A10=FrNcC1 zGfSgXs=yEP%fz^+K#dUCF~gouGtFS}0SdX5x=^%4tsS*L?#qSwb?BM#(kW<4LBzRA zBMA*4Tj4^9c*epMvN{!xpu-e_Y3IjZqRFGF7j=te-Db|N|08{{RSPdvrTJa_3_?me z(uCT&3{zo=y+WXtE0m$6y*U;BQqy<2?ybo@nzW;rm1iPSy}915NR-djWa5l1f^$CM zTZWdy_kulh@qHlDq7!_lajke8Ayc^a(L2+{0fBCzSHa6ZnrD%BVHid3{6}R#GnW}0 zGm8L_43-^&3BVxsLii?5A>twU1Ds}Q1ozck*buCKcnBT_&>n)92m&GaJvuHB*VzLP z!Fp?ZPb~Eg!p}wUjhdCG5quj{l^}vY>8ZCX5-&d}1m_n9{8!9(!EhmvrLXNd;m5g1 z{yWTSNCufLfPw%f8XsVl5&8OfY&AGtG)dKnKbWDqj@lm2GQKqLvL3kCOjZC{~oH=`qGruu4&1OZ%cDg`)l~h zp;jTkAa#6cjY;l0x=kFPaAsJ>PBos33P!M5A=8>z7PB!8d*Xe^;%772P9vv9GbBTf zAn_>haj`R_X#*#B=o!6u0AAeqczDTT3vD8{wzKgvjrDxF4$^ojk&VpE-1r^-uH8&; zS0t+E2rpL`1o>O^$CVZGy~&9|#L4wm+Ku145VEF01agle03-P*&8vsS+()@Ss<;zO zdE!nGGZuVNCUMF{LlGD*?xfm_I~i+nCrAA>C-`E7$blv(Mmbusdv-a%BV+7Lc-{i=UWtW}D8Nu~E2QF>j zp)z)SVdR%fneL2bdImL?%`X%l_*Fs(KqStAMg|ZQuf(0-eUfSzTAE+iPou+5)lnP+ zcrf$ya_2gZG{2P!-)1DI$TIwEUODk#rSFezpW27tlkLzBh0Qm{BI0?73~)MyLAWtopa&eViVw>)qVV{ zXt&@${hMy!e>_~$0soZ}Fy9mZbGi?|igpYB+rRDx{4=GRv+1XqN4fCZ>O`+dd~1~E zR~hF03cemlAi%=N!sO8UUmOwN?mOVii_FjP@bj0QgK&U{+r-017TR(GObZXAFy=WP zmNO*C!-;==)eY$1mB!14{;xdBFtB&O?nddqID`N5vibJ{pMQU3{JZeI9^jy|TLVzi zoi6++w+n?l%Aucb;Qyfd^KfBD7XGv6M$nIgdSmE6Yh5?cf0|TfHu|f0ltF($es%-? zA@$=O{F_hAp%|1`8f4Rc&`yS8^d#}X+HQb6J3j~HTX>X9?;F-v6EgI&F?}_mTeR}| zm)!vVle`?@-{H}w;`>0KUJ5osFRWdpk>3To?%y5w_sfNU=dR%2F#g*z_}>`6Zr*Kv zt>x0?joJ*qOhr4={5T%v@au-*Z_2=bezv@+_2td3CU2TwVr5%m_oZ%;(S4tHqYJYz zT|2PtjXW~{f*&upF?%5c|HkkydAYP(z_0nN8^E`JmjnEA9_8S_Tk^(}mz!^d{)57& zEBfya?EB@yzB7+Dm465O{M&0I@Uz0UG5)Rlv>Uj;=-V9JkLOXR@Nby@BS`G-+M5*Z z7Wq8zpKf$v_BT0QxP?dGSN^wjpZkJ9vS^Vz{#vRjuQ*|DuE z7OL7}No2s9$dIQ)*SrbXW01Cw=1Wt%V$Csy8dbVGCua0 z{Kt*fLx;T;8M2&0%Q5cqBdO;j%}WRoi0rm3vi4u0mZu|6QmOt$BLiNF3|UhVx_MDW z;p=rJLiaDxsFvvPc7zSJ;(O8Dn)P{8?Fc+# zZx<%s`UI@-IKLjxrCgmX?iKqr+Y?RhDw}r=Ea0WmO-GtPwcrj5En1xFKk4Iadac&# zYqJ*8294S7WR~g*j=5Gr4)2+t-<*-d*F^J9WU)P}PCEG*>t}Q6&|1a$n5W=fB)!X{p+9U-$`y25?d)#9^(+br#P8xb)Dc`dxcWsHnwSoU(GgG=H9td4X$C$5c&p$FSWFaCQ@UFQj>_VEdt> z8BR3T_FazB=K*}nA1DWERa`%#iu zcp-o7oTvjp%J8{5yYtU_PhU&Kb`yxZW_Bg4mf4QC(9{+5K%`dgT#l^jS7)`hxCh-r z(bD1*2zOgtI_5u6OswDv*YqT7`WnCKFIYQtP5bwU)v9Uyoi{K`()!#)ng-#G=TWob zCIF2GDpbPpANQ@$ol|2=C+gy`C~Ze#90o=DCG@~o=kis?ZSP;GHX4_yx6;JUF@@zFDNBtDg2k+n{}-Tj%<#VLqz&&fx{P?Cp|IO!l`+y7oHknsguA_Cc7J zdfev8RE0}qb4cZ?_V&S{_YlF78;EIK>(@TFaz}Fi#;lbJDp% zakc?P1mimFC;vrsh7mz3{N}2()Op3Q&kE`WrA{j#XQa*?mousJDc_6T;)8}B;1OBk zh?OFpG^0)3kMd%VC}kzfvcya*x>xrmf>>Ic2Z0yxl#$J8YzpSmY3$OIY zK6|TdqdT@hdq&-tZqU;d3FH59HH}LrAcwr4NW&)mv~?vZsb1-ghS!0H5?kj>*bd9@6cm~PkEjvT(Pkr zMcFmVg1L31VnjPe4QTZ*68CDQoGv2MyFyaEj>O%uLfRXzI#S`jUq!*y0)vZ-=Fdb& z$^zv{HShW9AIhyw>uo%;YbZ$>_xpEn<6c6|-rCL`m_Ih|Q;GGdYG%{iM1<6YqD2+O zn|VVNSv;bU?}2MX5efYnq42qTCaG&9O6;P;5oL=<4Ax8W9qJTaY#Fq$r87%gmG&8d zx*RPfRuk%TvZ>uU_S`h`VU6#HrhZP0Px5R2XvR8>=76%?Of zGGa%PSa=Wqnv7^j7IB5 z+dShVdGVM9471z{TT(_yoCoq;rU zD}ef56oio`*4KJ_6q;w?wLmH@1T8=hql=U6;{N!cL(+}zVvVMiMdPcwe-yM#P(Ml} z{r>W#FZ~)fW0(RYQ2Bw8K;0<}|BJ`k@V`V73oqxd4gbj^wOF`KFa6<{+-2Gu9R5>j zwBzu9zMSFzntP9=RVEOlCa8Rw{AnWWLsfsGko!aBahge(nOwXICV5oIe`I9oZiIUh zx6R{|d5jhaVM3U8MAsPAO>L_}CkhB;3HuI_rzOI&Xlvl#G#FyEDvFEB#xy5Im6>_% zkVY#WYFw(Za!8tMj}lW1duTT|ie~5KN-p*?nF1NAhihoyj5Y`Uw(NMFWYZezB+M0^>l|E7L#G;%InI zei)=Y@p2MS$UVC~F}5ImQm~{@V!sz`{3AR!Tw_e->G=*X0`;ND1}TGy7K$ApcD0=f ze`9>tp~83n>eOz>3K!8(@@+f9aBL~T`_t{jP3hHQ+LMkbAvK&1JEmGVoogi$_wB{O zeVmMgZD$|ikg`=tIZVr4`7^9M)0;$8h2N#H8=T8^{!l!8j3pYJ@&Va{b1p||CWpfV z!61vRM4r!!BwULd0`=S=sGF(v5wM!8t%NF4;V1qb&1;|Bjj9$L73lS&P*Jj<9rU>Y zbm46o75r+7zWO7FCkMMT6acuFcSC)lo>PPM3{gFQwu_QC+IGi@oa!jwzP(kk zz-*{gxI~Q*c}J}s2>Hn8k*Ll8ZXcTp@AV#qh>m&2Yfr`&_xbXaqxaf>#tRixE$u`2 zgG_4Qt9=iC@fy!a`oK&iDSY=FY7%RwzK`8ZY#RIbt}68m6+BHjl>1i7Ba|< z&)&ZX;&Cdnzdo~nahy!ttY=waQ71C|eppnZYLRr^+CXg-O^qpNj z?y_Y33IkB1a&p~;BESl|oV@udD%M5ir>Kl+GYto*Mpk$}E=?!#SJV%eB0&aTwA^Nz zMa=VG*SH{qi!IKqL=xDXJ{&qnSRVcbvxZ5llAEKxjAABGZ>-=z9}L}{02sUbV9ZC2 z8yGm(4UV>V4UW1o@|jF+mKJnyeDFpZjy0wmyMUwC;Fw+-r5^@L3Hr=H`3F^3#eP{d zMto^cMt>H~tK|6F;^AoJVzlyQMtKFlJa4cG_U2m6IQ(#EAjOCRPo(y-ePnS1+Rr0`j>NqHMBG>4`wc8e&5CC5O1Dn8T9JZV zwsibbOxBwf#aBihzf^h_+bk7r)(#%uktL>)Iv3NZEz%+qF^^_PTLEjbnHT&X>@}eG zUITmk4Sa3G&^!E1nj!b0lpRS$j3gbYA)7tX9(SQP(e@!|J~AC5IEoNKzVl-QYm#?3 z5T>8A9bFy`A?%F}WP`+V4aX=i^OU^|^6OI)`df;YU7* zDwY)602h9~M3N(*-$L=(n^dPf+XmQaE==`*l?jQ=0o_SREaT$Mp;ilSO!lQ}BZe98 zsKSCRx5yce^^li|uXn9Cy-&?xYbez$swmpb$3^F(F$|P3Fq*3xY7k|E`OuwrN}D$o z=7`MS_-#&dZC>(KXCqY0Ts^9q_?P7kdFcF&4N|QeB=@}^%V~(X?rmY7s|&BOA2tMa z15@DxRt3<1HQeu^U+Yv^=ud^uO7OPBAP_G*=(SQaYVNZHGDw_U;*6SNEKUSbhO7$##(*1ycmii(<{#pUN`Ed6Vp27_O zxJs9VzBi_MjW%NLPZ@D)q1pOcbgADzGUVORwf9pm{pLKX*Q3;OIJbTFDo|Tf->$EN z0t9oK4NrMS@~eqQjMTMJQnS#>9L~&zU~v7a(XVm(Rjpse8eTlkxVS?_<2kK2)aNt} z^ai@#Oqfl*l*e@l?RVEd_{WXm#R^+;0 zXzTaa%P5h)C?xz14>>;u{YTN4;0Nu%q#b`8T^;pQ%UCDITpcuzI*#8wI;{0*q#!-4 zY<|f`lDK7VY`qYn#!10j|BZ_B*MzP<6(oil&*pC=wInhG%!e8ZGzcoS>J{L~Ulh9f z7%O!me=Acj=|)W9R*KA06q)Ibc)?x!I7MbEDqgTko$6YV*+)5wti`G}MYfG$v0!D7 z97*{aWNVVr&F!a^w(2WSajAw-A2gMB*{GI(=@Jj%eNu3%sbIX|$nzvF#o8t>(Wb*G zGFU~Df8>j*=F(DI?z@UiV7AOB)w0Uyc$BgO-)^a#vYsC$!x!l9n9!lCVg>U{SYL?` zyO+ewr+0Z}c2gl!LR;TiP#Wc#G3eG%HS2?QC&*@LJiyw9J1^j|E?g+A9Pno7>ce^f z1yNy8>?}J5<%QbI8Q(Z7~fMB-@fRXdXd=9rJ15!*Dj5Mqd%AK>>)?;*?=`> z>ieO_nfejGaB!pnqS=h2PkuFxi9<2L6~Xw5%7*7S|Kx?bUscAgTv-{b&prL*O8@Ya z`n;UOPwJOM4&oT{jm~txjn3#wN%a8)B>R##T3d4u{ql0Kw=J}2*n1NEFjM<>O=o6D z4eVG;foz-OkhA<1m`+#UuqAEjjZfVYj1m9troNUZm&)ZH54Qs&=AG0`A^X0~$OvzK zPVixZhe0)6{P&FFmKaHeH`kLa#r^qfo{+zT`cvWXU+HCh*pZegbeR(^vzN@S_^{cQ z`S^Lu+-8|RdgD#xFF;IdI(*6`@AyNRGA;Ay0S_bIL)=jN%K&r>c-zb~-)4F@gY36C_t$@-U^VS!_S4qG3=@i>R->VKvccJZ=l`vu4r)AoD6 z6s69fwhv7`m-dsFi0N<^w&@e(G1}bKq>Wr0rPZcWE+&K;Yg8^?@Q3dV^rtj#-qhrG zA_&24i}~^1UwITrW#%v#MNv3F^_4(|6u|{MV5Eqn4P|Cc?tqyoTmuQ}5i; zsERPyO-gNiSS=CFr>ChJBnrr);C(qiwJ^=k?UMKM!)UsMW;+h3XRm6=;|14(O;ul^ z>Gohg%S*qGv|nX)yaPQZXPXEqsQe~}riNiK8BN`5WY_!0tDRJ%((LVUL7Iw(FFef? zXak8n($X4Bf)(=JMy%0uX;kChf%58tl=q`+puE26_|N|?{fWIGkchNng*ag_|8EzX zdb!p#r#S(;`{_caGh6?>6s+A1K7(_dr3^>%dLCjiJiLQV*M4h>e9*J|%4|5lbRyHW z+Wfk)Rn6z?a_Pp>s6GIlEI($^gYQ$Z{hXffVnEkKaUY7wXgql$;0D3^siPKE#WzL@CeSdivfeH#HSgV8y;9uroak7BduJj*9EwN*se zm9s6!$+e8qCUe(G_Qwhq4q;4Uy`LtDgZKYq>-Ats257;bT>lAh zIv9DK#&exnn4E#quvV`&?O5>n+8m}zV9Oa(X~Ku8a8rBQRQQSd?HK``uin3Us>X1H zEPNRS-s*jFH*5AR;E#LSQ?4@uH{a;=u)pW>M@ad zD=l?Fb}TVv9YB*_-6LdWIvPJY6Df??$ze^A{s7k>FICd2(Ici~j-~#w zLV=T(e0%ekOs$!oy@b9>J}WMZOF9$4TvPcJ-|Am9c|U)x*xeM1G$%O0YFKFM?*S~b z@ZU@xXIm(y0zE`y5W;1v}~dF0BLySiL}F+PJypDLkz;>f4v zvMR4?uEAksF+2Gi=K3$jb;k8a#Cu*zb>ghFX~R)o>p4&UHE;rvRYSE$pCFs%ahc>6 zlqKmLFm@<$07p}y9*Qi1#1iYblD1;Hh_;e*akLI%$)4nPN~f0;w%@8XM=nN~?k<^T zv?J<1yjQI>KJ1A7)!1Bnop`P{tA|%odr)IVA+KP*mb|<8&Fb~3Xt{ds@ig`J_3G8@ z#09EX=LzxRy%W{{J#azct!ie|!9A zpV9}a3jtwkg+8iR9jB(M5hLw=iCcPBDA$r=DqKgcny{R8QD%KgXF#-CC%&nQJ-CKn zRk6p`k)*-}5G#~t$MPV>zf{D?n|*sSrXokFK)Dj@juw-*@I@drI%-*kMq_Cp7HjlF z6G-z41|+o&kGXZEsg3S}v61_33A# zfq3}9e5_&hgv#bOY=6m)tjA)G&@=pkxKdw2&sN5+Etd%4VT9ib8BE)(g|uo?pa|Nr zAI0{>ragH)6UQ;#z3?r`=+IQny`{HV<~+Z&c+8O1^_MV;7uYuq>$VuaKowSnMy!-4 zqe+Nk#$!96w{w^Uh%yPA!Sk#^vgIc5B?`-IipU0w#EJ#B^`$z$4zHPK#xhEocK^+u znE0T!W1YGHz$+y&HFk$C>RFao8NYxKMIbcrO{DJpqMGU z)@ykCF}N07rK#{=nO(bcBPIlyTFk2{@PO5!tC!Q4%7$+zhpv$~+LYSgAEN?Ya`+D+ z(FzawBGmAK<=D2;{B-pB=%G#94KNue{DI!azPyfCr=nl?3tjt?esBGEy^4NS5o*wC zOI7o#$g3Y$G!Y0t6sfV0ck$Zw718y*Lf4MB@?WSt5JX=6q@rn3>450hl)FXcwtG&m z;zuMhZ-2s<`E^&tk60P~>X6X2J7u-7*U+AIXU30MZm&{StKazELksF6@gtVmtM{{B z?K5=qx_#nDEU{NhvtI2xv{zl<=2t3TT|KhttkV647KWyNMFFlxYwu^Mx`$k)ur!Y! zHkhNDO3T`J8MstK!F)>_r8FHZoA0Qx+-!1D1&+P7%R|v2JgA(qc!@d!f!aj1IMUpc z5f8|1qyRr`_v$ZAAO4Hhwsw-5$QD&xzxIA<5D76ww{&^HQg*o+JFa zV@WJVI$rSG(y#FlvCe^+aKu=rl>_P*!=Qq1Fxn=`l2bq@kECvCa6xI*QWSP792YRy ziDG?I?Gm7RZchV&8LnP_HO5X4y@4RC=U*wg(oZAXAraUW> zNQ*Zw3Pf#kZVpuCqCgy&TLGpfuTY~QzV0U(q-&SsqApex+s!^&kr+XPBF)Fo6={C7 zfZBEbvkoKDc0ZIOHlF+$3>m(CaB#FYhVT~jp>aWHj8sX@>iI=+Mn}K+1}&#wCHhq@ zb|_D@JwP8Do*nlLaY+dJjkR~WW{rHk$?a8V+NHG2D(yu*YR;t5SNURn>;vdr;i{5jHs8d!O?D5~UTnkY8UER9mXJ0z=6hN`lO**hp+ ze0*sU7I9&I-M-@gzzS+ z#jhyG9()4%_9L>GSk9W#9v96rmt#Ix5h>r~K`${Y=x12!!h13TsL_GKELP-&TEsvH-0*0DKdf7iQh(xNz@k-H#i6yFak8}6BN8~frfoT;*IUUPPHEy zi4!%>(%d*H`C)y=?)i8v7(ZffOBdlS zb2S#!bJnDTi(|URSJBWq!3{~PLGMykYAo>-Gxe`ee0HU~RJBl)$DK>wo=P%C9?R&V zqeg4>Z6l1>iXcS$NdW1&$MS(awek5D|RO@{}{xpwq@(0fhyQI{D*f|$%RPV`3V#A zUz6JQWyyA2jrYl1A&#Nj9y6L_!!{sOUJ!SS)+AGIyZk@6lgNmgiX~I>Xh<2msJY0? z*hS4HWK3OfFros`BvY(3GQ|oaQ&a|G&y^`h3fGb;1qSIxWJy&JXQX`2nG4bB-okThDW+zdmP>lQQ9+X76kH5L=(+Lr&O>k`a&YO;4 z(eNCs4Z6EBEm7RQ(!`kMn<`Z1o3%Kzw3VuzQDZ_y*~A;$Y^qQ>lUn6tZJ`>ml19W6 zEpsh{bQyAcSJLHSzLIs5kuDnHv~XCGrrT6hcYqodR z%}TNv>t-)JF1glC3sp}3Bc zvdI1|-^r2v>mLwwc+MgQUGJXFoyq<+G=njjM;ZN-VY!?~_8W3v$#1IvaH*6131um= zgj55g-^=*Te~iC{9rU_i_;l)5;=e?)y@~gUq~8^DI=DXBLmM(V1(7 zGG_4>Xi$SrD(sz$omrewVKvm4R$;YX##C68Oh>cWN~6N8ASz5{I#ppYc)?WIq4$Yc zrNX2xx-g56W27;Qcjc7&opKe~4j9etj1T z-=AY=V1oxO4d7KNcIpXY<#*zsLZ_R`m~fYP6K?bc6JSl@t2bcq9u2z0nDuAFHTBDL znDRV`$(YiX8aSBk7wg7 z*_i*a&*nd{y=61g?R|lC-dKB6djG)oYBKFj_1p9Oj}P~SqKa?{$p1LOUN%B5G}yJj z_w*fqAUw-(J$U&3LT(NDm$UqxWk@h@0R(?%wZW6|ciwVHdUhax!%tt>)Tu!m0!{wT zaS%{oYM^Xlb&pM*8vKGry>1G6CahnmO!aGCQ@`knW$a!QirY|03TGhDY5sktJ0tb zT&Nw|QwLh9QvU*g?(vi}V+CkeeKb%Hz0*LgyA=N?8ar+79SZWzEW=)9;ZT7g&Uqnh zMYQ)SnOMJ6B2?pXhpPme@xfpv->F9^?IPAisicE-v;rH<3#9U#sKP$h;_;ex&Jfnn zMrto(ExvuPSEH=O|Cx|&Ey`EzydCly`Kl^P1=)6@%9ZKn7+HwC&DBd#-+6zgC7Ep{ zbk13b5*S@rh(Egv39}XUq1L`S^m8rdhHbaA>R$Pis#}{_SmoRtxOCZvr~P(`^-RQM z+ud}nQ%!%QNGiPScG-5%^EbGkUFQ=*v|0X*mGng(Q@{jugZ9MO5%$Zga0=>O;)2B{ z#L7LVDFGvH(T0^9**#c%+Su0FqRq9Yjb@s2zzMN(4bB?Xx@YP$TeKOB4O#BlkQJ)2 zS~b?FMy&;zTRPimI*?j5gA#BOJer#s#Hw2v{2M2>xT!diyXU*8;RxQ-a=fR$e}iU- z4hecsCww38={gz*TSc2YX;u#1W&9hXadqYTH);V*re4%iV#-PVsd%e?e^39$KFkx; ze**=qNwTl#0dBNe}A)v%|9SEZd52F+KB8^dHoPVR|bzLFV z_iy~~AoYrch%nzJ4Y|@QDEdpLe7Q)~c&jr-9#TsJNG;zWQZA!f8$u>D_i^xBrl1Ji4p8N|J}YfCGO{`v^DARQ~5>-R){ z^Pl~eLe@X2iza@fjdm_~daZ@5r`IHZ`EZt3IBA+Bt;K#~-)UKW$G6wnbc_jKeQN82t&Q?o3-yU_S zSL#u%rE{&v5jdfZIywL752B3)rOU~Atldk6PtV-W{lEi%d;7QB!gXMWj1*hLVf~d2*K7vjqk#;YjRbPF(yfvOf*(?3vl% zmdNZ9?1`_x`l{pN!p%%>Jm~7|JC6l+QHRPBOLD(Bn=jD3LY3#O5q+e>gKo}vYi7Z6 z62mH#(Z47AY$ScP@99qemZx=X1s^G6)52;mGfpC_hD^2=W)7?ZWz*Q-sFX9@NITWV z|M(+4lrElrt5{Fo8Y#anbn)E`QPl}BN9oO2f66$(np&IK@vyYFrbr}S zmN?;Ryfu4M&M9?o(B!bO5gN>E8xB``fU+p{g_E69Upi7s{hM2))W6_w&|$No`N=p& z-?Tg9!N3f<kjM<%umF-iK?|uwSWKhP}_@v^cY4G|JK$i>V z$msP;u*q^&Pz|4&KDE@j4}HDf!n3aRx+#w((63V-d&7sxIb?H`$Dt31g8hpfXP34C zrBuC%26`pYAknG3_(trf36pvw&>V=eZ~ax#`cVk*&!5fF5Q*PMorZW4IBeHZLHn;x z;upb+1w9_p{D5GGd74_-DNxZXBKh^0`319b>ze7;b#c0`59a%I-M_Dthw9psx;O<2 zPg*TgvkLC@4mB*H15|o!Zl#C&mF|+R^pbR?zZu|H+K)=Lmou=47o77zV>PMp6-X|r zPu5}IuRE9cXS6pUv9`hV*5a2gl*9eig2^fo&FAqrNhjt(H3FsllG3JXH~_#v&CNdGdVa*G3-Q z&`O28U8bUfRjeW%oLF*l$7S6$6qS@M6M^JWCM|!9$f$l0miEM1>9T3w^6qpqCOeg~ zmm!Tz%I*>#_E6(gvdKI76LbSEWgw95+h;;i zCaXGTR2Lm$lDflCUJfO2^Hv~4rAC5zVxnb|6U=45c7nN_&$)+jx&-rh{>p!zceoFdV~L-*{kAez_jM}1A3N91Q9q|#KSs0oG4Z)0S3udX&~jxz5EO> zU*Y9vdHHJccC@vGFBry(;Yspf{)qSor@}A9Fr@g!Y;+D~B!Mc_9QKbbPymvxF4Wlg zfah8XB>|OukMeSrEmz7@CR`q_?ABle(_qNLkejd+>pHRE1X*0uYO9(_GraXRGo_>(#0cK`IK8}93@qrGR`pC-3`)SfoC zXA>Lbcgea!npCIb`@Ft80qt5~pgG8A#qXkdMu=mYKR8EYRU$Ds%b;Gm@4r$*%6>hmM3e)0aIn+kq} z@1WqX9?zlRkDxdcSZ`U8-e)|Jrr`Z~;?HpTsTnSb{>c`om1UqG6KRwm4p@5&2}*9z z;EMh-O`HPvNQb+?6D4D_>859?M>Ei`M=-EQHnmU&M`Tf`Y;0*sr!;c%?5LxW-~ZO9 zkvu@lT^)On;c@}`qNww&^xDMu!EW-x5dP<4H-wcu!d{9~yuoaQ|B8Sh`-!nQuk*X)gU)L(~yk#9`To_{0~&-JG%;? z72~5Vm@((hG}?GAbAFknn;L(KoBC;ZvGe%L<#&o=yvY}mQ|x9&s-<_9wvvh+eeGwU zz?PzNf!1azJdvJhgr<7&m)Fe8VYy#JamI39{AKj)G|S0G@mNl>P{uon{`sCM`wd4) zWWr$Q{JGolmklUjnJ&Tj%Qq4^E|R(#2(!-PFNgdE3n(l8@*>qK#dQ-yx8eB9Dnzhj z3fv+6syiC$VpXxe8R|t|CcS>1Eeg6Df617?1oN8Qp86X>D#an*?Lu+Pm=<-CA!r!W zyBe&hVEpA^t88teY=4s(>4@$cXD*-qD`zf$b)l0Z`4mfqf7UE>c_036Y<+p4Nf&UT zeK}>acvwNODG`>Aer;_3PTo}-DBHi&Uml)~>=&BC+Jaiy6OhxzS!>*xKq#V%Qf14--WW%jbsF;Lg*=fijSf$-S;$l?28CeRzh_d?kG2jRO! z^D)=nVSamA^Di^iy3|igF**bK>FU{=s-HHrUO#)~rs}5+tk+*wFa7l2U$5V{-Fd=F z5JcX3{rS+6CLxl`KWx1|!uhL6fzH?K$KbzRG@?T5_2t3!`hy?L(IY=?0;0fr{m{G9 zdZfRnF{H?xo#vDmu$v}nCDlLKX0w#W3r6nXOtm>=Jry*MpQxZEB>HC#qG3~Q{W^QS z-X^7?sdFhrO*cG{1M0QcMjfc$dVT!VG^hcU*P%VByjC^LzW|_@+}6$Y`s*7FRIS$^ zj_TLc&UDrF!khDP^=n12ceY-CHzSpQ?ZN?0V@ELh2yOeJqI3-6#X_QR_FzU%dS zp-a;Wa((2#wO$YP&A*10Wc$`O_)1X%qYI_jz=(IXUVpe|J~|%Ps@u(~Tbt;!k5h|* z_4*@!;Z)+K=Qx%4@!nF2C09!&?!@2kxn6(5u1+h-U zYH9glkvy~c|DC1fnpIAkmBaoSzy7TlHM!PyErcMGR=zJCyVOGJ`}JG(`+Kg}Ux}ww zru8~w;{Sv7`mq;vh1CDu_4>cw9+<*N#+qyyg+DkKsd*k!i#(*31dv+3L8N+%m5V2X zMf9G(UVj+|sLVoZ^J&;lf`bLwqp$`#h@v~OX@l$a;(r*f^Y!|dp^5J^TGk;ZLK-D}~%dFR*^OqcDanck)OdOiGUVm0=T3Psdtrkl5^_u(-{O4Q{`k~))LGT-G zbbgW3Ytq}kH-n$(7P+wW&tI?iv{+`n{=CQk|FB;Fmn%gZS?l%VP)=#`xI^f468QP=DB^BJtp*XwW7oAi49<<`{N#CiRl%L~Ect=Hdu#s=5x zn|N)*p?Pju;&Ns2m)(ACc{|shot_rH5YDs9(y!3jM)Yt10ja}>Y z;Cej-I|)AQe7*j9j9w{^c`&n7Ln=b2DH*;8(Xi3Xcu1&nl$6N>QeP}1MBs~&IZ@(Ujkd- zXT5$`)$a#acFL2i;p6X|kI;guD{H0Jrr|b1A$2-AX zc%l=`Q9dW$yiS67Hh=y7Zo|iF$6LbK-*&u}xfQ7jtw@z6k}o+C8DT}L!ds?iM#2#T zTBfhvz(SPnytHNdbFjb~ZqH%5%OE*px}Q*xW%?_ROq+PSiUPE5%5k!!6n$U=MERfwyR{>nS6#VZCT16<&CWnkx8N zYYsm5gzOBTZ>fB|cm7RjeEO?+-N9!?0as1^g(#BFu`w2Gu=*x!Xi+js$D~r0DfJgA z$*=VCtxCzS@$y21O%i}n<=ecxI9mq0(|&Hx49nbZPoKimW#Q{Gsv@mIOL2kW5UDmlxjPT_Qm1CV-cE7@6B~7%>y~O)oaHxglq&A|m5yz29 z)E?mERE4Aw0Sk>@e8fn?D9DuSL*76%jkdb3ni1^jxS|pj05U7+t-$B5VIrsc!S5!g zUjLOCUvf&^DbLKQ!%xdPe`Ynr;ObD&8 zM_5l_H{gr;BE17>FTES^4BFIgz~9tH0p7WEjx;#dCJz3QGZnG+9vbU}%3eH5g-@Zd z`Mb0H&l6=~d;aG}i^T^a%+S(DWR2?WOgwYo6w<}Sw>NI817~!B8k=eKcIJekP-!|3OG>%vumyMyA2hMXVIn!IId(V_|wcBhP>(GsAI@~3AlLgnU!gV z>`cJTM-1lKMqaKQxc)bjxN;zsJb{POB?KI?orCkjA9#mKW4#|FiG>&N*F@Y6v``gi z6K^cssse(QDGcW>Mpc}U8-uyNTr!DjpkUSNxt1gr5PB0JoRX2WbH0I+d|Lx}(6H++ zLe8Cq|CE%D&c8LMqxV4|CV9RVzT&+f|6RJH`_iY5l02)UujJ`&g;erFH5MDTJB@Iz z;e}KfEBN=@N_wv%iG|nj*ZTSo8{7pRE^CZW`nDscEe*?{s6S<`hP&r!7MAm={|HAs|3;{IzVju@Y&XP6Km z7|Zl^ykK}QXK1>^CqXhCh)By`p-EUF2uo`nIl4TpBj?@7=Gmp%JC+WQLb%uRy={}Tbf#%1 zKWs{BM=_C7I}uCS@m0B;5Kv~?2%e*|z7A^hGNyx;k@3|| zW%Gr0N|BWYGAoGMQJGHF&Mfhq%;VF336+`JkpvGc2z1R;#B0hZFxer{h=K4z#{Bpt z^0fx4iv!a8sF!bLER=8Y@}g_yg_GoIXf3UFGj8ryfNCoR0(5(3b&0026?%k?QEsWv z2n%e@iqOe_#F0kCnUwI_4vk5L??ft!Ikl=KD@4p2Dw=N03UcfO#^X7o-JR;=O^ZkQ zhbP)(_$@3Xg4fa47r~Xur^yDxZjU*i7VM^DI~}}@2E>$VP*P%<()h5?UkB&DnmXzM zwDbX-I-WkOToCIkV`aWl2l?t7d?5M9k;;Z(d=xYmNE0f|zYgwZl+I*nIi(0nL zY{Y3`C|YQn-9A@)o;QK8!9RnXCL70Wo7VMd)CwJk-#qH`SlBfq1B1Cv@MFBkD|ha%#wYk9eptI)(>2)hK7q zqx%YPU#=&o4dkcIZdhO?dEb+>M!&mUp)un1&ZC2PAN&Qx+v$09OSIhZ--(C1^oAT0 z;up}JnGjw)RBc7tgz#-8#A6Gn*?2tE@l(1T4|T~obP}}?jE7qMOpXisEbQzq;-Lmy z1H)#;L!G8NY6 zZx{Y&qgEOS3yvv%9Uz@>@iTJQ(OR>*#5zXZ0NrUo^Y4Jj<2duT!;XC0~R z2~m*TuOgmU!4vmkLhFw4vjjxE|6SyDuXrl__7#Ll=xAzcrdh6^c<&6A>yq9v0st*u;E1xUh;^pUf`BpFA=H=&j`DI?d&C9POpB#Y22cFrFM88yM(EIw*FMOTrz>2GZ6+2_;eB+^8e6wCh$>J=ig6+NKkR& zG8(ODtkDJq4c2H-(Zm4G$V5{`8~0ccagUlP{y`a=q-8pe#i}iBvBgTQwYH^|A|hfC z1gzSsb-~(dv@UlXQQQF6dB4Bs+&eQ#z`FF!2j<>$@44qZ=Q+=Qwj0iN57!8~RLzd| z@M<2`-#>syjfwZtM{{E>{N-6W=oVNry;@P*S`->lBM~hS(5x9@= zOe(BVe{G>Uu%hnbTwSayrPPU_ql7ZB!zKmj(5oUc^6K?3wL6jw`H_htp!O zNo2$K^HLt$6dtX2W@~ZVIMGNePy8;tGiR>O^dFXC9nR)nASUm$jiXesy3IQ%%1W%? z@DfUDc~r0tIg3j&d_KQMNz>^qDCq>fOyw!*R3a(j?ub!R+o7MUmvYtKhiq+3e4HLZ z%~IX#fJK6&Z;KzL?<8(|wK)2fT6~mW^*pLnM+yy!cJ=5=7?rgk@P?es7M=jrq{=A* zt#u{rp!IxFV8*$OIgDP3n>=0ZsxktkpS;KRd>0~~SE;!Y=v%!&{9HzU0d9^JRUmxs zblw#Yo5&MTQw#TgS54wpBqH=M|LF{nA<1wKH;$bm^gvZMe3HEZP2`tQZB=oEAgd)= zzv9p z{`Wn~Pd<;dPcRD%FmKJ*Wj0L8Eu;#z5AfrXHXFmqR%{5qHV2WzbXeeG4&pk4#GkeS zWXglWBF;L#LdPk&lXf=pw3jP5y7qKP*T-Ug_8CyfuaCLic!%ZlQy8%RH=^+Hu6BVG zz1m;B>4cGyc&KyQ2ksOnqY$S%HZ3gEA9F-}&NnIt>{RG z^T-$3XT2do^zfMoqC1W5s!j#cf+C72A`|9G?~>DF%wEcdS1Z3G%=_%q7rft>xbteM zrATN<)qIpuEoW0pCQ7{Ml-^a`Oj((c8LQTnbeUh$L|2mW!I^pn>q)qJhc>8T#tujO zc@H5k`~6V%tk2kw>?_-Ab;nV&v)9fhG|}H)Gge4^t3rIn6ve@FF z$NR;MFJ-X}m9d1yrZTYD=1bY<28;4cy4JeJtBdmWc+B^JY<-`J6PKjo; z9ZpGx1?Ghv&r9%u)a8_K!6W)|X1p}dH6+rWbA?9$nNRPO+J9s;XH|80 zSXKVXU@+^o-$u1ryV9lBD8rPqIEAq~@6v*{sQMST75x=HHW5c|bMoM}5v7RRdI=H~L7{eIntUy1U@_?7>hLRqrztg_r-x6FT|#5&1=7PI{^`&(u9 zUkSLF{nNQ%onM04&mnp2;7{5Krop?)?00*60IyyYx3h79Z&DBQP5${jH?mjfS!MFi zR+FGu`DeCeFT^aou$~uPXl!sPH@>vmhk+;bdkarQ^~z|07=>dZNCiBCF}!1PRF8(J zQZyp#w>S1PZF8j7M=PXHFAV%!^D%B`1HXm~=IWXn zJ@$T8$R3X*y^5b=lon$=7aF(Eoe(cHZd>g8PIrO^<+QqThWh2`wYO$A<-Ao``)0lx zRQT1e^i_@UP++iDsJz-kWibYb-u_#dqTlfCTzg;6``&i0Juc?4^+-<>jdbXKO1H!e zAN+8w>M?fl)*Qn36ADXQIf^IEnb87eOr}DwsNa`b=^lx)6D9yg4d-7RrxJN@-P!J! zf3_>%sy|E5pujq{PN_+4~=Vb^8}%J>uKH`0Hl>+IfUFUu&v* zGU0-ikWzu&+qBl%y%kz`UgrI_&5YiP;&uyDa$KAXQ?k7*(?m3fE3&CDG9)Sn_#S?BEngg{rhr{CvSd!b0)g ze!^7CVrVY`@bphvB*Y>sfle`Sq?}nLg*%=jii6tcO1IDU7qjg&zi-Me_<g_s&CYm`blbw_HFJ7eOFO)F|cLb0OeYiKaBTpeyyA2 z(C3463E#3;H06WMGfKr$Qv0%(#Q_@eE~TD6(*fLwkUB6&dj&Yz<+40Zp87D4lVyvk zI~D%H*@lx-9@`X7)x3?wjiFt7$C*^9Fcd88w4Q7mGPs44LS8u!BOsv z$QT{>qT8WZ=NKrXAH7dl9CFe>r$Znmt6me=Al_`FsciU{nBSRp%z~A?$cF2bocu+q zdVZHTvl(X6j6U1d^X9Ww&ky_5bBGGoIlR|dJ!>Yw>|19-Zg!w|?l6?^_{@PWnGNp= zRU1{7bAxR1O5a_pd51jnu2SATSnonF=l3Ifi3qZ+Z+H z*4MZ16Y2UQ^6YfOSfM=o=7s-Dc{bYU?=$7uhw%J=m1m+`((`-SvbDtz5s z72IeB&o0uJ7-E0kw-#=GBuU5s*`ALrjZrJLl? zZBe84qK0q(*YYfCo5ML7Us8aRxBo(=sqo?!!^saG-V{z0=lyJXHojpK^6X7q=w9;d zbOc;Z#{2Tj$@m>$qOT~=BIov#XTMe?7vcK_<=MEgUqYT;xlLZ4eX_{p+4r7u^6Wpo z<=Nj+$xfc}f^iuozmPoJHtfr@n_NA+yLx`ur=D|Eu*oy4r<7!YJo{;7Z+Z4DsM?4x z!i~gK?VEv^@_w(p$g|Vw<-9!G!_OGXWz2@R_Md&UwwFA^AQ?UL>)EW=f$-60CDZWE z3*=q>Nhe^!aabp2^+)KYG1e3eX^WNp7~+8ZIGMN8*IlRedVhKT{j8!QsJW)C*ZY%# z_igyxHM4rXJ2dyMnRj>gdbfM--Qlu(0A{`Sz?!$*`NnN*Amcx~C=)!}G52io)Bdye zLu@8y;EphvPkIn5kI}XKtO>KFBZ&bTgz8ukVIQyMj4QnvoX7nC)4uIKIHwO@K?9mT z=rvztk#I`4I%=UpkzN+MdRd{=!W7?pqxP62g-4Zmq&}AuTv_DlObC%qv3bXGI zQ_PUy36?0{s3Id}-X3f+r{dh1PJ{6`Zax$`+=iPr$cPbx%MOxHz_PGw>y37q&y47y zcp#^^%h+Fa4XX>(kb=k+AGUu>f$i#|w)<5;Et^n=I^S1w*+=q4D)??u2;88+pD_74FE(qW&-2S4T#@IsG1e zvVg3QnLWp6ncGw?n`>fzKPzi-SY(n$rPQx>l_P&-N-p80JlQ%6%|(*~EBU6a zMEdHnD7{lk(aiTS8*hTYwa6j*utTLLmIry-PLHx;rp)x*&b;^g<-H@h#V~p~ZLXY! zMFO-|KPE)~4AG(|hF19=yV&CnNu0shyGN)1i)YZyzxIo}iQ@XxYb}PdlO(a^5eCUC zkclGHrOA@-Fu~f!m`0aC8mZC8kd7vgWW5o28k0w={V=-D-C$giS{Y_)JI02XmJ4T) zB>=o}h)E=!)%%gm@?@;C+#+5ThHn>gz~F5G8CtN?$~BhWkB)cnP;Pzv>WYD(t|EP& zDv6!nZ+N5*TDFes9;hrs#+A#cVSZIz>Fz)xk8`_*s#OiOB%t+%GP@=kKwin=C(Gz* zsDK5;1H6_0QB*rnrHCqV&xUQ?t(PhpA2xs4#V=T96uY;VC&xjo>4T79byysI4Rm zrVD}i`HxO_JK_hOml$8lXcFz9Lp8$CqJD?1TXB#RCme45dBfpU2ug@l)x7YC7%HmH zGO;IqC=h$rBspj0a?S`dl$}X@XO4~RXqI^y*@ayjHJB@C@g3*emFXOIWjY5}MU#5C z8YQ<4Hacn;4IQlGwE8F%S3)Q zJTay&o@YS}qT%|!xcwkG_67-#eK(Kf*b9ea+liocuu%7B#K|EOFdM zyD~)wv|=$n{~ML-LY3Yw*C>3?%$UMqfG6qK!t@H##LQFSdkG~ht)n>W{&u=eakBYV zz6lD3RY>^ph|#|~3B;v_yw4%81R#FQ$AYbF>3-xv-i(cFupzPBx;C>^KUmnl%&Xr6TNyiUxz+p;^lqtuIgg?W)+LL)`1Z+{6lC9$OnGBi>yuCk$$+V)*W;#yMsIA1Q8hBA;lO8)Ln({n$$No~bDAuh4cngNJXd zQidJk_D!do-OC?aO^(g4KN|T=jtl4???)#G#Q#mz zhKub+8w!Y@nC_-V8;&(WGslFoTWO4v_9t53dBc}of3y*8k5 z{2ed<4_{wI7x0lt8N?iGi{r#R4snj_^g<_8j_Y+oQv`{e67t_R<%Rmu4mv zo-Y$gU4}GH~`e5hBYdDpGi z959~9X(*R$HMb$befH4?@Av<-P+T7r-i`H_*@3*7g1sl7 z*cly#WpT&$GJQ9Am+~p=Ko5vxb^LR}yEMDe^%cFX zJIrRf+Ge0e6X0STvze5sN{X_|ZQjzWYr39m+rjnE&mleQpX0%e>mT97?V}%b!@>4$ zgSXGKxrpfa?Hqb{;1T@3e{TcM&OdPb&8!J9yugMaL2}|XwO9VQ_h5s=a_M^ZifG$k zZK07dKRyU8ZSH`~Gfj$4bBs3VXeVFXTmxiG_LP1y=3OYsWXvIasiRs_CF=)ikEVf@ zQM^!#C?FW;Emb^#7HuuO;50-46Fp$}P2BU(?wfVPpLD5sjq+AU94Ag8X~7A{dK41( zGy6?fnci0Ks#D!r2sqgEUyd2$lrH}Y!_N?7={UR+w`hgF0*ul~()dKgAiF5y?X{gK zqSM#{rqK)E?=9z6240n2Z!}3}dzMm`47|8q13t)XG4i1TUcfr@b0Dl{k#m#6YRh0? zYV7cU8AQGkR(&^QITeb})XUVN4Q|2uV*;SS+#!_EZ7>DVgTPRC?z}hq1%h{4ZwcKE zU*gl<4X|2fOu%^e?I$>pe@{8aLtgYyq?h{HJK4nqCFw|7t< zR4jk)rZSK;3z)zHU!;4rJ;T z)!jcI)qOJ?eyd8Ei`&kzsP19|2V;PF3}5%7Godc6Y?SwABZn2itO>IUs?92x%V)A7 z>c)f?PGV}=-D4`FlOdadp@m~A$Il#7xg`cxEWKRiXiJlKsMHx@ieY-=Ps_QIRO0r| zx-Edj)}@{+gOsvxCvmB*{pE+_NX|ikn?Ol_KPdahR(470iT%X>#}K=T{g?1M32^)+ zmNPBCNo`C{-Lhyh^54B(5C14S^tgTs4+>jKP1?L>?8ukXI%s%R5qCB=cBYeQ+_+t;^LH^tqC{AP@=h$O~W&pe?vahXDadU(|5{}C8amUQHDbXb4iAG;MYR`CqU+e{y(~bm*%^O zZCFQ-Q(>VM=WMfjRna^sX1)U(A2HXby(n{&?Ae%jGyOe-4rfRPYYz!O0)723)#Mh6 zpo#USxcy>bXdSl&Rl0$Kf?AzXi(HuJ=40O7S-Feh*`z~f<=04E6?SjBg)Ro^SSr2?OY`eA@=4D3_=?tr0?<0rSC1Y0iEPy8=?^#9$7>w zMSX)C>A$;>@jow$Q$_eLyC8MF?ap;`$%BybSVG2|l`os@MYmbum3^Yj_w3y}H2hoA zZaJidoGa8+nlE!oxT@AQH9C2{z*}IEEbq4S2svNj=6+jGjMxk7M6um`R~=u;qwTZd zqtG1|^rbVmB%92S^^Y(KqW}1$7$zUTX#rW7)Va;#PF|JMi}1bo#L?w zDQ+X>=X^UqezPS0W!<|fN)-dPD1R!PH4%MYEp{c?8VIM) zjNZ)KT=eGZ@AZq`ERnwmXQ&rlpvDCwW#$s$bu23Dxr_{YsOZhHy`neAN#HOOGaLSX zCEO=J$@=`aqvT!H6@@x)P%Ba;w>0+CJ~yeu6~Wnqubg*v_1FUMYA9d&V}7mjhe+zr z%73=PA}yiL*LcEygqXZenP9O#RY|#$ew;r_Xyra|@5g#H8Ka3*QD&-~ZDtu5*F{2O zJl7}wfYsKrgu%S?ljIpS=>%4}LmSrA*%_>ph|hBds{s>pz_g9dhKmaUiRA%#mLV1q zKy#mH#IO-a?oUeEw#n4kYwp|kBe*k)BF&|2VU&a5j;tIPud?Rk8ltdWExi-OdIYsO zV-b5e&!idXfAIn5c{TG`Za!ME(}j^8V&UmlUiA`V-kg{JYsANq<}jy844Gdz-UIE7 zH!<)6^Z)lyv;RxHC%mU*lEr)aVDmY!pBa{q1l_f}ire7by4pM;KjQP2c5m+~aS@-= zEu6CxCky)>4VANVC%^sdaWyV4e_BOF1@dRq@&ftO>K)(kW#!M#VkqQKobn6gkCNWu z)4#0zaU0;$?IL1mALfw4p2~hAxTG##+!+z`5@as-4;QjYcTd6yVr+ubdgGK3y5_gQHL|;aF}n4* z%HI~3*g_BK{;>rZ<3OQUfzb5V0>%)$1%{(FJ{!J%N531}574pFm>Z0tNf;1`w_$QW z-q(clr6I=_uCeqLHpX6366x2sAE;%L&CdZEo%T{~u5U*Oc6)4>_ zpQ~_&cJ#+BNmM8?%YRd*m?jf~DVnxC7wWv%0F$!%C(TRWO0qDHeBW+Jk0VuwN)V@5 zad8sCi1++M1lN!Ozq1kVJMRjj-zDQCB zfwLWNbLYZN|KwAPKEJnIvS^=OdWT2r3gV;Xw8=j_Ti`iCQ5r;qy@oMPP?W7FNZ^M^ z`wU%ab;7X~Ms!;I;iJiU-W(6B4Y3Wt9-$q1!N4F}V*d(lq^ZcEh2!f)XN0jtXSi@J z;;^!iTrUk|N94s#5e{2%Xs3!2r;4rB-%9YxnHNeRl{zhGr^J_uII6$&hn(tO?G#bMuzP7GgGYz4;W(+$G_YxlSplY)bv69qCxyJkH!f_O`ToA1A&DpfXLKXJ#sVR zE!+4G?jnzoou$R?Pz`|=S;UW#U#PGFl5YDL{u8c18q18~yZXf8m0ZSvp#ip`FJVX4 zKpf#h@Xk@Oju9!UJYG~p6UVY~Ba!Wym)9okMD79giE*Rq6UQ>kRwO+`<6#mNOLq=L zg{UM5Lq<~81{ZXkZ$JWPewWO-dITd1l@g6{u7POt2K+S$I;w)xt%40+<1(M3Yi|9G zA41#;F_qaf8$NHRI8YO#bS|KG>GugeG9mGJ|2byl-`9HA*LQyPJR&_lFR&NE!H5g%{Whk~)O7cHw`=ZQE${x->)of| z$bGjP?>6>&_fqige=`4B__X#lZ0qoO7>a3g_Tz3)ORp^dJX#P#p;9PvToxt6Hix2+^rJ=9CbbURgx%x^zM}22)^%d)D z&DVF+H~xG3inslW^%dpo+dHTa$*uVJueVqHdn-TwZ7(~K22}VN>qU3{itw}!%HjJa zsZq_Z`k%(zXSfC{-hPl(fIhYL6H{~RCt{0pMm(fBmhBY(c|>5x_lc}a%=DiGFNT<^#Ss4Vx+d?>e5=^X&+e75eWXkX?lV7ZwwV;R zk_7OZt-tf}mFw@xp(a+@%ziKdUQlg?BMzI!OEBRmOC5^$P7zO+Ns~_TRyAq|ha4XE z`wTo-1O0hs3se+ZwArkbLnYYiJFechsEs9$B?pb}XV6yd0PZ_9J*{{Y3SPz+0YAh9q_B^MVZ5_LGmkSU-5Ppt4q^3 zwbuqQImt0_RQ--{Q|sngGs-ttwO}=rtEy76A|Vl3F4#g;u+zezvW(=`gm!SjHU+Wu zrMw5z;&>0;mUgp?<<{3KKbxVL>%{W*W=qd;GsF14NBPM&RnJMU^V2g)`yJztwEz4` z1;uHNSu|$jSSzr(WzWzGnG3dTB9ho42zwLetO)HezDi}AIl*i+Tc%POiqk?xzeQ{X zP7HyO?Wtxb1oni+FK6@4=^G!EEQI05WB%P>cdYhHAQotq`!zN?X= zT3*EdiQJMxJ%GOL#dF-?r6DX-Stnr+qG7rea}`77~h&z?N9m*xJ;QeFn@m3qxr z6N-Gv1V2s%;KF#rSqmLM)@ljSRPUt&jUQ|M$(k6{ZUnGSG}olwVk{(Y4h8)98+bt> z?zjqvCDFt#;f*}Tab+E}TwB~`Tp3Ye%_?k4;neX$t~`kXomWw7G^k6 zRl%=y(T=Mb?(R%ml_ftI)sIuJ7L|xo@8c84sUM6i;MBd{mv{dH3_vjDV5fpdG@#~d zH~V(zcj<^;d9)d3c}`E8p^1-UlQCZTD7al6hlj!-;NybIpuanWB60dW%E{O28?)LH+ww+jyu z;h{OeLyM1xNy5Vv`4-)L*iTph5zO6C!L>TkP{n*!$qi-IELP){H@1pzT5gPdBC|k- zVqM=zgM|}%&#Evf2M|3fd6;voAej-6RwU*8HrrO6d3P05m+T#Buo<;wzUre}*xsalSDOo;L1Ho{Qgimte5!p!CV}=E{b;Zn z{DPOcOX_+kss7_3Yp5?TA6lurP(Ix9XD1&jBp+J62lhAlQ1Jz~dC{o3tPmOKA;tHTdWi;Br22-<0(*dhk)|qkQ8Zg$a1(oP7R2P!^i~3RIx_s z?^bciq?&$GqIqjj6i5j|G9QiT6`_szP|J>sB+d#UFsx(2w=hhF=mP8L8EqGfoXR`s@UQ^$1**D*p(BrVbLxn;pN zCJVMv{bJ@lVdkxSE5|VqYHy)%pgk#6i4{Cy93OjxGPb6S?LhxF5(wK%AnZu0oYu`( zE4hc5oe?B~pq`e5bOPee%DJS$$^tI>%VEJN;+Ow)0ztEnp|b;o42(l?5FkTWAtNSa z*u?xerI)VycOSyqqcX-oBhDK1KVB z6+15`hmB1{l5F;7J*7D6U&#i&$=ZI>a@Y!!Y2_Fg|Fldc!$$TK9YY6!OohM&It<>!E&jw<3rpU~AKwiX!$D&x$=4ag9&Iz}Pc% zcf)XIP)yrDIo`~R`em<`MF+2n4*vV(`X$8#nwggqOP-H?9azl8(6s=S-^15vVyELG z$@42B%4LVZJV#h+@|eUVw+?3eF$@yzsMCDPl!e}}`IQ~0iUmFx+(xl#qRU>cZXEnZ zY{0zAxfC5;_Ev>ds;Y589TI|DiDtb~W0YvI{r_aLw-%7rQBU`>%3CB{C=f%-MOIDm z_!fpuyNV_bRyfsTP6&hN618FCk7uaQCj_!;VTRy@3}i<4-FyJ-yYhyjhLAuN*7d4 zC5kVLu$4}e#iF!#=4eT$Ip+1Q@3eQtZHE{h$fj8iv+Rmz&Xum%+${2>LW??_6DKvQ zu{3rASWNe>Z`cfkz7Mu59C^*G5j)e7o|rU zoF!Ke?S^Of6}Q{9v+{DT4ojVtSGapH<$@H# zmhJ@`dof^L$xum^H16jRRt|EOmePLqLo4^DtmqbJ+thUYPn^Ls84@!sRqRkA`-4u>e*qOL07JgBMyvo ztOS-Nm9<+zWLu4TFB{off>B2V^LkkD+GsFS`yMl}nM|h40}3;?Kf_by8NhWlb#4(V zD|vRWQ!p<&EB{EE!Ak~w~I7H{c=lIf&vK3$v#lyX0p(n!ix1`hr{Hnflx z40*OtHNnW27CEJEGzjXCZ}OhF6ij!lC{quKN?47_G~t`|L2`)^ON9Q9t3OgDD~I)? z+r`-#j&5%@6}uvqpwp%>hUkBU=2NliGpSNhpE^<7bVS^?&hZyjc&-N`qgIAGU(h4% zsPQy6Y}n!U`N)P}#z9Iyz%xkh5?!vX6nWJr8h5KtjNK&4jeLAUVCgi<>; zarOkZ#k}I<8GMY${KbwEUa%OwD|H>`TG$On8IRu}1?TvXd6Pm;ar?wga$Eqe#-umH zZwS${YcV;JCY;*o4CdUzMA5`sXyUT^#2fX?-Y8AKCiMG|3HtJ}$yoP^7TVC^~X?TA0n(wv;5u$_{*mQSNZ*K$!=56zXqhB#xz*}@ge zdP-x1HzE@rMF_~X^LS~I*LB>e%cS+~dzMfVkS!$%n(Dw(xw|dnb~kPVuthaJeC(Zd z|2ifyUhK%68`pR(dJ_c#yLmu_<%Cr!91&%!kvsE5L{Wvyv1Ayq?}V+ZBpa3u?1WzY z2RL%}i?m;X{bE>VE2O&^&RKb@*3QpxI)D{`L`1$_k$>;fcSt#F1b&oY+97 zI@W(|oPju9nW-_A%^VW%tw{{&?xUn2i5esuyivEhF<~3m1`%;@1KUZ^EAd3GS6+cL z?4uq1j|TD)mT43e$mjg8YgA{Gioy81w*+icex&AXTGuM)O}^1Ly2IubxLv)1_hs}j}UN_)jM z&bm-}SQl2Cvo4za8e04s#M-K1GZQd2peZG=)Ijq*&m@#7a~LbxY!36g+K!Up!Ki;d zZ=K;GTT%AETzl+}hW(v3Z8(4{nv{)Q7LFeoT6pS#V@Iw{yMSiNHkJJ(chQHw9+k{`tbA2pqoV@L$X##na`if*hN$9-twwUtNPb&dguw!hOL#I31KmTatJ z^nT-jnYbP^ng0^%Iv>u9q(-dac_gU=v;VLy9hN+s|88{3CeHln{Ta4;=2BZdGnn!N zyf9z&P2Tww8tOV%?`W-%^OajKi>W^Gg6W~#0D*1i-K|fwsuM?{}b`5C(S%L!=9|x69imjP@t?{#tK_*x~iu@ zS2gioL4anv-dWkgRXQBU7N#JfNt4XSLIaWDg@!bw+qo^}wp00Y{k*{H^M1F;*IHsy z(^@9I&|2a-w3b_%sVLffF+PkYai%J}Nt^mobD9ct80w8z!FZ)4YM{y7N0P+E4c-kj zndE$dCX*VTNdb{WMy84Y6WC4&FR(QGwtpft-dWj0qwMqoyWUy3jw_s{%mkAkpqNJ1 z5d-x`p5#P`%+NrDlyUEikR9D^DXJ=c5RNX=*jV}1w~duUo!bM8v9lfJ=Hrre44Fc9 z-W5^}nCC0A^Bt_J7&CKvVtxizFURx3kv8pqsO9Mv*&Y{QokaGV@Lmz=;J6UQS#3GPp6d#06Yxlw%r>5~C?* zmV}=j0OTDX4h(e)TJFk1UHhWSnfkh=4B)AuyPLKR-5nW-&sn{+h&<^Xm5~G4ck3sA zroZEN-!~vr2i|vv{8#z&hj<_Plb&WLqWR1M5OtBn-@MmWG4BqEDqhL+#vL*{60Zo& z9xtSB#XRZ^$1CVNsoOlSFi}Aa!m>T`7_Y=ow>y?tqwe}zzefE=B%!G5AUS%5^KHvq zqZaKT;u(p#F!CYoBnE*c<>=$GuZ|S2i)6bcVd7-McF__n>>J#7=hK__o_Fd?3!M6D z->FB1PpTZEkR%ob7RHAXlue<9&1@nx1y8=!Joz00SADiT`MP1a>ZQ2RN)3o@?S@4g z2Y+JU@=b-@``kAYG2S-8H%bk#(QXMF0j>skx>EC0B?1>?BMUG?n4>RHLkl0Kxlpt-C}g0jUKz#8&NglG^97*%{MWw& zNap9yF;N=-Xh8c>ijoyt9}ww(cInrj&)`s4e;xwqs6P|zk2JM3eG#?L=z3kQHA|~L zaU6d5(YuI#WW$-`T4=kqkbf#K5HGC|o@_V49p{SBEpWg0L$2vVK?fpRDV3vRF2>oE z$8=m>{me6^T#l}g@{@smbaj2=;t4`J^MnFMz!RkT8oJ2i$oenV>6~yCpBF!+0^=*1 zp{Vy6(_zn~8SO8FI^P^H(;&SyC&7T_tIGRf`4VhH!}8;ZR>w6NHo8$jY7x`)bi-t% zZlN@{FQPC5h4qNCz(b1&=`j+{7MJk%4*d2zSq-!6aiIEoxR>e!kW;VnMMYOd&0LkZXri0H1Lnc`BW+hKKC=TMo^>%S|?0vjH2R;I+ zAkG=fU7Sy!9h3Mdea5@JCoBC8J0<-Tbw&^fk_}phBM~BW&9y559ImQw^y+V`KE~d7 z;4QCaiRYtz%DY55jUBQhtrxJ70>*UYj0yq4`P4=KA}rHk`x)-7u#e{3=FbmWLnrxzDQd011&uZQ`<%EHNuE~ug?HaM6cURi zCzd5k#;{F}?K@$XU261j(zcuMWkf2qn=lptGstQV{|W0e60a@(jgib!q^8>lX1Iuz z@laNuFufz_5}Qa;zle9>_T-nGOvt7eT0bWV>EKhNb>a_DwlhY`+GVv(P)VDM@` z(PD*VPFkwqZ*+j|(fFD-dAtt%K>*qEgS|C|SEd;T6`C1Wty4Q%@<$rG5_U9DZXz0K zH@g8-!Fn)(P^EZa6`#sMB08Dd4@<$dH(m*xqcuP#=SUmNfFRqSC>4IB8s210#K-%( zeMGHmLY=?W5Z&p_Fc66B7UWwZsnM@*A$A;c`sEDjrAn60f>;p&amx0$?wp9N<^qAL z{z9vMgLnE5Ew*P(IGJbWgf#gt>v*|&`bmKveZuFCgobwz{m*8oVD0{N ze=5AvF0{>iugcMZLvX0`KM;awpj>3?&sv8}*+T@&Ni5K0WSVaEX{D@yR+bhSt&D6l zTDjx8ezbB3Y?-H(dINHUH!_u{l@UBMTB-D3?#Rpj^UqD95#Rm9pTAOp#Zz!9)VEO{ z>Ll|qv1aw!dwmd7SlqK>8LpV?W+#oc;O-Re8Lh#j;6}S1&*TbkomeGvu~DYtSXRD` zmGUb}Kg>wI#dk@JWr3<+m&jIZ=Uo?8C~AQntBrOQ9K||JUtH6*2Jsv9 ziwK+)c^kJVz{q!4t7ieBB9I#@8vruKBdboRuz67UTNcvk;YL0F7*`EoZ4N`Q)8b3~ zc>sID_UU9Ppe5YAFlw^cf)!RaASh4N)gq0+t41WJQ9%*{e z6rCr_g1C|chnOjS9}v2sVVhUEmr62MEeqJSy{OeY6hWO zMzgDEa7Ap?C!9J!;~2mJabVomK4_BV?Mm=)zCBbBEqNvw%Vxu;QK%4O;>ArLl5mkn z)6G>-A;jv+A|2iMU<(|JP?94Vj5uY&q86P-Fz#%+6|I|ER8(d}B>EO@iKe9rR8b^F z)WVCtwNVVF41?OgE(Tj?g)x^2Fh%@5q!nf?C!HB9`gNr^u37Br1~V6<^hB^_1NK=lAGRVSBb9U-n7~ohLBWrkEn!vDDrVT)utLyKbuGR30> zq-+uD8i)Zi^11btR*ZV104s?7+;@&(5zSO7=dWwF^DVOBn=qe6m5ew+_!3jXoOkS5 z1F4%68x{E2F#==e&ck4*jTUoqmY7GWnK7K8Q*-TwGIQ7W(DBsLty)qwSJ=ZB?IFX{ zL>ayJS}2*BWIL;Oa)lxs2tbzlg&+3V|P)xc=SJLyj3R7jeg6eLrwr7qyC6e!3A&Ehf z$iLLeLVWG6R&5qv)#laZ@a0Z>rE^ePuP!`ay;^~9SJ11s*u$;uq2H^!pSk&7 zJ{@>t>{<3KTAq-}d>b%2qTd1(vruBh{^^Q6j_AMNUkQX7U7U! z&P6z!EhbY}LaS6}kqLNphuKJTD$AwL3E#w3A!4DzPm5-4*v9C9VH@lJDjMNutR^E< z8309Jur{p8uE=b^1S1GaZ1vM32opS{jT;Pf1dq}MSP_`s1;6lzkE8(%4mC`Z9^&?Z zdL1fm^ie@MetAt?ov$>=50EItCG&~+7A@6xR-$kyd#c<_D`wqv8X9G{NcXc2jP(=u zt`Q}9n%4I?l6}{kac8}bbWpFWDi$-e7a+_@G+j7t=a9DFrTXotOz9(t(RU3b^aOb2#Pq5%s{)v9`w^s z?_fy4ynw!nZ0^v_s&-K;{h+dmYTBRKf3HX;j4;i^vhMfX|X;E z|6=M+|C+ZdFGaw{`-C~cnX5^rukjzt`kLn#P}|F5D9?uXR{`I1Ic@WDzRX;ZIaC)0 zkXL0cGrpTjpYo}46{96?QL81}_qXjs$$89Mj*>ACqyo6<+l_VksKnMqFd zL;$RgeJ);9p*5FMgPsujd*&IQfNYLaqrbUk!yo@c4a<6OT%~B>?xffkp5M<{fB!a7 z1!o?ozFa(T9m9ftJTPqG$1#xjx9d;x_v1F~+T`ll+zKuEc+S~7ec5=<2Fh~roRRFg zB(t|`y&k1T??T!_f-Tsw1@W9;b_VgBpO7&d{_S(Qc+NJ^_kW4!G(2XA<=nI~ zG zT1S|oK;B$9eWm3&xMHr$7|a7m+%*J-Qhx_`TL9 zrNZB{i{i%%w(l)er1{-ag%Ec{a>C|);{9X%FEnH zBt6N?e(~ceSo$_UIEWv2!?FeO;{&Ft>Lq6DYBq#kdw0CO-cH#-briSP$=q7Rt(*y& zc{91s&1=WHy`3~>--((W+&6msqAB1xm9jT2z~pL*;2G$VR~J(B7+aPyu=iwf7q?k0 zv;11-+Lf7gTvdzaFEm#0quB9PIWseTg=)f#vG(~5^8R$7iyfST?jA+9JCWL%}}~(ggM< zkb}W<&8fcq=0UjW+e(0o$Sc7m7d5tmT+~=)DQes*Cp-?o3WG+I7x#`CM{OvJ+wwrNGUaSE&Dg2$0j%R}E^rboEg%*)Z>X%~l$Tu@on zR!0~)vp!B#uc+Qu7uk;qt>=s)6(d$0`5L}gYqSwbBlfE(jtM_fQZyI_j}b8Uh!#|%2ny|4MTRP+xS z;{cA3lST=%RW|dVt%TKoo#95`h93O5RL1Dn#tT_-@)X5J5q)keJ0>~({i0}=xfz52 zpUI?ES8M%JWC|dzF9`S9+T~SpoKiJKlpaaq9NM%z;?>k6PA#j4RN4oz#qvw4fj(R# zs(~qbxGMCdh?Ax-H`(<@8{P;JQ)^WkI`x!~O#n99^+t=>>CAy#kj~Fng@UqJzMro3 z({ufF#81!n)6G(7IVtVn@&+fhyX`zR^lw9cN|gC^H~Fws z_~{luUG1k^{dAq5j{E5*KRwG&xA^I~e!A69&sRE_=vGIffM7#iHvyVEa~P%-oPxJj zeFcbhx`Hl!rF4^@4nS`4(=EIgDwu3ivv7h`8D{v<)kayjS(>Qh5KB9OGDZncWuMBtYAh9qhEUfX%yUlP&5!6& zxXalF>ViJDf%S@;Z7S57oJ`exvr2}vzoRb%M7u}hkVz~Dogrk4{4Cz4o=~D9=q4k~ z-to3vF`St5Jp1adwD=ifTwON6y!O$6U zaBp0o^e(xo$sQs5b4D-dm0sDA%j;!9-KV#%b#8RV%ii{BHvOmIar*h(olT9jhTf2S z_B-y(Ao9zodGTAmeHMYu(^`qeK1kg@hNSMqIbiZ0%LlPnkS{ZW`EPwQWf->;)&p*n zZu-=#|FsLZi5k2cFUax6c0y*LMNrj?^nOP_vn(6$8?>u{wrc@^eTZSHNNPGe8?Cv8 zX3y-^oODvKI^+yp_t$*9&e40_Cg`1WXzvdin;N>rzN!06eG_Q3d~~li8$K291ti_r z0?5thjwwAueKj+LU3r<|h+nPQ$7A+p8y| zuE`ilwP{D?NtJ`@?SxEZC9}@GGkbz^PGD0Fraw6Ao=r85F6GBRS6$QR3g#tkW&<6! z?~fW01kc>*^B8Sbp3P}8(@QaJ?D)MhaoO?rM@afR1?()!llgug#ID#bjcbV}jxLib zX+qizGUJyID7!S8JdTEKvsz%!QkfXSv$@Jpn5(pFxpPRocdzA~UU0-*n_ylb1%6xp z(Q)#RjwWtM@RvP7M=7FaDA%5#x85V8q%C(4xVT*9AOvmw#U}R!-Lmpsw=Zb=Mgat6 z*~|mxnU)NH-8H+67k;xVM15-ZcX?(LT1!57`DE_4jIJ72`ZXR(&xKhdof|TRf8lfN zCG#2@s#Z1Bk`3FxL1wP5Dj!tnz|@jGj)REU&n?|Vtg()3uKFv9V^jrI<@ z3jxw=`SEC2z_v&eLYln&_j)&*ITU_b0>tj{n3+`Ly}CCuZ@+F&l|eYpr2mdLAU~}nj^8i(*s6U}ea8{_3x6RIv4ughV@!`cM5s2g zY<_X)L%c>D#gcnrs+Tp6`Z(0}5ShlOwmFiCD}(Eoh>2pMh8NkNGBooC&R%c_SYumi zQD-#uJ;5)*R36dh3`JW6wM?Xz&hAjxxBAvVrtztP)UYvMLyy(4kE@~mJFN0}A2hz2IX`#5{8UCMYeQ#j1Q9cqHGq4cPg18cG8SH%)6a8B%2 zse(}=Y&ZW8Xhe9iHC39D^Qq?@RisCq$3RQzJ-+~SFWi-b?sato>|O<(2GHSGw>FM) z5U#kuhj5yNGOaI!&{-H>_oNNk&hGgvEBu8@bHI%Uxb$^a`sYL0F#%9*Y!KWVpa7Ud z0$|=;+8-DnRnL3Ze^cPJv!kG4>4AEOrTwvt<`<&|Y6C%;xBfKWX;9>_E!(jvyW4h; zB#$nOC6C5)JBhH&v2*|(vNG)vAsgAfoJBaLtdA;9&)jPRvA0gzh<)b9hmd1dPQA*B z#gbQ)#}2!^y#2sPat0+`UWTjY$2YQn3*ET9?Q5~r)pfDdIdxuU38U^>Y4~YpciW3> z0{0vnx^=854S)@5EqIoGtx5pIRe!<$XB}?wApFC*z_~hXSWW&etEmH(R z+3Z}y%M0A9g0>etPJ4Uz!#`#N+b!A7&5465<1?<>s%&)}$!+b`OTe3Pa@OtcR~`s@%*jzd0x83~B;oPdDWB_L8P z3(Sd#Q|9|j*gkN6apqe_^V+AYG2vI~7_i}7v*fek50Ts|K43uU6C?5U-dkrl25jHj z!XKY{e>;MHFQoKYz33z2M1IGSCGE%O5nw`Iab;FINz#0Z+Yw800@Flf{42Gg5uJm5KO$8S#$z zUB|_VUqkPtzUZwkMDOd~M}IK%RwIFHC`sr=(@DnpEqcQw@XP1;^6lq~b0Vbz3CuP< zn#OvXdJ;b+n*3gz=8LQAG)KN7mOOVVODYFMQp4e2MhcjmRr=&M=vF5W*eeHCW?Gh7 z{U<<=c09-_oez5LuUMzO>g_w)jLe(%>ZQR}d85@u2za?{yqscf-Ix<@~5=03G~N8ZOe*HK=mYdSnLddj# z{fFE~ZUMxmu~!^GCj$xW$#N-#?iS`_P+>OQyh-SUJ@2a1#GynF3@xUY_I1E@?j`N5 zJ}n^bezKz%alhp4ey2~|PFMPb-OIGtI)LhdyZhrz;s}lZym$8SUb^zfhdN#P8mpzD zJVIO@Db1Un^ZF_ zg+X(SF`T{C!V})QUA43}gdC4YhAj(yPkW@9=QKHVQ8%X$j2+p{jG-rDiKmeWFBsBf z?y+>m`~tKRTWrfss8hVf(Gf0;o;2&pTs~o%;TX2vhl^XaOlfMccROo^nWspGG0ce5 z{KqjI-ZMange7*Y%(N9uS7WSQ=VgXir*w8v=W-`ug(w&x*=(vVNA}LYj{Kp>d za{au#v3SSI*s#ZDXx9|K(D?8$PlAZ@!D_*A*HBS}P zt=vq}O$#^8x+(N#X$NgMH9|YsDVH+?wrimJ@xXinoj)LbJSE~Xp2AdvYrw}l?kDjKjE6|Lx@ zOrI91{elvGpKEr$P({%S3l-&TrqDfHp`osyQ!!kA8y6=UH|chPqP*L+J#GwB984ES2LtiK#VCI%+XtX4>b4>C)SLnA#$u zGN?TVkCy!eFr6B}wEgB``nJK;7Bab9Eq-P3j#;5-2U!_=##u1lXiUx^ zT)Vsb5OGatVVVCSl7Bt%c3HrsYO(ubUy0^Y#?7q2c6PSs4e=ja;km7*fd^)(zgG7>U1>SS7a+bE%oOLHp;W$f!M5*WMw| z!d5ynK<$=d47Q@qx1wr3rYLLnsif(8uj538N&dojz3{hb`+1A@y_j}#*tm*IF7L%> zb)l|%MZIg&cZl$@AnOX)LqYlJgxq8he7_H4d}H&BaazC_3WdQKvd1I$^RNi3jz&=G zK9uUSu{KgIGbiE4uSwIkkZy7TEb|_aZkWGd!FWZ;hI16=VmkECGG1h7V8~^ z94`nC{CcEg>4RbEO&L620MZ})DuDE!evqcvhTadTT*mAVBe;Dx0j+k}R6kxvoKMto zfmD?fJ|CfQc+`2LMtLUa`R7OCTetY2g*tb&FE@?IHK+KX{qXmF5s6jhLQ_A5W}Dg@~c@G}nI4X6UWZ9pC=*%ILq%4P^Z_ z&_#FlMG(%E-*>P7Qt&c=-Su0;0qVE5G7CMKfIi)ptV?ce*_!F&kDPsxhiR!5S%6E-exk41dde=`Ie#8F;?RL*(HWN#^o2)V@CSXuZG)|aM zP|#2N6toNJ%@m}acTDQsPGz)b0hcepFiU@tW0;%m%iatFEtdxTe5)o?NN=8k%1{+S zd`A4@+Y)~#PUixoPph;*U0Wd1sNwYVZX>=BfI|ZS+Xu}rPRBO^V*uZP0KUcMjrE4l zq$B*S$y;p)!p~(nerAxow!SYvXP<(yugkIW>pqR2IUL~qaFc7#@?QE9deIPr&(POk zx{9Gi2YI?^KW{S(t;y}835&0Nfj<0jP9Tqsr+aCR)J2g1KmR$=@4uhjzN!9m@_45? zy?FZK{fwu#%ZHQwRyQX1kLuX+Y4`7>E|Dm|fshJFdvbGpeCzKRo-uEVFW7W$b^C8c zUWF`O7l63oH=6>{g+Ce=GFbgH%7`v0<5#0Lgp&<~G6Nyh)hKq)MVdAT(DnjI!J^&C zUI@lLOrXih-AS8oHKZ<>-2{Z_CD1N+t-Pl zg*<{q|HLJL_zWT`B9Wgf_hy1d=iTAMdAUC1B!}2x`&l$=y8zDBx8=}PMM&>K+%rsE zG?*Kf6<9a_%2jlrRiwdM;q0KwZ1_1$TY*q+Zw_ar@D=@HYu>B40*0%1(8^IXMI?!n zl57E%iuUcWM!T485lJ3Sd50M=1e{$6x5C93Cj-!1-dpS^rMm9auXCN28wm?k>)$b%gr^6r9Tr7<`5O)= zf8>#=)Js}8RZXk4pI}uWYecMn;wx}4v`+HW;mN$cf#eL z|Kj7aegAxc?U!%5u&pJ@c1FAHJ#wviaRoYH`RBD(DrN`P%94I4^{vbyObsz~u7K}) zYbBOd1*3~devWSFZmVicPA-j|zi~=5@d|Rk?yw<}9oqC#^8Opqjun`0t7f-L-ph2W z_AcB zVrbHPp-#~*8zsK~$jL;S>PB(>Eo|SkMBAw9Ew& zBda=Ql2v~$fGQfw2T)l;aw=NL1jSNy8RMgB1^d3`9;=1fa2t>Nt>4%PaWy6$9m`A{ zLZhq67)?AKNxUCPNDm=?4_1c&6AH^ao=tIFf=SJzMo+@*p@kE0=sP|D9-Ya7?GyS@cYWuIQ0K#{ zHB~Zor6Y+Ydyu|gKR!uJ#vU`$ZyRjTh6U|*bs+%%=t12U-6OjG^Bx>tG)-sCAF%Az zve4brD@P385a9$DWZ1CC;7>&Z>{90M{Yb(_4SM)eZ<_MhQN)&PGOF~3Sy`QKN^cP0 zC0$`ncDvO_SSz3@z3lw{4@z7A0CG~Cre}lw;L0lckC`&2q-dBA9ntl zPxEL}L>lY$>BzD-EqMO_72-(JO+t?`8C7f(OLW@4)(U0M6=G;@mp&1h@oA`~< zDI6MI&3jif&m1VKxYe&%plWjgM3|@xp;HlI^aivAbLtVPa1|ofd;4|C8~^AQq*0kx zXXvH({ku2P4RajzrWW|ryQH$2my738MK-)ZY~1k?j5b77TYn~J&n|&sQ5hZ6WO>w+ zolwVACLW+_-}GAVg!B{3BFoaFVl48(rY>hVYuV&bOZPjW)^3o|x|%6bO|vBE?T*Kp{cAo!g|f+pkPDWGC;rhIwQO&pN^t`Ht3ySgG{AEA{dx ztXt}+vV9(q{1ZqX?qdGesRE+7hs71_UA3Yt9YyeJIz=>fHT1op5M$rHSs~cn)3<;Qw8fIh0K?lx3PrU_L3X$!xLyB#XK%hL6r()`E=r)mo<(Ox9g>8^lj zk~LNG$o7IB4l`tx)Qp?%HZ3p=$5OX%Gz_z%%*IvMs*vP>(88Jj2I%;*PeKbHkAHaR zJq-62g^v1b{DVE)wh1kKsN;ieLtP32v!`=QB-u2@iSGCv()*H5lG+m3p{}19_C(X8 zLtWoQ9oS?DGL=RSyJj7ghdLejIVSoM`1Z?jU*8l=ri~_l6cm8>TfuJU`2Qy5c;l;IoFN(Tpb&kM`?DQkg#e? znS+^Mpw@1=KW-M?l3JeJuODBn{qQDVtvw6?=(3&fH?>y5?Z->)R+i3-cFTBc+qsj^ zop@H;*^xw~+UdL6k?YelKR~?MASPPQ2E?l+yk)Kk1sZa(!N{q)v(d;Yy0hWPX5B@k z;v%}M)tzSQj${AVZ8ew$#vYe|a7O*WKtN;4TnJQ_nF3(A10DDlR;$ZQ>M~ ziV!e#x}F*?-NWQX;h@u$0hAU0x^+(P5a;jV!2Rc z+DohLta5mZ(xk;aOG|r^SmP&Jl#r-$rUHpYegb{vPJYuHMx)(IB*YQSW6EnL88um2 zG^&Z!J`exkK8KG2JLl>fe0*rS8sk`?*ur>Q8V+6Q?* zz%$P5?G0d`Bb?5*uSF0^s#(*S$EOa;`kiqX;yIGUlwVaOj7C<~l?s4ZqLq$bNwQqY z$f~#qNPp=yw)iFdf6>6eRR+!j6RfH5#N1k>;n=RV)6_ZejQf&bj!~bK9m|m}#WA*8as!3X0py6?fOYx#DKKTNQVe-BMh2#l;ib z&ThL5`LVz6^a@3SFM!|f3*5SER&?|BR2!_Z5N5HYbH`MUQt$jBZ|dVq=YvqD=e?#> z=>$Hs}F@5{~w_`B|LxHyQUFXw+FVpWg+jxPXnKpq!f9{5Kc@T=;o zC!BlX*#%ImqyTE&r^lLKT@v+cs>;_iI;d%1SJR&t=hVng>=xWySrNVLvi7qt1veE1 zwWyS!7Tu>`K(5lvg&ORwPyTob7jaOzSHvA2e)*vGGoq=5!UFRFBL9!KcY%+xy7vAP zNFYSf<97@4GII!<3tYg^me)}G!x zr`mc>71UZyxT{rBs^YC6R-HJYQIv~T=KuZe{X8?1fVO?#&;RiGka_lf?X}lld+oK? zUi-EU_aO!Z@!fN0NK<1;DVBXIWG=z%PTWlFgg(yqI?)0AtfRHFxf-Dl;c@H<0QOiJ zEhhFXqzS8{==!?h>R4Z8^eE-zl7-_#awz z!0_J}H^bk|lAB*(2c(qGosXu+=0)?F^N)uSEts z$WwsbhYFz~`ezhiM#=Db+f%j1zPH|~Phi)YnA8F<>t{vDYUZ1{{UBRp-XqCzzTHR^ zXGiGH&26WNRkh0B-{v1eqHZ$i=8(-k%w)fn?9hzls%+C6a%a zTS3%NCUK||Cn_;fK;rVg+=rRYM%p~7Rzd#9o}|`PAOIt4zsJK{BAYt`!V}r|@mk_C|(z(soK5{k9aTV?HRp)cH=#eHH zI_43yLgWm^e`y-G=4Dfg*7xn(9ZVe-K1>)Abi5;_wUWURjEq}B79#9DrnN4RXGOCK{`m6rDZn8jG{(TlROCF%IYA5Uz79`+}WZQ-?oKj?4+dmac( zas3tdJaJ~#N1t4~GB^2eEbICW^P4Z`pZWhiMlk(E1>ygjsr zD(R;aKEyDtRN%QE+Z*!_Ve9g^W8bY<}38` zy<+o4IuS!mg*V%bw|f~6^E3X=WHk4~X3rEzp_mhl2W>H)mkh-Ny8t2-H-~6La!fU2 zI|NsJ>|bDIP}~-=Z?J&Oh`)^C1dp6RZ!Zy9xy>ENjUHc>+^w!lOzFlU&wfpr4r&>q0dshxFY-`exen|Wnn zEil!ddnK+7^A9I~6Tf8?=OXh15d-Ivththno|>%tJsz4G;^%N>=ls%!_}51>L^T5H7IxM1K26HN?+mxfxUz zjI74CS9CmN`nXK{ITlHCZTru{GHL&>w*4mvnHlF_r`RBT4C>kb@9sUI{cL*9oELDds2}xt%({mp~&(BH<`N#Aeik;XHM;Fr&$C$Z6%sCV-qxWl3 zwds-AQ4Lv8e4ieI{l`r2M?GhI{|oaou=%~-^n4z3nYkqjIl9)&qALp_hdBA0h&}g8 z){y+`72pI~}oTl~> z*=YOt>SyP_M6HA2s|UZy9-l+TX829l!)AQ$J;Sv3A|YnY*WU#tcGeuoZ$^Dtd-Mji zv}N(83!Ah6*NOE(o=!!dqXo!Wv|R?L=@h2epbX!p_48-d-1{OB7(mD z6y}he;Ya>uCAqp7Tt7nfkgLS75W%47VlcAv8@({{P0EsWrx`+J^=Kp&Slv78<+klU z)M`9e_^rJyAZG~3_&GH?RRGh0c^VBk3P=~D^2R5`q$_$1Y*}b77Hf>GWqjgeKZSZ8 zlMD!)ic5_c{v%So@zC_?Ix-6p50SlVrO8f}lrON*t)(MfPYD-1dGj`uNSREP&;5`p z<71bpEsuHFwjNf3*Onu6Zq6FxZnbr77Jg4AB00g&KUK+BX5~Lz$wU0))9Ohc!~)_+ zy!Vj7$IVP6UCAr*d(A!1B|bhpP+nHmPFB@>DciL_tFmF<_@ygLBezewG9&_uJ%)Zb zgNe0wXFA+c2fShM^4bB}ev*~#d<*yXF<^Lg7UqL0eum$>%LJiJv8ivc>hl1ycy7q5 zZ#d;r%3UB`E_>bQ>9sN>8u){$Oq9e1Sb@P;sAo4Zs!a7k?)W zP(}0Ue(xm`n%)O{SMe*d@?3^j@RzpW_;f+ZcBWua?}G2B;GurOI$N+$x?oyPekJU8 z+-oCffj%>hBTrII1@7;iwbEuCna+Bo56*49v%YNsc%jnoa#{eN-8<`In|1bSe%7=I zesb@utv2iQbhotj7<}aTS-txmx{Zh16yKRiUKttLd$PBIZp=rKiOISG$vwP}*>L(s zRiRiJ=4%{p;M74Eo)795;fGWrGbR~i4l?IW(r_9#9_7-31DrO{>}yAh?n{i)OHL6M zE;a@~qjS@@76DCyiPxmP@O#SHv zS_77Dq3TX25+(q>KtjRT?1I{8M{Uc-mb&)5LNib3l*Xntk6iJlRLf_>oZIEEB!1{i zN^03x<3!|JI~d&(+?=Ruhd3u-+VL1^b@7`0wJm%5JGUnZO^zSBP9=iTSA(0o>e@qP z16n>Kr;eE7gG^HV>_jHDkfOQG;rQ9xTJ}wHZokhI_1idPLSFON;%9F$Nz!g)nm=?x ze)FXG*_%kZ>Bda-zzO}D%j0KnRP@D}=))%TZ!YF$?dD|ryfSA3Z-r_uJ1aNhs4DV7 z?hTD@_4>tEfZ>An!K0bo11q1>ds^s20@s>BEVAlwR5m+K)WOZ}+lY=&yslhoNNk?zV*8BsqsQ4-8yBt7u~&TT+XgbSO-4?HToP9flji20=IryK$c|DJ+;sX^ d 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 z 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 TG-sc4wX7A;l7lrecD)6&?3W8^ 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

    *pHU+@dbWp_7pWkP>D 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 X|Q0Rr_Slu;x$2j-(k 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�z{hZO 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

    G#I-K46o=gk?;b)~=l_VqXhe);&{vrT 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

    lE7Z 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%0D`2&plA;hApz|f-8r#6MsLwMM~@FE$+q8C`;a~ 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 mFJfWo- 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 z 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

    %qr6`aDwNr9Q|8N`tnyX4<#p5D=_GN? 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

    -RxE8uR*L1KFzOV;(`0`-GWoZGU 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

    (F!tRqmw;Z)tsjFYrgfu8A+!F73YH@>4bU=2B#0 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≪n%AT~I+yzQU_%d>QOl6JxxFPm+Xu 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%0Dc)Pu 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

    )n_2 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 z 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 m1}5j%Bp-09K4&X%8g)1&H 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

    sH(0yAkP^WW%x=7>R4iNp?W@A7q(zweRtw&xm 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�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�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

    ^+L5TL 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

    AJj6P}2i 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¥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%0AuT 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⋘j05raO8hDNh)=wJtl#&j zB&L%10P)&=F!hgg^J01OcOtVcPJe5yTziJ83qQ-IR{l1(^rs=entl0A;^)Kf1M%Bp z$nTr`@+&)<{bOURdO`fw81lPvUw-ZQ1@QZ?_#I}*uV-I=Blx*)Z&fde-)P9lc+~F8 zulN}DBltZpe$N{6tKXMj6MptPTGj8xZ(~|N`95aCZY0Z_-mg}hFGKhR@%y*uK!Z=yL(^x)#DezZ%q7NG358)zWfFxKUb?doqcG| z!x{XllKSt}^nO)Z|K%1jU+!vELz3U+8T^vR7d?>RBKy^*x9C5wNP^T4YBEtS;=k7IM*Z> z+i_gqxu;bX^9)7KlgYX8Xs~vS&)&EoDH(YdSdO2K#P&7w{bxg~=qci$2=rtIjTrr=?ZhB6%KS%(H19o^tHpif8%XTGc6%=gi-<-d3S9t4KC2<(l3*SZxE?T>MK0~zN^>wma+Pr#1!*gL#@8oKU#e~#1{TT zukQt8^#zG3cu%kIS>yE;)4oMk#-C@J16(4X)0aG@rGxZr=8 zPs;XC=A+D_mr0)H3i^oWcI%}qsIeF?6=rx2_<7LI`MCr41ZBE|z z&!*djoSRowk*-{F?Z-cY|3mz~k6f?YU#`*@rgPXoUDKwHk>B|zWs4|t^UU#Ltt9%~ zrIoVAx;FK&lx6Op>-Sfu_QF_{;!Zk%;?)?Fj*yC$#jKHkH^CS;nWJbzD{_PHZ~aKn z$bPwk0k?eIqw4kjl6H(6&XJvRcFTg;UU_-ma86X;h(2_xhj+&l%(j%M?@ZClF)?=u z`Lo|Yneop#f^W1Y?E5%%h+Z_ANjN5+%M=hF_Qz&oNGX(Xa>;x(RYge z;6(qu*SN|PhKr3tn@4+yE4)n4YidWVUo+-aRKggezgp^fd#-*{>~awf((Y>X%`yL1 z=jv12-GaUkz1HsMqWVnjmT~PzA4WeS`8+Y#-<6P0*2>rd*R{|~etV?8%iGlD62CcK zpR}KTj=vj83y|%i=yUv!?-s2P{f1Qi6|oHueMRhdy!ecOzLwaEE8EmYiCsE3*LYtL zO`EkD&K{+(4t*D~K4O0%u?vZvdyHpD6Hn>SOSd~ilVwl0g8iKKU5A`g*+21Jr*Wz0 z6gX4LnyN>zIy@^?F*0|2;@4}>(dM|!yC5;eoNrwsF)v4Bm|yxFzcgWq(8xDvt$V7N79cd{wMmj3kE|d>q&6Ijl|f$()14dWkLO-0fP)VR33~T|!my z6trzl#(EpEwZslf><8}{nS)oP8|+Ny0Wt@rp0d+9AE2Hospok^_1ykZ>tR=A>Y<)0 z&OKj~de&1<{J5+ilkZ5F>}ag~1c}Mrz&=%*@6p`&UTYTb7kgX(+@xI_DHPAo^Zek^ z4{PW7IcuZ-+WuGj{sPAeG*&dZ$LN|h={1#TTrthc^qK}V<1x+B^qNjIRmbXeEl#iT zqZx>4j!Lf?L1Qh_eGW~pF)ii!+?ZxzdQA};({Z}b2Y=G~Ked1CXzF8{sq~t9G{KnW zujw@%Xey4^>v}uArXNjTO!G#1O%P4N3A)cK={2)x+%e4y={1FHjC*35XVYsc(9~M> zx}Hj}aiSTDX&y_jX-8u_QTN%BUekxBC#JbGy=EJl{F8K_jp;QJG)*zhy7ZcYGdOO< zG?%2;l%uI$tk<jW?z_HoayTP0q=>&td5`d(bq* zGzX{GSkC19Ii^v6Ogrbx(Abygb$48(}*S<(|FQryl85c>2=+gUNe9u5Yuc*uNgyATBiGK zNUzB`TfRS`Yu2XMSkdHuLD#HFuc<`iifLA+*EFCRk7<^s*L0$(I!mu>ae9p(%|J|Z zRC>(_8td7*&!OoxrgF}IVw#0>HFAxy2+i2lZR(UPjx8U&9XtPwf2QF^OX7P@-dT|5 zB32)<^7*I%udRHR`R9RnP2e^6^C6eSlHdJv)&c3xnz=A`K-6<9o(-JqX7e4VoY4%P z9XW{~l(X;2a8F6zMz@OUG`;yaCVp|fPNBmtCdCB%k^ZQtIe zq##GmG0BG=jeH)C-BIk$%6dcJX1cSa?+Uo*V;*f&zmu4k6YG->i1yt?Qgsbl+pCG| z8*5W$_D>nxp0Zv1E5rRz*)9sm#fNA8-}LK<_mK<3m!;i&sMYEWuzrB`CfTpb`Cr=p zPM(jqX4tokYAK%aYyQ#aFH_#lwL0xPwTP8I8^OypqvyXkIe%F{%X-_t^!0Myn9#m*))#Q! z#?AVl^Lx(0iMeq9LA#p~d!X;h)Qv!HVVK0D7LP^m>mKh!kFW9V$bg6J7kcpM#>31u zo%39V{a4Dq=I0rXnX<2uydrqkeAuSs-84Bb&dH0}skbfr%sDq#WKPQVSjK?4Rhv3P zJRXjFa2-y2>vD7hc|K_a8I*pJadz>)c9TchWt`W=V-wCP#uCpdI?|2vn7(an#j7LR z6TQa146lT7bW!0r>&IB%Df`t-$Eo3i68F`WOL*EKc+h2eV+Wm=H+)dmO-oE!Kj-I% z{CsJNiN$NQ|FYhopoX8jmzZt@tNGc)51I?Xh9#!8OH6gqh4LjPlq_eRuf;YjF;y)w zU9iN|NYPbGOjm;p&wC9Ybn6mR(~|s3a#~JKYsl#$&BUdd)Gskzvcz<+R?m8DE?;88 z9qWs=w3?Qf&Rb%-bcu!av4Aa& zqXD#rQsj7FrWI1of3!Dh&+qu@<6L__ef~+0dQZmrDb73QY|k9bY zT$lN3UCn$w!lP`-u?h1vyda?+8`7Nvhnb6#Ma5S9oerjmwc|aKErXmk8u)D2cAvKbkEcN-#umS_u?5j+oSSj{$?k)k@TW- z|69pzlzb#MMC{NCkNT(d&%w#D@&36#Iac~dVvE)=U(WHU@5p)1Vac)adJj&Hm3qsG zttB>RwMUgm&Zopsm3k5p*2kv@kMIQ^^)0DiJko6ggURD_QikLI zpxz%5JS#8pD3^F163;8TFO2nNnl?#)lrq2_4v+em^yLZ3vGKlqAh|!JFQq>kh^=1h zQMXCGGB4uC1Fb*k&e(Yem8ZO2Db}a`QhzPmqV(y?IUWgp`hz(h(x=jf2p&!AJ?a(N z2kiBTwqJkNCA%PbKPsOc2s4#l#Q(1IsF$VwBd9;!cyuI>$4ePL`*rBsiyO~+r$@>5 ztj*7~p2_=!;Y^-*Xy?Cp`Zwyw!@vGM>3Avam}R}W-lI5`;o1S~)72UNMAClfy$t)- z@F$|zBdRWjU-hUf@z42d^cW)#uw>n-f3zxz_P+~V4Z3g19C|zPIHsN9N4MqgCHH?b z?JCE&pV;9pk7|&K(9?5d-Iv6pWg~;J6>-N1NwVJ*Lz3m&iUam`#XC}SO$#(QU z^e4!id^O&#=$wq57c5BblRmvY0b;wp=}{5MP0o#?b;aBBhrP*Z?U7^JEHTb!JnCxc zM>!u#9RIoJ1IMPEgU8PYBzJo?+tar_>a&vjhUDDoQf)l5-cLHE(ejYk7Gi6k^{A~9 zyD~X896K-jdUCtN%o}OLAhCOV9`$)?!%_Qf!#`7w%kehIoXEYD`mmgs{$92rssFDj`+~WBczmWlEThhLyn@erRDtw^eqIv2R-+ALv=9F^w+{)` z{vKXk1KWF_M;#^wjOCWBi{gI|ubFiNtow9)T~&Nt7wZPo#O0&)vu-Qv*llY6Ec}0n zvW_2k)R9u6)#K2-tSp9D*Z4z^I$735w@c=4bo|%F9#deI_$<1W_M+wXgzj@^Jf{-Y zjr_=?j+1r#t-~!@)p_Puqj8n23$rd=Tb!(`_;LDmEv&P%j&9cL%UUB9N-o{3YiFIb zA=;*EOL`p-HjZt=8 zJohWLzl+!u|Lcg+W5FJD)}MQ{_y5J`34cHFx&)onQLu^QD!LQJkALO-lu$N8*%zfC zWgcAGGtrYuXDo3iRxJ*tr3<)0iUyC|!rZ14D9 zrDZ6SLt+M4Kb8<9Wy6%!Y~AZ4W#g2EDC07-_D}jMLRs}|9_=}-XdhgzdEb=M2ZfE~ z5!f3mex;Q8f0q<*Q1}Ac!VkO zu%6YO?#ip=;K!%`w|l*%Y>2X|-+9#0;>|xP8>6hAvSYN8=)QRmWp2tIm$K*>a^AZ_ zPU}kcepXKNocqS)C*x#{%5P`>zU5Jz#>ckZb7Ea6>uXs*!unI=>-YYxPCI4Ite<85 z!?HeOF8sm8{e162>KekUdz(i&#Y@}&WvxrhWs>zJf8>}HU%z*>iz&;!ga55;*S?D; zxoGDE9ntfSH}@W6?7#w(GOM__wPdAeU5Sc5c=kGjq7L8*RC?IFTRuU zwj0;ipf5bnxV{~|>3rk*0rX=ZK|hIpaJ6y&0vG*XXHo`& z>ub;#UT#b;`@(kgCP%w!ksZu_j}6&3r@izyeh6}S3!Q?zgO1x(;a6rJ!dQa zw#}S>;{OL@{=Fa7-;006mH+?bFUQ4*Ue~UDUp4g@HIe2RH75F6y7&lqwlRVt~cGw_+DpRUxL2=dgJ<9^pzWo>pRdFJB{lH(dXV^Tpvb1`4RMm z_tF118uzb4-@DPcz8QUcy>WdX`udxU>&MVn-fUc--%S7CVtjik7kz_q{|5BAw;K2F z7X59;{fE&{egwVge#Uo`asLwZy^Y58wdmV#H?HqMUw?;j{UG|vJB{nZ=!;#(^@R`6 z|92VJSD~N$2>NF9Lw6hZ??d0a*|>fTeS4E}ef}2u{~qJ|a`ct=8rL_VFTT&Xz8igR zvvK_}`pJ)=H?`3J_Z#;wLErm;aeXcN_ASQs9q8*@jOz!{S3YQ5A4XsNka2zCgY^Hy z#`RU`CqII|8U2vkxPKq|-d5xKG4$yrfWGn(lQThTvdTwgBwF5~(J(SOajzFYKPH?AKR{nN(vrZ)85 z#`Ja**ALORANjC4XCVu7Kcj2Usw6%iQk?c#?dWybCcN_bF4zC7mwfIlY2fqhmpy77 zzvnC)h}~zDdpz6&i4B*&_%Di>Uq!2!@|9rCiGg~qx;rN z9(MEt=(RlF$ec$5x}2|gRGsAeN~-VN{*(Js73ewL;Mvbq{e4OOA^km!z6ZUQ_fx6* zx$QJ@k7gXbNBkd7)n{q9ANfPj+JI`~kG}J((d+Ozcc$u{bMmQ0-}975trh?EsrvYz z-iptc4)i(P+rL=!Yf|;`?|sMhgXl}qbGprZOx52rC!a9-PV`#;EKb$W?Vm#K-_(7L z=T*f2uv9(oE=ZX0(mz$``_Wg6epooCJHi@xqr&xrmvse0~DCis`2=@UKAEqqz@ zuSWIJd&K%Z_6uY8z_`_dM&_p6m+ByCagpVJr9oswBsi7ph= z9h+I#h^~-lHMD)`VF|jXcyqPR}hO~VU;W&D& zFE^&Py*i=oWFPMb<|VOmU&_ieD_Yyvq{dzs)6<6dW=QtY`>QtY@yPQoT=wCaywuqE zeh__PY;ylgdz>kMDIu6gno_Wzb;i@ zn~;8VtV8I#&_5yi)v0=3pb?!LbH>_+zKHubh2PPS0jH(LUXlxk8kuZO0_ zW}O=gmWD}xcAy_e|8>bTJ5_&If;{7}Xg)!F%D$_Q%jk>qnkUlFh1}n1#7Em6U%-cc z+Sm42g?=k~?RfcgYQ35JO4=^>rK~)E^{BM{zSP*u6WY$(ed614@-`(t+wf_?XF)bT zt5SWkS7gPaIg5zT6n;;1D#E9LdpEA{d(>5u&&q_h-yPrmYWwL5bbT@1(#*PgbfK7T zab{g7x-p&u)9O7cvu*&LgJ-j}bD2XEbocGeua4Zu(RK5@)-R+T3!}P}<7Ue9ARqlb zQnH;?au3M*f`0Dy@{d#I+_kY@XR0UmbaeZ46FWex)@Dy?Z2Z+iY@e$We4?>ii5(-h zQ`)yNH8y?@IHz8j-zM(kRP=kI@AkSRHFoYXqXc~&`t?%R*{S-({q@{7))VU`_G*be zDm9j;<1)-?>02MM1H^tsV%3jQ`gZSmdTJxf(2o;a$n$cC$$8Ve(b&XeeAeR`4(!BA z9~E&g$Hen*7lE9=rq-P}uF>(RM&E#5Yv*rL_4{t8+?VPk_8U^y^Qo~}@lH)`r}WVf zv1Xpd)9QUPH8yj-(nd1}uwr5_m3r??jZGZaXrI{7*PuUF^y^dgiTf%(6QFUTZ$cjw z{hFvgz6~Zl55;Kg=NTk9AC~qG;A!R=LO$N}41a14yag}Ae3JG?B!6NT$()$!Pn}P9 zCIoABS)19uU-Cr%Ch`ZV`txIQw$Hi8z&c`^iFHwL&O52GiRY)$`O}GBo`1Yw^lzl< z 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%0ABcwQn}qN4HxxU?;O(Uua1`8}>!Y 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 z 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

  • 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

    BcWd_2)euk6&;{oL_!& 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

    2dt9e;8)>v-0eR(lYo6w_di+Km)bvEM`A}? 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%0DHi}bxJIPX`Vhtx-3Q%G2Eoko7R0O^mAo`CdE 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≶G*caXQL|0a2%BiR3-`Wf>r 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�k9OchA%HQoM|4K*s@1@+< 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

    Sy zDUrga4KnN{i|i!GyM0ERM0|(KbM%k1MydaY7(neF{NBORgnZ*SB?q_`$>l=q3$j(( z+3GXuBOH;_mqM|>OL5YgjSgXeyA4R(9e}MyaSu?7(1=Uxbbx4qyHzRlk2w$P=0&>g z^lYC)5UaPV$}loM8x58+KU5&K#uLCBV@$Qz((=L2=Wj0{wWna#MQ6L3&liu(N0ZzXW_c^?M!oKCOHb%6f&fL1%_&JSTgN2|dE;SnSMEU$(G=z=+2n>%rc zH7(yTzb~XY3;rB*cTPBKY#w*$d+)dCt?m*18|bbujA)~XgE9sbwptRr3uU{Gs<2?q zm0b=XjRMHDIpJ;}b!qM>-_BBSraGGKt}O3TK4pi`=^q-eU~xJLDUUjKzx=7K3nW*HrJ}E zo{?9yAp960Y_jW+j;S_CV_ zgwfuX1};Vt=SIOV^^I%ajIh5P2w@&wvicO^ER~taZ@ngXZh-Nf$hPg8_ej&nZRQH#f3)X4Abx3zS`>BWI|H z!kG<;YlUMbaW5wk$@YL}8+QplpfHyuBZg=Y7h=fcR4*UB-AyhfRvU%`TL?l-!iU%j z-MyPe!a!=#^^D_uOyM-gi%HA6a$j)9vn(VPXIEu5uw!2=C7)~wn>B+X|8$RuJSuIG7C7Pt!G zV>pV&9SqgD22O-G#{XwLp_KMs4`&_}Su?}FeK@HlT7}WDekdcIAEl1gOIwj&0 zuo!qD8$W3~9zUTbF;~ckqum>a?C4_D(W{+AG?>?ng0P<PZ`?XLv?Vmv)BtUXoMGJVZoJ6nur7N(VZHoXp0 zM;P4|5&D=uIjCy=iPG3jmNpbIV$ab7fR!f;{%j$6eN1ep$(R%UH_fVJcA!L zs4(NEt#&VkW&Lq|XD$6Jip$wNUlGU?Uz`;o9)yZ!)BFno1lS-7`aH`91I!IeI64~v zU82o-_|ADuLoApwr(J#ANh1zMnsAm;i#2S}=x$pPh&V8}L=W2JlUs)F@LJ zVnQy)eP*_i)^PfW&!xKx5O22?7wlr2li&X4{Gi7KL3burKuF^ND1H%;lSPY8uOcG} zg|Vp!{D@KoGT_`v>GzIs|xDKvKm;DWq+^6;7S2VxzpTmFD4- zHtuw&amX5{nck2T7^+aLOe$ipt}4Q3MnBA#v~5I;_Sx@Sr8e-=*G!0DHZO701JIJo zK@7h%n|ATPjjGm&Q07^~XmI#E#469CSzHxfZY;Gx={WFyb@rSjdU`Hz9Do9MCcp znzq#}qK`%BuwMpOv(1gURA}zcPkNWFPZIfZhtKfWee?05^sc0;LmV06WceGMZK+Ov&m{ zgnDGS2<=`5vaN5p%F6ZE3#dF-(!RA zlf?(Wl4xs;@Q&wzFAc8B>-dlfhVMMbTR?XW0}aPq&M=ctm$M;%4Z5Ha{5FOyQgEniM>|bGHR?B_^y$0?E|VELWhTMz|DOL|4HE z*|O2zq&U{Vd2&hU{o)`(1AyF)heJ1jlw$LU4A=q{zQ|bw$Bw1i?h?}>2#lzqRVCLj znoC%_li0TM9Pq91I=C6w*cwHB(HCjbU_tr=VFVT?0>509wFnNGF}@66#j)WZ(V@V0 zm~e5*+KgTQ84QQ^TXcPn*Ifh*$0RET1+mVHlG9@{h4-~Vd6}Pz@f!P1DiJPUm7PmN ze2E^i6u2cAqCkKXoNN`j)1v_)eX^7xLX!$7Eh2{0t5QLVA|GiorT83zJn1SZ2a(!Y zXC%RqIYv;_gCSID&VQ_Aso@4Ka5Nj-2{e0yf?uy26B(qKFVVFukxAwe2lw{;RU?q{ zEi2$X@iM;vn|=9=9tW#h&lw$+^|OU;!L{(B<`$(bA$+NGz&dS_h8vDFL1sRT^UTAI z8S_`5bG$>Zc8@X)voIvhMxtkWI>*-ul5=`+H6HV$$$YtlnoS499VkZ8cmf}SYb(y0 zL{vcT9U!dgJv}O-C>M=n55(v2-zpTTP23jh?bZ5=k>LM~y>{<4heV$#2#8`jVIdL7 zw8F{iDDiZIuY{o|h7))x^o=4?iZ=sn8`c7Y3U{;MW*KmhB3Kl3$8jBwTFVX8qc3h< zUz#9}<6(DtRjfASh#tS}qxoi_A0@TDq=!oXcWh-VV`koT0C{ zkP4_~h8_maLY*@n%ivtHK;x!bGX6om)W2-K`E2s~>=MhKoKDfZENB!x5{AsIfHA^_ zc1~CVXlT8?TRU8gJB9%RJ1E=^tH|dr%y^~n7KF_9Fue`GGo0-4J5D?qUa=-;`hyy+ zWnP-Q!VJ!IfeK_r)Dg-NeztMR^0Qm4nF1SWe;gk_bD@U{@Oj)s1Ey8dOwPuJXAS}? zG4Tmy!c7e0DRHDx5f3d=@6>m6j~Cd#21lN7&(?g-ojPL_SuiJO5pcGtZ|}d<3$Fh_ z`&!EK{bQmjf$|QEBf$sOj+5X6%X(?|h%!vf3Crb2kIQMW5A_|Fkri*SqmTf**5`-M zljw%gbDpr8$DQyOJBuK(qbH1E!=XoZK{wfGspB&NNSbKly4a`*OCkr@`6$EqM<^;Z z=(vzioIqfX(bY=0o|{SL;nPNup%oaB6==g6qx4y*2&sPh2+P-CAtV@AfCU9LxA*zq z7Y_!Q%xp-oE$|z2E<_9L(96J%s9pm6wdWNqtqrtA-~D*cX2&Tz`scXv@c%>@zZXJQ z<`**XyQjP({lNakyH``~~)I4SNY=Gr8^xu`YsFP5~9e;?>pp9aPPvJpR6}<%te3QO4A@#V*Y87l_UMJ$Az}w*n;>sb6 z+5}e5bWM*bRV1c~b2Q3W&u2?++r-R81S;75tQs%5nQB5bIYFSZ<2-ukqpxKv10o^% z=oq$cJ_|k|A1;1Bm*vIIPc}Ap&Jn}clnlRIUtG}DoFc6-^mbkTHKV26Mqj1jxE~aAWd${C*(5hOUxyv3+stk z2V<1WPxmI@qSI%aZjN4^D1-~f5C8}##B{k5-aq*qIkqHw0;sbLe*4m`2_oVC1{*eG zGra0SA({17Td=_cXmkZ0*TU2|C!QnLy_2_ZFa8R9a&nDx>8sza5gHVTM%`Cmg8LFn zZh<6@{IU)H9xv*qhf%fIdy7P}p$^2Iok02MGrNdL<1k{gL~wZCc;7|{#;kf^PC-PJ}ZkAH%Jo87xf--Hv`+$=QwEV$Y@A} zldbRU{szO7`R0A;j*rP8Zj3&EAR^$1(%_t-T?b*hz;b8${?FhVh$5&P zpuuZsVQ?Snsu)YXJ?H50g^^&}vq8(~=F@Ycd2YDJ>MUNAdkuWtBdQMh%one#n*+3g zYXLlh*Vc3p-MzrBp;0F|ATUnYPA;JsCTgZu4XiOUa6HOSLX?%C%?ENMuS-5|1A8i)Dm=B861#B)BZ(B3zHSfz4JO5wqbzIdg+u z&J-2u{hD)4c$_FRgz$IC7|EJ7Ju83h#zmhux;4ftU!uwaU0=?Kw^{2tx8-i!doEJ9ZNV||oOiHi?%Xp!}C3nT;coJr|H*Ml)gjC`u^ zfe(3sDk<=x{_C*W90@4M2pTpmiG^FCg0{o?ML*ysoY}q~uy``qRFO;B;($IWejU@+ zn7<~|J#A3WhK$JQlNejW^$dxydrunK{W}2gAH>@bmFR76>A)nGpY9k{Y-X7@Wv*1wLm~ zn)|iX=1E*PJ2pLxyG(0Noj?c>X2oLyLYB>O=%xvWfRfh2J#bdRfQvip#EvU&9)!7( zI4Wm3Q_71Fe2VQW-=C>J2=;TsfRF1eZvnlg7)vhMrjHiBcn65#mQ zEUk*Z@w94XBHTWKa^c7^c{pdFN8t> zjuCKqmQ*_BP?4*_?QD7=I}3I^-O20(C>t~}9f z1I6{ohVT3^^PmaCTjJp3BS4h(8a-M@M1YF_51fho)ILc${m~Gs@oo^e8$=g6*-vni z`tRIXLQpSYtK5_-egdp8Xq3~d%SE__E?B=zh%nC6FLf~_S`4v}a8js!ZzN-By`;vc ztus`v!g<1~EBCC^>$ev_6I|aAJkzGcKll% zu+aFu2N)x`K&e;ZLBuWumSHq6$Ap04o^5b)Hb3@q}sNhXKbu)7V+xPyr z@S9fwSKivO0v6qB>)Wo?Ow*y^E*gD^`ygHfqd9jmV}Xj$XzXv?K+4U9v+m$NBZNkn zZv5L}`(PBn+My23(eD!)*RKjOl7F+7M|`|2$mUc^R|rQM`5+Jji*yiHUT3FIbj4)7 znK&2CCg-A`g8NyrCAJ7GweT`pOjqYWzxU`M=Ko}LCS3a25+0oeq5@)gxOJVodsaBvMr!EM zhvjAxlVKVV!Rp}SMj znYHx&HrM$C3bPaplZc6O zEk~TFx!OICJ@0ccrp+FrwC_GKa~p0$Nqgw~H$$u@&UrhIP_5VAk6lGQUvVWyme&I= z*Q+rZ1u$tu&_$;l57aBV?dO}YicwM@*iCRZwV_5tF1Mea9;^GW?o%V%?XyR37Icx= z{B9UlxNj~U;(nfN#g#6D=T2TOe@0P(14kYN^cP{%vw&CcSzgY08|DOunw$Ik&(ZYb z-`d<$-5l*OYCFsY+-6mO%X5p=4pYs8-??cQb@6f2@vy@66LN-@mB{R=zA4J!gocwq zgxdbDVJAWaG2_!^UD1303jlfoozx>7XK&s@c z7$UMyA>Y&g7w(km@Be>kmh)0pb8exTaP?b>Ii`C(j-O!-TK98BK#wK=D)O2KkT;cT zz_CnTwCy$q#y;DwanqWZn~$0tH>^7p;q;f24<`iF{cwJDjnVe{uNR5Q!<v)w_>}j2eJ1#g{uPE;i{4*8*&0 z+nTXqK-uCAMRebZ+@P8R1x4q-sN`#%`U1yJeCZJ(7vyq9Op`&p@(O&wd_Eg-mj*XV z<1m6{Yakz&A;T$ik1*Mib|u7eeU^b9aDM_f;Z$8AT`X2^!jy%GU z&GI2}lFMndu1O#6TKtIKkiJ?s{;5p>N{2#>G;Vb}p?Dgfk5sD=#F#zLy(aLF<{}L^ zGR0+weFUZkf9u8_rjH+p6leRHEyVRY7GPCf|3Bh$jt>AEEwVZcJGP|Rh%^8sCHQD; z1N3cv@V1?1R6*FlZf=W~-%N04e|9*vEOnL6Xq+!=kez`s>>JLoLUrSizQh0zrfJhT z8cZ?1``xAQ>fIq+QzOfBfuJw&Vq31)*juY>?mu#x5a!p9$V)R*=j|rYb=;;z`25=+7zfG5O z?k6s|h${jehjT7}odf74Z~##Zfj@_P;~WG6Aa1?+x)vtRZuV~cOw5wzB-V#{i75MY zyQn^8T-CN9Qp@5G7v`KAOSR%V9*3Mjc`TwmWXWljDKh2Gce7sp8JReK$sx3h*=P1A zCb@cNzFb#ah+~(Nqi4LWHy7Q|Ft98QDRfQo>l2usMTnM&zkrsBa%~U^jvxE` z+aq_jOW)`>_a(=WLy4tfJU#}=L+EYp_~wZS)TEq;U)naKJ6Ikz@^Xk33N~v-P`#p5 zU# z=}~W3`v!w$wcqO46m#U(u>;HVN3fBjY{x@f^wPs7%C;pj&hJ38+o(X?SJjNmz>85? zaK}cp7WbhgTbEBLXH>J>M82q7z@-0zZXuaRQ>k0Kgel_I!Xejr))Ow#nGx2G3w#Pf z#?1>nV1~y{T*o=!!3=j5JYoifo}Epn#u;iviG=hfJ*~{G&(5;cQef}@S|G6Ws3vPr!gN`|EkZr&%SKj6>4x0+5)%C)aWban1=ogYjTiP3aPDkX5eXTkhRrdzigL~M zv>=q~0B8@l-P890HwD$JK~A{1Oqye}ow z6GFnm74%^aW^EK|XJS4IjtHS+eatg9%akyD*tg7>)$;Tf#3#gCu{|MAf!6lh#eKOR zibETSg`!dVk*n(mu#*AF55^wj83nnBS`BZw4g7{kSUhrR3EXDm5h-S^`sDl?nhdBg zwE@4nBj@7m_Y?ZFkVxPS|Q#>?BXw)%s9AUF0clkULz3a>Y z!o-|IOZ411(uqEpXFG<fh`tNz?TnhwAP^8mJs>kTBN3~fL9JGVK|Elm6ac{+B6i*j_xOe);}G{>GJdIV1!-H>E9n8VQy$tUz;`X3`& zE67PR5Qeg_jC6`W`t{d) z<;`J2c!tVP1vfC^o=)>B$}x0?GXypeUe8WvRON1Rrd-qB8aD<64*eh{el2t=P^z3d z{fu^W%aW(>p(%^g@NI6O~&4jL{YzsA1SMQ4YVJ`M@I4A26L#{wrelr%n*QSrZwJ482uE~@3p zyPJz^!*SZNNN^yHlA>gZ(MPy-eN9EH9ph9irY`L;bjwj4^bZEDl&eu%x%@Q6Wo=s1 z2OfgNsUsW_^(Rs0E`mWhq zce_4Y+e`~O)}uj|QkT_cNWuf?IsIaDrFeS0Lg`{?^0)wJQDS#JV?NcCCPYTPM+bZi zVKBmqni>=o1RL_8n|3a;=xz7M6T%Wn>r`2WND(Yt7FQPBB3H5(&m)!twS$8XtJ1RF zoAKj3o7!p(>e4A6sVrx{)RbcFVHPk$g$tc@n*L>y%v*#)-$6hoA_s7k6b86K%7B!0*@7qEaZ_DVL*Ra&^74a z?ZHPE{NuvoSWQ&Zs=%)kOwhC<)97EHo9Lgk6xV&l;+y5gG98XGSdvu(Uq^st$|&*j z-Z2LEgoU+A^)vH*=#8HG%MCas+iqTau=D3v4>xU11kg__^=9!2pmqS=Ru91#*H&}L z9{ic@0z+Yohoc~*iy>GM2H!C-A$kYH3iC}AgUSqpTW73y^~C%$*kv;{a(Wu=_<-}$ z5L$OIR^F>2mLmjeI=2W87iIpanxYtmW(7NWIcgrbD_K0sm{|QqYftr^jE&y%U#mWp zP!VMytQ2FR=Q(r`R(@v5?bjJ#0JqI=&_*aNespz)5^wP@Z!)-4-lV=)j%+KTM?%Ve z0W{@zxnO>>ex8-Ec9mH*hw{wWESsh^dgaAv%)M_g62_zx%f>;tQ47Ajdnf8S`;x}sDI`*M0BP!tl{cG2qa{D`8a5UKmJ50`1i!- ziHmwbJWB!>&Fj>2A%%$ z;pG1vzn(CSKE_!4l(Xq`HJf5pR;2m7K_p5zD!YX{wb?QI^(T#`40XV!ID20!X4Mdk zN{I9Z4OHBNkwE1zuzS#%J9Sd|Y(mRD;CObn%g4cObt{UpF9So6Ri+^gz_K~!3@DD+ zo!AW;DkFcZ4>V+DvCoHHWKVq;6&BT#G(A2qdp%Sk)&1h>n%-(Vd+&Lo7M#beqhgwg z(-8d>^Yxy$Q$lr1HB7WlH!$OLKAMs24KS2$JKcTLvv@9!+mtCyJz27BEgN+HVfY3H z4yOCW!YWx+sIcN80lo~*lyz}f!h!KmiDbRWj<)aBrYn4#s?VEP;L1N9bFgst zQhtZ7SaxOc*9GT2HG457o)K2?G}-YHLHr!P*RzLZ&g_5a6772+WF_2bpe{WZWn8F# z@uhuC0-B7GeL5QxT86F~C?RUP6#vvgy~@>oz~XwF1tp?0 zV2|sx;dC6;1CxTaZ>1{ zNxcJ#Y#i}&3J63-p-$zY;(}dV9#&G2VzEppp~fO1;Ga-W`|m;>Fe*T=g_LnTAEtEi z{QT?N3w&DVybCsSEdnLo#6>X`?;}TBEh}DK^4Is(y}A|uKtk$Q{@C4Mk4(|~GC<;1yP62Tb#$CHSSt9c;~X*NJ-1<&ksP}BTLq8LWs z^Yxv~E{e@Eo~f~XA_C8>M{LA$ea9qTpwOP<&Ti7IrfHBRctK@(gIy>_0S$#zGbQj0 z8?57_HYE)n{1z!#3Vwv?A65oE(L=|{%0OeqPHDJs-)f#&Q%PS9c`dR&-lpB|%&aVc zLuH(Og21n>?OlmgxRgN1s9cbKlkHwDJa;ot(PXO7WSKjOD^C^X0^%?`<7{mY@P!)CftJHtdnt_(cvG}Fb#0pA@qFs<>Z4q zJRTo)ZuO>mpjiCYt<)kQef0vX+Lk? z(-#;dElX-CJNnfQ#e>D?s~f&J1C7KV+90@QVkbKw3=d11aUtIKqA_h<`S2@bK#YR! zgS?V0ODr;I*b(%9GOHp=*K1p#tQ8JRXv0raK8(4~s^;TUBO$Ub%L>+by*1Se7)tj3 zKO#df!>gmkL#L}SpJ!uqI&sg*fzQBJ4LyOLF1p>gFs$`KA}NJr)s@!nftK%3iH|H( zItmoxA0A3?94qUG++aGN!dz$yELD^7m?K%Of-r@YuIAz)ZgrgukKgXENMT6z1pKb& z|3d$+xv}NhleF}M6pY@K)f}oQkI#^>@XaTVlb4iAmW*(2w`(g5{+myupEnG6`8!6T zNoOFd@V0_VEHgn}<|YD{R?xW8Y|I3oIAY%FQ6Zm$(1H{53gkG3s& zE@IuIVP4dEoZs~V5MylD7>om9BRFg;i4`(yrXP3T8q~^P-F@2_nuQf}cZ1ZIH?0>7 z8^yMIKAruJ@Hz!Py*9cz$a%&~#(4!kG>EsnU}`)l2KicZ&D3ZyyfG0H$sC{UobU)SGt(bqhx*onm zG!HvWs7prm#4T!yCKx7QR70?6V+h*>JlTnK|D|3Ok$Pq>y@YP1Gr)g%H_cPIu@vBbx?;#bJ!Ta2`1g+z&j%O?jveK>qCN5jL9mv2wcPcDB~>XfLh zM16)X|Ht!p{+nyZlBrMlbqLlSr$i5RhA{9nTwv(Yi*k?Rg;Ckm89F-< zb#qdeZrx~y^ydm}d-r@E=f;Ba@lo(tfTVWoIyDCeuAtaqmUTjt|58wC*h|}uBOI|! zC_4a(3KLRWWx?1j@Ta)K9Mfn?3X`n<0d>VKu@_bUw{% zDVf>L)U67v1Ii|p)Hp(G+yKyRD_RahK0)&))R?>UDG>$_HD(_jR{1+NK9)LcUE$0s z6Et}$m`%viiG><2Ris6m^E)ljcD#xwh7veW${TXaiC0i&+$m(QnooGVrl&&fj@wDvh-tiWG|)AQqM1n?vJfq@nRi-6VwZcP

    a)=l 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

    imPG_hqWs%;F6d{XskbmP^s$W%>hi4c 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�MtQmd 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�ecGpv(iTx_gZy_B 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%0D<|4Je(9SgJ}+>hoyIsmJSHG52F^< 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 None: ... - def update(self, data: Buffer) -> bytes: ... - def finalize(self) -> bytes: ... - -class ANSIX923PaddingContext(padding.PaddingContext): - def __init__(self, block_size: int) -> None: ... - def update(self, data: Buffer) -> bytes: ... - def finalize(self) -> bytes: ... - -class PKCS7UnpaddingContext(padding.PaddingContext): - def __init__(self, block_size: int) -> None: ... - def update(self, data: Buffer) -> bytes: ... - def finalize(self) -> bytes: ... - -class ANSIX923UnpaddingContext(padding.PaddingContext): - def __init__(self, block_size: int) -> None: ... - def update(self, data: Buffer) -> bytes: ... - def finalize(self) -> bytes: ... - -class ObjectIdentifier: - def __init__(self, value: str) -> None: ... - @property - def dotted_string(self) -> str: ... - @property - def _name(self) -> str: ... - -T = typing.TypeVar("T") diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi deleted file mode 100644 index 8010008..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi +++ /dev/null @@ -1,8 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import typing - -lib = typing.Any -ffi = typing.Any diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi deleted file mode 100644 index 3b5f208..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi +++ /dev/null @@ -1,7 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -def decode_dss_signature(signature: bytes) -> tuple[int, int]: ... -def encode_dss_signature(r: int, s: int) -> bytes: ... -def parse_spki_for_data(data: bytes) -> bytes: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi deleted file mode 100644 index 09f46b1..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi +++ /dev/null @@ -1,17 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -class _Reasons: - BACKEND_MISSING_INTERFACE: _Reasons - UNSUPPORTED_HASH: _Reasons - UNSUPPORTED_CIPHER: _Reasons - UNSUPPORTED_PADDING: _Reasons - UNSUPPORTED_MGF: _Reasons - UNSUPPORTED_PUBLIC_KEY_ALGORITHM: _Reasons - UNSUPPORTED_ELLIPTIC_CURVE: _Reasons - UNSUPPORTED_SERIALIZATION: _Reasons - UNSUPPORTED_X509: _Reasons - UNSUPPORTED_EXCHANGE_ALGORITHM: _Reasons - UNSUPPORTED_DIFFIE_HELLMAN: _Reasons - UNSUPPORTED_MAC: _Reasons diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi deleted file mode 100644 index 103e96c..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi +++ /dev/null @@ -1,117 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import datetime -from collections.abc import Iterator - -from cryptography import x509 -from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes -from cryptography.x509 import ocsp - -class OCSPRequest: - @property - def issuer_key_hash(self) -> bytes: ... - @property - def issuer_name_hash(self) -> bytes: ... - @property - def hash_algorithm(self) -> hashes.HashAlgorithm: ... - @property - def serial_number(self) -> int: ... - def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... - @property - def extensions(self) -> x509.Extensions: ... - -class OCSPResponse: - @property - def responses(self) -> Iterator[OCSPSingleResponse]: ... - @property - def response_status(self) -> ocsp.OCSPResponseStatus: ... - @property - def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... - @property - def signature_hash_algorithm( - self, - ) -> hashes.HashAlgorithm | None: ... - @property - def signature(self) -> bytes: ... - @property - def tbs_response_bytes(self) -> bytes: ... - @property - def certificates(self) -> list[x509.Certificate]: ... - @property - def responder_key_hash(self) -> bytes | None: ... - @property - def responder_name(self) -> x509.Name | None: ... - @property - def produced_at(self) -> datetime.datetime: ... - @property - def produced_at_utc(self) -> datetime.datetime: ... - @property - def certificate_status(self) -> ocsp.OCSPCertStatus: ... - @property - def revocation_time(self) -> datetime.datetime | None: ... - @property - def revocation_time_utc(self) -> datetime.datetime | None: ... - @property - def revocation_reason(self) -> x509.ReasonFlags | None: ... - @property - def this_update(self) -> datetime.datetime: ... - @property - def this_update_utc(self) -> datetime.datetime: ... - @property - def next_update(self) -> datetime.datetime | None: ... - @property - def next_update_utc(self) -> datetime.datetime | None: ... - @property - def issuer_key_hash(self) -> bytes: ... - @property - def issuer_name_hash(self) -> bytes: ... - @property - def hash_algorithm(self) -> hashes.HashAlgorithm: ... - @property - def serial_number(self) -> int: ... - @property - def extensions(self) -> x509.Extensions: ... - @property - def single_extensions(self) -> x509.Extensions: ... - def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... - -class OCSPSingleResponse: - @property - def certificate_status(self) -> ocsp.OCSPCertStatus: ... - @property - def revocation_time(self) -> datetime.datetime | None: ... - @property - def revocation_time_utc(self) -> datetime.datetime | None: ... - @property - def revocation_reason(self) -> x509.ReasonFlags | None: ... - @property - def this_update(self) -> datetime.datetime: ... - @property - def this_update_utc(self) -> datetime.datetime: ... - @property - def next_update(self) -> datetime.datetime | None: ... - @property - def next_update_utc(self) -> datetime.datetime | None: ... - @property - def issuer_key_hash(self) -> bytes: ... - @property - def issuer_name_hash(self) -> bytes: ... - @property - def hash_algorithm(self) -> hashes.HashAlgorithm: ... - @property - def serial_number(self) -> int: ... - -def load_der_ocsp_request(data: bytes) -> ocsp.OCSPRequest: ... -def load_der_ocsp_response(data: bytes) -> ocsp.OCSPResponse: ... -def create_ocsp_request( - builder: ocsp.OCSPRequestBuilder, -) -> ocsp.OCSPRequest: ... -def create_ocsp_response( - status: ocsp.OCSPResponseStatus, - builder: ocsp.OCSPResponseBuilder | None, - private_key: PrivateKeyTypes | None, - hash_algorithm: hashes.HashAlgorithm | None, -) -> ocsp.OCSPResponse: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi deleted file mode 100644 index 5fb3cb2..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi +++ /dev/null @@ -1,75 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import typing - -from cryptography.hazmat.bindings._rust.openssl import ( - aead, - ciphers, - cmac, - dh, - dsa, - ec, - ed448, - ed25519, - hashes, - hmac, - kdf, - keys, - poly1305, - rsa, - x448, - x25519, -) - -__all__ = [ - "aead", - "ciphers", - "cmac", - "dh", - "dsa", - "ec", - "ed448", - "ed25519", - "hashes", - "hmac", - "kdf", - "keys", - "openssl_version", - "openssl_version_text", - "poly1305", - "raise_openssl_error", - "rsa", - "x448", - "x25519", -] - -CRYPTOGRAPHY_IS_LIBRESSL: bool -CRYPTOGRAPHY_IS_BORINGSSL: bool -CRYPTOGRAPHY_IS_AWSLC: bool -CRYPTOGRAPHY_OPENSSL_300_OR_GREATER: bool -CRYPTOGRAPHY_OPENSSL_309_OR_GREATER: bool -CRYPTOGRAPHY_OPENSSL_320_OR_GREATER: bool -CRYPTOGRAPHY_OPENSSL_330_OR_GREATER: bool -CRYPTOGRAPHY_OPENSSL_350_OR_GREATER: bool - -class Providers: ... - -_legacy_provider_loaded: bool -_providers: Providers - -def openssl_version() -> int: ... -def openssl_version_text() -> str: ... -def raise_openssl_error() -> typing.NoReturn: ... -def capture_error_stack() -> list[OpenSSLError]: ... -def is_fips_enabled() -> bool: ... -def enable_fips(providers: Providers) -> None: ... - -class OpenSSLError: - @property - def lib(self) -> int: ... - @property - def reason(self) -> int: ... - @property - def reason_text(self) -> bytes: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi deleted file mode 100644 index 831fcd1..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi +++ /dev/null @@ -1,107 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from collections.abc import Sequence - -from cryptography.utils import Buffer - -class AESGCM: - def __init__(self, key: Buffer) -> None: ... - @staticmethod - def generate_key(bit_length: int) -> bytes: ... - def encrypt( - self, - nonce: Buffer, - data: Buffer, - associated_data: Buffer | None, - ) -> bytes: ... - def decrypt( - self, - nonce: Buffer, - data: Buffer, - associated_data: Buffer | None, - ) -> bytes: ... - -class ChaCha20Poly1305: - def __init__(self, key: Buffer) -> None: ... - @staticmethod - def generate_key() -> bytes: ... - def encrypt( - self, - nonce: Buffer, - data: Buffer, - associated_data: Buffer | None, - ) -> bytes: ... - def decrypt( - self, - nonce: Buffer, - data: Buffer, - associated_data: Buffer | None, - ) -> bytes: ... - -class AESCCM: - def __init__(self, key: Buffer, tag_length: int = 16) -> None: ... - @staticmethod - def generate_key(bit_length: int) -> bytes: ... - def encrypt( - self, - nonce: Buffer, - data: Buffer, - associated_data: Buffer | None, - ) -> bytes: ... - def decrypt( - self, - nonce: Buffer, - data: Buffer, - associated_data: Buffer | None, - ) -> bytes: ... - -class AESSIV: - def __init__(self, key: Buffer) -> None: ... - @staticmethod - def generate_key(bit_length: int) -> bytes: ... - def encrypt( - self, - data: Buffer, - associated_data: Sequence[Buffer] | None, - ) -> bytes: ... - def decrypt( - self, - data: Buffer, - associated_data: Sequence[Buffer] | None, - ) -> bytes: ... - -class AESOCB3: - def __init__(self, key: Buffer) -> None: ... - @staticmethod - def generate_key(bit_length: int) -> bytes: ... - def encrypt( - self, - nonce: Buffer, - data: Buffer, - associated_data: Buffer | None, - ) -> bytes: ... - def decrypt( - self, - nonce: Buffer, - data: Buffer, - associated_data: Buffer | None, - ) -> bytes: ... - -class AESGCMSIV: - def __init__(self, key: Buffer) -> None: ... - @staticmethod - def generate_key(bit_length: int) -> bytes: ... - def encrypt( - self, - nonce: Buffer, - data: Buffer, - associated_data: Buffer | None, - ) -> bytes: ... - def decrypt( - self, - nonce: Buffer, - data: Buffer, - associated_data: Buffer | None, - ) -> bytes: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi deleted file mode 100644 index a48fb01..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi +++ /dev/null @@ -1,38 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import typing - -from cryptography.hazmat.primitives import ciphers -from cryptography.hazmat.primitives.ciphers import modes - -@typing.overload -def create_encryption_ctx( - algorithm: ciphers.CipherAlgorithm, mode: modes.ModeWithAuthenticationTag -) -> ciphers.AEADEncryptionContext: ... -@typing.overload -def create_encryption_ctx( - algorithm: ciphers.CipherAlgorithm, mode: modes.Mode | None -) -> ciphers.CipherContext: ... -@typing.overload -def create_decryption_ctx( - algorithm: ciphers.CipherAlgorithm, mode: modes.ModeWithAuthenticationTag -) -> ciphers.AEADDecryptionContext: ... -@typing.overload -def create_decryption_ctx( - algorithm: ciphers.CipherAlgorithm, mode: modes.Mode | None -) -> ciphers.CipherContext: ... -def cipher_supported( - algorithm: ciphers.CipherAlgorithm, mode: modes.Mode -) -> bool: ... -def _advance( - ctx: ciphers.AEADEncryptionContext | ciphers.AEADDecryptionContext, n: int -) -> None: ... -def _advance_aad( - ctx: ciphers.AEADEncryptionContext | ciphers.AEADDecryptionContext, n: int -) -> None: ... - -class CipherContext: ... -class AEADEncryptionContext: ... -class AEADDecryptionContext: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi deleted file mode 100644 index 9c03508..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi +++ /dev/null @@ -1,18 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import typing - -from cryptography.hazmat.primitives import ciphers - -class CMAC: - def __init__( - self, - algorithm: ciphers.BlockCipherAlgorithm, - backend: typing.Any = None, - ) -> None: ... - def update(self, data: bytes) -> None: ... - def finalize(self) -> bytes: ... - def verify(self, signature: bytes) -> None: ... - def copy(self) -> CMAC: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi deleted file mode 100644 index 08733d7..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dh.pyi +++ /dev/null @@ -1,51 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import typing - -from cryptography.hazmat.primitives.asymmetric import dh - -MIN_MODULUS_SIZE: int - -class DHPrivateKey: ... -class DHPublicKey: ... -class DHParameters: ... - -class DHPrivateNumbers: - def __init__(self, x: int, public_numbers: DHPublicNumbers) -> None: ... - def private_key(self, backend: typing.Any = None) -> dh.DHPrivateKey: ... - @property - def x(self) -> int: ... - @property - def public_numbers(self) -> DHPublicNumbers: ... - -class DHPublicNumbers: - def __init__( - self, y: int, parameter_numbers: DHParameterNumbers - ) -> None: ... - def public_key(self, backend: typing.Any = None) -> dh.DHPublicKey: ... - @property - def y(self) -> int: ... - @property - def parameter_numbers(self) -> DHParameterNumbers: ... - -class DHParameterNumbers: - def __init__(self, p: int, g: int, q: int | None = None) -> None: ... - def parameters(self, backend: typing.Any = None) -> dh.DHParameters: ... - @property - def p(self) -> int: ... - @property - def g(self) -> int: ... - @property - def q(self) -> int | None: ... - -def generate_parameters( - generator: int, key_size: int, backend: typing.Any = None -) -> dh.DHParameters: ... -def from_pem_parameters( - data: bytes, backend: typing.Any = None -) -> dh.DHParameters: ... -def from_der_parameters( - data: bytes, backend: typing.Any = None -) -> dh.DHParameters: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi deleted file mode 100644 index 0922a4c..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi +++ /dev/null @@ -1,41 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import typing - -from cryptography.hazmat.primitives.asymmetric import dsa - -class DSAPrivateKey: ... -class DSAPublicKey: ... -class DSAParameters: ... - -class DSAPrivateNumbers: - def __init__(self, x: int, public_numbers: DSAPublicNumbers) -> None: ... - @property - def x(self) -> int: ... - @property - def public_numbers(self) -> DSAPublicNumbers: ... - def private_key(self, backend: typing.Any = None) -> dsa.DSAPrivateKey: ... - -class DSAPublicNumbers: - def __init__( - self, y: int, parameter_numbers: DSAParameterNumbers - ) -> None: ... - @property - def y(self) -> int: ... - @property - def parameter_numbers(self) -> DSAParameterNumbers: ... - def public_key(self, backend: typing.Any = None) -> dsa.DSAPublicKey: ... - -class DSAParameterNumbers: - def __init__(self, p: int, q: int, g: int) -> None: ... - @property - def p(self) -> int: ... - @property - def q(self) -> int: ... - @property - def g(self) -> int: ... - def parameters(self, backend: typing.Any = None) -> dsa.DSAParameters: ... - -def generate_parameters(key_size: int) -> dsa.DSAParameters: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi deleted file mode 100644 index 5c3b7bf..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ec.pyi +++ /dev/null @@ -1,52 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import typing - -from cryptography.hazmat.primitives.asymmetric import ec - -class ECPrivateKey: ... -class ECPublicKey: ... - -class EllipticCurvePrivateNumbers: - def __init__( - self, private_value: int, public_numbers: EllipticCurvePublicNumbers - ) -> None: ... - def private_key( - self, backend: typing.Any = None - ) -> ec.EllipticCurvePrivateKey: ... - @property - def private_value(self) -> int: ... - @property - def public_numbers(self) -> EllipticCurvePublicNumbers: ... - -class EllipticCurvePublicNumbers: - def __init__(self, x: int, y: int, curve: ec.EllipticCurve) -> None: ... - def public_key( - self, backend: typing.Any = None - ) -> ec.EllipticCurvePublicKey: ... - @property - def x(self) -> int: ... - @property - def y(self) -> int: ... - @property - def curve(self) -> ec.EllipticCurve: ... - def __eq__(self, other: object) -> bool: ... - -def curve_supported(curve: ec.EllipticCurve) -> bool: ... -def generate_private_key( - curve: ec.EllipticCurve, backend: typing.Any = None -) -> ec.EllipticCurvePrivateKey: ... -def from_private_numbers( - numbers: ec.EllipticCurvePrivateNumbers, -) -> ec.EllipticCurvePrivateKey: ... -def from_public_numbers( - numbers: ec.EllipticCurvePublicNumbers, -) -> ec.EllipticCurvePublicKey: ... -def from_public_bytes( - curve: ec.EllipticCurve, data: bytes -) -> ec.EllipticCurvePublicKey: ... -def derive_private_key( - private_value: int, curve: ec.EllipticCurve -) -> ec.EllipticCurvePrivateKey: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi deleted file mode 100644 index f85b3d1..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi +++ /dev/null @@ -1,13 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from cryptography.hazmat.primitives.asymmetric import ed25519 -from cryptography.utils import Buffer - -class Ed25519PrivateKey: ... -class Ed25519PublicKey: ... - -def generate_key() -> ed25519.Ed25519PrivateKey: ... -def from_private_bytes(data: Buffer) -> ed25519.Ed25519PrivateKey: ... -def from_public_bytes(data: bytes) -> ed25519.Ed25519PublicKey: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi deleted file mode 100644 index c8ca0ec..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi +++ /dev/null @@ -1,13 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from cryptography.hazmat.primitives.asymmetric import ed448 -from cryptography.utils import Buffer - -class Ed448PrivateKey: ... -class Ed448PublicKey: ... - -def generate_key() -> ed448.Ed448PrivateKey: ... -def from_private_bytes(data: Buffer) -> ed448.Ed448PrivateKey: ... -def from_public_bytes(data: bytes) -> ed448.Ed448PublicKey: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi deleted file mode 100644 index 6bfd295..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi +++ /dev/null @@ -1,28 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import typing - -from cryptography.hazmat.primitives import hashes -from cryptography.utils import Buffer - -class Hash(hashes.HashContext): - def __init__( - self, algorithm: hashes.HashAlgorithm, backend: typing.Any = None - ) -> None: ... - @property - def algorithm(self) -> hashes.HashAlgorithm: ... - def update(self, data: Buffer) -> None: ... - def finalize(self) -> bytes: ... - def copy(self) -> Hash: ... - -def hash_supported(algorithm: hashes.HashAlgorithm) -> bool: ... - -class XOFHash: - def __init__(self, algorithm: hashes.ExtendableOutputFunction) -> None: ... - @property - def algorithm(self) -> hashes.ExtendableOutputFunction: ... - def update(self, data: Buffer) -> None: ... - def squeeze(self, length: int) -> bytes: ... - def copy(self) -> XOFHash: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi deleted file mode 100644 index 3883d1b..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi +++ /dev/null @@ -1,22 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import typing - -from cryptography.hazmat.primitives import hashes -from cryptography.utils import Buffer - -class HMAC(hashes.HashContext): - def __init__( - self, - key: Buffer, - algorithm: hashes.HashAlgorithm, - backend: typing.Any = None, - ) -> None: ... - @property - def algorithm(self) -> hashes.HashAlgorithm: ... - def update(self, data: Buffer) -> None: ... - def finalize(self) -> bytes: ... - def verify(self, signature: bytes) -> None: ... - def copy(self) -> HMAC: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi deleted file mode 100644 index 9979e42..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi +++ /dev/null @@ -1,49 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import typing - -from cryptography.hazmat.primitives.hashes import HashAlgorithm -from cryptography.utils import Buffer - -def derive_pbkdf2_hmac( - key_material: Buffer, - algorithm: HashAlgorithm, - salt: bytes, - iterations: int, - length: int, -) -> bytes: ... - -class Scrypt: - def __init__( - self, - salt: bytes, - length: int, - n: int, - r: int, - p: int, - backend: typing.Any = None, - ) -> None: ... - def derive(self, key_material: Buffer) -> bytes: ... - def verify(self, key_material: bytes, expected_key: bytes) -> None: ... - -class Argon2id: - def __init__( - self, - *, - salt: bytes, - length: int, - iterations: int, - lanes: int, - memory_cost: int, - ad: bytes | None = None, - secret: bytes | None = None, - ) -> None: ... - def derive(self, key_material: bytes) -> bytes: ... - def verify(self, key_material: bytes, expected_key: bytes) -> None: ... - def derive_phc_encoded(self, key_material: bytes) -> str: ... - @classmethod - def verify_phc_encoded( - cls, key_material: bytes, phc_encoded: str, secret: bytes | None = None - ) -> None: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi deleted file mode 100644 index 404057e..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi +++ /dev/null @@ -1,34 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import typing - -from cryptography.hazmat.primitives.asymmetric.types import ( - PrivateKeyTypes, - PublicKeyTypes, -) -from cryptography.utils import Buffer - -def load_der_private_key( - data: Buffer, - password: bytes | None, - backend: typing.Any = None, - *, - unsafe_skip_rsa_key_validation: bool = False, -) -> PrivateKeyTypes: ... -def load_pem_private_key( - data: Buffer, - password: bytes | None, - backend: typing.Any = None, - *, - unsafe_skip_rsa_key_validation: bool = False, -) -> PrivateKeyTypes: ... -def load_der_public_key( - data: bytes, - backend: typing.Any = None, -) -> PublicKeyTypes: ... -def load_pem_public_key( - data: bytes, - backend: typing.Any = None, -) -> PublicKeyTypes: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi deleted file mode 100644 index 45a2a39..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi +++ /dev/null @@ -1,15 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from cryptography.utils import Buffer - -class Poly1305: - def __init__(self, key: Buffer) -> None: ... - @staticmethod - def generate_tag(key: Buffer, data: Buffer) -> bytes: ... - @staticmethod - def verify_tag(key: Buffer, data: Buffer, tag: bytes) -> None: ... - def update(self, data: Buffer) -> None: ... - def finalize(self) -> bytes: ... - def verify(self, tag: bytes) -> None: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi deleted file mode 100644 index ef7752d..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi +++ /dev/null @@ -1,55 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import typing - -from cryptography.hazmat.primitives.asymmetric import rsa - -class RSAPrivateKey: ... -class RSAPublicKey: ... - -class RSAPrivateNumbers: - def __init__( - self, - p: int, - q: int, - d: int, - dmp1: int, - dmq1: int, - iqmp: int, - public_numbers: RSAPublicNumbers, - ) -> None: ... - @property - def p(self) -> int: ... - @property - def q(self) -> int: ... - @property - def d(self) -> int: ... - @property - def dmp1(self) -> int: ... - @property - def dmq1(self) -> int: ... - @property - def iqmp(self) -> int: ... - @property - def public_numbers(self) -> RSAPublicNumbers: ... - def private_key( - self, - backend: typing.Any = None, - *, - unsafe_skip_rsa_key_validation: bool = False, - ) -> rsa.RSAPrivateKey: ... - -class RSAPublicNumbers: - def __init__(self, e: int, n: int) -> None: ... - @property - def n(self) -> int: ... - @property - def e(self) -> int: ... - def public_key(self, backend: typing.Any = None) -> rsa.RSAPublicKey: ... - -def generate_private_key( - public_exponent: int, - key_size: int, -) -> rsa.RSAPrivateKey: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi deleted file mode 100644 index 38d2add..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi +++ /dev/null @@ -1,13 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from cryptography.hazmat.primitives.asymmetric import x25519 -from cryptography.utils import Buffer - -class X25519PrivateKey: ... -class X25519PublicKey: ... - -def generate_key() -> x25519.X25519PrivateKey: ... -def from_private_bytes(data: Buffer) -> x25519.X25519PrivateKey: ... -def from_public_bytes(data: bytes) -> x25519.X25519PublicKey: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi deleted file mode 100644 index 3ac0980..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi +++ /dev/null @@ -1,13 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from cryptography.hazmat.primitives.asymmetric import x448 -from cryptography.utils import Buffer - -class X448PrivateKey: ... -class X448PublicKey: ... - -def generate_key() -> x448.X448PrivateKey: ... -def from_private_bytes(data: Buffer) -> x448.X448PrivateKey: ... -def from_public_bytes(data: bytes) -> x448.X448PublicKey: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi deleted file mode 100644 index b25becb..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi +++ /dev/null @@ -1,52 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import typing -from collections.abc import Iterable - -from cryptography import x509 -from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes -from cryptography.hazmat.primitives.serialization import ( - KeySerializationEncryption, -) -from cryptography.hazmat.primitives.serialization.pkcs12 import ( - PKCS12KeyAndCertificates, - PKCS12PrivateKeyTypes, -) -from cryptography.utils import Buffer - -class PKCS12Certificate: - def __init__( - self, cert: x509.Certificate, friendly_name: bytes | None - ) -> None: ... - @property - def friendly_name(self) -> bytes | None: ... - @property - def certificate(self) -> x509.Certificate: ... - -def load_key_and_certificates( - data: Buffer, - password: Buffer | None, - backend: typing.Any = None, -) -> tuple[ - PrivateKeyTypes | None, - x509.Certificate | None, - list[x509.Certificate], -]: ... -def load_pkcs12( - data: bytes, - password: bytes | None, - backend: typing.Any = None, -) -> PKCS12KeyAndCertificates: ... -def serialize_java_truststore( - certs: Iterable[PKCS12Certificate], - encryption_algorithm: KeySerializationEncryption, -) -> bytes: ... -def serialize_key_and_certificates( - name: bytes | None, - key: PKCS12PrivateKeyTypes | None, - cert: x509.Certificate | None, - cas: Iterable[x509.Certificate | PKCS12Certificate] | None, - encryption_algorithm: KeySerializationEncryption, -) -> bytes: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi deleted file mode 100644 index 358b135..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi +++ /dev/null @@ -1,50 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from collections.abc import Iterable - -from cryptography import x509 -from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.asymmetric import rsa -from cryptography.hazmat.primitives.serialization import pkcs7 - -def serialize_certificates( - certs: list[x509.Certificate], - encoding: serialization.Encoding, -) -> bytes: ... -def encrypt_and_serialize( - builder: pkcs7.PKCS7EnvelopeBuilder, - content_encryption_algorithm: pkcs7.ContentEncryptionAlgorithm, - encoding: serialization.Encoding, - options: Iterable[pkcs7.PKCS7Options], -) -> bytes: ... -def sign_and_serialize( - builder: pkcs7.PKCS7SignatureBuilder, - encoding: serialization.Encoding, - options: Iterable[pkcs7.PKCS7Options], -) -> bytes: ... -def decrypt_der( - data: bytes, - certificate: x509.Certificate, - private_key: rsa.RSAPrivateKey, - options: Iterable[pkcs7.PKCS7Options], -) -> bytes: ... -def decrypt_pem( - data: bytes, - certificate: x509.Certificate, - private_key: rsa.RSAPrivateKey, - options: Iterable[pkcs7.PKCS7Options], -) -> bytes: ... -def decrypt_smime( - data: bytes, - certificate: x509.Certificate, - private_key: rsa.RSAPrivateKey, - options: Iterable[pkcs7.PKCS7Options], -) -> bytes: ... -def load_pem_pkcs7_certificates( - data: bytes, -) -> list[x509.Certificate]: ... -def load_der_pkcs7_certificates( - data: bytes, -) -> list[x509.Certificate]: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi deleted file mode 100644 index c6c6d0b..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi +++ /dev/null @@ -1,23 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from cryptography import x509 -from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.serialization import pkcs7 -from cryptography.utils import Buffer - -class TestCertificate: - not_after_tag: int - not_before_tag: int - issuer_value_tags: list[int] - subject_value_tags: list[int] - -def test_parse_certificate(data: bytes) -> TestCertificate: ... -def pkcs7_verify( - encoding: serialization.Encoding, - sig: bytes, - msg: Buffer | None, - certs: list[x509.Certificate], - options: list[pkcs7.PKCS7Options], -) -> None: ... diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi deleted file mode 100644 index 6ba9afb..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi +++ /dev/null @@ -1,313 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -import datetime -import typing -from collections.abc import Iterator - -from cryptography import x509 -from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric.ec import ECDSA -from cryptography.hazmat.primitives.asymmetric.padding import PSS, PKCS1v15 -from cryptography.hazmat.primitives.asymmetric.types import ( - CertificateIssuerPublicKeyTypes, - CertificatePublicKeyTypes, - PrivateKeyTypes, -) -from cryptography.x509 import certificate_transparency - -def load_pem_x509_certificate( - data: bytes, backend: typing.Any = None -) -> x509.Certificate: ... -def load_der_x509_certificate( - data: bytes, backend: typing.Any = None -) -> x509.Certificate: ... -def load_pem_x509_certificates( - data: bytes, -) -> list[x509.Certificate]: ... -def load_pem_x509_crl( - data: bytes, backend: typing.Any = None -) -> x509.CertificateRevocationList: ... -def load_der_x509_crl( - data: bytes, backend: typing.Any = None -) -> x509.CertificateRevocationList: ... -def load_pem_x509_csr( - data: bytes, backend: typing.Any = None -) -> x509.CertificateSigningRequest: ... -def load_der_x509_csr( - data: bytes, backend: typing.Any = None -) -> x509.CertificateSigningRequest: ... -def encode_name_bytes(name: x509.Name) -> bytes: ... -def encode_extension_value(extension: x509.ExtensionType) -> bytes: ... -def create_x509_certificate( - builder: x509.CertificateBuilder, - private_key: PrivateKeyTypes, - hash_algorithm: hashes.HashAlgorithm | None, - rsa_padding: PKCS1v15 | PSS | None, - ecdsa_deterministic: bool | None, -) -> x509.Certificate: ... -def create_x509_csr( - builder: x509.CertificateSigningRequestBuilder, - private_key: PrivateKeyTypes, - hash_algorithm: hashes.HashAlgorithm | None, - rsa_padding: PKCS1v15 | PSS | None, - ecdsa_deterministic: bool | None, -) -> x509.CertificateSigningRequest: ... -def create_x509_crl( - builder: x509.CertificateRevocationListBuilder, - private_key: PrivateKeyTypes, - hash_algorithm: hashes.HashAlgorithm | None, - rsa_padding: PKCS1v15 | PSS | None, - ecdsa_deterministic: bool | None, -) -> x509.CertificateRevocationList: ... - -class Sct: - @property - def version(self) -> certificate_transparency.Version: ... - @property - def log_id(self) -> bytes: ... - @property - def timestamp(self) -> datetime.datetime: ... - @property - def entry_type(self) -> certificate_transparency.LogEntryType: ... - @property - def signature_hash_algorithm(self) -> hashes.HashAlgorithm: ... - @property - def signature_algorithm( - self, - ) -> certificate_transparency.SignatureAlgorithm: ... - @property - def signature(self) -> bytes: ... - @property - def extension_bytes(self) -> bytes: ... - -class Certificate: - def fingerprint(self, algorithm: hashes.HashAlgorithm) -> bytes: ... - @property - def serial_number(self) -> int: ... - @property - def version(self) -> x509.Version: ... - def public_key(self) -> CertificatePublicKeyTypes: ... - @property - def public_key_algorithm_oid(self) -> x509.ObjectIdentifier: ... - @property - def not_valid_before(self) -> datetime.datetime: ... - @property - def not_valid_before_utc(self) -> datetime.datetime: ... - @property - def not_valid_after(self) -> datetime.datetime: ... - @property - def not_valid_after_utc(self) -> datetime.datetime: ... - @property - def issuer(self) -> x509.Name: ... - @property - def subject(self) -> x509.Name: ... - @property - def signature_hash_algorithm( - self, - ) -> hashes.HashAlgorithm | None: ... - @property - def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... - @property - def signature_algorithm_parameters( - self, - ) -> PSS | PKCS1v15 | ECDSA | None: ... - @property - def extensions(self) -> x509.Extensions: ... - @property - def signature(self) -> bytes: ... - @property - def tbs_certificate_bytes(self) -> bytes: ... - @property - def tbs_precertificate_bytes(self) -> bytes: ... - def __eq__(self, other: object) -> bool: ... - def __hash__(self) -> int: ... - def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... - def verify_directly_issued_by(self, issuer: Certificate) -> None: ... - -class RevokedCertificate: ... - -class CertificateRevocationList: - def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... - def fingerprint(self, algorithm: hashes.HashAlgorithm) -> bytes: ... - def get_revoked_certificate_by_serial_number( - self, serial_number: int - ) -> x509.RevokedCertificate | None: ... - @property - def signature_hash_algorithm( - self, - ) -> hashes.HashAlgorithm | None: ... - @property - def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... - @property - def signature_algorithm_parameters( - self, - ) -> PSS | PKCS1v15 | ECDSA | None: ... - @property - def issuer(self) -> x509.Name: ... - @property - def next_update(self) -> datetime.datetime | None: ... - @property - def next_update_utc(self) -> datetime.datetime | None: ... - @property - def last_update(self) -> datetime.datetime: ... - @property - def last_update_utc(self) -> datetime.datetime: ... - @property - def extensions(self) -> x509.Extensions: ... - @property - def signature(self) -> bytes: ... - @property - def tbs_certlist_bytes(self) -> bytes: ... - def __eq__(self, other: object) -> bool: ... - def __len__(self) -> int: ... - @typing.overload - def __getitem__(self, idx: int) -> x509.RevokedCertificate: ... - @typing.overload - def __getitem__(self, idx: slice) -> list[x509.RevokedCertificate]: ... - def __iter__(self) -> Iterator[x509.RevokedCertificate]: ... - def is_signature_valid( - self, public_key: CertificateIssuerPublicKeyTypes - ) -> bool: ... - -class CertificateSigningRequest: - def __eq__(self, other: object) -> bool: ... - def __hash__(self) -> int: ... - def public_key(self) -> CertificatePublicKeyTypes: ... - @property - def subject(self) -> x509.Name: ... - @property - def signature_hash_algorithm( - self, - ) -> hashes.HashAlgorithm | None: ... - @property - def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... - @property - def signature_algorithm_parameters( - self, - ) -> PSS | PKCS1v15 | ECDSA | None: ... - @property - def extensions(self) -> x509.Extensions: ... - @property - def attributes(self) -> x509.Attributes: ... - def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... - @property - def signature(self) -> bytes: ... - @property - def tbs_certrequest_bytes(self) -> bytes: ... - @property - def is_signature_valid(self) -> bool: ... - def get_attribute_for_oid(self, oid: x509.ObjectIdentifier) -> bytes: ... - -class PolicyBuilder: - def time(self, time: datetime.datetime) -> PolicyBuilder: ... - def store(self, store: Store) -> PolicyBuilder: ... - def max_chain_depth(self, max_chain_depth: int) -> PolicyBuilder: ... - def extension_policies( - self, *, ca_policy: ExtensionPolicy, ee_policy: ExtensionPolicy - ) -> PolicyBuilder: ... - def build_client_verifier(self) -> ClientVerifier: ... - def build_server_verifier( - self, subject: x509.verification.Subject - ) -> ServerVerifier: ... - -class Policy: - @property - def max_chain_depth(self) -> int: ... - @property - def subject(self) -> x509.verification.Subject | None: ... - @property - def validation_time(self) -> datetime.datetime: ... - @property - def extended_key_usage(self) -> x509.ObjectIdentifier: ... - @property - def minimum_rsa_modulus(self) -> int: ... - -class Criticality: - CRITICAL: Criticality - AGNOSTIC: Criticality - NON_CRITICAL: Criticality - -T = typing.TypeVar("T", contravariant=True, bound=x509.ExtensionType) - -MaybeExtensionValidatorCallback = typing.Callable[ - [ - Policy, - x509.Certificate, - T | None, - ], - None, -] - -PresentExtensionValidatorCallback = typing.Callable[ - [Policy, x509.Certificate, T], - None, -] - -class ExtensionPolicy: - @staticmethod - def permit_all() -> ExtensionPolicy: ... - @staticmethod - def webpki_defaults_ca() -> ExtensionPolicy: ... - @staticmethod - def webpki_defaults_ee() -> ExtensionPolicy: ... - def require_not_present( - self, extension_type: type[x509.ExtensionType] - ) -> ExtensionPolicy: ... - def may_be_present( - self, - extension_type: type[T], - criticality: Criticality, - validator: MaybeExtensionValidatorCallback[T] | None, - ) -> ExtensionPolicy: ... - def require_present( - self, - extension_type: type[T], - criticality: Criticality, - validator: PresentExtensionValidatorCallback[T] | None, - ) -> ExtensionPolicy: ... - -class VerifiedClient: - @property - def subjects(self) -> list[x509.GeneralName] | None: ... - @property - def chain(self) -> list[x509.Certificate]: ... - -class ClientVerifier: - @property - def policy(self) -> Policy: ... - @property - def validation_time(self) -> datetime.datetime: ... - @property - def max_chain_depth(self) -> int: ... - @property - def store(self) -> Store: ... - def verify( - self, - leaf: x509.Certificate, - intermediates: list[x509.Certificate], - ) -> VerifiedClient: ... - -class ServerVerifier: - @property - def policy(self) -> Policy: ... - @property - def subject(self) -> x509.verification.Subject: ... - @property - def validation_time(self) -> datetime.datetime: ... - @property - def max_chain_depth(self) -> int: ... - @property - def store(self) -> Store: ... - def verify( - self, - leaf: x509.Certificate, - intermediates: list[x509.Certificate], - ) -> list[x509.Certificate]: ... - -class Store: - def __init__(self, certs: list[x509.Certificate]) -> None: ... - -class VerificationError(Exception): - pass diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__init__.py deleted file mode 100644 index b509336..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 4237bf80b280a92b210386eb02c3329881f97775..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmZ8aJqp4w7;UVA2pv6ygZ)rfad8(sK}p-tM3a0WNek&kJcGNp@ED#zx^*&Leeifc zJb3RcTO|?e_R3#TKU4U}Fpte63CV_Bo{62sG)$XO0Y}B)h7=WQ)(beJcCGZW?3nIA ziV{rl9Q7gJ?ZFApwuV-B+As%|4aQ?*so?=Q?G^P<3SA4`I6%X+a}tU|XyJ<@H(^{J W71pg}C%cI6B+^ahn-W578r=_vH95Bc diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-312.pyc deleted file mode 100644 index 55361a2b3d69259f607727cb7fa4c7e9749ebd67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5351 zcmbVQNpBm;6>e@4sa>*U$(CfHAi-b~nrcgoBvKLS8IOaY&>~A@N6l`g zx+z=E#R+oCDZm5>5abjfhy0dYn43_@!9Y&A5hLU>r+lxtm{PY4$pq@Xezm^(-cnWk z=kV}=hTl~E=aqj?YTAED==`FskI?B{NYnnTm9$dG(yF1Cp^#Skq!j*r^ko=40v-X6 zf=9t);4$z%@ILT<@P6<(cpN+do&X;J9{?W&9|Ru)9|9i+9|j)*9|0c)9|a!+9|Io; z9|xZRp8&rGehqvQeA3iPQ#|}lsC1o2K&N>WbcV-3Z}2|Qo4g-%md8Qocmi~u4}jj{ zgP;q12=q1|2ED^aKo|Ka=n@|TUFPGUD}3Uc5WmJJOLzYo{(I=<)bYL5)&CMyt06gP z*tX*tp6S?bv4bP=FiJ$zLZ<{bund*L<#1kGjb!Due14my3on?}DDDKvTkTzZ{v>{*8H)_{HMK~rPf**3;3xx-zl8utIJ+8^!?gE&fj!lq z<@R)$Xp6ZmIoSTpWHSXh(H8dftiF*eWKsoPVbmhDq)33sX}{{O#avH}p>-7HbO_|F z_H8&u`o=DyZ?E}=3)}f#ZQEjQ>ypZN7O?ch6m*zD=|VVt62JB#2oaMlkD{HDN0nOu z${U1B+n?5$YnBbG>@v&5BIH8n;R&!T!P6QhNTmf7mw+P6E;S=zf+>6nn0n0`k@FqB z>MmzB_mG(-ZhNM8%qphs$%Rfcc|A3|TpV%1iiTzF!*~51ik689x*Y;{H|aAzrWW(q z%nC}^@=@AS^om>Rmn-LWK0q8nao0uQbQP1!=erRCzFu?bp1@=@B(LZ5nOv6H{8cL< zq%*sl`W~ZIaLw+o;pKD}AvsU3k-acPn6OQK;9g6{KQaTXC*&q-Z z9QSDLiMR(GAELOOD2fx7@hf84;~qw-#5$&}yPi{J{I&Pqd#JhN8t_yPK z^;*pl9xq*TKgI4$;sN&ZBNTCqh%a+p7y6|3);JrJDBPAjcr z8&xhl({#Gixr0+*&bFtq900ywH!aV!8Mn)(&E2k2s<9@_BLk*VIi`11t-f!WMOCjX z-VKCyj;3o(YsNrR`OoNf=byncgSz#NO)9O)6V5lNbChiAa*G#{yEF}eM?0WvI(nt^*|*SeE^gI>)CN%W98qVbgw$IA8FWV>-Ysg>0E9rqciiC`j4)r#3Es_$DU{P z7rT18pszDM_l$kDnc3FigsJsRb|Vmxhdy=cHh*1f1rB!(*sBVn2Ht4U14wXa^+yzU z5ag|PGW4i1xYmfST>&m-H5fm$k;U`noW_^bk*tO=G0V0iI6JGcs6e$pk&c~V;`>iV&s9LE5R}4br+Y1uEzdAOE;RX!IA-s)O88V{o|L}nwky^)ubzLwqmR>1nGWvys@B4>SL($DjS+zukQ zAQyd&?P2WM^K80+yqA|N7xvlA_jL2`vvr2b1>bmeTg$-BkvcM2Ipyn+-z)6OWnXnb zS`OHO%9m=exVPy+RhV_6d&kZ@)>!F%6Ch!N0rv9r?Pk;5~ zRu5eD9#jt*b^8}|^A>b36m4nZ$%WPTlIg$ck$1wPN{D3FU0RqN8#yy1=@^+LZSZ+XrZOkzG$fLbfgbtLVZQ> zH53CGOMuL%FI6`H@#YxF-S=J8mm+Ec^%V*|K8?4(R+?dA#zciZdSBjFP*w%k~G+FT{!z83rbN&E-Rha^1K5}&=hzy0kGA^b}lSLx^f Dgc#5j diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-312.pyc deleted file mode 100644 index 2086a5ed5cf76c09ae97e4042c24157f5386efee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5039 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 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py deleted file mode 100644 index c90c916..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py +++ /dev/null @@ -1,191 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - - -def cryptography_has_set_cert_cb() -> list[str]: - return [ - "SSL_CTX_set_cert_cb", - "SSL_set_cert_cb", - ] - - -def cryptography_has_ssl_st() -> list[str]: - return [ - "SSL_ST_BEFORE", - "SSL_ST_OK", - "SSL_ST_INIT", - "SSL_ST_RENEGOTIATE", - ] - - -def cryptography_has_tls_st() -> list[str]: - return [ - "TLS_ST_BEFORE", - "TLS_ST_OK", - ] - - -def cryptography_has_ssl_sigalgs() -> list[str]: - return [ - "SSL_CTX_set1_sigalgs_list", - ] - - -def cryptography_has_psk() -> list[str]: - return [ - "SSL_CTX_use_psk_identity_hint", - "SSL_CTX_set_psk_server_callback", - "SSL_CTX_set_psk_client_callback", - ] - - -def cryptography_has_psk_tlsv13() -> list[str]: - return [ - "SSL_CTX_set_psk_find_session_callback", - "SSL_CTX_set_psk_use_session_callback", - "Cryptography_SSL_SESSION_new", - "SSL_CIPHER_find", - "SSL_SESSION_set1_master_key", - "SSL_SESSION_set_cipher", - "SSL_SESSION_set_protocol_version", - ] - - -def cryptography_has_custom_ext() -> list[str]: - return [ - "SSL_CTX_add_client_custom_ext", - "SSL_CTX_add_server_custom_ext", - "SSL_extension_supported", - ] - - -def cryptography_has_tlsv13_functions() -> list[str]: - return [ - "SSL_CTX_set_ciphersuites", - ] - - -def cryptography_has_tlsv13_hs_functions() -> list[str]: - return [ - "SSL_VERIFY_POST_HANDSHAKE", - "SSL_verify_client_post_handshake", - "SSL_CTX_set_post_handshake_auth", - "SSL_set_post_handshake_auth", - "SSL_SESSION_get_max_early_data", - "SSL_write_early_data", - "SSL_read_early_data", - "SSL_CTX_set_max_early_data", - ] - - -def cryptography_has_engine() -> list[str]: - return [ - "ENGINE_by_id", - "ENGINE_init", - "ENGINE_finish", - "ENGINE_get_default_RAND", - "ENGINE_set_default_RAND", - "ENGINE_unregister_RAND", - "ENGINE_ctrl_cmd", - "ENGINE_free", - "ENGINE_get_name", - "ENGINE_ctrl_cmd_string", - "ENGINE_load_builtin_engines", - "ENGINE_load_private_key", - "ENGINE_load_public_key", - "SSL_CTX_set_client_cert_engine", - ] - - -def cryptography_has_verified_chain() -> list[str]: - return [ - "SSL_get0_verified_chain", - ] - - -def cryptography_has_srtp() -> list[str]: - return [ - "SSL_CTX_set_tlsext_use_srtp", - "SSL_set_tlsext_use_srtp", - "SSL_get_selected_srtp_profile", - ] - - -def cryptography_has_op_no_renegotiation() -> list[str]: - return [ - "SSL_OP_NO_RENEGOTIATION", - ] - - -def cryptography_has_dtls_get_data_mtu() -> list[str]: - return [ - "DTLS_get_data_mtu", - ] - - -def cryptography_has_ssl_cookie() -> list[str]: - return [ - "SSL_OP_COOKIE_EXCHANGE", - "DTLSv1_listen", - "SSL_CTX_set_cookie_generate_cb", - "SSL_CTX_set_cookie_verify_cb", - ] - - -def cryptography_has_prime_checks() -> list[str]: - return [ - "BN_prime_checks_for_size", - ] - - -def cryptography_has_unexpected_eof_while_reading() -> list[str]: - return ["SSL_R_UNEXPECTED_EOF_WHILE_READING"] - - -def cryptography_has_ssl_op_ignore_unexpected_eof() -> list[str]: - return [ - "SSL_OP_IGNORE_UNEXPECTED_EOF", - ] - - -def cryptography_has_get_extms_support() -> list[str]: - return ["SSL_get_extms_support"] - - -# This is a mapping of -# {condition: function-returning-names-dependent-on-that-condition} so we can -# loop over them and delete unsupported names at runtime. It will be removed -# when cffi supports #if in cdef. We use functions instead of just a dict of -# lists so we can use coverage to measure which are used. -CONDITIONAL_NAMES = { - "Cryptography_HAS_SET_CERT_CB": cryptography_has_set_cert_cb, - "Cryptography_HAS_SSL_ST": cryptography_has_ssl_st, - "Cryptography_HAS_TLS_ST": cryptography_has_tls_st, - "Cryptography_HAS_SIGALGS": cryptography_has_ssl_sigalgs, - "Cryptography_HAS_PSK": cryptography_has_psk, - "Cryptography_HAS_PSK_TLSv1_3": cryptography_has_psk_tlsv13, - "Cryptography_HAS_CUSTOM_EXT": cryptography_has_custom_ext, - "Cryptography_HAS_TLSv1_3_FUNCTIONS": cryptography_has_tlsv13_functions, - "Cryptography_HAS_TLSv1_3_HS_FUNCTIONS": ( - cryptography_has_tlsv13_hs_functions - ), - "Cryptography_HAS_ENGINE": cryptography_has_engine, - "Cryptography_HAS_VERIFIED_CHAIN": cryptography_has_verified_chain, - "Cryptography_HAS_SRTP": cryptography_has_srtp, - "Cryptography_HAS_OP_NO_RENEGOTIATION": ( - cryptography_has_op_no_renegotiation - ), - "Cryptography_HAS_DTLS_GET_DATA_MTU": cryptography_has_dtls_get_data_mtu, - "Cryptography_HAS_SSL_COOKIE": cryptography_has_ssl_cookie, - "Cryptography_HAS_PRIME_CHECKS": cryptography_has_prime_checks, - "Cryptography_HAS_UNEXPECTED_EOF_WHILE_READING": ( - cryptography_has_unexpected_eof_while_reading - ), - "Cryptography_HAS_SSL_OP_IGNORE_UNEXPECTED_EOF": ( - cryptography_has_ssl_op_ignore_unexpected_eof - ), - "Cryptography_HAS_GET_EXTMS_SUPPORT": cryptography_has_get_extms_support, -} diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/binding.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/binding.py deleted file mode 100644 index 7de2c65..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/openssl/binding.py +++ /dev/null @@ -1,122 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import os -import sys -import threading -import types -import typing -import warnings -from collections.abc import Callable - -import cryptography -from cryptography.exceptions import InternalError -from cryptography.hazmat.bindings._rust import _openssl, openssl -from cryptography.hazmat.bindings.openssl._conditional import CONDITIONAL_NAMES - - -def _openssl_assert(ok: bool) -> None: - if not ok: - errors = openssl.capture_error_stack() - - raise InternalError( - "Unknown OpenSSL error. This error is commonly encountered when " - "another library is not cleaning up the OpenSSL error stack. If " - "you are using cryptography with another library that uses " - "OpenSSL try disabling it before reporting a bug. Otherwise " - "please file an issue at https://github.com/pyca/cryptography/" - "issues with information on how to reproduce " - f"this. ({errors!r})", - errors, - ) - - -def build_conditional_library( - lib: typing.Any, - conditional_names: dict[str, Callable[[], list[str]]], -) -> typing.Any: - conditional_lib = types.ModuleType("lib") - conditional_lib._original_lib = lib # type: ignore[attr-defined] - excluded_names = set() - for condition, names_cb in conditional_names.items(): - if not getattr(lib, condition): - excluded_names.update(names_cb()) - - for attr in dir(lib): - if attr not in excluded_names: - setattr(conditional_lib, attr, getattr(lib, attr)) - - return conditional_lib - - -class Binding: - """ - OpenSSL API wrapper. - """ - - lib: typing.ClassVar = None - ffi = _openssl.ffi - _lib_loaded = False - _init_lock = threading.Lock() - - def __init__(self) -> None: - self._ensure_ffi_initialized() - - @classmethod - def _ensure_ffi_initialized(cls) -> None: - with cls._init_lock: - if not cls._lib_loaded: - cls.lib = build_conditional_library( - _openssl.lib, CONDITIONAL_NAMES - ) - cls._lib_loaded = True - - @classmethod - def init_static_locks(cls) -> None: - cls._ensure_ffi_initialized() - - -def _verify_package_version(version: str) -> None: - # Occasionally we run into situations where the version of the Python - # package does not match the version of the shared object that is loaded. - # This may occur in environments where multiple versions of cryptography - # are installed and available in the python path. To avoid errors cropping - # up later this code checks that the currently imported package and the - # shared object that were loaded have the same version and raise an - # ImportError if they do not - so_package_version = _openssl.ffi.string( - _openssl.lib.CRYPTOGRAPHY_PACKAGE_VERSION - ) - if version.encode("ascii") != so_package_version: - raise ImportError( - "The version of cryptography does not match the loaded " - "shared object. This can happen if you have multiple copies of " - "cryptography installed in your Python path. Please try creating " - "a new virtual environment to resolve this issue. " - f"Loaded python version: {version}, " - f"shared object version: {so_package_version}" - ) - - _openssl_assert( - _openssl.lib.OpenSSL_version_num() == openssl.openssl_version(), - ) - - -_verify_package_version(cryptography.__version__) - -Binding.init_static_locks() - -if ( - sys.platform == "win32" - and os.environ.get("PROCESSOR_ARCHITEW6432") is not None -): - warnings.warn( - "You are using cryptography on a 32-bit Python on a 64-bit Windows " - "Operating System. Cryptography will be significantly faster if you " - "switch to using a 64-bit Python.", - UserWarning, - stacklevel=2, - ) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__init__.py deleted file mode 100644 index 41d7318..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 53eff5e57754f858865a15a299a4f795c02eb623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmXv}Jxc>Y5Z$?h5KaO%`2|*2m_cpD#y*hNW?ApX?CR|Yd$WPfAMrQ%Tl@o(*2+!@ zSfp|f@xd_f&Ai7j?~6qv3YKZ3KT7|c#6PM(0>|@0UPUi@7=(of0FkS<{+iY;9L|(; zo)sJK#&ugA8Y!O=r$|!9x>(-CadMsrwYP-NUU};s?G4_SL>jmZcjR_Bm`4nmwRbnG zt7{w$(`8WIi`vqNUCe>~HmaaAYPGkDv8OIlFpN?fXIRQr$fx1OGQPm diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py deleted file mode 100644 index 41d7318..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index e23f79e0d5531a114ba1c9ec00f29d2b1e5b8abe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257 zcmXv}yGjH>5S-oxIaUr#`~ss5yhcsM#9S~n8OGiAW_0JlOwYmGkN6FKi$5Tj8kq?P z1{XPtSkQD;cNI;)FPELDIL-I^qxR2P{G<6Jus^BfRg7YUNmzIQ5T)tcuX)|W?pQhJ zS+Vgh-Sy3`lkzEZjwEGltL07XXXnA9_LlJ3D{sA{t-;%x$P?G$hTH}x^N69a_U>wR zaf!(=od-3%s5K=VVhQZmQ3YL4tF2XxBMp&)VH`}*6cb8moM9=t*Wk!cM~u17qgqR zwt{3N4gpjtoRanw^+c3^qCNKl>!l>z>53$oC2*qhQcDzh(>cHPZdhBEaZf|sEBzeoe28sO3ZNaa z4leBiX|zEa=F)DE_B2R4%f0cwbsRcQ?T&PzP_)vPQ7o8o(e68+D`uusMk%Yak=#^~ z8CEuLceM(l>a5O;$+9}FmsQiK=ox1w4oc34*3Lj-k?2IB8c_s|DxyGiX$lj5pGNw=j{r-3MP*%y~>Y2-@kxGe(2<@FDsZG9Nw9KvOUD#9|tF9-xW z&eS~%bwbb_hzYH|4~0cy)dwbIj?7Uv26II9&XOc(RTf?hF_De&P;&H~}AUYJehjBCkK*~%6RLy4oulBQwlM@s3; zbb3lRlNnYnS;Z-qE@jKfY`T(9TS-mNFui10$qe_unM}J8FcYP+Evu?gFf3KAbfQZV zZnX#OsYL;*WV#-W9)5cLARrZ?YmaCbQ1>hGu@hD1zR)GKD5Uecs@fq{%@?(q9G1hXdSfP? ztG7t_wS$waSkVinZrMTC0+a2<&gBv-mUL#7*?Ul3A$(|VJHzR5h(N(S1aO-?>4;WG ze~<2c+<#^*dbWD8CQ)DVnV>QCEZYvA?cuA<6jDl3yOd%3$g^+Xp)9XeQVl zgAY$P9(=YNs`WH;qJmMY^mvo@sJ|Z-Qvg8yj>x=uZ+PLx-P2FPT?<1?z4t$U6n^JU z>SeY6WIXTxtSrHc8&9K`H3qO z8${sAzz$#$g)1Qz$MS~=$Vzq?zz$u*<(jX+>yG10Gr%2W&8aC?ae1iypcd5p4Jj8Y2jU@HhMn=dNyE(YBwLTc7{;$KXU^mHnYQ))hV?>stPi0*_q*NE zJ?fu8WenlA^LEn~m$tYex2J7KYoIZfjO!y`Z68Y)ru41Q_7wgQ0qJaF4@lcxo3#D$ z;IgosdeFVre`qaw__eDvcD0T4@ufy4uAXofXgqeV-vZbk?nL;|9&vCJ+8N^14RKjB zhK96T?ASSMX<4>XC_^|6uNVKG{~UkpDg&?gh)#*t&OxF5@}bcwZ~IgHnokqp+=_cN zKf!wE)?itR2W)9#Y;2To#&3Le=)|GC0Dlhl?@WLlJKXqQK|2N!S~fFw5```Cy?`== zOYoXU0laOgk8ev$LrVwOqOsQ|Humwa11mHI*13>iV4E)_LFYnpadd2C^QiUaql@Et z(ftOdw?on8cDT`1(T*)g_cPQ+_zK?U=sJgvtwtC7c%#vUi{`Oy3~m^P^I|)VUfPj8 zotxo?wt!}AIkcBi8(|V&FSKxDa?g`n4K4OD9*^L~ZgK|hd~mU2BFOBf%W}fGEGJ6L z$Qzb1tD6bcxi5RSWhTL|82$^#xl_nk;>TV*Gx9?O-%0p#!&%AgZ&{IE$)}wA4L`vz45TS!FC5Z~p3BX1qNC)Q6ZV>ov?1|8UhtUHY1imj1P}=jH0Bp!1 g5O)o35cqENV6^Ml>h($ diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py deleted file mode 100644 index 072a991..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py +++ /dev/null @@ -1,112 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -from cryptography.hazmat.primitives._cipheralgorithm import ( - BlockCipherAlgorithm, - CipherAlgorithm, - _verify_key_size, -) - - -class ARC4(CipherAlgorithm): - name = "RC4" - key_sizes = frozenset([40, 56, 64, 80, 128, 160, 192, 256]) - - def __init__(self, key: bytes): - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 - - -class TripleDES(BlockCipherAlgorithm): - name = "3DES" - block_size = 64 - key_sizes = frozenset([64, 128, 192]) - - def __init__(self, key: bytes): - if len(key) == 8: - key += key + key - elif len(key) == 16: - key += key[:8] - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 - - -# Not actually supported, marker for tests -class _DES: - key_size = 64 - - -class Blowfish(BlockCipherAlgorithm): - name = "Blowfish" - block_size = 64 - key_sizes = frozenset(range(32, 449, 8)) - - def __init__(self, key: bytes): - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 - - -class CAST5(BlockCipherAlgorithm): - name = "CAST5" - block_size = 64 - key_sizes = frozenset(range(40, 129, 8)) - - def __init__(self, key: bytes): - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 - - -class SEED(BlockCipherAlgorithm): - name = "SEED" - block_size = 128 - key_sizes = frozenset([128]) - - def __init__(self, key: bytes): - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 - - -class IDEA(BlockCipherAlgorithm): - name = "IDEA" - block_size = 64 - key_sizes = frozenset([128]) - - def __init__(self, key: bytes): - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 - - -# This class only allows RC2 with a 128-bit key. No support for -# effective key bits or other key sizes is provided. -class RC2(BlockCipherAlgorithm): - name = "RC2" - block_size = 64 - key_sizes = frozenset([128]) - - def __init__(self, key: bytes): - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__init__.py deleted file mode 100644 index b509336..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index abc65a325c5b1d60bb2f3c3478c1b79d3b958bc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmZ8aJqp4w6i%#y2pv6ygMFy0xVQ_RAjBG)X!Apo7SfA&26u1aF+72E>*VX|2aoR; z-aF411hH(+@`d~v%|H4nCJ&Oxik_atPtf(_W~e|~E#PLk)z*kk!O@z~)Dgp0m=;*s5L6Uv$ICmfM1ayK7j5OalL;j6G>_oC(kiMJYsQpOk+H(1VZPV)+SKCU RXZV-mg;9JnN~zCK{QwOoH+%p9 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-312.pyc deleted file mode 100644 index 5f43a438a9e4a5cbe64ca7c74015d67fcbd9fa93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 806 zcmZWnzi-n(6n^I)Ntz~+ih!^nS?PjRh*elCq!17TA}Y$}#k$zn*ulTJb0Rq#QvQdm zFddl46&}agxz2NMbQ? zuj&D`G9jxYBuijm6Ax^KsZ5)!rT$wCINT!(?R2xbjdlfxX~kYoc~pYTtZGvW&W&gY*x<@*cgwEm_{;WejtprJjS@ky5p|VIUWu>_c6Ta4-Y$L z_p*2JQJT~Q3r~ccXk1JzKZ%$%NoW!!F`EZgAFWTr3^!*io>^fqveG>BllW2h@S!Dw zj6F!H`fRo^N40v%7ZA#f*F2x=%vqYnim=>X7k(sneWQ|7RnKL z)9@Bnh%hjfqQY4=<#C~+W3yV+97k3b}r!_Q@hz`O6&h+M)Ui+%Izv%6simEqODpc-BX#LPI zE!$-${?8peoVpI=b!&I z-~2u_lt9o%>+e<`%LqMWgKmQ{Yq%8xT}2kMu!E|&fHC6*M<@u;i;h^83KB*FdIMR~ z3bJG(EO4!Sdym{xHpKRzpm5n3$f{&-HWo*FKPzFySEPd45cK3DwoS)T(sW%fFaz6j z{XC52dSE+#sdoY}QhR_~-vYCW2r6I;6$By@X^>5pY~dAYqobkQ7nB3#6-yW(A3IP! zW{Csj)rO?2QD)YzRS2DN<~?c$m1+rh?C5q7F5F@st)d3jg>WvRb=r*P2h?`wHP@`N zE~wbPR`o2RO_J<P`cD-E1tCHM; zXL?o7C83?0g$UQ304A4+yOeY6Vy@N*DxP~GJAFRq+W~o@W|kJsdE)0vv{4JZd1}@w zja?kG2ETJ6p3|t!M{+Z%dx4a0ZP7X~%*lfsNvz#NbN89BSu>y+hxt5N@I7mBBv3EiMw4#=1`|&Ga?X1xo`mPiWWTPF|yzMPu<4Wa_H-n|K#xbN zVX&+jMwBoND8RbI_>^IMS~s1}idv&yjnJSGiDt1BrOhI!H%m}mP*E05F*8`&=@CYF zLRdt3DyYIZMl$gEWgshPTOQh$)h+qhrhM$NAj+whh?Fr#(oG45%>;1&U*aF8gC~_A z3_ueHQ_YfN`Uil`n_$)+*t`!wNkmJy0<%OS@&fa)uL1B30)`j>gA$Egb-dDIU)pw4 z9PP4K>*X?`kqG%cwC3I(SaYUUWcvTJ&@Nw`(xBK5ud@W##V<>EdXU}OJpmnpuya@_hx3L(Pq3wvjGSWREF*nYa+=LCat=O!63CZmJ3jh{H2UD+ zTG^Lpwzb4ir`uw{aQOWNm{kBVRjiUuuAT0 zOPEdu41svF#Dn*L1Me&781S~jiu|42J?(R_=Q`4rJUs(CAF)`4N3OX`PvN6B87ex* z$X%S(70TY3XxJ!KNNLe1HUi>1_9BTyhq(N9MhU>zI+>%?qx{YSUc`II%1`oH3^c8c zp~J=!p?0}pbb*LY!Rj=8z5(PW+EJ05*pg0cN+)h#T08rvbZ$pMYVxZKUwroUnOn=Z zU*0;I-GqNE`&W8wJFWe2bnW{0V|QonoLWoYE&ueR#!nImpM8iDf1~l8)Cf+ki9aUqB%dH) kcd{x@-F|fkLDzgXi8I@o@utZ7=cal8Kz?RNhB5c+Unz_tYXATM diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/_serialization.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/_serialization.cpython-312.pyc deleted file mode 100644 index c500271005b4cb832f2e727e2f4c4a2a583ff63e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7030 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 Inef}c0a0?C4gdfE diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/keywrap.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/keywrap.cpython-312.pyc deleted file mode 100644 index a2ce5ff63709bb9e3f5b24bd6387e985455a6580..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7452 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 IBh0IR15@CT{{R30 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/poly1305.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/poly1305.cpython-312.pyc deleted file mode 100644 index 9017bfef5f1fce289344fa937fea242753506d81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmYk2u};G<5Qgn0RidV4t5_=#LnMeP6&qqfVys}zV!4e;TpT-coJ#2g8*jif@GMN7 zDrKsK7}$_1mQFY-QMuv#{r27Y*S+_89blqg+$U2Az(*~bXzc)Q#s*$N1R}^m3PT8M zZt+%Xg|=ZUhGCo9vu@M4KW7JfZYXq0+i!o>(ub8tgpitOCPi+fBQq-UoLBCh&`##O@W?o}$Ig41hN@5k&NP5TM)vZ4uHp>;CAix ZUrwK#wRgDk21{?S^8BUeKf9`4^Di_ccnJUi diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_asymmetric.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_asymmetric.py deleted file mode 100644 index ea55ffd..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_asymmetric.py +++ /dev/null @@ -1,19 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc - -# This exists to break an import cycle. It is normally accessible from the -# asymmetric padding module. - - -class AsymmetricPadding(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def name(self) -> str: - """ - A string naming this padding (e.g. "PSS", "PKCS1"). - """ diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py deleted file mode 100644 index 305a9fd..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py +++ /dev/null @@ -1,60 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc - -from cryptography import utils - -# This exists to break an import cycle. It is normally accessible from the -# ciphers module. - - -class CipherAlgorithm(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def name(self) -> str: - """ - A string naming this mode (e.g. "AES", "Camellia"). - """ - - @property - @abc.abstractmethod - def key_sizes(self) -> frozenset[int]: - """ - Valid key sizes for this algorithm in bits - """ - - @property - @abc.abstractmethod - def key_size(self) -> int: - """ - The size of the key being used as an integer in bits (e.g. 128, 256). - """ - - -class BlockCipherAlgorithm(CipherAlgorithm): - key: utils.Buffer - - @property - @abc.abstractmethod - def block_size(self) -> int: - """ - The size of a block as an integer in bits (e.g. 64, 128). - """ - - -def _verify_key_size( - algorithm: CipherAlgorithm, key: utils.Buffer -) -> utils.Buffer: - # Verify that the key is instance of bytes - utils._check_byteslike("key", key) - - # Verify that the key size matches the expected key size - if len(key) * 8 not in algorithm.key_sizes: - raise ValueError( - f"Invalid key size ({len(key) * 8}) for {algorithm.name}." - ) - return key diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_serialization.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_serialization.py deleted file mode 100644 index e998865..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_serialization.py +++ /dev/null @@ -1,168 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc - -from cryptography import utils -from cryptography.hazmat.primitives.hashes import HashAlgorithm - -# This exists to break an import cycle. These classes are normally accessible -# from the serialization module. - - -class PBES(utils.Enum): - PBESv1SHA1And3KeyTripleDESCBC = "PBESv1 using SHA1 and 3-Key TripleDES" - PBESv2SHA256AndAES256CBC = "PBESv2 using SHA256 PBKDF2 and AES256 CBC" - - -class Encoding(utils.Enum): - PEM = "PEM" - DER = "DER" - OpenSSH = "OpenSSH" - Raw = "Raw" - X962 = "ANSI X9.62" - SMIME = "S/MIME" - - -class PrivateFormat(utils.Enum): - PKCS8 = "PKCS8" - TraditionalOpenSSL = "TraditionalOpenSSL" - Raw = "Raw" - OpenSSH = "OpenSSH" - PKCS12 = "PKCS12" - - def encryption_builder(self) -> KeySerializationEncryptionBuilder: - if self not in (PrivateFormat.OpenSSH, PrivateFormat.PKCS12): - raise ValueError( - "encryption_builder only supported with PrivateFormat.OpenSSH" - " and PrivateFormat.PKCS12" - ) - return KeySerializationEncryptionBuilder(self) - - -class PublicFormat(utils.Enum): - SubjectPublicKeyInfo = "X.509 subjectPublicKeyInfo with PKCS#1" - PKCS1 = "Raw PKCS#1" - OpenSSH = "OpenSSH" - Raw = "Raw" - CompressedPoint = "X9.62 Compressed Point" - UncompressedPoint = "X9.62 Uncompressed Point" - - -class ParameterFormat(utils.Enum): - PKCS3 = "PKCS3" - - -class KeySerializationEncryption(metaclass=abc.ABCMeta): - pass - - -class BestAvailableEncryption(KeySerializationEncryption): - def __init__(self, password: bytes): - if not isinstance(password, bytes) or len(password) == 0: - raise ValueError("Password must be 1 or more bytes.") - - self.password = password - - -class NoEncryption(KeySerializationEncryption): - pass - - -class KeySerializationEncryptionBuilder: - def __init__( - self, - format: PrivateFormat, - *, - _kdf_rounds: int | None = None, - _hmac_hash: HashAlgorithm | None = None, - _key_cert_algorithm: PBES | None = None, - ) -> None: - self._format = format - - self._kdf_rounds = _kdf_rounds - self._hmac_hash = _hmac_hash - self._key_cert_algorithm = _key_cert_algorithm - - def kdf_rounds(self, rounds: int) -> KeySerializationEncryptionBuilder: - if self._kdf_rounds is not None: - raise ValueError("kdf_rounds already set") - - if not isinstance(rounds, int): - raise TypeError("kdf_rounds must be an integer") - - if rounds < 1: - raise ValueError("kdf_rounds must be a positive integer") - - return KeySerializationEncryptionBuilder( - self._format, - _kdf_rounds=rounds, - _hmac_hash=self._hmac_hash, - _key_cert_algorithm=self._key_cert_algorithm, - ) - - def hmac_hash( - self, algorithm: HashAlgorithm - ) -> KeySerializationEncryptionBuilder: - if self._format is not PrivateFormat.PKCS12: - raise TypeError( - "hmac_hash only supported with PrivateFormat.PKCS12" - ) - - if self._hmac_hash is not None: - raise ValueError("hmac_hash already set") - return KeySerializationEncryptionBuilder( - self._format, - _kdf_rounds=self._kdf_rounds, - _hmac_hash=algorithm, - _key_cert_algorithm=self._key_cert_algorithm, - ) - - def key_cert_algorithm( - self, algorithm: PBES - ) -> KeySerializationEncryptionBuilder: - if self._format is not PrivateFormat.PKCS12: - raise TypeError( - "key_cert_algorithm only supported with PrivateFormat.PKCS12" - ) - if self._key_cert_algorithm is not None: - raise ValueError("key_cert_algorithm already set") - return KeySerializationEncryptionBuilder( - self._format, - _kdf_rounds=self._kdf_rounds, - _hmac_hash=self._hmac_hash, - _key_cert_algorithm=algorithm, - ) - - def build(self, password: bytes) -> KeySerializationEncryption: - if not isinstance(password, bytes) or len(password) == 0: - raise ValueError("Password must be 1 or more bytes.") - - return _KeySerializationEncryption( - self._format, - password, - kdf_rounds=self._kdf_rounds, - hmac_hash=self._hmac_hash, - key_cert_algorithm=self._key_cert_algorithm, - ) - - -class _KeySerializationEncryption(KeySerializationEncryption): - def __init__( - self, - format: PrivateFormat, - password: bytes, - *, - kdf_rounds: int | None, - hmac_hash: HashAlgorithm | None, - key_cert_algorithm: PBES | None, - ): - self._format = format - self.password = password - - self._kdf_rounds = kdf_rounds - self._hmac_hash = hmac_hash - self._key_cert_algorithm = key_cert_algorithm diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py deleted file mode 100644 index b509336..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index a14ec634510446230b4a6b490273bc33e9e925d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211 zcmZ8bI|{-;5X~9|5mI^x3p1##*w_o6Agpo8j%GjXZUUQ&cm{iK;W0dcq)X+b^}+DI z#k{j@kr0;6S-yxrqxnZarR0&sWW`R;#7)Tc<7RLmjS_G(+$f_(hj297H+7(}6}p8Q zFJNPkM(^^?7CZ*Aw!FOaN_Z$;w82!4TNy#}PVoTNp~8SI)!av=L~vL_QJ}_96uFJV Ye6P&4sl~y~=mkdSNAXP=V=g821LOHS^Z)<= diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-312.pyc deleted file mode 100644 index 01a931d96a6830ad7deb0fcbc64ffb84d7e2e8cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6073 zcmcIo&2JmW6`$odDT=Z_D7lHPtlTyU5sQ?pwyx29w3TbS6)L1jkN`}9?UFkZS0;Cv z*`-_Zlmb4rm-wXSl(XRc5xw^!0VyOb5FkL10KKu6eetR9&F<`%NQ*jj3Cupuyq)*v zNB*ow<6kt_ZW*;0u3QOmRw09+;R>q=g+k~OK0nI zboK(4uL*m>J7&26mZ#3OJWuEA3v~VhmR}7l3MsJMPgIKk!Rm_SOsR%p+N!OahP4g< zvu2kXmemHaq*#>cYFi)h=BDTf-`;9Sr+*}pCiik-HCNWsn)ERB*lVb# zM{DIt@Y6C{BJ@RO^cPxIONO+v{Zu9A6mQ>qS7mC4+LT#MZ=HRgz;Ed^1%LNRU#cVq zHw&`&+@%I(s!c6fH8hz~yT=TWW$2FS51?U-_N%`3_5nGNoRme|I~LlIpSNo*vqNip zrfPOfgAVlCCQNCsZA0Y)YCNd5^+v7Rw_B#MQC+`LvvixTcGc#6b(dPTChK=?bC;>z zR=?I#2OZU}b(!ALZT$f>t5&}QBVu~9rnRcwzO%6FxvPK{dZ*l{{lQ9j?A1{!W$^VB z;Dr2@oI**O-a?|xpZEm5&zGV>SN)AQ zWo#Z=2g|Y6cZL6V_8&4t|aMhQ`pQxpSYL{XfAqI68H*G9RhD4+Dy zw%3wW8%?LAHY}T|P1we;bu~7P!$EFf2>N_^`2z6iVOgxh0yV5XC?1lNbnZC4bd+9t zl1QeDr%95zJVa?&Aep?|GE8LC#c$>+!!*2y88TZNW>LzK!pxIANZwaiH|Kv9^!H!v z&vgTh19s)XUA5U(EvpF?{)3SZk93-Wpbf(oP3>_acH2d%<-)+_16XE^c0K}H*)dv$ z2x#R-YXwl42ZGR2A(+dL{z5APfd(L37^5|irRHpi30xI^_sRZUu|iu&7}11{PH;c#Qu9B|IyH$OOA(SfF|9pHLu~Opo9bq=(Wl6(yB`9^!N} zzU2%NUB4I+jkgq{C>+vgR$7~kmGT#2rNTt4G&Kn;0mn?jMAMTnQJCRS)=E)k8pB^R zS~kRA#eS}GiTwa46i?ydCxQ_S^C5SC#ZGj5OAg8qEB;Z;XP-aeN0T2hH~qLrW)#u4 z1z0(nbzFlJ(vAz_0K9{xh_4==Lc{LGyxod>D~^)qaOLD)^FWWg>s#qW-8~QD4d30n zkP#Vjms0kc6`tkma#LljFPlA^A4HI(=wF&G)!3z&)A=2^$8XtcsSJ(*s5UNf0Vw5k zF@x5WV5%d;krPH@yGT@9(Sg2jpF&2u>iZe6hri;J9tdVcRwzycm`Vj3Jl-1hFa>|Z zPc)KNp@~Nl@B&T_Pg^*jI17;9VIB*235wd@H5r_+Iu>>ZIi8o~O$*!Z2>?$jXZ_-B zpJL||MjzWiWzHY*_(o=lt&AYlzeg-=v!CMsUtn<)3K-ue$_Uq-^jtRdSof0exS-dZ zI}-uDUWwDIJ5Y~b??JbNN=#*o_TLZRxj^>kO=#c&TSDiiV|2^jL^owD0;c^X{^fLg z8>Kr~{1%H*bc-m;p;Q6E`VNZ!JKa7>r2O0tq+xMHZWpK2VIt?{itxr^%-n`?^1{1{jQVHTF!iMQ{%%U+d}g^m%#f=C;O{kZ~h)~ zT7JZHuEOr~RX>6-i|iUF$LOwZ!37xKybcDxIMSX`=1a~y^yBcXPV{8xS%FAD{FW5HBX_y7ie{>D39hKLg}hda^>Ec}~n@Du9)06t&`p8x;= diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-312.pyc deleted file mode 100644 index 308363566322542b35823279f7c2a4cfa3a4e687..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6919 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 Z@2+>OB0&BeE*ux+c%^u29^ly7{u{+??D_xz diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-312.pyc deleted file mode 100644 index 1f17395eb8abe1db625caa5a016bac9f44b9d411..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10122 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 F{{^oL_lN)h diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-312.pyc deleted file mode 100644 index 3881042ba441c839cedd9e18c2ed68aa30222c1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3160 zcmd5-&2JM&6rWv>zdsZ5VJA*7I@H zQ_rXe)KkR?Rqe6=MKAHm)?QH$y%`~j#HnxA*~~hzTXI2N$usZ0nR&n8@6B89AHkpx z!82O_w)DFnp*PgA9&gv+-idlzRU|e%#N}{!2&j8xa?G1f=h7= zZp9;b6tCb_e1cE$3w|Xa1eBl<O%w6hwbVcd@}MEeGQVF;TJ2FsxInMwW2)$ z-&xnCvX=B1e6eIWikfKfq+mEn@#@v7~*b!ks3z?qz;)rq<}Ai-27yS0ey^_ARg%xE4!9@7r8jC)<*5-UsEwLleX5GJQbWab zDQOR_l*9u?)K_Y%q)587PqY3Yo0E6M& ztw1{%{*AjQ{EfiI_AQ&YW%tIi<+4=Mr9!5z?i02vlI^w&i-fYYkC-2RWHt{A1RwRR zhfY?^hEju+p07x1DxtSuG(7n{?W26&2yL81bCs)K0^z%?EsP7CH%jBkd1@JleX+QD^bsQYWz4sw*<_!w| ziKajBUXK5OV0cG|P81DCU&dd=+t~HPgXa(0*xkY-O*~>VTrE7+#8YkTZ{c_o!&Yw# zN1Hg>#=aJwXyS=B_O$R=6OVPmZfEqZ!#m6$hB_l?)-4sy$OcA=Vj2i5o{K-opTH86+>;7%cov?^<1j=KKeq7q|KV diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-312.pyc deleted file mode 100644 index 73fc48badb13deaa524d5023ff9de23c7b61cedb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1325 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 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-312.pyc deleted file mode 100644 index 551177ba1a093ce1b8e47cdfa0303f3306ac4915..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5445 zcmd5=&2JmW6`x%$$t6XJlB`&+rP^yJvdvZ^{Z+)4ofNYC71)s-%WhKw?RLc-iKIy` zJ-d`c#s%8KhaP&jb4hX)+(Z6`UVAZN7c>?z5FiMO-e}9d_)zq{*$?iLlHCM7WCgu_ zeDh}Jy*F>>{bv6$Je(x(yw&)qI6p$jxA?<*q7EZ${!Sp|9?^*|R7h3G3j*?DMa+xv zj#MI5DKAx{`6!o5l~^^NmpLD;B&x}LlJl|3P&JiL2}C3ph#tR7beW3f-QHxq_umo^ zBF?Y;h)8If%6jsF=t$TM9VzeY>3STM%lkdP_byNOc#nGkzTo59F$8v`-e|}8fE@?u z`1i2m9cRuU?b*>3n__18-`JQD>>;gIGc3(288ve$Bia);YG$KeH<(5Bh02=2N>;II z%jz|%nVCu2zvKh;y z?BS1(A3t%mu~I1&F41PeO%`sh1QZ+=HopW0l30Mmg(UuiD3Cj1*-de-=@QRXkCMKeyD6eX{qEV%} zvY{DOqefe$+#;lQqhf(@oz~WKmC{PC-n5EF?O686(VSVb=v*D*qpeXh7j!k}xSFf8 zQnh52)}dK5o7F0{SgDXh%d+(*+X3^o_F`Q9oXHN@I|@qXB9K3l@8pZ$q<41GGwt-u ziK%jvHnYC|(gw*y zY{{gRRa>UDf}xjcYj$kaV6g69nAs#uWv7B`(%KykLa+_b&P`0lKM}SIUIq8y1lD=_ z&Hue`4w}!j+i$k}+^t4wU8~TVrC5gRnUgJtu4%Vt6(E^_mkg`LhQOxaWuiHXs{x0s6VX+M`^|9V$3liIWhAx}BzBZ%pdDj;I)*1;CdM#BUQLEePWGIeee9>u+M4QXy~+=S z^E@xv&p?A^fNY389;SQ;M0U(rDbs?*8*FLCFe;uFpM3~Qpjy+aR8{Sys#XoXQ9(YX zs<<|8%TS@BnI`Q1qM`F$Z%4G1f<2&iOoAc! z;6;{U!uE2Q){$F8ThP1L4o7zEw5kb@RB{P)?_$LS+C)j(9c`|@&l{o zTsuAYD4lyK=LU~tKm1?9_&;_C_k9;&+yNd=;yJaCO<*u_djc46j-U77M{8eS><4>Z z!j6kTe&8w`Yp0KWb@oyE%Ckzh;#s14_E<*`dq;92>wGV<9Iw8dF~9C~6eL&b|qc{l<6pDrE?A z5dcAgDD;y;QLC*{1ui3SsNub+VFDC(fHO1JOFHCXolf?_93*uD#4dPacysMZSq__ICv$&} zO&q9A_X9O28(gHe0D7%VpUNfLTn>J1=%q;y&9PaWO=9P9BE%%Urpz!qjDjObjw0dU z^AvJ;+_B?Get`sw3p<14ERqXIwgPGBHAC_~{F`kcK1e(4gS5j4(#8dgi9SD3^8*l*t z;LEUF@Q~S)!3%K~l9BRL$?Smudw)p9`#eyp;kD7ss(7DgF&q$qg1u)e?cNQW;b#(i zJfzgHN)?l5o*iE}v-lyPP`>O7a5zK(w z$NVdhZbT4-mq{YL{VhrUi=25%&Oaq5pOTpuu|q=Ye&LIopWS>(fPMBWfk;DtIemZU zqt{;_oGMeG!GGr#!svrk_VV4vLybsO(UQ*CML c{^ic}Tzh)1Gkv-}efpo$d))|;_VFV5Um|RrH2?qr diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py deleted file mode 100644 index 1822e99..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py +++ /dev/null @@ -1,147 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc - -from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography.hazmat.primitives import _serialization - -generate_parameters = rust_openssl.dh.generate_parameters - - -DHPrivateNumbers = rust_openssl.dh.DHPrivateNumbers -DHPublicNumbers = rust_openssl.dh.DHPublicNumbers -DHParameterNumbers = rust_openssl.dh.DHParameterNumbers - - -class DHParameters(metaclass=abc.ABCMeta): - @abc.abstractmethod - def generate_private_key(self) -> DHPrivateKey: - """ - Generates and returns a DHPrivateKey. - """ - - @abc.abstractmethod - def parameter_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.ParameterFormat, - ) -> bytes: - """ - Returns the parameters serialized as bytes. - """ - - @abc.abstractmethod - def parameter_numbers(self) -> DHParameterNumbers: - """ - Returns a DHParameterNumbers. - """ - - -DHParametersWithSerialization = DHParameters -DHParameters.register(rust_openssl.dh.DHParameters) - - -class DHPublicKey(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def key_size(self) -> int: - """ - The bit length of the prime modulus. - """ - - @abc.abstractmethod - def parameters(self) -> DHParameters: - """ - The DHParameters object associated with this public key. - """ - - @abc.abstractmethod - def public_numbers(self) -> DHPublicNumbers: - """ - Returns a DHPublicNumbers. - """ - - @abc.abstractmethod - def public_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PublicFormat, - ) -> bytes: - """ - Returns the key serialized as bytes. - """ - - @abc.abstractmethod - def __eq__(self, other: object) -> bool: - """ - Checks equality. - """ - - @abc.abstractmethod - def __copy__(self) -> DHPublicKey: - """ - Returns a copy. - """ - - -DHPublicKeyWithSerialization = DHPublicKey -DHPublicKey.register(rust_openssl.dh.DHPublicKey) - - -class DHPrivateKey(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def key_size(self) -> int: - """ - The bit length of the prime modulus. - """ - - @abc.abstractmethod - def public_key(self) -> DHPublicKey: - """ - The DHPublicKey associated with this private key. - """ - - @abc.abstractmethod - def parameters(self) -> DHParameters: - """ - The DHParameters object associated with this private key. - """ - - @abc.abstractmethod - def exchange(self, peer_public_key: DHPublicKey) -> bytes: - """ - Given peer's DHPublicKey, carry out the key exchange and - return shared key as bytes. - """ - - @abc.abstractmethod - def private_numbers(self) -> DHPrivateNumbers: - """ - Returns a DHPrivateNumbers. - """ - - @abc.abstractmethod - def private_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PrivateFormat, - encryption_algorithm: _serialization.KeySerializationEncryption, - ) -> bytes: - """ - Returns the key serialized as bytes. - """ - - @abc.abstractmethod - def __copy__(self) -> DHPrivateKey: - """ - Returns a copy. - """ - - -DHPrivateKeyWithSerialization = DHPrivateKey -DHPrivateKey.register(rust_openssl.dh.DHPrivateKey) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py deleted file mode 100644 index 21d78ba..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py +++ /dev/null @@ -1,167 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc -import typing - -from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography.hazmat.primitives import _serialization, hashes -from cryptography.hazmat.primitives.asymmetric import utils as asym_utils -from cryptography.utils import Buffer - - -class DSAParameters(metaclass=abc.ABCMeta): - @abc.abstractmethod - def generate_private_key(self) -> DSAPrivateKey: - """ - Generates and returns a DSAPrivateKey. - """ - - @abc.abstractmethod - def parameter_numbers(self) -> DSAParameterNumbers: - """ - Returns a DSAParameterNumbers. - """ - - -DSAParametersWithNumbers = DSAParameters -DSAParameters.register(rust_openssl.dsa.DSAParameters) - - -class DSAPrivateKey(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def key_size(self) -> int: - """ - The bit length of the prime modulus. - """ - - @abc.abstractmethod - def public_key(self) -> DSAPublicKey: - """ - The DSAPublicKey associated with this private key. - """ - - @abc.abstractmethod - def parameters(self) -> DSAParameters: - """ - The DSAParameters object associated with this private key. - """ - - @abc.abstractmethod - def sign( - self, - data: Buffer, - algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, - ) -> bytes: - """ - Signs the data - """ - - @abc.abstractmethod - def private_numbers(self) -> DSAPrivateNumbers: - """ - Returns a DSAPrivateNumbers. - """ - - @abc.abstractmethod - def private_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PrivateFormat, - encryption_algorithm: _serialization.KeySerializationEncryption, - ) -> bytes: - """ - Returns the key serialized as bytes. - """ - - @abc.abstractmethod - def __copy__(self) -> DSAPrivateKey: - """ - Returns a copy. - """ - - -DSAPrivateKeyWithSerialization = DSAPrivateKey -DSAPrivateKey.register(rust_openssl.dsa.DSAPrivateKey) - - -class DSAPublicKey(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def key_size(self) -> int: - """ - The bit length of the prime modulus. - """ - - @abc.abstractmethod - def parameters(self) -> DSAParameters: - """ - The DSAParameters object associated with this public key. - """ - - @abc.abstractmethod - def public_numbers(self) -> DSAPublicNumbers: - """ - Returns a DSAPublicNumbers. - """ - - @abc.abstractmethod - def public_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PublicFormat, - ) -> bytes: - """ - Returns the key serialized as bytes. - """ - - @abc.abstractmethod - def verify( - self, - signature: Buffer, - data: Buffer, - algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, - ) -> None: - """ - Verifies the signature of the data. - """ - - @abc.abstractmethod - def __eq__(self, other: object) -> bool: - """ - Checks equality. - """ - - @abc.abstractmethod - def __copy__(self) -> DSAPublicKey: - """ - Returns a copy. - """ - - -DSAPublicKeyWithSerialization = DSAPublicKey -DSAPublicKey.register(rust_openssl.dsa.DSAPublicKey) - -DSAPrivateNumbers = rust_openssl.dsa.DSAPrivateNumbers -DSAPublicNumbers = rust_openssl.dsa.DSAPublicNumbers -DSAParameterNumbers = rust_openssl.dsa.DSAParameterNumbers - - -def generate_parameters( - key_size: int, backend: typing.Any = None -) -> DSAParameters: - if key_size not in (1024, 2048, 3072, 4096): - raise ValueError("Key size must be 1024, 2048, 3072, or 4096 bits.") - - return rust_openssl.dsa.generate_parameters(key_size) - - -def generate_private_key( - key_size: int, backend: typing.Any = None -) -> DSAPrivateKey: - parameters = generate_parameters(key_size) - return parameters.generate_private_key() diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py deleted file mode 100644 index a13d982..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py +++ /dev/null @@ -1,447 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc -import typing - -from cryptography import utils -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons -from cryptography.hazmat._oid import ObjectIdentifier -from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography.hazmat.primitives import _serialization, hashes -from cryptography.hazmat.primitives.asymmetric import utils as asym_utils - - -class EllipticCurveOID: - SECP192R1 = ObjectIdentifier("1.2.840.10045.3.1.1") - SECP224R1 = ObjectIdentifier("1.3.132.0.33") - SECP256K1 = ObjectIdentifier("1.3.132.0.10") - SECP256R1 = ObjectIdentifier("1.2.840.10045.3.1.7") - SECP384R1 = ObjectIdentifier("1.3.132.0.34") - SECP521R1 = ObjectIdentifier("1.3.132.0.35") - BRAINPOOLP256R1 = ObjectIdentifier("1.3.36.3.3.2.8.1.1.7") - BRAINPOOLP384R1 = ObjectIdentifier("1.3.36.3.3.2.8.1.1.11") - BRAINPOOLP512R1 = ObjectIdentifier("1.3.36.3.3.2.8.1.1.13") - SECT163K1 = ObjectIdentifier("1.3.132.0.1") - SECT163R2 = ObjectIdentifier("1.3.132.0.15") - SECT233K1 = ObjectIdentifier("1.3.132.0.26") - SECT233R1 = ObjectIdentifier("1.3.132.0.27") - SECT283K1 = ObjectIdentifier("1.3.132.0.16") - SECT283R1 = ObjectIdentifier("1.3.132.0.17") - SECT409K1 = ObjectIdentifier("1.3.132.0.36") - SECT409R1 = ObjectIdentifier("1.3.132.0.37") - SECT571K1 = ObjectIdentifier("1.3.132.0.38") - SECT571R1 = ObjectIdentifier("1.3.132.0.39") - - -class EllipticCurve(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def name(self) -> str: - """ - The name of the curve. e.g. secp256r1. - """ - - @property - @abc.abstractmethod - def key_size(self) -> int: - """ - Bit size of a secret scalar for the curve. - """ - - @property - @abc.abstractmethod - def group_order(self) -> int: - """ - The order of the curve's group. - """ - - -class EllipticCurveSignatureAlgorithm(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def algorithm( - self, - ) -> asym_utils.Prehashed | hashes.HashAlgorithm: - """ - The digest algorithm used with this signature. - """ - - -class EllipticCurvePrivateKey(metaclass=abc.ABCMeta): - @abc.abstractmethod - def exchange( - self, algorithm: ECDH, peer_public_key: EllipticCurvePublicKey - ) -> bytes: - """ - Performs a key exchange operation using the provided algorithm with the - provided peer's public key. - """ - - @abc.abstractmethod - def public_key(self) -> EllipticCurvePublicKey: - """ - The EllipticCurvePublicKey for this private key. - """ - - @property - @abc.abstractmethod - def curve(self) -> EllipticCurve: - """ - The EllipticCurve that this key is on. - """ - - @property - @abc.abstractmethod - def key_size(self) -> int: - """ - Bit size of a secret scalar for the curve. - """ - - @abc.abstractmethod - def sign( - self, - data: utils.Buffer, - signature_algorithm: EllipticCurveSignatureAlgorithm, - ) -> bytes: - """ - Signs the data - """ - - @abc.abstractmethod - def private_numbers(self) -> EllipticCurvePrivateNumbers: - """ - Returns an EllipticCurvePrivateNumbers. - """ - - @abc.abstractmethod - def private_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PrivateFormat, - encryption_algorithm: _serialization.KeySerializationEncryption, - ) -> bytes: - """ - Returns the key serialized as bytes. - """ - - @abc.abstractmethod - def __copy__(self) -> EllipticCurvePrivateKey: - """ - Returns a copy. - """ - - -EllipticCurvePrivateKeyWithSerialization = EllipticCurvePrivateKey -EllipticCurvePrivateKey.register(rust_openssl.ec.ECPrivateKey) - - -class EllipticCurvePublicKey(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def curve(self) -> EllipticCurve: - """ - The EllipticCurve that this key is on. - """ - - @property - @abc.abstractmethod - def key_size(self) -> int: - """ - Bit size of a secret scalar for the curve. - """ - - @abc.abstractmethod - def public_numbers(self) -> EllipticCurvePublicNumbers: - """ - Returns an EllipticCurvePublicNumbers. - """ - - @abc.abstractmethod - def public_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PublicFormat, - ) -> bytes: - """ - Returns the key serialized as bytes. - """ - - @abc.abstractmethod - def verify( - self, - signature: utils.Buffer, - data: utils.Buffer, - signature_algorithm: EllipticCurveSignatureAlgorithm, - ) -> None: - """ - Verifies the signature of the data. - """ - - @classmethod - def from_encoded_point( - cls, curve: EllipticCurve, data: bytes - ) -> EllipticCurvePublicKey: - utils._check_bytes("data", data) - - if len(data) == 0: - raise ValueError("data must not be an empty byte string") - - if data[0] not in [0x02, 0x03, 0x04]: - raise ValueError("Unsupported elliptic curve point type") - - return rust_openssl.ec.from_public_bytes(curve, data) - - @abc.abstractmethod - def __eq__(self, other: object) -> bool: - """ - Checks equality. - """ - - @abc.abstractmethod - def __copy__(self) -> EllipticCurvePublicKey: - """ - Returns a copy. - """ - - -EllipticCurvePublicKeyWithSerialization = EllipticCurvePublicKey -EllipticCurvePublicKey.register(rust_openssl.ec.ECPublicKey) - -EllipticCurvePrivateNumbers = rust_openssl.ec.EllipticCurvePrivateNumbers -EllipticCurvePublicNumbers = rust_openssl.ec.EllipticCurvePublicNumbers - - -class SECT571R1(EllipticCurve): - name = "sect571r1" - key_size = 570 - group_order = 0x3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE661CE18FF55987308059B186823851EC7DD9CA1161DE93D5174D66E8382E9BB2FE84E47 # noqa: E501 - - -class SECT409R1(EllipticCurve): - name = "sect409r1" - key_size = 409 - group_order = 0x10000000000000000000000000000000000000000000000000001E2AAD6A612F33307BE5FA47C3C9E052F838164CD37D9A21173 # noqa: E501 - - -class SECT283R1(EllipticCurve): - name = "sect283r1" - key_size = 283 - group_order = 0x3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF90399660FC938A90165B042A7CEFADB307 # noqa: E501 - - -class SECT233R1(EllipticCurve): - name = "sect233r1" - key_size = 233 - group_order = 0x1000000000000000000000000000013E974E72F8A6922031D2603CFE0D7 - - -class SECT163R2(EllipticCurve): - name = "sect163r2" - key_size = 163 - group_order = 0x40000000000000000000292FE77E70C12A4234C33 - - -class SECT571K1(EllipticCurve): - name = "sect571k1" - key_size = 571 - group_order = 0x20000000000000000000000000000000000000000000000000000000000000000000000131850E1F19A63E4B391A8DB917F4138B630D84BE5D639381E91DEB45CFE778F637C1001 # noqa: E501 - - -class SECT409K1(EllipticCurve): - name = "sect409k1" - key_size = 409 - group_order = 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5F83B2D4EA20400EC4557D5ED3E3E7CA5B4B5C83B8E01E5FCF # noqa: E501 - - -class SECT283K1(EllipticCurve): - name = "sect283k1" - key_size = 283 - group_order = 0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9AE2ED07577265DFF7F94451E061E163C61 # noqa: E501 - - -class SECT233K1(EllipticCurve): - name = "sect233k1" - key_size = 233 - group_order = 0x8000000000000000000000000000069D5BB915BCD46EFB1AD5F173ABDF - - -class SECT163K1(EllipticCurve): - name = "sect163k1" - key_size = 163 - group_order = 0x4000000000000000000020108A2E0CC0D99F8A5EF - - -class SECP521R1(EllipticCurve): - name = "secp521r1" - key_size = 521 - group_order = 0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409 # noqa: E501 - - -class SECP384R1(EllipticCurve): - name = "secp384r1" - key_size = 384 - group_order = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973 # noqa: E501 - - -class SECP256R1(EllipticCurve): - name = "secp256r1" - key_size = 256 - group_order = ( - 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 - ) - - -class SECP256K1(EllipticCurve): - name = "secp256k1" - key_size = 256 - group_order = ( - 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - ) - - -class SECP224R1(EllipticCurve): - name = "secp224r1" - key_size = 224 - group_order = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D - - -class SECP192R1(EllipticCurve): - name = "secp192r1" - key_size = 192 - group_order = 0xFFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831 - - -class BrainpoolP256R1(EllipticCurve): - name = "brainpoolP256r1" - key_size = 256 - group_order = ( - 0xA9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7 - ) - - -class BrainpoolP384R1(EllipticCurve): - name = "brainpoolP384r1" - key_size = 384 - group_order = 0x8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B31F166E6CAC0425A7CF3AB6AF6B7FC3103B883202E9046565 # noqa: E501 - - -class BrainpoolP512R1(EllipticCurve): - name = "brainpoolP512r1" - key_size = 512 - group_order = 0xAADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA70330870553E5C414CA92619418661197FAC10471DB1D381085DDADDB58796829CA90069 # noqa: E501 - - -_CURVE_TYPES: dict[str, EllipticCurve] = { - "prime192v1": SECP192R1(), - "prime256v1": SECP256R1(), - "secp192r1": SECP192R1(), - "secp224r1": SECP224R1(), - "secp256r1": SECP256R1(), - "secp384r1": SECP384R1(), - "secp521r1": SECP521R1(), - "secp256k1": SECP256K1(), - "sect163k1": SECT163K1(), - "sect233k1": SECT233K1(), - "sect283k1": SECT283K1(), - "sect409k1": SECT409K1(), - "sect571k1": SECT571K1(), - "sect163r2": SECT163R2(), - "sect233r1": SECT233R1(), - "sect283r1": SECT283R1(), - "sect409r1": SECT409R1(), - "sect571r1": SECT571R1(), - "brainpoolP256r1": BrainpoolP256R1(), - "brainpoolP384r1": BrainpoolP384R1(), - "brainpoolP512r1": BrainpoolP512R1(), -} - - -class ECDSA(EllipticCurveSignatureAlgorithm): - def __init__( - self, - algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, - deterministic_signing: bool = False, - ): - from cryptography.hazmat.backends.openssl.backend import backend - - if ( - deterministic_signing - and not backend.ecdsa_deterministic_supported() - ): - raise UnsupportedAlgorithm( - "ECDSA with deterministic signature (RFC 6979) is not " - "supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, - ) - self._algorithm = algorithm - self._deterministic_signing = deterministic_signing - - @property - def algorithm( - self, - ) -> asym_utils.Prehashed | hashes.HashAlgorithm: - return self._algorithm - - @property - def deterministic_signing( - self, - ) -> bool: - return self._deterministic_signing - - -generate_private_key = rust_openssl.ec.generate_private_key - - -def derive_private_key( - private_value: int, - curve: EllipticCurve, - backend: typing.Any = None, -) -> EllipticCurvePrivateKey: - if not isinstance(private_value, int): - raise TypeError("private_value must be an integer type.") - - if private_value <= 0: - raise ValueError("private_value must be a positive integer.") - - return rust_openssl.ec.derive_private_key(private_value, curve) - - -class ECDH: - pass - - -_OID_TO_CURVE = { - EllipticCurveOID.SECP192R1: SECP192R1, - EllipticCurveOID.SECP224R1: SECP224R1, - EllipticCurveOID.SECP256K1: SECP256K1, - EllipticCurveOID.SECP256R1: SECP256R1, - EllipticCurveOID.SECP384R1: SECP384R1, - EllipticCurveOID.SECP521R1: SECP521R1, - EllipticCurveOID.BRAINPOOLP256R1: BrainpoolP256R1, - EllipticCurveOID.BRAINPOOLP384R1: BrainpoolP384R1, - EllipticCurveOID.BRAINPOOLP512R1: BrainpoolP512R1, - EllipticCurveOID.SECT163K1: SECT163K1, - EllipticCurveOID.SECT163R2: SECT163R2, - EllipticCurveOID.SECT233K1: SECT233K1, - EllipticCurveOID.SECT233R1: SECT233R1, - EllipticCurveOID.SECT283K1: SECT283K1, - EllipticCurveOID.SECT283R1: SECT283R1, - EllipticCurveOID.SECT409K1: SECT409K1, - EllipticCurveOID.SECT409R1: SECT409R1, - EllipticCurveOID.SECT571K1: SECT571K1, - EllipticCurveOID.SECT571R1: SECT571R1, -} - - -def get_curve_for_oid(oid: ObjectIdentifier) -> type[EllipticCurve]: - try: - return _OID_TO_CURVE[oid] - except KeyError: - raise LookupError( - "The provided object identifier has no matching elliptic " - "curve class" - ) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py deleted file mode 100644 index e576dc9..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py +++ /dev/null @@ -1,129 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc - -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons -from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography.hazmat.primitives import _serialization -from cryptography.utils import Buffer - - -class Ed25519PublicKey(metaclass=abc.ABCMeta): - @classmethod - def from_public_bytes(cls, data: bytes) -> Ed25519PublicKey: - from cryptography.hazmat.backends.openssl.backend import backend - - if not backend.ed25519_supported(): - raise UnsupportedAlgorithm( - "ed25519 is not supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, - ) - - return rust_openssl.ed25519.from_public_bytes(data) - - @abc.abstractmethod - def public_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PublicFormat, - ) -> bytes: - """ - The serialized bytes of the public key. - """ - - @abc.abstractmethod - def public_bytes_raw(self) -> bytes: - """ - The raw bytes of the public key. - Equivalent to public_bytes(Raw, Raw). - """ - - @abc.abstractmethod - def verify(self, signature: Buffer, data: Buffer) -> None: - """ - Verify the signature. - """ - - @abc.abstractmethod - def __eq__(self, other: object) -> bool: - """ - Checks equality. - """ - - @abc.abstractmethod - def __copy__(self) -> Ed25519PublicKey: - """ - Returns a copy. - """ - - -Ed25519PublicKey.register(rust_openssl.ed25519.Ed25519PublicKey) - - -class Ed25519PrivateKey(metaclass=abc.ABCMeta): - @classmethod - def generate(cls) -> Ed25519PrivateKey: - from cryptography.hazmat.backends.openssl.backend import backend - - if not backend.ed25519_supported(): - raise UnsupportedAlgorithm( - "ed25519 is not supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, - ) - - return rust_openssl.ed25519.generate_key() - - @classmethod - def from_private_bytes(cls, data: Buffer) -> Ed25519PrivateKey: - from cryptography.hazmat.backends.openssl.backend import backend - - if not backend.ed25519_supported(): - raise UnsupportedAlgorithm( - "ed25519 is not supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, - ) - - return rust_openssl.ed25519.from_private_bytes(data) - - @abc.abstractmethod - def public_key(self) -> Ed25519PublicKey: - """ - The Ed25519PublicKey derived from the private key. - """ - - @abc.abstractmethod - def private_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PrivateFormat, - encryption_algorithm: _serialization.KeySerializationEncryption, - ) -> bytes: - """ - The serialized bytes of the private key. - """ - - @abc.abstractmethod - def private_bytes_raw(self) -> bytes: - """ - The raw bytes of the private key. - Equivalent to private_bytes(Raw, Raw, NoEncryption()). - """ - - @abc.abstractmethod - def sign(self, data: Buffer) -> bytes: - """ - Signs the data. - """ - - @abc.abstractmethod - def __copy__(self) -> Ed25519PrivateKey: - """ - Returns a copy. - """ - - -Ed25519PrivateKey.register(rust_openssl.ed25519.Ed25519PrivateKey) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py deleted file mode 100644 index 89db209..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py +++ /dev/null @@ -1,131 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc - -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons -from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography.hazmat.primitives import _serialization -from cryptography.utils import Buffer - - -class Ed448PublicKey(metaclass=abc.ABCMeta): - @classmethod - def from_public_bytes(cls, data: bytes) -> Ed448PublicKey: - from cryptography.hazmat.backends.openssl.backend import backend - - if not backend.ed448_supported(): - raise UnsupportedAlgorithm( - "ed448 is not supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, - ) - - return rust_openssl.ed448.from_public_bytes(data) - - @abc.abstractmethod - def public_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PublicFormat, - ) -> bytes: - """ - The serialized bytes of the public key. - """ - - @abc.abstractmethod - def public_bytes_raw(self) -> bytes: - """ - The raw bytes of the public key. - Equivalent to public_bytes(Raw, Raw). - """ - - @abc.abstractmethod - def verify(self, signature: Buffer, data: Buffer) -> None: - """ - Verify the signature. - """ - - @abc.abstractmethod - def __eq__(self, other: object) -> bool: - """ - Checks equality. - """ - - @abc.abstractmethod - def __copy__(self) -> Ed448PublicKey: - """ - Returns a copy. - """ - - -if hasattr(rust_openssl, "ed448"): - Ed448PublicKey.register(rust_openssl.ed448.Ed448PublicKey) - - -class Ed448PrivateKey(metaclass=abc.ABCMeta): - @classmethod - def generate(cls) -> Ed448PrivateKey: - from cryptography.hazmat.backends.openssl.backend import backend - - if not backend.ed448_supported(): - raise UnsupportedAlgorithm( - "ed448 is not supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, - ) - - return rust_openssl.ed448.generate_key() - - @classmethod - def from_private_bytes(cls, data: Buffer) -> Ed448PrivateKey: - from cryptography.hazmat.backends.openssl.backend import backend - - if not backend.ed448_supported(): - raise UnsupportedAlgorithm( - "ed448 is not supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, - ) - - return rust_openssl.ed448.from_private_bytes(data) - - @abc.abstractmethod - def public_key(self) -> Ed448PublicKey: - """ - The Ed448PublicKey derived from the private key. - """ - - @abc.abstractmethod - def sign(self, data: Buffer) -> bytes: - """ - Signs the data. - """ - - @abc.abstractmethod - def private_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PrivateFormat, - encryption_algorithm: _serialization.KeySerializationEncryption, - ) -> bytes: - """ - The serialized bytes of the private key. - """ - - @abc.abstractmethod - def private_bytes_raw(self) -> bytes: - """ - The raw bytes of the private key. - Equivalent to private_bytes(Raw, Raw, NoEncryption()). - """ - - @abc.abstractmethod - def __copy__(self) -> Ed448PrivateKey: - """ - Returns a copy. - """ - - -if hasattr(rust_openssl, "x448"): - Ed448PrivateKey.register(rust_openssl.ed448.Ed448PrivateKey) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py deleted file mode 100644 index b4babf4..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py +++ /dev/null @@ -1,113 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc - -from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.primitives._asymmetric import ( - AsymmetricPadding as AsymmetricPadding, -) -from cryptography.hazmat.primitives.asymmetric import rsa - - -class PKCS1v15(AsymmetricPadding): - name = "EMSA-PKCS1-v1_5" - - -class _MaxLength: - "Sentinel value for `MAX_LENGTH`." - - -class _Auto: - "Sentinel value for `AUTO`." - - -class _DigestLength: - "Sentinel value for `DIGEST_LENGTH`." - - -class PSS(AsymmetricPadding): - MAX_LENGTH = _MaxLength() - AUTO = _Auto() - DIGEST_LENGTH = _DigestLength() - name = "EMSA-PSS" - _salt_length: int | _MaxLength | _Auto | _DigestLength - - def __init__( - self, - mgf: MGF, - salt_length: int | _MaxLength | _Auto | _DigestLength, - ) -> None: - self._mgf = mgf - - if not isinstance( - salt_length, (int, _MaxLength, _Auto, _DigestLength) - ): - raise TypeError( - "salt_length must be an integer, MAX_LENGTH, " - "DIGEST_LENGTH, or AUTO" - ) - - if isinstance(salt_length, int) and salt_length < 0: - raise ValueError("salt_length must be zero or greater.") - - self._salt_length = salt_length - - @property - def mgf(self) -> MGF: - return self._mgf - - -class OAEP(AsymmetricPadding): - name = "EME-OAEP" - - def __init__( - self, - mgf: MGF, - algorithm: hashes.HashAlgorithm, - label: bytes | None, - ): - if not isinstance(algorithm, hashes.HashAlgorithm): - raise TypeError("Expected instance of hashes.HashAlgorithm.") - - self._mgf = mgf - self._algorithm = algorithm - self._label = label - - @property - def algorithm(self) -> hashes.HashAlgorithm: - return self._algorithm - - @property - def mgf(self) -> MGF: - return self._mgf - - -class MGF(metaclass=abc.ABCMeta): - _algorithm: hashes.HashAlgorithm - - -class MGF1(MGF): - MAX_LENGTH = _MaxLength() - - def __init__(self, algorithm: hashes.HashAlgorithm): - if not isinstance(algorithm, hashes.HashAlgorithm): - raise TypeError("Expected instance of hashes.HashAlgorithm.") - - self._algorithm = algorithm - - -def calculate_max_pss_salt_length( - key: rsa.RSAPrivateKey | rsa.RSAPublicKey, - hash_algorithm: hashes.HashAlgorithm, -) -> int: - if not isinstance(key, (rsa.RSAPrivateKey, rsa.RSAPublicKey)): - raise TypeError("key must be an RSA public or private key") - # bit length - 1 per RFC 3447 - emlen = (key.key_size + 6) // 8 - salt_length = emlen - hash_algorithm.digest_size - 2 - assert salt_length >= 0 - return salt_length diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py deleted file mode 100644 index 2e192aa..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py +++ /dev/null @@ -1,277 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc -import random -import typing -from math import gcd - -from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography.hazmat.primitives import _serialization, hashes -from cryptography.hazmat.primitives._asymmetric import AsymmetricPadding -from cryptography.hazmat.primitives.asymmetric import utils as asym_utils - - -class RSAPrivateKey(metaclass=abc.ABCMeta): - @abc.abstractmethod - def decrypt(self, ciphertext: bytes, padding: AsymmetricPadding) -> bytes: - """ - Decrypts the provided ciphertext. - """ - - @property - @abc.abstractmethod - def key_size(self) -> int: - """ - The bit length of the public modulus. - """ - - @abc.abstractmethod - def public_key(self) -> RSAPublicKey: - """ - The RSAPublicKey associated with this private key. - """ - - @abc.abstractmethod - def sign( - self, - data: bytes, - padding: AsymmetricPadding, - algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, - ) -> bytes: - """ - Signs the data. - """ - - @abc.abstractmethod - def private_numbers(self) -> RSAPrivateNumbers: - """ - Returns an RSAPrivateNumbers. - """ - - @abc.abstractmethod - def private_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PrivateFormat, - encryption_algorithm: _serialization.KeySerializationEncryption, - ) -> bytes: - """ - Returns the key serialized as bytes. - """ - - @abc.abstractmethod - def __copy__(self) -> RSAPrivateKey: - """ - Returns a copy. - """ - - -RSAPrivateKeyWithSerialization = RSAPrivateKey -RSAPrivateKey.register(rust_openssl.rsa.RSAPrivateKey) - - -class RSAPublicKey(metaclass=abc.ABCMeta): - @abc.abstractmethod - def encrypt(self, plaintext: bytes, padding: AsymmetricPadding) -> bytes: - """ - Encrypts the given plaintext. - """ - - @property - @abc.abstractmethod - def key_size(self) -> int: - """ - The bit length of the public modulus. - """ - - @abc.abstractmethod - def public_numbers(self) -> RSAPublicNumbers: - """ - Returns an RSAPublicNumbers - """ - - @abc.abstractmethod - def public_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PublicFormat, - ) -> bytes: - """ - Returns the key serialized as bytes. - """ - - @abc.abstractmethod - def verify( - self, - signature: bytes, - data: bytes, - padding: AsymmetricPadding, - algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, - ) -> None: - """ - Verifies the signature of the data. - """ - - @abc.abstractmethod - def recover_data_from_signature( - self, - signature: bytes, - padding: AsymmetricPadding, - algorithm: hashes.HashAlgorithm | None, - ) -> bytes: - """ - Recovers the original data from the signature. - """ - - @abc.abstractmethod - def __eq__(self, other: object) -> bool: - """ - Checks equality. - """ - - @abc.abstractmethod - def __copy__(self) -> RSAPublicKey: - """ - Returns a copy. - """ - - -RSAPublicKeyWithSerialization = RSAPublicKey -RSAPublicKey.register(rust_openssl.rsa.RSAPublicKey) - -RSAPrivateNumbers = rust_openssl.rsa.RSAPrivateNumbers -RSAPublicNumbers = rust_openssl.rsa.RSAPublicNumbers - - -def generate_private_key( - public_exponent: int, - key_size: int, - backend: typing.Any = None, -) -> RSAPrivateKey: - _verify_rsa_parameters(public_exponent, key_size) - return rust_openssl.rsa.generate_private_key(public_exponent, key_size) - - -def _verify_rsa_parameters(public_exponent: int, key_size: int) -> None: - if public_exponent not in (3, 65537): - raise ValueError( - "public_exponent must be either 3 (for legacy compatibility) or " - "65537. Almost everyone should choose 65537 here!" - ) - - if key_size < 1024: - raise ValueError("key_size must be at least 1024-bits.") - - -def _modinv(e: int, m: int) -> int: - """ - Modular Multiplicative Inverse. Returns x such that: (x*e) mod m == 1 - """ - x1, x2 = 1, 0 - a, b = e, m - while b > 0: - q, r = divmod(a, b) - xn = x1 - q * x2 - a, b, x1, x2 = b, r, x2, xn - return x1 % m - - -def rsa_crt_iqmp(p: int, q: int) -> int: - """ - Compute the CRT (q ** -1) % p value from RSA primes p and q. - """ - return _modinv(q, p) - - -def rsa_crt_dmp1(private_exponent: int, p: int) -> int: - """ - Compute the CRT private_exponent % (p - 1) value from the RSA - private_exponent (d) and p. - """ - return private_exponent % (p - 1) - - -def rsa_crt_dmq1(private_exponent: int, q: int) -> int: - """ - Compute the CRT private_exponent % (q - 1) value from the RSA - private_exponent (d) and q. - """ - return private_exponent % (q - 1) - - -def rsa_recover_private_exponent(e: int, p: int, q: int) -> int: - """ - Compute the RSA private_exponent (d) given the public exponent (e) - and the RSA primes p and q. - - This uses the Carmichael totient function to generate the - smallest possible working value of the private exponent. - """ - # This lambda_n is the Carmichael totient function. - # The original RSA paper uses the Euler totient function - # here: phi_n = (p - 1) * (q - 1) - # Either version of the private exponent will work, but the - # one generated by the older formulation may be larger - # than necessary. (lambda_n always divides phi_n) - # - # TODO: Replace with lcm(p - 1, q - 1) once the minimum - # supported Python version is >= 3.9. - lambda_n = (p - 1) * (q - 1) // gcd(p - 1, q - 1) - return _modinv(e, lambda_n) - - -# Controls the number of iterations rsa_recover_prime_factors will perform -# to obtain the prime factors. -_MAX_RECOVERY_ATTEMPTS = 500 - - -def rsa_recover_prime_factors(n: int, e: int, d: int) -> tuple[int, int]: - """ - Compute factors p and q from the private exponent d. We assume that n has - no more than two factors. This function is adapted from code in PyCrypto. - """ - # reject invalid values early - if d <= 1 or e <= 1: - raise ValueError("d, e can't be <= 1") - if 17 != pow(17, e * d, n): - raise ValueError("n, d, e don't match") - # See 8.2.2(i) in Handbook of Applied Cryptography. - ktot = d * e - 1 - # The quantity d*e-1 is a multiple of phi(n), even, - # and can be represented as t*2^s. - t = ktot - while t % 2 == 0: - t = t // 2 - # Cycle through all multiplicative inverses in Zn. - # The algorithm is non-deterministic, but there is a 50% chance - # any candidate a leads to successful factoring. - # See "Digitalized Signatures and Public Key Functions as Intractable - # as Factorization", M. Rabin, 1979 - spotted = False - tries = 0 - while not spotted and tries < _MAX_RECOVERY_ATTEMPTS: - a = random.randint(2, n - 1) - tries += 1 - k = t - # Cycle through all values a^{t*2^i}=a^k - while k < ktot: - cand = pow(a, k, n) - # Check if a^k is a non-trivial root of unity (mod n) - if cand != 1 and cand != (n - 1) and pow(cand, 2, n) == 1: - # We have found a number such that (cand-1)(cand+1)=0 (mod n). - # Either of the terms divides n. - p = gcd(cand + 1, n) - spotted = True - break - k *= 2 - if not spotted: - raise ValueError("Unable to compute factors p and q from exponent d.") - # Found ! - q, r = divmod(n, p) - assert r == 0 - p, q = sorted((p, q), reverse=True) - return (p, q) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/types.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/types.py deleted file mode 100644 index 1fe4eaf..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/types.py +++ /dev/null @@ -1,111 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import typing - -from cryptography import utils -from cryptography.hazmat.primitives.asymmetric import ( - dh, - dsa, - ec, - ed448, - ed25519, - rsa, - x448, - x25519, -) - -# Every asymmetric key type -PublicKeyTypes = typing.Union[ - dh.DHPublicKey, - dsa.DSAPublicKey, - rsa.RSAPublicKey, - ec.EllipticCurvePublicKey, - ed25519.Ed25519PublicKey, - ed448.Ed448PublicKey, - x25519.X25519PublicKey, - x448.X448PublicKey, -] -PUBLIC_KEY_TYPES = PublicKeyTypes -utils.deprecated( - PUBLIC_KEY_TYPES, - __name__, - "Use PublicKeyTypes instead", - utils.DeprecatedIn40, - name="PUBLIC_KEY_TYPES", -) -# Every asymmetric key type -PrivateKeyTypes = typing.Union[ - dh.DHPrivateKey, - ed25519.Ed25519PrivateKey, - ed448.Ed448PrivateKey, - rsa.RSAPrivateKey, - dsa.DSAPrivateKey, - ec.EllipticCurvePrivateKey, - x25519.X25519PrivateKey, - x448.X448PrivateKey, -] -PRIVATE_KEY_TYPES = PrivateKeyTypes -utils.deprecated( - PRIVATE_KEY_TYPES, - __name__, - "Use PrivateKeyTypes instead", - utils.DeprecatedIn40, - name="PRIVATE_KEY_TYPES", -) -# Just the key types we allow to be used for x509 signing. This mirrors -# the certificate public key types -CertificateIssuerPrivateKeyTypes = typing.Union[ - ed25519.Ed25519PrivateKey, - ed448.Ed448PrivateKey, - rsa.RSAPrivateKey, - dsa.DSAPrivateKey, - ec.EllipticCurvePrivateKey, -] -CERTIFICATE_PRIVATE_KEY_TYPES = CertificateIssuerPrivateKeyTypes -utils.deprecated( - CERTIFICATE_PRIVATE_KEY_TYPES, - __name__, - "Use CertificateIssuerPrivateKeyTypes instead", - utils.DeprecatedIn40, - name="CERTIFICATE_PRIVATE_KEY_TYPES", -) -# Just the key types we allow to be used for x509 signing. This mirrors -# the certificate private key types -CertificateIssuerPublicKeyTypes = typing.Union[ - dsa.DSAPublicKey, - rsa.RSAPublicKey, - ec.EllipticCurvePublicKey, - ed25519.Ed25519PublicKey, - ed448.Ed448PublicKey, -] -CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES = CertificateIssuerPublicKeyTypes -utils.deprecated( - CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES, - __name__, - "Use CertificateIssuerPublicKeyTypes instead", - utils.DeprecatedIn40, - name="CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES", -) -# This type removes DHPublicKey. x448/x25519 can be a public key -# but cannot be used in signing so they are allowed here. -CertificatePublicKeyTypes = typing.Union[ - dsa.DSAPublicKey, - rsa.RSAPublicKey, - ec.EllipticCurvePublicKey, - ed25519.Ed25519PublicKey, - ed448.Ed448PublicKey, - x25519.X25519PublicKey, - x448.X448PublicKey, -] -CERTIFICATE_PUBLIC_KEY_TYPES = CertificatePublicKeyTypes -utils.deprecated( - CERTIFICATE_PUBLIC_KEY_TYPES, - __name__, - "Use CertificatePublicKeyTypes instead", - utils.DeprecatedIn40, - name="CERTIFICATE_PUBLIC_KEY_TYPES", -) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py deleted file mode 100644 index 826b956..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py +++ /dev/null @@ -1,24 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -from cryptography.hazmat.bindings._rust import asn1 -from cryptography.hazmat.primitives import hashes - -decode_dss_signature = asn1.decode_dss_signature -encode_dss_signature = asn1.encode_dss_signature - - -class Prehashed: - def __init__(self, algorithm: hashes.HashAlgorithm): - if not isinstance(algorithm, hashes.HashAlgorithm): - raise TypeError("Expected instance of HashAlgorithm.") - - self._algorithm = algorithm - self._digest_size = algorithm.digest_size - - @property - def digest_size(self) -> int: - return self._digest_size diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py deleted file mode 100644 index a499376..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py +++ /dev/null @@ -1,122 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc - -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons -from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography.hazmat.primitives import _serialization -from cryptography.utils import Buffer - - -class X25519PublicKey(metaclass=abc.ABCMeta): - @classmethod - def from_public_bytes(cls, data: bytes) -> X25519PublicKey: - from cryptography.hazmat.backends.openssl.backend import backend - - if not backend.x25519_supported(): - raise UnsupportedAlgorithm( - "X25519 is not supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, - ) - - return rust_openssl.x25519.from_public_bytes(data) - - @abc.abstractmethod - def public_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PublicFormat, - ) -> bytes: - """ - The serialized bytes of the public key. - """ - - @abc.abstractmethod - def public_bytes_raw(self) -> bytes: - """ - The raw bytes of the public key. - Equivalent to public_bytes(Raw, Raw). - """ - - @abc.abstractmethod - def __eq__(self, other: object) -> bool: - """ - Checks equality. - """ - - @abc.abstractmethod - def __copy__(self) -> X25519PublicKey: - """ - Returns a copy. - """ - - -X25519PublicKey.register(rust_openssl.x25519.X25519PublicKey) - - -class X25519PrivateKey(metaclass=abc.ABCMeta): - @classmethod - def generate(cls) -> X25519PrivateKey: - from cryptography.hazmat.backends.openssl.backend import backend - - if not backend.x25519_supported(): - raise UnsupportedAlgorithm( - "X25519 is not supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, - ) - return rust_openssl.x25519.generate_key() - - @classmethod - def from_private_bytes(cls, data: Buffer) -> X25519PrivateKey: - from cryptography.hazmat.backends.openssl.backend import backend - - if not backend.x25519_supported(): - raise UnsupportedAlgorithm( - "X25519 is not supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, - ) - - return rust_openssl.x25519.from_private_bytes(data) - - @abc.abstractmethod - def public_key(self) -> X25519PublicKey: - """ - Returns the public key associated with this private key - """ - - @abc.abstractmethod - def private_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PrivateFormat, - encryption_algorithm: _serialization.KeySerializationEncryption, - ) -> bytes: - """ - The serialized bytes of the private key. - """ - - @abc.abstractmethod - def private_bytes_raw(self) -> bytes: - """ - The raw bytes of the private key. - Equivalent to private_bytes(Raw, Raw, NoEncryption()). - """ - - @abc.abstractmethod - def exchange(self, peer_public_key: X25519PublicKey) -> bytes: - """ - Performs a key exchange operation using the provided peer's public key. - """ - - @abc.abstractmethod - def __copy__(self) -> X25519PrivateKey: - """ - Returns a copy. - """ - - -X25519PrivateKey.register(rust_openssl.x25519.X25519PrivateKey) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py deleted file mode 100644 index c6fd71b..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py +++ /dev/null @@ -1,125 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc - -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons -from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography.hazmat.primitives import _serialization -from cryptography.utils import Buffer - - -class X448PublicKey(metaclass=abc.ABCMeta): - @classmethod - def from_public_bytes(cls, data: bytes) -> X448PublicKey: - from cryptography.hazmat.backends.openssl.backend import backend - - if not backend.x448_supported(): - raise UnsupportedAlgorithm( - "X448 is not supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, - ) - - return rust_openssl.x448.from_public_bytes(data) - - @abc.abstractmethod - def public_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PublicFormat, - ) -> bytes: - """ - The serialized bytes of the public key. - """ - - @abc.abstractmethod - def public_bytes_raw(self) -> bytes: - """ - The raw bytes of the public key. - Equivalent to public_bytes(Raw, Raw). - """ - - @abc.abstractmethod - def __eq__(self, other: object) -> bool: - """ - Checks equality. - """ - - @abc.abstractmethod - def __copy__(self) -> X448PublicKey: - """ - Returns a copy. - """ - - -if hasattr(rust_openssl, "x448"): - X448PublicKey.register(rust_openssl.x448.X448PublicKey) - - -class X448PrivateKey(metaclass=abc.ABCMeta): - @classmethod - def generate(cls) -> X448PrivateKey: - from cryptography.hazmat.backends.openssl.backend import backend - - if not backend.x448_supported(): - raise UnsupportedAlgorithm( - "X448 is not supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, - ) - - return rust_openssl.x448.generate_key() - - @classmethod - def from_private_bytes(cls, data: Buffer) -> X448PrivateKey: - from cryptography.hazmat.backends.openssl.backend import backend - - if not backend.x448_supported(): - raise UnsupportedAlgorithm( - "X448 is not supported by this version of OpenSSL.", - _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, - ) - - return rust_openssl.x448.from_private_bytes(data) - - @abc.abstractmethod - def public_key(self) -> X448PublicKey: - """ - Returns the public key associated with this private key - """ - - @abc.abstractmethod - def private_bytes( - self, - encoding: _serialization.Encoding, - format: _serialization.PrivateFormat, - encryption_algorithm: _serialization.KeySerializationEncryption, - ) -> bytes: - """ - The serialized bytes of the private key. - """ - - @abc.abstractmethod - def private_bytes_raw(self) -> bytes: - """ - The raw bytes of the private key. - Equivalent to private_bytes(Raw, Raw, NoEncryption()). - """ - - @abc.abstractmethod - def exchange(self, peer_public_key: X448PublicKey) -> bytes: - """ - Performs a key exchange operation using the provided peer's public key. - """ - - @abc.abstractmethod - def __copy__(self) -> X448PrivateKey: - """ - Returns a copy. - """ - - -if hasattr(rust_openssl, "x448"): - X448PrivateKey.register(rust_openssl.x448.X448PrivateKey) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py deleted file mode 100644 index 10c15d0..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -from cryptography.hazmat.primitives._cipheralgorithm import ( - BlockCipherAlgorithm, - CipherAlgorithm, -) -from cryptography.hazmat.primitives.ciphers.base import ( - AEADCipherContext, - AEADDecryptionContext, - AEADEncryptionContext, - Cipher, - CipherContext, -) - -__all__ = [ - "AEADCipherContext", - "AEADDecryptionContext", - "AEADEncryptionContext", - "BlockCipherAlgorithm", - "Cipher", - "CipherAlgorithm", - "CipherContext", -] diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 5d342691d7d8b1a43c7b567838cf947b7dbd0001..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 639 zcmah_J#X7E6eJ~ClI0pri)IhdNeC(;=~@(U;;aR_av>O-wV3cjpeUot)?d-RQ}SE# z54d*fRx}6#WGZPTDD0&V;DPVJckhn3(`f;G?RTH+>j;3Kp?NOfhk|!=kKe%(ETI4r zVhF=M5|NB?EEAk;`dEx)ic^{4Oy)S3V?34xE+ANeW%2{!Nk1ynUqP^hZbFsPmRhb= zTSo59iO`G7Q{L3f%*09?ZfogY?hxh3y_%iP<^z4Im1SS8+Yi*7Ell48xh?uk?b7Km z?50~HWoA-u%wz%b07-yxfKh<(NuSCWt{~(~XFJ0PF|p?y+APp3Lz}vgX7?+_HBKU0l)?Yq!#%Ar1PM20d9qgmA?zAyv~q w<{zY9c7lC0ul;`LPkZ3ucMKuCF93Y|ki;;0$Ws{I0}p@p@=5e9GkgBgU)ZI*YybcN diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-312.pyc deleted file mode 100644 index 784b692e97d8f91c7514f7eff92dae609ea6985d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829 zcmZ{iziZn-6vyvu*|KE0xKR^ALMW*N!O%)cjJHx~MO!-b7l965#3i~|awMHNoeVMr zoWG)bxBe|%s!2v`>Ci1Sbjj4axCPTn5Al8P``$;oC%7-2jtY3JC-2=^4S;XL{0;6! z!0U$)fRDfd4)j3)M-Ym-=GTJyNP=Jtocbp?YG7%iE#Fwx$(>cVtVePM+bv;R73^9G zt5mS}N?5gm-6&z(73^jStEE!E@k0#yuxO(&Bn&Z+gfX`=iEtRle!p2XpFTgftk<{s zCC>`?JRiUMP{_P|Ydss>&P1bYxrjeU2k(fV9u5wMZ~C1=we7QnB^28>t@G202d6ZR z7#UL(xvAlzS%8>v;)RYEj$^~7NzAAuKuwhPpH&Lkwvq4Kb|E2*9NOdr6?cL*geXE< zLS!zV!8KQKb8fmMz~+P?5|9wjJk#PonD~r0r#PINzIS3qDRW6UFbflyUgTmLn_?X!N^e?^1L7n;enNGAHouA>zTk3IhY;EACHTXx=?M&Uy c)n2Cd=JG<@%(b0N+sU>4OxwRy=v}_SZym$2TL1t6 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-312.pyc deleted file mode 100644 index 2fae7b9a4da711e18691c5b3b53cbd9cbdf20880..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6043 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 HezN`zr*b4f diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-312.pyc deleted file mode 100644 index 85dda51a986af069d64a1a4183ee19c0322e4971..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7083 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 NZPM~ja*7`b{{wpY;Sm4; diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-312.pyc deleted file mode 100644 index 618086b0a88b235d160f45a83a740d96502dcac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11798 zcmc&aTWlLwcJtz!A|+XpMZG+hZCSJ}Y9-l96u% z#Hd+2>vo-es_2JR6loQ7i?!hZ@nRR)>;gs8zeV?>l&nAmp`r%1{qUc5DYu1Dpgrf# zgF|X;D^85P1kc<#_ug~woOABE=bV|}R#mwvDD~5?O}x)j)bH>{FLt#;7efq1-J}Fc zpp#UJj?gsLnIsco;L0Z16c^zLj!W87_J}>@h&af-E$K|TBCeD>;wJa@q$lN#cxj5E zPEdm5Iwd$o=5muhVd?sb>kg~lMSP^M8~S=g-(!1oT5mt;?Scfo&w%Ccrj}J_8#d*cQOHnkY08Y#U&=nXt_S%L8`13EM)j?SS1O));hK z33ex7cZq(n_Kq%twizb4=K%^NNEbY@bULHNltd;ihvD8ftt66ikSWx?o|dPlrZSQu z3WLc@87ZMmqzcaHIWZ$6H^nSRO;ccKmbj5Odl`DRXtFlwjjDV4)-@H zk&4g)6=6hH2MzS5mcjCW7XC=;1< zU#O?ITTUoq*HkP%8M`FP-EnDVO37T3Vp9_{-4n5FDyDQ#Nr_ZKNnF8ZA_BP^7bb_M zW(piESIoNbVMAEm0&6IOk)W*i9)fwzrE8J-a1lQKMbOyOh6BveE`EyhJz zj!83oB7G$$C1Pns<}(*n?sVcR_Ca4wWr7B&cqTQTNE21#W0J_HM8(81sR|Z!o00r* zDY%T`GA@N87G!&y zlNzwiiJ%ccfeV9tf=s?x)lLF8=0RxhvdOq1h_8w5P<7c-d2^jIah337j0Yrz_2!Nk)`a7 z2z+ZC+^)GPyGw88wC3M4P*VvbIoNA1m^&6v#^lFrHJoe{TaC5eYG66ILJM;HPrw|E zra=KgB3UBS3u0W!NKf5dXAONA162ZiP2*EKU5&oJJe? zn??f9%wICP#9y+S5J4V59+Yh6=J?x#gDUvjjW`7Ru~OnMqMjRn1G>fxPQz)HRuXYy zpT=UBo~p}FFiuMB5|0j1G9e1Qk|76S9L{h>nnt^4oPQ}ibf0FNSfG||ee60z(0l|r zR+52Xb%^!jXL%5p_*9)If~=599}-4z7%L^2AgatUU;zPty7&fEZc?-KWw=%rfu1}D zWSXJ1(y4&10yEhOtscduj}zECn)~$uJwwen7)hM6AX{)kuc(~JisbMuxG&)OG9pPC zNvek>lz9{N(KtFc(U>SlaadAJUs5I{WXo~viwwC+4j=-WLFh9KH*tRhG)9}aP zyW-N$gR8#Ay!UjGW&G|nigCHuSZddyoMRiYAZ3hn03pK2??L4zrDzPGs9DO2X*z@c zjG1KwIt#1==5jE!qD;O3tZh+{Iw=D5{~HMSfGWB(6$M(jk8C<^WPZ>Vet;dbHKX9h zfn&vwUf_{;eCH#3kg)d=9SYhCEO3S#U!W ziB`|zYK_xs8!~wWn$N&rJ_X<^wQi?;HFI?wDqw*f-){DXWe*sJx z?-|8V*gINHZY?S5EDao^KVlRu%%&{4s*n7DR?q<>WtP&pEHFfR%w@0MR=N`DH7n@u zk|MBH6i{kpCAJFL*~5?8c}aYGIw6U$EqEdrUX27w&bM?FXlLtm`4Z!jzxz@&z>APCkzl?_N8Q5=Yn%}wLTITkw za&>cK^8;USyHv&kIiqOX5b{%iD#aWS;M|>8$O%tI zvz)AKs6d-JIZMw{QDe8yK$saO_Utw*A=QFzpUByoOiYS}hNxvIpv9+TaM@V`(IO6r zMzda6cSygR0_sH!46ahE&Z-q>+oH2Ax2-?-;+bV&SrKV*T~04~MyITRRE#4%T?`~EE}{ymHSJvq&MhT$PQ zkS3hm6mk7-yDEblvej|_s$mZ4jyh!-?S`=dK??pwqzYk;XRrL*HP~M$}e12i;X$jApoCkCKr=HHShdnsrn{d1bxuuzmpsj@wJo{Um+#dM=DdUV8=7x$KlD7a&PwP^25D&=E*rEKnUHni z3dxiF1>6?#=pA?Bl1BkaiXMY4}4-16fHh=rKt^D(W~$p2&(A6G9;V0a$DTa`==w6A<9#DKVb7 zs6|3%zX2vj^+NBOczi&x3snvWq4#~Dr*}g;j)8XlR6^bq?CSH7E3_9}V>45l<9!g? ziKDRLgd*l5+XS>i*2%l?!BF`E08mg*{aoTFdsf=}7Tf!N5m`BKeDT2X-1Za8o|CJ! z&1(!@(_3WOEk5uNs(g?v^VY9;S{FU73z0=nH)t^S=ri?TDepIk7DGyq?3I$elhEu2 zolh}(sH~RuE{Y8Z-h;oq3xHwo?6#J*YR%p?8}_bw-R`mZRAYzZ%8Z?MF3`m~Xel># zA{Vh?!n(jh8af=bTP~RR2UbZ)JX0hD^YE8ZUA1N2Z|yZ~FSeI0$FRL2XenRLW)AgN zj}MjYU9^H^?|$_|T{;W2q}LFP0kANAFu7s+KE{5iSzpbPNpB(vJV{NtNA2{*=`2s* zf50&jeeSUI7FKs7_$C4rg{lmA9!TgR6Y#fK`BS42@n5HChX0tNfyoWge2S0wd_{xP zS&HW8IQOPSgU*74;1jHrM1!cWQ8XMZ_r*WjwyDC|4dMJFKIwB6P7|5WQab;PlW$r& z=;TTWehq(F_d9Dg?RVl(Ybidv-#I*X?s*9kgGKb^ARI@lO1wkx2}#(k`-IqTVHjam zhJb&IT>=0$`h@wf$@k0R@+xg6E-mZAm5>$xEA|l(YynWlGsEBe7POT4du8FX0_Tca zAbvuQR20BkczqByYU60gPO9E2rv}-lfPg8}QJGKFoEdxqYiH&jjF));$l2C;VPO>f z>{Vy;{IS0~_1C9vai6+wyY3Er;XF(p8Ql`($(MCY$QY~h{#_)7;5YCucS{&>OY|_T z%q?MTN7R!D$64YJ9In3|RHkZG+ z;qldrK3%p(qYtlKl9}`+Q3`>ljx;O6VUibt_w{OypRB3C;gkh`w0!a)r{=FakO(fZ z;4AMSBY8+>tJ!QVjs~4HZ05f~yNs>_q|&M>m#-qxv+D8X{5$V?cHN?vJi$-S=X#Fc z>pJn99ZOwjw7{g@6qq=v-G^>)%g!Bn2*Ho8dTUm^ZHwNv`RRrDvUgA3-?~6A`M0k& z@VV_r?lm0ERUcjT*Ut5Q|K0h}lD`x1`G%gmpU7#VV~DG z-r#=V%5Uq!>{E+sU$rO$9%0kjCq0t?4h-2~&5?~+2l5Cw{y%Udm*V)D4`*`D#;-Q- zll*R+)lz5w7guVy57uYOe?cF!*(guRn$8qjL9HM~&lAW^rmaUSPQBe~yX#{}76Exv zQQ*}9Y=3wKL|w*{vZ7q;RBCjTbq~WRFvLjt6+A{sffq#hnus$S1@b1&7S8Sh-kGxl zPkO7c+hUi-$=76z z-z`;_-abXihAw;2pq;-cee3fV)2i}!fm+%5>krHamv;>;`(IkE?Z{WZuv*=?QoVPv zdM~_h(6b3ns%6(obN6C%_uZbw=KY|(d5{0c10N3LJp512->UmGa69n#-^%qLU)psX zc67dWAotR#+`wtrd#}&|fHeWr24|^`6Eut@I{>}57(S@olyt@2Bf;A}O8RpE1vZgZ zq<*|5L1Gisf*z}2zfc!FGx$byBs_fX&9nHvX6Vhak@E!~!43{;_r!pyiCZ!ev3ph? z1EvQh1bO(&69BXfLB6>w$2I2bw_goIrloazzKvgV1#F@F+xD*6;0pO$U(=ccYfdWA zQpC2kel70-tiW%YAkQ0sej9SX>vpf63&E*@FGKeW9?`j0%bG#>FY}g{A4e zTG>Z^A@!raQ0b$-P*i=FXME(Q?igHBp`(oY#-ZBxfD%c}IR=M@&%iff>PKgUP2^*j zZd`vKg2M<#5D*Xd6|993kVF<{fYclWiFQd)h29`hjEY>vBj+Lb`~kj{J0krRbiqSK zJ_T@%rD^)1o1%C8j&lDe)%Ney(0?;5%{+8c^pSOY744lnfAg)seCr_v)pg!Zdl&ZK z?fd1ypB;Qi!OeOtfVpD}!#_R!@#!aF7P!0YFFil=kUqs)j&`s4Z1gCdcXzC@q|$dn zt=zY{iZ;ZoRlDfZbl$UdjU|l9qqTbgL!jjnYHF6%F`bl;7g>l9qpy=9#?+<10t!>i~cI2Zy diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/aead.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/aead.py deleted file mode 100644 index c8a582d..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/aead.py +++ /dev/null @@ -1,23 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -from cryptography.hazmat.bindings._rust import openssl as rust_openssl - -__all__ = [ - "AESCCM", - "AESGCM", - "AESGCMSIV", - "AESOCB3", - "AESSIV", - "ChaCha20Poly1305", -] - -AESGCM = rust_openssl.aead.AESGCM -ChaCha20Poly1305 = rust_openssl.aead.ChaCha20Poly1305 -AESCCM = rust_openssl.aead.AESCCM -AESSIV = rust_openssl.aead.AESSIV -AESOCB3 = rust_openssl.aead.AESOCB3 -AESGCMSIV = rust_openssl.aead.AESGCMSIV diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py deleted file mode 100644 index 9d65004..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py +++ /dev/null @@ -1,183 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -from cryptography import utils -from cryptography.hazmat.decrepit.ciphers.algorithms import ( - ARC4 as ARC4, -) -from cryptography.hazmat.decrepit.ciphers.algorithms import ( - CAST5 as CAST5, -) -from cryptography.hazmat.decrepit.ciphers.algorithms import ( - IDEA as IDEA, -) -from cryptography.hazmat.decrepit.ciphers.algorithms import ( - SEED as SEED, -) -from cryptography.hazmat.decrepit.ciphers.algorithms import ( - Blowfish as Blowfish, -) -from cryptography.hazmat.decrepit.ciphers.algorithms import ( - TripleDES as TripleDES, -) -from cryptography.hazmat.primitives._cipheralgorithm import _verify_key_size -from cryptography.hazmat.primitives.ciphers import ( - BlockCipherAlgorithm, - CipherAlgorithm, -) - - -class AES(BlockCipherAlgorithm): - name = "AES" - block_size = 128 - # 512 added to support AES-256-XTS, which uses 512-bit keys - key_sizes = frozenset([128, 192, 256, 512]) - - def __init__(self, key: utils.Buffer): - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 - - -class AES128(BlockCipherAlgorithm): - name = "AES" - block_size = 128 - key_sizes = frozenset([128]) - key_size = 128 - - def __init__(self, key: utils.Buffer): - self.key = _verify_key_size(self, key) - - -class AES256(BlockCipherAlgorithm): - name = "AES" - block_size = 128 - key_sizes = frozenset([256]) - key_size = 256 - - def __init__(self, key: utils.Buffer): - self.key = _verify_key_size(self, key) - - -class Camellia(BlockCipherAlgorithm): - name = "camellia" - block_size = 128 - key_sizes = frozenset([128, 192, 256]) - - def __init__(self, key: utils.Buffer): - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 - - -utils.deprecated( - ARC4, - __name__, - "ARC4 has been moved to " - "cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and " - "will be removed from " - "cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.", - utils.DeprecatedIn43, - name="ARC4", -) - - -utils.deprecated( - TripleDES, - __name__, - "TripleDES has been moved to " - "cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and " - "will be removed from " - "cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.", - utils.DeprecatedIn43, - name="TripleDES", -) - -utils.deprecated( - Blowfish, - __name__, - "Blowfish has been moved to " - "cryptography.hazmat.decrepit.ciphers.algorithms.Blowfish and " - "will be removed from " - "cryptography.hazmat.primitives.ciphers.algorithms in 45.0.0.", - utils.DeprecatedIn37, - name="Blowfish", -) - - -utils.deprecated( - CAST5, - __name__, - "CAST5 has been moved to " - "cryptography.hazmat.decrepit.ciphers.algorithms.CAST5 and " - "will be removed from " - "cryptography.hazmat.primitives.ciphers.algorithms in 45.0.0.", - utils.DeprecatedIn37, - name="CAST5", -) - - -utils.deprecated( - IDEA, - __name__, - "IDEA has been moved to " - "cryptography.hazmat.decrepit.ciphers.algorithms.IDEA and " - "will be removed from " - "cryptography.hazmat.primitives.ciphers.algorithms in 45.0.0.", - utils.DeprecatedIn37, - name="IDEA", -) - - -utils.deprecated( - SEED, - __name__, - "SEED has been moved to " - "cryptography.hazmat.decrepit.ciphers.algorithms.SEED and " - "will be removed from " - "cryptography.hazmat.primitives.ciphers.algorithms in 45.0.0.", - utils.DeprecatedIn37, - name="SEED", -) - - -class ChaCha20(CipherAlgorithm): - name = "ChaCha20" - key_sizes = frozenset([256]) - - def __init__(self, key: utils.Buffer, nonce: utils.Buffer): - self.key = _verify_key_size(self, key) - utils._check_byteslike("nonce", nonce) - - if len(nonce) != 16: - raise ValueError("nonce must be 128-bits (16 bytes)") - - self._nonce = nonce - - @property - def nonce(self) -> utils.Buffer: - return self._nonce - - @property - def key_size(self) -> int: - return len(self.key) * 8 - - -class SM4(BlockCipherAlgorithm): - name = "SM4" - block_size = 128 - key_sizes = frozenset([128]) - - def __init__(self, key: bytes): - self.key = _verify_key_size(self, key) - - @property - def key_size(self) -> int: - return len(self.key) * 8 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/base.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/base.py deleted file mode 100644 index 24fceea..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/base.py +++ /dev/null @@ -1,146 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc -import typing - -from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography.hazmat.primitives._cipheralgorithm import CipherAlgorithm -from cryptography.hazmat.primitives.ciphers import modes -from cryptography.utils import Buffer - - -class CipherContext(metaclass=abc.ABCMeta): - @abc.abstractmethod - def update(self, data: Buffer) -> bytes: - """ - Processes the provided bytes through the cipher and returns the results - as bytes. - """ - - @abc.abstractmethod - def update_into(self, data: Buffer, buf: Buffer) -> int: - """ - Processes the provided bytes and writes the resulting data into the - provided buffer. Returns the number of bytes written. - """ - - @abc.abstractmethod - def finalize(self) -> bytes: - """ - Returns the results of processing the final block as bytes. - """ - - @abc.abstractmethod - def reset_nonce(self, nonce: bytes) -> None: - """ - Resets the nonce for the cipher context to the provided value. - Raises an exception if it does not support reset or if the - provided nonce does not have a valid length. - """ - - -class AEADCipherContext(CipherContext, metaclass=abc.ABCMeta): - @abc.abstractmethod - def authenticate_additional_data(self, data: Buffer) -> None: - """ - Authenticates the provided bytes. - """ - - -class AEADDecryptionContext(AEADCipherContext, metaclass=abc.ABCMeta): - @abc.abstractmethod - def finalize_with_tag(self, tag: bytes) -> bytes: - """ - Returns the results of processing the final block as bytes and allows - delayed passing of the authentication tag. - """ - - -class AEADEncryptionContext(AEADCipherContext, metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def tag(self) -> bytes: - """ - Returns tag bytes. This is only available after encryption is - finalized. - """ - - -Mode = typing.TypeVar( - "Mode", bound=typing.Optional[modes.Mode], covariant=True -) - - -class Cipher(typing.Generic[Mode]): - def __init__( - self, - algorithm: CipherAlgorithm, - mode: Mode, - backend: typing.Any = None, - ) -> None: - if not isinstance(algorithm, CipherAlgorithm): - raise TypeError("Expected interface of CipherAlgorithm.") - - if mode is not None: - # mypy needs this assert to narrow the type from our generic - # type. Maybe it won't some time in the future. - assert isinstance(mode, modes.Mode) - mode.validate_for_algorithm(algorithm) - - self.algorithm = algorithm - self.mode = mode - - @typing.overload - def encryptor( - self: Cipher[modes.ModeWithAuthenticationTag], - ) -> AEADEncryptionContext: ... - - @typing.overload - def encryptor( - self: _CIPHER_TYPE, - ) -> CipherContext: ... - - def encryptor(self): - if isinstance(self.mode, modes.ModeWithAuthenticationTag): - if self.mode.tag is not None: - raise ValueError( - "Authentication tag must be None when encrypting." - ) - - return rust_openssl.ciphers.create_encryption_ctx( - self.algorithm, self.mode - ) - - @typing.overload - def decryptor( - self: Cipher[modes.ModeWithAuthenticationTag], - ) -> AEADDecryptionContext: ... - - @typing.overload - def decryptor( - self: _CIPHER_TYPE, - ) -> CipherContext: ... - - def decryptor(self): - return rust_openssl.ciphers.create_decryption_ctx( - self.algorithm, self.mode - ) - - -_CIPHER_TYPE = Cipher[ - typing.Union[ - modes.ModeWithNonce, - modes.ModeWithTweak, - modes.ECB, - modes.ModeWithInitializationVector, - None, - ] -] - -CipherContext.register(rust_openssl.ciphers.CipherContext) -AEADEncryptionContext.register(rust_openssl.ciphers.AEADEncryptionContext) -AEADDecryptionContext.register(rust_openssl.ciphers.AEADDecryptionContext) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/modes.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/modes.py deleted file mode 100644 index 36c555c..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/modes.py +++ /dev/null @@ -1,268 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc - -from cryptography import utils -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons -from cryptography.hazmat.primitives._cipheralgorithm import ( - BlockCipherAlgorithm, - CipherAlgorithm, -) -from cryptography.hazmat.primitives.ciphers import algorithms - - -class Mode(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def name(self) -> str: - """ - A string naming this mode (e.g. "ECB", "CBC"). - """ - - @abc.abstractmethod - def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: - """ - Checks that all the necessary invariants of this (mode, algorithm) - combination are met. - """ - - -class ModeWithInitializationVector(Mode, metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def initialization_vector(self) -> utils.Buffer: - """ - The value of the initialization vector for this mode as bytes. - """ - - -class ModeWithTweak(Mode, metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def tweak(self) -> utils.Buffer: - """ - The value of the tweak for this mode as bytes. - """ - - -class ModeWithNonce(Mode, metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def nonce(self) -> utils.Buffer: - """ - The value of the nonce for this mode as bytes. - """ - - -class ModeWithAuthenticationTag(Mode, metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def tag(self) -> bytes | None: - """ - The value of the tag supplied to the constructor of this mode. - """ - - -def _check_aes_key_length(self: Mode, algorithm: CipherAlgorithm) -> None: - if algorithm.key_size > 256 and algorithm.name == "AES": - raise ValueError( - "Only 128, 192, and 256 bit keys are allowed for this AES mode" - ) - - -def _check_iv_length( - self: ModeWithInitializationVector, algorithm: BlockCipherAlgorithm -) -> None: - iv_len = len(self.initialization_vector) - if iv_len * 8 != algorithm.block_size: - raise ValueError(f"Invalid IV size ({iv_len}) for {self.name}.") - - -def _check_nonce_length( - nonce: utils.Buffer, name: str, algorithm: CipherAlgorithm -) -> None: - if not isinstance(algorithm, BlockCipherAlgorithm): - raise UnsupportedAlgorithm( - f"{name} requires a block cipher algorithm", - _Reasons.UNSUPPORTED_CIPHER, - ) - if len(nonce) * 8 != algorithm.block_size: - raise ValueError(f"Invalid nonce size ({len(nonce)}) for {name}.") - - -def _check_iv_and_key_length( - self: ModeWithInitializationVector, algorithm: CipherAlgorithm -) -> None: - if not isinstance(algorithm, BlockCipherAlgorithm): - raise UnsupportedAlgorithm( - f"{self} requires a block cipher algorithm", - _Reasons.UNSUPPORTED_CIPHER, - ) - _check_aes_key_length(self, algorithm) - _check_iv_length(self, algorithm) - - -class CBC(ModeWithInitializationVector): - name = "CBC" - - def __init__(self, initialization_vector: utils.Buffer): - utils._check_byteslike("initialization_vector", initialization_vector) - self._initialization_vector = initialization_vector - - @property - def initialization_vector(self) -> utils.Buffer: - return self._initialization_vector - - validate_for_algorithm = _check_iv_and_key_length - - -class XTS(ModeWithTweak): - name = "XTS" - - def __init__(self, tweak: utils.Buffer): - utils._check_byteslike("tweak", tweak) - - if len(tweak) != 16: - raise ValueError("tweak must be 128-bits (16 bytes)") - - self._tweak = tweak - - @property - def tweak(self) -> utils.Buffer: - return self._tweak - - def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: - if isinstance(algorithm, (algorithms.AES128, algorithms.AES256)): - raise TypeError( - "The AES128 and AES256 classes do not support XTS, please use " - "the standard AES class instead." - ) - - if algorithm.key_size not in (256, 512): - raise ValueError( - "The XTS specification requires a 256-bit key for AES-128-XTS" - " and 512-bit key for AES-256-XTS" - ) - - -class ECB(Mode): - name = "ECB" - - validate_for_algorithm = _check_aes_key_length - - -class OFB(ModeWithInitializationVector): - name = "OFB" - - def __init__(self, initialization_vector: utils.Buffer): - utils._check_byteslike("initialization_vector", initialization_vector) - self._initialization_vector = initialization_vector - - @property - def initialization_vector(self) -> utils.Buffer: - return self._initialization_vector - - validate_for_algorithm = _check_iv_and_key_length - - -class CFB(ModeWithInitializationVector): - name = "CFB" - - def __init__(self, initialization_vector: utils.Buffer): - utils._check_byteslike("initialization_vector", initialization_vector) - self._initialization_vector = initialization_vector - - @property - def initialization_vector(self) -> utils.Buffer: - return self._initialization_vector - - validate_for_algorithm = _check_iv_and_key_length - - -class CFB8(ModeWithInitializationVector): - name = "CFB8" - - def __init__(self, initialization_vector: utils.Buffer): - utils._check_byteslike("initialization_vector", initialization_vector) - self._initialization_vector = initialization_vector - - @property - def initialization_vector(self) -> utils.Buffer: - return self._initialization_vector - - validate_for_algorithm = _check_iv_and_key_length - - -class CTR(ModeWithNonce): - name = "CTR" - - def __init__(self, nonce: utils.Buffer): - utils._check_byteslike("nonce", nonce) - self._nonce = nonce - - @property - def nonce(self) -> utils.Buffer: - return self._nonce - - def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: - _check_aes_key_length(self, algorithm) - _check_nonce_length(self.nonce, self.name, algorithm) - - -class GCM(ModeWithInitializationVector, ModeWithAuthenticationTag): - name = "GCM" - _MAX_ENCRYPTED_BYTES = (2**39 - 256) // 8 - _MAX_AAD_BYTES = (2**64) // 8 - - def __init__( - self, - initialization_vector: utils.Buffer, - tag: bytes | None = None, - min_tag_length: int = 16, - ): - # OpenSSL 3.0.0 constrains GCM IVs to [64, 1024] bits inclusive - # This is a sane limit anyway so we'll enforce it here. - utils._check_byteslike("initialization_vector", initialization_vector) - if len(initialization_vector) < 8 or len(initialization_vector) > 128: - raise ValueError( - "initialization_vector must be between 8 and 128 bytes (64 " - "and 1024 bits)." - ) - self._initialization_vector = initialization_vector - if tag is not None: - utils._check_bytes("tag", tag) - if min_tag_length < 4: - raise ValueError("min_tag_length must be >= 4") - if len(tag) < min_tag_length: - raise ValueError( - f"Authentication tag must be {min_tag_length} bytes or " - "longer." - ) - self._tag = tag - self._min_tag_length = min_tag_length - - @property - def tag(self) -> bytes | None: - return self._tag - - @property - def initialization_vector(self) -> utils.Buffer: - return self._initialization_vector - - def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: - _check_aes_key_length(self, algorithm) - if not isinstance(algorithm, BlockCipherAlgorithm): - raise UnsupportedAlgorithm( - "GCM requires a block cipher algorithm", - _Reasons.UNSUPPORTED_CIPHER, - ) - block_size_bytes = algorithm.block_size // 8 - if self._tag is not None and len(self._tag) > block_size_bytes: - raise ValueError( - f"Authentication tag cannot be more than {block_size_bytes} " - "bytes." - ) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/cmac.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/cmac.py deleted file mode 100644 index 2c67ce2..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/cmac.py +++ /dev/null @@ -1,10 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -from cryptography.hazmat.bindings._rust import openssl as rust_openssl - -__all__ = ["CMAC"] -CMAC = rust_openssl.cmac.CMAC diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/constant_time.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/constant_time.py deleted file mode 100644 index 3975c71..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/constant_time.py +++ /dev/null @@ -1,14 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import hmac - - -def bytes_eq(a: bytes, b: bytes) -> bool: - if not isinstance(a, bytes) or not isinstance(b, bytes): - raise TypeError("a and b must be bytes.") - - return hmac.compare_digest(a, b) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/hashes.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/hashes.py deleted file mode 100644 index 4b55ec3..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/hashes.py +++ /dev/null @@ -1,246 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc - -from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography.utils import Buffer - -__all__ = [ - "MD5", - "SHA1", - "SHA3_224", - "SHA3_256", - "SHA3_384", - "SHA3_512", - "SHA224", - "SHA256", - "SHA384", - "SHA512", - "SHA512_224", - "SHA512_256", - "SHAKE128", - "SHAKE256", - "SM3", - "BLAKE2b", - "BLAKE2s", - "ExtendableOutputFunction", - "Hash", - "HashAlgorithm", - "HashContext", - "XOFHash", -] - - -class HashAlgorithm(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def name(self) -> str: - """ - A string naming this algorithm (e.g. "sha256", "md5"). - """ - - @property - @abc.abstractmethod - def digest_size(self) -> int: - """ - The size of the resulting digest in bytes. - """ - - @property - @abc.abstractmethod - def block_size(self) -> int | None: - """ - The internal block size of the hash function, or None if the hash - function does not use blocks internally (e.g. SHA3). - """ - - -class HashContext(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def algorithm(self) -> HashAlgorithm: - """ - A HashAlgorithm that will be used by this context. - """ - - @abc.abstractmethod - def update(self, data: Buffer) -> None: - """ - Processes the provided bytes through the hash. - """ - - @abc.abstractmethod - def finalize(self) -> bytes: - """ - Finalizes the hash context and returns the hash digest as bytes. - """ - - @abc.abstractmethod - def copy(self) -> HashContext: - """ - Return a HashContext that is a copy of the current context. - """ - - -Hash = rust_openssl.hashes.Hash -HashContext.register(Hash) - -XOFHash = rust_openssl.hashes.XOFHash - - -class ExtendableOutputFunction(metaclass=abc.ABCMeta): - """ - An interface for extendable output functions. - """ - - -class SHA1(HashAlgorithm): - name = "sha1" - digest_size = 20 - block_size = 64 - - -class SHA512_224(HashAlgorithm): # noqa: N801 - name = "sha512-224" - digest_size = 28 - block_size = 128 - - -class SHA512_256(HashAlgorithm): # noqa: N801 - name = "sha512-256" - digest_size = 32 - block_size = 128 - - -class SHA224(HashAlgorithm): - name = "sha224" - digest_size = 28 - block_size = 64 - - -class SHA256(HashAlgorithm): - name = "sha256" - digest_size = 32 - block_size = 64 - - -class SHA384(HashAlgorithm): - name = "sha384" - digest_size = 48 - block_size = 128 - - -class SHA512(HashAlgorithm): - name = "sha512" - digest_size = 64 - block_size = 128 - - -class SHA3_224(HashAlgorithm): # noqa: N801 - name = "sha3-224" - digest_size = 28 - block_size = None - - -class SHA3_256(HashAlgorithm): # noqa: N801 - name = "sha3-256" - digest_size = 32 - block_size = None - - -class SHA3_384(HashAlgorithm): # noqa: N801 - name = "sha3-384" - digest_size = 48 - block_size = None - - -class SHA3_512(HashAlgorithm): # noqa: N801 - name = "sha3-512" - digest_size = 64 - block_size = None - - -class SHAKE128(HashAlgorithm, ExtendableOutputFunction): - name = "shake128" - block_size = None - - def __init__(self, digest_size: int): - if not isinstance(digest_size, int): - raise TypeError("digest_size must be an integer") - - if digest_size < 1: - raise ValueError("digest_size must be a positive integer") - - self._digest_size = digest_size - - @property - def digest_size(self) -> int: - return self._digest_size - - -class SHAKE256(HashAlgorithm, ExtendableOutputFunction): - name = "shake256" - block_size = None - - def __init__(self, digest_size: int): - if not isinstance(digest_size, int): - raise TypeError("digest_size must be an integer") - - if digest_size < 1: - raise ValueError("digest_size must be a positive integer") - - self._digest_size = digest_size - - @property - def digest_size(self) -> int: - return self._digest_size - - -class MD5(HashAlgorithm): - name = "md5" - digest_size = 16 - block_size = 64 - - -class BLAKE2b(HashAlgorithm): - name = "blake2b" - _max_digest_size = 64 - _min_digest_size = 1 - block_size = 128 - - def __init__(self, digest_size: int): - if digest_size != 64: - raise ValueError("Digest size must be 64") - - self._digest_size = digest_size - - @property - def digest_size(self) -> int: - return self._digest_size - - -class BLAKE2s(HashAlgorithm): - name = "blake2s" - block_size = 64 - _max_digest_size = 32 - _min_digest_size = 1 - - def __init__(self, digest_size: int): - if digest_size != 32: - raise ValueError("Digest size must be 32") - - self._digest_size = digest_size - - @property - def digest_size(self) -> int: - return self._digest_size - - -class SM3(HashAlgorithm): - name = "sm3" - digest_size = 32 - block_size = 64 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/hmac.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/hmac.py deleted file mode 100644 index a9442d5..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/hmac.py +++ /dev/null @@ -1,13 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography.hazmat.primitives import hashes - -__all__ = ["HMAC"] - -HMAC = rust_openssl.hmac.HMAC -hashes.HashContext.register(HMAC) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__init__.py deleted file mode 100644 index 79bb459..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc - - -class KeyDerivationFunction(metaclass=abc.ABCMeta): - @abc.abstractmethod - def derive(self, key_material: bytes) -> bytes: - """ - Deterministically generates and returns a new key based on the existing - key material. - """ - - @abc.abstractmethod - def verify(self, key_material: bytes, expected_key: bytes) -> None: - """ - Checks whether the key generated by the key material matches the - expected derived key. Raises an exception if they do not match. - """ diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index f8c921bae87cc3571aee00a3de92897c9968213f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1247 zcmZ`&J8u&~5Z=949LMG*MWG1NN>o?i6OR%hK_Vy+mY_mzPV3vX@8Wy0cXo2_kn$fQ zQ9*@J_$O3Uplegnpn!oQ6*G6X^AN1$@$9_rn{Q@6wcAYsXMOzK|E>{ogqOuJYlY6X zK{+6T2pW=z_9#VN3$>o6ktamx`$QO0+p!jjr~e<#L%qKBj6$=mZ+Nk3xyIu-$$1_m zan|)t;|ZCE)7eX~9uP@-RFIw~^_|Aquv!;}p!>$*+|e`t6J-kROq5mVwpFe_mBqGH z!K4E5cpQ5O#sdz{9e_h;2AB>=L2YfCG}-)Y%Ur4`h=VK-JRXJx8_HNJp398!STH5? zv5G-wvD{@NS+G9Oq+m(Ra$hpJhl%lUSq~#3$W{RlJ4Y%OZLP&32cU?CK~qSBfG zJ%i$Z^wi#KSgD1g4Wersby>4tz~+=zy*BD9_-w0kRl2&28E92lpftKLYAGdpb)!U#L)2TY`)bU?xku-Hue`+jS+2MTdjY#36i!K9L4h4sSgIxzzWPdFOW8dT z`{b+H_+oB+HaC81hS{3w#JYZr+Hs3ms~0^#&{G%0TJYLe;hWqGd6wBG;v9_OX#h@z z?5Pb9<;ufHThAb>{``4JCyo1cXAjgS#8UWWH$WWgl+xc#LT?_C<}a&FTW`Jhqj#e} I1k?(^U(Sm--2eap diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-312.pyc deleted file mode 100644 index 4a5f31489fe54ae8fe0c97cc789d40cebea429f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 581 zcmZvY&1)1f6u@70c4vnj>lZ8@3VYBVT+j*DQ$d7c=|vE{&LyNf=}fknWJofL(?ijl z|AGDs(m%x>x*)6!2nF%rO(mxUTYSex=Fma zzq>g~2TgAr{`8J9YGW#;vea@VjWheIV$vAlaQKondrb4$GPqyMiBD>yU7ahr&9hhI zxE&C3Sle1NLbPA6y+6@SWmT?eRWwOKk4tKk11>WzbCVEV8>_oM@rFn8x7+{AD$Pr7 z`HY$5C_B_WUlw=@Jw=-3+*qdDJ|R>HLO#Kz3&0h}g(?}IDym8)*)hj2+;X+B&N*Xp zh6O*sRbvY!pC(VXvEi0IuIS{5=FH%K7r@sG;PoWf^~ZF1fuw4#qGzSbYQdiCJFc@o zv)OUauK*$RdjROc57_?(dl&J&MZ7tWHy82NJl=X6eTC6E3>Pq(!|3CiFYxdp9=?C{ JuCH&o>OcLzp&9@H diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-312.pyc deleted file mode 100644 index 88587753cfdcd198402adbd568d07cda079e95c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5622 zcmdT|O>7&-6`mz`mrHUfQh%|nADfNsI7AdOwiCxu4FANAoW!x*#7^2WNEa*aN~E;> z$?Q@!8QM`(AEYFOR5XC)7J;2pthzwcQ*+EQKrd9KLhM3845U5yMu5)6m-M|^azzPt z>Rt+TB+k5f^JaGD&3o^AyMGOZ0t8BL@wN1|4nn@gPOAtG!8N`D;wsUI#u+5bB{>dh zkKsvrp!FKwET7~Vk2i#@m=qZ;7{08Ol(PP$pY=r}kPRk-Sve_ZL&*^1`HYTiI2i^y ztVvh+WW-N4|7j7;5B$!}T&JgXY5^GQ@{rR+3tl0btcP!TojoVJ88-ynjy7&j$rJ0k zgCa4`4yw6a-cqehK4*?XUplE8hB{{GKnq1HW0*0I9XVl8UDZk>nVf25%DQF;Ud~Me zsh!bFF|Qp;!E8&-S&Eg(>b96x&9rXXd^)S9V4Yr&I;GRhG<(cQF_*%}r8sAotmdJH zU2~1cfw)R4WU_sHJ{Dr^l~O~5>8MwEMQLSx#@(F8A}vORyviiud$LMFv6%RyJ; zE1s6VIZ}eZm@sPKqTj#w{d-{mOCH2 z8C&jrdghgyFSHQ&o3C%ZV|%rK_>18$hQ1uH?l`;BF34YSwdd5ZzD+f1v zEvmKKw)F)o)Eceuny>>ptHP0m8`j%4RTXQv1;ra*!198-r z!TuERMldwhU^hci=XdascfN-blN=L^w40cbnSz*AEND0pjl>q!LP5`Iwlv-hc(xZz z&E_ZbnH(&!3uKrn+JaiVIG%GXQp^{vLea9ZMQL9uU(CUZHkURfn1L3G#j(;(u+nCT zP#ou>Pofa~%s)UiL+;8%2(0ma%Y5JB(VItB`NOr2&e=C+MrxrBs5-(kr*8)$3x_^P z{6p^i@boNKll=42ob>VF;xAS@_pM5gHyH~9tJ2OEy<=7CuSp&Ap}Ek4dUf(QlfN}q zrQN{!c=y8i;_J{)EK5I{6>Cy>VgH;w>#K)Juyf(ihlzR@k;C(c=MFE7tOWZPPcOb% z4eqJ(dmImdExV-|bhyS*U|l6TNpc!Vdi+EaH$#}_(>zy%q*s$PFMt@Y`86I|K?`UC zv|@>i1?>=oW{9O{PK~?-uriuzw|&>we$Jk>;cMVK5b#<+2(}A;rnsI6V?=SivEuzD z$mTfoMWsDp62EcQ#ZzGKWwor zfceG%PQb`aJVTpdND81u#!{5>BbyE$Z}AU;x<2VriDOv$6yBY!UW@&li zd9uWf#=I1Rgw5k+(fvR!ar7Bz9OQM3Ur;bZD0go;ATmc#)B(ozaPR!PbMG!bef`+A zV=Lh&s?rnA{@t4cSp+S%|Brxp5HM2Fa_7A7+%rf!Wdi`wM(ziKz(xPvQh>{n#?9%8@kE=DXxl&F#N%&T zfotiolIurF=sbiKwEG~;z*6B_cCe8$n4;w-74LH;LZ1V{C7z->ZHZ-NivA8g4qb}y zwdCEy`gaiu5Zcj6@AaS|>Si2G_{65%!}dZZ$HM(R znQcE>iH<@7Ne|(?fK@7Faue|rxe{ihRJV#WR}QwV24_d`xF@sBI{rd&d|apWEU;{W zt+ymP=<;J=QS=4MC?>(WTu z)e><|ib)bpv?>%dPe65r)Mc`3cReTz{kOaK)dgtlBI)d@`;d}IPqgkw3R0(m21+#s zIAN$EibCLS#3MMF5L-9}%ekd#W?bV1VEqsnAT<29fN=K2$9* zx3G%|Jo6Y6uMWH#3Uh2`w(YnF_v_-`Pe9iE6;yzGk%z{;V9#1`*K%-IHMnoRtADX{ z{qnWT)t&Kb{7iM=)s?QZRr&1gV0iXOt-EjWXKRD|m*KyA|JYr ze78d^(IFzrDy(+fRi`s6DMIvbd=BxV9;+1FaHCaq$hC;FG95m{8%jCx^V~j-o*(o zVTB2l18D)r`7md2lFwI=Vs3Z_DdvleLI|VydK~jGL@N8ySmMmiMsW;*HRhw|k-mV{ z8(1NLP^RbONFmZt^no_8`6+g>LcWO)1F-2punBEzf(^7yut7>9;r_ZGsQ|)G5Gfg9 z2jv?FIN{J%*umAoHM*do?1YGz3_F{kPPb@az)9gqI7cpSc3QN%R% zF6tP)!|kng?W}vDWrEOx rpgdIfAtjMWZ{3enfQZ3H5U9KH0dBC`6T3^Gy?b;Y>wHI`Ww!ZmUp0p6 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-312.pyc deleted file mode 100644 index cb76dce83e0eb56f10a6e0995f4f2be409527732..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4807 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 A^Z)<= diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-312.pyc deleted file mode 100644 index fdd64454438fff5fd8ae60189f1d9fbd32030e12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2726 zcmZuz&2JM|5P!S2*I(v0`g@4=uQ7Ft;wvHO~RRMJOq7Iw|mRqDSK7{hu!A{NqR=q(}A8V{o7z z)5EYvs+=7661Og0TUeZ3x-oxwSrdBB2m=kraLs@HBXkbp05N$eaHKA*w<6Y~PwL!D zF5sQxE<`vOb#6V@rn~F+5X~QW*GB|O*TwE$n|jFy)YqIIt`nulB5)m>bso5Q`x|$t zO|1{NsqU&r>Y=t(ctr@l?3`Q2Gg58cDv^a{h8Mt?t*F`twe{LW)^M_bi)<&z+0_!u z1|G~UdSOR3UAfOYsj+I=Ev+%NT&(7bYRyvJT+4`)YayU5U}-qT8!E4C=&Q3z(NZ;~ zW1iuoy|ArXl;MlL^u6Uf_io*~dHe3?3(C^`oh2`#R2)R1qIU2WRZMEHxkZK{^h8A~ zQf)(7sk+nwb-bgOR1BB00N-*HE>6u=FWxmFv@G8_6__x?d6OJWX3$;iSbdjG!yFhG_I$1~Q zdxIt2Ryq@?d+i(o)FZMxx-JIOAM3qY+Lm=Ppe2B%&cS(|4C|49Fxx=4udCChK#K5u zZ@g?}{~aQSmTSj@Fk}tCnrYO@YO0+r*=9AnLbHfYU^JS$E5{jzhvCux8?AW$C5`P#lRMJno;157&F+gM`(pap&8IhU zx%%`fEPLYkjyR6|^{3aHNg7C##qIdIet6ia9yVWH7}L6JE@(2MWE<5Kgd# zK4m9xOQa9VRD%|#fQP+g;5nah@Jg8SEkAF9?^mnu_&E@L3VO~gOyK9?(XEZ=8!t}2 z8qPmS9!TSR(#(!D^J3$d^Sjc;gUtB$#OYU=*==#Q5hCe%&iA3rEz1cu0S0P=L0`-* zL3`}QUVPNEHzvePhm;bkalvVgS*Yq6q0y;ZD|UNMmt73F?KHG>^Cgp_f%FeHqDaMvG}wqEl^{bS zjU-Yc$&5Eqzj-PdNxT^iMdpGd(7HT;H(Ra1tKen~k?0A57d)}I%m%&TNUtbIA854f z|K;&h)CY#&fr8#M^^S78s~NTqE_QMX<}<@G#Afi+qaV`l7IhzlEQy*QwAM`5+7z*aeVbZaH%>H9{Q69VQ4j{hFlyCP)9{BOKo(Fdd47yTbiJ WF8)py-Uu=`x7~m25W0Ne#Qy=EVv8{V diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-312.pyc deleted file mode 100644 index 286df0ebf8f3c6199adbf0d351f2011da2b8dbb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 667 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 bytes: - return n.to_bytes(length=4, byteorder="big") - - -def _common_args_checks( - algorithm: hashes.HashAlgorithm, - length: int, - otherinfo: bytes | None, -) -> None: - max_length = algorithm.digest_size * (2**32 - 1) - if length > max_length: - raise ValueError(f"Cannot derive keys larger than {max_length} bits.") - if otherinfo is not None: - utils._check_bytes("otherinfo", otherinfo) - - -def _concatkdf_derive( - key_material: utils.Buffer, - length: int, - auxfn: Callable[[], hashes.HashContext], - otherinfo: bytes, -) -> bytes: - utils._check_byteslike("key_material", key_material) - output = [b""] - outlen = 0 - counter = 1 - - while length > outlen: - h = auxfn() - h.update(_int_to_u32be(counter)) - h.update(key_material) - h.update(otherinfo) - output.append(h.finalize()) - outlen += len(output[-1]) - counter += 1 - - return b"".join(output)[:length] - - -class ConcatKDFHash(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - length: int, - otherinfo: bytes | None, - backend: typing.Any = None, - ): - _common_args_checks(algorithm, length, otherinfo) - self._algorithm = algorithm - self._length = length - self._otherinfo: bytes = otherinfo if otherinfo is not None else b"" - - self._used = False - - def _hash(self) -> hashes.Hash: - return hashes.Hash(self._algorithm) - - def derive(self, key_material: utils.Buffer) -> bytes: - if self._used: - raise AlreadyFinalized - self._used = True - return _concatkdf_derive( - key_material, self._length, self._hash, self._otherinfo - ) - - def verify(self, key_material: bytes, expected_key: bytes) -> None: - if not constant_time.bytes_eq(self.derive(key_material), expected_key): - raise InvalidKey - - -class ConcatKDFHMAC(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - length: int, - salt: bytes | None, - otherinfo: bytes | None, - backend: typing.Any = None, - ): - _common_args_checks(algorithm, length, otherinfo) - self._algorithm = algorithm - self._length = length - self._otherinfo: bytes = otherinfo if otherinfo is not None else b"" - - if algorithm.block_size is None: - raise TypeError(f"{algorithm.name} is unsupported for ConcatKDF") - - if salt is None: - salt = b"\x00" * algorithm.block_size - else: - utils._check_bytes("salt", salt) - - self._salt = salt - - self._used = False - - def _hmac(self) -> hmac.HMAC: - return hmac.HMAC(self._salt, self._algorithm) - - def derive(self, key_material: utils.Buffer) -> bytes: - if self._used: - raise AlreadyFinalized - self._used = True - return _concatkdf_derive( - key_material, self._length, self._hmac, self._otherinfo - ) - - def verify(self, key_material: bytes, expected_key: bytes) -> None: - if not constant_time.bytes_eq(self.derive(key_material), expected_key): - raise InvalidKey diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py deleted file mode 100644 index ce11c54..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py +++ /dev/null @@ -1,101 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import typing - -from cryptography import utils -from cryptography.exceptions import AlreadyFinalized, InvalidKey -from cryptography.hazmat.primitives import constant_time, hashes, hmac -from cryptography.hazmat.primitives.kdf import KeyDerivationFunction - - -class HKDF(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - length: int, - salt: bytes | None, - info: bytes | None, - backend: typing.Any = None, - ): - self._algorithm = algorithm - - if salt is None: - salt = b"\x00" * self._algorithm.digest_size - else: - utils._check_bytes("salt", salt) - - self._salt = salt - - self._hkdf_expand = HKDFExpand(self._algorithm, length, info) - - def _extract(self, key_material: utils.Buffer) -> bytes: - h = hmac.HMAC(self._salt, self._algorithm) - h.update(key_material) - return h.finalize() - - def derive(self, key_material: utils.Buffer) -> bytes: - utils._check_byteslike("key_material", key_material) - return self._hkdf_expand.derive(self._extract(key_material)) - - def verify(self, key_material: bytes, expected_key: bytes) -> None: - if not constant_time.bytes_eq(self.derive(key_material), expected_key): - raise InvalidKey - - -class HKDFExpand(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - length: int, - info: bytes | None, - backend: typing.Any = None, - ): - self._algorithm = algorithm - - max_length = 255 * algorithm.digest_size - - if length > max_length: - raise ValueError( - f"Cannot derive keys larger than {max_length} octets." - ) - - self._length = length - - if info is None: - info = b"" - else: - utils._check_bytes("info", info) - - self._info = info - - self._used = False - - def _expand(self, key_material: utils.Buffer) -> bytes: - output = [b""] - counter = 1 - - while self._algorithm.digest_size * (len(output) - 1) < self._length: - h = hmac.HMAC(key_material, self._algorithm) - h.update(output[-1]) - h.update(self._info) - h.update(bytes([counter])) - output.append(h.finalize()) - counter += 1 - - return b"".join(output)[: self._length] - - def derive(self, key_material: utils.Buffer) -> bytes: - utils._check_byteslike("key_material", key_material) - if self._used: - raise AlreadyFinalized - - self._used = True - return self._expand(key_material) - - def verify(self, key_material: bytes, expected_key: bytes) -> None: - if not constant_time.bytes_eq(self.derive(key_material), expected_key): - raise InvalidKey diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py deleted file mode 100644 index d6c3ff3..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py +++ /dev/null @@ -1,305 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import typing -from collections.abc import Callable - -from cryptography import utils -from cryptography.exceptions import ( - AlreadyFinalized, - InvalidKey, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.primitives import ( - ciphers, - cmac, - constant_time, - hashes, - hmac, -) -from cryptography.hazmat.primitives.kdf import KeyDerivationFunction - - -class Mode(utils.Enum): - CounterMode = "ctr" - - -class CounterLocation(utils.Enum): - BeforeFixed = "before_fixed" - AfterFixed = "after_fixed" - MiddleFixed = "middle_fixed" - - -class _KBKDFDeriver: - def __init__( - self, - prf: Callable, - mode: Mode, - length: int, - rlen: int, - llen: int | None, - location: CounterLocation, - break_location: int | None, - label: bytes | None, - context: bytes | None, - fixed: bytes | None, - ): - assert callable(prf) - - if not isinstance(mode, Mode): - raise TypeError("mode must be of type Mode") - - if not isinstance(location, CounterLocation): - raise TypeError("location must be of type CounterLocation") - - if break_location is None and location is CounterLocation.MiddleFixed: - raise ValueError("Please specify a break_location") - - if ( - break_location is not None - and location != CounterLocation.MiddleFixed - ): - raise ValueError( - "break_location is ignored when location is not" - " CounterLocation.MiddleFixed" - ) - - if break_location is not None and not isinstance(break_location, int): - raise TypeError("break_location must be an integer") - - if break_location is not None and break_location < 0: - raise ValueError("break_location must be a positive integer") - - if (label or context) and fixed: - raise ValueError( - "When supplying fixed data, label and context are ignored." - ) - - if rlen is None or not self._valid_byte_length(rlen): - raise ValueError("rlen must be between 1 and 4") - - if llen is None and fixed is None: - raise ValueError("Please specify an llen") - - if llen is not None and not isinstance(llen, int): - raise TypeError("llen must be an integer") - - if llen == 0: - raise ValueError("llen must be non-zero") - - if label is None: - label = b"" - - if context is None: - context = b"" - - utils._check_bytes("label", label) - utils._check_bytes("context", context) - self._prf = prf - self._mode = mode - self._length = length - self._rlen = rlen - self._llen = llen - self._location = location - self._break_location = break_location - self._label = label - self._context = context - self._used = False - self._fixed_data = fixed - - @staticmethod - def _valid_byte_length(value: int) -> bool: - if not isinstance(value, int): - raise TypeError("value must be of type int") - - value_bin = utils.int_to_bytes(1, value) - if not 1 <= len(value_bin) <= 4: - return False - return True - - def derive( - self, key_material: utils.Buffer, prf_output_size: int - ) -> bytes: - if self._used: - raise AlreadyFinalized - - utils._check_byteslike("key_material", key_material) - self._used = True - - # inverse floor division (equivalent to ceiling) - rounds = -(-self._length // prf_output_size) - - output = [b""] - - # For counter mode, the number of iterations shall not be - # larger than 2^r-1, where r <= 32 is the binary length of the counter - # This ensures that the counter values used as an input to the - # PRF will not repeat during a particular call to the KDF function. - r_bin = utils.int_to_bytes(1, self._rlen) - if rounds > pow(2, len(r_bin) * 8) - 1: - raise ValueError("There are too many iterations.") - - fixed = self._generate_fixed_input() - - if self._location == CounterLocation.BeforeFixed: - data_before_ctr = b"" - data_after_ctr = fixed - elif self._location == CounterLocation.AfterFixed: - data_before_ctr = fixed - data_after_ctr = b"" - else: - if isinstance( - self._break_location, int - ) and self._break_location > len(fixed): - raise ValueError("break_location offset > len(fixed)") - data_before_ctr = fixed[: self._break_location] - data_after_ctr = fixed[self._break_location :] - - for i in range(1, rounds + 1): - h = self._prf(key_material) - - counter = utils.int_to_bytes(i, self._rlen) - input_data = data_before_ctr + counter + data_after_ctr - - h.update(input_data) - - output.append(h.finalize()) - - return b"".join(output)[: self._length] - - def _generate_fixed_input(self) -> bytes: - if self._fixed_data and isinstance(self._fixed_data, bytes): - return self._fixed_data - - l_val = utils.int_to_bytes(self._length * 8, self._llen) - - return b"".join([self._label, b"\x00", self._context, l_val]) - - -class KBKDFHMAC(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - mode: Mode, - length: int, - rlen: int, - llen: int | None, - location: CounterLocation, - label: bytes | None, - context: bytes | None, - fixed: bytes | None, - backend: typing.Any = None, - *, - break_location: int | None = None, - ): - if not isinstance(algorithm, hashes.HashAlgorithm): - raise UnsupportedAlgorithm( - "Algorithm supplied is not a supported hash algorithm.", - _Reasons.UNSUPPORTED_HASH, - ) - - from cryptography.hazmat.backends.openssl.backend import ( - backend as ossl, - ) - - if not ossl.hmac_supported(algorithm): - raise UnsupportedAlgorithm( - "Algorithm supplied is not a supported hmac algorithm.", - _Reasons.UNSUPPORTED_HASH, - ) - - self._algorithm = algorithm - - self._deriver = _KBKDFDeriver( - self._prf, - mode, - length, - rlen, - llen, - location, - break_location, - label, - context, - fixed, - ) - - def _prf(self, key_material: bytes) -> hmac.HMAC: - return hmac.HMAC(key_material, self._algorithm) - - def derive(self, key_material: utils.Buffer) -> bytes: - return self._deriver.derive(key_material, self._algorithm.digest_size) - - def verify(self, key_material: bytes, expected_key: bytes) -> None: - if not constant_time.bytes_eq(self.derive(key_material), expected_key): - raise InvalidKey - - -class KBKDFCMAC(KeyDerivationFunction): - def __init__( - self, - algorithm, - mode: Mode, - length: int, - rlen: int, - llen: int | None, - location: CounterLocation, - label: bytes | None, - context: bytes | None, - fixed: bytes | None, - backend: typing.Any = None, - *, - break_location: int | None = None, - ): - if not issubclass( - algorithm, ciphers.BlockCipherAlgorithm - ) or not issubclass(algorithm, ciphers.CipherAlgorithm): - raise UnsupportedAlgorithm( - "Algorithm supplied is not a supported cipher algorithm.", - _Reasons.UNSUPPORTED_CIPHER, - ) - - self._algorithm = algorithm - self._cipher: ciphers.BlockCipherAlgorithm | None = None - - self._deriver = _KBKDFDeriver( - self._prf, - mode, - length, - rlen, - llen, - location, - break_location, - label, - context, - fixed, - ) - - def _prf(self, _: bytes) -> cmac.CMAC: - assert self._cipher is not None - - return cmac.CMAC(self._cipher) - - def derive(self, key_material: utils.Buffer) -> bytes: - self._cipher = self._algorithm(key_material) - - assert self._cipher is not None - - from cryptography.hazmat.backends.openssl.backend import ( - backend as ossl, - ) - - if not ossl.cmac_algorithm_supported(self._cipher): - raise UnsupportedAlgorithm( - "Algorithm supplied is not a supported cipher algorithm.", - _Reasons.UNSUPPORTED_CIPHER, - ) - - return self._deriver.derive(key_material, self._cipher.block_size // 8) - - def verify(self, key_material: bytes, expected_key: bytes) -> None: - if not constant_time.bytes_eq(self.derive(key_material), expected_key): - raise InvalidKey diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py deleted file mode 100644 index d539f13..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py +++ /dev/null @@ -1,62 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import typing - -from cryptography import utils -from cryptography.exceptions import ( - AlreadyFinalized, - InvalidKey, - UnsupportedAlgorithm, - _Reasons, -) -from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography.hazmat.primitives import constant_time, hashes -from cryptography.hazmat.primitives.kdf import KeyDerivationFunction - - -class PBKDF2HMAC(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - length: int, - salt: bytes, - iterations: int, - backend: typing.Any = None, - ): - from cryptography.hazmat.backends.openssl.backend import ( - backend as ossl, - ) - - if not ossl.pbkdf2_hmac_supported(algorithm): - raise UnsupportedAlgorithm( - f"{algorithm.name} is not supported for PBKDF2.", - _Reasons.UNSUPPORTED_HASH, - ) - self._used = False - self._algorithm = algorithm - self._length = length - utils._check_bytes("salt", salt) - self._salt = salt - self._iterations = iterations - - def derive(self, key_material: utils.Buffer) -> bytes: - if self._used: - raise AlreadyFinalized("PBKDF2 instances can only be used once.") - self._used = True - - return rust_openssl.kdf.derive_pbkdf2_hmac( - key_material, - self._algorithm, - self._salt, - self._iterations, - self._length, - ) - - def verify(self, key_material: bytes, expected_key: bytes) -> None: - derived_key = self.derive(key_material) - if not constant_time.bytes_eq(derived_key, expected_key): - raise InvalidKey("Keys do not match.") diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py deleted file mode 100644 index f791cee..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py +++ /dev/null @@ -1,19 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import sys - -from cryptography.hazmat.bindings._rust import openssl as rust_openssl -from cryptography.hazmat.primitives.kdf import KeyDerivationFunction - -# This is used by the scrypt tests to skip tests that require more memory -# than the MEM_LIMIT -_MEM_LIMIT = sys.maxsize // 2 - -Scrypt = rust_openssl.kdf.Scrypt -KeyDerivationFunction.register(Scrypt) - -__all__ = ["Scrypt"] diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py deleted file mode 100644 index 63870cd..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py +++ /dev/null @@ -1,61 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import typing - -from cryptography import utils -from cryptography.exceptions import AlreadyFinalized, InvalidKey -from cryptography.hazmat.primitives import constant_time, hashes -from cryptography.hazmat.primitives.kdf import KeyDerivationFunction - - -def _int_to_u32be(n: int) -> bytes: - return n.to_bytes(length=4, byteorder="big") - - -class X963KDF(KeyDerivationFunction): - def __init__( - self, - algorithm: hashes.HashAlgorithm, - length: int, - sharedinfo: bytes | None, - backend: typing.Any = None, - ): - max_len = algorithm.digest_size * (2**32 - 1) - if length > max_len: - raise ValueError(f"Cannot derive keys larger than {max_len} bits.") - if sharedinfo is not None: - utils._check_bytes("sharedinfo", sharedinfo) - - self._algorithm = algorithm - self._length = length - self._sharedinfo = sharedinfo - self._used = False - - def derive(self, key_material: utils.Buffer) -> bytes: - if self._used: - raise AlreadyFinalized - self._used = True - utils._check_byteslike("key_material", key_material) - output = [b""] - outlen = 0 - counter = 1 - - while self._length > outlen: - h = hashes.Hash(self._algorithm) - h.update(key_material) - h.update(_int_to_u32be(counter)) - if self._sharedinfo is not None: - h.update(self._sharedinfo) - output.append(h.finalize()) - outlen += len(output[-1]) - counter += 1 - - return b"".join(output)[: self._length] - - def verify(self, key_material: bytes, expected_key: bytes) -> None: - if not constant_time.bytes_eq(self.derive(key_material), expected_key): - raise InvalidKey diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/keywrap.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/keywrap.py deleted file mode 100644 index b93d87d..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/keywrap.py +++ /dev/null @@ -1,177 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import typing - -from cryptography.hazmat.primitives.ciphers import Cipher -from cryptography.hazmat.primitives.ciphers.algorithms import AES -from cryptography.hazmat.primitives.ciphers.modes import ECB -from cryptography.hazmat.primitives.constant_time import bytes_eq - - -def _wrap_core( - wrapping_key: bytes, - a: bytes, - r: list[bytes], -) -> bytes: - # RFC 3394 Key Wrap - 2.2.1 (index method) - encryptor = Cipher(AES(wrapping_key), ECB()).encryptor() - n = len(r) - for j in range(6): - for i in range(n): - # every encryption operation is a discrete 16 byte chunk (because - # AES has a 128-bit block size) and since we're using ECB it is - # safe to reuse the encryptor for the entire operation - b = encryptor.update(a + r[i]) - a = ( - int.from_bytes(b[:8], byteorder="big") ^ ((n * j) + i + 1) - ).to_bytes(length=8, byteorder="big") - r[i] = b[-8:] - - assert encryptor.finalize() == b"" - - return a + b"".join(r) - - -def aes_key_wrap( - wrapping_key: bytes, - key_to_wrap: bytes, - backend: typing.Any = None, -) -> bytes: - if len(wrapping_key) not in [16, 24, 32]: - raise ValueError("The wrapping key must be a valid AES key length") - - if len(key_to_wrap) < 16: - raise ValueError("The key to wrap must be at least 16 bytes") - - if len(key_to_wrap) % 8 != 0: - raise ValueError("The key to wrap must be a multiple of 8 bytes") - - a = b"\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6" - r = [key_to_wrap[i : i + 8] for i in range(0, len(key_to_wrap), 8)] - return _wrap_core(wrapping_key, a, r) - - -def _unwrap_core( - wrapping_key: bytes, - a: bytes, - r: list[bytes], -) -> tuple[bytes, list[bytes]]: - # Implement RFC 3394 Key Unwrap - 2.2.2 (index method) - decryptor = Cipher(AES(wrapping_key), ECB()).decryptor() - n = len(r) - for j in reversed(range(6)): - for i in reversed(range(n)): - atr = ( - int.from_bytes(a, byteorder="big") ^ ((n * j) + i + 1) - ).to_bytes(length=8, byteorder="big") + r[i] - # every decryption operation is a discrete 16 byte chunk so - # it is safe to reuse the decryptor for the entire operation - b = decryptor.update(atr) - a = b[:8] - r[i] = b[-8:] - - assert decryptor.finalize() == b"" - return a, r - - -def aes_key_wrap_with_padding( - wrapping_key: bytes, - key_to_wrap: bytes, - backend: typing.Any = None, -) -> bytes: - if len(wrapping_key) not in [16, 24, 32]: - raise ValueError("The wrapping key must be a valid AES key length") - - aiv = b"\xa6\x59\x59\xa6" + len(key_to_wrap).to_bytes( - length=4, byteorder="big" - ) - # pad the key to wrap if necessary - pad = (8 - (len(key_to_wrap) % 8)) % 8 - key_to_wrap = key_to_wrap + b"\x00" * pad - if len(key_to_wrap) == 8: - # RFC 5649 - 4.1 - exactly 8 octets after padding - encryptor = Cipher(AES(wrapping_key), ECB()).encryptor() - b = encryptor.update(aiv + key_to_wrap) - assert encryptor.finalize() == b"" - return b - else: - r = [key_to_wrap[i : i + 8] for i in range(0, len(key_to_wrap), 8)] - return _wrap_core(wrapping_key, aiv, r) - - -def aes_key_unwrap_with_padding( - wrapping_key: bytes, - wrapped_key: bytes, - backend: typing.Any = None, -) -> bytes: - if len(wrapped_key) < 16: - raise InvalidUnwrap("Must be at least 16 bytes") - - if len(wrapping_key) not in [16, 24, 32]: - raise ValueError("The wrapping key must be a valid AES key length") - - if len(wrapped_key) == 16: - # RFC 5649 - 4.2 - exactly two 64-bit blocks - decryptor = Cipher(AES(wrapping_key), ECB()).decryptor() - out = decryptor.update(wrapped_key) - assert decryptor.finalize() == b"" - a = out[:8] - data = out[8:] - n = 1 - else: - r = [wrapped_key[i : i + 8] for i in range(0, len(wrapped_key), 8)] - encrypted_aiv = r.pop(0) - n = len(r) - a, r = _unwrap_core(wrapping_key, encrypted_aiv, r) - data = b"".join(r) - - # 1) Check that MSB(32,A) = A65959A6. - # 2) Check that 8*(n-1) < LSB(32,A) <= 8*n. If so, let - # MLI = LSB(32,A). - # 3) Let b = (8*n)-MLI, and then check that the rightmost b octets of - # the output data are zero. - mli = int.from_bytes(a[4:], byteorder="big") - b = (8 * n) - mli - if ( - not bytes_eq(a[:4], b"\xa6\x59\x59\xa6") - or not 8 * (n - 1) < mli <= 8 * n - or (b != 0 and not bytes_eq(data[-b:], b"\x00" * b)) - ): - raise InvalidUnwrap() - - if b == 0: - return data - else: - return data[:-b] - - -def aes_key_unwrap( - wrapping_key: bytes, - wrapped_key: bytes, - backend: typing.Any = None, -) -> bytes: - if len(wrapped_key) < 24: - raise InvalidUnwrap("Must be at least 24 bytes") - - if len(wrapped_key) % 8 != 0: - raise InvalidUnwrap("The wrapped key must be a multiple of 8 bytes") - - if len(wrapping_key) not in [16, 24, 32]: - raise ValueError("The wrapping key must be a valid AES key length") - - aiv = b"\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6" - r = [wrapped_key[i : i + 8] for i in range(0, len(wrapped_key), 8)] - a = r.pop(0) - a, r = _unwrap_core(wrapping_key, a, r) - if not bytes_eq(a, aiv): - raise InvalidUnwrap() - - return b"".join(r) - - -class InvalidUnwrap(Exception): - pass diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/padding.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/padding.py deleted file mode 100644 index f9cd1f1..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/padding.py +++ /dev/null @@ -1,69 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc - -from cryptography import utils -from cryptography.hazmat.bindings._rust import ( - ANSIX923PaddingContext, - ANSIX923UnpaddingContext, - PKCS7PaddingContext, - PKCS7UnpaddingContext, -) - - -class PaddingContext(metaclass=abc.ABCMeta): - @abc.abstractmethod - def update(self, data: utils.Buffer) -> bytes: - """ - Pads the provided bytes and returns any available data as bytes. - """ - - @abc.abstractmethod - def finalize(self) -> bytes: - """ - Finalize the padding, returns bytes. - """ - - -def _byte_padding_check(block_size: int) -> None: - if not (0 <= block_size <= 2040): - raise ValueError("block_size must be in range(0, 2041).") - - if block_size % 8 != 0: - raise ValueError("block_size must be a multiple of 8.") - - -class PKCS7: - def __init__(self, block_size: int): - _byte_padding_check(block_size) - self.block_size = block_size - - def padder(self) -> PaddingContext: - return PKCS7PaddingContext(self.block_size) - - def unpadder(self) -> PaddingContext: - return PKCS7UnpaddingContext(self.block_size) - - -PaddingContext.register(PKCS7PaddingContext) -PaddingContext.register(PKCS7UnpaddingContext) - - -class ANSIX923: - def __init__(self, block_size: int): - _byte_padding_check(block_size) - self.block_size = block_size - - def padder(self) -> PaddingContext: - return ANSIX923PaddingContext(self.block_size) - - def unpadder(self) -> PaddingContext: - return ANSIX923UnpaddingContext(self.block_size) - - -PaddingContext.register(ANSIX923PaddingContext) -PaddingContext.register(ANSIX923UnpaddingContext) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/poly1305.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/poly1305.py deleted file mode 100644 index 7f5a77a..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/poly1305.py +++ /dev/null @@ -1,11 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -from cryptography.hazmat.bindings._rust import openssl as rust_openssl - -__all__ = ["Poly1305"] - -Poly1305 = rust_openssl.poly1305.Poly1305 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__init__.py deleted file mode 100644 index 62283cc..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__init__.py +++ /dev/null @@ -1,65 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -from cryptography.hazmat.primitives._serialization import ( - BestAvailableEncryption, - Encoding, - KeySerializationEncryption, - NoEncryption, - ParameterFormat, - PrivateFormat, - PublicFormat, - _KeySerializationEncryption, -) -from cryptography.hazmat.primitives.serialization.base import ( - load_der_parameters, - load_der_private_key, - load_der_public_key, - load_pem_parameters, - load_pem_private_key, - load_pem_public_key, -) -from cryptography.hazmat.primitives.serialization.ssh import ( - SSHCertificate, - SSHCertificateBuilder, - SSHCertificateType, - SSHCertPrivateKeyTypes, - SSHCertPublicKeyTypes, - SSHPrivateKeyTypes, - SSHPublicKeyTypes, - load_ssh_private_key, - load_ssh_public_identity, - load_ssh_public_key, - ssh_key_fingerprint, -) - -__all__ = [ - "BestAvailableEncryption", - "Encoding", - "KeySerializationEncryption", - "NoEncryption", - "ParameterFormat", - "PrivateFormat", - "PublicFormat", - "SSHCertPrivateKeyTypes", - "SSHCertPublicKeyTypes", - "SSHCertificate", - "SSHCertificateBuilder", - "SSHCertificateType", - "SSHPrivateKeyTypes", - "SSHPublicKeyTypes", - "_KeySerializationEncryption", - "load_der_parameters", - "load_der_private_key", - "load_der_public_key", - "load_pem_parameters", - "load_pem_private_key", - "load_pem_public_key", - "load_ssh_private_key", - "load_ssh_public_identity", - "load_ssh_public_key", - "ssh_key_fingerprint", -] diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 1fefa49291992e252d7cd2ced602400721284f8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1379 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 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-312.pyc deleted file mode 100644 index dd8629b16141eaf89fb2036e32d2781749109508..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17277 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 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-312.pyc deleted file mode 100644 index aeeb85855eff6354dbd44b3db0963b9db3eae978..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67201 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 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/base.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/base.py deleted file mode 100644 index e7c998b..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/base.py +++ /dev/null @@ -1,14 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from cryptography.hazmat.bindings._rust import openssl as rust_openssl - -load_pem_private_key = rust_openssl.keys.load_pem_private_key -load_der_private_key = rust_openssl.keys.load_der_private_key - -load_pem_public_key = rust_openssl.keys.load_pem_public_key -load_der_public_key = rust_openssl.keys.load_der_public_key - -load_pem_parameters = rust_openssl.dh.from_pem_parameters -load_der_parameters = rust_openssl.dh.from_der_parameters diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py deleted file mode 100644 index 58884ff..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py +++ /dev/null @@ -1,176 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import typing -from collections.abc import Iterable - -from cryptography import x509 -from cryptography.hazmat.bindings._rust import pkcs12 as rust_pkcs12 -from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives._serialization import PBES as PBES -from cryptography.hazmat.primitives.asymmetric import ( - dsa, - ec, - ed448, - ed25519, - rsa, -) -from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes - -__all__ = [ - "PBES", - "PKCS12Certificate", - "PKCS12KeyAndCertificates", - "PKCS12PrivateKeyTypes", - "load_key_and_certificates", - "load_pkcs12", - "serialize_java_truststore", - "serialize_key_and_certificates", -] - -PKCS12PrivateKeyTypes = typing.Union[ - rsa.RSAPrivateKey, - dsa.DSAPrivateKey, - ec.EllipticCurvePrivateKey, - ed25519.Ed25519PrivateKey, - ed448.Ed448PrivateKey, -] - - -PKCS12Certificate = rust_pkcs12.PKCS12Certificate - - -class PKCS12KeyAndCertificates: - def __init__( - self, - key: PrivateKeyTypes | None, - cert: PKCS12Certificate | None, - additional_certs: list[PKCS12Certificate], - ): - if key is not None and not isinstance( - key, - ( - rsa.RSAPrivateKey, - dsa.DSAPrivateKey, - ec.EllipticCurvePrivateKey, - ed25519.Ed25519PrivateKey, - ed448.Ed448PrivateKey, - ), - ): - raise TypeError( - "Key must be RSA, DSA, EllipticCurve, ED25519, or ED448" - " private key, or None." - ) - if cert is not None and not isinstance(cert, PKCS12Certificate): - raise TypeError("cert must be a PKCS12Certificate object or None") - if not all( - isinstance(add_cert, PKCS12Certificate) - for add_cert in additional_certs - ): - raise TypeError( - "all values in additional_certs must be PKCS12Certificate" - " objects" - ) - self._key = key - self._cert = cert - self._additional_certs = additional_certs - - @property - def key(self) -> PrivateKeyTypes | None: - return self._key - - @property - def cert(self) -> PKCS12Certificate | None: - return self._cert - - @property - def additional_certs(self) -> list[PKCS12Certificate]: - return self._additional_certs - - def __eq__(self, other: object) -> bool: - if not isinstance(other, PKCS12KeyAndCertificates): - return NotImplemented - - return ( - self.key == other.key - and self.cert == other.cert - and self.additional_certs == other.additional_certs - ) - - def __hash__(self) -> int: - return hash((self.key, self.cert, tuple(self.additional_certs))) - - def __repr__(self) -> str: - fmt = ( - "" - ) - return fmt.format(self.key, self.cert, self.additional_certs) - - -load_key_and_certificates = rust_pkcs12.load_key_and_certificates -load_pkcs12 = rust_pkcs12.load_pkcs12 - - -_PKCS12CATypes = typing.Union[ - x509.Certificate, - PKCS12Certificate, -] - - -def serialize_java_truststore( - certs: Iterable[PKCS12Certificate], - encryption_algorithm: serialization.KeySerializationEncryption, -) -> bytes: - if not certs: - raise ValueError("You must supply at least one cert") - - if not isinstance( - encryption_algorithm, serialization.KeySerializationEncryption - ): - raise TypeError( - "Key encryption algorithm must be a " - "KeySerializationEncryption instance" - ) - - return rust_pkcs12.serialize_java_truststore(certs, encryption_algorithm) - - -def serialize_key_and_certificates( - name: bytes | None, - key: PKCS12PrivateKeyTypes | None, - cert: x509.Certificate | None, - cas: Iterable[_PKCS12CATypes] | None, - encryption_algorithm: serialization.KeySerializationEncryption, -) -> bytes: - if key is not None and not isinstance( - key, - ( - rsa.RSAPrivateKey, - dsa.DSAPrivateKey, - ec.EllipticCurvePrivateKey, - ed25519.Ed25519PrivateKey, - ed448.Ed448PrivateKey, - ), - ): - raise TypeError( - "Key must be RSA, DSA, EllipticCurve, ED25519, or ED448" - " private key, or None." - ) - - if not isinstance( - encryption_algorithm, serialization.KeySerializationEncryption - ): - raise TypeError( - "Key encryption algorithm must be a " - "KeySerializationEncryption instance" - ) - - if key is None and cert is None and not cas: - raise ValueError("You must supply at least one of key, cert, or cas") - - return rust_pkcs12.serialize_key_and_certificates( - name, key, cert, cas, encryption_algorithm - ) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py deleted file mode 100644 index 456dc5b..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py +++ /dev/null @@ -1,411 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import email.base64mime -import email.generator -import email.message -import email.policy -import io -import typing -from collections.abc import Iterable - -from cryptography import utils, x509 -from cryptography.exceptions import UnsupportedAlgorithm, _Reasons -from cryptography.hazmat.bindings._rust import pkcs7 as rust_pkcs7 -from cryptography.hazmat.primitives import hashes, serialization -from cryptography.hazmat.primitives.asymmetric import ec, padding, rsa -from cryptography.hazmat.primitives.ciphers import ( - algorithms, -) -from cryptography.utils import _check_byteslike - -load_pem_pkcs7_certificates = rust_pkcs7.load_pem_pkcs7_certificates - -load_der_pkcs7_certificates = rust_pkcs7.load_der_pkcs7_certificates - -serialize_certificates = rust_pkcs7.serialize_certificates - -PKCS7HashTypes = typing.Union[ - hashes.SHA224, - hashes.SHA256, - hashes.SHA384, - hashes.SHA512, -] - -PKCS7PrivateKeyTypes = typing.Union[ - rsa.RSAPrivateKey, ec.EllipticCurvePrivateKey -] - -ContentEncryptionAlgorithm = typing.Union[ - typing.Type[algorithms.AES128], typing.Type[algorithms.AES256] -] - - -class PKCS7Options(utils.Enum): - Text = "Add text/plain MIME type" - Binary = "Don't translate input data into canonical MIME format" - DetachedSignature = "Don't embed data in the PKCS7 structure" - NoCapabilities = "Don't embed SMIME capabilities" - NoAttributes = "Don't embed authenticatedAttributes" - NoCerts = "Don't embed signer certificate" - - -class PKCS7SignatureBuilder: - def __init__( - self, - data: utils.Buffer | None = None, - signers: list[ - tuple[ - x509.Certificate, - PKCS7PrivateKeyTypes, - PKCS7HashTypes, - padding.PSS | padding.PKCS1v15 | None, - ] - ] = [], - additional_certs: list[x509.Certificate] = [], - ): - self._data = data - self._signers = signers - self._additional_certs = additional_certs - - def set_data(self, data: utils.Buffer) -> PKCS7SignatureBuilder: - _check_byteslike("data", data) - if self._data is not None: - raise ValueError("data may only be set once") - - return PKCS7SignatureBuilder(data, self._signers) - - def add_signer( - self, - certificate: x509.Certificate, - private_key: PKCS7PrivateKeyTypes, - hash_algorithm: PKCS7HashTypes, - *, - rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, - ) -> PKCS7SignatureBuilder: - if not isinstance( - hash_algorithm, - ( - hashes.SHA224, - hashes.SHA256, - hashes.SHA384, - hashes.SHA512, - ), - ): - raise TypeError( - "hash_algorithm must be one of hashes.SHA224, " - "SHA256, SHA384, or SHA512" - ) - if not isinstance(certificate, x509.Certificate): - raise TypeError("certificate must be a x509.Certificate") - - if not isinstance( - private_key, (rsa.RSAPrivateKey, ec.EllipticCurvePrivateKey) - ): - raise TypeError("Only RSA & EC keys are supported at this time.") - - if rsa_padding is not None: - if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): - raise TypeError("Padding must be PSS or PKCS1v15") - if not isinstance(private_key, rsa.RSAPrivateKey): - raise TypeError("Padding is only supported for RSA keys") - - return PKCS7SignatureBuilder( - self._data, - [ - *self._signers, - (certificate, private_key, hash_algorithm, rsa_padding), - ], - ) - - def add_certificate( - self, certificate: x509.Certificate - ) -> PKCS7SignatureBuilder: - if not isinstance(certificate, x509.Certificate): - raise TypeError("certificate must be a x509.Certificate") - - return PKCS7SignatureBuilder( - self._data, self._signers, [*self._additional_certs, certificate] - ) - - def sign( - self, - encoding: serialization.Encoding, - options: Iterable[PKCS7Options], - backend: typing.Any = None, - ) -> bytes: - if len(self._signers) == 0: - raise ValueError("Must have at least one signer") - if self._data is None: - raise ValueError("You must add data to sign") - options = list(options) - if not all(isinstance(x, PKCS7Options) for x in options): - raise ValueError("options must be from the PKCS7Options enum") - if encoding not in ( - serialization.Encoding.PEM, - serialization.Encoding.DER, - serialization.Encoding.SMIME, - ): - raise ValueError( - "Must be PEM, DER, or SMIME from the Encoding enum" - ) - - # Text is a meaningless option unless it is accompanied by - # DetachedSignature - if ( - PKCS7Options.Text in options - and PKCS7Options.DetachedSignature not in options - ): - raise ValueError( - "When passing the Text option you must also pass " - "DetachedSignature" - ) - - if PKCS7Options.Text in options and encoding in ( - serialization.Encoding.DER, - serialization.Encoding.PEM, - ): - raise ValueError( - "The Text option is only available for SMIME serialization" - ) - - # No attributes implies no capabilities so we'll error if you try to - # pass both. - if ( - PKCS7Options.NoAttributes in options - and PKCS7Options.NoCapabilities in options - ): - raise ValueError( - "NoAttributes is a superset of NoCapabilities. Do not pass " - "both values." - ) - - return rust_pkcs7.sign_and_serialize(self, encoding, options) - - -class PKCS7EnvelopeBuilder: - def __init__( - self, - *, - _data: bytes | None = None, - _recipients: list[x509.Certificate] | None = None, - _content_encryption_algorithm: ContentEncryptionAlgorithm - | None = None, - ): - from cryptography.hazmat.backends.openssl.backend import ( - backend as ossl, - ) - - if not ossl.rsa_encryption_supported(padding=padding.PKCS1v15()): - raise UnsupportedAlgorithm( - "RSA with PKCS1 v1.5 padding is not supported by this version" - " of OpenSSL.", - _Reasons.UNSUPPORTED_PADDING, - ) - self._data = _data - self._recipients = _recipients if _recipients is not None else [] - self._content_encryption_algorithm = _content_encryption_algorithm - - def set_data(self, data: bytes) -> PKCS7EnvelopeBuilder: - _check_byteslike("data", data) - if self._data is not None: - raise ValueError("data may only be set once") - - return PKCS7EnvelopeBuilder( - _data=data, - _recipients=self._recipients, - _content_encryption_algorithm=self._content_encryption_algorithm, - ) - - def add_recipient( - self, - certificate: x509.Certificate, - ) -> PKCS7EnvelopeBuilder: - if not isinstance(certificate, x509.Certificate): - raise TypeError("certificate must be a x509.Certificate") - - if not isinstance(certificate.public_key(), rsa.RSAPublicKey): - raise TypeError("Only RSA keys are supported at this time.") - - return PKCS7EnvelopeBuilder( - _data=self._data, - _recipients=[ - *self._recipients, - certificate, - ], - _content_encryption_algorithm=self._content_encryption_algorithm, - ) - - def set_content_encryption_algorithm( - self, content_encryption_algorithm: ContentEncryptionAlgorithm - ) -> PKCS7EnvelopeBuilder: - if self._content_encryption_algorithm is not None: - raise ValueError("Content encryption algo may only be set once") - if content_encryption_algorithm not in { - algorithms.AES128, - algorithms.AES256, - }: - raise TypeError("Only AES128 and AES256 are supported") - - return PKCS7EnvelopeBuilder( - _data=self._data, - _recipients=self._recipients, - _content_encryption_algorithm=content_encryption_algorithm, - ) - - def encrypt( - self, - encoding: serialization.Encoding, - options: Iterable[PKCS7Options], - ) -> bytes: - if len(self._recipients) == 0: - raise ValueError("Must have at least one recipient") - if self._data is None: - raise ValueError("You must add data to encrypt") - - # The default content encryption algorithm is AES-128, which the S/MIME - # v3.2 RFC specifies as MUST support (https://datatracker.ietf.org/doc/html/rfc5751#section-2.7) - content_encryption_algorithm = ( - self._content_encryption_algorithm or algorithms.AES128 - ) - - options = list(options) - if not all(isinstance(x, PKCS7Options) for x in options): - raise ValueError("options must be from the PKCS7Options enum") - if encoding not in ( - serialization.Encoding.PEM, - serialization.Encoding.DER, - serialization.Encoding.SMIME, - ): - raise ValueError( - "Must be PEM, DER, or SMIME from the Encoding enum" - ) - - # Only allow options that make sense for encryption - if any( - opt not in [PKCS7Options.Text, PKCS7Options.Binary] - for opt in options - ): - raise ValueError( - "Only the following options are supported for encryption: " - "Text, Binary" - ) - elif PKCS7Options.Text in options and PKCS7Options.Binary in options: - # OpenSSL accepts both options at the same time, but ignores Text. - # We fail defensively to avoid unexpected outputs. - raise ValueError( - "Cannot use Binary and Text options at the same time" - ) - - return rust_pkcs7.encrypt_and_serialize( - self, content_encryption_algorithm, encoding, options - ) - - -pkcs7_decrypt_der = rust_pkcs7.decrypt_der -pkcs7_decrypt_pem = rust_pkcs7.decrypt_pem -pkcs7_decrypt_smime = rust_pkcs7.decrypt_smime - - -def _smime_signed_encode( - data: bytes, signature: bytes, micalg: str, text_mode: bool -) -> bytes: - # This function works pretty hard to replicate what OpenSSL does - # precisely. For good and for ill. - - m = email.message.Message() - m.add_header("MIME-Version", "1.0") - m.add_header( - "Content-Type", - "multipart/signed", - protocol="application/x-pkcs7-signature", - micalg=micalg, - ) - - m.preamble = "This is an S/MIME signed message\n" - - msg_part = OpenSSLMimePart() - msg_part.set_payload(data) - if text_mode: - msg_part.add_header("Content-Type", "text/plain") - m.attach(msg_part) - - sig_part = email.message.MIMEPart() - sig_part.add_header( - "Content-Type", "application/x-pkcs7-signature", name="smime.p7s" - ) - sig_part.add_header("Content-Transfer-Encoding", "base64") - sig_part.add_header( - "Content-Disposition", "attachment", filename="smime.p7s" - ) - sig_part.set_payload( - email.base64mime.body_encode(signature, maxlinelen=65) - ) - del sig_part["MIME-Version"] - m.attach(sig_part) - - fp = io.BytesIO() - g = email.generator.BytesGenerator( - fp, - maxheaderlen=0, - mangle_from_=False, - policy=m.policy.clone(linesep="\r\n"), - ) - g.flatten(m) - return fp.getvalue() - - -def _smime_enveloped_encode(data: bytes) -> bytes: - m = email.message.Message() - m.add_header("MIME-Version", "1.0") - m.add_header("Content-Disposition", "attachment", filename="smime.p7m") - m.add_header( - "Content-Type", - "application/pkcs7-mime", - smime_type="enveloped-data", - name="smime.p7m", - ) - m.add_header("Content-Transfer-Encoding", "base64") - - m.set_payload(email.base64mime.body_encode(data, maxlinelen=65)) - - return m.as_bytes(policy=m.policy.clone(linesep="\n", max_line_length=0)) - - -def _smime_enveloped_decode(data: bytes) -> bytes: - m = email.message_from_bytes(data) - if m.get_content_type() not in { - "application/x-pkcs7-mime", - "application/pkcs7-mime", - }: - raise ValueError("Not an S/MIME enveloped message") - return bytes(m.get_payload(decode=True)) - - -def _smime_remove_text_headers(data: bytes) -> bytes: - m = email.message_from_bytes(data) - # Using get() instead of get_content_type() since it has None as default, - # where the latter has "text/plain". Both methods are case-insensitive. - content_type = m.get("content-type") - if content_type is None: - raise ValueError( - "Decrypted MIME data has no 'Content-Type' header. " - "Please remove the 'Text' option to parse it manually." - ) - if "text/plain" not in content_type: - raise ValueError( - f"Decrypted MIME data content type is '{content_type}', not " - "'text/plain'. Remove the 'Text' option to parse it manually." - ) - return bytes(m.get_payload(decode=True)) - - -class OpenSSLMimePart(email.message.MIMEPart): - # A MIMEPart subclass that replicates OpenSSL's behavior of not including - # a newline if there are no headers. - def _write_headers(self, generator) -> None: - if list(self.raw_items()): - generator._write_headers(self) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/ssh.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/ssh.py deleted file mode 100644 index c08b981..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/ssh.py +++ /dev/null @@ -1,1619 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import binascii -import enum -import os -import re -import typing -import warnings -from base64 import encodebytes as _base64_encode -from dataclasses import dataclass - -from cryptography import utils -from cryptography.exceptions import UnsupportedAlgorithm -from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.primitives.asymmetric import ( - dsa, - ec, - ed25519, - padding, - rsa, -) -from cryptography.hazmat.primitives.asymmetric import utils as asym_utils -from cryptography.hazmat.primitives.ciphers import ( - AEADDecryptionContext, - Cipher, - algorithms, - modes, -) -from cryptography.hazmat.primitives.serialization import ( - Encoding, - KeySerializationEncryption, - NoEncryption, - PrivateFormat, - PublicFormat, - _KeySerializationEncryption, -) - -try: - from bcrypt import kdf as _bcrypt_kdf - - _bcrypt_supported = True -except ImportError: - _bcrypt_supported = False - - def _bcrypt_kdf( - password: bytes, - salt: bytes, - desired_key_bytes: int, - rounds: int, - ignore_few_rounds: bool = False, - ) -> bytes: - raise UnsupportedAlgorithm("Need bcrypt module") - - -_SSH_ED25519 = b"ssh-ed25519" -_SSH_RSA = b"ssh-rsa" -_SSH_DSA = b"ssh-dss" -_ECDSA_NISTP256 = b"ecdsa-sha2-nistp256" -_ECDSA_NISTP384 = b"ecdsa-sha2-nistp384" -_ECDSA_NISTP521 = b"ecdsa-sha2-nistp521" -_CERT_SUFFIX = b"-cert-v01@openssh.com" - -# U2F application string suffixed pubkey -_SK_SSH_ED25519 = b"sk-ssh-ed25519@openssh.com" -_SK_SSH_ECDSA_NISTP256 = b"sk-ecdsa-sha2-nistp256@openssh.com" - -# These are not key types, only algorithms, so they cannot appear -# as a public key type -_SSH_RSA_SHA256 = b"rsa-sha2-256" -_SSH_RSA_SHA512 = b"rsa-sha2-512" - -_SSH_PUBKEY_RC = re.compile(rb"\A(\S+)[ \t]+(\S+)") -_SK_MAGIC = b"openssh-key-v1\0" -_SK_START = b"-----BEGIN OPENSSH PRIVATE KEY-----" -_SK_END = b"-----END OPENSSH PRIVATE KEY-----" -_BCRYPT = b"bcrypt" -_NONE = b"none" -_DEFAULT_CIPHER = b"aes256-ctr" -_DEFAULT_ROUNDS = 16 - -# re is only way to work on bytes-like data -_PEM_RC = re.compile(_SK_START + b"(.*?)" + _SK_END, re.DOTALL) - -# padding for max blocksize -_PADDING = memoryview(bytearray(range(1, 1 + 16))) - - -@dataclass -class _SSHCipher: - alg: type[algorithms.AES] - key_len: int - mode: type[modes.CTR] | type[modes.CBC] | type[modes.GCM] - block_len: int - iv_len: int - tag_len: int | None - is_aead: bool - - -# ciphers that are actually used in key wrapping -_SSH_CIPHERS: dict[bytes, _SSHCipher] = { - b"aes256-ctr": _SSHCipher( - alg=algorithms.AES, - key_len=32, - mode=modes.CTR, - block_len=16, - iv_len=16, - tag_len=None, - is_aead=False, - ), - b"aes256-cbc": _SSHCipher( - alg=algorithms.AES, - key_len=32, - mode=modes.CBC, - block_len=16, - iv_len=16, - tag_len=None, - is_aead=False, - ), - b"aes256-gcm@openssh.com": _SSHCipher( - alg=algorithms.AES, - key_len=32, - mode=modes.GCM, - block_len=16, - iv_len=12, - tag_len=16, - is_aead=True, - ), -} - -# map local curve name to key type -_ECDSA_KEY_TYPE = { - "secp256r1": _ECDSA_NISTP256, - "secp384r1": _ECDSA_NISTP384, - "secp521r1": _ECDSA_NISTP521, -} - - -def _get_ssh_key_type(key: SSHPrivateKeyTypes | SSHPublicKeyTypes) -> bytes: - if isinstance(key, ec.EllipticCurvePrivateKey): - key_type = _ecdsa_key_type(key.public_key()) - elif isinstance(key, ec.EllipticCurvePublicKey): - key_type = _ecdsa_key_type(key) - elif isinstance(key, (rsa.RSAPrivateKey, rsa.RSAPublicKey)): - key_type = _SSH_RSA - elif isinstance(key, (dsa.DSAPrivateKey, dsa.DSAPublicKey)): - key_type = _SSH_DSA - elif isinstance( - key, (ed25519.Ed25519PrivateKey, ed25519.Ed25519PublicKey) - ): - key_type = _SSH_ED25519 - else: - raise ValueError("Unsupported key type") - - return key_type - - -def _ecdsa_key_type(public_key: ec.EllipticCurvePublicKey) -> bytes: - """Return SSH key_type and curve_name for private key.""" - curve = public_key.curve - if curve.name not in _ECDSA_KEY_TYPE: - raise ValueError( - f"Unsupported curve for ssh private key: {curve.name!r}" - ) - return _ECDSA_KEY_TYPE[curve.name] - - -def _ssh_pem_encode( - data: utils.Buffer, - prefix: bytes = _SK_START + b"\n", - suffix: bytes = _SK_END + b"\n", -) -> bytes: - return b"".join([prefix, _base64_encode(data), suffix]) - - -def _check_block_size(data: utils.Buffer, block_len: int) -> None: - """Require data to be full blocks""" - if not data or len(data) % block_len != 0: - raise ValueError("Corrupt data: missing padding") - - -def _check_empty(data: utils.Buffer) -> None: - """All data should have been parsed.""" - if data: - raise ValueError("Corrupt data: unparsed data") - - -def _init_cipher( - ciphername: bytes, - password: bytes | None, - salt: bytes, - rounds: int, -) -> Cipher[modes.CBC | modes.CTR | modes.GCM]: - """Generate key + iv and return cipher.""" - if not password: - raise TypeError( - "Key is password-protected, but password was not provided." - ) - - ciph = _SSH_CIPHERS[ciphername] - seed = _bcrypt_kdf( - password, salt, ciph.key_len + ciph.iv_len, rounds, True - ) - return Cipher( - ciph.alg(seed[: ciph.key_len]), - ciph.mode(seed[ciph.key_len :]), - ) - - -def _get_u32(data: memoryview) -> tuple[int, memoryview]: - """Uint32""" - if len(data) < 4: - raise ValueError("Invalid data") - return int.from_bytes(data[:4], byteorder="big"), data[4:] - - -def _get_u64(data: memoryview) -> tuple[int, memoryview]: - """Uint64""" - if len(data) < 8: - raise ValueError("Invalid data") - return int.from_bytes(data[:8], byteorder="big"), data[8:] - - -def _get_sshstr(data: memoryview) -> tuple[memoryview, memoryview]: - """Bytes with u32 length prefix""" - n, data = _get_u32(data) - if n > len(data): - raise ValueError("Invalid data") - return data[:n], data[n:] - - -def _get_mpint(data: memoryview) -> tuple[int, memoryview]: - """Big integer.""" - val, data = _get_sshstr(data) - if val and val[0] > 0x7F: - raise ValueError("Invalid data") - return int.from_bytes(val, "big"), data - - -def _to_mpint(val: int) -> bytes: - """Storage format for signed bigint.""" - if val < 0: - raise ValueError("negative mpint not allowed") - if not val: - return b"" - nbytes = (val.bit_length() + 8) // 8 - return utils.int_to_bytes(val, nbytes) - - -class _FragList: - """Build recursive structure without data copy.""" - - flist: list[utils.Buffer] - - def __init__(self, init: list[utils.Buffer] | None = None) -> None: - self.flist = [] - if init: - self.flist.extend(init) - - def put_raw(self, val: utils.Buffer) -> None: - """Add plain bytes""" - self.flist.append(val) - - def put_u32(self, val: int) -> None: - """Big-endian uint32""" - self.flist.append(val.to_bytes(length=4, byteorder="big")) - - def put_u64(self, val: int) -> None: - """Big-endian uint64""" - self.flist.append(val.to_bytes(length=8, byteorder="big")) - - def put_sshstr(self, val: bytes | _FragList) -> None: - """Bytes prefixed with u32 length""" - if isinstance(val, (bytes, memoryview, bytearray)): - self.put_u32(len(val)) - self.flist.append(val) - else: - self.put_u32(val.size()) - self.flist.extend(val.flist) - - def put_mpint(self, val: int) -> None: - """Big-endian bigint prefixed with u32 length""" - self.put_sshstr(_to_mpint(val)) - - def size(self) -> int: - """Current number of bytes""" - return sum(map(len, self.flist)) - - def render(self, dstbuf: memoryview, pos: int = 0) -> int: - """Write into bytearray""" - for frag in self.flist: - flen = len(frag) - start, pos = pos, pos + flen - dstbuf[start:pos] = frag - return pos - - def tobytes(self) -> bytes: - """Return as bytes""" - buf = memoryview(bytearray(self.size())) - self.render(buf) - return buf.tobytes() - - -class _SSHFormatRSA: - """Format for RSA keys. - - Public: - mpint e, n - Private: - mpint n, e, d, iqmp, p, q - """ - - def get_public( - self, data: memoryview - ) -> tuple[tuple[int, int], memoryview]: - """RSA public fields""" - e, data = _get_mpint(data) - n, data = _get_mpint(data) - return (e, n), data - - def load_public( - self, data: memoryview - ) -> tuple[rsa.RSAPublicKey, memoryview]: - """Make RSA public key from data.""" - (e, n), data = self.get_public(data) - public_numbers = rsa.RSAPublicNumbers(e, n) - public_key = public_numbers.public_key() - return public_key, data - - def load_private( - self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool - ) -> tuple[rsa.RSAPrivateKey, memoryview]: - """Make RSA private key from data.""" - n, data = _get_mpint(data) - e, data = _get_mpint(data) - d, data = _get_mpint(data) - iqmp, data = _get_mpint(data) - p, data = _get_mpint(data) - q, data = _get_mpint(data) - - if (e, n) != pubfields: - raise ValueError("Corrupt data: rsa field mismatch") - dmp1 = rsa.rsa_crt_dmp1(d, p) - dmq1 = rsa.rsa_crt_dmq1(d, q) - public_numbers = rsa.RSAPublicNumbers(e, n) - private_numbers = rsa.RSAPrivateNumbers( - p, q, d, dmp1, dmq1, iqmp, public_numbers - ) - private_key = private_numbers.private_key( - unsafe_skip_rsa_key_validation=unsafe_skip_rsa_key_validation - ) - return private_key, data - - def encode_public( - self, public_key: rsa.RSAPublicKey, f_pub: _FragList - ) -> None: - """Write RSA public key""" - pubn = public_key.public_numbers() - f_pub.put_mpint(pubn.e) - f_pub.put_mpint(pubn.n) - - def encode_private( - self, private_key: rsa.RSAPrivateKey, f_priv: _FragList - ) -> None: - """Write RSA private key""" - private_numbers = private_key.private_numbers() - public_numbers = private_numbers.public_numbers - - f_priv.put_mpint(public_numbers.n) - f_priv.put_mpint(public_numbers.e) - - f_priv.put_mpint(private_numbers.d) - f_priv.put_mpint(private_numbers.iqmp) - f_priv.put_mpint(private_numbers.p) - f_priv.put_mpint(private_numbers.q) - - -class _SSHFormatDSA: - """Format for DSA keys. - - Public: - mpint p, q, g, y - Private: - mpint p, q, g, y, x - """ - - def get_public(self, data: memoryview) -> tuple[tuple, memoryview]: - """DSA public fields""" - p, data = _get_mpint(data) - q, data = _get_mpint(data) - g, data = _get_mpint(data) - y, data = _get_mpint(data) - return (p, q, g, y), data - - def load_public( - self, data: memoryview - ) -> tuple[dsa.DSAPublicKey, memoryview]: - """Make DSA public key from data.""" - (p, q, g, y), data = self.get_public(data) - parameter_numbers = dsa.DSAParameterNumbers(p, q, g) - public_numbers = dsa.DSAPublicNumbers(y, parameter_numbers) - self._validate(public_numbers) - public_key = public_numbers.public_key() - return public_key, data - - def load_private( - self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool - ) -> tuple[dsa.DSAPrivateKey, memoryview]: - """Make DSA private key from data.""" - (p, q, g, y), data = self.get_public(data) - x, data = _get_mpint(data) - - if (p, q, g, y) != pubfields: - raise ValueError("Corrupt data: dsa field mismatch") - parameter_numbers = dsa.DSAParameterNumbers(p, q, g) - public_numbers = dsa.DSAPublicNumbers(y, parameter_numbers) - self._validate(public_numbers) - private_numbers = dsa.DSAPrivateNumbers(x, public_numbers) - private_key = private_numbers.private_key() - return private_key, data - - def encode_public( - self, public_key: dsa.DSAPublicKey, f_pub: _FragList - ) -> None: - """Write DSA public key""" - public_numbers = public_key.public_numbers() - parameter_numbers = public_numbers.parameter_numbers - self._validate(public_numbers) - - f_pub.put_mpint(parameter_numbers.p) - f_pub.put_mpint(parameter_numbers.q) - f_pub.put_mpint(parameter_numbers.g) - f_pub.put_mpint(public_numbers.y) - - def encode_private( - self, private_key: dsa.DSAPrivateKey, f_priv: _FragList - ) -> None: - """Write DSA private key""" - self.encode_public(private_key.public_key(), f_priv) - f_priv.put_mpint(private_key.private_numbers().x) - - def _validate(self, public_numbers: dsa.DSAPublicNumbers) -> None: - parameter_numbers = public_numbers.parameter_numbers - if parameter_numbers.p.bit_length() != 1024: - raise ValueError("SSH supports only 1024 bit DSA keys") - - -class _SSHFormatECDSA: - """Format for ECDSA keys. - - Public: - str curve - bytes point - Private: - str curve - bytes point - mpint secret - """ - - def __init__(self, ssh_curve_name: bytes, curve: ec.EllipticCurve): - self.ssh_curve_name = ssh_curve_name - self.curve = curve - - def get_public( - self, data: memoryview - ) -> tuple[tuple[memoryview, memoryview], memoryview]: - """ECDSA public fields""" - curve, data = _get_sshstr(data) - point, data = _get_sshstr(data) - if curve != self.ssh_curve_name: - raise ValueError("Curve name mismatch") - if point[0] != 4: - raise NotImplementedError("Need uncompressed point") - return (curve, point), data - - def load_public( - self, data: memoryview - ) -> tuple[ec.EllipticCurvePublicKey, memoryview]: - """Make ECDSA public key from data.""" - (_, point), data = self.get_public(data) - public_key = ec.EllipticCurvePublicKey.from_encoded_point( - self.curve, point.tobytes() - ) - return public_key, data - - def load_private( - self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool - ) -> tuple[ec.EllipticCurvePrivateKey, memoryview]: - """Make ECDSA private key from data.""" - (curve_name, point), data = self.get_public(data) - secret, data = _get_mpint(data) - - if (curve_name, point) != pubfields: - raise ValueError("Corrupt data: ecdsa field mismatch") - private_key = ec.derive_private_key(secret, self.curve) - return private_key, data - - def encode_public( - self, public_key: ec.EllipticCurvePublicKey, f_pub: _FragList - ) -> None: - """Write ECDSA public key""" - point = public_key.public_bytes( - Encoding.X962, PublicFormat.UncompressedPoint - ) - f_pub.put_sshstr(self.ssh_curve_name) - f_pub.put_sshstr(point) - - def encode_private( - self, private_key: ec.EllipticCurvePrivateKey, f_priv: _FragList - ) -> None: - """Write ECDSA private key""" - public_key = private_key.public_key() - private_numbers = private_key.private_numbers() - - self.encode_public(public_key, f_priv) - f_priv.put_mpint(private_numbers.private_value) - - -class _SSHFormatEd25519: - """Format for Ed25519 keys. - - Public: - bytes point - Private: - bytes point - bytes secret_and_point - """ - - def get_public( - self, data: memoryview - ) -> tuple[tuple[memoryview], memoryview]: - """Ed25519 public fields""" - point, data = _get_sshstr(data) - return (point,), data - - def load_public( - self, data: memoryview - ) -> tuple[ed25519.Ed25519PublicKey, memoryview]: - """Make Ed25519 public key from data.""" - (point,), data = self.get_public(data) - public_key = ed25519.Ed25519PublicKey.from_public_bytes( - point.tobytes() - ) - return public_key, data - - def load_private( - self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool - ) -> tuple[ed25519.Ed25519PrivateKey, memoryview]: - """Make Ed25519 private key from data.""" - (point,), data = self.get_public(data) - keypair, data = _get_sshstr(data) - - secret = keypair[:32] - point2 = keypair[32:] - if point != point2 or (point,) != pubfields: - raise ValueError("Corrupt data: ed25519 field mismatch") - private_key = ed25519.Ed25519PrivateKey.from_private_bytes(secret) - return private_key, data - - def encode_public( - self, public_key: ed25519.Ed25519PublicKey, f_pub: _FragList - ) -> None: - """Write Ed25519 public key""" - raw_public_key = public_key.public_bytes( - Encoding.Raw, PublicFormat.Raw - ) - f_pub.put_sshstr(raw_public_key) - - def encode_private( - self, private_key: ed25519.Ed25519PrivateKey, f_priv: _FragList - ) -> None: - """Write Ed25519 private key""" - public_key = private_key.public_key() - raw_private_key = private_key.private_bytes( - Encoding.Raw, PrivateFormat.Raw, NoEncryption() - ) - raw_public_key = public_key.public_bytes( - Encoding.Raw, PublicFormat.Raw - ) - f_keypair = _FragList([raw_private_key, raw_public_key]) - - self.encode_public(public_key, f_priv) - f_priv.put_sshstr(f_keypair) - - -def load_application(data) -> tuple[memoryview, memoryview]: - """ - U2F application strings - """ - application, data = _get_sshstr(data) - if not application.tobytes().startswith(b"ssh:"): - raise ValueError( - "U2F application string does not start with b'ssh:' " - f"({application})" - ) - return application, data - - -class _SSHFormatSKEd25519: - """ - The format of a sk-ssh-ed25519@openssh.com public key is: - - string "sk-ssh-ed25519@openssh.com" - string public key - string application (user-specified, but typically "ssh:") - """ - - def load_public( - self, data: memoryview - ) -> tuple[ed25519.Ed25519PublicKey, memoryview]: - """Make Ed25519 public key from data.""" - public_key, data = _lookup_kformat(_SSH_ED25519).load_public(data) - _, data = load_application(data) - return public_key, data - - def get_public(self, data: memoryview) -> typing.NoReturn: - # Confusingly `get_public` is an entry point used by private key - # loading. - raise UnsupportedAlgorithm( - "sk-ssh-ed25519 private keys cannot be loaded" - ) - - -class _SSHFormatSKECDSA: - """ - The format of a sk-ecdsa-sha2-nistp256@openssh.com public key is: - - string "sk-ecdsa-sha2-nistp256@openssh.com" - string curve name - ec_point Q - string application (user-specified, but typically "ssh:") - """ - - def load_public( - self, data: memoryview - ) -> tuple[ec.EllipticCurvePublicKey, memoryview]: - """Make ECDSA public key from data.""" - public_key, data = _lookup_kformat(_ECDSA_NISTP256).load_public(data) - _, data = load_application(data) - return public_key, data - - def get_public(self, data: memoryview) -> typing.NoReturn: - # Confusingly `get_public` is an entry point used by private key - # loading. - raise UnsupportedAlgorithm( - "sk-ecdsa-sha2-nistp256 private keys cannot be loaded" - ) - - -_KEY_FORMATS = { - _SSH_RSA: _SSHFormatRSA(), - _SSH_DSA: _SSHFormatDSA(), - _SSH_ED25519: _SSHFormatEd25519(), - _ECDSA_NISTP256: _SSHFormatECDSA(b"nistp256", ec.SECP256R1()), - _ECDSA_NISTP384: _SSHFormatECDSA(b"nistp384", ec.SECP384R1()), - _ECDSA_NISTP521: _SSHFormatECDSA(b"nistp521", ec.SECP521R1()), - _SK_SSH_ED25519: _SSHFormatSKEd25519(), - _SK_SSH_ECDSA_NISTP256: _SSHFormatSKECDSA(), -} - - -def _lookup_kformat(key_type: utils.Buffer): - """Return valid format or throw error""" - if not isinstance(key_type, bytes): - key_type = memoryview(key_type).tobytes() - if key_type in _KEY_FORMATS: - return _KEY_FORMATS[key_type] - raise UnsupportedAlgorithm(f"Unsupported key type: {key_type!r}") - - -SSHPrivateKeyTypes = typing.Union[ - ec.EllipticCurvePrivateKey, - rsa.RSAPrivateKey, - dsa.DSAPrivateKey, - ed25519.Ed25519PrivateKey, -] - - -def load_ssh_private_key( - data: utils.Buffer, - password: bytes | None, - backend: typing.Any = None, - *, - unsafe_skip_rsa_key_validation: bool = False, -) -> SSHPrivateKeyTypes: - """Load private key from OpenSSH custom encoding.""" - utils._check_byteslike("data", data) - if password is not None: - utils._check_bytes("password", password) - - m = _PEM_RC.search(data) - if not m: - raise ValueError("Not OpenSSH private key format") - p1 = m.start(1) - p2 = m.end(1) - data = binascii.a2b_base64(memoryview(data)[p1:p2]) - if not data.startswith(_SK_MAGIC): - raise ValueError("Not OpenSSH private key format") - data = memoryview(data)[len(_SK_MAGIC) :] - - # parse header - ciphername, data = _get_sshstr(data) - kdfname, data = _get_sshstr(data) - kdfoptions, data = _get_sshstr(data) - nkeys, data = _get_u32(data) - if nkeys != 1: - raise ValueError("Only one key supported") - - # load public key data - pubdata, data = _get_sshstr(data) - pub_key_type, pubdata = _get_sshstr(pubdata) - kformat = _lookup_kformat(pub_key_type) - pubfields, pubdata = kformat.get_public(pubdata) - _check_empty(pubdata) - - if ciphername != _NONE or kdfname != _NONE: - ciphername_bytes = ciphername.tobytes() - if ciphername_bytes not in _SSH_CIPHERS: - raise UnsupportedAlgorithm( - f"Unsupported cipher: {ciphername_bytes!r}" - ) - if kdfname != _BCRYPT: - raise UnsupportedAlgorithm(f"Unsupported KDF: {kdfname!r}") - blklen = _SSH_CIPHERS[ciphername_bytes].block_len - tag_len = _SSH_CIPHERS[ciphername_bytes].tag_len - # load secret data - edata, data = _get_sshstr(data) - # see https://bugzilla.mindrot.org/show_bug.cgi?id=3553 for - # information about how OpenSSH handles AEAD tags - if _SSH_CIPHERS[ciphername_bytes].is_aead: - tag = bytes(data) - if len(tag) != tag_len: - raise ValueError("Corrupt data: invalid tag length for cipher") - else: - _check_empty(data) - _check_block_size(edata, blklen) - salt, kbuf = _get_sshstr(kdfoptions) - rounds, kbuf = _get_u32(kbuf) - _check_empty(kbuf) - ciph = _init_cipher(ciphername_bytes, password, salt.tobytes(), rounds) - dec = ciph.decryptor() - edata = memoryview(dec.update(edata)) - if _SSH_CIPHERS[ciphername_bytes].is_aead: - assert isinstance(dec, AEADDecryptionContext) - _check_empty(dec.finalize_with_tag(tag)) - else: - # _check_block_size requires data to be a full block so there - # should be no output from finalize - _check_empty(dec.finalize()) - else: - if password: - raise TypeError( - "Password was given but private key is not encrypted." - ) - # load secret data - edata, data = _get_sshstr(data) - _check_empty(data) - blklen = 8 - _check_block_size(edata, blklen) - ck1, edata = _get_u32(edata) - ck2, edata = _get_u32(edata) - if ck1 != ck2: - raise ValueError("Corrupt data: broken checksum") - - # load per-key struct - key_type, edata = _get_sshstr(edata) - if key_type != pub_key_type: - raise ValueError("Corrupt data: key type mismatch") - private_key, edata = kformat.load_private( - edata, - pubfields, - unsafe_skip_rsa_key_validation=unsafe_skip_rsa_key_validation, - ) - # We don't use the comment - _, edata = _get_sshstr(edata) - - # yes, SSH does padding check *after* all other parsing is done. - # need to follow as it writes zero-byte padding too. - if edata != _PADDING[: len(edata)]: - raise ValueError("Corrupt data: invalid padding") - - if isinstance(private_key, dsa.DSAPrivateKey): - warnings.warn( - "SSH DSA keys are deprecated and will be removed in a future " - "release.", - utils.DeprecatedIn40, - stacklevel=2, - ) - - return private_key - - -def _serialize_ssh_private_key( - private_key: SSHPrivateKeyTypes, - password: bytes, - encryption_algorithm: KeySerializationEncryption, -) -> bytes: - """Serialize private key with OpenSSH custom encoding.""" - utils._check_bytes("password", password) - if isinstance(private_key, dsa.DSAPrivateKey): - warnings.warn( - "SSH DSA key support is deprecated and will be " - "removed in a future release", - utils.DeprecatedIn40, - stacklevel=4, - ) - - key_type = _get_ssh_key_type(private_key) - kformat = _lookup_kformat(key_type) - - # setup parameters - f_kdfoptions = _FragList() - if password: - ciphername = _DEFAULT_CIPHER - blklen = _SSH_CIPHERS[ciphername].block_len - kdfname = _BCRYPT - rounds = _DEFAULT_ROUNDS - if ( - isinstance(encryption_algorithm, _KeySerializationEncryption) - and encryption_algorithm._kdf_rounds is not None - ): - rounds = encryption_algorithm._kdf_rounds - salt = os.urandom(16) - f_kdfoptions.put_sshstr(salt) - f_kdfoptions.put_u32(rounds) - ciph = _init_cipher(ciphername, password, salt, rounds) - else: - ciphername = kdfname = _NONE - blklen = 8 - ciph = None - nkeys = 1 - checkval = os.urandom(4) - comment = b"" - - # encode public and private parts together - f_public_key = _FragList() - f_public_key.put_sshstr(key_type) - kformat.encode_public(private_key.public_key(), f_public_key) - - f_secrets = _FragList([checkval, checkval]) - f_secrets.put_sshstr(key_type) - kformat.encode_private(private_key, f_secrets) - f_secrets.put_sshstr(comment) - f_secrets.put_raw(_PADDING[: blklen - (f_secrets.size() % blklen)]) - - # top-level structure - f_main = _FragList() - f_main.put_raw(_SK_MAGIC) - f_main.put_sshstr(ciphername) - f_main.put_sshstr(kdfname) - f_main.put_sshstr(f_kdfoptions) - f_main.put_u32(nkeys) - f_main.put_sshstr(f_public_key) - f_main.put_sshstr(f_secrets) - - # copy result info bytearray - slen = f_secrets.size() - mlen = f_main.size() - buf = memoryview(bytearray(mlen + blklen)) - f_main.render(buf) - ofs = mlen - slen - - # encrypt in-place - if ciph is not None: - ciph.encryptor().update_into(buf[ofs:mlen], buf[ofs:]) - - return _ssh_pem_encode(buf[:mlen]) - - -SSHPublicKeyTypes = typing.Union[ - ec.EllipticCurvePublicKey, - rsa.RSAPublicKey, - dsa.DSAPublicKey, - ed25519.Ed25519PublicKey, -] - -SSHCertPublicKeyTypes = typing.Union[ - ec.EllipticCurvePublicKey, - rsa.RSAPublicKey, - ed25519.Ed25519PublicKey, -] - - -class SSHCertificateType(enum.Enum): - USER = 1 - HOST = 2 - - -class SSHCertificate: - def __init__( - self, - _nonce: memoryview, - _public_key: SSHPublicKeyTypes, - _serial: int, - _cctype: int, - _key_id: memoryview, - _valid_principals: list[bytes], - _valid_after: int, - _valid_before: int, - _critical_options: dict[bytes, bytes], - _extensions: dict[bytes, bytes], - _sig_type: memoryview, - _sig_key: memoryview, - _inner_sig_type: memoryview, - _signature: memoryview, - _tbs_cert_body: memoryview, - _cert_key_type: bytes, - _cert_body: memoryview, - ): - self._nonce = _nonce - self._public_key = _public_key - self._serial = _serial - try: - self._type = SSHCertificateType(_cctype) - except ValueError: - raise ValueError("Invalid certificate type") - self._key_id = _key_id - self._valid_principals = _valid_principals - self._valid_after = _valid_after - self._valid_before = _valid_before - self._critical_options = _critical_options - self._extensions = _extensions - self._sig_type = _sig_type - self._sig_key = _sig_key - self._inner_sig_type = _inner_sig_type - self._signature = _signature - self._cert_key_type = _cert_key_type - self._cert_body = _cert_body - self._tbs_cert_body = _tbs_cert_body - - @property - def nonce(self) -> bytes: - return bytes(self._nonce) - - def public_key(self) -> SSHCertPublicKeyTypes: - # make mypy happy until we remove DSA support entirely and - # the underlying union won't have a disallowed type - return typing.cast(SSHCertPublicKeyTypes, self._public_key) - - @property - def serial(self) -> int: - return self._serial - - @property - def type(self) -> SSHCertificateType: - return self._type - - @property - def key_id(self) -> bytes: - return bytes(self._key_id) - - @property - def valid_principals(self) -> list[bytes]: - return self._valid_principals - - @property - def valid_before(self) -> int: - return self._valid_before - - @property - def valid_after(self) -> int: - return self._valid_after - - @property - def critical_options(self) -> dict[bytes, bytes]: - return self._critical_options - - @property - def extensions(self) -> dict[bytes, bytes]: - return self._extensions - - def signature_key(self) -> SSHCertPublicKeyTypes: - sigformat = _lookup_kformat(self._sig_type) - signature_key, sigkey_rest = sigformat.load_public(self._sig_key) - _check_empty(sigkey_rest) - return signature_key - - def public_bytes(self) -> bytes: - return ( - bytes(self._cert_key_type) - + b" " - + binascii.b2a_base64(bytes(self._cert_body), newline=False) - ) - - def verify_cert_signature(self) -> None: - signature_key = self.signature_key() - if isinstance(signature_key, ed25519.Ed25519PublicKey): - signature_key.verify( - bytes(self._signature), bytes(self._tbs_cert_body) - ) - elif isinstance(signature_key, ec.EllipticCurvePublicKey): - # The signature is encoded as a pair of big-endian integers - r, data = _get_mpint(self._signature) - s, data = _get_mpint(data) - _check_empty(data) - computed_sig = asym_utils.encode_dss_signature(r, s) - hash_alg = _get_ec_hash_alg(signature_key.curve) - signature_key.verify( - computed_sig, bytes(self._tbs_cert_body), ec.ECDSA(hash_alg) - ) - else: - assert isinstance(signature_key, rsa.RSAPublicKey) - if self._inner_sig_type == _SSH_RSA: - hash_alg = hashes.SHA1() - elif self._inner_sig_type == _SSH_RSA_SHA256: - hash_alg = hashes.SHA256() - else: - assert self._inner_sig_type == _SSH_RSA_SHA512 - hash_alg = hashes.SHA512() - signature_key.verify( - bytes(self._signature), - bytes(self._tbs_cert_body), - padding.PKCS1v15(), - hash_alg, - ) - - -def _get_ec_hash_alg(curve: ec.EllipticCurve) -> hashes.HashAlgorithm: - if isinstance(curve, ec.SECP256R1): - return hashes.SHA256() - elif isinstance(curve, ec.SECP384R1): - return hashes.SHA384() - else: - assert isinstance(curve, ec.SECP521R1) - return hashes.SHA512() - - -def _load_ssh_public_identity( - data: utils.Buffer, - _legacy_dsa_allowed=False, -) -> SSHCertificate | SSHPublicKeyTypes: - utils._check_byteslike("data", data) - - m = _SSH_PUBKEY_RC.match(data) - if not m: - raise ValueError("Invalid line format") - key_type = orig_key_type = m.group(1) - key_body = m.group(2) - with_cert = False - if key_type.endswith(_CERT_SUFFIX): - with_cert = True - key_type = key_type[: -len(_CERT_SUFFIX)] - if key_type == _SSH_DSA and not _legacy_dsa_allowed: - raise UnsupportedAlgorithm( - "DSA keys aren't supported in SSH certificates" - ) - kformat = _lookup_kformat(key_type) - - try: - rest = memoryview(binascii.a2b_base64(key_body)) - except (TypeError, binascii.Error): - raise ValueError("Invalid format") - - if with_cert: - cert_body = rest - inner_key_type, rest = _get_sshstr(rest) - if inner_key_type != orig_key_type: - raise ValueError("Invalid key format") - if with_cert: - nonce, rest = _get_sshstr(rest) - public_key, rest = kformat.load_public(rest) - if with_cert: - serial, rest = _get_u64(rest) - cctype, rest = _get_u32(rest) - key_id, rest = _get_sshstr(rest) - principals, rest = _get_sshstr(rest) - valid_principals = [] - while principals: - principal, principals = _get_sshstr(principals) - valid_principals.append(bytes(principal)) - valid_after, rest = _get_u64(rest) - valid_before, rest = _get_u64(rest) - crit_options, rest = _get_sshstr(rest) - critical_options = _parse_exts_opts(crit_options) - exts, rest = _get_sshstr(rest) - extensions = _parse_exts_opts(exts) - # Get the reserved field, which is unused. - _, rest = _get_sshstr(rest) - sig_key_raw, rest = _get_sshstr(rest) - sig_type, sig_key = _get_sshstr(sig_key_raw) - if sig_type == _SSH_DSA and not _legacy_dsa_allowed: - raise UnsupportedAlgorithm( - "DSA signatures aren't supported in SSH certificates" - ) - # Get the entire cert body and subtract the signature - tbs_cert_body = cert_body[: -len(rest)] - signature_raw, rest = _get_sshstr(rest) - _check_empty(rest) - inner_sig_type, sig_rest = _get_sshstr(signature_raw) - # RSA certs can have multiple algorithm types - if ( - sig_type == _SSH_RSA - and inner_sig_type - not in [_SSH_RSA_SHA256, _SSH_RSA_SHA512, _SSH_RSA] - ) or (sig_type != _SSH_RSA and inner_sig_type != sig_type): - raise ValueError("Signature key type does not match") - signature, sig_rest = _get_sshstr(sig_rest) - _check_empty(sig_rest) - return SSHCertificate( - nonce, - public_key, - serial, - cctype, - key_id, - valid_principals, - valid_after, - valid_before, - critical_options, - extensions, - sig_type, - sig_key, - inner_sig_type, - signature, - tbs_cert_body, - orig_key_type, - cert_body, - ) - else: - _check_empty(rest) - return public_key - - -def load_ssh_public_identity( - data: bytes, -) -> SSHCertificate | SSHPublicKeyTypes: - return _load_ssh_public_identity(data) - - -def _parse_exts_opts(exts_opts: memoryview) -> dict[bytes, bytes]: - result: dict[bytes, bytes] = {} - last_name = None - while exts_opts: - name, exts_opts = _get_sshstr(exts_opts) - bname: bytes = bytes(name) - if bname in result: - raise ValueError("Duplicate name") - if last_name is not None and bname < last_name: - raise ValueError("Fields not lexically sorted") - value, exts_opts = _get_sshstr(exts_opts) - if len(value) > 0: - value, extra = _get_sshstr(value) - if len(extra) > 0: - raise ValueError("Unexpected extra data after value") - result[bname] = bytes(value) - last_name = bname - return result - - -def ssh_key_fingerprint( - key: SSHPublicKeyTypes, - hash_algorithm: hashes.MD5 | hashes.SHA256, -) -> bytes: - if not isinstance(hash_algorithm, (hashes.MD5, hashes.SHA256)): - raise TypeError("hash_algorithm must be either MD5 or SHA256") - - key_type = _get_ssh_key_type(key) - kformat = _lookup_kformat(key_type) - - f_pub = _FragList() - f_pub.put_sshstr(key_type) - kformat.encode_public(key, f_pub) - - ssh_binary_data = f_pub.tobytes() - - # Hash the binary data - hash_obj = hashes.Hash(hash_algorithm) - hash_obj.update(ssh_binary_data) - return hash_obj.finalize() - - -def load_ssh_public_key( - data: utils.Buffer, backend: typing.Any = None -) -> SSHPublicKeyTypes: - cert_or_key = _load_ssh_public_identity(data, _legacy_dsa_allowed=True) - public_key: SSHPublicKeyTypes - if isinstance(cert_or_key, SSHCertificate): - public_key = cert_or_key.public_key() - else: - public_key = cert_or_key - - if isinstance(public_key, dsa.DSAPublicKey): - warnings.warn( - "SSH DSA keys are deprecated and will be removed in a future " - "release.", - utils.DeprecatedIn40, - stacklevel=2, - ) - return public_key - - -def serialize_ssh_public_key(public_key: SSHPublicKeyTypes) -> bytes: - """One-line public key format for OpenSSH""" - if isinstance(public_key, dsa.DSAPublicKey): - warnings.warn( - "SSH DSA key support is deprecated and will be " - "removed in a future release", - utils.DeprecatedIn40, - stacklevel=4, - ) - key_type = _get_ssh_key_type(public_key) - kformat = _lookup_kformat(key_type) - - f_pub = _FragList() - f_pub.put_sshstr(key_type) - kformat.encode_public(public_key, f_pub) - - pub = binascii.b2a_base64(f_pub.tobytes()).strip() - return b"".join([key_type, b" ", pub]) - - -SSHCertPrivateKeyTypes = typing.Union[ - ec.EllipticCurvePrivateKey, - rsa.RSAPrivateKey, - ed25519.Ed25519PrivateKey, -] - - -# This is an undocumented limit enforced in the openssh codebase for sshd and -# ssh-keygen, but it is undefined in the ssh certificates spec. -_SSHKEY_CERT_MAX_PRINCIPALS = 256 - - -class SSHCertificateBuilder: - def __init__( - self, - _public_key: SSHCertPublicKeyTypes | None = None, - _serial: int | None = None, - _type: SSHCertificateType | None = None, - _key_id: bytes | None = None, - _valid_principals: list[bytes] = [], - _valid_for_all_principals: bool = False, - _valid_before: int | None = None, - _valid_after: int | None = None, - _critical_options: list[tuple[bytes, bytes]] = [], - _extensions: list[tuple[bytes, bytes]] = [], - ): - self._public_key = _public_key - self._serial = _serial - self._type = _type - self._key_id = _key_id - self._valid_principals = _valid_principals - self._valid_for_all_principals = _valid_for_all_principals - self._valid_before = _valid_before - self._valid_after = _valid_after - self._critical_options = _critical_options - self._extensions = _extensions - - def public_key( - self, public_key: SSHCertPublicKeyTypes - ) -> SSHCertificateBuilder: - if not isinstance( - public_key, - ( - ec.EllipticCurvePublicKey, - rsa.RSAPublicKey, - ed25519.Ed25519PublicKey, - ), - ): - raise TypeError("Unsupported key type") - if self._public_key is not None: - raise ValueError("public_key already set") - - return SSHCertificateBuilder( - _public_key=public_key, - _serial=self._serial, - _type=self._type, - _key_id=self._key_id, - _valid_principals=self._valid_principals, - _valid_for_all_principals=self._valid_for_all_principals, - _valid_before=self._valid_before, - _valid_after=self._valid_after, - _critical_options=self._critical_options, - _extensions=self._extensions, - ) - - def serial(self, serial: int) -> SSHCertificateBuilder: - if not isinstance(serial, int): - raise TypeError("serial must be an integer") - if not 0 <= serial < 2**64: - raise ValueError("serial must be between 0 and 2**64") - if self._serial is not None: - raise ValueError("serial already set") - - return SSHCertificateBuilder( - _public_key=self._public_key, - _serial=serial, - _type=self._type, - _key_id=self._key_id, - _valid_principals=self._valid_principals, - _valid_for_all_principals=self._valid_for_all_principals, - _valid_before=self._valid_before, - _valid_after=self._valid_after, - _critical_options=self._critical_options, - _extensions=self._extensions, - ) - - def type(self, type: SSHCertificateType) -> SSHCertificateBuilder: - if not isinstance(type, SSHCertificateType): - raise TypeError("type must be an SSHCertificateType") - if self._type is not None: - raise ValueError("type already set") - - return SSHCertificateBuilder( - _public_key=self._public_key, - _serial=self._serial, - _type=type, - _key_id=self._key_id, - _valid_principals=self._valid_principals, - _valid_for_all_principals=self._valid_for_all_principals, - _valid_before=self._valid_before, - _valid_after=self._valid_after, - _critical_options=self._critical_options, - _extensions=self._extensions, - ) - - def key_id(self, key_id: bytes) -> SSHCertificateBuilder: - if not isinstance(key_id, bytes): - raise TypeError("key_id must be bytes") - if self._key_id is not None: - raise ValueError("key_id already set") - - return SSHCertificateBuilder( - _public_key=self._public_key, - _serial=self._serial, - _type=self._type, - _key_id=key_id, - _valid_principals=self._valid_principals, - _valid_for_all_principals=self._valid_for_all_principals, - _valid_before=self._valid_before, - _valid_after=self._valid_after, - _critical_options=self._critical_options, - _extensions=self._extensions, - ) - - def valid_principals( - self, valid_principals: list[bytes] - ) -> SSHCertificateBuilder: - if self._valid_for_all_principals: - raise ValueError( - "Principals can't be set because the cert is valid " - "for all principals" - ) - if ( - not all(isinstance(x, bytes) for x in valid_principals) - or not valid_principals - ): - raise TypeError( - "principals must be a list of bytes and can't be empty" - ) - if self._valid_principals: - raise ValueError("valid_principals already set") - - if len(valid_principals) > _SSHKEY_CERT_MAX_PRINCIPALS: - raise ValueError( - "Reached or exceeded the maximum number of valid_principals" - ) - - return SSHCertificateBuilder( - _public_key=self._public_key, - _serial=self._serial, - _type=self._type, - _key_id=self._key_id, - _valid_principals=valid_principals, - _valid_for_all_principals=self._valid_for_all_principals, - _valid_before=self._valid_before, - _valid_after=self._valid_after, - _critical_options=self._critical_options, - _extensions=self._extensions, - ) - - def valid_for_all_principals(self): - if self._valid_principals: - raise ValueError( - "valid_principals already set, can't set " - "valid_for_all_principals" - ) - if self._valid_for_all_principals: - raise ValueError("valid_for_all_principals already set") - - return SSHCertificateBuilder( - _public_key=self._public_key, - _serial=self._serial, - _type=self._type, - _key_id=self._key_id, - _valid_principals=self._valid_principals, - _valid_for_all_principals=True, - _valid_before=self._valid_before, - _valid_after=self._valid_after, - _critical_options=self._critical_options, - _extensions=self._extensions, - ) - - def valid_before(self, valid_before: int | float) -> SSHCertificateBuilder: - if not isinstance(valid_before, (int, float)): - raise TypeError("valid_before must be an int or float") - valid_before = int(valid_before) - if valid_before < 0 or valid_before >= 2**64: - raise ValueError("valid_before must [0, 2**64)") - if self._valid_before is not None: - raise ValueError("valid_before already set") - - return SSHCertificateBuilder( - _public_key=self._public_key, - _serial=self._serial, - _type=self._type, - _key_id=self._key_id, - _valid_principals=self._valid_principals, - _valid_for_all_principals=self._valid_for_all_principals, - _valid_before=valid_before, - _valid_after=self._valid_after, - _critical_options=self._critical_options, - _extensions=self._extensions, - ) - - def valid_after(self, valid_after: int | float) -> SSHCertificateBuilder: - if not isinstance(valid_after, (int, float)): - raise TypeError("valid_after must be an int or float") - valid_after = int(valid_after) - if valid_after < 0 or valid_after >= 2**64: - raise ValueError("valid_after must [0, 2**64)") - if self._valid_after is not None: - raise ValueError("valid_after already set") - - return SSHCertificateBuilder( - _public_key=self._public_key, - _serial=self._serial, - _type=self._type, - _key_id=self._key_id, - _valid_principals=self._valid_principals, - _valid_for_all_principals=self._valid_for_all_principals, - _valid_before=self._valid_before, - _valid_after=valid_after, - _critical_options=self._critical_options, - _extensions=self._extensions, - ) - - def add_critical_option( - self, name: bytes, value: bytes - ) -> SSHCertificateBuilder: - if not isinstance(name, bytes) or not isinstance(value, bytes): - raise TypeError("name and value must be bytes") - # This is O(n**2) - if name in [name for name, _ in self._critical_options]: - raise ValueError("Duplicate critical option name") - - return SSHCertificateBuilder( - _public_key=self._public_key, - _serial=self._serial, - _type=self._type, - _key_id=self._key_id, - _valid_principals=self._valid_principals, - _valid_for_all_principals=self._valid_for_all_principals, - _valid_before=self._valid_before, - _valid_after=self._valid_after, - _critical_options=[*self._critical_options, (name, value)], - _extensions=self._extensions, - ) - - def add_extension( - self, name: bytes, value: bytes - ) -> SSHCertificateBuilder: - if not isinstance(name, bytes) or not isinstance(value, bytes): - raise TypeError("name and value must be bytes") - # This is O(n**2) - if name in [name for name, _ in self._extensions]: - raise ValueError("Duplicate extension name") - - return SSHCertificateBuilder( - _public_key=self._public_key, - _serial=self._serial, - _type=self._type, - _key_id=self._key_id, - _valid_principals=self._valid_principals, - _valid_for_all_principals=self._valid_for_all_principals, - _valid_before=self._valid_before, - _valid_after=self._valid_after, - _critical_options=self._critical_options, - _extensions=[*self._extensions, (name, value)], - ) - - def sign(self, private_key: SSHCertPrivateKeyTypes) -> SSHCertificate: - if not isinstance( - private_key, - ( - ec.EllipticCurvePrivateKey, - rsa.RSAPrivateKey, - ed25519.Ed25519PrivateKey, - ), - ): - raise TypeError("Unsupported private key type") - - if self._public_key is None: - raise ValueError("public_key must be set") - - # Not required - serial = 0 if self._serial is None else self._serial - - if self._type is None: - raise ValueError("type must be set") - - # Not required - key_id = b"" if self._key_id is None else self._key_id - - # A zero length list is valid, but means the certificate - # is valid for any principal of the specified type. We require - # the user to explicitly set valid_for_all_principals to get - # that behavior. - if not self._valid_principals and not self._valid_for_all_principals: - raise ValueError( - "valid_principals must be set if valid_for_all_principals " - "is False" - ) - - if self._valid_before is None: - raise ValueError("valid_before must be set") - - if self._valid_after is None: - raise ValueError("valid_after must be set") - - if self._valid_after > self._valid_before: - raise ValueError("valid_after must be earlier than valid_before") - - # lexically sort our byte strings - self._critical_options.sort(key=lambda x: x[0]) - self._extensions.sort(key=lambda x: x[0]) - - key_type = _get_ssh_key_type(self._public_key) - cert_prefix = key_type + _CERT_SUFFIX - - # Marshal the bytes to be signed - nonce = os.urandom(32) - kformat = _lookup_kformat(key_type) - f = _FragList() - f.put_sshstr(cert_prefix) - f.put_sshstr(nonce) - kformat.encode_public(self._public_key, f) - f.put_u64(serial) - f.put_u32(self._type.value) - f.put_sshstr(key_id) - fprincipals = _FragList() - for p in self._valid_principals: - fprincipals.put_sshstr(p) - f.put_sshstr(fprincipals.tobytes()) - f.put_u64(self._valid_after) - f.put_u64(self._valid_before) - fcrit = _FragList() - for name, value in self._critical_options: - fcrit.put_sshstr(name) - if len(value) > 0: - foptval = _FragList() - foptval.put_sshstr(value) - fcrit.put_sshstr(foptval.tobytes()) - else: - fcrit.put_sshstr(value) - f.put_sshstr(fcrit.tobytes()) - fext = _FragList() - for name, value in self._extensions: - fext.put_sshstr(name) - if len(value) > 0: - fextval = _FragList() - fextval.put_sshstr(value) - fext.put_sshstr(fextval.tobytes()) - else: - fext.put_sshstr(value) - f.put_sshstr(fext.tobytes()) - f.put_sshstr(b"") # RESERVED FIELD - # encode CA public key - ca_type = _get_ssh_key_type(private_key) - caformat = _lookup_kformat(ca_type) - caf = _FragList() - caf.put_sshstr(ca_type) - caformat.encode_public(private_key.public_key(), caf) - f.put_sshstr(caf.tobytes()) - # Sigs according to the rules defined for the CA's public key - # (RFC4253 section 6.6 for ssh-rsa, RFC5656 for ECDSA, - # and RFC8032 for Ed25519). - if isinstance(private_key, ed25519.Ed25519PrivateKey): - signature = private_key.sign(f.tobytes()) - fsig = _FragList() - fsig.put_sshstr(ca_type) - fsig.put_sshstr(signature) - f.put_sshstr(fsig.tobytes()) - elif isinstance(private_key, ec.EllipticCurvePrivateKey): - hash_alg = _get_ec_hash_alg(private_key.curve) - signature = private_key.sign(f.tobytes(), ec.ECDSA(hash_alg)) - r, s = asym_utils.decode_dss_signature(signature) - fsig = _FragList() - fsig.put_sshstr(ca_type) - fsigblob = _FragList() - fsigblob.put_mpint(r) - fsigblob.put_mpint(s) - fsig.put_sshstr(fsigblob.tobytes()) - f.put_sshstr(fsig.tobytes()) - - else: - assert isinstance(private_key, rsa.RSAPrivateKey) - # Just like Golang, we're going to use SHA512 for RSA - # https://cs.opensource.google/go/x/crypto/+/refs/tags/ - # v0.4.0:ssh/certs.go;l=445 - # RFC 8332 defines SHA256 and 512 as options - fsig = _FragList() - fsig.put_sshstr(_SSH_RSA_SHA512) - signature = private_key.sign( - f.tobytes(), padding.PKCS1v15(), hashes.SHA512() - ) - fsig.put_sshstr(signature) - f.put_sshstr(fsig.tobytes()) - - cert_data = binascii.b2a_base64(f.tobytes()).strip() - # load_ssh_public_identity returns a union, but this is - # guaranteed to be an SSHCertificate, so we cast to make - # mypy happy. - return typing.cast( - SSHCertificate, - load_ssh_public_identity(b"".join([cert_prefix, b" ", cert_data])), - ) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py deleted file mode 100644 index c1af423..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - - -class InvalidToken(Exception): - pass diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 676b8bf41fc14c63ca2ecc0a7f8c852b3a99e899..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453 zcmXv~yH3L}6unMbl)l*D2au35Pz#ul5DP+xr4kZT7Rw}VW185h;{?*VAHddcKzs^6 zfU+{NA(bwjuoH2I>vQhg=VLVLgRz6+K6VhmmnHw!Z2{UG8?c55B9uUi0))VUTZo($ zL@smQ-L@`ptB&9Ow!}yEfC?cs)m(}^Yzta%wpc@(q48^A5TFPGr$W9{5AQ@t6CORt zITI7#tvx~nO&K9|pO92WMPl)gkVQe0HuDA>J8!qZu}m3$l2oQruqDUWW_6Kh6D*l1 zal#*QR_R!Z^YQ5!&bekM84c%j#&R60D${bNXckvErpuISoGG4i%}bNk&vHsbEfpq& z3$6(nXO*%7HO@02w`>KU9Zy+FoA|`<*u$rVE|fW3S*7aU%}dBKD@;3}XRDi*fk8X( ivi;|k+Bejyl^+`S<06E%eLzRQdkFPjFScNwrtc3v$a5h8 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-312.pyc deleted file mode 100644 index c3f4bab4c896e5ab7d0d493592c2de424f1c6c9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5153 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 diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py deleted file mode 100644 index 21fb000..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py +++ /dev/null @@ -1,101 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import base64 -import typing -from urllib.parse import quote, urlencode - -from cryptography.hazmat.primitives import constant_time, hmac -from cryptography.hazmat.primitives.hashes import SHA1, SHA256, SHA512 -from cryptography.hazmat.primitives.twofactor import InvalidToken -from cryptography.utils import Buffer - -HOTPHashTypes = typing.Union[SHA1, SHA256, SHA512] - - -def _generate_uri( - hotp: HOTP, - type_name: str, - account_name: str, - issuer: str | None, - extra_parameters: list[tuple[str, int]], -) -> str: - parameters = [ - ("digits", hotp._length), - ("secret", base64.b32encode(hotp._key)), - ("algorithm", hotp._algorithm.name.upper()), - ] - - if issuer is not None: - parameters.append(("issuer", issuer)) - - parameters.extend(extra_parameters) - - label = ( - f"{quote(issuer)}:{quote(account_name)}" - if issuer - else quote(account_name) - ) - return f"otpauth://{type_name}/{label}?{urlencode(parameters)}" - - -class HOTP: - def __init__( - self, - key: Buffer, - length: int, - algorithm: HOTPHashTypes, - backend: typing.Any = None, - enforce_key_length: bool = True, - ) -> None: - if len(key) < 16 and enforce_key_length is True: - raise ValueError("Key length has to be at least 128 bits.") - - if not isinstance(length, int): - raise TypeError("Length parameter must be an integer type.") - - if length < 6 or length > 8: - raise ValueError("Length of HOTP has to be between 6 and 8.") - - if not isinstance(algorithm, (SHA1, SHA256, SHA512)): - raise TypeError("Algorithm must be SHA1, SHA256 or SHA512.") - - self._key = key - self._length = length - self._algorithm = algorithm - - def generate(self, counter: int) -> bytes: - if not isinstance(counter, int): - raise TypeError("Counter parameter must be an integer type.") - - truncated_value = self._dynamic_truncate(counter) - hotp = truncated_value % (10**self._length) - return "{0:0{1}}".format(hotp, self._length).encode() - - def verify(self, hotp: bytes, counter: int) -> None: - if not constant_time.bytes_eq(self.generate(counter), hotp): - raise InvalidToken("Supplied HOTP value does not match.") - - def _dynamic_truncate(self, counter: int) -> int: - ctx = hmac.HMAC(self._key, self._algorithm) - - try: - ctx.update(counter.to_bytes(length=8, byteorder="big")) - except OverflowError: - raise ValueError(f"Counter must be between 0 and {2**64 - 1}.") - - hmac_value = ctx.finalize() - - offset = hmac_value[len(hmac_value) - 1] & 0b1111 - p = hmac_value[offset : offset + 4] - return int.from_bytes(p, byteorder="big") & 0x7FFFFFFF - - def get_provisioning_uri( - self, account_name: str, counter: int, issuer: str | None - ) -> str: - return _generate_uri( - self, "hotp", account_name, issuer, [("counter", int(counter))] - ) diff --git a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/totp.py b/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/totp.py deleted file mode 100644 index 10c725c..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/totp.py +++ /dev/null @@ -1,56 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import typing - -from cryptography.hazmat.primitives import constant_time -from cryptography.hazmat.primitives.twofactor import InvalidToken -from cryptography.hazmat.primitives.twofactor.hotp import ( - HOTP, - HOTPHashTypes, - _generate_uri, -) -from cryptography.utils import Buffer - - -class TOTP: - def __init__( - self, - key: Buffer, - length: int, - algorithm: HOTPHashTypes, - time_step: int, - backend: typing.Any = None, - enforce_key_length: bool = True, - ): - self._time_step = time_step - self._hotp = HOTP( - key, length, algorithm, enforce_key_length=enforce_key_length - ) - - def generate(self, time: int | float) -> bytes: - if not isinstance(time, (int, float)): - raise TypeError( - "Time parameter must be an integer type or float type." - ) - - counter = int(time / self._time_step) - return self._hotp.generate(counter) - - def verify(self, totp: bytes, time: int) -> None: - if not constant_time.bytes_eq(self.generate(time), totp): - raise InvalidToken("Supplied TOTP value does not match.") - - def get_provisioning_uri( - self, account_name: str, issuer: str | None - ) -> str: - return _generate_uri( - self._hotp, - "totp", - account_name, - issuer, - [("period", int(self._time_step))], - ) diff --git a/venv/lib/python3.12/site-packages/cryptography/py.typed b/venv/lib/python3.12/site-packages/cryptography/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/cryptography/utils.py b/venv/lib/python3.12/site-packages/cryptography/utils.py deleted file mode 100644 index 7de7e4d..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/utils.py +++ /dev/null @@ -1,139 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import enum -import sys -import types -import typing -import warnings -from collections.abc import Callable, Sequence - - -# We use a UserWarning subclass, instead of DeprecationWarning, because CPython -# decided deprecation warnings should be invisible by default. -class CryptographyDeprecationWarning(UserWarning): - pass - - -# Several APIs were deprecated with no specific end-of-life date because of the -# ubiquity of their use. They should not be removed until we agree on when that -# cycle ends. -DeprecatedIn36 = CryptographyDeprecationWarning -DeprecatedIn37 = CryptographyDeprecationWarning -DeprecatedIn40 = CryptographyDeprecationWarning -DeprecatedIn41 = CryptographyDeprecationWarning -DeprecatedIn42 = CryptographyDeprecationWarning -DeprecatedIn43 = CryptographyDeprecationWarning -DeprecatedIn45 = CryptographyDeprecationWarning - - -# If you're wondering why we don't use `Buffer`, it's because `Buffer` would -# be more accurately named: Bufferable. It means something which has an -# `__buffer__`. Which means you can't actually treat the result as a buffer -# (and do things like take a `len()`). -if sys.version_info >= (3, 9): - Buffer = typing.Union[bytes, bytearray, memoryview] -else: - Buffer = typing.ByteString - - -def _check_bytes(name: str, value: bytes) -> None: - if not isinstance(value, bytes): - raise TypeError(f"{name} must be bytes") - - -def _check_byteslike(name: str, value: Buffer) -> None: - try: - memoryview(value) - except TypeError: - raise TypeError(f"{name} must be bytes-like") - - -def int_to_bytes(integer: int, length: int | None = None) -> bytes: - if length == 0: - raise ValueError("length argument can't be 0") - return integer.to_bytes( - length or (integer.bit_length() + 7) // 8 or 1, "big" - ) - - -class InterfaceNotImplemented(Exception): - pass - - -class _DeprecatedValue: - def __init__(self, value: object, message: str, warning_class): - self.value = value - self.message = message - self.warning_class = warning_class - - -class _ModuleWithDeprecations(types.ModuleType): - def __init__(self, module: types.ModuleType): - super().__init__(module.__name__) - self.__dict__["_module"] = module - - def __getattr__(self, attr: str) -> object: - obj = getattr(self._module, attr) - if isinstance(obj, _DeprecatedValue): - warnings.warn(obj.message, obj.warning_class, stacklevel=2) - obj = obj.value - return obj - - def __setattr__(self, attr: str, value: object) -> None: - setattr(self._module, attr, value) - - def __delattr__(self, attr: str) -> None: - obj = getattr(self._module, attr) - if isinstance(obj, _DeprecatedValue): - warnings.warn(obj.message, obj.warning_class, stacklevel=2) - - delattr(self._module, attr) - - def __dir__(self) -> Sequence[str]: - return ["_module", *dir(self._module)] - - -def deprecated( - value: object, - module_name: str, - message: str, - warning_class: type[Warning], - name: str | None = None, -) -> _DeprecatedValue: - module = sys.modules[module_name] - if not isinstance(module, _ModuleWithDeprecations): - sys.modules[module_name] = module = _ModuleWithDeprecations(module) - dv = _DeprecatedValue(value, message, warning_class) - # Maintain backwards compatibility with `name is None` for pyOpenSSL. - if name is not None: - setattr(module, name, dv) - return dv - - -def cached_property(func: Callable) -> property: - cached_name = f"_cached_{func}" - sentinel = object() - - def inner(instance: object): - cache = getattr(instance, cached_name, sentinel) - if cache is not sentinel: - return cache - result = func(instance) - setattr(instance, cached_name, result) - return result - - return property(inner) - - -# Python 3.10 changed representation of enums. We use well-defined object -# representation and string representation from Python 3.9. -class Enum(enum.Enum): - def __repr__(self) -> str: - return f"<{self.__class__.__name__}.{self._name_}: {self._value_!r}>" - - def __str__(self) -> str: - return f"{self.__class__.__name__}.{self._name_}" diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/__init__.py b/venv/lib/python3.12/site-packages/cryptography/x509/__init__.py deleted file mode 100644 index 318eecc..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/x509/__init__.py +++ /dev/null @@ -1,270 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -from cryptography.x509 import certificate_transparency, verification -from cryptography.x509.base import ( - Attribute, - AttributeNotFound, - Attributes, - Certificate, - CertificateBuilder, - CertificateRevocationList, - CertificateRevocationListBuilder, - CertificateSigningRequest, - CertificateSigningRequestBuilder, - InvalidVersion, - RevokedCertificate, - RevokedCertificateBuilder, - Version, - load_der_x509_certificate, - load_der_x509_crl, - load_der_x509_csr, - load_pem_x509_certificate, - load_pem_x509_certificates, - load_pem_x509_crl, - load_pem_x509_csr, - random_serial_number, -) -from cryptography.x509.extensions import ( - AccessDescription, - Admission, - Admissions, - AuthorityInformationAccess, - AuthorityKeyIdentifier, - BasicConstraints, - CertificateIssuer, - CertificatePolicies, - CRLDistributionPoints, - CRLNumber, - CRLReason, - DeltaCRLIndicator, - DistributionPoint, - DuplicateExtension, - ExtendedKeyUsage, - Extension, - ExtensionNotFound, - Extensions, - ExtensionType, - FreshestCRL, - GeneralNames, - InhibitAnyPolicy, - InvalidityDate, - IssuerAlternativeName, - IssuingDistributionPoint, - KeyUsage, - MSCertificateTemplate, - NameConstraints, - NamingAuthority, - NoticeReference, - OCSPAcceptableResponses, - OCSPNoCheck, - OCSPNonce, - PolicyConstraints, - PolicyInformation, - PrecertificateSignedCertificateTimestamps, - PrecertPoison, - PrivateKeyUsagePeriod, - ProfessionInfo, - ReasonFlags, - SignedCertificateTimestamps, - SubjectAlternativeName, - SubjectInformationAccess, - SubjectKeyIdentifier, - TLSFeature, - TLSFeatureType, - UnrecognizedExtension, - UserNotice, -) -from cryptography.x509.general_name import ( - DirectoryName, - DNSName, - GeneralName, - IPAddress, - OtherName, - RegisteredID, - RFC822Name, - UniformResourceIdentifier, - UnsupportedGeneralNameType, -) -from cryptography.x509.name import ( - Name, - NameAttribute, - RelativeDistinguishedName, -) -from cryptography.x509.oid import ( - AuthorityInformationAccessOID, - CertificatePoliciesOID, - CRLEntryExtensionOID, - ExtendedKeyUsageOID, - ExtensionOID, - NameOID, - ObjectIdentifier, - PublicKeyAlgorithmOID, - SignatureAlgorithmOID, -) - -OID_AUTHORITY_INFORMATION_ACCESS = ExtensionOID.AUTHORITY_INFORMATION_ACCESS -OID_AUTHORITY_KEY_IDENTIFIER = ExtensionOID.AUTHORITY_KEY_IDENTIFIER -OID_BASIC_CONSTRAINTS = ExtensionOID.BASIC_CONSTRAINTS -OID_CERTIFICATE_POLICIES = ExtensionOID.CERTIFICATE_POLICIES -OID_CRL_DISTRIBUTION_POINTS = ExtensionOID.CRL_DISTRIBUTION_POINTS -OID_EXTENDED_KEY_USAGE = ExtensionOID.EXTENDED_KEY_USAGE -OID_FRESHEST_CRL = ExtensionOID.FRESHEST_CRL -OID_INHIBIT_ANY_POLICY = ExtensionOID.INHIBIT_ANY_POLICY -OID_ISSUER_ALTERNATIVE_NAME = ExtensionOID.ISSUER_ALTERNATIVE_NAME -OID_KEY_USAGE = ExtensionOID.KEY_USAGE -OID_PRIVATE_KEY_USAGE_PERIOD = ExtensionOID.PRIVATE_KEY_USAGE_PERIOD -OID_NAME_CONSTRAINTS = ExtensionOID.NAME_CONSTRAINTS -OID_OCSP_NO_CHECK = ExtensionOID.OCSP_NO_CHECK -OID_POLICY_CONSTRAINTS = ExtensionOID.POLICY_CONSTRAINTS -OID_POLICY_MAPPINGS = ExtensionOID.POLICY_MAPPINGS -OID_SUBJECT_ALTERNATIVE_NAME = ExtensionOID.SUBJECT_ALTERNATIVE_NAME -OID_SUBJECT_DIRECTORY_ATTRIBUTES = ExtensionOID.SUBJECT_DIRECTORY_ATTRIBUTES -OID_SUBJECT_INFORMATION_ACCESS = ExtensionOID.SUBJECT_INFORMATION_ACCESS -OID_SUBJECT_KEY_IDENTIFIER = ExtensionOID.SUBJECT_KEY_IDENTIFIER - -OID_DSA_WITH_SHA1 = SignatureAlgorithmOID.DSA_WITH_SHA1 -OID_DSA_WITH_SHA224 = SignatureAlgorithmOID.DSA_WITH_SHA224 -OID_DSA_WITH_SHA256 = SignatureAlgorithmOID.DSA_WITH_SHA256 -OID_ECDSA_WITH_SHA1 = SignatureAlgorithmOID.ECDSA_WITH_SHA1 -OID_ECDSA_WITH_SHA224 = SignatureAlgorithmOID.ECDSA_WITH_SHA224 -OID_ECDSA_WITH_SHA256 = SignatureAlgorithmOID.ECDSA_WITH_SHA256 -OID_ECDSA_WITH_SHA384 = SignatureAlgorithmOID.ECDSA_WITH_SHA384 -OID_ECDSA_WITH_SHA512 = SignatureAlgorithmOID.ECDSA_WITH_SHA512 -OID_RSA_WITH_MD5 = SignatureAlgorithmOID.RSA_WITH_MD5 -OID_RSA_WITH_SHA1 = SignatureAlgorithmOID.RSA_WITH_SHA1 -OID_RSA_WITH_SHA224 = SignatureAlgorithmOID.RSA_WITH_SHA224 -OID_RSA_WITH_SHA256 = SignatureAlgorithmOID.RSA_WITH_SHA256 -OID_RSA_WITH_SHA384 = SignatureAlgorithmOID.RSA_WITH_SHA384 -OID_RSA_WITH_SHA512 = SignatureAlgorithmOID.RSA_WITH_SHA512 -OID_RSASSA_PSS = SignatureAlgorithmOID.RSASSA_PSS - -OID_COMMON_NAME = NameOID.COMMON_NAME -OID_COUNTRY_NAME = NameOID.COUNTRY_NAME -OID_DOMAIN_COMPONENT = NameOID.DOMAIN_COMPONENT -OID_DN_QUALIFIER = NameOID.DN_QUALIFIER -OID_EMAIL_ADDRESS = NameOID.EMAIL_ADDRESS -OID_GENERATION_QUALIFIER = NameOID.GENERATION_QUALIFIER -OID_GIVEN_NAME = NameOID.GIVEN_NAME -OID_LOCALITY_NAME = NameOID.LOCALITY_NAME -OID_ORGANIZATIONAL_UNIT_NAME = NameOID.ORGANIZATIONAL_UNIT_NAME -OID_ORGANIZATION_NAME = NameOID.ORGANIZATION_NAME -OID_PSEUDONYM = NameOID.PSEUDONYM -OID_SERIAL_NUMBER = NameOID.SERIAL_NUMBER -OID_STATE_OR_PROVINCE_NAME = NameOID.STATE_OR_PROVINCE_NAME -OID_SURNAME = NameOID.SURNAME -OID_TITLE = NameOID.TITLE - -OID_CLIENT_AUTH = ExtendedKeyUsageOID.CLIENT_AUTH -OID_CODE_SIGNING = ExtendedKeyUsageOID.CODE_SIGNING -OID_EMAIL_PROTECTION = ExtendedKeyUsageOID.EMAIL_PROTECTION -OID_OCSP_SIGNING = ExtendedKeyUsageOID.OCSP_SIGNING -OID_SERVER_AUTH = ExtendedKeyUsageOID.SERVER_AUTH -OID_TIME_STAMPING = ExtendedKeyUsageOID.TIME_STAMPING - -OID_ANY_POLICY = CertificatePoliciesOID.ANY_POLICY -OID_CPS_QUALIFIER = CertificatePoliciesOID.CPS_QUALIFIER -OID_CPS_USER_NOTICE = CertificatePoliciesOID.CPS_USER_NOTICE - -OID_CERTIFICATE_ISSUER = CRLEntryExtensionOID.CERTIFICATE_ISSUER -OID_CRL_REASON = CRLEntryExtensionOID.CRL_REASON -OID_INVALIDITY_DATE = CRLEntryExtensionOID.INVALIDITY_DATE - -OID_CA_ISSUERS = AuthorityInformationAccessOID.CA_ISSUERS -OID_OCSP = AuthorityInformationAccessOID.OCSP - -__all__ = [ - "OID_CA_ISSUERS", - "OID_OCSP", - "AccessDescription", - "Admission", - "Admissions", - "Attribute", - "AttributeNotFound", - "Attributes", - "AuthorityInformationAccess", - "AuthorityKeyIdentifier", - "BasicConstraints", - "CRLDistributionPoints", - "CRLNumber", - "CRLReason", - "Certificate", - "CertificateBuilder", - "CertificateIssuer", - "CertificatePolicies", - "CertificateRevocationList", - "CertificateRevocationListBuilder", - "CertificateSigningRequest", - "CertificateSigningRequestBuilder", - "DNSName", - "DeltaCRLIndicator", - "DirectoryName", - "DistributionPoint", - "DuplicateExtension", - "ExtendedKeyUsage", - "Extension", - "ExtensionNotFound", - "ExtensionType", - "Extensions", - "FreshestCRL", - "GeneralName", - "GeneralNames", - "IPAddress", - "InhibitAnyPolicy", - "InvalidVersion", - "InvalidityDate", - "IssuerAlternativeName", - "IssuingDistributionPoint", - "KeyUsage", - "MSCertificateTemplate", - "Name", - "NameAttribute", - "NameConstraints", - "NameOID", - "NamingAuthority", - "NoticeReference", - "OCSPAcceptableResponses", - "OCSPNoCheck", - "OCSPNonce", - "ObjectIdentifier", - "OtherName", - "PolicyConstraints", - "PolicyInformation", - "PrecertPoison", - "PrecertificateSignedCertificateTimestamps", - "PrivateKeyUsagePeriod", - "ProfessionInfo", - "PublicKeyAlgorithmOID", - "RFC822Name", - "ReasonFlags", - "RegisteredID", - "RelativeDistinguishedName", - "RevokedCertificate", - "RevokedCertificateBuilder", - "SignatureAlgorithmOID", - "SignedCertificateTimestamps", - "SubjectAlternativeName", - "SubjectInformationAccess", - "SubjectKeyIdentifier", - "TLSFeature", - "TLSFeatureType", - "UniformResourceIdentifier", - "UnrecognizedExtension", - "UnsupportedGeneralNameType", - "UserNotice", - "Version", - "certificate_transparency", - "load_der_x509_certificate", - "load_der_x509_crl", - "load_der_x509_csr", - "load_pem_x509_certificate", - "load_pem_x509_certificates", - "load_pem_x509_crl", - "load_pem_x509_csr", - "random_serial_number", - "verification", - "verification", -] diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 38d159cf6d5c1a4763064a78ddf49139cc857a9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8442 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 Z=AaV_@1A!ZWW^}FbKJr64>4i?e*wUD<0Sw9 diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/certificate_transparency.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/certificate_transparency.cpython-312.pyc deleted file mode 100644 index c09479d536ed10ccedaffa7e4b3dccf54943943b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1408 zcmah}&2QX96rb_Oet37=5H)QTsgXsIz=zr-G$5j?A}m`JDQqCSAh1+fQ+syp#b3;f zqdKQX$^lNmDfHAc;(y>D;8JdpB~FM#Zb4ZtJuzcS#YEzU zC*oS)P>Y7+#3;g!Q)rG8C0-T^+;*JrG88`7EPTy_I^EvxaO>VycXQY)E`Pq;n?Lv! zoQX7^O)Ni&ur*0g5+yO-53DYKKo&B7xQF9CD-0f3Y0ms4e$QN8vuMEZtrWT6qA{kH zOY)Q@V}epYx5Ps&7ZVnY0v9ptFoI&5B7$Q#H`AQddB9S%IG`Oa4#DxY>ra&{$5*c% z?2yYd{j1Bhz|}98E0+wpsDFhC3qFV z=xC;)I`a|Jd71P*6b7C?N{Bw_4ymb?SB5^OxK!hZ$Yo*9?XgZd1$0Eu9lnU92eH0; zudA=G-F{zxXShAkSIsr!xw8Sr8~Poev6OCDmWMcD32!DQW`NnqOvu>s64&xs6k25D z3LiHqb_J_%ePG@;SHAbPq_X|qSyXYj zz-487(|#d6r~ql_N;NIn%KMKEq+~$G~MRnRE7}#rvZ5LAF%Ql z_-I;_;Ps!@k2ZeZm;w%`8icLy@sE=qCR4!Sw9$r_ep!05{CIf^I6PeeD{nu!|M>o& IV7aWu|DmW)i2wiq diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/extensions.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/extensions.cpython-312.pyc deleted file mode 100644 index aa75f72911e2fbc9e17726882c335e65509f49db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112565 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%0DSi8}!fY4E|j;!XSyIC``8fj!T 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

    0y2Ut`iftQ{++PXY zzDmv63~sjp++MiRVgk1oOIKw5Wny}6HZXG%OFJ6IOkKeeq$IT2lJGW(Y&}Ul8_m|e z4d(24?}S_M9$uD2UNl{&bsgQJPJzg7R+Ri}RLn8l3cQMi6f&OiR_U$%-~Ga3%j2x3 zrtOdTMbX;%bqhreFL~Ha2m#TZk68dwxCGPz(Xx6r9Z}Xm_;Zaqd%X(649(#|ARr|7 zzmMlrAjdosgN3^C37&il1x&L6mRdBPla^^6`QwVkUv)x|jW3`$iLz#!Mee=99GI*T zm7*c247Cu%iIkEscrw^B0h2SW85ft@y$MoKHgrR$W^b)mJb zH`kNeR_Fb+wtk<>tlM>D)xSKHIb`VQuVo_uVn&QCwIjWxI5}cB;9mKw#3RN$RK+s0 z%o^_G>1toqu78&}){nO&gs!EFzBawqm2q>wl(UKDY}Jat`uae)exrgv|Hhcpp4jX_ zEj4ja2gr>_1@AgWS^}E;Nj(L05gm4d5e^l)aPb+nST-9*EyiY}!j^wWOsD~|n!^0m zXRkba-L3)9ihVB1>eq)YiH{85amZ?hlu3M)JBXzN8MkVXIAB+o;~X6+j|IGOtGm{Z#D4% z<^LrLUZj9vgR1n!w3yIPBVFB30j;{Joh`Rn3a$|EPa$1XkFQZYHDqNz-`TiS!0PcN zFf4-H5h*}NkSszyzVS{o9GKibw9s%scrRIU=9u<^YMNb8>RN^)lU+LHcglGTnTi9y z>5!IbOKuVYJ&3Y9RND#HqzVDElPd1=ui^F9fF|V|vFdEnsk9UL(28J#&J}(UP~wAq zVat1QwZ*B*hj=dqYi*o{AX=t|s*RKCj^PV<&SGe+JT?vgQ!}Tg&jcsN2NDL$#3=bg zs>mihs`eyxi&dTEaZ|s4P}ASmo1xct7ZeAXtCF2;YZnwaeHEvE!$y9L^BxBE7KNT`4UJ4 z3?y#JM0N@vd4Nq@-|ASqK=oaPr?G;Q*LHK{+fTju)Xf98PT!vUi{QTv-k$ys{UP1< zB4jHLYMNZn|DTMn^v$Z{Ym#Hu<7>Gk=QYv7Pl;h$@GfnrU93rNWP^&tE9YN6Kfm#{ zt=G0HzWVok{WlB0UHWF}t#jY`!aHA3TKYq-{?x%oaB?qRs~>!@z^CUpuF`>2dct&^ zOc_o!8_>zpn!ht1Nz=9ubx{3)ic7Xz5`*efSDu=mdo6e^7)oyi`a!w?;9SebOT$gD z*19J21L@C+Kra&*0sD139B5GG!gEi_nViOb$wfVx_nOhDWg1CW(uYp6a~0zww>b)a zKvWJO@@3mH{CbvSnN3|$v(jqTS@CxcS=v>DMvRpEK3iB=*Tk+*AdI7;= z`Bi$P(&~}3@|meKb7x+dU=gxSCLM`r+sb!#jLu$|nwo&M(6Nq*F_{**qV21HM4la$ zsnJ9`SO3i1g|nbA2Tw7(qw5Thp5NHDwZq^|QyzuQRoGRX9=jlunLtzF`GHgFq8OXz zl>PMTJPLSnTtKlx3dm%yTuea;1#1vQi&JxlXnR6lOLx!*8!bw`1A~W5ZU)%sh|J$b zCEc1eg0ej^D$6ty$eSo2Y#4P9oG0fFXb$p0N*txctiJv|hbHDm97n{Ud=xeZ#{rniBN|_8d8=rVk$M+jmqJwnS1;z$PI+!08sbx}}g>tb;Jk!#1)%=o#vNPf+o}am02$@M?M#$!m zd5WZ_h`%Lf$9V}T-ih;amq+S}m)fP0`L%GrDwV{&6nATJx8#{0d+qsa&wpq`^xm3U zsppOjLHvMJDs8%)6Sv_M-*!flHqC!FZliPjDSHim^~P;D#UGQ(rA^l>;x?S(I}yxZ z;`qIt4N}7$8-n<-)QVRj8K?L^qxa4y-dl_Kp*S+!gbWd0Zs#BO4oIgZsrrtM!uS(* zkJNa%;p)08>*C-@V{C)XRS?dqQL<_xS^43tY9*_hBaKQ{BS$KftO|~_C|NBWsZ+A* zjQ7w}ckH9Cg<}!_iX3Q99qp(MHA5 zcvHQ%T5(iguQA`Nz9E+9F39+jFV@8wlqrs~dG%EfpI4RQsJfnKnXMcv%C1GhD&yrl zRc_-H@6Ra14{#W#dpkBsO?PYv?#WWKRCmXQ;NBBbgH%tIR*y=a zSKNk#d!LgINmADx8-?-DWeng}YO8dP534`%KK;)e@l)T(YmgP5!wIdrQQCA1x8W2& zLO-szCw}N3p|(7weIo&oPmQ0>@x9J1YB6xS_ky%p^4zf@xHl(_OBAQ@-jKbYe^3}d nkkO?w6Q}q|d{w3Mhd#ttRr<@jGp)9YK8e-pe_U8N+~oMbO=Pj& diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/general_name.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/general_name.cpython-312.pyc deleted file mode 100644 index 4b0446e9434fc83e601057a05bc8ff221f3449d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13087 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 diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/name.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/name.cpython-312.pyc deleted file mode 100644 index d8936c3d2d966a8f0f52f7f34eb442c1e77be8f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23217 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 aUwwh|zQ~T-|D?>@zt`~RHKqNBO#dHO&7(O0 diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/ocsp.cpython-312.pyc b/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/ocsp.cpython-312.pyc deleted file mode 100644 index e920759e05908e0a4ebbc10b1b4d41d5eef72c05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14979 zcmd5jYiwKBdH0f+6d#wOL`k%)m#L>kSEl@s9a~Op%aZ(vWIB=Tq-C436z`QqnGfaO zE7u~JR!&{i?g}*Bx>{WeG%F0unX@53h9N)tqrm>H!$4LVNL;9Zfd<&}XJ9H7-HiR% z_npK0Aj8;c(gC}+&iU?n-*dkAclaxh$Hl;vyU=kDuE$K)(BTfR_ldhCI;wErIl23Ue z9s)a(jVW)$%Q6<`0wXx@FoH|8F9)>w?hpk?zT*k^nqouYI3 z1cl9MqzlT&%_S6$bVK>`b;^6l*ghD$MIU<~DQktYHoYtW{m<3u-wWkab;|qJEWte= zVnvWu-LZ5!qr{X%CM}2I-Em0~rPxAJ3|ds%s**^`DtGJHp_5R>W#aM*)NmIk<}a#Tc;fQ(JIoF);K?ha zOPQ27x}1q+Qkk@vO^i;$)~qHKD7-1AZ;mDt3!^J*%2FnMG<5jLsGLy5gDbK4jo5Wj z9*s+DD@x|N6kAzZ8^wJa#Z3#XtVui!PLdV?WPH2Bl-#ZBQ;^)AlCYFi*WZ%?sQ&n# z2-b*A;39Ux7HJUd5yx6X(4qQ_J(9(FINDWNLe%^aH~2#WAuWE04B|sOB;lY_@<1*% zV&a8Fb{&D-1N)WrsuD!jhDh#r{}^Gv(f3fxhr$3 z^XlA}qO%iFrtz9xgRCuU{&)w64!Wa(kBc#*Xm{x&X*99Q?sIu{%g!_Zda6%P~rY zDj7zj7ul^;cq0Qm@lmDio9r4Bw1l%KCz97QQbJiu1yZZB5?Bxe^A{%$k6?P_$QaF! z9VhwG6Y!pqu(cmvyly2XSUsKZzUe=+j1Y?Zfq~{7j~=`udB>h zoUXE!;g66Fs*ggr%k@!cjRSINM6^MAHld8P2l`0ZF&wnl;s|%)%9Sa#VQ%`BD>HD^ z4cEdm;VZ9(Yfm|dLtp{|ijkWkLA>Vy?;E}A7a+NPfu1V1sakpE*4o+bn7(`N}JVO@aP8dsjbhNn$Q&pjjRYMDwQIJ^3ld~zSVD&RO9NNt--58@%Z&%Gu$~q1Bnz z!zoCgg3c#n*Jbj>+MWfQ3ICM( z;e1qww*MfnKsh0tShazABCmjofLRnZ8-R803+jUDDB;a?VuYzlUx1ONK}?X|RJUm* z(A;!lY7NXGPHZRR>TAAvtovGPWKqr!s z5eBq}N*~ae66u5zjb__x*k(wpIRU-oqad-?nO#5Q?AQoyIR>`9dpExD;8t<}iNgL9 zTi%n~zRrBtIY;@Y({EnWGpnN8npo}Yc( zw)ZagJy)rtA2P3&b?v{)Z8`RqD)|Rwns01*kHZ9|rWZlqyf@dEN|Cd^>S?m6F9(mOwM7$ zJ!GjSjIXo{ay7bwG>Ls`)IT)ABut)zKlvIYcbKx}xNYolU2=R=6f7ydjBjXR1y$Cfi9Y@N|2>F<XsZuT~Qk~t&LXDwZ z2&}+fXBMs1Du&P?Snk*&HKk5Qa0pgVHMr{5^i6OI9Msv&b%INFckrin4NUHIW3vCLGrVJFE`%AXqNDgCB99A%Y(u`Vhfi(P0^e2>y!R#4u~jJ8T%# zQU~xEGQ8^1Aj;|7hAAe)p`C&u)dsCCUjZsiQ8(IT85f6~gK!OUw%JZrApYa}-)q!@ z>Y*z`W))1))tQ{G&VY)iD}^~$As!VRX&G&_nnzOMyCe==- zA;PR0jZ`lzkI2i4?vd@QgHknZz6}$|cOU`G;u*f_`!C#kA@3e|$Q6gj3&Z32;q%+R zu6+09OUz&N(%SZ&;Aw&ijbqiv3>hpI}OHa3h~VOckT z`OEFkY_F3GwwKJrZMGiv=;POA7L>el+#+c6%epiYEaX%<)(<3QF{X zC>hiN`e#}ZuZxn}L@}DWnuz-7t(4pl*9hx;^0nF~CW4D&j9f zCKIh(NPv4u3CM{om=9D@*R|B3rn>_-@OV_aIR^PjC9pIJ<3>j6BS2IZlK3t>_LE z+<^y^CB6%&dC>Jc#=^TEd;CRDU%}J&ApUT4b7=h6o^jwMpied*2VD>KPOGO8w8o~s z67ZeN_b!(_-5cM0&-4CTp1%Y|MZT*5<27)|9XO|patGiB`h%R4aEErn9ZXIu)^J*V z7C(bwMKA08L7x@Whh<&FnMy4{la%CC>v#yRqd>1S z?$6nr^#}S&=9zcECD*5`9y*bLK%3T_$Y{$2-6m<|sj4CrpgQ$3)tX5N5^e#JPZZ;I z@%Bzd3$nwUH)BcF5eHu&c&(GF6H2Jpx<+t$5b5>GEHS|6sC=!cbD^ph{|HmdtB`;R zWoMc?HijMy6#K>sePdhRV+4!OZu%zj{KN;X?f1h!2)}*&Z^r+6{Nb(l{hO_4?>e^~ z{cm4-s1!%f6bMG6bfOrzF;?t6SU^m_{9bGE@I>M81c1Lh2}!M#s&HR&nt1924E?Y4l zJ3;ct&dwbhyzh2!wh+NWau)d2`omF(-T6-ds_k83@z&U|V5!!%c+J+V27@*GiB_=I z#+(a$9n085En}^n&`2$0?HzN$D>Q)B?5HYh5*$$G6kS@W&8LA4Vz zN2cZxRkKuw-WbeoQ(GIFO|pcPELSUA)b8%8^I^K-{VVL%2MMTB;2G%y!@E&8y#1Z< z>aMoGbvqdPpoAnF5_*d90(Q3k=~Z^NzO`UcqoPBedZIv6B*3CJ`dB_)pHE@zfJMCs z_Z+}4!a*3s4z7F0ql!}WhSM;Aa!wF$bxa^Atz&aTX&sg3QH8{)CEl-F;@ZgufSFa4 z1Bw?R=_+gss4h9ks9oKU5bl?R{xGV%hY&(9mGlNC-@qgc39wpp*bp{NnKI$5#L0*L zJ?Sha6PTQXM0G)I5+Y%^92pOn=r;|Zv&sP_P?{lckeVi{jR&N-BzZl zzr_2AlHF6_dr@JiPG(~q0(*Bly3Z3?a{INUp^mJTMZ1=Fc`2=r=Kd*+pSGr z&!bdhWIw%am62`2UXw`=rgR-VRxs*Lo;s%Y)7#gY-Uhv!O>f<_2U^p-SUSb!oI1_9 zjKE*c1$0!$42RM>Av!4S(!RmSO*984`?sJ%ieRE!t`rmD?TX-~QXBg%NT2GLba=2kP+X*O_nxE@=t*YbaGU=-;T;cPEu+7MX){i7;uD~k%ai{oN;z-U5z!g{FH>t z7b{n;%$B&A6jNeap&@7kabY&?f)>a)BD)6RkPJiJB;#HFb(;gY9w-&;R+O~> z+QL;g$B6=e*!wKYd@sO3S_z5c`Tjo5?MV(;NX@8M$0k%I5se-qEun*&2^cEGer7#bowgO24% z(i4I&eCM{j=c*}~ zxNVV0(N#;e$Yui9(;&@)Mi1&xyXcR{5}+L%gFIC>lRis5JL&(2+ZN~)FJIO?&v52) zwD~+Ei2wz86Fn?K0mY>22rXfPDmrz|)?gRG#RSw=J79@pC)-<(Xi#I)J+om0q5d>} z*E%RvF+>jB6^e~Lg~pydf8cE=Bs(=GiGI}ZH9E`xTX^|I|Erl*>&zW);xY9Y5_o0x z8LCVX9r5a+*we$<;3+g-p{V}@0z7?P1|6DNmnOK z1=p;$R{M9USxRpZcR_uyq9?dl=>2mHtI-G*?t`Wuz||^PkmmiZHf^!ytB4_JlLO0f z>B@93VL8*AzVmthJa~mQb%C0?W@qql!8^Ro_Z0bHfe$_$d$05TM6Kgpmm@HXe(*ns zm#XWhCV6909Z^=1$ILaVWD|~9^Q@wjH{`i)&4HBHRndBOX$~&msC9%p2^HaNTs4QY?}z2nVZ#YaD)+0C(Kz306j| zk~Kc!&5y3a#r=3(l;y?MWOm5BEX||w@pef>0u25_cm|ZYj*Zc+FTAkjJxw&dONOS0 zs$=I?&!J+^sRI0WgN6uK4fHDm5F0>rc)0KVfnRdJ6gIsxdB=vpf1mP~^X5=H??)Is_>LdIZr=|@bl9H)1oE(6+~V8V=sTFKWAf*ikO;;-#tybB zcl1?)8j!;%7}P+B1~m|(xAG98xAG98xAG98xAG9eTY2RcgjyL__f8u^7uk_Y90YP0 z9pfMf(KrY~G!B9gj6P8IAOxfDFMAPc!rOn%2>I~#UkgI5I8Pfwew=3yLSJDa=u&Dw zShiw*<_gIlJG*vBsAk9ug>9o{E99gQ@^W7z6k@Oia}2gXPAVZU2Y7gCJBC3aTz2bd zxd9;u&1H+rHp`ZJ4wbD4Ja)GI&W6B_6)Ha>l{8>Oh=wzf1;INRPA}Mx zKVVv1h1eYYfJs7uCLMxA^~N*FB-|s%pKgU>3vme*El{&fKS7dEX3#rYedhAeQY@Q_ zDWQc#8iT5GC@R5^T_hrEd+Id=xtfAN_)Srk(0#5}{m@Ap&1e*g$!jS)wAZW?acP*O$;Q91nGjcTXAyP^59<0OaQ-H;r9bR!Mm2kys& zFe>7;yM?bvTl8*a^)EnZz#q3;ZA)fiLKM9s=CHBquPv@<8$KKs9jV0G@Wk;v{ZZLz z>F=QoD2$Omgrsa`S@!oXhVB0?;z=1%C=hfGM6w-rpc_CnKGFyo4xs0 zc-NDEi~m8cp1g_6val!Tr7Ub^2lC_1%gg*;=KXZtHnMA&eTctT5&8w2%T?J1`1F$v zzM>F?I6(pvj3KTh6;UNsQ6n``Cw0*v4dD<+G)YsmNK3RyTXaZAbV*mZ#1%c#6MfRh zC_-WN8zzIiHmd&y#RwN2Dy1^ia3#}`TXZMJXuiq}o6p`9_a~W&mF6a&$+gm=ESm%Y zOH+7#d&;!oYaUR;7AoNZXJ!7@^yB+IX>`7KY?w^#(NKM}+=VQB$MS=eMx~*-0=`NrHZ~;9)A26`kAKfV0zQ4{u?EBiz7!`K| zoo|eaG~LAcIHo7|O2@w9;T2tJDxLr7N>k~)Mprn#Pm{#=f1p!qLKg>KtOWB86;(n> zcEY`>9dVWzn>=Fj$V>Rj+vIk>^7;7bGcVJmZvz<)pUG395e(~g`XPX>v@{8sx tp~5U-uk{^k!S+cXS^TMDjL+H#KRmDXaOE6b;tZm{4|<)-7e^0mgR>a0X!9T!)r$k;DDh9TSilr0pnu3Zjr_=Y|`@DPi`#vj*jG#LFVkgJq!i-xg4$npU>e{;1_au4fsM1uLHlB!yCXa zra2@>O_N{AoG(Hm_uXolh4`7-RA?W4$XZAel(m~3J4 zXAq%71A;TL6KxD|muB@zqoH`fvtBfc~V! zl0?(ATo>k4m?u2$rO_c6ZVFQ#H7rm3i1&hf}*3BdOz^6J_xM93w*re z=&Nu8kxKz?VSh_^oeg~$(|+LJY+t{jhYrP8hgSEM)x)8Fdc8VZFXXT*nVeaB7$24I zdVw9e_&%9~>ENTF@GZzef#bNJGU68Zk@5{a_=@iRC{`+bA|A{lsj*kxttP@)uI;Vt zuDp5uUivblrSg?T9M@+@buF!HiTWS2)*988(%Mp@jHSj%YNb*uDUBO*qsDUDSWc>A Zb!Mb4rs`r+88^?5ntBQq)d~AjzW^9U_xu0= diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/base.py b/venv/lib/python3.12/site-packages/cryptography/x509/base.py deleted file mode 100644 index 1be612b..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/x509/base.py +++ /dev/null @@ -1,848 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc -import datetime -import os -import typing -import warnings -from collections.abc import Iterable - -from cryptography import utils -from cryptography.hazmat.bindings._rust import x509 as rust_x509 -from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.primitives.asymmetric import ( - dsa, - ec, - ed448, - ed25519, - padding, - rsa, - x448, - x25519, -) -from cryptography.hazmat.primitives.asymmetric.types import ( - CertificateIssuerPrivateKeyTypes, - CertificatePublicKeyTypes, -) -from cryptography.x509.extensions import ( - Extension, - Extensions, - ExtensionType, - _make_sequence_methods, -) -from cryptography.x509.name import Name, _ASN1Type -from cryptography.x509.oid import ObjectIdentifier - -_EARLIEST_UTC_TIME = datetime.datetime(1950, 1, 1) - -# This must be kept in sync with sign.rs's list of allowable types in -# identify_hash_type -_AllowedHashTypes = typing.Union[ - hashes.SHA224, - hashes.SHA256, - hashes.SHA384, - hashes.SHA512, - hashes.SHA3_224, - hashes.SHA3_256, - hashes.SHA3_384, - hashes.SHA3_512, -] - - -class AttributeNotFound(Exception): - def __init__(self, msg: str, oid: ObjectIdentifier) -> None: - super().__init__(msg) - self.oid = oid - - -def _reject_duplicate_extension( - extension: Extension[ExtensionType], - extensions: list[Extension[ExtensionType]], -) -> None: - # This is quadratic in the number of extensions - for e in extensions: - if e.oid == extension.oid: - raise ValueError("This extension has already been set.") - - -def _reject_duplicate_attribute( - oid: ObjectIdentifier, - attributes: list[tuple[ObjectIdentifier, bytes, int | None]], -) -> None: - # This is quadratic in the number of attributes - for attr_oid, _, _ in attributes: - if attr_oid == oid: - raise ValueError("This attribute has already been set.") - - -def _convert_to_naive_utc_time(time: datetime.datetime) -> datetime.datetime: - """Normalizes a datetime to a naive datetime in UTC. - - time -- datetime to normalize. Assumed to be in UTC if not timezone - aware. - """ - if time.tzinfo is not None: - offset = time.utcoffset() - offset = offset if offset else datetime.timedelta() - return time.replace(tzinfo=None) - offset - else: - return time - - -class Attribute: - def __init__( - self, - oid: ObjectIdentifier, - value: bytes, - _type: int = _ASN1Type.UTF8String.value, - ) -> None: - self._oid = oid - self._value = value - self._type = _type - - @property - def oid(self) -> ObjectIdentifier: - return self._oid - - @property - def value(self) -> bytes: - return self._value - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, Attribute): - return NotImplemented - - return ( - self.oid == other.oid - and self.value == other.value - and self._type == other._type - ) - - def __hash__(self) -> int: - return hash((self.oid, self.value, self._type)) - - -class Attributes: - def __init__( - self, - attributes: Iterable[Attribute], - ) -> None: - self._attributes = list(attributes) - - __len__, __iter__, __getitem__ = _make_sequence_methods("_attributes") - - def __repr__(self) -> str: - return f"" - - def get_attribute_for_oid(self, oid: ObjectIdentifier) -> Attribute: - for attr in self: - if attr.oid == oid: - return attr - - raise AttributeNotFound(f"No {oid} attribute was found", oid) - - -class Version(utils.Enum): - v1 = 0 - v3 = 2 - - -class InvalidVersion(Exception): - def __init__(self, msg: str, parsed_version: int) -> None: - super().__init__(msg) - self.parsed_version = parsed_version - - -Certificate = rust_x509.Certificate - - -class RevokedCertificate(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def serial_number(self) -> int: - """ - Returns the serial number of the revoked certificate. - """ - - @property - @abc.abstractmethod - def revocation_date(self) -> datetime.datetime: - """ - Returns the date of when this certificate was revoked. - """ - - @property - @abc.abstractmethod - def revocation_date_utc(self) -> datetime.datetime: - """ - Returns the date of when this certificate was revoked as a non-naive - UTC datetime. - """ - - @property - @abc.abstractmethod - def extensions(self) -> Extensions: - """ - Returns an Extensions object containing a list of Revoked extensions. - """ - - -# Runtime isinstance checks need this since the rust class is not a subclass. -RevokedCertificate.register(rust_x509.RevokedCertificate) - - -class _RawRevokedCertificate(RevokedCertificate): - def __init__( - self, - serial_number: int, - revocation_date: datetime.datetime, - extensions: Extensions, - ): - self._serial_number = serial_number - self._revocation_date = revocation_date - self._extensions = extensions - - @property - def serial_number(self) -> int: - return self._serial_number - - @property - def revocation_date(self) -> datetime.datetime: - warnings.warn( - "Properties that return a naïve datetime object have been " - "deprecated. Please switch to revocation_date_utc.", - utils.DeprecatedIn42, - stacklevel=2, - ) - return self._revocation_date - - @property - def revocation_date_utc(self) -> datetime.datetime: - return self._revocation_date.replace(tzinfo=datetime.timezone.utc) - - @property - def extensions(self) -> Extensions: - return self._extensions - - -CertificateRevocationList = rust_x509.CertificateRevocationList -CertificateSigningRequest = rust_x509.CertificateSigningRequest - - -load_pem_x509_certificate = rust_x509.load_pem_x509_certificate -load_der_x509_certificate = rust_x509.load_der_x509_certificate - -load_pem_x509_certificates = rust_x509.load_pem_x509_certificates - -load_pem_x509_csr = rust_x509.load_pem_x509_csr -load_der_x509_csr = rust_x509.load_der_x509_csr - -load_pem_x509_crl = rust_x509.load_pem_x509_crl -load_der_x509_crl = rust_x509.load_der_x509_crl - - -class CertificateSigningRequestBuilder: - def __init__( - self, - subject_name: Name | None = None, - extensions: list[Extension[ExtensionType]] = [], - attributes: list[tuple[ObjectIdentifier, bytes, int | None]] = [], - ): - """ - Creates an empty X.509 certificate request (v1). - """ - self._subject_name = subject_name - self._extensions = extensions - self._attributes = attributes - - def subject_name(self, name: Name) -> CertificateSigningRequestBuilder: - """ - Sets the certificate requestor's distinguished name. - """ - if not isinstance(name, Name): - raise TypeError("Expecting x509.Name object.") - if self._subject_name is not None: - raise ValueError("The subject name may only be set once.") - return CertificateSigningRequestBuilder( - name, self._extensions, self._attributes - ) - - def add_extension( - self, extval: ExtensionType, critical: bool - ) -> CertificateSigningRequestBuilder: - """ - Adds an X.509 extension to the certificate request. - """ - if not isinstance(extval, ExtensionType): - raise TypeError("extension must be an ExtensionType") - - extension = Extension(extval.oid, critical, extval) - _reject_duplicate_extension(extension, self._extensions) - - return CertificateSigningRequestBuilder( - self._subject_name, - [*self._extensions, extension], - self._attributes, - ) - - def add_attribute( - self, - oid: ObjectIdentifier, - value: bytes, - *, - _tag: _ASN1Type | None = None, - ) -> CertificateSigningRequestBuilder: - """ - Adds an X.509 attribute with an OID and associated value. - """ - if not isinstance(oid, ObjectIdentifier): - raise TypeError("oid must be an ObjectIdentifier") - - if not isinstance(value, bytes): - raise TypeError("value must be bytes") - - if _tag is not None and not isinstance(_tag, _ASN1Type): - raise TypeError("tag must be _ASN1Type") - - _reject_duplicate_attribute(oid, self._attributes) - - if _tag is not None: - tag = _tag.value - else: - tag = None - - return CertificateSigningRequestBuilder( - self._subject_name, - self._extensions, - [*self._attributes, (oid, value, tag)], - ) - - def sign( - self, - private_key: CertificateIssuerPrivateKeyTypes, - algorithm: _AllowedHashTypes | None, - backend: typing.Any = None, - *, - rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, - ecdsa_deterministic: bool | None = None, - ) -> CertificateSigningRequest: - """ - Signs the request using the requestor's private key. - """ - if self._subject_name is None: - raise ValueError("A CertificateSigningRequest must have a subject") - - if rsa_padding is not None: - if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): - raise TypeError("Padding must be PSS or PKCS1v15") - if not isinstance(private_key, rsa.RSAPrivateKey): - raise TypeError("Padding is only supported for RSA keys") - - if ecdsa_deterministic is not None: - if not isinstance(private_key, ec.EllipticCurvePrivateKey): - raise TypeError( - "Deterministic ECDSA is only supported for EC keys" - ) - - return rust_x509.create_x509_csr( - self, - private_key, - algorithm, - rsa_padding, - ecdsa_deterministic, - ) - - -class CertificateBuilder: - _extensions: list[Extension[ExtensionType]] - - def __init__( - self, - issuer_name: Name | None = None, - subject_name: Name | None = None, - public_key: CertificatePublicKeyTypes | None = None, - serial_number: int | None = None, - not_valid_before: datetime.datetime | None = None, - not_valid_after: datetime.datetime | None = None, - extensions: list[Extension[ExtensionType]] = [], - ) -> None: - self._version = Version.v3 - self._issuer_name = issuer_name - self._subject_name = subject_name - self._public_key = public_key - self._serial_number = serial_number - self._not_valid_before = not_valid_before - self._not_valid_after = not_valid_after - self._extensions = extensions - - def issuer_name(self, name: Name) -> CertificateBuilder: - """ - Sets the CA's distinguished name. - """ - if not isinstance(name, Name): - raise TypeError("Expecting x509.Name object.") - if self._issuer_name is not None: - raise ValueError("The issuer name may only be set once.") - return CertificateBuilder( - name, - self._subject_name, - self._public_key, - self._serial_number, - self._not_valid_before, - self._not_valid_after, - self._extensions, - ) - - def subject_name(self, name: Name) -> CertificateBuilder: - """ - Sets the requestor's distinguished name. - """ - if not isinstance(name, Name): - raise TypeError("Expecting x509.Name object.") - if self._subject_name is not None: - raise ValueError("The subject name may only be set once.") - return CertificateBuilder( - self._issuer_name, - name, - self._public_key, - self._serial_number, - self._not_valid_before, - self._not_valid_after, - self._extensions, - ) - - def public_key( - self, - key: CertificatePublicKeyTypes, - ) -> CertificateBuilder: - """ - Sets the requestor's public key (as found in the signing request). - """ - if not isinstance( - key, - ( - dsa.DSAPublicKey, - rsa.RSAPublicKey, - ec.EllipticCurvePublicKey, - ed25519.Ed25519PublicKey, - ed448.Ed448PublicKey, - x25519.X25519PublicKey, - x448.X448PublicKey, - ), - ): - raise TypeError( - "Expecting one of DSAPublicKey, RSAPublicKey," - " EllipticCurvePublicKey, Ed25519PublicKey," - " Ed448PublicKey, X25519PublicKey, or " - "X448PublicKey." - ) - if self._public_key is not None: - raise ValueError("The public key may only be set once.") - return CertificateBuilder( - self._issuer_name, - self._subject_name, - key, - self._serial_number, - self._not_valid_before, - self._not_valid_after, - self._extensions, - ) - - def serial_number(self, number: int) -> CertificateBuilder: - """ - Sets the certificate serial number. - """ - if not isinstance(number, int): - raise TypeError("Serial number must be of integral type.") - if self._serial_number is not None: - raise ValueError("The serial number may only be set once.") - if number <= 0: - raise ValueError("The serial number should be positive.") - - # ASN.1 integers are always signed, so most significant bit must be - # zero. - if number.bit_length() >= 160: # As defined in RFC 5280 - raise ValueError( - "The serial number should not be more than 159 bits." - ) - return CertificateBuilder( - self._issuer_name, - self._subject_name, - self._public_key, - number, - self._not_valid_before, - self._not_valid_after, - self._extensions, - ) - - def not_valid_before(self, time: datetime.datetime) -> CertificateBuilder: - """ - Sets the certificate activation time. - """ - if not isinstance(time, datetime.datetime): - raise TypeError("Expecting datetime object.") - if self._not_valid_before is not None: - raise ValueError("The not valid before may only be set once.") - time = _convert_to_naive_utc_time(time) - if time < _EARLIEST_UTC_TIME: - raise ValueError( - "The not valid before date must be on or after" - " 1950 January 1)." - ) - if self._not_valid_after is not None and time > self._not_valid_after: - raise ValueError( - "The not valid before date must be before the not valid after " - "date." - ) - return CertificateBuilder( - self._issuer_name, - self._subject_name, - self._public_key, - self._serial_number, - time, - self._not_valid_after, - self._extensions, - ) - - def not_valid_after(self, time: datetime.datetime) -> CertificateBuilder: - """ - Sets the certificate expiration time. - """ - if not isinstance(time, datetime.datetime): - raise TypeError("Expecting datetime object.") - if self._not_valid_after is not None: - raise ValueError("The not valid after may only be set once.") - time = _convert_to_naive_utc_time(time) - if time < _EARLIEST_UTC_TIME: - raise ValueError( - "The not valid after date must be on or after 1950 January 1." - ) - if ( - self._not_valid_before is not None - and time < self._not_valid_before - ): - raise ValueError( - "The not valid after date must be after the not valid before " - "date." - ) - return CertificateBuilder( - self._issuer_name, - self._subject_name, - self._public_key, - self._serial_number, - self._not_valid_before, - time, - self._extensions, - ) - - def add_extension( - self, extval: ExtensionType, critical: bool - ) -> CertificateBuilder: - """ - Adds an X.509 extension to the certificate. - """ - if not isinstance(extval, ExtensionType): - raise TypeError("extension must be an ExtensionType") - - extension = Extension(extval.oid, critical, extval) - _reject_duplicate_extension(extension, self._extensions) - - return CertificateBuilder( - self._issuer_name, - self._subject_name, - self._public_key, - self._serial_number, - self._not_valid_before, - self._not_valid_after, - [*self._extensions, extension], - ) - - def sign( - self, - private_key: CertificateIssuerPrivateKeyTypes, - algorithm: _AllowedHashTypes | None, - backend: typing.Any = None, - *, - rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, - ecdsa_deterministic: bool | None = None, - ) -> Certificate: - """ - Signs the certificate using the CA's private key. - """ - if self._subject_name is None: - raise ValueError("A certificate must have a subject name") - - if self._issuer_name is None: - raise ValueError("A certificate must have an issuer name") - - if self._serial_number is None: - raise ValueError("A certificate must have a serial number") - - if self._not_valid_before is None: - raise ValueError("A certificate must have a not valid before time") - - if self._not_valid_after is None: - raise ValueError("A certificate must have a not valid after time") - - if self._public_key is None: - raise ValueError("A certificate must have a public key") - - if rsa_padding is not None: - if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): - raise TypeError("Padding must be PSS or PKCS1v15") - if not isinstance(private_key, rsa.RSAPrivateKey): - raise TypeError("Padding is only supported for RSA keys") - - if ecdsa_deterministic is not None: - if not isinstance(private_key, ec.EllipticCurvePrivateKey): - raise TypeError( - "Deterministic ECDSA is only supported for EC keys" - ) - - return rust_x509.create_x509_certificate( - self, - private_key, - algorithm, - rsa_padding, - ecdsa_deterministic, - ) - - -class CertificateRevocationListBuilder: - _extensions: list[Extension[ExtensionType]] - _revoked_certificates: list[RevokedCertificate] - - def __init__( - self, - issuer_name: Name | None = None, - last_update: datetime.datetime | None = None, - next_update: datetime.datetime | None = None, - extensions: list[Extension[ExtensionType]] = [], - revoked_certificates: list[RevokedCertificate] = [], - ): - self._issuer_name = issuer_name - self._last_update = last_update - self._next_update = next_update - self._extensions = extensions - self._revoked_certificates = revoked_certificates - - def issuer_name( - self, issuer_name: Name - ) -> CertificateRevocationListBuilder: - if not isinstance(issuer_name, Name): - raise TypeError("Expecting x509.Name object.") - if self._issuer_name is not None: - raise ValueError("The issuer name may only be set once.") - return CertificateRevocationListBuilder( - issuer_name, - self._last_update, - self._next_update, - self._extensions, - self._revoked_certificates, - ) - - def last_update( - self, last_update: datetime.datetime - ) -> CertificateRevocationListBuilder: - if not isinstance(last_update, datetime.datetime): - raise TypeError("Expecting datetime object.") - if self._last_update is not None: - raise ValueError("Last update may only be set once.") - last_update = _convert_to_naive_utc_time(last_update) - if last_update < _EARLIEST_UTC_TIME: - raise ValueError( - "The last update date must be on or after 1950 January 1." - ) - if self._next_update is not None and last_update > self._next_update: - raise ValueError( - "The last update date must be before the next update date." - ) - return CertificateRevocationListBuilder( - self._issuer_name, - last_update, - self._next_update, - self._extensions, - self._revoked_certificates, - ) - - def next_update( - self, next_update: datetime.datetime - ) -> CertificateRevocationListBuilder: - if not isinstance(next_update, datetime.datetime): - raise TypeError("Expecting datetime object.") - if self._next_update is not None: - raise ValueError("Last update may only be set once.") - next_update = _convert_to_naive_utc_time(next_update) - if next_update < _EARLIEST_UTC_TIME: - raise ValueError( - "The last update date must be on or after 1950 January 1." - ) - if self._last_update is not None and next_update < self._last_update: - raise ValueError( - "The next update date must be after the last update date." - ) - return CertificateRevocationListBuilder( - self._issuer_name, - self._last_update, - next_update, - self._extensions, - self._revoked_certificates, - ) - - def add_extension( - self, extval: ExtensionType, critical: bool - ) -> CertificateRevocationListBuilder: - """ - Adds an X.509 extension to the certificate revocation list. - """ - if not isinstance(extval, ExtensionType): - raise TypeError("extension must be an ExtensionType") - - extension = Extension(extval.oid, critical, extval) - _reject_duplicate_extension(extension, self._extensions) - return CertificateRevocationListBuilder( - self._issuer_name, - self._last_update, - self._next_update, - [*self._extensions, extension], - self._revoked_certificates, - ) - - def add_revoked_certificate( - self, revoked_certificate: RevokedCertificate - ) -> CertificateRevocationListBuilder: - """ - Adds a revoked certificate to the CRL. - """ - if not isinstance(revoked_certificate, RevokedCertificate): - raise TypeError("Must be an instance of RevokedCertificate") - - return CertificateRevocationListBuilder( - self._issuer_name, - self._last_update, - self._next_update, - self._extensions, - [*self._revoked_certificates, revoked_certificate], - ) - - def sign( - self, - private_key: CertificateIssuerPrivateKeyTypes, - algorithm: _AllowedHashTypes | None, - backend: typing.Any = None, - *, - rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, - ecdsa_deterministic: bool | None = None, - ) -> CertificateRevocationList: - if self._issuer_name is None: - raise ValueError("A CRL must have an issuer name") - - if self._last_update is None: - raise ValueError("A CRL must have a last update time") - - if self._next_update is None: - raise ValueError("A CRL must have a next update time") - - if rsa_padding is not None: - if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): - raise TypeError("Padding must be PSS or PKCS1v15") - if not isinstance(private_key, rsa.RSAPrivateKey): - raise TypeError("Padding is only supported for RSA keys") - - if ecdsa_deterministic is not None: - if not isinstance(private_key, ec.EllipticCurvePrivateKey): - raise TypeError( - "Deterministic ECDSA is only supported for EC keys" - ) - - return rust_x509.create_x509_crl( - self, - private_key, - algorithm, - rsa_padding, - ecdsa_deterministic, - ) - - -class RevokedCertificateBuilder: - def __init__( - self, - serial_number: int | None = None, - revocation_date: datetime.datetime | None = None, - extensions: list[Extension[ExtensionType]] = [], - ): - self._serial_number = serial_number - self._revocation_date = revocation_date - self._extensions = extensions - - def serial_number(self, number: int) -> RevokedCertificateBuilder: - if not isinstance(number, int): - raise TypeError("Serial number must be of integral type.") - if self._serial_number is not None: - raise ValueError("The serial number may only be set once.") - if number <= 0: - raise ValueError("The serial number should be positive") - - # ASN.1 integers are always signed, so most significant bit must be - # zero. - if number.bit_length() >= 160: # As defined in RFC 5280 - raise ValueError( - "The serial number should not be more than 159 bits." - ) - return RevokedCertificateBuilder( - number, self._revocation_date, self._extensions - ) - - def revocation_date( - self, time: datetime.datetime - ) -> RevokedCertificateBuilder: - if not isinstance(time, datetime.datetime): - raise TypeError("Expecting datetime object.") - if self._revocation_date is not None: - raise ValueError("The revocation date may only be set once.") - time = _convert_to_naive_utc_time(time) - if time < _EARLIEST_UTC_TIME: - raise ValueError( - "The revocation date must be on or after 1950 January 1." - ) - return RevokedCertificateBuilder( - self._serial_number, time, self._extensions - ) - - def add_extension( - self, extval: ExtensionType, critical: bool - ) -> RevokedCertificateBuilder: - if not isinstance(extval, ExtensionType): - raise TypeError("extension must be an ExtensionType") - - extension = Extension(extval.oid, critical, extval) - _reject_duplicate_extension(extension, self._extensions) - return RevokedCertificateBuilder( - self._serial_number, - self._revocation_date, - [*self._extensions, extension], - ) - - def build(self, backend: typing.Any = None) -> RevokedCertificate: - if self._serial_number is None: - raise ValueError("A revoked certificate must have a serial number") - if self._revocation_date is None: - raise ValueError( - "A revoked certificate must have a revocation date" - ) - return _RawRevokedCertificate( - self._serial_number, - self._revocation_date, - Extensions(self._extensions), - ) - - -def random_serial_number() -> int: - return int.from_bytes(os.urandom(20), "big") >> 1 diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/certificate_transparency.py b/venv/lib/python3.12/site-packages/cryptography/x509/certificate_transparency.py deleted file mode 100644 index fb66cc6..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/x509/certificate_transparency.py +++ /dev/null @@ -1,35 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -from cryptography import utils -from cryptography.hazmat.bindings._rust import x509 as rust_x509 - - -class LogEntryType(utils.Enum): - X509_CERTIFICATE = 0 - PRE_CERTIFICATE = 1 - - -class Version(utils.Enum): - v1 = 0 - - -class SignatureAlgorithm(utils.Enum): - """ - Signature algorithms that are valid for SCTs. - - These are exactly the same as SignatureAlgorithm in RFC 5246 (TLS 1.2). - - See: - """ - - ANONYMOUS = 0 - RSA = 1 - DSA = 2 - ECDSA = 3 - - -SignedCertificateTimestamp = rust_x509.Sct diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/extensions.py b/venv/lib/python3.12/site-packages/cryptography/x509/extensions.py deleted file mode 100644 index dfa472d..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/x509/extensions.py +++ /dev/null @@ -1,2528 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc -import datetime -import hashlib -import ipaddress -import typing -from collections.abc import Iterable, Iterator - -from cryptography import utils -from cryptography.hazmat.bindings._rust import asn1 -from cryptography.hazmat.bindings._rust import x509 as rust_x509 -from cryptography.hazmat.primitives import constant_time, serialization -from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurvePublicKey -from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicKey -from cryptography.hazmat.primitives.asymmetric.types import ( - CertificateIssuerPublicKeyTypes, - CertificatePublicKeyTypes, -) -from cryptography.x509.certificate_transparency import ( - SignedCertificateTimestamp, -) -from cryptography.x509.general_name import ( - DirectoryName, - DNSName, - GeneralName, - IPAddress, - OtherName, - RegisteredID, - RFC822Name, - UniformResourceIdentifier, - _IPAddressTypes, -) -from cryptography.x509.name import Name, RelativeDistinguishedName -from cryptography.x509.oid import ( - CRLEntryExtensionOID, - ExtensionOID, - ObjectIdentifier, - OCSPExtensionOID, -) - -ExtensionTypeVar = typing.TypeVar( - "ExtensionTypeVar", bound="ExtensionType", covariant=True -) - - -def _key_identifier_from_public_key( - public_key: CertificatePublicKeyTypes, -) -> bytes: - if isinstance(public_key, RSAPublicKey): - data = public_key.public_bytes( - serialization.Encoding.DER, - serialization.PublicFormat.PKCS1, - ) - elif isinstance(public_key, EllipticCurvePublicKey): - data = public_key.public_bytes( - serialization.Encoding.X962, - serialization.PublicFormat.UncompressedPoint, - ) - else: - # This is a very slow way to do this. - serialized = public_key.public_bytes( - serialization.Encoding.DER, - serialization.PublicFormat.SubjectPublicKeyInfo, - ) - data = asn1.parse_spki_for_data(serialized) - - return hashlib.sha1(data).digest() - - -def _make_sequence_methods(field_name: str): - def len_method(self) -> int: - return len(getattr(self, field_name)) - - def iter_method(self): - return iter(getattr(self, field_name)) - - def getitem_method(self, idx): - return getattr(self, field_name)[idx] - - return len_method, iter_method, getitem_method - - -class DuplicateExtension(Exception): - def __init__(self, msg: str, oid: ObjectIdentifier) -> None: - super().__init__(msg) - self.oid = oid - - -class ExtensionNotFound(Exception): - def __init__(self, msg: str, oid: ObjectIdentifier) -> None: - super().__init__(msg) - self.oid = oid - - -class ExtensionType(metaclass=abc.ABCMeta): - oid: typing.ClassVar[ObjectIdentifier] - - def public_bytes(self) -> bytes: - """ - Serializes the extension type to DER. - """ - raise NotImplementedError( - f"public_bytes is not implemented for extension type {self!r}" - ) - - -class Extensions: - def __init__(self, extensions: Iterable[Extension[ExtensionType]]) -> None: - self._extensions = list(extensions) - - def get_extension_for_oid( - self, oid: ObjectIdentifier - ) -> Extension[ExtensionType]: - for ext in self: - if ext.oid == oid: - return ext - - raise ExtensionNotFound(f"No {oid} extension was found", oid) - - def get_extension_for_class( - self, extclass: type[ExtensionTypeVar] - ) -> Extension[ExtensionTypeVar]: - if extclass is UnrecognizedExtension: - raise TypeError( - "UnrecognizedExtension can't be used with " - "get_extension_for_class because more than one instance of the" - " class may be present." - ) - - for ext in self: - if isinstance(ext.value, extclass): - return ext - - raise ExtensionNotFound( - f"No {extclass} extension was found", extclass.oid - ) - - __len__, __iter__, __getitem__ = _make_sequence_methods("_extensions") - - def __repr__(self) -> str: - return f"" - - -class CRLNumber(ExtensionType): - oid = ExtensionOID.CRL_NUMBER - - def __init__(self, crl_number: int) -> None: - if not isinstance(crl_number, int): - raise TypeError("crl_number must be an integer") - - self._crl_number = crl_number - - def __eq__(self, other: object) -> bool: - if not isinstance(other, CRLNumber): - return NotImplemented - - return self.crl_number == other.crl_number - - def __hash__(self) -> int: - return hash(self.crl_number) - - def __repr__(self) -> str: - return f"" - - @property - def crl_number(self) -> int: - return self._crl_number - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class AuthorityKeyIdentifier(ExtensionType): - oid = ExtensionOID.AUTHORITY_KEY_IDENTIFIER - - def __init__( - self, - key_identifier: bytes | None, - authority_cert_issuer: Iterable[GeneralName] | None, - authority_cert_serial_number: int | None, - ) -> None: - if (authority_cert_issuer is None) != ( - authority_cert_serial_number is None - ): - raise ValueError( - "authority_cert_issuer and authority_cert_serial_number " - "must both be present or both None" - ) - - if authority_cert_issuer is not None: - authority_cert_issuer = list(authority_cert_issuer) - if not all( - isinstance(x, GeneralName) for x in authority_cert_issuer - ): - raise TypeError( - "authority_cert_issuer must be a list of GeneralName " - "objects" - ) - - if authority_cert_serial_number is not None and not isinstance( - authority_cert_serial_number, int - ): - raise TypeError("authority_cert_serial_number must be an integer") - - self._key_identifier = key_identifier - self._authority_cert_issuer = authority_cert_issuer - self._authority_cert_serial_number = authority_cert_serial_number - - # This takes a subset of CertificatePublicKeyTypes because an issuer - # cannot have an X25519/X448 key. This introduces some unfortunate - # asymmetry that requires typing users to explicitly - # narrow their type, but we should make this accurate and not just - # convenient. - @classmethod - def from_issuer_public_key( - cls, public_key: CertificateIssuerPublicKeyTypes - ) -> AuthorityKeyIdentifier: - digest = _key_identifier_from_public_key(public_key) - return cls( - key_identifier=digest, - authority_cert_issuer=None, - authority_cert_serial_number=None, - ) - - @classmethod - def from_issuer_subject_key_identifier( - cls, ski: SubjectKeyIdentifier - ) -> AuthorityKeyIdentifier: - return cls( - key_identifier=ski.digest, - authority_cert_issuer=None, - authority_cert_serial_number=None, - ) - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, AuthorityKeyIdentifier): - return NotImplemented - - return ( - self.key_identifier == other.key_identifier - and self.authority_cert_issuer == other.authority_cert_issuer - and self.authority_cert_serial_number - == other.authority_cert_serial_number - ) - - def __hash__(self) -> int: - if self.authority_cert_issuer is None: - aci = None - else: - aci = tuple(self.authority_cert_issuer) - return hash( - (self.key_identifier, aci, self.authority_cert_serial_number) - ) - - @property - def key_identifier(self) -> bytes | None: - return self._key_identifier - - @property - def authority_cert_issuer( - self, - ) -> list[GeneralName] | None: - return self._authority_cert_issuer - - @property - def authority_cert_serial_number(self) -> int | None: - return self._authority_cert_serial_number - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class SubjectKeyIdentifier(ExtensionType): - oid = ExtensionOID.SUBJECT_KEY_IDENTIFIER - - def __init__(self, digest: bytes) -> None: - self._digest = digest - - @classmethod - def from_public_key( - cls, public_key: CertificatePublicKeyTypes - ) -> SubjectKeyIdentifier: - return cls(_key_identifier_from_public_key(public_key)) - - @property - def digest(self) -> bytes: - return self._digest - - @property - def key_identifier(self) -> bytes: - return self._digest - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, SubjectKeyIdentifier): - return NotImplemented - - return constant_time.bytes_eq(self.digest, other.digest) - - def __hash__(self) -> int: - return hash(self.digest) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class AuthorityInformationAccess(ExtensionType): - oid = ExtensionOID.AUTHORITY_INFORMATION_ACCESS - - def __init__(self, descriptions: Iterable[AccessDescription]) -> None: - descriptions = list(descriptions) - if not all(isinstance(x, AccessDescription) for x in descriptions): - raise TypeError( - "Every item in the descriptions list must be an " - "AccessDescription" - ) - - self._descriptions = descriptions - - __len__, __iter__, __getitem__ = _make_sequence_methods("_descriptions") - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, AuthorityInformationAccess): - return NotImplemented - - return self._descriptions == other._descriptions - - def __hash__(self) -> int: - return hash(tuple(self._descriptions)) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class SubjectInformationAccess(ExtensionType): - oid = ExtensionOID.SUBJECT_INFORMATION_ACCESS - - def __init__(self, descriptions: Iterable[AccessDescription]) -> None: - descriptions = list(descriptions) - if not all(isinstance(x, AccessDescription) for x in descriptions): - raise TypeError( - "Every item in the descriptions list must be an " - "AccessDescription" - ) - - self._descriptions = descriptions - - __len__, __iter__, __getitem__ = _make_sequence_methods("_descriptions") - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, SubjectInformationAccess): - return NotImplemented - - return self._descriptions == other._descriptions - - def __hash__(self) -> int: - return hash(tuple(self._descriptions)) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class AccessDescription: - def __init__( - self, access_method: ObjectIdentifier, access_location: GeneralName - ) -> None: - if not isinstance(access_method, ObjectIdentifier): - raise TypeError("access_method must be an ObjectIdentifier") - - if not isinstance(access_location, GeneralName): - raise TypeError("access_location must be a GeneralName") - - self._access_method = access_method - self._access_location = access_location - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, AccessDescription): - return NotImplemented - - return ( - self.access_method == other.access_method - and self.access_location == other.access_location - ) - - def __hash__(self) -> int: - return hash((self.access_method, self.access_location)) - - @property - def access_method(self) -> ObjectIdentifier: - return self._access_method - - @property - def access_location(self) -> GeneralName: - return self._access_location - - -class BasicConstraints(ExtensionType): - oid = ExtensionOID.BASIC_CONSTRAINTS - - def __init__(self, ca: bool, path_length: int | None) -> None: - if not isinstance(ca, bool): - raise TypeError("ca must be a boolean value") - - if path_length is not None and not ca: - raise ValueError("path_length must be None when ca is False") - - if path_length is not None and ( - not isinstance(path_length, int) or path_length < 0 - ): - raise TypeError( - "path_length must be a non-negative integer or None" - ) - - self._ca = ca - self._path_length = path_length - - @property - def ca(self) -> bool: - return self._ca - - @property - def path_length(self) -> int | None: - return self._path_length - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, BasicConstraints): - return NotImplemented - - return self.ca == other.ca and self.path_length == other.path_length - - def __hash__(self) -> int: - return hash((self.ca, self.path_length)) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class DeltaCRLIndicator(ExtensionType): - oid = ExtensionOID.DELTA_CRL_INDICATOR - - def __init__(self, crl_number: int) -> None: - if not isinstance(crl_number, int): - raise TypeError("crl_number must be an integer") - - self._crl_number = crl_number - - @property - def crl_number(self) -> int: - return self._crl_number - - def __eq__(self, other: object) -> bool: - if not isinstance(other, DeltaCRLIndicator): - return NotImplemented - - return self.crl_number == other.crl_number - - def __hash__(self) -> int: - return hash(self.crl_number) - - def __repr__(self) -> str: - return f"" - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class CRLDistributionPoints(ExtensionType): - oid = ExtensionOID.CRL_DISTRIBUTION_POINTS - - def __init__( - self, distribution_points: Iterable[DistributionPoint] - ) -> None: - distribution_points = list(distribution_points) - if not all( - isinstance(x, DistributionPoint) for x in distribution_points - ): - raise TypeError( - "distribution_points must be a list of DistributionPoint " - "objects" - ) - - self._distribution_points = distribution_points - - __len__, __iter__, __getitem__ = _make_sequence_methods( - "_distribution_points" - ) - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, CRLDistributionPoints): - return NotImplemented - - return self._distribution_points == other._distribution_points - - def __hash__(self) -> int: - return hash(tuple(self._distribution_points)) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class FreshestCRL(ExtensionType): - oid = ExtensionOID.FRESHEST_CRL - - def __init__( - self, distribution_points: Iterable[DistributionPoint] - ) -> None: - distribution_points = list(distribution_points) - if not all( - isinstance(x, DistributionPoint) for x in distribution_points - ): - raise TypeError( - "distribution_points must be a list of DistributionPoint " - "objects" - ) - - self._distribution_points = distribution_points - - __len__, __iter__, __getitem__ = _make_sequence_methods( - "_distribution_points" - ) - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, FreshestCRL): - return NotImplemented - - return self._distribution_points == other._distribution_points - - def __hash__(self) -> int: - return hash(tuple(self._distribution_points)) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class DistributionPoint: - def __init__( - self, - full_name: Iterable[GeneralName] | None, - relative_name: RelativeDistinguishedName | None, - reasons: frozenset[ReasonFlags] | None, - crl_issuer: Iterable[GeneralName] | None, - ) -> None: - if full_name and relative_name: - raise ValueError( - "You cannot provide both full_name and relative_name, at " - "least one must be None." - ) - if not full_name and not relative_name and not crl_issuer: - raise ValueError( - "Either full_name, relative_name or crl_issuer must be " - "provided." - ) - - if full_name is not None: - full_name = list(full_name) - if not all(isinstance(x, GeneralName) for x in full_name): - raise TypeError( - "full_name must be a list of GeneralName objects" - ) - - if relative_name: - if not isinstance(relative_name, RelativeDistinguishedName): - raise TypeError( - "relative_name must be a RelativeDistinguishedName" - ) - - if crl_issuer is not None: - crl_issuer = list(crl_issuer) - if not all(isinstance(x, GeneralName) for x in crl_issuer): - raise TypeError( - "crl_issuer must be None or a list of general names" - ) - - if reasons and ( - not isinstance(reasons, frozenset) - or not all(isinstance(x, ReasonFlags) for x in reasons) - ): - raise TypeError("reasons must be None or frozenset of ReasonFlags") - - if reasons and ( - ReasonFlags.unspecified in reasons - or ReasonFlags.remove_from_crl in reasons - ): - raise ValueError( - "unspecified and remove_from_crl are not valid reasons in a " - "DistributionPoint" - ) - - self._full_name = full_name - self._relative_name = relative_name - self._reasons = reasons - self._crl_issuer = crl_issuer - - def __repr__(self) -> str: - return ( - "".format(self) - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, DistributionPoint): - return NotImplemented - - return ( - self.full_name == other.full_name - and self.relative_name == other.relative_name - and self.reasons == other.reasons - and self.crl_issuer == other.crl_issuer - ) - - def __hash__(self) -> int: - if self.full_name is not None: - fn: tuple[GeneralName, ...] | None = tuple(self.full_name) - else: - fn = None - - if self.crl_issuer is not None: - crl_issuer: tuple[GeneralName, ...] | None = tuple(self.crl_issuer) - else: - crl_issuer = None - - return hash((fn, self.relative_name, self.reasons, crl_issuer)) - - @property - def full_name(self) -> list[GeneralName] | None: - return self._full_name - - @property - def relative_name(self) -> RelativeDistinguishedName | None: - return self._relative_name - - @property - def reasons(self) -> frozenset[ReasonFlags] | None: - return self._reasons - - @property - def crl_issuer(self) -> list[GeneralName] | None: - return self._crl_issuer - - -class ReasonFlags(utils.Enum): - unspecified = "unspecified" - key_compromise = "keyCompromise" - ca_compromise = "cACompromise" - affiliation_changed = "affiliationChanged" - superseded = "superseded" - cessation_of_operation = "cessationOfOperation" - certificate_hold = "certificateHold" - privilege_withdrawn = "privilegeWithdrawn" - aa_compromise = "aACompromise" - remove_from_crl = "removeFromCRL" - - -# These are distribution point bit string mappings. Not to be confused with -# CRLReason reason flags bit string mappings. -# ReasonFlags ::= BIT STRING { -# unused (0), -# keyCompromise (1), -# cACompromise (2), -# affiliationChanged (3), -# superseded (4), -# cessationOfOperation (5), -# certificateHold (6), -# privilegeWithdrawn (7), -# aACompromise (8) } -_REASON_BIT_MAPPING = { - 1: ReasonFlags.key_compromise, - 2: ReasonFlags.ca_compromise, - 3: ReasonFlags.affiliation_changed, - 4: ReasonFlags.superseded, - 5: ReasonFlags.cessation_of_operation, - 6: ReasonFlags.certificate_hold, - 7: ReasonFlags.privilege_withdrawn, - 8: ReasonFlags.aa_compromise, -} - -_CRLREASONFLAGS = { - ReasonFlags.key_compromise: 1, - ReasonFlags.ca_compromise: 2, - ReasonFlags.affiliation_changed: 3, - ReasonFlags.superseded: 4, - ReasonFlags.cessation_of_operation: 5, - ReasonFlags.certificate_hold: 6, - ReasonFlags.privilege_withdrawn: 7, - ReasonFlags.aa_compromise: 8, -} - -# CRLReason ::= ENUMERATED { -# unspecified (0), -# keyCompromise (1), -# cACompromise (2), -# affiliationChanged (3), -# superseded (4), -# cessationOfOperation (5), -# certificateHold (6), -# -- value 7 is not used -# removeFromCRL (8), -# privilegeWithdrawn (9), -# aACompromise (10) } -_CRL_ENTRY_REASON_ENUM_TO_CODE = { - ReasonFlags.unspecified: 0, - ReasonFlags.key_compromise: 1, - ReasonFlags.ca_compromise: 2, - ReasonFlags.affiliation_changed: 3, - ReasonFlags.superseded: 4, - ReasonFlags.cessation_of_operation: 5, - ReasonFlags.certificate_hold: 6, - ReasonFlags.remove_from_crl: 8, - ReasonFlags.privilege_withdrawn: 9, - ReasonFlags.aa_compromise: 10, -} - - -class PolicyConstraints(ExtensionType): - oid = ExtensionOID.POLICY_CONSTRAINTS - - def __init__( - self, - require_explicit_policy: int | None, - inhibit_policy_mapping: int | None, - ) -> None: - if require_explicit_policy is not None and not isinstance( - require_explicit_policy, int - ): - raise TypeError( - "require_explicit_policy must be a non-negative integer or " - "None" - ) - - if inhibit_policy_mapping is not None and not isinstance( - inhibit_policy_mapping, int - ): - raise TypeError( - "inhibit_policy_mapping must be a non-negative integer or None" - ) - - if inhibit_policy_mapping is None and require_explicit_policy is None: - raise ValueError( - "At least one of require_explicit_policy and " - "inhibit_policy_mapping must not be None" - ) - - self._require_explicit_policy = require_explicit_policy - self._inhibit_policy_mapping = inhibit_policy_mapping - - def __repr__(self) -> str: - return ( - "".format(self) - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, PolicyConstraints): - return NotImplemented - - return ( - self.require_explicit_policy == other.require_explicit_policy - and self.inhibit_policy_mapping == other.inhibit_policy_mapping - ) - - def __hash__(self) -> int: - return hash( - (self.require_explicit_policy, self.inhibit_policy_mapping) - ) - - @property - def require_explicit_policy(self) -> int | None: - return self._require_explicit_policy - - @property - def inhibit_policy_mapping(self) -> int | None: - return self._inhibit_policy_mapping - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class CertificatePolicies(ExtensionType): - oid = ExtensionOID.CERTIFICATE_POLICIES - - def __init__(self, policies: Iterable[PolicyInformation]) -> None: - policies = list(policies) - if not all(isinstance(x, PolicyInformation) for x in policies): - raise TypeError( - "Every item in the policies list must be a PolicyInformation" - ) - - self._policies = policies - - __len__, __iter__, __getitem__ = _make_sequence_methods("_policies") - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, CertificatePolicies): - return NotImplemented - - return self._policies == other._policies - - def __hash__(self) -> int: - return hash(tuple(self._policies)) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class PolicyInformation: - def __init__( - self, - policy_identifier: ObjectIdentifier, - policy_qualifiers: Iterable[str | UserNotice] | None, - ) -> None: - if not isinstance(policy_identifier, ObjectIdentifier): - raise TypeError("policy_identifier must be an ObjectIdentifier") - - self._policy_identifier = policy_identifier - - if policy_qualifiers is not None: - policy_qualifiers = list(policy_qualifiers) - if not all( - isinstance(x, (str, UserNotice)) for x in policy_qualifiers - ): - raise TypeError( - "policy_qualifiers must be a list of strings and/or " - "UserNotice objects or None" - ) - - self._policy_qualifiers = policy_qualifiers - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, PolicyInformation): - return NotImplemented - - return ( - self.policy_identifier == other.policy_identifier - and self.policy_qualifiers == other.policy_qualifiers - ) - - def __hash__(self) -> int: - if self.policy_qualifiers is not None: - pq = tuple(self.policy_qualifiers) - else: - pq = None - - return hash((self.policy_identifier, pq)) - - @property - def policy_identifier(self) -> ObjectIdentifier: - return self._policy_identifier - - @property - def policy_qualifiers( - self, - ) -> list[str | UserNotice] | None: - return self._policy_qualifiers - - -class UserNotice: - def __init__( - self, - notice_reference: NoticeReference | None, - explicit_text: str | None, - ) -> None: - if notice_reference and not isinstance( - notice_reference, NoticeReference - ): - raise TypeError( - "notice_reference must be None or a NoticeReference" - ) - - self._notice_reference = notice_reference - self._explicit_text = explicit_text - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, UserNotice): - return NotImplemented - - return ( - self.notice_reference == other.notice_reference - and self.explicit_text == other.explicit_text - ) - - def __hash__(self) -> int: - return hash((self.notice_reference, self.explicit_text)) - - @property - def notice_reference(self) -> NoticeReference | None: - return self._notice_reference - - @property - def explicit_text(self) -> str | None: - return self._explicit_text - - -class NoticeReference: - def __init__( - self, - organization: str | None, - notice_numbers: Iterable[int], - ) -> None: - self._organization = organization - notice_numbers = list(notice_numbers) - if not all(isinstance(x, int) for x in notice_numbers): - raise TypeError("notice_numbers must be a list of integers") - - self._notice_numbers = notice_numbers - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, NoticeReference): - return NotImplemented - - return ( - self.organization == other.organization - and self.notice_numbers == other.notice_numbers - ) - - def __hash__(self) -> int: - return hash((self.organization, tuple(self.notice_numbers))) - - @property - def organization(self) -> str | None: - return self._organization - - @property - def notice_numbers(self) -> list[int]: - return self._notice_numbers - - -class ExtendedKeyUsage(ExtensionType): - oid = ExtensionOID.EXTENDED_KEY_USAGE - - def __init__(self, usages: Iterable[ObjectIdentifier]) -> None: - usages = list(usages) - if not all(isinstance(x, ObjectIdentifier) for x in usages): - raise TypeError( - "Every item in the usages list must be an ObjectIdentifier" - ) - - self._usages = usages - - __len__, __iter__, __getitem__ = _make_sequence_methods("_usages") - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, ExtendedKeyUsage): - return NotImplemented - - return self._usages == other._usages - - def __hash__(self) -> int: - return hash(tuple(self._usages)) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class OCSPNoCheck(ExtensionType): - oid = ExtensionOID.OCSP_NO_CHECK - - def __eq__(self, other: object) -> bool: - if not isinstance(other, OCSPNoCheck): - return NotImplemented - - return True - - def __hash__(self) -> int: - return hash(OCSPNoCheck) - - def __repr__(self) -> str: - return "" - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class PrecertPoison(ExtensionType): - oid = ExtensionOID.PRECERT_POISON - - def __eq__(self, other: object) -> bool: - if not isinstance(other, PrecertPoison): - return NotImplemented - - return True - - def __hash__(self) -> int: - return hash(PrecertPoison) - - def __repr__(self) -> str: - return "" - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class TLSFeature(ExtensionType): - oid = ExtensionOID.TLS_FEATURE - - def __init__(self, features: Iterable[TLSFeatureType]) -> None: - features = list(features) - if ( - not all(isinstance(x, TLSFeatureType) for x in features) - or len(features) == 0 - ): - raise TypeError( - "features must be a list of elements from the TLSFeatureType " - "enum" - ) - - self._features = features - - __len__, __iter__, __getitem__ = _make_sequence_methods("_features") - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, TLSFeature): - return NotImplemented - - return self._features == other._features - - def __hash__(self) -> int: - return hash(tuple(self._features)) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class TLSFeatureType(utils.Enum): - # status_request is defined in RFC 6066 and is used for what is commonly - # called OCSP Must-Staple when present in the TLS Feature extension in an - # X.509 certificate. - status_request = 5 - # status_request_v2 is defined in RFC 6961 and allows multiple OCSP - # responses to be provided. It is not currently in use by clients or - # servers. - status_request_v2 = 17 - - -_TLS_FEATURE_TYPE_TO_ENUM = {x.value: x for x in TLSFeatureType} - - -class InhibitAnyPolicy(ExtensionType): - oid = ExtensionOID.INHIBIT_ANY_POLICY - - def __init__(self, skip_certs: int) -> None: - if not isinstance(skip_certs, int): - raise TypeError("skip_certs must be an integer") - - if skip_certs < 0: - raise ValueError("skip_certs must be a non-negative integer") - - self._skip_certs = skip_certs - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, InhibitAnyPolicy): - return NotImplemented - - return self.skip_certs == other.skip_certs - - def __hash__(self) -> int: - return hash(self.skip_certs) - - @property - def skip_certs(self) -> int: - return self._skip_certs - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class KeyUsage(ExtensionType): - oid = ExtensionOID.KEY_USAGE - - def __init__( - self, - digital_signature: bool, - content_commitment: bool, - key_encipherment: bool, - data_encipherment: bool, - key_agreement: bool, - key_cert_sign: bool, - crl_sign: bool, - encipher_only: bool, - decipher_only: bool, - ) -> None: - if not key_agreement and (encipher_only or decipher_only): - raise ValueError( - "encipher_only and decipher_only can only be true when " - "key_agreement is true" - ) - - self._digital_signature = digital_signature - self._content_commitment = content_commitment - self._key_encipherment = key_encipherment - self._data_encipherment = data_encipherment - self._key_agreement = key_agreement - self._key_cert_sign = key_cert_sign - self._crl_sign = crl_sign - self._encipher_only = encipher_only - self._decipher_only = decipher_only - - @property - def digital_signature(self) -> bool: - return self._digital_signature - - @property - def content_commitment(self) -> bool: - return self._content_commitment - - @property - def key_encipherment(self) -> bool: - return self._key_encipherment - - @property - def data_encipherment(self) -> bool: - return self._data_encipherment - - @property - def key_agreement(self) -> bool: - return self._key_agreement - - @property - def key_cert_sign(self) -> bool: - return self._key_cert_sign - - @property - def crl_sign(self) -> bool: - return self._crl_sign - - @property - def encipher_only(self) -> bool: - if not self.key_agreement: - raise ValueError( - "encipher_only is undefined unless key_agreement is true" - ) - else: - return self._encipher_only - - @property - def decipher_only(self) -> bool: - if not self.key_agreement: - raise ValueError( - "decipher_only is undefined unless key_agreement is true" - ) - else: - return self._decipher_only - - def __repr__(self) -> str: - try: - encipher_only = self.encipher_only - decipher_only = self.decipher_only - except ValueError: - # Users found None confusing because even though encipher/decipher - # have no meaning unless key_agreement is true, to construct an - # instance of the class you still need to pass False. - encipher_only = False - decipher_only = False - - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, KeyUsage): - return NotImplemented - - return ( - self.digital_signature == other.digital_signature - and self.content_commitment == other.content_commitment - and self.key_encipherment == other.key_encipherment - and self.data_encipherment == other.data_encipherment - and self.key_agreement == other.key_agreement - and self.key_cert_sign == other.key_cert_sign - and self.crl_sign == other.crl_sign - and self._encipher_only == other._encipher_only - and self._decipher_only == other._decipher_only - ) - - def __hash__(self) -> int: - return hash( - ( - self.digital_signature, - self.content_commitment, - self.key_encipherment, - self.data_encipherment, - self.key_agreement, - self.key_cert_sign, - self.crl_sign, - self._encipher_only, - self._decipher_only, - ) - ) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class PrivateKeyUsagePeriod(ExtensionType): - oid = ExtensionOID.PRIVATE_KEY_USAGE_PERIOD - - def __init__( - self, - not_before: datetime.datetime | None, - not_after: datetime.datetime | None, - ) -> None: - if ( - not isinstance(not_before, datetime.datetime) - and not_before is not None - ): - raise TypeError("not_before must be a datetime.datetime or None") - - if ( - not isinstance(not_after, datetime.datetime) - and not_after is not None - ): - raise TypeError("not_after must be a datetime.datetime or None") - - if not_before is None and not_after is None: - raise ValueError( - "At least one of not_before and not_after must not be None" - ) - - if ( - not_before is not None - and not_after is not None - and not_before > not_after - ): - raise ValueError("not_before must be before not_after") - - self._not_before = not_before - self._not_after = not_after - - @property - def not_before(self) -> datetime.datetime | None: - return self._not_before - - @property - def not_after(self) -> datetime.datetime | None: - return self._not_after - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, PrivateKeyUsagePeriod): - return NotImplemented - - return ( - self.not_before == other.not_before - and self.not_after == other.not_after - ) - - def __hash__(self) -> int: - return hash((self.not_before, self.not_after)) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class NameConstraints(ExtensionType): - oid = ExtensionOID.NAME_CONSTRAINTS - - def __init__( - self, - permitted_subtrees: Iterable[GeneralName] | None, - excluded_subtrees: Iterable[GeneralName] | None, - ) -> None: - if permitted_subtrees is not None: - permitted_subtrees = list(permitted_subtrees) - if not permitted_subtrees: - raise ValueError( - "permitted_subtrees must be a non-empty list or None" - ) - if not all(isinstance(x, GeneralName) for x in permitted_subtrees): - raise TypeError( - "permitted_subtrees must be a list of GeneralName objects " - "or None" - ) - - self._validate_tree(permitted_subtrees) - - if excluded_subtrees is not None: - excluded_subtrees = list(excluded_subtrees) - if not excluded_subtrees: - raise ValueError( - "excluded_subtrees must be a non-empty list or None" - ) - if not all(isinstance(x, GeneralName) for x in excluded_subtrees): - raise TypeError( - "excluded_subtrees must be a list of GeneralName objects " - "or None" - ) - - self._validate_tree(excluded_subtrees) - - if permitted_subtrees is None and excluded_subtrees is None: - raise ValueError( - "At least one of permitted_subtrees and excluded_subtrees " - "must not be None" - ) - - self._permitted_subtrees = permitted_subtrees - self._excluded_subtrees = excluded_subtrees - - def __eq__(self, other: object) -> bool: - if not isinstance(other, NameConstraints): - return NotImplemented - - return ( - self.excluded_subtrees == other.excluded_subtrees - and self.permitted_subtrees == other.permitted_subtrees - ) - - def _validate_tree(self, tree: Iterable[GeneralName]) -> None: - self._validate_ip_name(tree) - self._validate_dns_name(tree) - - def _validate_ip_name(self, tree: Iterable[GeneralName]) -> None: - if any( - isinstance(name, IPAddress) - and not isinstance( - name.value, (ipaddress.IPv4Network, ipaddress.IPv6Network) - ) - for name in tree - ): - raise TypeError( - "IPAddress name constraints must be an IPv4Network or" - " IPv6Network object" - ) - - def _validate_dns_name(self, tree: Iterable[GeneralName]) -> None: - if any( - isinstance(name, DNSName) and "*" in name.value for name in tree - ): - raise ValueError( - "DNSName name constraints must not contain the '*' wildcard" - " character" - ) - - def __repr__(self) -> str: - return ( - f"" - ) - - def __hash__(self) -> int: - if self.permitted_subtrees is not None: - ps: tuple[GeneralName, ...] | None = tuple(self.permitted_subtrees) - else: - ps = None - - if self.excluded_subtrees is not None: - es: tuple[GeneralName, ...] | None = tuple(self.excluded_subtrees) - else: - es = None - - return hash((ps, es)) - - @property - def permitted_subtrees( - self, - ) -> list[GeneralName] | None: - return self._permitted_subtrees - - @property - def excluded_subtrees( - self, - ) -> list[GeneralName] | None: - return self._excluded_subtrees - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class Extension(typing.Generic[ExtensionTypeVar]): - def __init__( - self, oid: ObjectIdentifier, critical: bool, value: ExtensionTypeVar - ) -> None: - if not isinstance(oid, ObjectIdentifier): - raise TypeError( - "oid argument must be an ObjectIdentifier instance." - ) - - if not isinstance(critical, bool): - raise TypeError("critical must be a boolean value") - - self._oid = oid - self._critical = critical - self._value = value - - @property - def oid(self) -> ObjectIdentifier: - return self._oid - - @property - def critical(self) -> bool: - return self._critical - - @property - def value(self) -> ExtensionTypeVar: - return self._value - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, Extension): - return NotImplemented - - return ( - self.oid == other.oid - and self.critical == other.critical - and self.value == other.value - ) - - def __hash__(self) -> int: - return hash((self.oid, self.critical, self.value)) - - -class GeneralNames: - def __init__(self, general_names: Iterable[GeneralName]) -> None: - general_names = list(general_names) - if not all(isinstance(x, GeneralName) for x in general_names): - raise TypeError( - "Every item in the general_names list must be an " - "object conforming to the GeneralName interface" - ) - - self._general_names = general_names - - __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") - - @typing.overload - def get_values_for_type( - self, - type: type[DNSName] - | type[UniformResourceIdentifier] - | type[RFC822Name], - ) -> list[str]: ... - - @typing.overload - def get_values_for_type( - self, - type: type[DirectoryName], - ) -> list[Name]: ... - - @typing.overload - def get_values_for_type( - self, - type: type[RegisteredID], - ) -> list[ObjectIdentifier]: ... - - @typing.overload - def get_values_for_type( - self, type: type[IPAddress] - ) -> list[_IPAddressTypes]: ... - - @typing.overload - def get_values_for_type( - self, type: type[OtherName] - ) -> list[OtherName]: ... - - def get_values_for_type( - self, - type: type[DNSName] - | type[DirectoryName] - | type[IPAddress] - | type[OtherName] - | type[RFC822Name] - | type[RegisteredID] - | type[UniformResourceIdentifier], - ) -> ( - list[_IPAddressTypes] - | list[str] - | list[OtherName] - | list[Name] - | list[ObjectIdentifier] - ): - # Return the value of each GeneralName, except for OtherName instances - # which we return directly because it has two important properties not - # just one value. - objs = (i for i in self if isinstance(i, type)) - if type != OtherName: - return [i.value for i in objs] - return list(objs) - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, GeneralNames): - return NotImplemented - - return self._general_names == other._general_names - - def __hash__(self) -> int: - return hash(tuple(self._general_names)) - - -class SubjectAlternativeName(ExtensionType): - oid = ExtensionOID.SUBJECT_ALTERNATIVE_NAME - - def __init__(self, general_names: Iterable[GeneralName]) -> None: - self._general_names = GeneralNames(general_names) - - __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") - - @typing.overload - def get_values_for_type( - self, - type: type[DNSName] - | type[UniformResourceIdentifier] - | type[RFC822Name], - ) -> list[str]: ... - - @typing.overload - def get_values_for_type( - self, - type: type[DirectoryName], - ) -> list[Name]: ... - - @typing.overload - def get_values_for_type( - self, - type: type[RegisteredID], - ) -> list[ObjectIdentifier]: ... - - @typing.overload - def get_values_for_type( - self, type: type[IPAddress] - ) -> list[_IPAddressTypes]: ... - - @typing.overload - def get_values_for_type( - self, type: type[OtherName] - ) -> list[OtherName]: ... - - def get_values_for_type( - self, - type: type[DNSName] - | type[DirectoryName] - | type[IPAddress] - | type[OtherName] - | type[RFC822Name] - | type[RegisteredID] - | type[UniformResourceIdentifier], - ) -> ( - list[_IPAddressTypes] - | list[str] - | list[OtherName] - | list[Name] - | list[ObjectIdentifier] - ): - return self._general_names.get_values_for_type(type) - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, SubjectAlternativeName): - return NotImplemented - - return self._general_names == other._general_names - - def __hash__(self) -> int: - return hash(self._general_names) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class IssuerAlternativeName(ExtensionType): - oid = ExtensionOID.ISSUER_ALTERNATIVE_NAME - - def __init__(self, general_names: Iterable[GeneralName]) -> None: - self._general_names = GeneralNames(general_names) - - __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") - - @typing.overload - def get_values_for_type( - self, - type: type[DNSName] - | type[UniformResourceIdentifier] - | type[RFC822Name], - ) -> list[str]: ... - - @typing.overload - def get_values_for_type( - self, - type: type[DirectoryName], - ) -> list[Name]: ... - - @typing.overload - def get_values_for_type( - self, - type: type[RegisteredID], - ) -> list[ObjectIdentifier]: ... - - @typing.overload - def get_values_for_type( - self, type: type[IPAddress] - ) -> list[_IPAddressTypes]: ... - - @typing.overload - def get_values_for_type( - self, type: type[OtherName] - ) -> list[OtherName]: ... - - def get_values_for_type( - self, - type: type[DNSName] - | type[DirectoryName] - | type[IPAddress] - | type[OtherName] - | type[RFC822Name] - | type[RegisteredID] - | type[UniformResourceIdentifier], - ) -> ( - list[_IPAddressTypes] - | list[str] - | list[OtherName] - | list[Name] - | list[ObjectIdentifier] - ): - return self._general_names.get_values_for_type(type) - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, IssuerAlternativeName): - return NotImplemented - - return self._general_names == other._general_names - - def __hash__(self) -> int: - return hash(self._general_names) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class CertificateIssuer(ExtensionType): - oid = CRLEntryExtensionOID.CERTIFICATE_ISSUER - - def __init__(self, general_names: Iterable[GeneralName]) -> None: - self._general_names = GeneralNames(general_names) - - __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") - - @typing.overload - def get_values_for_type( - self, - type: type[DNSName] - | type[UniformResourceIdentifier] - | type[RFC822Name], - ) -> list[str]: ... - - @typing.overload - def get_values_for_type( - self, - type: type[DirectoryName], - ) -> list[Name]: ... - - @typing.overload - def get_values_for_type( - self, - type: type[RegisteredID], - ) -> list[ObjectIdentifier]: ... - - @typing.overload - def get_values_for_type( - self, type: type[IPAddress] - ) -> list[_IPAddressTypes]: ... - - @typing.overload - def get_values_for_type( - self, type: type[OtherName] - ) -> list[OtherName]: ... - - def get_values_for_type( - self, - type: type[DNSName] - | type[DirectoryName] - | type[IPAddress] - | type[OtherName] - | type[RFC822Name] - | type[RegisteredID] - | type[UniformResourceIdentifier], - ) -> ( - list[_IPAddressTypes] - | list[str] - | list[OtherName] - | list[Name] - | list[ObjectIdentifier] - ): - return self._general_names.get_values_for_type(type) - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, CertificateIssuer): - return NotImplemented - - return self._general_names == other._general_names - - def __hash__(self) -> int: - return hash(self._general_names) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class CRLReason(ExtensionType): - oid = CRLEntryExtensionOID.CRL_REASON - - def __init__(self, reason: ReasonFlags) -> None: - if not isinstance(reason, ReasonFlags): - raise TypeError("reason must be an element from ReasonFlags") - - self._reason = reason - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, CRLReason): - return NotImplemented - - return self.reason == other.reason - - def __hash__(self) -> int: - return hash(self.reason) - - @property - def reason(self) -> ReasonFlags: - return self._reason - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class InvalidityDate(ExtensionType): - oid = CRLEntryExtensionOID.INVALIDITY_DATE - - def __init__(self, invalidity_date: datetime.datetime) -> None: - if not isinstance(invalidity_date, datetime.datetime): - raise TypeError("invalidity_date must be a datetime.datetime") - - self._invalidity_date = invalidity_date - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, InvalidityDate): - return NotImplemented - - return self.invalidity_date == other.invalidity_date - - def __hash__(self) -> int: - return hash(self.invalidity_date) - - @property - def invalidity_date(self) -> datetime.datetime: - return self._invalidity_date - - @property - def invalidity_date_utc(self) -> datetime.datetime: - if self._invalidity_date.tzinfo is None: - return self._invalidity_date.replace(tzinfo=datetime.timezone.utc) - else: - return self._invalidity_date.astimezone(tz=datetime.timezone.utc) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class PrecertificateSignedCertificateTimestamps(ExtensionType): - oid = ExtensionOID.PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS - - def __init__( - self, - signed_certificate_timestamps: Iterable[SignedCertificateTimestamp], - ) -> None: - signed_certificate_timestamps = list(signed_certificate_timestamps) - if not all( - isinstance(sct, SignedCertificateTimestamp) - for sct in signed_certificate_timestamps - ): - raise TypeError( - "Every item in the signed_certificate_timestamps list must be " - "a SignedCertificateTimestamp" - ) - self._signed_certificate_timestamps = signed_certificate_timestamps - - __len__, __iter__, __getitem__ = _make_sequence_methods( - "_signed_certificate_timestamps" - ) - - def __repr__(self) -> str: - return f"" - - def __hash__(self) -> int: - return hash(tuple(self._signed_certificate_timestamps)) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, PrecertificateSignedCertificateTimestamps): - return NotImplemented - - return ( - self._signed_certificate_timestamps - == other._signed_certificate_timestamps - ) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class SignedCertificateTimestamps(ExtensionType): - oid = ExtensionOID.SIGNED_CERTIFICATE_TIMESTAMPS - - def __init__( - self, - signed_certificate_timestamps: Iterable[SignedCertificateTimestamp], - ) -> None: - signed_certificate_timestamps = list(signed_certificate_timestamps) - if not all( - isinstance(sct, SignedCertificateTimestamp) - for sct in signed_certificate_timestamps - ): - raise TypeError( - "Every item in the signed_certificate_timestamps list must be " - "a SignedCertificateTimestamp" - ) - self._signed_certificate_timestamps = signed_certificate_timestamps - - __len__, __iter__, __getitem__ = _make_sequence_methods( - "_signed_certificate_timestamps" - ) - - def __repr__(self) -> str: - return f"" - - def __hash__(self) -> int: - return hash(tuple(self._signed_certificate_timestamps)) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, SignedCertificateTimestamps): - return NotImplemented - - return ( - self._signed_certificate_timestamps - == other._signed_certificate_timestamps - ) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class OCSPNonce(ExtensionType): - oid = OCSPExtensionOID.NONCE - - def __init__(self, nonce: bytes) -> None: - if not isinstance(nonce, bytes): - raise TypeError("nonce must be bytes") - - self._nonce = nonce - - def __eq__(self, other: object) -> bool: - if not isinstance(other, OCSPNonce): - return NotImplemented - - return self.nonce == other.nonce - - def __hash__(self) -> int: - return hash(self.nonce) - - def __repr__(self) -> str: - return f"" - - @property - def nonce(self) -> bytes: - return self._nonce - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class OCSPAcceptableResponses(ExtensionType): - oid = OCSPExtensionOID.ACCEPTABLE_RESPONSES - - def __init__(self, responses: Iterable[ObjectIdentifier]) -> None: - responses = list(responses) - if any(not isinstance(r, ObjectIdentifier) for r in responses): - raise TypeError("All responses must be ObjectIdentifiers") - - self._responses = responses - - def __eq__(self, other: object) -> bool: - if not isinstance(other, OCSPAcceptableResponses): - return NotImplemented - - return self._responses == other._responses - - def __hash__(self) -> int: - return hash(tuple(self._responses)) - - def __repr__(self) -> str: - return f"" - - def __iter__(self) -> Iterator[ObjectIdentifier]: - return iter(self._responses) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class IssuingDistributionPoint(ExtensionType): - oid = ExtensionOID.ISSUING_DISTRIBUTION_POINT - - def __init__( - self, - full_name: Iterable[GeneralName] | None, - relative_name: RelativeDistinguishedName | None, - only_contains_user_certs: bool, - only_contains_ca_certs: bool, - only_some_reasons: frozenset[ReasonFlags] | None, - indirect_crl: bool, - only_contains_attribute_certs: bool, - ) -> None: - if full_name is not None: - full_name = list(full_name) - - if only_some_reasons and ( - not isinstance(only_some_reasons, frozenset) - or not all(isinstance(x, ReasonFlags) for x in only_some_reasons) - ): - raise TypeError( - "only_some_reasons must be None or frozenset of ReasonFlags" - ) - - if only_some_reasons and ( - ReasonFlags.unspecified in only_some_reasons - or ReasonFlags.remove_from_crl in only_some_reasons - ): - raise ValueError( - "unspecified and remove_from_crl are not valid reasons in an " - "IssuingDistributionPoint" - ) - - if not ( - isinstance(only_contains_user_certs, bool) - and isinstance(only_contains_ca_certs, bool) - and isinstance(indirect_crl, bool) - and isinstance(only_contains_attribute_certs, bool) - ): - raise TypeError( - "only_contains_user_certs, only_contains_ca_certs, " - "indirect_crl and only_contains_attribute_certs " - "must all be boolean." - ) - - # Per RFC5280 Section 5.2.5, the Issuing Distribution Point extension - # in a CRL can have only one of onlyContainsUserCerts, - # onlyContainsCACerts, onlyContainsAttributeCerts set to TRUE. - crl_constraints = [ - only_contains_user_certs, - only_contains_ca_certs, - only_contains_attribute_certs, - ] - - if len([x for x in crl_constraints if x]) > 1: - raise ValueError( - "Only one of the following can be set to True: " - "only_contains_user_certs, only_contains_ca_certs, " - "only_contains_attribute_certs" - ) - - if not any( - [ - only_contains_user_certs, - only_contains_ca_certs, - indirect_crl, - only_contains_attribute_certs, - full_name, - relative_name, - only_some_reasons, - ] - ): - raise ValueError( - "Cannot create empty extension: " - "if only_contains_user_certs, only_contains_ca_certs, " - "indirect_crl, and only_contains_attribute_certs are all False" - ", then either full_name, relative_name, or only_some_reasons " - "must have a value." - ) - - self._only_contains_user_certs = only_contains_user_certs - self._only_contains_ca_certs = only_contains_ca_certs - self._indirect_crl = indirect_crl - self._only_contains_attribute_certs = only_contains_attribute_certs - self._only_some_reasons = only_some_reasons - self._full_name = full_name - self._relative_name = relative_name - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, IssuingDistributionPoint): - return NotImplemented - - return ( - self.full_name == other.full_name - and self.relative_name == other.relative_name - and self.only_contains_user_certs == other.only_contains_user_certs - and self.only_contains_ca_certs == other.only_contains_ca_certs - and self.only_some_reasons == other.only_some_reasons - and self.indirect_crl == other.indirect_crl - and self.only_contains_attribute_certs - == other.only_contains_attribute_certs - ) - - def __hash__(self) -> int: - return hash( - ( - self.full_name, - self.relative_name, - self.only_contains_user_certs, - self.only_contains_ca_certs, - self.only_some_reasons, - self.indirect_crl, - self.only_contains_attribute_certs, - ) - ) - - @property - def full_name(self) -> list[GeneralName] | None: - return self._full_name - - @property - def relative_name(self) -> RelativeDistinguishedName | None: - return self._relative_name - - @property - def only_contains_user_certs(self) -> bool: - return self._only_contains_user_certs - - @property - def only_contains_ca_certs(self) -> bool: - return self._only_contains_ca_certs - - @property - def only_some_reasons( - self, - ) -> frozenset[ReasonFlags] | None: - return self._only_some_reasons - - @property - def indirect_crl(self) -> bool: - return self._indirect_crl - - @property - def only_contains_attribute_certs(self) -> bool: - return self._only_contains_attribute_certs - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class MSCertificateTemplate(ExtensionType): - oid = ExtensionOID.MS_CERTIFICATE_TEMPLATE - - def __init__( - self, - template_id: ObjectIdentifier, - major_version: int | None, - minor_version: int | None, - ) -> None: - if not isinstance(template_id, ObjectIdentifier): - raise TypeError("oid must be an ObjectIdentifier") - self._template_id = template_id - if ( - major_version is not None and not isinstance(major_version, int) - ) or ( - minor_version is not None and not isinstance(minor_version, int) - ): - raise TypeError( - "major_version and minor_version must be integers or None" - ) - self._major_version = major_version - self._minor_version = minor_version - - @property - def template_id(self) -> ObjectIdentifier: - return self._template_id - - @property - def major_version(self) -> int | None: - return self._major_version - - @property - def minor_version(self) -> int | None: - return self._minor_version - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, MSCertificateTemplate): - return NotImplemented - - return ( - self.template_id == other.template_id - and self.major_version == other.major_version - and self.minor_version == other.minor_version - ) - - def __hash__(self) -> int: - return hash((self.template_id, self.major_version, self.minor_version)) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class NamingAuthority: - def __init__( - self, - id: ObjectIdentifier | None, - url: str | None, - text: str | None, - ) -> None: - if id is not None and not isinstance(id, ObjectIdentifier): - raise TypeError("id must be an ObjectIdentifier") - - if url is not None and not isinstance(url, str): - raise TypeError("url must be a str") - - if text is not None and not isinstance(text, str): - raise TypeError("text must be a str") - - self._id = id - self._url = url - self._text = text - - @property - def id(self) -> ObjectIdentifier | None: - return self._id - - @property - def url(self) -> str | None: - return self._url - - @property - def text(self) -> str | None: - return self._text - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, NamingAuthority): - return NotImplemented - - return ( - self.id == other.id - and self.url == other.url - and self.text == other.text - ) - - def __hash__(self) -> int: - return hash( - ( - self.id, - self.url, - self.text, - ) - ) - - -class ProfessionInfo: - def __init__( - self, - naming_authority: NamingAuthority | None, - profession_items: Iterable[str], - profession_oids: Iterable[ObjectIdentifier] | None, - registration_number: str | None, - add_profession_info: bytes | None, - ) -> None: - if naming_authority is not None and not isinstance( - naming_authority, NamingAuthority - ): - raise TypeError("naming_authority must be a NamingAuthority") - - profession_items = list(profession_items) - if not all(isinstance(item, str) for item in profession_items): - raise TypeError( - "Every item in the profession_items list must be a str" - ) - - if profession_oids is not None: - profession_oids = list(profession_oids) - if not all( - isinstance(oid, ObjectIdentifier) for oid in profession_oids - ): - raise TypeError( - "Every item in the profession_oids list must be an " - "ObjectIdentifier" - ) - - if registration_number is not None and not isinstance( - registration_number, str - ): - raise TypeError("registration_number must be a str") - - if add_profession_info is not None and not isinstance( - add_profession_info, bytes - ): - raise TypeError("add_profession_info must be bytes") - - self._naming_authority = naming_authority - self._profession_items = profession_items - self._profession_oids = profession_oids - self._registration_number = registration_number - self._add_profession_info = add_profession_info - - @property - def naming_authority(self) -> NamingAuthority | None: - return self._naming_authority - - @property - def profession_items(self) -> list[str]: - return self._profession_items - - @property - def profession_oids(self) -> list[ObjectIdentifier] | None: - return self._profession_oids - - @property - def registration_number(self) -> str | None: - return self._registration_number - - @property - def add_profession_info(self) -> bytes | None: - return self._add_profession_info - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, ProfessionInfo): - return NotImplemented - - return ( - self.naming_authority == other.naming_authority - and self.profession_items == other.profession_items - and self.profession_oids == other.profession_oids - and self.registration_number == other.registration_number - and self.add_profession_info == other.add_profession_info - ) - - def __hash__(self) -> int: - if self.profession_oids is not None: - profession_oids = tuple(self.profession_oids) - else: - profession_oids = None - return hash( - ( - self.naming_authority, - tuple(self.profession_items), - profession_oids, - self.registration_number, - self.add_profession_info, - ) - ) - - -class Admission: - def __init__( - self, - admission_authority: GeneralName | None, - naming_authority: NamingAuthority | None, - profession_infos: Iterable[ProfessionInfo], - ) -> None: - if admission_authority is not None and not isinstance( - admission_authority, GeneralName - ): - raise TypeError("admission_authority must be a GeneralName") - - if naming_authority is not None and not isinstance( - naming_authority, NamingAuthority - ): - raise TypeError("naming_authority must be a NamingAuthority") - - profession_infos = list(profession_infos) - if not all( - isinstance(info, ProfessionInfo) for info in profession_infos - ): - raise TypeError( - "Every item in the profession_infos list must be a " - "ProfessionInfo" - ) - - self._admission_authority = admission_authority - self._naming_authority = naming_authority - self._profession_infos = profession_infos - - @property - def admission_authority(self) -> GeneralName | None: - return self._admission_authority - - @property - def naming_authority(self) -> NamingAuthority | None: - return self._naming_authority - - @property - def profession_infos(self) -> list[ProfessionInfo]: - return self._profession_infos - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, Admission): - return NotImplemented - - return ( - self.admission_authority == other.admission_authority - and self.naming_authority == other.naming_authority - and self.profession_infos == other.profession_infos - ) - - def __hash__(self) -> int: - return hash( - ( - self.admission_authority, - self.naming_authority, - tuple(self.profession_infos), - ) - ) - - -class Admissions(ExtensionType): - oid = ExtensionOID.ADMISSIONS - - def __init__( - self, - authority: GeneralName | None, - admissions: Iterable[Admission], - ) -> None: - if authority is not None and not isinstance(authority, GeneralName): - raise TypeError("authority must be a GeneralName") - - admissions = list(admissions) - if not all( - isinstance(admission, Admission) for admission in admissions - ): - raise TypeError( - "Every item in the contents_of_admissions list must be an " - "Admission" - ) - - self._authority = authority - self._admissions = admissions - - __len__, __iter__, __getitem__ = _make_sequence_methods("_admissions") - - @property - def authority(self) -> GeneralName | None: - return self._authority - - def __repr__(self) -> str: - return ( - f"" - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, Admissions): - return NotImplemented - - return ( - self.authority == other.authority - and self._admissions == other._admissions - ) - - def __hash__(self) -> int: - return hash((self.authority, tuple(self._admissions))) - - def public_bytes(self) -> bytes: - return rust_x509.encode_extension_value(self) - - -class UnrecognizedExtension(ExtensionType): - def __init__(self, oid: ObjectIdentifier, value: bytes) -> None: - if not isinstance(oid, ObjectIdentifier): - raise TypeError("oid must be an ObjectIdentifier") - self._oid = oid - self._value = value - - @property - def oid(self) -> ObjectIdentifier: # type: ignore[override] - return self._oid - - @property - def value(self) -> bytes: - return self._value - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, UnrecognizedExtension): - return NotImplemented - - return self.oid == other.oid and self.value == other.value - - def __hash__(self) -> int: - return hash((self.oid, self.value)) - - def public_bytes(self) -> bytes: - return self.value diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/general_name.py b/venv/lib/python3.12/site-packages/cryptography/x509/general_name.py deleted file mode 100644 index 672f287..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/x509/general_name.py +++ /dev/null @@ -1,281 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import abc -import ipaddress -import typing -from email.utils import parseaddr - -from cryptography.x509.name import Name -from cryptography.x509.oid import ObjectIdentifier - -_IPAddressTypes = typing.Union[ - ipaddress.IPv4Address, - ipaddress.IPv6Address, - ipaddress.IPv4Network, - ipaddress.IPv6Network, -] - - -class UnsupportedGeneralNameType(Exception): - pass - - -class GeneralName(metaclass=abc.ABCMeta): - @property - @abc.abstractmethod - def value(self) -> typing.Any: - """ - Return the value of the object - """ - - -class RFC822Name(GeneralName): - def __init__(self, value: str) -> None: - if isinstance(value, str): - try: - value.encode("ascii") - except UnicodeEncodeError: - raise ValueError( - "RFC822Name values should be passed as an A-label string. " - "This means unicode characters should be encoded via " - "a library like idna." - ) - else: - raise TypeError("value must be string") - - name, address = parseaddr(value) - if name or not address: - # parseaddr has found a name (e.g. Name ) or the entire - # value is an empty string. - raise ValueError("Invalid rfc822name value") - - self._value = value - - @property - def value(self) -> str: - return self._value - - @classmethod - def _init_without_validation(cls, value: str) -> RFC822Name: - instance = cls.__new__(cls) - instance._value = value - return instance - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, RFC822Name): - return NotImplemented - - return self.value == other.value - - def __hash__(self) -> int: - return hash(self.value) - - -class DNSName(GeneralName): - def __init__(self, value: str) -> None: - if isinstance(value, str): - try: - value.encode("ascii") - except UnicodeEncodeError: - raise ValueError( - "DNSName values should be passed as an A-label string. " - "This means unicode characters should be encoded via " - "a library like idna." - ) - else: - raise TypeError("value must be string") - - self._value = value - - @property - def value(self) -> str: - return self._value - - @classmethod - def _init_without_validation(cls, value: str) -> DNSName: - instance = cls.__new__(cls) - instance._value = value - return instance - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, DNSName): - return NotImplemented - - return self.value == other.value - - def __hash__(self) -> int: - return hash(self.value) - - -class UniformResourceIdentifier(GeneralName): - def __init__(self, value: str) -> None: - if isinstance(value, str): - try: - value.encode("ascii") - except UnicodeEncodeError: - raise ValueError( - "URI values should be passed as an A-label string. " - "This means unicode characters should be encoded via " - "a library like idna." - ) - else: - raise TypeError("value must be string") - - self._value = value - - @property - def value(self) -> str: - return self._value - - @classmethod - def _init_without_validation(cls, value: str) -> UniformResourceIdentifier: - instance = cls.__new__(cls) - instance._value = value - return instance - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, UniformResourceIdentifier): - return NotImplemented - - return self.value == other.value - - def __hash__(self) -> int: - return hash(self.value) - - -class DirectoryName(GeneralName): - def __init__(self, value: Name) -> None: - if not isinstance(value, Name): - raise TypeError("value must be a Name") - - self._value = value - - @property - def value(self) -> Name: - return self._value - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, DirectoryName): - return NotImplemented - - return self.value == other.value - - def __hash__(self) -> int: - return hash(self.value) - - -class RegisteredID(GeneralName): - def __init__(self, value: ObjectIdentifier) -> None: - if not isinstance(value, ObjectIdentifier): - raise TypeError("value must be an ObjectIdentifier") - - self._value = value - - @property - def value(self) -> ObjectIdentifier: - return self._value - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, RegisteredID): - return NotImplemented - - return self.value == other.value - - def __hash__(self) -> int: - return hash(self.value) - - -class IPAddress(GeneralName): - def __init__(self, value: _IPAddressTypes) -> None: - if not isinstance( - value, - ( - ipaddress.IPv4Address, - ipaddress.IPv6Address, - ipaddress.IPv4Network, - ipaddress.IPv6Network, - ), - ): - raise TypeError( - "value must be an instance of ipaddress.IPv4Address, " - "ipaddress.IPv6Address, ipaddress.IPv4Network, or " - "ipaddress.IPv6Network" - ) - - self._value = value - - @property - def value(self) -> _IPAddressTypes: - return self._value - - def _packed(self) -> bytes: - if isinstance( - self.value, (ipaddress.IPv4Address, ipaddress.IPv6Address) - ): - return self.value.packed - else: - return ( - self.value.network_address.packed + self.value.netmask.packed - ) - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, IPAddress): - return NotImplemented - - return self.value == other.value - - def __hash__(self) -> int: - return hash(self.value) - - -class OtherName(GeneralName): - def __init__(self, type_id: ObjectIdentifier, value: bytes) -> None: - if not isinstance(type_id, ObjectIdentifier): - raise TypeError("type_id must be an ObjectIdentifier") - if not isinstance(value, bytes): - raise TypeError("value must be a binary string") - - self._type_id = type_id - self._value = value - - @property - def type_id(self) -> ObjectIdentifier: - return self._type_id - - @property - def value(self) -> bytes: - return self._value - - def __repr__(self) -> str: - return f"" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, OtherName): - return NotImplemented - - return self.type_id == other.type_id and self.value == other.value - - def __hash__(self) -> int: - return hash((self.type_id, self.value)) diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/name.py b/venv/lib/python3.12/site-packages/cryptography/x509/name.py deleted file mode 100644 index 5f82781..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/x509/name.py +++ /dev/null @@ -1,477 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import binascii -import re -import sys -import typing -import warnings -from collections.abc import Iterable, Iterator - -from cryptography import utils -from cryptography.hazmat.bindings._rust import x509 as rust_x509 -from cryptography.x509.oid import NameOID, ObjectIdentifier - - -class _ASN1Type(utils.Enum): - BitString = 3 - OctetString = 4 - UTF8String = 12 - NumericString = 18 - PrintableString = 19 - T61String = 20 - IA5String = 22 - UTCTime = 23 - GeneralizedTime = 24 - VisibleString = 26 - UniversalString = 28 - BMPString = 30 - - -_ASN1_TYPE_TO_ENUM = {i.value: i for i in _ASN1Type} -_NAMEOID_DEFAULT_TYPE: dict[ObjectIdentifier, _ASN1Type] = { - NameOID.COUNTRY_NAME: _ASN1Type.PrintableString, - NameOID.JURISDICTION_COUNTRY_NAME: _ASN1Type.PrintableString, - NameOID.SERIAL_NUMBER: _ASN1Type.PrintableString, - NameOID.DN_QUALIFIER: _ASN1Type.PrintableString, - NameOID.EMAIL_ADDRESS: _ASN1Type.IA5String, - NameOID.DOMAIN_COMPONENT: _ASN1Type.IA5String, -} - -# Type alias -_OidNameMap = typing.Mapping[ObjectIdentifier, str] -_NameOidMap = typing.Mapping[str, ObjectIdentifier] - -#: Short attribute names from RFC 4514: -#: https://tools.ietf.org/html/rfc4514#page-7 -_NAMEOID_TO_NAME: _OidNameMap = { - NameOID.COMMON_NAME: "CN", - NameOID.LOCALITY_NAME: "L", - NameOID.STATE_OR_PROVINCE_NAME: "ST", - NameOID.ORGANIZATION_NAME: "O", - NameOID.ORGANIZATIONAL_UNIT_NAME: "OU", - NameOID.COUNTRY_NAME: "C", - NameOID.STREET_ADDRESS: "STREET", - NameOID.DOMAIN_COMPONENT: "DC", - NameOID.USER_ID: "UID", -} -_NAME_TO_NAMEOID = {v: k for k, v in _NAMEOID_TO_NAME.items()} - -_NAMEOID_LENGTH_LIMIT = { - NameOID.COUNTRY_NAME: (2, 2), - NameOID.JURISDICTION_COUNTRY_NAME: (2, 2), - NameOID.COMMON_NAME: (1, 64), -} - - -def _escape_dn_value(val: str | bytes) -> str: - """Escape special characters in RFC4514 Distinguished Name value.""" - - if not val: - return "" - - # RFC 4514 Section 2.4 defines the value as being the # (U+0023) character - # followed by the hexadecimal encoding of the octets. - if isinstance(val, bytes): - return "#" + binascii.hexlify(val).decode("utf8") - - # See https://tools.ietf.org/html/rfc4514#section-2.4 - val = val.replace("\\", "\\\\") - val = val.replace('"', '\\"') - val = val.replace("+", "\\+") - val = val.replace(",", "\\,") - val = val.replace(";", "\\;") - val = val.replace("<", "\\<") - val = val.replace(">", "\\>") - val = val.replace("\0", "\\00") - - if val[0] in ("#", " "): - val = "\\" + val - if val[-1] == " ": - val = val[:-1] + "\\ " - - return val - - -def _unescape_dn_value(val: str) -> str: - if not val: - return "" - - # See https://tools.ietf.org/html/rfc4514#section-3 - - # special = escaped / SPACE / SHARP / EQUALS - # escaped = DQUOTE / PLUS / COMMA / SEMI / LANGLE / RANGLE - def sub(m): - val = m.group(1) - # Regular escape - if len(val) == 1: - return val - # Hex-value scape - return chr(int(val, 16)) - - return _RFC4514NameParser._PAIR_RE.sub(sub, val) - - -NameAttributeValueType = typing.TypeVar( - "NameAttributeValueType", - typing.Union[str, bytes], - str, - bytes, - covariant=True, -) - - -class NameAttribute(typing.Generic[NameAttributeValueType]): - def __init__( - self, - oid: ObjectIdentifier, - value: NameAttributeValueType, - _type: _ASN1Type | None = None, - *, - _validate: bool = True, - ) -> None: - if not isinstance(oid, ObjectIdentifier): - raise TypeError( - "oid argument must be an ObjectIdentifier instance." - ) - if _type == _ASN1Type.BitString: - if oid != NameOID.X500_UNIQUE_IDENTIFIER: - raise TypeError( - "oid must be X500_UNIQUE_IDENTIFIER for BitString type." - ) - if not isinstance(value, bytes): - raise TypeError("value must be bytes for BitString") - else: - if not isinstance(value, str): - raise TypeError("value argument must be a str") - - length_limits = _NAMEOID_LENGTH_LIMIT.get(oid) - if length_limits is not None: - min_length, max_length = length_limits - assert isinstance(value, str) - c_len = len(value.encode("utf8")) - if c_len < min_length or c_len > max_length: - msg = ( - f"Attribute's length must be >= {min_length} and " - f"<= {max_length}, but it was {c_len}" - ) - if _validate is True: - raise ValueError(msg) - else: - warnings.warn(msg, stacklevel=2) - - # The appropriate ASN1 string type varies by OID and is defined across - # multiple RFCs including 2459, 3280, and 5280. In general UTF8String - # is preferred (2459), but 3280 and 5280 specify several OIDs with - # alternate types. This means when we see the sentinel value we need - # to look up whether the OID has a non-UTF8 type. If it does, set it - # to that. Otherwise, UTF8! - if _type is None: - _type = _NAMEOID_DEFAULT_TYPE.get(oid, _ASN1Type.UTF8String) - - if not isinstance(_type, _ASN1Type): - raise TypeError("_type must be from the _ASN1Type enum") - - self._oid = oid - self._value: NameAttributeValueType = value - self._type: _ASN1Type = _type - - @property - def oid(self) -> ObjectIdentifier: - return self._oid - - @property - def value(self) -> NameAttributeValueType: - return self._value - - @property - def rfc4514_attribute_name(self) -> str: - """ - The short attribute name (for example "CN") if available, - otherwise the OID dotted string. - """ - return _NAMEOID_TO_NAME.get(self.oid, self.oid.dotted_string) - - def rfc4514_string( - self, attr_name_overrides: _OidNameMap | None = None - ) -> str: - """ - Format as RFC4514 Distinguished Name string. - - Use short attribute name if available, otherwise fall back to OID - dotted string. - """ - attr_name = ( - attr_name_overrides.get(self.oid) if attr_name_overrides else None - ) - if attr_name is None: - attr_name = self.rfc4514_attribute_name - - return f"{attr_name}={_escape_dn_value(self.value)}" - - def __eq__(self, other: object) -> bool: - if not isinstance(other, NameAttribute): - return NotImplemented - - return self.oid == other.oid and self.value == other.value - - def __hash__(self) -> int: - return hash((self.oid, self.value)) - - def __repr__(self) -> str: - return f"" - - -class RelativeDistinguishedName: - def __init__(self, attributes: Iterable[NameAttribute]): - attributes = list(attributes) - if not attributes: - raise ValueError("a relative distinguished name cannot be empty") - if not all(isinstance(x, NameAttribute) for x in attributes): - raise TypeError("attributes must be an iterable of NameAttribute") - - # Keep list and frozenset to preserve attribute order where it matters - self._attributes = attributes - self._attribute_set = frozenset(attributes) - - if len(self._attribute_set) != len(attributes): - raise ValueError("duplicate attributes are not allowed") - - def get_attributes_for_oid( - self, - oid: ObjectIdentifier, - ) -> list[NameAttribute[str | bytes]]: - return [i for i in self if i.oid == oid] - - def rfc4514_string( - self, attr_name_overrides: _OidNameMap | None = None - ) -> str: - """ - Format as RFC4514 Distinguished Name string. - - Within each RDN, attributes are joined by '+', although that is rarely - used in certificates. - """ - return "+".join( - attr.rfc4514_string(attr_name_overrides) - for attr in self._attributes - ) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, RelativeDistinguishedName): - return NotImplemented - - return self._attribute_set == other._attribute_set - - def __hash__(self) -> int: - return hash(self._attribute_set) - - def __iter__(self) -> Iterator[NameAttribute]: - return iter(self._attributes) - - def __len__(self) -> int: - return len(self._attributes) - - def __repr__(self) -> str: - return f"" - - -class Name: - @typing.overload - def __init__(self, attributes: Iterable[NameAttribute]) -> None: ... - - @typing.overload - def __init__( - self, attributes: Iterable[RelativeDistinguishedName] - ) -> None: ... - - def __init__( - self, - attributes: Iterable[NameAttribute | RelativeDistinguishedName], - ) -> None: - attributes = list(attributes) - if all(isinstance(x, NameAttribute) for x in attributes): - self._attributes = [ - RelativeDistinguishedName([typing.cast(NameAttribute, x)]) - for x in attributes - ] - elif all(isinstance(x, RelativeDistinguishedName) for x in attributes): - self._attributes = typing.cast( - typing.List[RelativeDistinguishedName], attributes - ) - else: - raise TypeError( - "attributes must be a list of NameAttribute" - " or a list RelativeDistinguishedName" - ) - - @classmethod - def from_rfc4514_string( - cls, - data: str, - attr_name_overrides: _NameOidMap | None = None, - ) -> Name: - return _RFC4514NameParser(data, attr_name_overrides or {}).parse() - - def rfc4514_string( - self, attr_name_overrides: _OidNameMap | None = None - ) -> str: - """ - Format as RFC4514 Distinguished Name string. - For example 'CN=foobar.com,O=Foo Corp,C=US' - - An X.509 name is a two-level structure: a list of sets of attributes. - Each list element is separated by ',' and within each list element, set - elements are separated by '+'. The latter is almost never used in - real world certificates. According to RFC4514 section 2.1 the - RDNSequence must be reversed when converting to string representation. - """ - return ",".join( - attr.rfc4514_string(attr_name_overrides) - for attr in reversed(self._attributes) - ) - - def get_attributes_for_oid( - self, - oid: ObjectIdentifier, - ) -> list[NameAttribute[str | bytes]]: - return [i for i in self if i.oid == oid] - - @property - def rdns(self) -> list[RelativeDistinguishedName]: - return self._attributes - - def public_bytes(self, backend: typing.Any = None) -> bytes: - return rust_x509.encode_name_bytes(self) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, Name): - return NotImplemented - - return self._attributes == other._attributes - - def __hash__(self) -> int: - # TODO: this is relatively expensive, if this looks like a bottleneck - # for you, consider optimizing! - return hash(tuple(self._attributes)) - - def __iter__(self) -> Iterator[NameAttribute]: - for rdn in self._attributes: - yield from rdn - - def __len__(self) -> int: - return sum(len(rdn) for rdn in self._attributes) - - def __repr__(self) -> str: - rdns = ",".join(attr.rfc4514_string() for attr in self._attributes) - return f"" - - -class _RFC4514NameParser: - _OID_RE = re.compile(r"(0|([1-9]\d*))(\.(0|([1-9]\d*)))+") - _DESCR_RE = re.compile(r"[a-zA-Z][a-zA-Z\d-]*") - - _PAIR = r"\\([\\ #=\"\+,;<>]|[\da-zA-Z]{2})" - _PAIR_RE = re.compile(_PAIR) - _LUTF1 = r"[\x01-\x1f\x21\x24-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]" - _SUTF1 = r"[\x01-\x21\x23-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]" - _TUTF1 = r"[\x01-\x1F\x21\x23-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]" - _UTFMB = rf"[\x80-{chr(sys.maxunicode)}]" - _LEADCHAR = rf"{_LUTF1}|{_UTFMB}" - _STRINGCHAR = rf"{_SUTF1}|{_UTFMB}" - _TRAILCHAR = rf"{_TUTF1}|{_UTFMB}" - _STRING_RE = re.compile( - rf""" - ( - ({_LEADCHAR}|{_PAIR}) - ( - ({_STRINGCHAR}|{_PAIR})* - ({_TRAILCHAR}|{_PAIR}) - )? - )? - """, - re.VERBOSE, - ) - _HEXSTRING_RE = re.compile(r"#([\da-zA-Z]{2})+") - - def __init__(self, data: str, attr_name_overrides: _NameOidMap) -> None: - self._data = data - self._idx = 0 - - self._attr_name_overrides = attr_name_overrides - - def _has_data(self) -> bool: - return self._idx < len(self._data) - - def _peek(self) -> str | None: - if self._has_data(): - return self._data[self._idx] - return None - - def _read_char(self, ch: str) -> None: - if self._peek() != ch: - raise ValueError - self._idx += 1 - - def _read_re(self, pat) -> str: - match = pat.match(self._data, pos=self._idx) - if match is None: - raise ValueError - val = match.group() - self._idx += len(val) - return val - - def parse(self) -> Name: - """ - Parses the `data` string and converts it to a Name. - - According to RFC4514 section 2.1 the RDNSequence must be - reversed when converting to string representation. So, when - we parse it, we need to reverse again to get the RDNs on the - correct order. - """ - - if not self._has_data(): - return Name([]) - - rdns = [self._parse_rdn()] - - while self._has_data(): - self._read_char(",") - rdns.append(self._parse_rdn()) - - return Name(reversed(rdns)) - - def _parse_rdn(self) -> RelativeDistinguishedName: - nas = [self._parse_na()] - while self._peek() == "+": - self._read_char("+") - nas.append(self._parse_na()) - - return RelativeDistinguishedName(nas) - - def _parse_na(self) -> NameAttribute: - try: - oid_value = self._read_re(self._OID_RE) - except ValueError: - name = self._read_re(self._DESCR_RE) - oid = self._attr_name_overrides.get( - name, _NAME_TO_NAMEOID.get(name) - ) - if oid is None: - raise ValueError - else: - oid = ObjectIdentifier(oid_value) - - self._read_char("=") - if self._peek() == "#": - value = self._read_re(self._HEXSTRING_RE) - value = binascii.unhexlify(value[1:]).decode() - else: - raw_value = self._read_re(self._STRING_RE) - value = _unescape_dn_value(raw_value) - - return NameAttribute(oid, value) diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/ocsp.py b/venv/lib/python3.12/site-packages/cryptography/x509/ocsp.py deleted file mode 100644 index f61ed80..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/x509/ocsp.py +++ /dev/null @@ -1,379 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import datetime -from collections.abc import Iterable - -from cryptography import utils, x509 -from cryptography.hazmat.bindings._rust import ocsp -from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.primitives.asymmetric.types import ( - CertificateIssuerPrivateKeyTypes, -) -from cryptography.x509.base import _reject_duplicate_extension - - -class OCSPResponderEncoding(utils.Enum): - HASH = "By Hash" - NAME = "By Name" - - -class OCSPResponseStatus(utils.Enum): - SUCCESSFUL = 0 - MALFORMED_REQUEST = 1 - INTERNAL_ERROR = 2 - TRY_LATER = 3 - SIG_REQUIRED = 5 - UNAUTHORIZED = 6 - - -_ALLOWED_HASHES = ( - hashes.SHA1, - hashes.SHA224, - hashes.SHA256, - hashes.SHA384, - hashes.SHA512, -) - - -def _verify_algorithm(algorithm: hashes.HashAlgorithm) -> None: - if not isinstance(algorithm, _ALLOWED_HASHES): - raise ValueError( - "Algorithm must be SHA1, SHA224, SHA256, SHA384, or SHA512" - ) - - -class OCSPCertStatus(utils.Enum): - GOOD = 0 - REVOKED = 1 - UNKNOWN = 2 - - -class _SingleResponse: - def __init__( - self, - resp: tuple[x509.Certificate, x509.Certificate] | None, - resp_hash: tuple[bytes, bytes, int] | None, - algorithm: hashes.HashAlgorithm, - cert_status: OCSPCertStatus, - this_update: datetime.datetime, - next_update: datetime.datetime | None, - revocation_time: datetime.datetime | None, - revocation_reason: x509.ReasonFlags | None, - ): - _verify_algorithm(algorithm) - if not isinstance(this_update, datetime.datetime): - raise TypeError("this_update must be a datetime object") - if next_update is not None and not isinstance( - next_update, datetime.datetime - ): - raise TypeError("next_update must be a datetime object or None") - - self._resp = resp - self._resp_hash = resp_hash - self._algorithm = algorithm - self._this_update = this_update - self._next_update = next_update - - if not isinstance(cert_status, OCSPCertStatus): - raise TypeError( - "cert_status must be an item from the OCSPCertStatus enum" - ) - if cert_status is not OCSPCertStatus.REVOKED: - if revocation_time is not None: - raise ValueError( - "revocation_time can only be provided if the certificate " - "is revoked" - ) - if revocation_reason is not None: - raise ValueError( - "revocation_reason can only be provided if the certificate" - " is revoked" - ) - else: - if not isinstance(revocation_time, datetime.datetime): - raise TypeError("revocation_time must be a datetime object") - - if revocation_reason is not None and not isinstance( - revocation_reason, x509.ReasonFlags - ): - raise TypeError( - "revocation_reason must be an item from the ReasonFlags " - "enum or None" - ) - - self._cert_status = cert_status - self._revocation_time = revocation_time - self._revocation_reason = revocation_reason - - -OCSPRequest = ocsp.OCSPRequest -OCSPResponse = ocsp.OCSPResponse -OCSPSingleResponse = ocsp.OCSPSingleResponse - - -class OCSPRequestBuilder: - def __init__( - self, - request: tuple[ - x509.Certificate, x509.Certificate, hashes.HashAlgorithm - ] - | None = None, - request_hash: tuple[bytes, bytes, int, hashes.HashAlgorithm] - | None = None, - extensions: list[x509.Extension[x509.ExtensionType]] = [], - ) -> None: - self._request = request - self._request_hash = request_hash - self._extensions = extensions - - def add_certificate( - self, - cert: x509.Certificate, - issuer: x509.Certificate, - algorithm: hashes.HashAlgorithm, - ) -> OCSPRequestBuilder: - if self._request is not None or self._request_hash is not None: - raise ValueError("Only one certificate can be added to a request") - - _verify_algorithm(algorithm) - if not isinstance(cert, x509.Certificate) or not isinstance( - issuer, x509.Certificate - ): - raise TypeError("cert and issuer must be a Certificate") - - return OCSPRequestBuilder( - (cert, issuer, algorithm), self._request_hash, self._extensions - ) - - def add_certificate_by_hash( - self, - issuer_name_hash: bytes, - issuer_key_hash: bytes, - serial_number: int, - algorithm: hashes.HashAlgorithm, - ) -> OCSPRequestBuilder: - if self._request is not None or self._request_hash is not None: - raise ValueError("Only one certificate can be added to a request") - - if not isinstance(serial_number, int): - raise TypeError("serial_number must be an integer") - - _verify_algorithm(algorithm) - utils._check_bytes("issuer_name_hash", issuer_name_hash) - utils._check_bytes("issuer_key_hash", issuer_key_hash) - if algorithm.digest_size != len( - issuer_name_hash - ) or algorithm.digest_size != len(issuer_key_hash): - raise ValueError( - "issuer_name_hash and issuer_key_hash must be the same length " - "as the digest size of the algorithm" - ) - - return OCSPRequestBuilder( - self._request, - (issuer_name_hash, issuer_key_hash, serial_number, algorithm), - self._extensions, - ) - - def add_extension( - self, extval: x509.ExtensionType, critical: bool - ) -> OCSPRequestBuilder: - if not isinstance(extval, x509.ExtensionType): - raise TypeError("extension must be an ExtensionType") - - extension = x509.Extension(extval.oid, critical, extval) - _reject_duplicate_extension(extension, self._extensions) - - return OCSPRequestBuilder( - self._request, self._request_hash, [*self._extensions, extension] - ) - - def build(self) -> OCSPRequest: - if self._request is None and self._request_hash is None: - raise ValueError("You must add a certificate before building") - - return ocsp.create_ocsp_request(self) - - -class OCSPResponseBuilder: - def __init__( - self, - response: _SingleResponse | None = None, - responder_id: tuple[x509.Certificate, OCSPResponderEncoding] - | None = None, - certs: list[x509.Certificate] | None = None, - extensions: list[x509.Extension[x509.ExtensionType]] = [], - ): - self._response = response - self._responder_id = responder_id - self._certs = certs - self._extensions = extensions - - def add_response( - self, - cert: x509.Certificate, - issuer: x509.Certificate, - algorithm: hashes.HashAlgorithm, - cert_status: OCSPCertStatus, - this_update: datetime.datetime, - next_update: datetime.datetime | None, - revocation_time: datetime.datetime | None, - revocation_reason: x509.ReasonFlags | None, - ) -> OCSPResponseBuilder: - if self._response is not None: - raise ValueError("Only one response per OCSPResponse.") - - if not isinstance(cert, x509.Certificate) or not isinstance( - issuer, x509.Certificate - ): - raise TypeError("cert and issuer must be a Certificate") - - singleresp = _SingleResponse( - (cert, issuer), - None, - algorithm, - cert_status, - this_update, - next_update, - revocation_time, - revocation_reason, - ) - return OCSPResponseBuilder( - singleresp, - self._responder_id, - self._certs, - self._extensions, - ) - - def add_response_by_hash( - self, - issuer_name_hash: bytes, - issuer_key_hash: bytes, - serial_number: int, - algorithm: hashes.HashAlgorithm, - cert_status: OCSPCertStatus, - this_update: datetime.datetime, - next_update: datetime.datetime | None, - revocation_time: datetime.datetime | None, - revocation_reason: x509.ReasonFlags | None, - ) -> OCSPResponseBuilder: - if self._response is not None: - raise ValueError("Only one response per OCSPResponse.") - - if not isinstance(serial_number, int): - raise TypeError("serial_number must be an integer") - - utils._check_bytes("issuer_name_hash", issuer_name_hash) - utils._check_bytes("issuer_key_hash", issuer_key_hash) - _verify_algorithm(algorithm) - if algorithm.digest_size != len( - issuer_name_hash - ) or algorithm.digest_size != len(issuer_key_hash): - raise ValueError( - "issuer_name_hash and issuer_key_hash must be the same length " - "as the digest size of the algorithm" - ) - - singleresp = _SingleResponse( - None, - (issuer_name_hash, issuer_key_hash, serial_number), - algorithm, - cert_status, - this_update, - next_update, - revocation_time, - revocation_reason, - ) - return OCSPResponseBuilder( - singleresp, - self._responder_id, - self._certs, - self._extensions, - ) - - def responder_id( - self, encoding: OCSPResponderEncoding, responder_cert: x509.Certificate - ) -> OCSPResponseBuilder: - if self._responder_id is not None: - raise ValueError("responder_id can only be set once") - if not isinstance(responder_cert, x509.Certificate): - raise TypeError("responder_cert must be a Certificate") - if not isinstance(encoding, OCSPResponderEncoding): - raise TypeError( - "encoding must be an element from OCSPResponderEncoding" - ) - - return OCSPResponseBuilder( - self._response, - (responder_cert, encoding), - self._certs, - self._extensions, - ) - - def certificates( - self, certs: Iterable[x509.Certificate] - ) -> OCSPResponseBuilder: - if self._certs is not None: - raise ValueError("certificates may only be set once") - certs = list(certs) - if len(certs) == 0: - raise ValueError("certs must not be an empty list") - if not all(isinstance(x, x509.Certificate) for x in certs): - raise TypeError("certs must be a list of Certificates") - return OCSPResponseBuilder( - self._response, - self._responder_id, - certs, - self._extensions, - ) - - def add_extension( - self, extval: x509.ExtensionType, critical: bool - ) -> OCSPResponseBuilder: - if not isinstance(extval, x509.ExtensionType): - raise TypeError("extension must be an ExtensionType") - - extension = x509.Extension(extval.oid, critical, extval) - _reject_duplicate_extension(extension, self._extensions) - - return OCSPResponseBuilder( - self._response, - self._responder_id, - self._certs, - [*self._extensions, extension], - ) - - def sign( - self, - private_key: CertificateIssuerPrivateKeyTypes, - algorithm: hashes.HashAlgorithm | None, - ) -> OCSPResponse: - if self._response is None: - raise ValueError("You must add a response before signing") - if self._responder_id is None: - raise ValueError("You must add a responder_id before signing") - - return ocsp.create_ocsp_response( - OCSPResponseStatus.SUCCESSFUL, self, private_key, algorithm - ) - - @classmethod - def build_unsuccessful( - cls, response_status: OCSPResponseStatus - ) -> OCSPResponse: - if not isinstance(response_status, OCSPResponseStatus): - raise TypeError( - "response_status must be an item from OCSPResponseStatus" - ) - if response_status is OCSPResponseStatus.SUCCESSFUL: - raise ValueError("response_status cannot be SUCCESSFUL") - - return ocsp.create_ocsp_response(response_status, None, None, None) - - -load_der_ocsp_request = ocsp.load_der_ocsp_request -load_der_ocsp_response = ocsp.load_der_ocsp_response diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/oid.py b/venv/lib/python3.12/site-packages/cryptography/x509/oid.py deleted file mode 100644 index 520fc7a..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/x509/oid.py +++ /dev/null @@ -1,37 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -from cryptography.hazmat._oid import ( - AttributeOID, - AuthorityInformationAccessOID, - CertificatePoliciesOID, - CRLEntryExtensionOID, - ExtendedKeyUsageOID, - ExtensionOID, - NameOID, - ObjectIdentifier, - OCSPExtensionOID, - OtherNameFormOID, - PublicKeyAlgorithmOID, - SignatureAlgorithmOID, - SubjectInformationAccessOID, -) - -__all__ = [ - "AttributeOID", - "AuthorityInformationAccessOID", - "CRLEntryExtensionOID", - "CertificatePoliciesOID", - "ExtendedKeyUsageOID", - "ExtensionOID", - "NameOID", - "OCSPExtensionOID", - "ObjectIdentifier", - "OtherNameFormOID", - "PublicKeyAlgorithmOID", - "SignatureAlgorithmOID", - "SubjectInformationAccessOID", -] diff --git a/venv/lib/python3.12/site-packages/cryptography/x509/verification.py b/venv/lib/python3.12/site-packages/cryptography/x509/verification.py deleted file mode 100644 index 2db4324..0000000 --- a/venv/lib/python3.12/site-packages/cryptography/x509/verification.py +++ /dev/null @@ -1,34 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import annotations - -import typing - -from cryptography.hazmat.bindings._rust import x509 as rust_x509 -from cryptography.x509.general_name import DNSName, IPAddress - -__all__ = [ - "ClientVerifier", - "Criticality", - "ExtensionPolicy", - "Policy", - "PolicyBuilder", - "ServerVerifier", - "Store", - "Subject", - "VerificationError", - "VerifiedClient", -] - -Store = rust_x509.Store -Subject = typing.Union[DNSName, IPAddress] -VerifiedClient = rust_x509.VerifiedClient -ClientVerifier = rust_x509.ClientVerifier -ServerVerifier = rust_x509.ServerVerifier -PolicyBuilder = rust_x509.PolicyBuilder -Policy = rust_x509.Policy -ExtensionPolicy = rust_x509.ExtensionPolicy -Criticality = rust_x509.Criticality -VerificationError = rust_x509.VerificationError diff --git a/venv/lib/python3.12/site-packages/dotenv/__init__.py b/venv/lib/python3.12/site-packages/dotenv/__init__.py deleted file mode 100644 index 3512d10..0000000 --- a/venv/lib/python3.12/site-packages/dotenv/__init__.py +++ /dev/null @@ -1,49 +0,0 @@ -from typing import Any, Optional - -from .main import (dotenv_values, find_dotenv, get_key, load_dotenv, set_key, - unset_key) - - -def load_ipython_extension(ipython: Any) -> None: - from .ipython import load_ipython_extension - load_ipython_extension(ipython) - - -def get_cli_string( - path: Optional[str] = None, - action: Optional[str] = None, - key: Optional[str] = None, - value: Optional[str] = None, - quote: Optional[str] = None, -): - """Returns a string suitable for running as a shell script. - - Useful for converting a arguments passed to a fabric task - to be passed to a `local` or `run` command. - """ - command = ['dotenv'] - if quote: - command.append('-q %s' % quote) - if path: - command.append('-f %s' % path) - if action: - command.append(action) - if key: - command.append(key) - if value: - if ' ' in value: - command.append('"%s"' % value) - else: - command.append(value) - - return ' '.join(command).strip() - - -__all__ = ['get_cli_string', - 'load_dotenv', - 'dotenv_values', - 'get_key', - 'set_key', - 'unset_key', - 'find_dotenv', - 'load_ipython_extension'] diff --git a/venv/lib/python3.12/site-packages/dotenv/__main__.py b/venv/lib/python3.12/site-packages/dotenv/__main__.py deleted file mode 100644 index 3977f55..0000000 --- a/venv/lib/python3.12/site-packages/dotenv/__main__.py +++ /dev/null @@ -1,6 +0,0 @@ -"""Entry point for cli, enables execution with `python -m dotenv`""" - -from .cli import cli - -if __name__ == "__main__": - cli() diff --git a/venv/lib/python3.12/site-packages/dotenv/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/dotenv/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 8bb84d829a79c2933a5a543d776a85f7f84d22b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1682 zcmZ`(&u<$=6rS1N_S#OGIH4tNvr1!-krInWKo4mpD5xh~)QZbqHXF~{S!aK^vulH+ zEd(h-_<)jdX^w$YtMZ?40W}r&N{C3DdNbruDJR~n?If+zXZf2qZ@+!-&F6XkEt^dv zuT-vcC0$S zc^VCd(NxnLxw748hikqUOVkRR)GJq5`jPSAu0eC zU#6fjD&lxLDLYJUSYJb<0W|-FqfB%<#$X&E-~cr3_-<* zNV3LGLxc)ABvGc z^O0CTE7_1wxJcNL&>4Xu^hPcpq1U*WesO-@2%kzGarEXJSlk&FPv0X##J3QgI-gC% zh<~-dcj0_y#GmFRLY?XHnnmJ>Q9rBRko9!9-iHgk@$0?h#s!+G1tGP)nie$e&|Gya zt?E;aHa(98&4jRKIgS=osNDz`(`gOt%fPBOorGHPy_QA8gsqvh)^sf|477$B1QyXk zA1YMMRccqX&={EF$UXi$0uYOiP&-*ruoEGGO|8r-rCap8eh2wYI0Za;B?{ZRa|cPFR!3cJhQ{LG{BZh8O1$DjRt>v{hA z;c)-KLB4pX=C*HiZtUE7re6M2o%=(bd#29+F3i&j=%}b99nuu|l%0ht4A}oJRT;1m zOa`(jmYEfEu@tr&@M}?afhe1-Sa40-8@!(IlN?FP(?o2ZV;)pV3dXWwn2uu@Pf*fF zBHppG?E0kXShr{a*laL^Er33cG5#BAF9nRRzC-|hg~RjvxBCc|$DbatrJq4Fv)#*D z_tKRvI5V^Vsx!FIO;7ABbr$+O_=lPN&i&5keG&Y=gy6}w&XvB*b_#-Lw>vlcDYi=w RcSkJ4f6KC3_)bo`{2#rph!Fq) diff --git a/venv/lib/python3.12/site-packages/dotenv/__pycache__/__main__.cpython-312.pyc b/venv/lib/python3.12/site-packages/dotenv/__pycache__/__main__.cpython-312.pyc deleted file mode 100644 index 27529cf85057ccbebc8e97fda852c6aae1aab267..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmXv~u};G<5Ix61jX>R4Kti&Zs6=Z4E9wGWL1OIUrm-QWu^lB&A=wx}`~ly9_!Ks_ zWvsLv6+GZt5jntOhnv6t=JSIYi<3!{{Jc_8W(rEG^ZA?aK zX=9gk72(DTJstfax3Gh1?8fSVF%?S9*i{GDEylQs7|XC@G%Xz}!Pq-2niH1SG&V}m zdlMREw5TM#Fgh<1>xxsinI>{fS8`{)lT(^YE4pbIO~N~o)0H~i==IWa8JsJ_i$wIZ m=2gvE`GIqDj1Zc^`{ diff --git a/venv/lib/python3.12/site-packages/dotenv/__pycache__/cli.cpython-312.pyc b/venv/lib/python3.12/site-packages/dotenv/__pycache__/cli.cpython-312.pyc deleted file mode 100644 index af7c5ba63fff83c6825575592278879b2a496c63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8701 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 diff --git a/venv/lib/python3.12/site-packages/dotenv/__pycache__/parser.cpython-312.pyc b/venv/lib/python3.12/site-packages/dotenv/__pycache__/parser.cpython-312.pyc deleted file mode 100644 index 14d7aaf13d94825c1693b64102a27e708358a3ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9723 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 RwRhLAruXze#WIb7{s*euKsEpX diff --git a/venv/lib/python3.12/site-packages/dotenv/__pycache__/variables.cpython-312.pyc b/venv/lib/python3.12/site-packages/dotenv/__pycache__/variables.cpython-312.pyc deleted file mode 100644 index dd231b854727d8d0a322bd835a5262eb60cbd61c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5105 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 H!+iSRqXXTv diff --git a/venv/lib/python3.12/site-packages/dotenv/__pycache__/version.cpython-312.pyc b/venv/lib/python3.12/site-packages/dotenv/__pycache__/version.cpython-312.pyc deleted file mode 100644 index 08dd776b70d6555a1b7d081370a93f6fabb74421..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmX@j%ge<81Z_b|8R9_tF^B^Lj8MjB4j^MXLkdF_LnWgoQx%(mo{^!RfuAPhE$;aE zvecsD%>2Cg_>~NwK^lJf>1X8Urs`+qC+6qo=cQI<>O1G>6_@6e00qlZ^UCydGL!TR zDoZl*^NjTjjr5B%OHy?U5|gtN(^HG}Q}RndYM`d-6;%G>u*uC&Da}c>D`Ep04{}s7 U$ju*^85tRG@QF2Y7qI}j0DI~+{{R30 diff --git a/venv/lib/python3.12/site-packages/dotenv/cli.py b/venv/lib/python3.12/site-packages/dotenv/cli.py deleted file mode 100644 index b845b95..0000000 --- a/venv/lib/python3.12/site-packages/dotenv/cli.py +++ /dev/null @@ -1,174 +0,0 @@ -import json -import os -import shlex -import sys -from subprocess import Popen -from typing import Any, Dict, List - -try: - import click -except ImportError: - sys.stderr.write('It seems python-dotenv is not installed with cli option. \n' - 'Run pip install "python-dotenv[cli]" to fix this.') - sys.exit(1) - -from .main import dotenv_values, get_key, set_key, unset_key -from .version import __version__ - - -@click.group() -@click.option('-f', '--file', default=os.path.join(os.getcwd(), '.env'), - type=click.Path(file_okay=True), - help="Location of the .env file, defaults to .env file in current working directory.") -@click.option('-q', '--quote', default='always', - type=click.Choice(['always', 'never', 'auto']), - help="Whether to quote or not the variable values. Default mode is always. This does not affect parsing.") -@click.option('-e', '--export', default=False, - type=click.BOOL, - help="Whether to write the dot file as an executable bash script.") -@click.version_option(version=__version__) -@click.pass_context -def cli(ctx: click.Context, file: Any, quote: Any, export: Any) -> None: - '''This script is used to set, get or unset values from a .env file.''' - ctx.obj = {} - ctx.obj['QUOTE'] = quote - ctx.obj['EXPORT'] = export - ctx.obj['FILE'] = file - - -@cli.command() -@click.pass_context -@click.option('--format', default='simple', - type=click.Choice(['simple', 'json', 'shell', 'export']), - help="The format in which to display the list. Default format is simple, " - "which displays name=value without quotes.") -def list(ctx: click.Context, format: bool) -> None: - '''Display all the stored key/value.''' - file = ctx.obj['FILE'] - if not os.path.isfile(file): - raise click.BadParameter( - 'Path "%s" does not exist.' % (file), - ctx=ctx - ) - dotenv_as_dict = dotenv_values(file) - if format == 'json': - click.echo(json.dumps(dotenv_as_dict, indent=2, sort_keys=True)) - else: - prefix = 'export ' if format == 'export' else '' - for k in sorted(dotenv_as_dict): - v = dotenv_as_dict[k] - if v is not None: - if format in ('export', 'shell'): - v = shlex.quote(v) - click.echo('%s%s=%s' % (prefix, k, v)) - - -@cli.command() -@click.pass_context -@click.argument('key', required=True) -@click.argument('value', required=True) -def set(ctx: click.Context, key: Any, value: Any) -> None: - '''Store the given key/value.''' - file = ctx.obj['FILE'] - quote = ctx.obj['QUOTE'] - export = ctx.obj['EXPORT'] - success, key, value = set_key(file, key, value, quote, export) - if success: - click.echo('%s=%s' % (key, value)) - else: - exit(1) - - -@cli.command() -@click.pass_context -@click.argument('key', required=True) -def get(ctx: click.Context, key: Any) -> None: - '''Retrieve the value for the given key.''' - file = ctx.obj['FILE'] - if not os.path.isfile(file): - raise click.BadParameter( - 'Path "%s" does not exist.' % (file), - ctx=ctx - ) - stored_value = get_key(file, key) - if stored_value: - click.echo(stored_value) - else: - exit(1) - - -@cli.command() -@click.pass_context -@click.argument('key', required=True) -def unset(ctx: click.Context, key: Any) -> None: - '''Removes the given key.''' - file = ctx.obj['FILE'] - quote = ctx.obj['QUOTE'] - success, key = unset_key(file, key, quote) - if success: - click.echo("Successfully removed %s" % key) - else: - exit(1) - - -@cli.command(context_settings={'ignore_unknown_options': True}) -@click.pass_context -@click.option( - "--override/--no-override", - default=True, - help="Override variables from the environment file with those from the .env file.", -) -@click.argument('commandline', nargs=-1, type=click.UNPROCESSED) -def run(ctx: click.Context, override: bool, commandline: List[str]) -> None: - """Run command with environment variables present.""" - file = ctx.obj['FILE'] - if not os.path.isfile(file): - raise click.BadParameter( - 'Invalid value for \'-f\' "%s" does not exist.' % (file), - ctx=ctx - ) - dotenv_as_dict = { - k: v - for (k, v) in dotenv_values(file).items() - if v is not None and (override or k not in os.environ) - } - - if not commandline: - click.echo('No command given.') - exit(1) - ret = run_command(commandline, dotenv_as_dict) - exit(ret) - - -def run_command(command: List[str], env: Dict[str, str]) -> int: - """Run command in sub process. - - Runs the command in a sub process with the variables from `env` - added in the current environment variables. - - Parameters - ---------- - command: List[str] - The command and it's parameters - env: Dict - The additional environment variables - - Returns - ------- - int - The return code of the command - - """ - # copy the current environment variables and add the vales from - # `env` - cmd_env = os.environ.copy() - cmd_env.update(env) - - p = Popen(command, - universal_newlines=True, - bufsize=0, - shell=False, - env=cmd_env) - _, _ = p.communicate() - - return p.returncode diff --git a/venv/lib/python3.12/site-packages/dotenv/ipython.py b/venv/lib/python3.12/site-packages/dotenv/ipython.py deleted file mode 100644 index 7df727c..0000000 --- a/venv/lib/python3.12/site-packages/dotenv/ipython.py +++ /dev/null @@ -1,39 +0,0 @@ -from IPython.core.magic import Magics, line_magic, magics_class # type: ignore -from IPython.core.magic_arguments import (argument, magic_arguments, # type: ignore - parse_argstring) # type: ignore - -from .main import find_dotenv, load_dotenv - - -@magics_class -class IPythonDotEnv(Magics): - - @magic_arguments() - @argument( - '-o', '--override', action='store_true', - help="Indicate to override existing variables" - ) - @argument( - '-v', '--verbose', action='store_true', - help="Indicate function calls to be verbose" - ) - @argument('dotenv_path', nargs='?', type=str, default='.env', - help='Search in increasingly higher folders for the `dotenv_path`') - @line_magic - def dotenv(self, line): - args = parse_argstring(self.dotenv, line) - # Locate the .env file - dotenv_path = args.dotenv_path - try: - dotenv_path = find_dotenv(dotenv_path, True, True) - except IOError: - print("cannot find .env file") - return - - # Load the .env file - load_dotenv(dotenv_path, verbose=args.verbose, override=args.override) - - -def load_ipython_extension(ipython): - """Register the %dotenv magic.""" - ipython.register_magics(IPythonDotEnv) diff --git a/venv/lib/python3.12/site-packages/dotenv/main.py b/venv/lib/python3.12/site-packages/dotenv/main.py deleted file mode 100644 index 05d377a..0000000 --- a/venv/lib/python3.12/site-packages/dotenv/main.py +++ /dev/null @@ -1,378 +0,0 @@ -import io -import logging -import os -import shutil -import sys -import tempfile -from collections import OrderedDict -from contextlib import contextmanager -from typing import (IO, Dict, Iterable, Iterator, Mapping, Optional, Tuple, - Union) - -from .parser import Binding, parse_stream -from .variables import parse_variables - -logger = logging.getLogger(__name__) - - -def with_warn_for_invalid_lines(mappings: Iterator[Binding]) -> Iterator[Binding]: - for mapping in mappings: - if mapping.error: - logger.warning( - "Python-dotenv could not parse statement starting at line %s", - mapping.original.line, - ) - yield mapping - - -class DotEnv(): - def __init__( - self, - dotenv_path: Optional[Union[str, os.PathLike]], - stream: Optional[IO[str]] = None, - verbose: bool = False, - encoding: Union[None, str] = None, - interpolate: bool = True, - override: bool = True, - ) -> None: - self.dotenv_path = dotenv_path # type: Optional[Union[str, os.PathLike]] - self.stream = stream # type: Optional[IO[str]] - self._dict = None # type: Optional[Dict[str, Optional[str]]] - self.verbose = verbose # type: bool - self.encoding = encoding # type: Union[None, str] - self.interpolate = interpolate # type: bool - self.override = override # type: bool - - @contextmanager - def _get_stream(self) -> Iterator[IO[str]]: - if self.dotenv_path and os.path.isfile(self.dotenv_path): - with open(self.dotenv_path, encoding=self.encoding) as stream: - yield stream - elif self.stream is not None: - yield self.stream - else: - if self.verbose: - logger.info( - "Python-dotenv could not find configuration file %s.", - self.dotenv_path or '.env', - ) - yield io.StringIO('') - - def dict(self) -> Dict[str, Optional[str]]: - """Return dotenv as dict""" - if self._dict: - return self._dict - - raw_values = self.parse() - - if self.interpolate: - self._dict = OrderedDict(resolve_variables(raw_values, override=self.override)) - else: - self._dict = OrderedDict(raw_values) - - return self._dict - - def parse(self) -> Iterator[Tuple[str, Optional[str]]]: - with self._get_stream() as stream: - for mapping in with_warn_for_invalid_lines(parse_stream(stream)): - if mapping.key is not None: - yield mapping.key, mapping.value - - def set_as_environment_variables(self) -> bool: - """ - Load the current dotenv as system environment variable. - """ - if not self.dict(): - return False - - for k, v in self.dict().items(): - if k in os.environ and not self.override: - continue - if v is not None: - os.environ[k] = v - - return True - - def get(self, key: str) -> Optional[str]: - """ - """ - data = self.dict() - - if key in data: - return data[key] - - if self.verbose: - logger.warning("Key %s not found in %s.", key, self.dotenv_path) - - return None - - -def get_key( - dotenv_path: Union[str, os.PathLike], - key_to_get: str, - encoding: Optional[str] = "utf-8", -) -> Optional[str]: - """ - Get the value of a given key from the given .env. - - Returns `None` if the key isn't found or doesn't have a value. - """ - return DotEnv(dotenv_path, verbose=True, encoding=encoding).get(key_to_get) - - -@contextmanager -def rewrite( - path: Union[str, os.PathLike], - encoding: Optional[str], -) -> Iterator[Tuple[IO[str], IO[str]]]: - try: - if not os.path.isfile(path): - with open(path, "w+", encoding=encoding) as source: - source.write("") - with tempfile.NamedTemporaryFile(mode="w+", delete=False, encoding=encoding) as dest: - with open(path, encoding=encoding) as source: - yield (source, dest) # type: ignore - except BaseException: - if os.path.isfile(dest.name): - os.unlink(dest.name) - raise - else: - shutil.move(dest.name, path) - - -def set_key( - dotenv_path: Union[str, os.PathLike], - key_to_set: str, - value_to_set: str, - quote_mode: str = "always", - export: bool = False, - encoding: Optional[str] = "utf-8", -) -> Tuple[Optional[bool], str, str]: - """ - Adds or Updates a key/value to the given .env - - If the .env path given doesn't exist, fails instead of risking creating - an orphan .env somewhere in the filesystem - """ - if quote_mode not in ("always", "auto", "never"): - raise ValueError("Unknown quote_mode: {}".format(quote_mode)) - - quote = ( - quote_mode == "always" - or (quote_mode == "auto" and not value_to_set.isalnum()) - ) - - if quote: - value_out = "'{}'".format(value_to_set.replace("'", "\\'")) - else: - value_out = value_to_set - if export: - line_out = 'export {}={}\n'.format(key_to_set, value_out) - else: - line_out = "{}={}\n".format(key_to_set, value_out) - - with rewrite(dotenv_path, encoding=encoding) as (source, dest): - replaced = False - missing_newline = False - for mapping in with_warn_for_invalid_lines(parse_stream(source)): - if mapping.key == key_to_set: - dest.write(line_out) - replaced = True - else: - dest.write(mapping.original.string) - missing_newline = not mapping.original.string.endswith("\n") - if not replaced: - if missing_newline: - dest.write("\n") - dest.write(line_out) - - return True, key_to_set, value_to_set - - -def unset_key( - dotenv_path: Union[str, os.PathLike], - key_to_unset: str, - quote_mode: str = "always", - encoding: Optional[str] = "utf-8", -) -> Tuple[Optional[bool], str]: - """ - Removes a given key from the given `.env` file. - - If the .env path given doesn't exist, fails. - If the given key doesn't exist in the .env, fails. - """ - if not os.path.exists(dotenv_path): - logger.warning("Can't delete from %s - it doesn't exist.", dotenv_path) - return None, key_to_unset - - removed = False - with rewrite(dotenv_path, encoding=encoding) as (source, dest): - for mapping in with_warn_for_invalid_lines(parse_stream(source)): - if mapping.key == key_to_unset: - removed = True - else: - dest.write(mapping.original.string) - - if not removed: - logger.warning("Key %s not removed from %s - key doesn't exist.", key_to_unset, dotenv_path) - return None, key_to_unset - - return removed, key_to_unset - - -def resolve_variables( - values: Iterable[Tuple[str, Optional[str]]], - override: bool, -) -> Mapping[str, Optional[str]]: - new_values = {} # type: Dict[str, Optional[str]] - - for (name, value) in values: - if value is None: - result = None - else: - atoms = parse_variables(value) - env = {} # type: Dict[str, Optional[str]] - if override: - env.update(os.environ) # type: ignore - env.update(new_values) - else: - env.update(new_values) - env.update(os.environ) # type: ignore - result = "".join(atom.resolve(env) for atom in atoms) - - new_values[name] = result - - return new_values - - -def _walk_to_root(path: str) -> Iterator[str]: - """ - Yield directories starting from the given directory up to the root - """ - if not os.path.exists(path): - raise IOError('Starting path not found') - - if os.path.isfile(path): - path = os.path.dirname(path) - - last_dir = None - current_dir = os.path.abspath(path) - while last_dir != current_dir: - yield current_dir - parent_dir = os.path.abspath(os.path.join(current_dir, os.path.pardir)) - last_dir, current_dir = current_dir, parent_dir - - -def find_dotenv( - filename: str = '.env', - raise_error_if_not_found: bool = False, - usecwd: bool = False, -) -> str: - """ - Search in increasingly higher folders for the given file - - Returns path to the file if found, or an empty string otherwise - """ - - def _is_interactive(): - """ Decide whether this is running in a REPL or IPython notebook """ - main = __import__('__main__', None, None, fromlist=['__file__']) - return not hasattr(main, '__file__') - - if usecwd or _is_interactive() or getattr(sys, 'frozen', False): - # Should work without __file__, e.g. in REPL or IPython notebook. - path = os.getcwd() - else: - # will work for .py files - frame = sys._getframe() - current_file = __file__ - - while frame.f_code.co_filename == current_file: - assert frame.f_back is not None - frame = frame.f_back - frame_filename = frame.f_code.co_filename - path = os.path.dirname(os.path.abspath(frame_filename)) - - for dirname in _walk_to_root(path): - check_path = os.path.join(dirname, filename) - if os.path.isfile(check_path): - return check_path - - if raise_error_if_not_found: - raise IOError('File not found') - - return '' - - -def load_dotenv( - dotenv_path: Union[str, os.PathLike, None] = None, - stream: Optional[IO[str]] = None, - verbose: bool = False, - override: bool = False, - interpolate: bool = True, - encoding: Optional[str] = "utf-8", -) -> bool: - """Parse a .env file and then load all the variables found as environment variables. - - Parameters: - dotenv_path: Absolute or relative path to .env file. - stream: Text stream (such as `io.StringIO`) with .env content, used if - `dotenv_path` is `None`. - verbose: Whether to output a warning the .env file is missing. - override: Whether to override the system environment variables with the variables - from the `.env` file. - encoding: Encoding to be used to read the file. - Returns: - Bool: True if atleast one environment variable is set elese False - - If both `dotenv_path` and `stream` are `None`, `find_dotenv()` is used to find the - .env file. - """ - if dotenv_path is None and stream is None: - dotenv_path = find_dotenv() - - dotenv = DotEnv( - dotenv_path=dotenv_path, - stream=stream, - verbose=verbose, - interpolate=interpolate, - override=override, - encoding=encoding, - ) - return dotenv.set_as_environment_variables() - - -def dotenv_values( - dotenv_path: Union[str, os.PathLike, None] = None, - stream: Optional[IO[str]] = None, - verbose: bool = False, - interpolate: bool = True, - encoding: Optional[str] = "utf-8", -) -> Dict[str, Optional[str]]: - """ - Parse a .env file and return its content as a dict. - - The returned dict will have `None` values for keys without values in the .env file. - For example, `foo=bar` results in `{"foo": "bar"}` whereas `foo` alone results in - `{"foo": None}` - - Parameters: - dotenv_path: Absolute or relative path to the .env file. - stream: `StringIO` object with .env content, used if `dotenv_path` is `None`. - verbose: Whether to output a warning if the .env file is missing. - encoding: Encoding to be used to read the file. - - If both `dotenv_path` and `stream` are `None`, `find_dotenv()` is used to find the - .env file. - """ - if dotenv_path is None and stream is None: - dotenv_path = find_dotenv() - - return DotEnv( - dotenv_path=dotenv_path, - stream=stream, - verbose=verbose, - interpolate=interpolate, - override=True, - encoding=encoding, - ).dict() diff --git a/venv/lib/python3.12/site-packages/dotenv/parser.py b/venv/lib/python3.12/site-packages/dotenv/parser.py deleted file mode 100644 index 398bd49..0000000 --- a/venv/lib/python3.12/site-packages/dotenv/parser.py +++ /dev/null @@ -1,182 +0,0 @@ -import codecs -import re -from typing import (IO, Iterator, Match, NamedTuple, Optional, # noqa:F401 - Pattern, Sequence, Tuple) - - -def make_regex(string: str, extra_flags: int = 0) -> Pattern[str]: - return re.compile(string, re.UNICODE | extra_flags) - - -_newline = make_regex(r"(\r\n|\n|\r)") -_multiline_whitespace = make_regex(r"\s*", extra_flags=re.MULTILINE) -_whitespace = make_regex(r"[^\S\r\n]*") -_export = make_regex(r"(?:export[^\S\r\n]+)?") -_single_quoted_key = make_regex(r"'([^']+)'") -_unquoted_key = make_regex(r"([^=\#\s]+)") -_equal_sign = make_regex(r"(=[^\S\r\n]*)") -_single_quoted_value = make_regex(r"'((?:\\'|[^'])*)'") -_double_quoted_value = make_regex(r'"((?:\\"|[^"])*)"') -_unquoted_value = make_regex(r"([^\r\n]*)") -_comment = make_regex(r"(?:[^\S\r\n]*#[^\r\n]*)?") -_end_of_line = make_regex(r"[^\S\r\n]*(?:\r\n|\n|\r|$)") -_rest_of_line = make_regex(r"[^\r\n]*(?:\r|\n|\r\n)?") -_double_quote_escapes = make_regex(r"\\[\\'\"abfnrtv]") -_single_quote_escapes = make_regex(r"\\[\\']") - - -Original = NamedTuple( - "Original", - [ - ("string", str), - ("line", int), - ], -) - -Binding = NamedTuple( - "Binding", - [ - ("key", Optional[str]), - ("value", Optional[str]), - ("original", Original), - ("error", bool), - ], -) - - -class Position: - def __init__(self, chars: int, line: int) -> None: - self.chars = chars - self.line = line - - @classmethod - def start(cls) -> "Position": - return cls(chars=0, line=1) - - def set(self, other: "Position") -> None: - self.chars = other.chars - self.line = other.line - - def advance(self, string: str) -> None: - self.chars += len(string) - self.line += len(re.findall(_newline, string)) - - -class Error(Exception): - pass - - -class Reader: - def __init__(self, stream: IO[str]) -> None: - self.string = stream.read() - self.position = Position.start() - self.mark = Position.start() - - def has_next(self) -> bool: - return self.position.chars < len(self.string) - - def set_mark(self) -> None: - self.mark.set(self.position) - - def get_marked(self) -> Original: - return Original( - string=self.string[self.mark.chars:self.position.chars], - line=self.mark.line, - ) - - def peek(self, count: int) -> str: - return self.string[self.position.chars:self.position.chars + count] - - def read(self, count: int) -> str: - result = self.string[self.position.chars:self.position.chars + count] - if len(result) < count: - raise Error("read: End of string") - self.position.advance(result) - return result - - def read_regex(self, regex: Pattern[str]) -> Sequence[str]: - match = regex.match(self.string, self.position.chars) - if match is None: - raise Error("read_regex: Pattern not found") - self.position.advance(self.string[match.start():match.end()]) - return match.groups() - - -def decode_escapes(regex: Pattern[str], string: str) -> str: - def decode_match(match: Match[str]) -> str: - return codecs.decode(match.group(0), 'unicode-escape') # type: ignore - - return regex.sub(decode_match, string) - - -def parse_key(reader: Reader) -> Optional[str]: - char = reader.peek(1) - if char == "#": - return None - elif char == "'": - (key,) = reader.read_regex(_single_quoted_key) - else: - (key,) = reader.read_regex(_unquoted_key) - return key - - -def parse_unquoted_value(reader: Reader) -> str: - (part,) = reader.read_regex(_unquoted_value) - return re.sub(r"\s+#.*", "", part).rstrip() - - -def parse_value(reader: Reader) -> str: - char = reader.peek(1) - if char == u"'": - (value,) = reader.read_regex(_single_quoted_value) - return decode_escapes(_single_quote_escapes, value) - elif char == u'"': - (value,) = reader.read_regex(_double_quoted_value) - return decode_escapes(_double_quote_escapes, value) - elif char in (u"", u"\n", u"\r"): - return u"" - else: - return parse_unquoted_value(reader) - - -def parse_binding(reader: Reader) -> Binding: - reader.set_mark() - try: - reader.read_regex(_multiline_whitespace) - if not reader.has_next(): - return Binding( - key=None, - value=None, - original=reader.get_marked(), - error=False, - ) - reader.read_regex(_export) - key = parse_key(reader) - reader.read_regex(_whitespace) - if reader.peek(1) == "=": - reader.read_regex(_equal_sign) - value = parse_value(reader) # type: Optional[str] - else: - value = None - reader.read_regex(_comment) - reader.read_regex(_end_of_line) - return Binding( - key=key, - value=value, - original=reader.get_marked(), - error=False, - ) - except Error: - reader.read_regex(_rest_of_line) - return Binding( - key=None, - value=None, - original=reader.get_marked(), - error=True, - ) - - -def parse_stream(stream: IO[str]) -> Iterator[Binding]: - reader = Reader(stream) - while reader.has_next(): - yield parse_binding(reader) diff --git a/venv/lib/python3.12/site-packages/dotenv/py.typed b/venv/lib/python3.12/site-packages/dotenv/py.typed deleted file mode 100644 index 7632ecf..0000000 --- a/venv/lib/python3.12/site-packages/dotenv/py.typed +++ /dev/null @@ -1 +0,0 @@ -# Marker file for PEP 561 diff --git a/venv/lib/python3.12/site-packages/dotenv/variables.py b/venv/lib/python3.12/site-packages/dotenv/variables.py deleted file mode 100644 index d77b700..0000000 --- a/venv/lib/python3.12/site-packages/dotenv/variables.py +++ /dev/null @@ -1,88 +0,0 @@ -import re -from abc import ABCMeta -from typing import Iterator, Mapping, Optional, Pattern - -_posix_variable = re.compile( - r""" - \$\{ - (?P[^\}:]*) - (?::- - (?P[^\}]*) - )? - \} - """, - re.VERBOSE, -) # type: Pattern[str] - - -class Atom(): - __metaclass__ = ABCMeta - - def __ne__(self, other: object) -> bool: - result = self.__eq__(other) - if result is NotImplemented: - return NotImplemented - return not result - - def resolve(self, env: Mapping[str, Optional[str]]) -> str: - raise NotImplementedError - - -class Literal(Atom): - def __init__(self, value: str) -> None: - self.value = value - - def __repr__(self) -> str: - return "Literal(value={})".format(self.value) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, self.__class__): - return NotImplemented - return self.value == other.value - - def __hash__(self) -> int: - return hash((self.__class__, self.value)) - - def resolve(self, env: Mapping[str, Optional[str]]) -> str: - return self.value - - -class Variable(Atom): - def __init__(self, name: str, default: Optional[str]) -> None: - self.name = name - self.default = default - - def __repr__(self) -> str: - return "Variable(name={}, default={})".format(self.name, self.default) - - def __eq__(self, other: object) -> bool: - if not isinstance(other, self.__class__): - return NotImplemented - return (self.name, self.default) == (other.name, other.default) - - def __hash__(self) -> int: - return hash((self.__class__, self.name, self.default)) - - def resolve(self, env: Mapping[str, Optional[str]]) -> str: - default = self.default if self.default is not None else "" - result = env.get(self.name, default) - return result if result is not None else "" - - -def parse_variables(value: str) -> Iterator[Atom]: - cursor = 0 - - for match in _posix_variable.finditer(value): - (start, end) = match.span() - name = match.groupdict()["name"] - default = match.groupdict()["default"] - - if start > cursor: - yield Literal(value=value[cursor:start]) - - yield Variable(name=name, default=default) - cursor = end - - length = len(value) - if cursor < length: - yield Literal(value=value[cursor:length]) diff --git a/venv/lib/python3.12/site-packages/dotenv/version.py b/venv/lib/python3.12/site-packages/dotenv/version.py deleted file mode 100644 index 6a726d8..0000000 --- a/venv/lib/python3.12/site-packages/dotenv/version.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = "0.21.0" diff --git a/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/METADATA b/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/METADATA deleted file mode 100644 index 387e7c1..0000000 --- a/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/METADATA +++ /dev/null @@ -1,555 +0,0 @@ -Metadata-Version: 2.1 -Name: fastapi -Version: 0.95.1 -Summary: FastAPI framework, high performance, easy to learn, fast to code, ready for production -Project-URL: Homepage, https://github.com/tiangolo/fastapi -Project-URL: Documentation, https://fastapi.tiangolo.com/ -Author-email: Sebastián Ramírez -License-Expression: MIT -License-File: LICENSE -Classifier: Development Status :: 4 - Beta -Classifier: Environment :: Web Environment -Classifier: Framework :: AsyncIO -Classifier: Framework :: FastAPI -Classifier: Framework :: Pydantic -Classifier: Framework :: Pydantic :: 1 -Classifier: Intended Audience :: Developers -Classifier: Intended Audience :: Information Technology -Classifier: Intended Audience :: System Administrators -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Topic :: Internet -Classifier: Topic :: Internet :: WWW/HTTP -Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers -Classifier: Topic :: Software Development -Classifier: Topic :: Software Development :: Libraries -Classifier: Topic :: Software Development :: Libraries :: Application Frameworks -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Typing :: Typed -Requires-Python: >=3.7 -Requires-Dist: pydantic!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<2.0.0,>=1.6.2 -Requires-Dist: starlette<0.27.0,>=0.26.1 -Provides-Extra: all -Requires-Dist: email-validator>=1.1.1; extra == 'all' -Requires-Dist: httpx>=0.23.0; extra == 'all' -Requires-Dist: itsdangerous>=1.1.0; extra == 'all' -Requires-Dist: jinja2>=2.11.2; extra == 'all' -Requires-Dist: orjson>=3.2.1; extra == 'all' -Requires-Dist: python-multipart>=0.0.5; extra == 'all' -Requires-Dist: pyyaml>=5.3.1; extra == 'all' -Requires-Dist: ujson!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,>=4.0.1; extra == 'all' -Requires-Dist: uvicorn[standard]>=0.12.0; extra == 'all' -Provides-Extra: dev -Requires-Dist: pre-commit<3.0.0,>=2.17.0; extra == 'dev' -Requires-Dist: ruff==0.0.138; extra == 'dev' -Requires-Dist: uvicorn[standard]<0.21.0,>=0.12.0; extra == 'dev' -Provides-Extra: doc -Requires-Dist: mdx-include<2.0.0,>=1.4.1; extra == 'doc' -Requires-Dist: mkdocs-markdownextradata-plugin<0.3.0,>=0.1.7; extra == 'doc' -Requires-Dist: mkdocs-material<9.0.0,>=8.1.4; extra == 'doc' -Requires-Dist: mkdocs<2.0.0,>=1.1.2; extra == 'doc' -Requires-Dist: pyyaml<7.0.0,>=5.3.1; extra == 'doc' -Requires-Dist: typer-cli<0.0.14,>=0.0.13; extra == 'doc' -Requires-Dist: typer[all]<0.8.0,>=0.6.1; extra == 'doc' -Provides-Extra: test -Requires-Dist: anyio[trio]<4.0.0,>=3.2.1; extra == 'test' -Requires-Dist: black==23.1.0; extra == 'test' -Requires-Dist: coverage[toml]<8.0,>=6.5.0; extra == 'test' -Requires-Dist: databases[sqlite]<0.7.0,>=0.3.2; extra == 'test' -Requires-Dist: email-validator<2.0.0,>=1.1.1; extra == 'test' -Requires-Dist: flask<3.0.0,>=1.1.2; extra == 'test' -Requires-Dist: httpx<0.24.0,>=0.23.0; extra == 'test' -Requires-Dist: isort<6.0.0,>=5.0.6; extra == 'test' -Requires-Dist: mypy==0.982; extra == 'test' -Requires-Dist: orjson<4.0.0,>=3.2.1; extra == 'test' -Requires-Dist: passlib[bcrypt]<2.0.0,>=1.7.2; extra == 'test' -Requires-Dist: peewee<4.0.0,>=3.13.3; extra == 'test' -Requires-Dist: pytest<8.0.0,>=7.1.3; extra == 'test' -Requires-Dist: python-jose[cryptography]<4.0.0,>=3.3.0; extra == 'test' -Requires-Dist: python-multipart<0.0.7,>=0.0.5; extra == 'test' -Requires-Dist: pyyaml<7.0.0,>=5.3.1; extra == 'test' -Requires-Dist: ruff==0.0.138; extra == 'test' -Requires-Dist: sqlalchemy<1.4.43,>=1.3.18; extra == 'test' -Requires-Dist: types-orjson==3.6.2; extra == 'test' -Requires-Dist: types-ujson==5.7.0.1; extra == 'test' -Requires-Dist: ujson!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0,>=4.0.1; extra == 'test' -Description-Content-Type: text/markdown - -

    - FastAPI -

    -

    - FastAPI framework, high performance, easy to learn, fast to code, ready for production -

    -

    - - Test - - - Coverage - - - Package version - - - Supported Python versions - -

    - ---- - -**Documentation**: https://fastapi.tiangolo.com - -**Source Code**: https://github.com/tiangolo/fastapi - ---- - -FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints. - -The key features are: - -* **Fast**: Very high performance, on par with **NodeJS** and **Go** (thanks to Starlette and Pydantic). [One of the fastest Python frameworks available](#performance). -* **Fast to code**: Increase the speed to develop features by about 200% to 300%. * -* **Fewer bugs**: Reduce about 40% of human (developer) induced errors. * -* **Intuitive**: Great editor support. Completion everywhere. Less time debugging. -* **Easy**: Designed to be easy to use and learn. Less time reading docs. -* **Short**: Minimize code duplication. Multiple features from each parameter declaration. Fewer bugs. -* **Robust**: Get production-ready code. With automatic interactive documentation. -* **Standards-based**: Based on (and fully compatible with) the open standards for APIs: OpenAPI (previously known as Swagger) and JSON Schema. - -* estimation based on tests on an internal development team, building production applications. - -## Sponsors - - - - - - - - - - - - - - - -Other sponsors - -## Opinions - -"_[...] I'm using **FastAPI** a ton these days. [...] I'm actually planning to use it for all of my team's **ML services at Microsoft**. Some of them are getting integrated into the core **Windows** product and some **Office** products._" - -
    Kabir Khan - Microsoft (ref)
    - ---- - -"_We adopted the **FastAPI** library to spawn a **REST** server that can be queried to obtain **predictions**. [for Ludwig]_" - -
    Piero Molino, Yaroslav Dudin, and Sai Sumanth Miryala - Uber (ref)
    - ---- - -"_**Netflix** is pleased to announce the open-source release of our **crisis management** orchestration framework: **Dispatch**! [built with **FastAPI**]_" - -
    Kevin Glisson, Marc Vilanova, Forest Monsen - Netflix (ref)
    - ---- - -"_I’m over the moon excited about **FastAPI**. It’s so fun!_" - -
    Brian Okken - Python Bytes podcast host (ref)
    - ---- - -"_Honestly, what you've built looks super solid and polished. In many ways, it's what I wanted **Hug** to be - it's really inspiring to see someone build that._" - -
    Timothy Crosley - Hug creator (ref)
    - ---- - -"_If you're looking to learn one **modern framework** for building REST APIs, check out **FastAPI** [...] It's fast, easy to use and easy to learn [...]_" - -"_We've switched over to **FastAPI** for our **APIs** [...] I think you'll like it [...]_" - -
    Ines Montani - Matthew Honnibal - Explosion AI founders - spaCy creators (ref) - (ref)
    - ---- - -"_If anyone is looking to build a production Python API, I would highly recommend **FastAPI**. It is **beautifully designed**, **simple to use** and **highly scalable**, it has become a **key component** in our API first development strategy and is driving many automations and services such as our Virtual TAC Engineer._" - -
    Deon Pillsbury - Cisco (ref)
    - ---- - -## **Typer**, the FastAPI of CLIs - - - -If you are building a CLI app to be used in the terminal instead of a web API, check out **Typer**. - -**Typer** is FastAPI's little sibling. And it's intended to be the **FastAPI of CLIs**. âŒ¨ï¸ ðŸš€ - -## Requirements - -Python 3.7+ - -FastAPI stands on the shoulders of giants: - -* Starlette for the web parts. -* Pydantic for the data parts. - -## Installation - -
    - -```console -$ pip install fastapi - ----> 100% -``` - -
    - -You will also need an ASGI server, for production such as Uvicorn or Hypercorn. - -
    - -```console -$ pip install "uvicorn[standard]" - ----> 100% -``` - -
    - -## Example - -### Create it - -* Create a file `main.py` with: - -```Python -from typing import Union - -from fastapi import FastAPI - -app = FastAPI() - - -@app.get("/") -def read_root(): - return {"Hello": "World"} - - -@app.get("/items/{item_id}") -def read_item(item_id: int, q: Union[str, None] = None): - return {"item_id": item_id, "q": q} -``` - -
    -Or use async def... - -If your code uses `async` / `await`, use `async def`: - -```Python hl_lines="9 14" -from typing import Union - -from fastapi import FastAPI - -app = FastAPI() - - -@app.get("/") -async def read_root(): - return {"Hello": "World"} - - -@app.get("/items/{item_id}") -async def read_item(item_id: int, q: Union[str, None] = None): - return {"item_id": item_id, "q": q} -``` - -**Note**: - -If you don't know, check the _"In a hurry?"_ section about `async` and `await` in the docs. - -
    - -### Run it - -Run the server with: - -
    - -```console -$ uvicorn main:app --reload - -INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) -INFO: Started reloader process [28720] -INFO: Started server process [28722] -INFO: Waiting for application startup. -INFO: Application startup complete. -``` - -
    - -
    -About the command uvicorn main:app --reload... - -The command `uvicorn main:app` refers to: - -* `main`: the file `main.py` (the Python "module"). -* `app`: the object created inside of `main.py` with the line `app = FastAPI()`. -* `--reload`: make the server restart after code changes. Only do this for development. - -
    - -### Check it - -Open your browser at http://127.0.0.1:8000/items/5?q=somequery. - -You will see the JSON response as: - -```JSON -{"item_id": 5, "q": "somequery"} -``` - -You already created an API that: - -* Receives HTTP requests in the _paths_ `/` and `/items/{item_id}`. -* Both _paths_ take `GET` operations (also known as HTTP _methods_). -* The _path_ `/items/{item_id}` has a _path parameter_ `item_id` that should be an `int`. -* The _path_ `/items/{item_id}` has an optional `str` _query parameter_ `q`. - -### Interactive API docs - -Now go to http://127.0.0.1:8000/docs. - -You will see the automatic interactive API documentation (provided by Swagger UI): - -![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png) - -### Alternative API docs - -And now, go to http://127.0.0.1:8000/redoc. - -You will see the alternative automatic documentation (provided by ReDoc): - -![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png) - -## Example upgrade - -Now modify the file `main.py` to receive a body from a `PUT` request. - -Declare the body using standard Python types, thanks to Pydantic. - -```Python hl_lines="4 9-12 25-27" -from typing import Union - -from fastapi import FastAPI -from pydantic import BaseModel - -app = FastAPI() - - -class Item(BaseModel): - name: str - price: float - is_offer: Union[bool, None] = None - - -@app.get("/") -def read_root(): - return {"Hello": "World"} - - -@app.get("/items/{item_id}") -def read_item(item_id: int, q: Union[str, None] = None): - return {"item_id": item_id, "q": q} - - -@app.put("/items/{item_id}") -def update_item(item_id: int, item: Item): - return {"item_name": item.name, "item_id": item_id} -``` - -The server should reload automatically (because you added `--reload` to the `uvicorn` command above). - -### Interactive API docs upgrade - -Now go to http://127.0.0.1:8000/docs. - -* The interactive API documentation will be automatically updated, including the new body: - -![Swagger UI](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png) - -* Click on the button "Try it out", it allows you to fill the parameters and directly interact with the API: - -![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-04-swagger-03.png) - -* Then click on the "Execute" button, the user interface will communicate with your API, send the parameters, get the results and show them on the screen: - -![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-05-swagger-04.png) - -### Alternative API docs upgrade - -And now, go to http://127.0.0.1:8000/redoc. - -* The alternative documentation will also reflect the new query parameter and body: - -![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png) - -### Recap - -In summary, you declare **once** the types of parameters, body, etc. as function parameters. - -You do that with standard modern Python types. - -You don't have to learn a new syntax, the methods or classes of a specific library, etc. - -Just standard **Python 3.7+**. - -For example, for an `int`: - -```Python -item_id: int -``` - -or for a more complex `Item` model: - -```Python -item: Item -``` - -...and with that single declaration you get: - -* Editor support, including: - * Completion. - * Type checks. -* Validation of data: - * Automatic and clear errors when the data is invalid. - * Validation even for deeply nested JSON objects. -* Conversion of input data: coming from the network to Python data and types. Reading from: - * JSON. - * Path parameters. - * Query parameters. - * Cookies. - * Headers. - * Forms. - * Files. -* Conversion of output data: converting from Python data and types to network data (as JSON): - * Convert Python types (`str`, `int`, `float`, `bool`, `list`, etc). - * `datetime` objects. - * `UUID` objects. - * Database models. - * ...and many more. -* Automatic interactive API documentation, including 2 alternative user interfaces: - * Swagger UI. - * ReDoc. - ---- - -Coming back to the previous code example, **FastAPI** will: - -* Validate that there is an `item_id` in the path for `GET` and `PUT` requests. -* Validate that the `item_id` is of type `int` for `GET` and `PUT` requests. - * If it is not, the client will see a useful, clear error. -* Check if there is an optional query parameter named `q` (as in `http://127.0.0.1:8000/items/foo?q=somequery`) for `GET` requests. - * As the `q` parameter is declared with `= None`, it is optional. - * Without the `None` it would be required (as is the body in the case with `PUT`). -* For `PUT` requests to `/items/{item_id}`, Read the body as JSON: - * Check that it has a required attribute `name` that should be a `str`. - * Check that it has a required attribute `price` that has to be a `float`. - * Check that it has an optional attribute `is_offer`, that should be a `bool`, if present. - * All this would also work for deeply nested JSON objects. -* Convert from and to JSON automatically. -* Document everything with OpenAPI, that can be used by: - * Interactive documentation systems. - * Automatic client code generation systems, for many languages. -* Provide 2 interactive documentation web interfaces directly. - ---- - -We just scratched the surface, but you already get the idea of how it all works. - -Try changing the line with: - -```Python - return {"item_name": item.name, "item_id": item_id} -``` - -...from: - -```Python - ... "item_name": item.name ... -``` - -...to: - -```Python - ... "item_price": item.price ... -``` - -...and see how your editor will auto-complete the attributes and know their types: - -![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png) - -For a more complete example including more features, see the Tutorial - User Guide. - -**Spoiler alert**: the tutorial - user guide includes: - -* Declaration of **parameters** from other different places as: **headers**, **cookies**, **form fields** and **files**. -* How to set **validation constraints** as `maximum_length` or `regex`. -* A very powerful and easy to use **Dependency Injection** system. -* Security and authentication, including support for **OAuth2** with **JWT tokens** and **HTTP Basic** auth. -* More advanced (but equally easy) techniques for declaring **deeply nested JSON models** (thanks to Pydantic). -* **GraphQL** integration with Strawberry and other libraries. -* Many extra features (thanks to Starlette) as: - * **WebSockets** - * extremely easy tests based on HTTPX and `pytest` - * **CORS** - * **Cookie Sessions** - * ...and more. - -## Performance - -Independent TechEmpower benchmarks show **FastAPI** applications running under Uvicorn as one of the fastest Python frameworks available, only below Starlette and Uvicorn themselves (used internally by FastAPI). (*) - -To understand more about it, see the section Benchmarks. - -## Optional Dependencies - -Used by Pydantic: - -* ujson - for faster JSON "parsing". -* email_validator - for email validation. - -Used by Starlette: - -* httpx - Required if you want to use the `TestClient`. -* jinja2 - Required if you want to use the default template configuration. -* python-multipart - Required if you want to support form "parsing", with `request.form()`. -* itsdangerous - Required for `SessionMiddleware` support. -* pyyaml - Required for Starlette's `SchemaGenerator` support (you probably don't need it with FastAPI). -* ujson - Required if you want to use `UJSONResponse`. - -Used by FastAPI / Starlette: - -* uvicorn - for the server that loads and serves your application. -* orjson - Required if you want to use `ORJSONResponse`. - -You can install all of these with `pip install "fastapi[all]"`. - -## License - -This project is licensed under the terms of the MIT license. diff --git a/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/RECORD b/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/RECORD deleted file mode 100644 index a8cb58e..0000000 --- a/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/RECORD +++ /dev/null @@ -1,91 +0,0 @@ -fastapi-0.95.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -fastapi-0.95.1.dist-info/METADATA,sha256=rwnwSypvfFZvhURPzXVpsMMZoH0nAVC-RoxxpmnTa_0,24865 -fastapi-0.95.1.dist-info/RECORD,, -fastapi-0.95.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -fastapi-0.95.1.dist-info/WHEEL,sha256=EI2JsGydwUL5GP9t6kzZv7G3HDPi7FuZDDf9In6amRM,87 -fastapi-0.95.1.dist-info/licenses/LICENSE,sha256=Tsif_IFIW5f-xYSy1KlhAy7v_oNEU4lP2cEnSQbMdE4,1086 -fastapi/__init__.py,sha256=4fSbRhseSYTDCsyB9FB3MpPQXNZvHESdS7Adw4inFAo,1080 -fastapi/__pycache__/__init__.cpython-312.pyc,, -fastapi/__pycache__/applications.cpython-312.pyc,, -fastapi/__pycache__/background.cpython-312.pyc,, -fastapi/__pycache__/concurrency.cpython-312.pyc,, -fastapi/__pycache__/datastructures.cpython-312.pyc,, -fastapi/__pycache__/encoders.cpython-312.pyc,, -fastapi/__pycache__/exception_handlers.cpython-312.pyc,, -fastapi/__pycache__/exceptions.cpython-312.pyc,, -fastapi/__pycache__/logger.cpython-312.pyc,, -fastapi/__pycache__/param_functions.cpython-312.pyc,, -fastapi/__pycache__/params.cpython-312.pyc,, -fastapi/__pycache__/requests.cpython-312.pyc,, -fastapi/__pycache__/responses.cpython-312.pyc,, -fastapi/__pycache__/routing.cpython-312.pyc,, -fastapi/__pycache__/staticfiles.cpython-312.pyc,, -fastapi/__pycache__/templating.cpython-312.pyc,, -fastapi/__pycache__/testclient.cpython-312.pyc,, -fastapi/__pycache__/types.cpython-312.pyc,, -fastapi/__pycache__/utils.cpython-312.pyc,, -fastapi/__pycache__/websockets.cpython-312.pyc,, -fastapi/applications.py,sha256=aESbVHTs3fLLEuBca5Z7Rm8iZxjoZTTm8_QyHrVzTU4,39525 -fastapi/background.py,sha256=HtN5_pJJrOdalSbuGSMKJAPNWUU5h7rY_BXXubu7-IQ,76 -fastapi/concurrency.py,sha256=h7ZhZG8cEiVx6an1txcB2RKpjW6_xmHwFo9E3vUiMQA,1468 -fastapi/datastructures.py,sha256=oW6xuU0C-sBwbcyXI-MlBO0tSS4BSPB2lYUa1yCw8-A,1905 -fastapi/dependencies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -fastapi/dependencies/__pycache__/__init__.cpython-312.pyc,, -fastapi/dependencies/__pycache__/models.cpython-312.pyc,, -fastapi/dependencies/__pycache__/utils.cpython-312.pyc,, -fastapi/dependencies/models.py,sha256=zNbioxICuOeb-9ADDVQ45hUHOC0PBtPVEfVU3f1l_nc,2494 -fastapi/dependencies/utils.py,sha256=hDn1Uz6g_CiSrQikwA8WrYs_vH-Og5kG2a1qFFc6ZpA,30908 -fastapi/encoders.py,sha256=UaRHIlxyt4vSzV93dCIz9sLykxH4Xbmp7cALTK1-hnk,5962 -fastapi/exception_handlers.py,sha256=VhAaYycnDun9WeIV1vMXcs5EuK03XpzMi_HpqAsO_yk,988 -fastapi/exceptions.py,sha256=_YRNJc5ZpI8QQmbJe4ophsRncs7sIibc1tE2AnHHcKc,1205 -fastapi/logger.py,sha256=I9NNi3ov8AcqbsbC9wl1X-hdItKgYt2XTrx1f99Zpl4,54 -fastapi/middleware/__init__.py,sha256=oQDxiFVcc1fYJUOIFvphnK7pTT5kktmfL32QXpBFvvo,58 -fastapi/middleware/__pycache__/__init__.cpython-312.pyc,, -fastapi/middleware/__pycache__/asyncexitstack.cpython-312.pyc,, -fastapi/middleware/__pycache__/cors.cpython-312.pyc,, -fastapi/middleware/__pycache__/gzip.cpython-312.pyc,, -fastapi/middleware/__pycache__/httpsredirect.cpython-312.pyc,, -fastapi/middleware/__pycache__/trustedhost.cpython-312.pyc,, -fastapi/middleware/__pycache__/wsgi.cpython-312.pyc,, -fastapi/middleware/asyncexitstack.py,sha256=72XjQmQ_tB_tTs9xOc0akXF_7TwZUPdyfc8gsN5LV8E,1197 -fastapi/middleware/cors.py,sha256=ynwjWQZoc_vbhzZ3_ZXceoaSrslHFHPdoM52rXr0WUU,79 -fastapi/middleware/gzip.py,sha256=xM5PcsH8QlAimZw4VDvcmTnqQamslThsfe3CVN2voa0,79 -fastapi/middleware/httpsredirect.py,sha256=rL8eXMnmLijwVkH7_400zHri1AekfeBd6D6qs8ix950,115 -fastapi/middleware/trustedhost.py,sha256=eE5XGRxGa7c5zPnMJDGp3BxaL25k5iVQlhnv-Pk0Pss,109 -fastapi/middleware/wsgi.py,sha256=Z3Ue-7wni4lUZMvH3G9ek__acgYdJstbnpZX_HQAboY,79 -fastapi/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -fastapi/openapi/__pycache__/__init__.cpython-312.pyc,, -fastapi/openapi/__pycache__/constants.cpython-312.pyc,, -fastapi/openapi/__pycache__/docs.cpython-312.pyc,, -fastapi/openapi/__pycache__/models.cpython-312.pyc,, -fastapi/openapi/__pycache__/utils.cpython-312.pyc,, -fastapi/openapi/constants.py,sha256=mWxYBjED6PU-tQ9X227Qkq2SsW2cv-C1jYFKt63xxEs,107 -fastapi/openapi/docs.py,sha256=JBRaq7EEmeC-xoRSRFj6qZWQxfOZW_jvTw0r-PiKcZ4,6532 -fastapi/openapi/models.py,sha256=_XWDBU4Zlp5M9V6YI1kmXbqYKwK_xZxaqIA_DhLwqHk,11027 -fastapi/openapi/utils.py,sha256=DoI_rwP8wepUTsSCeaCGfXLuGm7Q7dlBqMbOkxYyk9Y,18808 -fastapi/param_functions.py,sha256=3QrctOwg7QE8b9XOqM29HTDtt7cEq96WhJPIFN703z4,7515 -fastapi/params.py,sha256=93bQyDIhTXZHv1vS7TF3GFCJZGP02JHZpA1qu3wJuYE,10699 -fastapi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -fastapi/requests.py,sha256=zayepKFcienBllv3snmWI20Gk0oHNVLU4DDhqXBb4LU,142 -fastapi/responses.py,sha256=_-2YuL2PWB0WcVUm-T0bJzbo2Zl_v8n6XAavAUYwHjs,1279 -fastapi/routing.py,sha256=TZeDV-lty61TbcAUfWjqo0IOhVtr83jvMPZUv8Gmu70,55563 -fastapi/security/__init__.py,sha256=bO8pNmxqVRXUjfl2mOKiVZLn0FpBQ61VUYVjmppnbJw,881 -fastapi/security/__pycache__/__init__.cpython-312.pyc,, -fastapi/security/__pycache__/api_key.cpython-312.pyc,, -fastapi/security/__pycache__/base.cpython-312.pyc,, -fastapi/security/__pycache__/http.cpython-312.pyc,, -fastapi/security/__pycache__/oauth2.cpython-312.pyc,, -fastapi/security/__pycache__/open_id_connect_url.cpython-312.pyc,, -fastapi/security/__pycache__/utils.cpython-312.pyc,, -fastapi/security/api_key.py,sha256=8sqL5JK5HmDyvuLZ317L8aotpBp2y3wayazITzYkZEw,2786 -fastapi/security/base.py,sha256=dl4pvbC-RxjfbWgPtCWd8MVU-7CB2SZ22rJDXVCXO6c,141 -fastapi/security/http.py,sha256=cjzwWBA_SWXky8Irb7ladHphR5P5CAgBv3bjmFStugM,5964 -fastapi/security/oauth2.py,sha256=Hcz0bnLo2K-JFRAH2w3UDayUlEktpitChsX18B3Ngw0,8198 -fastapi/security/open_id_connect_url.py,sha256=GKK84g6OZbOFCEZJyd27pGjpaClGxeZrYOemUzyhfbU,1141 -fastapi/security/utils.py,sha256=bd8T0YM7UQD5ATKucr1bNtAvz_Y3__dVNAv5UebiPvc,293 -fastapi/staticfiles.py,sha256=iirGIt3sdY2QZXd36ijs3Cj-T0FuGFda3cd90kM9Ikw,69 -fastapi/templating.py,sha256=4zsuTWgcjcEainMJFAlW6-gnslm6AgOS1SiiDWfmQxk,76 -fastapi/testclient.py,sha256=nBvaAmX66YldReJNZXPOk1sfuo2Q6hs8bOvIaCep6LQ,66 -fastapi/types.py,sha256=r6MngTHzkZOP9lzXgduje9yeZe5EInWAzCLuRJlhIuE,118 -fastapi/utils.py,sha256=6J82I3LlIUO1TUZ_lWnmYTVo1YVyIFNdKKCilMX6rV0,7334 -fastapi/websockets.py,sha256=419uncYObEKZG0YcrXscfQQYLSWoE10jqxVMetGdR98,222 diff --git a/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/REQUESTED deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/WHEEL b/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/WHEEL deleted file mode 100644 index 58d0071..0000000 --- a/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/WHEEL +++ /dev/null @@ -1,4 +0,0 @@ -Wheel-Version: 1.0 -Generator: hatchling 1.14.0 -Root-Is-Purelib: true -Tag: py3-none-any diff --git a/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/licenses/LICENSE b/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/licenses/LICENSE deleted file mode 100644 index 3e92463..0000000 --- a/venv/lib/python3.12/site-packages/fastapi-0.95.1.dist-info/licenses/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2018 Sebastián Ramírez - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/venv/lib/python3.12/site-packages/fastapi/__init__.py b/venv/lib/python3.12/site-packages/fastapi/__init__.py deleted file mode 100644 index e1c2be9..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -"""FastAPI framework, high performance, easy to learn, fast to code, ready for production""" - -__version__ = "0.95.1" - -from starlette import status as status - -from .applications import FastAPI as FastAPI -from .background import BackgroundTasks as BackgroundTasks -from .datastructures import UploadFile as UploadFile -from .exceptions import HTTPException as HTTPException -from .exceptions import WebSocketException as WebSocketException -from .param_functions import Body as Body -from .param_functions import Cookie as Cookie -from .param_functions import Depends as Depends -from .param_functions import File as File -from .param_functions import Form as Form -from .param_functions import Header as Header -from .param_functions import Path as Path -from .param_functions import Query as Query -from .param_functions import Security as Security -from .requests import Request as Request -from .responses import Response as Response -from .routing import APIRouter as APIRouter -from .websockets import WebSocket as WebSocket -from .websockets import WebSocketDisconnect as WebSocketDisconnect diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 930f07d113bf66af325049dfbea692fefdad7f3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1091 zcmYk5%Wl*#6o#G7C3By4rk!3WZG^<7qD&|^0YV7cQk4xVrGR81MQ-AD!Z>lTotEi} zEldaD)h(( zQ9XDUUZzy&^`%$TPerIS+ne-5N~O~FCY1?~rA}Oier@tpnFQtYuYr;Fd9WHvpT{xv z)r$pZXnS73ea{kGAxOc z+NEggune1-`lT4xu?;7t!gyCq=%}(!x1~7}DLP(;xRo4 z-4&=WWeUta8t=I*+;)?J>hbt?cj=ZZLq%^SP&e77($#m3B%$khVH_&Y>n4Na(xV72 z8l#WJRoFn^Dft}aPtLNe@95pnM(0!Y5M4P$iy3;Dp*tD6m!T&aTFB6i47mnQ81#CE RmNInB0C4vQS{9cf+dqTEID7yA diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/applications.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/applications.cpython-312.pyc deleted file mode 100644 index be177f107e4de4e94cb1c84d4571b55a41739419..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29478 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 diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/concurrency.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/concurrency.cpython-312.pyc deleted file mode 100644 index 34011e9bdfa27f3d2bbd25f9cc3a9a81f5b8435e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1647 zcmb_c&u<$=6n-mO^co!Aa7h@ytHp$;NeYEY!ADoUfOm0Bu9BdQu9Yh!PkP4Z`M$S5X_^Yy=H7dC^almtp_uqB*aG!$5G+9vio^n&+1|a!$6D zoMH!ZfksTWg1I2_6f0UM;1J?yE=quc5h#XNNpt0#X3(N) zD2DbT28t0wHngHVLd9%EE=E68Ba6{m1+%H&tLUKqznQWuee z>u_U=+q$D)H&|L~5ziZr!F292FE-d@ywhZO!J$gYcwc9iF-3e(FX;u7S1y^h$?H$$H-ljmZZ-V z1@6gzzQHBCRE zmDV^(CSgjt29xBTG)dCZDp zgB4SlV9am|mEKatd-?eadfwvf6{R&TJU_S+^u9d#cp)Jcgi>+R@r~5{H&Dw=-Lbo{dD$c3Wa8ay#j?F13HCp@T1YuUF473slAa`r9tK~_V&4uZL^ zDEM?;l@O=np4vK5RD+4~WkNtNfI6GbbtcM(iK=AcU(AGy8-DUSP#%W=4sP`RLn0Oy z1mQI%ij|4lY^d@r)DZ$Zg5A^5Y1=JMSjHK445z}d Qv4VlRguFe$V_mq$-w)A=nE(I) diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/datastructures.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/datastructures.cpython-312.pyc deleted file mode 100644 index f837573304056856d1215159c0ecc0823ab0e924..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3250 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 diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/exception_handlers.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/exception_handlers.cpython-312.pyc deleted file mode 100644 index e84ee14d79c195b1d09a165dc93227e162a7dee1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1524 zcmaJ>O>7%Q6rS0&ckTEmb{d+Zh+?V=Fd?>*08#>?3Xuhb%5LqHiaoH}cqjFS{V_A+ zv_V0t+FrPoQ#qCsi45wsM-Cj2xI}6W(aKhlxRjeE=RkYn&3f$ws2FMAeDmI$*|*>K zW`9ei#t@8es^=OV8KFPKVmOo#^zQ(;hfHK*8#!3RSYXMP99feCEZY$$szn1Fu@y(v z)Bs2Am=o9H0aolWC!r;rq?QcUs-1GuS{iVS#LYNS%`uYPP|U=gh&CSjWbh@xmjqvC zJC#rWDN4#?KeNd^*I2iSPTaa@5(>W4Rq|zvF#f4wTc*J+&n;2viO9&b4NuEUesZ-|DOU+=dM+b=Y=|J~C9z9? zYkpq8QodBJtdwfCpfkViUDN7BRk-c!&_%!JCnR_oQuyJJ}RhhyLeh?npmM?XZp-;_+d&DMNnH z5JS&kw($R)6INA2Kgri|K2rA81~EVq2Gk`^uuR9{FkdkVH!M4^`06!4oKq@Dpc!FA zAv7jT7EE5I34xQsh|NsADwoSW(~1qxA;nG4@Ep%2Us=T!(57W`aBdNIt7u#6#pX6| zc~@-Y{I#hKdW#ZU1zG^QQiv7@dT73u;&u z%oFt2P1H%haJT;5;(hZ`dgkVbox~fv3lA>rT{uX*+Zms_zw$%n`^v+s2jivvSgDhk zI*e!UF5FxCc4v$&kk`k7G9Lii_OgAyl3?xD(zifw*s7-(_JW< zCY+PPNO(qtBL2j2DEuf!1-t&KlYzm%fem;PUF>I$!+_vVLj(Fm7g6!yd#Dc<1$;e= zz2|sl%O>yBbKn!#m|X_blQG6!G}}dQchO=O6}srv$LO6dTIwkZR(4fd=}c9H-9 diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/exceptions.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/exceptions.cpython-312.pyc deleted file mode 100644 index c6c7eb7e3d6faf063e089027c63da6e2e58e2283..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2613 zcmai0-ES0C6u)<7c6VmG+tLr(3Ti7Nuvm7n)JBt{Am33}Y^x^Y!(^Dbr6aSm%bi*1 zl0NXzL`XD&2V+fq;8B7PyqNGOkoeN3V(>33r9nGvl znBnTTXrsS{C0ObO=&)|rn1H9m(=EJb6W$TyuxbWY&9dIss(o^=P8jWCdTVs69Nhw= z-J3@HYdyK%e{lO;La2v>n$V7VP9*e?Dv?(XY+vY8?0l644inmRt-^AuFy6C6_F>s& zzUcbY_C43esmC}kbCGd4vm<7e5YACy$l(vXFoI6@f8`4YHc#H21U6@wTMNmpU2t1`{iATCLkV%m&?(ZipcaOsSGh0IWh zde#JQj+(|4$>}@;a8Y!GksVb-%Yl=Mq{|}P^F?Zw*)HRuNOBfcdEh{N6KGPkxD z%s2E~61AYK+C2Fh@Oe6~%&R}rX4EOEk(^S@sk{s3@-1k(!Q>Q?2&)ywg>G41;6;`N z@z+A;&pb6#7?$Pub{JY#hzA&kcKOLxl|6=C9iO#9E4Rrg24+cxKQxD zGlfbmnk@$h@^6e5LN8+bDzv^BFtB6d@HPeslSb)eDiQfM2KO1 ze3`6gh|zg9wX6@``20@)-GL>2@Sgth8i07!VlIt$3hWZIERnV_6RJM?8Ou6fwfzR7 zdO^f7njCM%G0s8_BQB32vW-hS%=azpCglTwhbWUnd=Td&hte1b6u~@RAa$J#Y`;IU zf7M7PCh4DB2kQxR>PgbwS5HY-Cq3I1cP@rEjx5f7mtXGA)#coJnxs1)b>Ng$f|lcD z#G4Q>`f=tITnr_~hS8MR#q zqmkiEfwMp!DoR3+=OEH{WSoI*?JY2y_2*Jo`JRIIKz&kepg^g(WJ7VCCU~H@6eunw z`WumZs#+AG1ZZc~&ppm$Y5N?cmi*rs2Wa!yfX({DpcqK$G zKq>e82Crye8NcgUDVN3mUtSr#ryr2PhC0;F7{?Ry4m460xEmirGYn>P?qm7kXkJ19 z9mxIrM@~E>N@8qr?gwLeXta+0ohkXad-M_ZR?);n<2!9cH_O~w9*}mTTNEpj-h>!xrT(*n6NeRPEw*@t&IYfz>r(|47>)~S)I1y6%p}KGpsa4txHBHu zpiwf2p=>8`&;J~@#Uw5m_JRQ>H&ZxvPk%F}F!g*2pU>WYSdpW771tjIgOy96iSZV7 z;NOlO5qPYki8;epin#%ijA|7xI2$Jk#wISHGJ8<3La)?ZJBU1o>xg23nRKELz6soCQN;2a--WmW_D?mTwyy)v;?gJ|(Pde75R~DI3jYM)Q^hfO zA~RWqbCj5@XtM6ew3WB#d+=phWwA6p(I?^$#XJ0M=%VVwi(u+1rSuOn{wo>(n;cvw z2Op4q56H;}Ap6$Xk34Hg-ram`@rq@S9Tv- sBE8q97jxIG6>?}jsZ#yg#5#e;dPb#Vix&E0>luZP-zfh};2{t8A2df>4FCWD diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/logger.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/logger.cpython-312.pyc deleted file mode 100644 index b185d10845cfdf558735bd92e82cc0560f1f8db7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmX@j%ge<81f4-j8D>EGF^B^L%uvQ>10Z8MLkdF*V-7JY!q UDRq%kYKG-yPSr-XA`YN50Hbi_@% diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/param_functions.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/param_functions.cpython-312.pyc deleted file mode 100644 index cb8bdd70c80c98e32426ce42e4a81138362b6349..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7469 zcmeHLNpBq25q>>0-Lvn*eH$*KG?vKG;vlgk%Sb3IhG8&vWF-NEfM`uWiY?EU*G)+j z8b%Je5C~!kK9~m{ct{RHa?HU$AwY7lfCQK{5+p&8LvAh6C!bPZFEbJ;g#^eb7UI@) z@vFDgt5>h8UbTLgPA3>W8{eH;{oxp6{{Ry_vp(4Qv&`5hOkGQpQp6}8Z}7$ zQ`*o^qe~ecUy=6eugNdP4u)w5S$_x0-d%L}FtU~1bqb?oi7(4Z%xGh@kK9Xr663Uk zyt{)5t-SXne1DqsqhX4yKg|>W)2Qgh!3^nMaCJZST+L^<(yj-6S+p)|$4Tp=tM!SO zNb3q|U81acR#UWBwj}K&<))Apc`9F>BJV(kQnWc5-RF*$Y5e?F=$YfIBt!Ocpqu4_ z`7!M@&F^2AE9d@&R9}(p@Hd<5c5Fed*VXHFZbvTbHPeoLr)}!3rdqdSSNV_Ec(cYU zlC88=p*9Rc@oPF3f_ z_8`1i$%;Xea5S5Ez$zgTBXM@*UDaHDkUK)z0uE)sn&n;37vHb0wi>*8v!%8gttP*# zR~K4MgN}w8Z}H}>YF)oxZLgcFt>(G;GiR%YZt}UdTKhn~!Hw#QYM5$UuewgQyt3A; z!3B-^_PQ8{Wk8}>`#mB*VV}>kRN$oMVWfUbU@}Y?nwh& z+_-o&1`v}Zn!FHEWEX3#<}EJFfY z)M6h?6j~C|uoWU2vBE@UD?(JUWTH_^AsVxyMB`SBXu^sUOGTJ=NOXQ&-;NDjBwtKk`-F=tP>^6`bX==SisW1;{me zjo%QVP&$E7dVS;d$E=W2{*)VV!u0p=nW7`p-$x1?JMBb)Vk}#7;y?-3S9X#>DVEAO zX`l>H7AOal2Pyy+fl912?(_lm0}TKTLf#P2Fv|}*BS539Fzk#0jbq#dP??RK>Ljv{ zripP_K~`L6?Yh!`H8(#Mt;#~H^?}a!3)d4cGRTK8@{{38Mn1xDy>d6Fw%c``?nX+L z)tg4EiOZNbuG3YSXmCwem(BGyKh&*K!De0|@?z{=>D`6hl@F!=lW`aMR!dv2_}Agl zh=1;N=*8P9SP$fv^giVZyRI(pmfG(Ed)C$E2E*OSCq3cL-0j=9=T=&xF}EhD*s8TO zu2s_RF&@U4T^B%cg*wX3-ft7wH+%oba)^qdjFssXLm4kG!s`yBu6XL~uaG$&_+{3i zCA-ItJ8V~;^-jGC#X){g@6I9-%Ca-vf+gn_EC)RDF&gfSqgt5&VmUwm-7Pk#w$iCy zGOO-UYpSWfh!Ya1LV^M&az(Fmahh6;=bGaj^$L(j0B1nlYJ)x`)(pN}Q>l`7%Y07d zMzgjqUZo-3ouJH)&>N{|WC>VZK!1TsO`!U=qkf(4 zeP3kT>zdj$_1gT3&g*2$IL3qxQ`quKy``FVSZ|tkg&lKZtVH$8 zjHEaU8!dN6COVVHI>Y0=UwNiOKWZ%dSPTwDMlHgJ-p1;?(k#*AGG69zbmkYQ&xI(}c!IfBkXtQ`f?eu}`54ZtvgTZ=3 z;D%Wy?~DMAvh2V;b8}(4xcS!o48d1bAICSlail!e9lik{(64SA*b;3&F-YMU-FqE?G-j~{yqQp0USxsmMHaYTWP$5N7Pwwyf$K#UI4`n*o)KASE+c{_fu;~a(?IWd z5d=uKIQ9Q-i_@<<;jnZ?>b$-9*aNx2&B5*IZDaey!=aN8bEo|Ng>QS{Z*pu$#tb@O zOje}tNo2|6Cp-PakK^DvdnNdT(tY=SuvxqRqlc+!C+fDvSdN0sg$X*M&y#>|?eTA4 C7A`OV diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/params.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/params.cpython-312.pyc deleted file mode 100644 index 14b0a39350bb4cd6bacac9160d1a2a3a45cabf23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12328 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 W^6Xs(u|619#+TmuHN#H4{Qm%Pir4`F diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/requests.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/requests.cpython-312.pyc deleted file mode 100644 index ec0072bc2240b769b644484671fcc5a3aa0a1ac9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmX@j%ge<81f4-j8GS(dF^B^LOi;#W86aaiLkdF*V-789svy`4ym_k)NBYpOv4OpPQeTT9v5}G_SZcrvxZimYP?lpOcxSUr W4J1A=Gcq#XWw5`;U|7TsT@qLHP~$GQ|X~MQM*vwLp!sQumq)tK9-s9&Ac}= zZ|B>$KSrZr0%N~8zVWw6$S*kQ4ygk!&Hx+`o#>oNDxAV`h zisWMna6k$8H~=`P1brL?EGx2)WxydN#E}q24Vhsj+(8i~!jn0ohxdp+K&3;WU5^s= ztr4(Bd#r=?&;+3aZxV*NLrQp+eEHTEc_gfoEw0ZK0ncRDlOFsH!=^b;$Xaz!k(^=D zB6X^^2D7lPk6~lVaHRj9h z)3qhE!XFo-pbiKn3a1l=*EuTaJQdePUDy*9sV=4^FM7YXA}?6BEtguZ7hu$_F{{jX zVxhvg_!=)ZKpYSkWP9uc7ooj}o!Ktua$V16@BWT)o74Fh!ePg=*(FMM3us+D>_jM$ zw3KhWQ`>ZGD^;mEZfcFD49jsf)1-RJwNo{Rruxp1!`DtNr^cwNIc39WNHuqT@=jXt zBtMQP>9tDL@dDH;+d6&Dd!j?lbryxp4px;)U44?-uq!mPX=`@HwrIo1dQX{@*#50#7gJ6rXdtKqcUv2)ql_C8&6Cx!6m*MqH~_O{1*2 zhHYiA+kQLPAm-`i5VFPR;1_=swAnbJ%H$iye3fxqh>ej2&=NH2p$7dIN1JO0X z#&C)P?G8rRBWH<;oyC?YN?{}!DC8KZ_BLFcj(GtH4mVw!zC-X`F_XG3g_E@}S%+c! z81jN)s~Gf#Fd0P%1^%H}0)#iPP^sF?on_2sY#hx#>;205tG$x%wm+g7mWFkB7dZ?> zOW-)}oZR@8+&%9+xpVT-IeGt_g0R#@PYFU7gXeMdYF13CAVQBJtf>44e3?73mn0XVJuN4vonx2kZP+%qGeAVs?xiC4<>f;pirZ Oax9ol3rBBrApZfjM#HKA diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/routing.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/routing.cpython-312.pyc deleted file mode 100644 index 33fa6b41a35825289668808855034d79489c207e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43905 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 C&K*Ml diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/staticfiles.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/staticfiles.cpython-312.pyc deleted file mode 100644 index 54537c491104909317950b73976190c10733334c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmX@j%ge<81f4-j8LmM3F^B^LOi;#W0U%>KLkdF*V-7xk$!PzNvdu^Vsdt3dTOzL wS|ZTgf=qoR)Ab4}e{tC4=BJeAq}mm60PSD|;$jfv12ZEd<2?qOA~qlg08^VnRR910 diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/templating.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/templating.cpython-312.pyc deleted file mode 100644 index ea48c7da20b0a8c177f4bd5af4c69ab0cb88dc37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmX@j%ge<81f4-j89qSzF^B^LOi;#W0U%>KLkdF*V-7SyIA=I7?;rB-F?JLl&Wm*$iJ1KLkdF*V-78L@^e%5v+@)3 zbMy03t1|VS^Ye;Jb4q}MWvO{(`Z<|N`URCG8Tom}dWJ^&#hE3kx&?{J*@@|?#rkQ9 uKnn^o^$~{a6;%G>u*uC&Da}c>E8+lJ!3e~~AjSt~Mn=Ya43(+XX}al_4!t5yPfaWacM)3RM|K~E+r2nG%HtS0@plkddD!* zDbGPHbDoPEJJ5v^=dRs!@-m6kB&B9dYPDdu(BAfl<_6K?jDD**2w+rZ@g`?m%EBqmz7iRpS<@^Yt&2ISN;N}8e0zl diff --git a/venv/lib/python3.12/site-packages/fastapi/__pycache__/utils.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/__pycache__/utils.cpython-312.pyc deleted file mode 100644 index 178f0f2a597b327fe466be5400901e2525077be7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8633 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 diff --git a/venv/lib/python3.12/site-packages/fastapi/applications.py b/venv/lib/python3.12/site-packages/fastapi/applications.py deleted file mode 100644 index 8b3a74d..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/applications.py +++ /dev/null @@ -1,910 +0,0 @@ -from enum import Enum -from typing import ( - Any, - Awaitable, - Callable, - Coroutine, - Dict, - List, - Optional, - Sequence, - Type, - TypeVar, - Union, -) - -from fastapi import routing -from fastapi.datastructures import Default, DefaultPlaceholder -from fastapi.encoders import DictIntStrAny, SetIntStr -from fastapi.exception_handlers import ( - http_exception_handler, - request_validation_exception_handler, -) -from fastapi.exceptions import RequestValidationError -from fastapi.logger import logger -from fastapi.middleware.asyncexitstack import AsyncExitStackMiddleware -from fastapi.openapi.docs import ( - get_redoc_html, - get_swagger_ui_html, - get_swagger_ui_oauth2_redirect_html, -) -from fastapi.openapi.utils import get_openapi -from fastapi.params import Depends -from fastapi.types import DecoratedCallable -from fastapi.utils import generate_unique_id -from starlette.applications import Starlette -from starlette.datastructures import State -from starlette.exceptions import HTTPException -from starlette.middleware import Middleware -from starlette.middleware.base import BaseHTTPMiddleware -from starlette.middleware.errors import ServerErrorMiddleware -from starlette.middleware.exceptions import ExceptionMiddleware -from starlette.requests import Request -from starlette.responses import HTMLResponse, JSONResponse, Response -from starlette.routing import BaseRoute -from starlette.types import ASGIApp, Lifespan, Receive, Scope, Send - -AppType = TypeVar("AppType", bound="FastAPI") - - -class FastAPI(Starlette): - def __init__( - self: AppType, - *, - debug: bool = False, - routes: Optional[List[BaseRoute]] = None, - title: str = "FastAPI", - description: str = "", - version: str = "0.1.0", - openapi_url: Optional[str] = "/openapi.json", - openapi_tags: Optional[List[Dict[str, Any]]] = None, - servers: Optional[List[Dict[str, Union[str, Any]]]] = None, - dependencies: Optional[Sequence[Depends]] = None, - default_response_class: Type[Response] = Default(JSONResponse), - docs_url: Optional[str] = "/docs", - redoc_url: Optional[str] = "/redoc", - swagger_ui_oauth2_redirect_url: Optional[str] = "/docs/oauth2-redirect", - swagger_ui_init_oauth: Optional[Dict[str, Any]] = None, - middleware: Optional[Sequence[Middleware]] = None, - exception_handlers: Optional[ - Dict[ - Union[int, Type[Exception]], - Callable[[Request, Any], Coroutine[Any, Any, Response]], - ] - ] = None, - on_startup: Optional[Sequence[Callable[[], Any]]] = None, - on_shutdown: Optional[Sequence[Callable[[], Any]]] = None, - lifespan: Optional[Lifespan[AppType]] = None, - terms_of_service: Optional[str] = None, - contact: Optional[Dict[str, Union[str, Any]]] = None, - license_info: Optional[Dict[str, Union[str, Any]]] = None, - openapi_prefix: str = "", - root_path: str = "", - root_path_in_servers: bool = True, - responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None, - callbacks: Optional[List[BaseRoute]] = None, - deprecated: Optional[bool] = None, - include_in_schema: bool = True, - swagger_ui_parameters: Optional[Dict[str, Any]] = None, - generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( - generate_unique_id - ), - **extra: Any, - ) -> None: - self.debug = debug - self.title = title - self.description = description - self.version = version - self.terms_of_service = terms_of_service - self.contact = contact - self.license_info = license_info - self.openapi_url = openapi_url - self.openapi_tags = openapi_tags - self.root_path_in_servers = root_path_in_servers - self.docs_url = docs_url - self.redoc_url = redoc_url - self.swagger_ui_oauth2_redirect_url = swagger_ui_oauth2_redirect_url - self.swagger_ui_init_oauth = swagger_ui_init_oauth - self.swagger_ui_parameters = swagger_ui_parameters - self.servers = servers or [] - self.extra = extra - self.openapi_version = "3.0.2" - self.openapi_schema: Optional[Dict[str, Any]] = None - if self.openapi_url: - assert self.title, "A title must be provided for OpenAPI, e.g.: 'My API'" - assert self.version, "A version must be provided for OpenAPI, e.g.: '2.1.0'" - # TODO: remove when discarding the openapi_prefix parameter - if openapi_prefix: - logger.warning( - '"openapi_prefix" has been deprecated in favor of "root_path", which ' - "follows more closely the ASGI standard, is simpler, and more " - "automatic. Check the docs at " - "https://fastapi.tiangolo.com/advanced/sub-applications/" - ) - self.root_path = root_path or openapi_prefix - self.state: State = State() - self.dependency_overrides: Dict[Callable[..., Any], Callable[..., Any]] = {} - self.router: routing.APIRouter = routing.APIRouter( - routes=routes, - dependency_overrides_provider=self, - on_startup=on_startup, - on_shutdown=on_shutdown, - lifespan=lifespan, - default_response_class=default_response_class, - dependencies=dependencies, - callbacks=callbacks, - deprecated=deprecated, - include_in_schema=include_in_schema, - responses=responses, - generate_unique_id_function=generate_unique_id_function, - ) - self.exception_handlers: Dict[ - Any, Callable[[Request, Any], Union[Response, Awaitable[Response]]] - ] = ({} if exception_handlers is None else dict(exception_handlers)) - self.exception_handlers.setdefault(HTTPException, http_exception_handler) - self.exception_handlers.setdefault( - RequestValidationError, request_validation_exception_handler - ) - - self.user_middleware: List[Middleware] = ( - [] if middleware is None else list(middleware) - ) - self.middleware_stack: Union[ASGIApp, None] = None - self.setup() - - def build_middleware_stack(self) -> ASGIApp: - # Duplicate/override from Starlette to add AsyncExitStackMiddleware - # inside of ExceptionMiddleware, inside of custom user middlewares - debug = self.debug - error_handler = None - exception_handlers = {} - - for key, value in self.exception_handlers.items(): - if key in (500, Exception): - error_handler = value - else: - exception_handlers[key] = value - - middleware = ( - [Middleware(ServerErrorMiddleware, handler=error_handler, debug=debug)] - + self.user_middleware - + [ - Middleware( - ExceptionMiddleware, handlers=exception_handlers, debug=debug - ), - # Add FastAPI-specific AsyncExitStackMiddleware for dependencies with - # contextvars. - # This needs to happen after user middlewares because those create a - # new contextvars context copy by using a new AnyIO task group. - # The initial part of dependencies with yield is executed in the - # FastAPI code, inside all the middlewares, but the teardown part - # (after yield) is executed in the AsyncExitStack in this middleware, - # if the AsyncExitStack lived outside of the custom middlewares and - # contextvars were set in a dependency with yield in that internal - # contextvars context, the values would not be available in the - # outside context of the AsyncExitStack. - # By putting the middleware and the AsyncExitStack here, inside all - # user middlewares, the code before and after yield in dependencies - # with yield is executed in the same contextvars context, so all values - # set in contextvars before yield is still available after yield as - # would be expected. - # Additionally, by having this AsyncExitStack here, after the - # ExceptionMiddleware, now dependencies can catch handled exceptions, - # e.g. HTTPException, to customize the teardown code (e.g. DB session - # rollback). - Middleware(AsyncExitStackMiddleware), - ] - ) - - app = self.router - for cls, options in reversed(middleware): - app = cls(app=app, **options) - return app - - def openapi(self) -> Dict[str, Any]: - if not self.openapi_schema: - self.openapi_schema = get_openapi( - title=self.title, - version=self.version, - openapi_version=self.openapi_version, - description=self.description, - terms_of_service=self.terms_of_service, - contact=self.contact, - license_info=self.license_info, - routes=self.routes, - tags=self.openapi_tags, - servers=self.servers, - ) - return self.openapi_schema - - def setup(self) -> None: - if self.openapi_url: - urls = (server_data.get("url") for server_data in self.servers) - server_urls = {url for url in urls if url} - - async def openapi(req: Request) -> JSONResponse: - root_path = req.scope.get("root_path", "").rstrip("/") - if root_path not in server_urls: - if root_path and self.root_path_in_servers: - self.servers.insert(0, {"url": root_path}) - server_urls.add(root_path) - return JSONResponse(self.openapi()) - - self.add_route(self.openapi_url, openapi, include_in_schema=False) - if self.openapi_url and self.docs_url: - - async def swagger_ui_html(req: Request) -> HTMLResponse: - root_path = req.scope.get("root_path", "").rstrip("/") - openapi_url = root_path + self.openapi_url - oauth2_redirect_url = self.swagger_ui_oauth2_redirect_url - if oauth2_redirect_url: - oauth2_redirect_url = root_path + oauth2_redirect_url - return get_swagger_ui_html( - openapi_url=openapi_url, - title=self.title + " - Swagger UI", - oauth2_redirect_url=oauth2_redirect_url, - init_oauth=self.swagger_ui_init_oauth, - swagger_ui_parameters=self.swagger_ui_parameters, - ) - - self.add_route(self.docs_url, swagger_ui_html, include_in_schema=False) - - if self.swagger_ui_oauth2_redirect_url: - - async def swagger_ui_redirect(req: Request) -> HTMLResponse: - return get_swagger_ui_oauth2_redirect_html() - - self.add_route( - self.swagger_ui_oauth2_redirect_url, - swagger_ui_redirect, - include_in_schema=False, - ) - if self.openapi_url and self.redoc_url: - - async def redoc_html(req: Request) -> HTMLResponse: - root_path = req.scope.get("root_path", "").rstrip("/") - openapi_url = root_path + self.openapi_url - return get_redoc_html( - openapi_url=openapi_url, title=self.title + " - ReDoc" - ) - - self.add_route(self.redoc_url, redoc_html, include_in_schema=False) - - async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None: - if self.root_path: - scope["root_path"] = self.root_path - await super().__call__(scope, receive, send) - - def add_api_route( - self, - path: str, - endpoint: Callable[..., Coroutine[Any, Any, Response]], - *, - response_model: Any = Default(None), - status_code: Optional[int] = None, - tags: Optional[List[Union[str, Enum]]] = None, - dependencies: Optional[Sequence[Depends]] = None, - summary: Optional[str] = None, - description: Optional[str] = None, - response_description: str = "Successful Response", - responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None, - deprecated: Optional[bool] = None, - methods: Optional[List[str]] = None, - operation_id: Optional[str] = None, - response_model_include: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_exclude: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_by_alias: bool = True, - response_model_exclude_unset: bool = False, - response_model_exclude_defaults: bool = False, - response_model_exclude_none: bool = False, - include_in_schema: bool = True, - response_class: Union[Type[Response], DefaultPlaceholder] = Default( - JSONResponse - ), - name: Optional[str] = None, - openapi_extra: Optional[Dict[str, Any]] = None, - generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( - generate_unique_id - ), - ) -> None: - self.router.add_api_route( - path, - endpoint=endpoint, - response_model=response_model, - status_code=status_code, - tags=tags, - dependencies=dependencies, - summary=summary, - description=description, - response_description=response_description, - responses=responses, - deprecated=deprecated, - methods=methods, - operation_id=operation_id, - response_model_include=response_model_include, - response_model_exclude=response_model_exclude, - response_model_by_alias=response_model_by_alias, - response_model_exclude_unset=response_model_exclude_unset, - response_model_exclude_defaults=response_model_exclude_defaults, - response_model_exclude_none=response_model_exclude_none, - include_in_schema=include_in_schema, - response_class=response_class, - name=name, - openapi_extra=openapi_extra, - generate_unique_id_function=generate_unique_id_function, - ) - - def api_route( - self, - path: str, - *, - response_model: Any = Default(None), - status_code: Optional[int] = None, - tags: Optional[List[Union[str, Enum]]] = None, - dependencies: Optional[Sequence[Depends]] = None, - summary: Optional[str] = None, - description: Optional[str] = None, - response_description: str = "Successful Response", - responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None, - deprecated: Optional[bool] = None, - methods: Optional[List[str]] = None, - operation_id: Optional[str] = None, - response_model_include: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_exclude: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_by_alias: bool = True, - response_model_exclude_unset: bool = False, - response_model_exclude_defaults: bool = False, - response_model_exclude_none: bool = False, - include_in_schema: bool = True, - response_class: Type[Response] = Default(JSONResponse), - name: Optional[str] = None, - openapi_extra: Optional[Dict[str, Any]] = None, - generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( - generate_unique_id - ), - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - def decorator(func: DecoratedCallable) -> DecoratedCallable: - self.router.add_api_route( - path, - func, - response_model=response_model, - status_code=status_code, - tags=tags, - dependencies=dependencies, - summary=summary, - description=description, - response_description=response_description, - responses=responses, - deprecated=deprecated, - methods=methods, - operation_id=operation_id, - response_model_include=response_model_include, - response_model_exclude=response_model_exclude, - response_model_by_alias=response_model_by_alias, - response_model_exclude_unset=response_model_exclude_unset, - response_model_exclude_defaults=response_model_exclude_defaults, - response_model_exclude_none=response_model_exclude_none, - include_in_schema=include_in_schema, - response_class=response_class, - name=name, - openapi_extra=openapi_extra, - generate_unique_id_function=generate_unique_id_function, - ) - return func - - return decorator - - def add_api_websocket_route( - self, path: str, endpoint: Callable[..., Any], name: Optional[str] = None - ) -> None: - self.router.add_api_websocket_route(path, endpoint, name=name) - - def websocket( - self, path: str, name: Optional[str] = None - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - def decorator(func: DecoratedCallable) -> DecoratedCallable: - self.add_api_websocket_route(path, func, name=name) - return func - - return decorator - - def include_router( - self, - router: routing.APIRouter, - *, - prefix: str = "", - tags: Optional[List[Union[str, Enum]]] = None, - dependencies: Optional[Sequence[Depends]] = None, - responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None, - deprecated: Optional[bool] = None, - include_in_schema: bool = True, - default_response_class: Type[Response] = Default(JSONResponse), - callbacks: Optional[List[BaseRoute]] = None, - generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( - generate_unique_id - ), - ) -> None: - self.router.include_router( - router, - prefix=prefix, - tags=tags, - dependencies=dependencies, - responses=responses, - deprecated=deprecated, - include_in_schema=include_in_schema, - default_response_class=default_response_class, - callbacks=callbacks, - generate_unique_id_function=generate_unique_id_function, - ) - - def get( - self, - path: str, - *, - response_model: Any = Default(None), - status_code: Optional[int] = None, - tags: Optional[List[Union[str, Enum]]] = None, - dependencies: Optional[Sequence[Depends]] = None, - summary: Optional[str] = None, - description: Optional[str] = None, - response_description: str = "Successful Response", - responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None, - deprecated: Optional[bool] = None, - operation_id: Optional[str] = None, - response_model_include: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_exclude: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_by_alias: bool = True, - response_model_exclude_unset: bool = False, - response_model_exclude_defaults: bool = False, - response_model_exclude_none: bool = False, - include_in_schema: bool = True, - response_class: Type[Response] = Default(JSONResponse), - name: Optional[str] = None, - callbacks: Optional[List[BaseRoute]] = None, - openapi_extra: Optional[Dict[str, Any]] = None, - generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( - generate_unique_id - ), - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - return self.router.get( - path, - response_model=response_model, - status_code=status_code, - tags=tags, - dependencies=dependencies, - summary=summary, - description=description, - response_description=response_description, - responses=responses, - deprecated=deprecated, - operation_id=operation_id, - response_model_include=response_model_include, - response_model_exclude=response_model_exclude, - response_model_by_alias=response_model_by_alias, - response_model_exclude_unset=response_model_exclude_unset, - response_model_exclude_defaults=response_model_exclude_defaults, - response_model_exclude_none=response_model_exclude_none, - include_in_schema=include_in_schema, - response_class=response_class, - name=name, - callbacks=callbacks, - openapi_extra=openapi_extra, - generate_unique_id_function=generate_unique_id_function, - ) - - def put( - self, - path: str, - *, - response_model: Any = Default(None), - status_code: Optional[int] = None, - tags: Optional[List[Union[str, Enum]]] = None, - dependencies: Optional[Sequence[Depends]] = None, - summary: Optional[str] = None, - description: Optional[str] = None, - response_description: str = "Successful Response", - responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None, - deprecated: Optional[bool] = None, - operation_id: Optional[str] = None, - response_model_include: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_exclude: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_by_alias: bool = True, - response_model_exclude_unset: bool = False, - response_model_exclude_defaults: bool = False, - response_model_exclude_none: bool = False, - include_in_schema: bool = True, - response_class: Type[Response] = Default(JSONResponse), - name: Optional[str] = None, - callbacks: Optional[List[BaseRoute]] = None, - openapi_extra: Optional[Dict[str, Any]] = None, - generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( - generate_unique_id - ), - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - return self.router.put( - path, - response_model=response_model, - status_code=status_code, - tags=tags, - dependencies=dependencies, - summary=summary, - description=description, - response_description=response_description, - responses=responses, - deprecated=deprecated, - operation_id=operation_id, - response_model_include=response_model_include, - response_model_exclude=response_model_exclude, - response_model_by_alias=response_model_by_alias, - response_model_exclude_unset=response_model_exclude_unset, - response_model_exclude_defaults=response_model_exclude_defaults, - response_model_exclude_none=response_model_exclude_none, - include_in_schema=include_in_schema, - response_class=response_class, - name=name, - callbacks=callbacks, - openapi_extra=openapi_extra, - generate_unique_id_function=generate_unique_id_function, - ) - - def post( - self, - path: str, - *, - response_model: Any = Default(None), - status_code: Optional[int] = None, - tags: Optional[List[Union[str, Enum]]] = None, - dependencies: Optional[Sequence[Depends]] = None, - summary: Optional[str] = None, - description: Optional[str] = None, - response_description: str = "Successful Response", - responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None, - deprecated: Optional[bool] = None, - operation_id: Optional[str] = None, - response_model_include: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_exclude: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_by_alias: bool = True, - response_model_exclude_unset: bool = False, - response_model_exclude_defaults: bool = False, - response_model_exclude_none: bool = False, - include_in_schema: bool = True, - response_class: Type[Response] = Default(JSONResponse), - name: Optional[str] = None, - callbacks: Optional[List[BaseRoute]] = None, - openapi_extra: Optional[Dict[str, Any]] = None, - generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( - generate_unique_id - ), - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - return self.router.post( - path, - response_model=response_model, - status_code=status_code, - tags=tags, - dependencies=dependencies, - summary=summary, - description=description, - response_description=response_description, - responses=responses, - deprecated=deprecated, - operation_id=operation_id, - response_model_include=response_model_include, - response_model_exclude=response_model_exclude, - response_model_by_alias=response_model_by_alias, - response_model_exclude_unset=response_model_exclude_unset, - response_model_exclude_defaults=response_model_exclude_defaults, - response_model_exclude_none=response_model_exclude_none, - include_in_schema=include_in_schema, - response_class=response_class, - name=name, - callbacks=callbacks, - openapi_extra=openapi_extra, - generate_unique_id_function=generate_unique_id_function, - ) - - def delete( - self, - path: str, - *, - response_model: Any = Default(None), - status_code: Optional[int] = None, - tags: Optional[List[Union[str, Enum]]] = None, - dependencies: Optional[Sequence[Depends]] = None, - summary: Optional[str] = None, - description: Optional[str] = None, - response_description: str = "Successful Response", - responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None, - deprecated: Optional[bool] = None, - operation_id: Optional[str] = None, - response_model_include: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_exclude: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_by_alias: bool = True, - response_model_exclude_unset: bool = False, - response_model_exclude_defaults: bool = False, - response_model_exclude_none: bool = False, - include_in_schema: bool = True, - response_class: Type[Response] = Default(JSONResponse), - name: Optional[str] = None, - callbacks: Optional[List[BaseRoute]] = None, - openapi_extra: Optional[Dict[str, Any]] = None, - generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( - generate_unique_id - ), - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - return self.router.delete( - path, - response_model=response_model, - status_code=status_code, - tags=tags, - dependencies=dependencies, - summary=summary, - description=description, - response_description=response_description, - responses=responses, - deprecated=deprecated, - operation_id=operation_id, - response_model_include=response_model_include, - response_model_exclude=response_model_exclude, - response_model_by_alias=response_model_by_alias, - response_model_exclude_unset=response_model_exclude_unset, - response_model_exclude_defaults=response_model_exclude_defaults, - response_model_exclude_none=response_model_exclude_none, - include_in_schema=include_in_schema, - response_class=response_class, - name=name, - callbacks=callbacks, - openapi_extra=openapi_extra, - generate_unique_id_function=generate_unique_id_function, - ) - - def options( - self, - path: str, - *, - response_model: Any = Default(None), - status_code: Optional[int] = None, - tags: Optional[List[Union[str, Enum]]] = None, - dependencies: Optional[Sequence[Depends]] = None, - summary: Optional[str] = None, - description: Optional[str] = None, - response_description: str = "Successful Response", - responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None, - deprecated: Optional[bool] = None, - operation_id: Optional[str] = None, - response_model_include: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_exclude: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_by_alias: bool = True, - response_model_exclude_unset: bool = False, - response_model_exclude_defaults: bool = False, - response_model_exclude_none: bool = False, - include_in_schema: bool = True, - response_class: Type[Response] = Default(JSONResponse), - name: Optional[str] = None, - callbacks: Optional[List[BaseRoute]] = None, - openapi_extra: Optional[Dict[str, Any]] = None, - generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( - generate_unique_id - ), - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - return self.router.options( - path, - response_model=response_model, - status_code=status_code, - tags=tags, - dependencies=dependencies, - summary=summary, - description=description, - response_description=response_description, - responses=responses, - deprecated=deprecated, - operation_id=operation_id, - response_model_include=response_model_include, - response_model_exclude=response_model_exclude, - response_model_by_alias=response_model_by_alias, - response_model_exclude_unset=response_model_exclude_unset, - response_model_exclude_defaults=response_model_exclude_defaults, - response_model_exclude_none=response_model_exclude_none, - include_in_schema=include_in_schema, - response_class=response_class, - name=name, - callbacks=callbacks, - openapi_extra=openapi_extra, - generate_unique_id_function=generate_unique_id_function, - ) - - def head( - self, - path: str, - *, - response_model: Any = Default(None), - status_code: Optional[int] = None, - tags: Optional[List[Union[str, Enum]]] = None, - dependencies: Optional[Sequence[Depends]] = None, - summary: Optional[str] = None, - description: Optional[str] = None, - response_description: str = "Successful Response", - responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None, - deprecated: Optional[bool] = None, - operation_id: Optional[str] = None, - response_model_include: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_exclude: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_by_alias: bool = True, - response_model_exclude_unset: bool = False, - response_model_exclude_defaults: bool = False, - response_model_exclude_none: bool = False, - include_in_schema: bool = True, - response_class: Type[Response] = Default(JSONResponse), - name: Optional[str] = None, - callbacks: Optional[List[BaseRoute]] = None, - openapi_extra: Optional[Dict[str, Any]] = None, - generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( - generate_unique_id - ), - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - return self.router.head( - path, - response_model=response_model, - status_code=status_code, - tags=tags, - dependencies=dependencies, - summary=summary, - description=description, - response_description=response_description, - responses=responses, - deprecated=deprecated, - operation_id=operation_id, - response_model_include=response_model_include, - response_model_exclude=response_model_exclude, - response_model_by_alias=response_model_by_alias, - response_model_exclude_unset=response_model_exclude_unset, - response_model_exclude_defaults=response_model_exclude_defaults, - response_model_exclude_none=response_model_exclude_none, - include_in_schema=include_in_schema, - response_class=response_class, - name=name, - callbacks=callbacks, - openapi_extra=openapi_extra, - generate_unique_id_function=generate_unique_id_function, - ) - - def patch( - self, - path: str, - *, - response_model: Any = Default(None), - status_code: Optional[int] = None, - tags: Optional[List[Union[str, Enum]]] = None, - dependencies: Optional[Sequence[Depends]] = None, - summary: Optional[str] = None, - description: Optional[str] = None, - response_description: str = "Successful Response", - responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None, - deprecated: Optional[bool] = None, - operation_id: Optional[str] = None, - response_model_include: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_exclude: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_by_alias: bool = True, - response_model_exclude_unset: bool = False, - response_model_exclude_defaults: bool = False, - response_model_exclude_none: bool = False, - include_in_schema: bool = True, - response_class: Type[Response] = Default(JSONResponse), - name: Optional[str] = None, - callbacks: Optional[List[BaseRoute]] = None, - openapi_extra: Optional[Dict[str, Any]] = None, - generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( - generate_unique_id - ), - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - return self.router.patch( - path, - response_model=response_model, - status_code=status_code, - tags=tags, - dependencies=dependencies, - summary=summary, - description=description, - response_description=response_description, - responses=responses, - deprecated=deprecated, - operation_id=operation_id, - response_model_include=response_model_include, - response_model_exclude=response_model_exclude, - response_model_by_alias=response_model_by_alias, - response_model_exclude_unset=response_model_exclude_unset, - response_model_exclude_defaults=response_model_exclude_defaults, - response_model_exclude_none=response_model_exclude_none, - include_in_schema=include_in_schema, - response_class=response_class, - name=name, - callbacks=callbacks, - openapi_extra=openapi_extra, - generate_unique_id_function=generate_unique_id_function, - ) - - def trace( - self, - path: str, - *, - response_model: Any = Default(None), - status_code: Optional[int] = None, - tags: Optional[List[Union[str, Enum]]] = None, - dependencies: Optional[Sequence[Depends]] = None, - summary: Optional[str] = None, - description: Optional[str] = None, - response_description: str = "Successful Response", - responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None, - deprecated: Optional[bool] = None, - operation_id: Optional[str] = None, - response_model_include: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_exclude: Optional[Union[SetIntStr, DictIntStrAny]] = None, - response_model_by_alias: bool = True, - response_model_exclude_unset: bool = False, - response_model_exclude_defaults: bool = False, - response_model_exclude_none: bool = False, - include_in_schema: bool = True, - response_class: Type[Response] = Default(JSONResponse), - name: Optional[str] = None, - callbacks: Optional[List[BaseRoute]] = None, - openapi_extra: Optional[Dict[str, Any]] = None, - generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( - generate_unique_id - ), - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - return self.router.trace( - path, - response_model=response_model, - status_code=status_code, - tags=tags, - dependencies=dependencies, - summary=summary, - description=description, - response_description=response_description, - responses=responses, - deprecated=deprecated, - operation_id=operation_id, - response_model_include=response_model_include, - response_model_exclude=response_model_exclude, - response_model_by_alias=response_model_by_alias, - response_model_exclude_unset=response_model_exclude_unset, - response_model_exclude_defaults=response_model_exclude_defaults, - response_model_exclude_none=response_model_exclude_none, - include_in_schema=include_in_schema, - response_class=response_class, - name=name, - callbacks=callbacks, - openapi_extra=openapi_extra, - generate_unique_id_function=generate_unique_id_function, - ) - - def websocket_route( - self, path: str, name: Union[str, None] = None - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - def decorator(func: DecoratedCallable) -> DecoratedCallable: - self.router.add_websocket_route(path, func, name=name) - return func - - return decorator - - def on_event( - self, event_type: str - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - return self.router.on_event(event_type) - - def middleware( - self, middleware_type: str - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - def decorator(func: DecoratedCallable) -> DecoratedCallable: - self.add_middleware(BaseHTTPMiddleware, dispatch=func) - return func - - return decorator - - def exception_handler( - self, exc_class_or_status_code: Union[int, Type[Exception]] - ) -> Callable[[DecoratedCallable], DecoratedCallable]: - def decorator(func: DecoratedCallable) -> DecoratedCallable: - self.add_exception_handler(exc_class_or_status_code, func) - return func - - return decorator diff --git a/venv/lib/python3.12/site-packages/fastapi/background.py b/venv/lib/python3.12/site-packages/fastapi/background.py deleted file mode 100644 index dd3bbe2..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/background.py +++ /dev/null @@ -1 +0,0 @@ -from starlette.background import BackgroundTasks as BackgroundTasks # noqa diff --git a/venv/lib/python3.12/site-packages/fastapi/concurrency.py b/venv/lib/python3.12/site-packages/fastapi/concurrency.py deleted file mode 100644 index 31b878d..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/concurrency.py +++ /dev/null @@ -1,40 +0,0 @@ -from contextlib import AsyncExitStack as AsyncExitStack # noqa -from contextlib import asynccontextmanager as asynccontextmanager -from typing import AsyncGenerator, ContextManager, TypeVar - -import anyio -from anyio import CapacityLimiter -from starlette.concurrency import iterate_in_threadpool as iterate_in_threadpool # noqa -from starlette.concurrency import run_in_threadpool as run_in_threadpool # noqa -from starlette.concurrency import ( # noqa - run_until_first_complete as run_until_first_complete, -) - -_T = TypeVar("_T") - - -@asynccontextmanager -async def contextmanager_in_threadpool( - cm: ContextManager[_T], -) -> AsyncGenerator[_T, None]: - # blocking __exit__ from running waiting on a free thread - # can create race conditions/deadlocks if the context manager itself - # has it's own internal pool (e.g. a database connection pool) - # to avoid this we let __exit__ run without a capacity limit - # since we're creating a new limiter for each call, any non-zero limit - # works (1 is arbitrary) - exit_limiter = CapacityLimiter(1) - try: - yield await run_in_threadpool(cm.__enter__) - except Exception as e: - ok = bool( - await anyio.to_thread.run_sync( - cm.__exit__, type(e), e, None, limiter=exit_limiter - ) - ) - if not ok: - raise e - else: - await anyio.to_thread.run_sync( - cm.__exit__, None, None, None, limiter=exit_limiter - ) diff --git a/venv/lib/python3.12/site-packages/fastapi/datastructures.py b/venv/lib/python3.12/site-packages/fastapi/datastructures.py deleted file mode 100644 index b20a25a..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/datastructures.py +++ /dev/null @@ -1,56 +0,0 @@ -from typing import Any, Callable, Dict, Iterable, Type, TypeVar - -from starlette.datastructures import URL as URL # noqa: F401 -from starlette.datastructures import Address as Address # noqa: F401 -from starlette.datastructures import FormData as FormData # noqa: F401 -from starlette.datastructures import Headers as Headers # noqa: F401 -from starlette.datastructures import QueryParams as QueryParams # noqa: F401 -from starlette.datastructures import State as State # noqa: F401 -from starlette.datastructures import UploadFile as StarletteUploadFile - - -class UploadFile(StarletteUploadFile): - @classmethod - def __get_validators__(cls: Type["UploadFile"]) -> Iterable[Callable[..., Any]]: - yield cls.validate - - @classmethod - def validate(cls: Type["UploadFile"], v: Any) -> Any: - if not isinstance(v, StarletteUploadFile): - raise ValueError(f"Expected UploadFile, received: {type(v)}") - return v - - @classmethod - def __modify_schema__(cls, field_schema: Dict[str, Any]) -> None: - field_schema.update({"type": "string", "format": "binary"}) - - -class DefaultPlaceholder: - """ - You shouldn't use this class directly. - - It's used internally to recognize when a default value has been overwritten, even - if the overridden default value was truthy. - """ - - def __init__(self, value: Any): - self.value = value - - def __bool__(self) -> bool: - return bool(self.value) - - def __eq__(self, o: object) -> bool: - return isinstance(o, DefaultPlaceholder) and o.value == self.value - - -DefaultType = TypeVar("DefaultType") - - -def Default(value: DefaultType) -> DefaultType: - """ - You shouldn't use this function directly. - - It's used internally to recognize when a default value has been overwritten, even - if the overridden default value was truthy. - """ - return DefaultPlaceholder(value) # type: ignore diff --git a/venv/lib/python3.12/site-packages/fastapi/dependencies/__init__.py b/venv/lib/python3.12/site-packages/fastapi/dependencies/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/fastapi/dependencies/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/dependencies/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 8767944949a6590a3f17e883da8ef4c41a844bf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190 zcmX@j%ge<81f4-j86f&Gh(HIQS%4zb87dhx8U0o=6fpsLpFwJV#p-9|=cejs7%Q6rQ!$|IVND?>MoWG(Vf9cKR1eTM*EyNQD+?=*0+`_3orGvAt$z4Y=}w zLk~p)!L3w6!j(9rf1d_Wq^Wt#2ZP{D#17Vn^9~1C$#?C8|&+6(KKFe0g8RpZ8b9yjTh30|NSd zmCIImgT7U#RfS4|72lvrT`w7p=VXRBdO=fZ`CN&XRmEA( zk)aOQTLt9?p(HP;B=3vBzEmIet9~ld01Zxp7k`@~>^YDRH3TVW4ZCYxf^|zetXgt7uhvwUj%fRaw1kfbnfweLGh!6?3(Qv87dy zW)C09v64X#)nsK`zCu}UQ)Y%-E9F#Lqg53SvINEoo*T>7;NS~|Qnh3h3RhGA^5R+7 z8-~5GVG!>TJ4iCQ>*9~$lsT5VE`Au>12fSFKuBSnuPRq)pX_#p zSB1?5b>dnuAA?w!v?6CYX=I3iSEYm%tI5Vzp(g8cg;{ZkO1e?=!>AP$ty-lD zW{&O=!#ZU(2${})oN11~^%RO}6f-E&C^9GxpqNF0q|WLGQJqJzfC9OyFQJf7ETdRKfw{~I>eQ&~RmDvt z7&ef{owRd@v%4w0D=?oxu8{rdr_1V&CQW~rwUe<4X^LG|%tE|116@|PR*+_}%Np>W z4Ru*D(s^q}VMiFw4vGQ7RN$aEAbb-C^#S6Q3SqM!5C%1G%|SqzHytzp2otD-!hrfc z6aj>JiMQqupg|8M0AZrxtx4X*Tk2^B-U@Gqn?ZOSA-r`Qs6-i$npVUV};-WSVYJ74k1NtOzG?VVgFj zVI5EDzjxHb;>YiVZ(=`*c^!em*4v!CkBq*W@Dh(#fpAak7Z6Z^R!M4ccWQNK7R%6t znOfRSWp|!KFlkON?@q7n6cHr%gQ{jnv&XPcn+H!|f52Qmi~XWG zw~l?rTsepRl9|q8pYr@86W7HLB4($XguQ*xf8Rm(lQW-5H>J-nf4TnE+#U7j_4DoZ z^SkRWe^MwZu{ArwjZrd@ zX^E|TJG0gvKWxXiF}~l}$Bq5_=N#b1L1)ev+Ud3S*kOB!8xv$|u668(rBm&>)9vI_ z_As}Okb&`!+4~iHl*2KE@3#D{jaIllF17oY?Q!myAk*`$jhh$jNe+`Fz1U(mEA|wJ zDKdX(XXDlddz!-;GPBT9ZoY1(In0oS?2dBlb^8E^v+l!l93CXe+19}pyCtP@!ms4yPvqq9 bB>M|l_$wF?rXLUxe+{k(mxYG}CExcyNbKl+ diff --git a/venv/lib/python3.12/site-packages/fastapi/dependencies/__pycache__/utils.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/dependencies/__pycache__/utils.cpython-312.pyc deleted file mode 100644 index 400de463ceec07ae838a7974598e28abb9ea3243..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35262 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 diff --git a/venv/lib/python3.12/site-packages/fastapi/dependencies/models.py b/venv/lib/python3.12/site-packages/fastapi/dependencies/models.py deleted file mode 100644 index 443590b..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/dependencies/models.py +++ /dev/null @@ -1,58 +0,0 @@ -from typing import Any, Callable, List, Optional, Sequence - -from fastapi.security.base import SecurityBase -from pydantic.fields import ModelField - - -class SecurityRequirement: - def __init__( - self, security_scheme: SecurityBase, scopes: Optional[Sequence[str]] = None - ): - self.security_scheme = security_scheme - self.scopes = scopes - - -class Dependant: - def __init__( - self, - *, - path_params: Optional[List[ModelField]] = None, - query_params: Optional[List[ModelField]] = None, - header_params: Optional[List[ModelField]] = None, - cookie_params: Optional[List[ModelField]] = None, - body_params: Optional[List[ModelField]] = None, - dependencies: Optional[List["Dependant"]] = None, - security_schemes: Optional[List[SecurityRequirement]] = None, - name: Optional[str] = None, - call: Optional[Callable[..., Any]] = None, - request_param_name: Optional[str] = None, - websocket_param_name: Optional[str] = None, - http_connection_param_name: Optional[str] = None, - response_param_name: Optional[str] = None, - background_tasks_param_name: Optional[str] = None, - security_scopes_param_name: Optional[str] = None, - security_scopes: Optional[List[str]] = None, - use_cache: bool = True, - path: Optional[str] = None, - ) -> None: - self.path_params = path_params or [] - self.query_params = query_params or [] - self.header_params = header_params or [] - self.cookie_params = cookie_params or [] - self.body_params = body_params or [] - self.dependencies = dependencies or [] - self.security_requirements = security_schemes or [] - self.request_param_name = request_param_name - self.websocket_param_name = websocket_param_name - self.http_connection_param_name = http_connection_param_name - self.response_param_name = response_param_name - self.background_tasks_param_name = background_tasks_param_name - self.security_scopes = security_scopes - self.security_scopes_param_name = security_scopes_param_name - self.name = name - self.call = call - self.use_cache = use_cache - # Store the path to be able to re-generate a dependable from it in overrides - self.path = path - # Save the cache key at creation to optimize performance - self.cache_key = (self.call, tuple(sorted(set(self.security_scopes or [])))) diff --git a/venv/lib/python3.12/site-packages/fastapi/dependencies/utils.py b/venv/lib/python3.12/site-packages/fastapi/dependencies/utils.py deleted file mode 100644 index f131001..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/dependencies/utils.py +++ /dev/null @@ -1,846 +0,0 @@ -import dataclasses -import inspect -from contextlib import contextmanager -from copy import copy, deepcopy -from typing import ( - Any, - Callable, - Coroutine, - Dict, - ForwardRef, - List, - Mapping, - Optional, - Sequence, - Tuple, - Type, - Union, - cast, -) - -import anyio -from fastapi import params -from fastapi.concurrency import ( - AsyncExitStack, - asynccontextmanager, - contextmanager_in_threadpool, -) -from fastapi.dependencies.models import Dependant, SecurityRequirement -from fastapi.logger import logger -from fastapi.security.base import SecurityBase -from fastapi.security.oauth2 import OAuth2, SecurityScopes -from fastapi.security.open_id_connect_url import OpenIdConnect -from fastapi.utils import create_response_field, get_path_param_names -from pydantic import BaseModel, create_model -from pydantic.error_wrappers import ErrorWrapper -from pydantic.errors import MissingError -from pydantic.fields import ( - SHAPE_FROZENSET, - SHAPE_LIST, - SHAPE_SEQUENCE, - SHAPE_SET, - SHAPE_SINGLETON, - SHAPE_TUPLE, - SHAPE_TUPLE_ELLIPSIS, - FieldInfo, - ModelField, - Required, - Undefined, -) -from pydantic.schema import get_annotation_from_field_info -from pydantic.typing import evaluate_forwardref, get_args, get_origin -from pydantic.utils import lenient_issubclass -from starlette.background import BackgroundTasks -from starlette.concurrency import run_in_threadpool -from starlette.datastructures import FormData, Headers, QueryParams, UploadFile -from starlette.requests import HTTPConnection, Request -from starlette.responses import Response -from starlette.websockets import WebSocket -from typing_extensions import Annotated - -sequence_shapes = { - SHAPE_LIST, - SHAPE_SET, - SHAPE_FROZENSET, - SHAPE_TUPLE, - SHAPE_SEQUENCE, - SHAPE_TUPLE_ELLIPSIS, -} -sequence_types = (list, set, tuple) -sequence_shape_to_type = { - SHAPE_LIST: list, - SHAPE_SET: set, - SHAPE_TUPLE: tuple, - SHAPE_SEQUENCE: list, - SHAPE_TUPLE_ELLIPSIS: list, -} - - -multipart_not_installed_error = ( - 'Form data requires "python-multipart" to be installed. \n' - 'You can install "python-multipart" with: \n\n' - "pip install python-multipart\n" -) -multipart_incorrect_install_error = ( - 'Form data requires "python-multipart" to be installed. ' - 'It seems you installed "multipart" instead. \n' - 'You can remove "multipart" with: \n\n' - "pip uninstall multipart\n\n" - 'And then install "python-multipart" with: \n\n' - "pip install python-multipart\n" -) - - -def check_file_field(field: ModelField) -> None: - field_info = field.field_info - if isinstance(field_info, params.Form): - try: - # __version__ is available in both multiparts, and can be mocked - from multipart import __version__ # type: ignore - - assert __version__ - try: - # parse_options_header is only available in the right multipart - from multipart.multipart import parse_options_header # type: ignore - - assert parse_options_header - except ImportError: - logger.error(multipart_incorrect_install_error) - raise RuntimeError(multipart_incorrect_install_error) from None - except ImportError: - logger.error(multipart_not_installed_error) - raise RuntimeError(multipart_not_installed_error) from None - - -def get_param_sub_dependant( - *, - param_name: str, - depends: params.Depends, - path: str, - security_scopes: Optional[List[str]] = None, -) -> Dependant: - assert depends.dependency - return get_sub_dependant( - depends=depends, - dependency=depends.dependency, - path=path, - name=param_name, - security_scopes=security_scopes, - ) - - -def get_parameterless_sub_dependant(*, depends: params.Depends, path: str) -> Dependant: - assert callable( - depends.dependency - ), "A parameter-less dependency must have a callable dependency" - return get_sub_dependant(depends=depends, dependency=depends.dependency, path=path) - - -def get_sub_dependant( - *, - depends: params.Depends, - dependency: Callable[..., Any], - path: str, - name: Optional[str] = None, - security_scopes: Optional[List[str]] = None, -) -> Dependant: - security_requirement = None - security_scopes = security_scopes or [] - if isinstance(depends, params.Security): - dependency_scopes = depends.scopes - security_scopes.extend(dependency_scopes) - if isinstance(dependency, SecurityBase): - use_scopes: List[str] = [] - if isinstance(dependency, (OAuth2, OpenIdConnect)): - use_scopes = security_scopes - security_requirement = SecurityRequirement( - security_scheme=dependency, scopes=use_scopes - ) - sub_dependant = get_dependant( - path=path, - call=dependency, - name=name, - security_scopes=security_scopes, - use_cache=depends.use_cache, - ) - if security_requirement: - sub_dependant.security_requirements.append(security_requirement) - return sub_dependant - - -CacheKey = Tuple[Optional[Callable[..., Any]], Tuple[str, ...]] - - -def get_flat_dependant( - dependant: Dependant, - *, - skip_repeats: bool = False, - visited: Optional[List[CacheKey]] = None, -) -> Dependant: - if visited is None: - visited = [] - visited.append(dependant.cache_key) - - flat_dependant = Dependant( - path_params=dependant.path_params.copy(), - query_params=dependant.query_params.copy(), - header_params=dependant.header_params.copy(), - cookie_params=dependant.cookie_params.copy(), - body_params=dependant.body_params.copy(), - security_schemes=dependant.security_requirements.copy(), - use_cache=dependant.use_cache, - path=dependant.path, - ) - for sub_dependant in dependant.dependencies: - if skip_repeats and sub_dependant.cache_key in visited: - continue - flat_sub = get_flat_dependant( - sub_dependant, skip_repeats=skip_repeats, visited=visited - ) - flat_dependant.path_params.extend(flat_sub.path_params) - flat_dependant.query_params.extend(flat_sub.query_params) - flat_dependant.header_params.extend(flat_sub.header_params) - flat_dependant.cookie_params.extend(flat_sub.cookie_params) - flat_dependant.body_params.extend(flat_sub.body_params) - flat_dependant.security_requirements.extend(flat_sub.security_requirements) - return flat_dependant - - -def get_flat_params(dependant: Dependant) -> List[ModelField]: - flat_dependant = get_flat_dependant(dependant, skip_repeats=True) - return ( - flat_dependant.path_params - + flat_dependant.query_params - + flat_dependant.header_params - + flat_dependant.cookie_params - ) - - -def is_scalar_field(field: ModelField) -> bool: - field_info = field.field_info - if not ( - field.shape == SHAPE_SINGLETON - and not lenient_issubclass(field.type_, BaseModel) - and not lenient_issubclass(field.type_, sequence_types + (dict,)) - and not dataclasses.is_dataclass(field.type_) - and not isinstance(field_info, params.Body) - ): - return False - if field.sub_fields: - if not all(is_scalar_field(f) for f in field.sub_fields): - return False - return True - - -def is_scalar_sequence_field(field: ModelField) -> bool: - if (field.shape in sequence_shapes) and not lenient_issubclass( - field.type_, BaseModel - ): - if field.sub_fields is not None: - for sub_field in field.sub_fields: - if not is_scalar_field(sub_field): - return False - return True - if lenient_issubclass(field.type_, sequence_types): - return True - return False - - -def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature: - signature = inspect.signature(call) - globalns = getattr(call, "__globals__", {}) - typed_params = [ - inspect.Parameter( - name=param.name, - kind=param.kind, - default=param.default, - annotation=get_typed_annotation(param.annotation, globalns), - ) - for param in signature.parameters.values() - ] - typed_signature = inspect.Signature(typed_params) - return typed_signature - - -def get_typed_annotation(annotation: Any, globalns: Dict[str, Any]) -> Any: - if isinstance(annotation, str): - annotation = ForwardRef(annotation) - annotation = evaluate_forwardref(annotation, globalns, globalns) - return annotation - - -def get_typed_return_annotation(call: Callable[..., Any]) -> Any: - signature = inspect.signature(call) - annotation = signature.return_annotation - - if annotation is inspect.Signature.empty: - return None - - globalns = getattr(call, "__globals__", {}) - return get_typed_annotation(annotation, globalns) - - -def get_dependant( - *, - path: str, - call: Callable[..., Any], - name: Optional[str] = None, - security_scopes: Optional[List[str]] = None, - use_cache: bool = True, -) -> Dependant: - path_param_names = get_path_param_names(path) - endpoint_signature = get_typed_signature(call) - signature_params = endpoint_signature.parameters - dependant = Dependant( - call=call, - name=name, - path=path, - security_scopes=security_scopes, - use_cache=use_cache, - ) - for param_name, param in signature_params.items(): - is_path_param = param_name in path_param_names - type_annotation, depends, param_field = analyze_param( - param_name=param_name, - annotation=param.annotation, - value=param.default, - is_path_param=is_path_param, - ) - if depends is not None: - sub_dependant = get_param_sub_dependant( - param_name=param_name, - depends=depends, - path=path, - security_scopes=security_scopes, - ) - dependant.dependencies.append(sub_dependant) - continue - if add_non_field_param_to_dependency( - param_name=param_name, - type_annotation=type_annotation, - dependant=dependant, - ): - assert ( - param_field is None - ), f"Cannot specify multiple FastAPI annotations for {param_name!r}" - continue - assert param_field is not None - if is_body_param(param_field=param_field, is_path_param=is_path_param): - dependant.body_params.append(param_field) - else: - add_param_to_fields(field=param_field, dependant=dependant) - return dependant - - -def add_non_field_param_to_dependency( - *, param_name: str, type_annotation: Any, dependant: Dependant -) -> Optional[bool]: - if lenient_issubclass(type_annotation, Request): - dependant.request_param_name = param_name - return True - elif lenient_issubclass(type_annotation, WebSocket): - dependant.websocket_param_name = param_name - return True - elif lenient_issubclass(type_annotation, HTTPConnection): - dependant.http_connection_param_name = param_name - return True - elif lenient_issubclass(type_annotation, Response): - dependant.response_param_name = param_name - return True - elif lenient_issubclass(type_annotation, BackgroundTasks): - dependant.background_tasks_param_name = param_name - return True - elif lenient_issubclass(type_annotation, SecurityScopes): - dependant.security_scopes_param_name = param_name - return True - return None - - -def analyze_param( - *, - param_name: str, - annotation: Any, - value: Any, - is_path_param: bool, -) -> Tuple[Any, Optional[params.Depends], Optional[ModelField]]: - field_info = None - used_default_field_info = False - depends = None - type_annotation: Any = Any - if ( - annotation is not inspect.Signature.empty - and get_origin(annotation) is Annotated # type: ignore[comparison-overlap] - ): - annotated_args = get_args(annotation) - type_annotation = annotated_args[0] - fastapi_annotations = [ - arg - for arg in annotated_args[1:] - if isinstance(arg, (FieldInfo, params.Depends)) - ] - assert ( - len(fastapi_annotations) <= 1 - ), f"Cannot specify multiple `Annotated` FastAPI arguments for {param_name!r}" - fastapi_annotation = next(iter(fastapi_annotations), None) - if isinstance(fastapi_annotation, FieldInfo): - # Copy `field_info` because we mutate `field_info.default` below. - field_info = copy(fastapi_annotation) - assert field_info.default is Undefined or field_info.default is Required, ( - f"`{field_info.__class__.__name__}` default value cannot be set in" - f" `Annotated` for {param_name!r}. Set the default value with `=` instead." - ) - if value is not inspect.Signature.empty: - assert not is_path_param, "Path parameters cannot have default values" - field_info.default = value - else: - field_info.default = Required - elif isinstance(fastapi_annotation, params.Depends): - depends = fastapi_annotation - elif annotation is not inspect.Signature.empty: - type_annotation = annotation - - if isinstance(value, params.Depends): - assert depends is None, ( - "Cannot specify `Depends` in `Annotated` and default value" - f" together for {param_name!r}" - ) - assert field_info is None, ( - "Cannot specify a FastAPI annotation in `Annotated` and `Depends` as a" - f" default value together for {param_name!r}" - ) - depends = value - elif isinstance(value, FieldInfo): - assert field_info is None, ( - "Cannot specify FastAPI annotations in `Annotated` and default value" - f" together for {param_name!r}" - ) - field_info = value - - if depends is not None and depends.dependency is None: - depends.dependency = type_annotation - - if lenient_issubclass( - type_annotation, - (Request, WebSocket, HTTPConnection, Response, BackgroundTasks, SecurityScopes), - ): - assert depends is None, f"Cannot specify `Depends` for type {type_annotation!r}" - assert ( - field_info is None - ), f"Cannot specify FastAPI annotation for type {type_annotation!r}" - elif field_info is None and depends is None: - default_value = value if value is not inspect.Signature.empty else Required - if is_path_param: - # We might check here that `default_value is Required`, but the fact is that the same - # parameter might sometimes be a path parameter and sometimes not. See - # `tests/test_infer_param_optionality.py` for an example. - field_info = params.Path() - else: - field_info = params.Query(default=default_value) - used_default_field_info = True - - field = None - if field_info is not None: - if is_path_param: - assert isinstance(field_info, params.Path), ( - f"Cannot use `{field_info.__class__.__name__}` for path param" - f" {param_name!r}" - ) - elif ( - isinstance(field_info, params.Param) - and getattr(field_info, "in_", None) is None - ): - field_info.in_ = params.ParamTypes.query - annotation = get_annotation_from_field_info( - annotation if annotation is not inspect.Signature.empty else Any, - field_info, - param_name, - ) - if not field_info.alias and getattr(field_info, "convert_underscores", None): - alias = param_name.replace("_", "-") - else: - alias = field_info.alias or param_name - field = create_response_field( - name=param_name, - type_=annotation, - default=field_info.default, - alias=alias, - required=field_info.default in (Required, Undefined), - field_info=field_info, - ) - if used_default_field_info: - if lenient_issubclass(field.type_, UploadFile): - field.field_info = params.File(field_info.default) - elif not is_scalar_field(field=field): - field.field_info = params.Body(field_info.default) - - return type_annotation, depends, field - - -def is_body_param(*, param_field: ModelField, is_path_param: bool) -> bool: - if is_path_param: - assert is_scalar_field( - field=param_field - ), "Path params must be of one of the supported types" - return False - elif is_scalar_field(field=param_field): - return False - elif isinstance( - param_field.field_info, (params.Query, params.Header) - ) and is_scalar_sequence_field(param_field): - return False - else: - assert isinstance( - param_field.field_info, params.Body - ), f"Param: {param_field.name} can only be a request body, using Body()" - return True - - -def add_param_to_fields(*, field: ModelField, dependant: Dependant) -> None: - field_info = cast(params.Param, field.field_info) - if field_info.in_ == params.ParamTypes.path: - dependant.path_params.append(field) - elif field_info.in_ == params.ParamTypes.query: - dependant.query_params.append(field) - elif field_info.in_ == params.ParamTypes.header: - dependant.header_params.append(field) - else: - assert ( - field_info.in_ == params.ParamTypes.cookie - ), f"non-body parameters must be in path, query, header or cookie: {field.name}" - dependant.cookie_params.append(field) - - -def is_coroutine_callable(call: Callable[..., Any]) -> bool: - if inspect.isroutine(call): - return inspect.iscoroutinefunction(call) - if inspect.isclass(call): - return False - dunder_call = getattr(call, "__call__", None) # noqa: B004 - return inspect.iscoroutinefunction(dunder_call) - - -def is_async_gen_callable(call: Callable[..., Any]) -> bool: - if inspect.isasyncgenfunction(call): - return True - dunder_call = getattr(call, "__call__", None) # noqa: B004 - return inspect.isasyncgenfunction(dunder_call) - - -def is_gen_callable(call: Callable[..., Any]) -> bool: - if inspect.isgeneratorfunction(call): - return True - dunder_call = getattr(call, "__call__", None) # noqa: B004 - return inspect.isgeneratorfunction(dunder_call) - - -async def solve_generator( - *, call: Callable[..., Any], stack: AsyncExitStack, sub_values: Dict[str, Any] -) -> Any: - if is_gen_callable(call): - cm = contextmanager_in_threadpool(contextmanager(call)(**sub_values)) - elif is_async_gen_callable(call): - cm = asynccontextmanager(call)(**sub_values) - return await stack.enter_async_context(cm) - - -async def solve_dependencies( - *, - request: Union[Request, WebSocket], - dependant: Dependant, - body: Optional[Union[Dict[str, Any], FormData]] = None, - background_tasks: Optional[BackgroundTasks] = None, - response: Optional[Response] = None, - dependency_overrides_provider: Optional[Any] = None, - dependency_cache: Optional[Dict[Tuple[Callable[..., Any], Tuple[str]], Any]] = None, -) -> Tuple[ - Dict[str, Any], - List[ErrorWrapper], - Optional[BackgroundTasks], - Response, - Dict[Tuple[Callable[..., Any], Tuple[str]], Any], -]: - values: Dict[str, Any] = {} - errors: List[ErrorWrapper] = [] - if response is None: - response = Response() - del response.headers["content-length"] - response.status_code = None # type: ignore - dependency_cache = dependency_cache or {} - sub_dependant: Dependant - for sub_dependant in dependant.dependencies: - sub_dependant.call = cast(Callable[..., Any], sub_dependant.call) - sub_dependant.cache_key = cast( - Tuple[Callable[..., Any], Tuple[str]], sub_dependant.cache_key - ) - call = sub_dependant.call - use_sub_dependant = sub_dependant - if ( - dependency_overrides_provider - and dependency_overrides_provider.dependency_overrides - ): - original_call = sub_dependant.call - call = getattr( - dependency_overrides_provider, "dependency_overrides", {} - ).get(original_call, original_call) - use_path: str = sub_dependant.path # type: ignore - use_sub_dependant = get_dependant( - path=use_path, - call=call, - name=sub_dependant.name, - security_scopes=sub_dependant.security_scopes, - ) - - solved_result = await solve_dependencies( - request=request, - dependant=use_sub_dependant, - body=body, - background_tasks=background_tasks, - response=response, - dependency_overrides_provider=dependency_overrides_provider, - dependency_cache=dependency_cache, - ) - ( - sub_values, - sub_errors, - background_tasks, - _, # the subdependency returns the same response we have - sub_dependency_cache, - ) = solved_result - dependency_cache.update(sub_dependency_cache) - if sub_errors: - errors.extend(sub_errors) - continue - if sub_dependant.use_cache and sub_dependant.cache_key in dependency_cache: - solved = dependency_cache[sub_dependant.cache_key] - elif is_gen_callable(call) or is_async_gen_callable(call): - stack = request.scope.get("fastapi_astack") - assert isinstance(stack, AsyncExitStack) - solved = await solve_generator( - call=call, stack=stack, sub_values=sub_values - ) - elif is_coroutine_callable(call): - solved = await call(**sub_values) - else: - solved = await run_in_threadpool(call, **sub_values) - if sub_dependant.name is not None: - values[sub_dependant.name] = solved - if sub_dependant.cache_key not in dependency_cache: - dependency_cache[sub_dependant.cache_key] = solved - path_values, path_errors = request_params_to_args( - dependant.path_params, request.path_params - ) - query_values, query_errors = request_params_to_args( - dependant.query_params, request.query_params - ) - header_values, header_errors = request_params_to_args( - dependant.header_params, request.headers - ) - cookie_values, cookie_errors = request_params_to_args( - dependant.cookie_params, request.cookies - ) - values.update(path_values) - values.update(query_values) - values.update(header_values) - values.update(cookie_values) - errors += path_errors + query_errors + header_errors + cookie_errors - if dependant.body_params: - ( - body_values, - body_errors, - ) = await request_body_to_args( # body_params checked above - required_params=dependant.body_params, received_body=body - ) - values.update(body_values) - errors.extend(body_errors) - if dependant.http_connection_param_name: - values[dependant.http_connection_param_name] = request - if dependant.request_param_name and isinstance(request, Request): - values[dependant.request_param_name] = request - elif dependant.websocket_param_name and isinstance(request, WebSocket): - values[dependant.websocket_param_name] = request - if dependant.background_tasks_param_name: - if background_tasks is None: - background_tasks = BackgroundTasks() - values[dependant.background_tasks_param_name] = background_tasks - if dependant.response_param_name: - values[dependant.response_param_name] = response - if dependant.security_scopes_param_name: - values[dependant.security_scopes_param_name] = SecurityScopes( - scopes=dependant.security_scopes - ) - return values, errors, background_tasks, response, dependency_cache - - -def request_params_to_args( - required_params: Sequence[ModelField], - received_params: Union[Mapping[str, Any], QueryParams, Headers], -) -> Tuple[Dict[str, Any], List[ErrorWrapper]]: - values = {} - errors = [] - for field in required_params: - if is_scalar_sequence_field(field) and isinstance( - received_params, (QueryParams, Headers) - ): - value = received_params.getlist(field.alias) or field.default - else: - value = received_params.get(field.alias) - field_info = field.field_info - assert isinstance( - field_info, params.Param - ), "Params must be subclasses of Param" - if value is None: - if field.required: - errors.append( - ErrorWrapper( - MissingError(), loc=(field_info.in_.value, field.alias) - ) - ) - else: - values[field.name] = deepcopy(field.default) - continue - v_, errors_ = field.validate( - value, values, loc=(field_info.in_.value, field.alias) - ) - if isinstance(errors_, ErrorWrapper): - errors.append(errors_) - elif isinstance(errors_, list): - errors.extend(errors_) - else: - values[field.name] = v_ - return values, errors - - -async def request_body_to_args( - required_params: List[ModelField], - received_body: Optional[Union[Dict[str, Any], FormData]], -) -> Tuple[Dict[str, Any], List[ErrorWrapper]]: - values = {} - errors = [] - if required_params: - field = required_params[0] - field_info = field.field_info - embed = getattr(field_info, "embed", None) - field_alias_omitted = len(required_params) == 1 and not embed - if field_alias_omitted: - received_body = {field.alias: received_body} - - for field in required_params: - loc: Tuple[str, ...] - if field_alias_omitted: - loc = ("body",) - else: - loc = ("body", field.alias) - - value: Optional[Any] = None - if received_body is not None: - if ( - field.shape in sequence_shapes or field.type_ in sequence_types - ) and isinstance(received_body, FormData): - value = received_body.getlist(field.alias) - else: - try: - value = received_body.get(field.alias) - except AttributeError: - errors.append(get_missing_field_error(loc)) - continue - if ( - value is None - or (isinstance(field_info, params.Form) and value == "") - or ( - isinstance(field_info, params.Form) - and field.shape in sequence_shapes - and len(value) == 0 - ) - ): - if field.required: - errors.append(get_missing_field_error(loc)) - else: - values[field.name] = deepcopy(field.default) - continue - if ( - isinstance(field_info, params.File) - and lenient_issubclass(field.type_, bytes) - and isinstance(value, UploadFile) - ): - value = await value.read() - elif ( - field.shape in sequence_shapes - and isinstance(field_info, params.File) - and lenient_issubclass(field.type_, bytes) - and isinstance(value, sequence_types) - ): - results: List[Union[bytes, str]] = [] - - async def process_fn( - fn: Callable[[], Coroutine[Any, Any, Any]] - ) -> None: - result = await fn() - results.append(result) # noqa: B023 - - async with anyio.create_task_group() as tg: - for sub_value in value: - tg.start_soon(process_fn, sub_value.read) - value = sequence_shape_to_type[field.shape](results) - - v_, errors_ = field.validate(value, values, loc=loc) - - if isinstance(errors_, ErrorWrapper): - errors.append(errors_) - elif isinstance(errors_, list): - errors.extend(errors_) - else: - values[field.name] = v_ - return values, errors - - -def get_missing_field_error(loc: Tuple[str, ...]) -> ErrorWrapper: - missing_field_error = ErrorWrapper(MissingError(), loc=loc) - return missing_field_error - - -def get_body_field(*, dependant: Dependant, name: str) -> Optional[ModelField]: - flat_dependant = get_flat_dependant(dependant) - if not flat_dependant.body_params: - return None - first_param = flat_dependant.body_params[0] - field_info = first_param.field_info - embed = getattr(field_info, "embed", None) - body_param_names_set = {param.name for param in flat_dependant.body_params} - if len(body_param_names_set) == 1 and not embed: - check_file_field(first_param) - return first_param - # If one field requires to embed, all have to be embedded - # in case a sub-dependency is evaluated with a single unique body field - # That is combined (embedded) with other body fields - for param in flat_dependant.body_params: - setattr(param.field_info, "embed", True) # noqa: B010 - model_name = "Body_" + name - BodyModel: Type[BaseModel] = create_model(model_name) - for f in flat_dependant.body_params: - BodyModel.__fields__[f.name] = f - required = any(True for f in flat_dependant.body_params if f.required) - - BodyFieldInfo_kwargs: Dict[str, Any] = {"default": None} - if any(isinstance(f.field_info, params.File) for f in flat_dependant.body_params): - BodyFieldInfo: Type[params.Body] = params.File - elif any(isinstance(f.field_info, params.Form) for f in flat_dependant.body_params): - BodyFieldInfo = params.Form - else: - BodyFieldInfo = params.Body - - body_param_media_types = [ - f.field_info.media_type - for f in flat_dependant.body_params - if isinstance(f.field_info, params.Body) - ] - if len(set(body_param_media_types)) == 1: - BodyFieldInfo_kwargs["media_type"] = body_param_media_types[0] - final_field = create_response_field( - name="body", - type_=BodyModel, - required=required, - alias="body", - field_info=BodyFieldInfo(**BodyFieldInfo_kwargs), - ) - check_file_field(final_field) - return final_field diff --git a/venv/lib/python3.12/site-packages/fastapi/encoders.py b/venv/lib/python3.12/site-packages/fastapi/encoders.py deleted file mode 100644 index 2f95bcb..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/encoders.py +++ /dev/null @@ -1,171 +0,0 @@ -import dataclasses -from collections import defaultdict -from enum import Enum -from pathlib import PurePath -from types import GeneratorType -from typing import Any, Callable, Dict, List, Optional, Set, Tuple, Union - -from pydantic import BaseModel -from pydantic.json import ENCODERS_BY_TYPE - -SetIntStr = Set[Union[int, str]] -DictIntStrAny = Dict[Union[int, str], Any] - - -def generate_encoders_by_class_tuples( - type_encoder_map: Dict[Any, Callable[[Any], Any]] -) -> Dict[Callable[[Any], Any], Tuple[Any, ...]]: - encoders_by_class_tuples: Dict[Callable[[Any], Any], Tuple[Any, ...]] = defaultdict( - tuple - ) - for type_, encoder in type_encoder_map.items(): - encoders_by_class_tuples[encoder] += (type_,) - return encoders_by_class_tuples - - -encoders_by_class_tuples = generate_encoders_by_class_tuples(ENCODERS_BY_TYPE) - - -def jsonable_encoder( - obj: Any, - include: Optional[Union[SetIntStr, DictIntStrAny]] = None, - exclude: Optional[Union[SetIntStr, DictIntStrAny]] = None, - by_alias: bool = True, - exclude_unset: bool = False, - exclude_defaults: bool = False, - exclude_none: bool = False, - custom_encoder: Optional[Dict[Any, Callable[[Any], Any]]] = None, - sqlalchemy_safe: bool = True, -) -> Any: - custom_encoder = custom_encoder or {} - if custom_encoder: - if type(obj) in custom_encoder: - return custom_encoder[type(obj)](obj) - else: - for encoder_type, encoder_instance in custom_encoder.items(): - if isinstance(obj, encoder_type): - return encoder_instance(obj) - if include is not None and not isinstance(include, (set, dict)): - include = set(include) - if exclude is not None and not isinstance(exclude, (set, dict)): - exclude = set(exclude) - if isinstance(obj, BaseModel): - encoder = getattr(obj.__config__, "json_encoders", {}) - if custom_encoder: - encoder.update(custom_encoder) - obj_dict = obj.dict( - include=include, - exclude=exclude, - by_alias=by_alias, - exclude_unset=exclude_unset, - exclude_none=exclude_none, - exclude_defaults=exclude_defaults, - ) - if "__root__" in obj_dict: - obj_dict = obj_dict["__root__"] - return jsonable_encoder( - obj_dict, - exclude_none=exclude_none, - exclude_defaults=exclude_defaults, - custom_encoder=encoder, - sqlalchemy_safe=sqlalchemy_safe, - ) - if dataclasses.is_dataclass(obj): - obj_dict = dataclasses.asdict(obj) - return jsonable_encoder( - obj_dict, - include=include, - exclude=exclude, - by_alias=by_alias, - exclude_unset=exclude_unset, - exclude_defaults=exclude_defaults, - exclude_none=exclude_none, - custom_encoder=custom_encoder, - sqlalchemy_safe=sqlalchemy_safe, - ) - if isinstance(obj, Enum): - return obj.value - if isinstance(obj, PurePath): - return str(obj) - if isinstance(obj, (str, int, float, type(None))): - return obj - if isinstance(obj, dict): - encoded_dict = {} - allowed_keys = set(obj.keys()) - if include is not None: - allowed_keys &= set(include) - if exclude is not None: - allowed_keys -= set(exclude) - for key, value in obj.items(): - if ( - ( - not sqlalchemy_safe - or (not isinstance(key, str)) - or (not key.startswith("_sa")) - ) - and (value is not None or not exclude_none) - and key in allowed_keys - ): - encoded_key = jsonable_encoder( - key, - by_alias=by_alias, - exclude_unset=exclude_unset, - exclude_none=exclude_none, - custom_encoder=custom_encoder, - sqlalchemy_safe=sqlalchemy_safe, - ) - encoded_value = jsonable_encoder( - value, - by_alias=by_alias, - exclude_unset=exclude_unset, - exclude_none=exclude_none, - custom_encoder=custom_encoder, - sqlalchemy_safe=sqlalchemy_safe, - ) - encoded_dict[encoded_key] = encoded_value - return encoded_dict - if isinstance(obj, (list, set, frozenset, GeneratorType, tuple)): - encoded_list = [] - for item in obj: - encoded_list.append( - jsonable_encoder( - item, - include=include, - exclude=exclude, - by_alias=by_alias, - exclude_unset=exclude_unset, - exclude_defaults=exclude_defaults, - exclude_none=exclude_none, - custom_encoder=custom_encoder, - sqlalchemy_safe=sqlalchemy_safe, - ) - ) - return encoded_list - - if type(obj) in ENCODERS_BY_TYPE: - return ENCODERS_BY_TYPE[type(obj)](obj) - for encoder, classes_tuple in encoders_by_class_tuples.items(): - if isinstance(obj, classes_tuple): - return encoder(obj) - - try: - data = dict(obj) - except Exception as e: - errors: List[Exception] = [] - errors.append(e) - try: - data = vars(obj) - except Exception as e: - errors.append(e) - raise ValueError(errors) from e - return jsonable_encoder( - data, - include=include, - exclude=exclude, - by_alias=by_alias, - exclude_unset=exclude_unset, - exclude_defaults=exclude_defaults, - exclude_none=exclude_none, - custom_encoder=custom_encoder, - sqlalchemy_safe=sqlalchemy_safe, - ) diff --git a/venv/lib/python3.12/site-packages/fastapi/exception_handlers.py b/venv/lib/python3.12/site-packages/fastapi/exception_handlers.py deleted file mode 100644 index 4d7ea5e..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/exception_handlers.py +++ /dev/null @@ -1,25 +0,0 @@ -from fastapi.encoders import jsonable_encoder -from fastapi.exceptions import RequestValidationError -from fastapi.utils import is_body_allowed_for_status_code -from starlette.exceptions import HTTPException -from starlette.requests import Request -from starlette.responses import JSONResponse, Response -from starlette.status import HTTP_422_UNPROCESSABLE_ENTITY - - -async def http_exception_handler(request: Request, exc: HTTPException) -> Response: - headers = getattr(exc, "headers", None) - if not is_body_allowed_for_status_code(exc.status_code): - return Response(status_code=exc.status_code, headers=headers) - return JSONResponse( - {"detail": exc.detail}, status_code=exc.status_code, headers=headers - ) - - -async def request_validation_exception_handler( - request: Request, exc: RequestValidationError -) -> JSONResponse: - return JSONResponse( - status_code=HTTP_422_UNPROCESSABLE_ENTITY, - content={"detail": jsonable_encoder(exc.errors())}, - ) diff --git a/venv/lib/python3.12/site-packages/fastapi/exceptions.py b/venv/lib/python3.12/site-packages/fastapi/exceptions.py deleted file mode 100644 index ca097b1..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/exceptions.py +++ /dev/null @@ -1,37 +0,0 @@ -from typing import Any, Dict, Optional, Sequence, Type - -from pydantic import BaseModel, ValidationError, create_model -from pydantic.error_wrappers import ErrorList -from starlette.exceptions import HTTPException as StarletteHTTPException -from starlette.exceptions import WebSocketException as WebSocketException # noqa: F401 - - -class HTTPException(StarletteHTTPException): - def __init__( - self, - status_code: int, - detail: Any = None, - headers: Optional[Dict[str, Any]] = None, - ) -> None: - super().__init__(status_code=status_code, detail=detail, headers=headers) - - -RequestErrorModel: Type[BaseModel] = create_model("Request") -WebSocketErrorModel: Type[BaseModel] = create_model("WebSocket") - - -class FastAPIError(RuntimeError): - """ - A generic, FastAPI-specific error. - """ - - -class RequestValidationError(ValidationError): - def __init__(self, errors: Sequence[ErrorList], *, body: Any = None) -> None: - self.body = body - super().__init__(errors, RequestErrorModel) - - -class WebSocketRequestValidationError(ValidationError): - def __init__(self, errors: Sequence[ErrorList]) -> None: - super().__init__(errors, WebSocketErrorModel) diff --git a/venv/lib/python3.12/site-packages/fastapi/logger.py b/venv/lib/python3.12/site-packages/fastapi/logger.py deleted file mode 100644 index 5b2c4ad..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/logger.py +++ /dev/null @@ -1,3 +0,0 @@ -import logging - -logger = logging.getLogger("fastapi") diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/__init__.py b/venv/lib/python3.12/site-packages/fastapi/middleware/__init__.py deleted file mode 100644 index 620296d..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/middleware/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from starlette.middleware import Middleware as Middleware diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 25ced195b34114bfa863fc0938416dbc2aa84841..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmX@j%ge<81f4-j8CF30F^B^LOi;#W0U%>KLkdF*V-7SyIA=I7?; zrB-F?JLl&Wm*$iJ10S%*!l^kJl@x{Ka9Do1apelWJGQ0kn$|h>Jmt56p~=jQ1EUi`al10Pk`{ ARR910 diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/asyncexitstack.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/asyncexitstack.cpython-312.pyc deleted file mode 100644 index 0defdbd85f975287c56aebfeb530e4e6ebe9f45a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1825 zcmb7F-ES0C6hC*qx81@*zoc!j0@_``ZYyotlG>!Jq#9#QXnbH}GLAbJSeTt%?@VbI zw@PSZFyR4TD3};{ENL+O3ARrpzLYeEW&-iSnCRO;O~Cr%IWt>69*ps(bM86ko_qSc z=lt&7pPHH)0LM4S_np420Q^eE_CPxtoA2SY2sYTvffCCzM!MukB{?rgy6h+=HLsSm zyjIflddbKe3?!HUTUh{GU6$fR`9xLA=zoxrVS({c#V?j!%Rzm|xL0)x$7YNEly4Qz zW|Tl5pPG1oyiy7Do*0Nz3!CN-dN0H_h{}{aY1!w?nAn-Yygu zV57P1l5*MD=t^Hwem3@Oq7wqui&~|Ndh765*t2auQHYM;Jbs&>U_CwnhPCp^9}V%b z4RebBtWwK${{YNmXTQLrT$L8(uT>T1)S5~)K2v8{JusR^Q6>P_)EB+6j(en8HvFOtRjQUlh2|DZ_6`G z?8NLDMNsi0mPPCe631o>Ji31wU8HEOg+wcfHWWdN%`4b6?iQ*h-;Tw`5?unuJ!&8_ zlZGHB5Pu4m#ea z9Sjp>B%!%|G5u}&+ThKerGfR`efN`n_mX{KC+>L~YS23J*Ms)%#~@+$Lx^=+Ci_BX$B3ZSt{Gp4(UnL{CwJS;uS#` zBal5`h~20OYN;SH3cBB-3&kxE&7@O@1^rS)f&#s_Q7phCNm4V{CPKjJ&XH)kYj2Vj z8Y#8^=CKfPx`P2Y{WuU!ci;V!tT;0zokYBvU#%3~Q-ZE!&|E)GFFv@1X(5P(5rc!B zcs}89-{-x!fqT&zV$c!%2zdl_A0~PZe#;n*i!dhMzy*3*yiOFM%ouwJoxefvFEFwW PBTuwe*8dn#M4SHs)qu5` diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/cors.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/cors.cpython-312.pyc deleted file mode 100644 index 9f6277d7a5dcfa2418269450bb25d97db3021440..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmX@j%ge<81f4-j8U8@}F^B^LOi;#W0U%>KLkdF*V-7u2QW zrs`+qC+6qo=cQI<>O1G>6_@6e00qlZ^UCydGL!TRDoZl*^NjTjjr5B%OHy?U5|gtN z(^HG}(-MKU6lCfnY|sbUpjS}&i^C>2KczG$)vkyGXb&S07lRldm>C%v?=iR)u>m;% DV6{dc diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/gzip.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/gzip.cpython-312.pyc deleted file mode 100644 index 36a9d1ad08402673e5f38184f08c15b59be29fc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmX@j%ge<81f4-j8U8@}F^B^LOi;#W0U%>KLkdF*V-7u2QW zrs`+qC+6qo=cQI<>O1G>6_@6e00qlZ^UCydGL!TRDoZl*^NjTjjr5B%OHy?U5|gtN z(^HG}(-MKU6lCfnY|sbUpjS}&i^C>2KczG$)vkyGXb&S07lRldm>C%v?=iR)u>m;% Dk`+d1 diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/httpsredirect.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/httpsredirect.cpython-312.pyc deleted file mode 100644 index 3a60eb5cbf2766e62b48c27159e0391418f96914..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280 zcmX@j%ge<81f4-j8O1>QF^B^LOi;#W0U%>KLkdF*V-7hD zpfM{MK7&mAm7t%IpPQEFQ_cZ$j>v@ zGc?jK&MZmQEl5nxPE1cN)=x_WT33*%kFZJ~#VWmm%3mBdx%nxjIjMF<96$>hfw&kH T0w0(e85zGZF)=a~u>rXNY}ip_ diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/trustedhost.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/trustedhost.cpython-312.pyc deleted file mode 100644 index 9e1231a10d3a1a8bfba9c3acbfaa5bef90d448e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274 zcmX@j%ge<81f4-j8M#3EF^B^LOi;#W0U%>KLkdF*V-7 zK7&m96{nw(pPQEFQ_cZ$j>v@Gc?jK z&MZmQEl5nxPE1cN)=x_WT2_#$kFZD|$s)ai%3mBdx%nxjIjMF<96;+Bfw&mt_YcgB PjEvuym>8Lg*nnIBzD!S} diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/wsgi.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/wsgi.cpython-312.pyc deleted file mode 100644 index ffa558aceeabfbd511071f1c13afe5b088bded18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmX@j%ge<81f4-j8U8@}F^B^LOi;#W0U%>KLkdF*V-7 z@L+dO-^`ShoYeBfqEtUkrdyK5C5c5jsU;<;dbw~3z4GGp%pzu>rj-nzL3)3M>u2QW zrs`+qC+6qo=cQI<>O1G>6_@6e00qlZ^UCydGL!TRDoZl*^NjTjjr5B%OHy?U5|gtN z(^HG}(-MKU6lCfnY|sbUpjS}&i^C>2KczG$)vkyGXb&S07lRldm>C%v?=iR)u>m;% DWtB!K diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py b/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py deleted file mode 100644 index 503a68a..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py +++ /dev/null @@ -1,28 +0,0 @@ -from typing import Optional - -from fastapi.concurrency import AsyncExitStack -from starlette.types import ASGIApp, Receive, Scope, Send - - -class AsyncExitStackMiddleware: - def __init__(self, app: ASGIApp, context_name: str = "fastapi_astack") -> None: - self.app = app - self.context_name = context_name - - async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None: - if AsyncExitStack: - dependency_exception: Optional[Exception] = None - async with AsyncExitStack() as stack: - scope[self.context_name] = stack - try: - await self.app(scope, receive, send) - except Exception as e: - dependency_exception = e - raise e - if dependency_exception: - # This exception was possibly handled by the dependency but it should - # still bubble up so that the ServerErrorMiddleware can return a 500 - # or the ExceptionMiddleware can catch and handle any other exceptions - raise dependency_exception - else: - await self.app(scope, receive, send) # pragma: no cover diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/cors.py b/venv/lib/python3.12/site-packages/fastapi/middleware/cors.py deleted file mode 100644 index 8dfaad0..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/middleware/cors.py +++ /dev/null @@ -1 +0,0 @@ -from starlette.middleware.cors import CORSMiddleware as CORSMiddleware # noqa diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/gzip.py b/venv/lib/python3.12/site-packages/fastapi/middleware/gzip.py deleted file mode 100644 index bbeb2cc..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/middleware/gzip.py +++ /dev/null @@ -1 +0,0 @@ -from starlette.middleware.gzip import GZipMiddleware as GZipMiddleware # noqa diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/httpsredirect.py b/venv/lib/python3.12/site-packages/fastapi/middleware/httpsredirect.py deleted file mode 100644 index b7a3d8e..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/middleware/httpsredirect.py +++ /dev/null @@ -1,3 +0,0 @@ -from starlette.middleware.httpsredirect import ( # noqa - HTTPSRedirectMiddleware as HTTPSRedirectMiddleware, -) diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/trustedhost.py b/venv/lib/python3.12/site-packages/fastapi/middleware/trustedhost.py deleted file mode 100644 index 08d7e03..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/middleware/trustedhost.py +++ /dev/null @@ -1,3 +0,0 @@ -from starlette.middleware.trustedhost import ( # noqa - TrustedHostMiddleware as TrustedHostMiddleware, -) diff --git a/venv/lib/python3.12/site-packages/fastapi/middleware/wsgi.py b/venv/lib/python3.12/site-packages/fastapi/middleware/wsgi.py deleted file mode 100644 index c4c6a79..0000000 --- a/venv/lib/python3.12/site-packages/fastapi/middleware/wsgi.py +++ /dev/null @@ -1 +0,0 @@ -from starlette.middleware.wsgi import WSGIMiddleware as WSGIMiddleware # noqa diff --git a/venv/lib/python3.12/site-packages/fastapi/openapi/__init__.py b/venv/lib/python3.12/site-packages/fastapi/openapi/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 01135f8c6229c6c3ecc5a69a335c05f01b37ad8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185 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 bTtj-01926uzMe diff --git a/venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/models.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/models.cpython-312.pyc deleted file mode 100644 index 7645b4384811b010448a44b75fd05fadf57a1257..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22036 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 b>H*?&4&wi2&;9YR3-JE}JuDbL diff --git a/venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/utils.cpython-312.pyc b/venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/utils.cpython-312.pyc deleted file mode 100644 index 0e97bb3f69fb9b0bd3a87eb22d99c166ac1b1308..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18155 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

  • Charset Detection, for Everyone 👋

    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 Xop!l)?6V1pzwtgd4(Jc7&LjUXb^E2m diff --git a/venv/lib/python3.12/site-packages/anyio/_backends/__pycache__/_trio.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/_backends/__pycache__/_trio.cpython-312.pyc deleted file mode 100644 index 3b3f74b70503aab26358ab5114763a5e14d43287..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70472 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 (3, 10): - from typing import ParamSpec -else: - from typing_extensions import ParamSpec - -if sys.version_info >= (3, 11): - from asyncio import Runner - from typing import TypeVarTuple, Unpack -else: - import contextvars - import enum - import signal - from asyncio import coroutines, events, exceptions, tasks - - from exceptiongroup import BaseExceptionGroup - from typing_extensions import TypeVarTuple, Unpack - - class _State(enum.Enum): - CREATED = "created" - INITIALIZED = "initialized" - CLOSED = "closed" - - class Runner: - # Copied from CPython 3.11 - def __init__( - self, - *, - debug: bool | None = None, - loop_factory: Callable[[], AbstractEventLoop] | None = None, - ): - self._state = _State.CREATED - self._debug = debug - self._loop_factory = loop_factory - self._loop: AbstractEventLoop | None = None - self._context = None - self._interrupt_count = 0 - self._set_event_loop = False - - def __enter__(self) -> Runner: - self._lazy_init() - return self - - def __exit__( - self, - exc_type: type[BaseException], - exc_val: BaseException, - exc_tb: TracebackType, - ) -> None: - self.close() - - def close(self) -> None: - """Shutdown and close event loop.""" - if self._state is not _State.INITIALIZED: - return - try: - loop = self._loop - _cancel_all_tasks(loop) - loop.run_until_complete(loop.shutdown_asyncgens()) - if hasattr(loop, "shutdown_default_executor"): - loop.run_until_complete(loop.shutdown_default_executor()) - else: - loop.run_until_complete(_shutdown_default_executor(loop)) - finally: - if self._set_event_loop: - events.set_event_loop(None) - loop.close() - self._loop = None - self._state = _State.CLOSED - - def get_loop(self) -> AbstractEventLoop: - """Return embedded event loop.""" - self._lazy_init() - return self._loop - - def run(self, coro: Coroutine[T_Retval], *, context=None) -> T_Retval: - """Run a coroutine inside the embedded event loop.""" - if not coroutines.iscoroutine(coro): - raise ValueError(f"a coroutine was expected, got {coro!r}") - - if events._get_running_loop() is not None: - # fail fast with short traceback - raise RuntimeError( - "Runner.run() cannot be called from a running event loop" - ) - - self._lazy_init() - - if context is None: - context = self._context - task = context.run(self._loop.create_task, coro) - - if ( - threading.current_thread() is threading.main_thread() - and signal.getsignal(signal.SIGINT) is signal.default_int_handler - ): - sigint_handler = partial(self._on_sigint, main_task=task) - try: - signal.signal(signal.SIGINT, sigint_handler) - except ValueError: - # `signal.signal` may throw if `threading.main_thread` does - # not support signals (e.g. embedded interpreter with signals - # not registered - see gh-91880) - sigint_handler = None - else: - sigint_handler = None - - self._interrupt_count = 0 - try: - return self._loop.run_until_complete(task) - except exceptions.CancelledError: - if self._interrupt_count > 0: - uncancel = getattr(task, "uncancel", None) - if uncancel is not None and uncancel() == 0: - raise KeyboardInterrupt() - raise # CancelledError - finally: - if ( - sigint_handler is not None - and signal.getsignal(signal.SIGINT) is sigint_handler - ): - signal.signal(signal.SIGINT, signal.default_int_handler) - - def _lazy_init(self) -> None: - if self._state is _State.CLOSED: - raise RuntimeError("Runner is closed") - if self._state is _State.INITIALIZED: - return - if self._loop_factory is None: - self._loop = events.new_event_loop() - if not self._set_event_loop: - # Call set_event_loop only once to avoid calling - # attach_loop multiple times on child watchers - events.set_event_loop(self._loop) - self._set_event_loop = True - else: - self._loop = self._loop_factory() - if self._debug is not None: - self._loop.set_debug(self._debug) - self._context = contextvars.copy_context() - self._state = _State.INITIALIZED - - def _on_sigint(self, signum, frame, main_task: asyncio.Task) -> None: - self._interrupt_count += 1 - if self._interrupt_count == 1 and not main_task.done(): - main_task.cancel() - # wakeup loop if it is blocked by select() with long timeout - self._loop.call_soon_threadsafe(lambda: None) - return - raise KeyboardInterrupt() - - def _cancel_all_tasks(loop: AbstractEventLoop) -> None: - to_cancel = tasks.all_tasks(loop) - if not to_cancel: - return - - for task in to_cancel: - task.cancel() - - loop.run_until_complete(tasks.gather(*to_cancel, return_exceptions=True)) - - for task in to_cancel: - if task.cancelled(): - continue - if task.exception() is not None: - loop.call_exception_handler( - { - "message": "unhandled exception during asyncio.run() shutdown", - "exception": task.exception(), - "task": task, - } - ) - - async def _shutdown_default_executor(loop: AbstractEventLoop) -> None: - """Schedule the shutdown of the default executor.""" - - def _do_shutdown(future: asyncio.futures.Future) -> None: - try: - loop._default_executor.shutdown(wait=True) # type: ignore[attr-defined] - loop.call_soon_threadsafe(future.set_result, None) - except Exception as ex: - loop.call_soon_threadsafe(future.set_exception, ex) - - loop._executor_shutdown_called = True - if loop._default_executor is None: - return - future = loop.create_future() - thread = threading.Thread(target=_do_shutdown, args=(future,)) - thread.start() - try: - await future - finally: - thread.join() - - -T_Retval = TypeVar("T_Retval") -T_contra = TypeVar("T_contra", contravariant=True) -PosArgsT = TypeVarTuple("PosArgsT") -P = ParamSpec("P") - -_root_task: RunVar[asyncio.Task | None] = RunVar("_root_task") - - -def find_root_task() -> asyncio.Task: - root_task = _root_task.get(None) - if root_task is not None and not root_task.done(): - return root_task - - # Look for a task that has been started via run_until_complete() - for task in all_tasks(): - if task._callbacks and not task.done(): - callbacks = [cb for cb, context in task._callbacks] - for cb in callbacks: - if ( - cb is _run_until_complete_cb - or getattr(cb, "__module__", None) == "uvloop.loop" - ): - _root_task.set(task) - return task - - # Look up the topmost task in the AnyIO task tree, if possible - task = cast(asyncio.Task, current_task()) - state = _task_states.get(task) - if state: - cancel_scope = state.cancel_scope - while cancel_scope and cancel_scope._parent_scope is not None: - cancel_scope = cancel_scope._parent_scope - - if cancel_scope is not None: - return cast(asyncio.Task, cancel_scope._host_task) - - return task - - -def get_callable_name(func: Callable) -> str: - module = getattr(func, "__module__", None) - qualname = getattr(func, "__qualname__", None) - return ".".join([x for x in (module, qualname) if x]) - - -# -# Event loop -# - -_run_vars: WeakKeyDictionary[asyncio.AbstractEventLoop, Any] = WeakKeyDictionary() - - -def _task_started(task: asyncio.Task) -> bool: - """Return ``True`` if the task has been started and has not finished.""" - # The task coro should never be None here, as we never add finished tasks to the - # task list - coro = task.get_coro() - assert coro is not None - try: - return getcoroutinestate(coro) in (CORO_RUNNING, CORO_SUSPENDED) - except AttributeError: - # task coro is async_genenerator_asend https://bugs.python.org/issue37771 - raise Exception(f"Cannot determine if task {task} has started or not") from None - - -# -# Timeouts and cancellation -# - - -def is_anyio_cancellation(exc: CancelledError) -> bool: - # Sometimes third party frameworks catch a CancelledError and raise a new one, so as - # a workaround we have to look at the previous ones in __context__ too for a - # matching cancel message - while True: - if ( - exc.args - and isinstance(exc.args[0], str) - and exc.args[0].startswith("Cancelled by cancel scope ") - ): - return True - - if isinstance(exc.__context__, CancelledError): - exc = exc.__context__ - continue - - return False - - -class CancelScope(BaseCancelScope): - def __new__( - cls, *, deadline: float = math.inf, shield: bool = False - ) -> CancelScope: - return object.__new__(cls) - - def __init__(self, deadline: float = math.inf, shield: bool = False): - self._deadline = deadline - self._shield = shield - self._parent_scope: CancelScope | None = None - self._child_scopes: set[CancelScope] = set() - self._cancel_called = False - self._cancelled_caught = False - self._active = False - self._timeout_handle: asyncio.TimerHandle | None = None - self._cancel_handle: asyncio.Handle | None = None - self._tasks: set[asyncio.Task] = set() - self._host_task: asyncio.Task | None = None - if sys.version_info >= (3, 11): - self._pending_uncancellations: int | None = 0 - else: - self._pending_uncancellations = None - - def __enter__(self) -> CancelScope: - if self._active: - raise RuntimeError( - "Each CancelScope may only be used for a single 'with' block" - ) - - self._host_task = host_task = cast(asyncio.Task, current_task()) - self._tasks.add(host_task) - try: - task_state = _task_states[host_task] - except KeyError: - task_state = TaskState(None, self) - _task_states[host_task] = task_state - else: - self._parent_scope = task_state.cancel_scope - task_state.cancel_scope = self - if self._parent_scope is not None: - # If using an eager task factory, the parent scope may not even contain - # the host task - self._parent_scope._child_scopes.add(self) - self._parent_scope._tasks.discard(host_task) - - self._timeout() - self._active = True - - # Start cancelling the host task if the scope was cancelled before entering - if self._cancel_called: - self._deliver_cancellation(self) - - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> bool: - del exc_tb - - if not self._active: - raise RuntimeError("This cancel scope is not active") - if current_task() is not self._host_task: - raise RuntimeError( - "Attempted to exit cancel scope in a different task than it was " - "entered in" - ) - - assert self._host_task is not None - host_task_state = _task_states.get(self._host_task) - if host_task_state is None or host_task_state.cancel_scope is not self: - raise RuntimeError( - "Attempted to exit a cancel scope that isn't the current tasks's " - "current cancel scope" - ) - - try: - self._active = False - if self._timeout_handle: - self._timeout_handle.cancel() - self._timeout_handle = None - - self._tasks.remove(self._host_task) - if self._parent_scope is not None: - self._parent_scope._child_scopes.remove(self) - self._parent_scope._tasks.add(self._host_task) - - host_task_state.cancel_scope = self._parent_scope - - # Restart the cancellation effort in the closest visible, cancelled parent - # scope if necessary - self._restart_cancellation_in_parent() - - # We only swallow the exception iff it was an AnyIO CancelledError, either - # directly as exc_val or inside an exception group and there are no cancelled - # parent cancel scopes visible to us here - if self._cancel_called and not self._parent_cancellation_is_visible_to_us: - # For each level-cancel() call made on the host task, call uncancel() - while self._pending_uncancellations: - self._host_task.uncancel() - self._pending_uncancellations -= 1 - - # Update cancelled_caught and check for exceptions we must not swallow - cannot_swallow_exc_val = False - if exc_val is not None: - for exc in iterate_exceptions(exc_val): - if isinstance(exc, CancelledError) and is_anyio_cancellation( - exc - ): - self._cancelled_caught = True - else: - cannot_swallow_exc_val = True - - return self._cancelled_caught and not cannot_swallow_exc_val - else: - if self._pending_uncancellations: - assert self._parent_scope is not None - assert self._parent_scope._pending_uncancellations is not None - self._parent_scope._pending_uncancellations += ( - self._pending_uncancellations - ) - self._pending_uncancellations = 0 - - return False - finally: - self._host_task = None - del exc_val - - @property - def _effectively_cancelled(self) -> bool: - cancel_scope: CancelScope | None = self - while cancel_scope is not None: - if cancel_scope._cancel_called: - return True - - if cancel_scope.shield: - return False - - cancel_scope = cancel_scope._parent_scope - - return False - - @property - def _parent_cancellation_is_visible_to_us(self) -> bool: - return ( - self._parent_scope is not None - and not self.shield - and self._parent_scope._effectively_cancelled - ) - - def _timeout(self) -> None: - if self._deadline != math.inf: - loop = get_running_loop() - if loop.time() >= self._deadline: - self.cancel() - else: - self._timeout_handle = loop.call_at(self._deadline, self._timeout) - - def _deliver_cancellation(self, origin: CancelScope) -> bool: - """ - Deliver cancellation to directly contained tasks and nested cancel scopes. - - Schedule another run at the end if we still have tasks eligible for - cancellation. - - :param origin: the cancel scope that originated the cancellation - :return: ``True`` if the delivery needs to be retried on the next cycle - - """ - should_retry = False - current = current_task() - for task in self._tasks: - should_retry = True - if task._must_cancel: # type: ignore[attr-defined] - continue - - # The task is eligible for cancellation if it has started - if task is not current and (task is self._host_task or _task_started(task)): - waiter = task._fut_waiter # type: ignore[attr-defined] - if not isinstance(waiter, asyncio.Future) or not waiter.done(): - task.cancel(f"Cancelled by cancel scope {id(origin):x}") - if ( - task is origin._host_task - and origin._pending_uncancellations is not None - ): - origin._pending_uncancellations += 1 - - # Deliver cancellation to child scopes that aren't shielded or running their own - # cancellation callbacks - for scope in self._child_scopes: - if not scope._shield and not scope.cancel_called: - should_retry = scope._deliver_cancellation(origin) or should_retry - - # Schedule another callback if there are still tasks left - if origin is self: - if should_retry: - self._cancel_handle = get_running_loop().call_soon( - self._deliver_cancellation, origin - ) - else: - self._cancel_handle = None - - return should_retry - - def _restart_cancellation_in_parent(self) -> None: - """ - Restart the cancellation effort in the closest directly cancelled parent scope. - - """ - scope = self._parent_scope - while scope is not None: - if scope._cancel_called: - if scope._cancel_handle is None: - scope._deliver_cancellation(scope) - - break - - # No point in looking beyond any shielded scope - if scope._shield: - break - - scope = scope._parent_scope - - def cancel(self) -> None: - if not self._cancel_called: - if self._timeout_handle: - self._timeout_handle.cancel() - self._timeout_handle = None - - self._cancel_called = True - if self._host_task is not None: - self._deliver_cancellation(self) - - @property - def deadline(self) -> float: - return self._deadline - - @deadline.setter - def deadline(self, value: float) -> None: - self._deadline = float(value) - if self._timeout_handle is not None: - self._timeout_handle.cancel() - self._timeout_handle = None - - if self._active and not self._cancel_called: - self._timeout() - - @property - def cancel_called(self) -> bool: - return self._cancel_called - - @property - def cancelled_caught(self) -> bool: - return self._cancelled_caught - - @property - def shield(self) -> bool: - return self._shield - - @shield.setter - def shield(self, value: bool) -> None: - if self._shield != value: - self._shield = value - if not value: - self._restart_cancellation_in_parent() - - -# -# Task states -# - - -class TaskState: - """ - Encapsulates auxiliary task information that cannot be added to the Task instance - itself because there are no guarantees about its implementation. - """ - - __slots__ = "parent_id", "cancel_scope", "__weakref__" - - def __init__(self, parent_id: int | None, cancel_scope: CancelScope | None): - self.parent_id = parent_id - self.cancel_scope = cancel_scope - - -_task_states: WeakKeyDictionary[asyncio.Task, TaskState] = WeakKeyDictionary() - - -# -# Task groups -# - - -class _AsyncioTaskStatus(abc.TaskStatus): - def __init__(self, future: asyncio.Future, parent_id: int): - self._future = future - self._parent_id = parent_id - - def started(self, value: T_contra | None = None) -> None: - try: - self._future.set_result(value) - except asyncio.InvalidStateError: - if not self._future.cancelled(): - raise RuntimeError( - "called 'started' twice on the same task status" - ) from None - - task = cast(asyncio.Task, current_task()) - _task_states[task].parent_id = self._parent_id - - -if sys.version_info >= (3, 12): - _eager_task_factory_code: CodeType | None = asyncio.eager_task_factory.__code__ -else: - _eager_task_factory_code = None - - -class TaskGroup(abc.TaskGroup): - def __init__(self) -> None: - self.cancel_scope: CancelScope = CancelScope() - self._active = False - self._exceptions: list[BaseException] = [] - self._tasks: set[asyncio.Task] = set() - self._on_completed_fut: asyncio.Future[None] | None = None - - async def __aenter__(self) -> TaskGroup: - self.cancel_scope.__enter__() - self._active = True - return self - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> bool | None: - try: - if exc_val is not None: - self.cancel_scope.cancel() - if not isinstance(exc_val, CancelledError): - self._exceptions.append(exc_val) - - loop = get_running_loop() - try: - if self._tasks: - with CancelScope() as wait_scope: - while self._tasks: - self._on_completed_fut = loop.create_future() - - try: - await self._on_completed_fut - except CancelledError as exc: - # Shield the scope against further cancellation attempts, - # as they're not productive (#695) - wait_scope.shield = True - self.cancel_scope.cancel() - - # Set exc_val from the cancellation exception if it was - # previously unset. However, we should not replace a native - # cancellation exception with one raise by a cancel scope. - if exc_val is None or ( - isinstance(exc_val, CancelledError) - and not is_anyio_cancellation(exc) - ): - exc_val = exc - - self._on_completed_fut = None - else: - # If there are no child tasks to wait on, run at least one checkpoint - # anyway - await AsyncIOBackend.cancel_shielded_checkpoint() - - self._active = False - if self._exceptions: - # The exception that got us here should already have been - # added to self._exceptions so it's ok to break exception - # chaining and avoid adding a "During handling of above..." - # for each nesting level. - raise BaseExceptionGroup( - "unhandled errors in a TaskGroup", self._exceptions - ) from None - elif exc_val: - raise exc_val - except BaseException as exc: - if self.cancel_scope.__exit__(type(exc), exc, exc.__traceback__): - return True - - raise - - return self.cancel_scope.__exit__(exc_type, exc_val, exc_tb) - finally: - del exc_val, exc_tb, self._exceptions - - def _spawn( - self, - func: Callable[[Unpack[PosArgsT]], Awaitable[Any]], - args: tuple[Unpack[PosArgsT]], - name: object, - task_status_future: asyncio.Future | None = None, - ) -> asyncio.Task: - def task_done(_task: asyncio.Task) -> None: - task_state = _task_states[_task] - assert task_state.cancel_scope is not None - assert _task in task_state.cancel_scope._tasks - task_state.cancel_scope._tasks.remove(_task) - self._tasks.remove(task) - del _task_states[_task] - - if self._on_completed_fut is not None and not self._tasks: - try: - self._on_completed_fut.set_result(None) - except asyncio.InvalidStateError: - pass - - try: - exc = _task.exception() - except CancelledError as e: - while isinstance(e.__context__, CancelledError): - e = e.__context__ - - exc = e - - if exc is not None: - # The future can only be in the cancelled state if the host task was - # cancelled, so return immediately instead of adding one more - # CancelledError to the exceptions list - if task_status_future is not None and task_status_future.cancelled(): - return - - if task_status_future is None or task_status_future.done(): - if not isinstance(exc, CancelledError): - self._exceptions.append(exc) - - if not self.cancel_scope._effectively_cancelled: - self.cancel_scope.cancel() - else: - task_status_future.set_exception(exc) - elif task_status_future is not None and not task_status_future.done(): - task_status_future.set_exception( - RuntimeError("Child exited without calling task_status.started()") - ) - - if not self._active: - raise RuntimeError( - "This task group is not active; no new tasks can be started." - ) - - kwargs = {} - if task_status_future: - parent_id = id(current_task()) - kwargs["task_status"] = _AsyncioTaskStatus( - task_status_future, id(self.cancel_scope._host_task) - ) - else: - parent_id = id(self.cancel_scope._host_task) - - coro = func(*args, **kwargs) - if not iscoroutine(coro): - prefix = f"{func.__module__}." if hasattr(func, "__module__") else "" - raise TypeError( - f"Expected {prefix}{func.__qualname__}() to return a coroutine, but " - f"the return value ({coro!r}) is not a coroutine object" - ) - - name = get_callable_name(func) if name is None else str(name) - loop = asyncio.get_running_loop() - if ( - (factory := loop.get_task_factory()) - and getattr(factory, "__code__", None) is _eager_task_factory_code - and (closure := getattr(factory, "__closure__", None)) - ): - custom_task_constructor = closure[0].cell_contents - task = custom_task_constructor(coro, loop=loop, name=name) - else: - task = create_task(coro, name=name) - - # Make the spawned task inherit the task group's cancel scope - _task_states[task] = TaskState( - parent_id=parent_id, cancel_scope=self.cancel_scope - ) - self.cancel_scope._tasks.add(task) - self._tasks.add(task) - task.add_done_callback(task_done) - return task - - def start_soon( - self, - func: Callable[[Unpack[PosArgsT]], Awaitable[Any]], - *args: Unpack[PosArgsT], - name: object = None, - ) -> None: - self._spawn(func, args, name) - - async def start( - self, func: Callable[..., Awaitable[Any]], *args: object, name: object = None - ) -> Any: - future: asyncio.Future = asyncio.Future() - task = self._spawn(func, args, name, future) - - # If the task raises an exception after sending a start value without a switch - # point between, the task group is cancelled and this method never proceeds to - # process the completed future. That's why we have to have a shielded cancel - # scope here. - try: - return await future - except CancelledError: - # Cancel the task and wait for it to exit before returning - task.cancel() - with CancelScope(shield=True), suppress(CancelledError): - await task - - raise - - -# -# Threads -# - -_Retval_Queue_Type = tuple[Optional[T_Retval], Optional[BaseException]] - - -class WorkerThread(Thread): - MAX_IDLE_TIME = 10 # seconds - - def __init__( - self, - root_task: asyncio.Task, - workers: set[WorkerThread], - idle_workers: deque[WorkerThread], - ): - super().__init__(name="AnyIO worker thread") - self.root_task = root_task - self.workers = workers - self.idle_workers = idle_workers - self.loop = root_task._loop - self.queue: Queue[ - tuple[Context, Callable, tuple, asyncio.Future, CancelScope] | None - ] = Queue(2) - self.idle_since = AsyncIOBackend.current_time() - self.stopping = False - - def _report_result( - self, future: asyncio.Future, result: Any, exc: BaseException | None - ) -> None: - self.idle_since = AsyncIOBackend.current_time() - if not self.stopping: - self.idle_workers.append(self) - - if not future.cancelled(): - if exc is not None: - if isinstance(exc, StopIteration): - new_exc = RuntimeError("coroutine raised StopIteration") - new_exc.__cause__ = exc - exc = new_exc - - future.set_exception(exc) - else: - future.set_result(result) - - def run(self) -> None: - with claim_worker_thread(AsyncIOBackend, self.loop): - while True: - item = self.queue.get() - if item is None: - # Shutdown command received - return - - context, func, args, future, cancel_scope = item - if not future.cancelled(): - result = None - exception: BaseException | None = None - threadlocals.current_cancel_scope = cancel_scope - try: - result = context.run(func, *args) - except BaseException as exc: - exception = exc - finally: - del threadlocals.current_cancel_scope - - if not self.loop.is_closed(): - self.loop.call_soon_threadsafe( - self._report_result, future, result, exception - ) - - del result, exception - - self.queue.task_done() - del item, context, func, args, future, cancel_scope - - def stop(self, f: asyncio.Task | None = None) -> None: - self.stopping = True - self.queue.put_nowait(None) - self.workers.discard(self) - try: - self.idle_workers.remove(self) - except ValueError: - pass - - -_threadpool_idle_workers: RunVar[deque[WorkerThread]] = RunVar( - "_threadpool_idle_workers" -) -_threadpool_workers: RunVar[set[WorkerThread]] = RunVar("_threadpool_workers") - - -class BlockingPortal(abc.BlockingPortal): - def __new__(cls) -> BlockingPortal: - return object.__new__(cls) - - def __init__(self) -> None: - super().__init__() - self._loop = get_running_loop() - - def _spawn_task_from_thread( - self, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval], - args: tuple[Unpack[PosArgsT]], - kwargs: dict[str, Any], - name: object, - future: Future[T_Retval], - ) -> None: - AsyncIOBackend.run_sync_from_thread( - partial(self._task_group.start_soon, name=name), - (self._call_func, func, args, kwargs, future), - self._loop, - ) - - -# -# Subprocesses -# - - -@dataclass(eq=False) -class StreamReaderWrapper(abc.ByteReceiveStream): - _stream: asyncio.StreamReader - - async def receive(self, max_bytes: int = 65536) -> bytes: - data = await self._stream.read(max_bytes) - if data: - return data - else: - raise EndOfStream - - async def aclose(self) -> None: - self._stream.set_exception(ClosedResourceError()) - await AsyncIOBackend.checkpoint() - - -@dataclass(eq=False) -class StreamWriterWrapper(abc.ByteSendStream): - _stream: asyncio.StreamWriter - - async def send(self, item: bytes) -> None: - self._stream.write(item) - await self._stream.drain() - - async def aclose(self) -> None: - self._stream.close() - await AsyncIOBackend.checkpoint() - - -@dataclass(eq=False) -class Process(abc.Process): - _process: asyncio.subprocess.Process - _stdin: StreamWriterWrapper | None - _stdout: StreamReaderWrapper | None - _stderr: StreamReaderWrapper | None - - async def aclose(self) -> None: - with CancelScope(shield=True) as scope: - if self._stdin: - await self._stdin.aclose() - if self._stdout: - await self._stdout.aclose() - if self._stderr: - await self._stderr.aclose() - - scope.shield = False - try: - await self.wait() - except BaseException: - scope.shield = True - self.kill() - await self.wait() - raise - - async def wait(self) -> int: - return await self._process.wait() - - def terminate(self) -> None: - self._process.terminate() - - def kill(self) -> None: - self._process.kill() - - def send_signal(self, signal: int) -> None: - self._process.send_signal(signal) - - @property - def pid(self) -> int: - return self._process.pid - - @property - def returncode(self) -> int | None: - return self._process.returncode - - @property - def stdin(self) -> abc.ByteSendStream | None: - return self._stdin - - @property - def stdout(self) -> abc.ByteReceiveStream | None: - return self._stdout - - @property - def stderr(self) -> abc.ByteReceiveStream | None: - return self._stderr - - -def _forcibly_shutdown_process_pool_on_exit( - workers: set[Process], _task: object -) -> None: - """ - Forcibly shuts down worker processes belonging to this event loop.""" - child_watcher: asyncio.AbstractChildWatcher | None = None - if sys.version_info < (3, 12): - try: - child_watcher = asyncio.get_event_loop_policy().get_child_watcher() - except NotImplementedError: - pass - - # Close as much as possible (w/o async/await) to avoid warnings - for process in workers: - if process.returncode is None: - continue - - process._stdin._stream._transport.close() # type: ignore[union-attr] - process._stdout._stream._transport.close() # type: ignore[union-attr] - process._stderr._stream._transport.close() # type: ignore[union-attr] - process.kill() - if child_watcher: - child_watcher.remove_child_handler(process.pid) - - -async def _shutdown_process_pool_on_exit(workers: set[abc.Process]) -> None: - """ - Shuts down worker processes belonging to this event loop. - - NOTE: this only works when the event loop was started using asyncio.run() or - anyio.run(). - - """ - process: abc.Process - try: - await sleep(math.inf) - except asyncio.CancelledError: - for process in workers: - if process.returncode is None: - process.kill() - - for process in workers: - await process.aclose() - - -# -# Sockets and networking -# - - -class StreamProtocol(asyncio.Protocol): - read_queue: deque[bytes] - read_event: asyncio.Event - write_event: asyncio.Event - exception: Exception | None = None - is_at_eof: bool = False - - def connection_made(self, transport: asyncio.BaseTransport) -> None: - self.read_queue = deque() - self.read_event = asyncio.Event() - self.write_event = asyncio.Event() - self.write_event.set() - cast(asyncio.Transport, transport).set_write_buffer_limits(0) - - def connection_lost(self, exc: Exception | None) -> None: - if exc: - self.exception = BrokenResourceError() - self.exception.__cause__ = exc - - self.read_event.set() - self.write_event.set() - - def data_received(self, data: bytes) -> None: - # ProactorEventloop sometimes sends bytearray instead of bytes - self.read_queue.append(bytes(data)) - self.read_event.set() - - def eof_received(self) -> bool | None: - self.is_at_eof = True - self.read_event.set() - return True - - def pause_writing(self) -> None: - self.write_event = asyncio.Event() - - def resume_writing(self) -> None: - self.write_event.set() - - -class DatagramProtocol(asyncio.DatagramProtocol): - read_queue: deque[tuple[bytes, IPSockAddrType]] - read_event: asyncio.Event - write_event: asyncio.Event - exception: Exception | None = None - - def connection_made(self, transport: asyncio.BaseTransport) -> None: - self.read_queue = deque(maxlen=100) # arbitrary value - self.read_event = asyncio.Event() - self.write_event = asyncio.Event() - self.write_event.set() - - def connection_lost(self, exc: Exception | None) -> None: - self.read_event.set() - self.write_event.set() - - def datagram_received(self, data: bytes, addr: IPSockAddrType) -> None: - addr = convert_ipv6_sockaddr(addr) - self.read_queue.append((data, addr)) - self.read_event.set() - - def error_received(self, exc: Exception) -> None: - self.exception = exc - - def pause_writing(self) -> None: - self.write_event.clear() - - def resume_writing(self) -> None: - self.write_event.set() - - -class SocketStream(abc.SocketStream): - def __init__(self, transport: asyncio.Transport, protocol: StreamProtocol): - self._transport = transport - self._protocol = protocol - self._receive_guard = ResourceGuard("reading from") - self._send_guard = ResourceGuard("writing to") - self._closed = False - - @property - def _raw_socket(self) -> socket.socket: - return self._transport.get_extra_info("socket") - - async def receive(self, max_bytes: int = 65536) -> bytes: - with self._receive_guard: - if ( - not self._protocol.read_event.is_set() - and not self._transport.is_closing() - and not self._protocol.is_at_eof - ): - self._transport.resume_reading() - await self._protocol.read_event.wait() - self._transport.pause_reading() - else: - await AsyncIOBackend.checkpoint() - - try: - chunk = self._protocol.read_queue.popleft() - except IndexError: - if self._closed: - raise ClosedResourceError from None - elif self._protocol.exception: - raise self._protocol.exception from None - else: - raise EndOfStream from None - - if len(chunk) > max_bytes: - # Split the oversized chunk - chunk, leftover = chunk[:max_bytes], chunk[max_bytes:] - self._protocol.read_queue.appendleft(leftover) - - # If the read queue is empty, clear the flag so that the next call will - # block until data is available - if not self._protocol.read_queue: - self._protocol.read_event.clear() - - return chunk - - async def send(self, item: bytes) -> None: - with self._send_guard: - await AsyncIOBackend.checkpoint() - - if self._closed: - raise ClosedResourceError - elif self._protocol.exception is not None: - raise self._protocol.exception - - try: - self._transport.write(item) - except RuntimeError as exc: - if self._transport.is_closing(): - raise BrokenResourceError from exc - else: - raise - - await self._protocol.write_event.wait() - - async def send_eof(self) -> None: - try: - self._transport.write_eof() - except OSError: - pass - - async def aclose(self) -> None: - if not self._transport.is_closing(): - self._closed = True - try: - self._transport.write_eof() - except OSError: - pass - - self._transport.close() - await sleep(0) - self._transport.abort() - - -class _RawSocketMixin: - _receive_future: asyncio.Future | None = None - _send_future: asyncio.Future | None = None - _closing = False - - def __init__(self, raw_socket: socket.socket): - self.__raw_socket = raw_socket - self._receive_guard = ResourceGuard("reading from") - self._send_guard = ResourceGuard("writing to") - - @property - def _raw_socket(self) -> socket.socket: - return self.__raw_socket - - def _wait_until_readable(self, loop: asyncio.AbstractEventLoop) -> asyncio.Future: - def callback(f: object) -> None: - del self._receive_future - loop.remove_reader(self.__raw_socket) - - f = self._receive_future = asyncio.Future() - loop.add_reader(self.__raw_socket, f.set_result, None) - f.add_done_callback(callback) - return f - - def _wait_until_writable(self, loop: asyncio.AbstractEventLoop) -> asyncio.Future: - def callback(f: object) -> None: - del self._send_future - loop.remove_writer(self.__raw_socket) - - f = self._send_future = asyncio.Future() - loop.add_writer(self.__raw_socket, f.set_result, None) - f.add_done_callback(callback) - return f - - async def aclose(self) -> None: - if not self._closing: - self._closing = True - if self.__raw_socket.fileno() != -1: - self.__raw_socket.close() - - if self._receive_future: - self._receive_future.set_result(None) - if self._send_future: - self._send_future.set_result(None) - - -class UNIXSocketStream(_RawSocketMixin, abc.UNIXSocketStream): - async def send_eof(self) -> None: - with self._send_guard: - self._raw_socket.shutdown(socket.SHUT_WR) - - async def receive(self, max_bytes: int = 65536) -> bytes: - loop = get_running_loop() - await AsyncIOBackend.checkpoint() - with self._receive_guard: - while True: - try: - data = self._raw_socket.recv(max_bytes) - except BlockingIOError: - await self._wait_until_readable(loop) - except OSError as exc: - if self._closing: - raise ClosedResourceError from None - else: - raise BrokenResourceError from exc - else: - if not data: - raise EndOfStream - - return data - - async def send(self, item: bytes) -> None: - loop = get_running_loop() - await AsyncIOBackend.checkpoint() - with self._send_guard: - view = memoryview(item) - while view: - try: - bytes_sent = self._raw_socket.send(view) - except BlockingIOError: - await self._wait_until_writable(loop) - except OSError as exc: - if self._closing: - raise ClosedResourceError from None - else: - raise BrokenResourceError from exc - else: - view = view[bytes_sent:] - - async def receive_fds(self, msglen: int, maxfds: int) -> tuple[bytes, list[int]]: - if not isinstance(msglen, int) or msglen < 0: - raise ValueError("msglen must be a non-negative integer") - if not isinstance(maxfds, int) or maxfds < 1: - raise ValueError("maxfds must be a positive integer") - - loop = get_running_loop() - fds = array.array("i") - await AsyncIOBackend.checkpoint() - with self._receive_guard: - while True: - try: - message, ancdata, flags, addr = self._raw_socket.recvmsg( - msglen, socket.CMSG_LEN(maxfds * fds.itemsize) - ) - except BlockingIOError: - await self._wait_until_readable(loop) - except OSError as exc: - if self._closing: - raise ClosedResourceError from None - else: - raise BrokenResourceError from exc - else: - if not message and not ancdata: - raise EndOfStream - - break - - for cmsg_level, cmsg_type, cmsg_data in ancdata: - if cmsg_level != socket.SOL_SOCKET or cmsg_type != socket.SCM_RIGHTS: - raise RuntimeError( - f"Received unexpected ancillary data; message = {message!r}, " - f"cmsg_level = {cmsg_level}, cmsg_type = {cmsg_type}" - ) - - fds.frombytes(cmsg_data[: len(cmsg_data) - (len(cmsg_data) % fds.itemsize)]) - - return message, list(fds) - - async def send_fds(self, message: bytes, fds: Collection[int | IOBase]) -> None: - if not message: - raise ValueError("message must not be empty") - if not fds: - raise ValueError("fds must not be empty") - - loop = get_running_loop() - filenos: list[int] = [] - for fd in fds: - if isinstance(fd, int): - filenos.append(fd) - elif isinstance(fd, IOBase): - filenos.append(fd.fileno()) - - fdarray = array.array("i", filenos) - await AsyncIOBackend.checkpoint() - with self._send_guard: - while True: - try: - # The ignore can be removed after mypy picks up - # https://github.com/python/typeshed/pull/5545 - self._raw_socket.sendmsg( - [message], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, fdarray)] - ) - break - except BlockingIOError: - await self._wait_until_writable(loop) - except OSError as exc: - if self._closing: - raise ClosedResourceError from None - else: - raise BrokenResourceError from exc - - -class TCPSocketListener(abc.SocketListener): - _accept_scope: CancelScope | None = None - _closed = False - - def __init__(self, raw_socket: socket.socket): - self.__raw_socket = raw_socket - self._loop = cast(asyncio.BaseEventLoop, get_running_loop()) - self._accept_guard = ResourceGuard("accepting connections from") - - @property - def _raw_socket(self) -> socket.socket: - return self.__raw_socket - - async def accept(self) -> abc.SocketStream: - if self._closed: - raise ClosedResourceError - - with self._accept_guard: - await AsyncIOBackend.checkpoint() - with CancelScope() as self._accept_scope: - try: - client_sock, _addr = await self._loop.sock_accept(self._raw_socket) - except asyncio.CancelledError: - # Workaround for https://bugs.python.org/issue41317 - try: - self._loop.remove_reader(self._raw_socket) - except (ValueError, NotImplementedError): - pass - - if self._closed: - raise ClosedResourceError from None - - raise - finally: - self._accept_scope = None - - client_sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) - transport, protocol = await self._loop.connect_accepted_socket( - StreamProtocol, client_sock - ) - return SocketStream(transport, protocol) - - async def aclose(self) -> None: - if self._closed: - return - - self._closed = True - if self._accept_scope: - # Workaround for https://bugs.python.org/issue41317 - try: - self._loop.remove_reader(self._raw_socket) - except (ValueError, NotImplementedError): - pass - - self._accept_scope.cancel() - await sleep(0) - - self._raw_socket.close() - - -class UNIXSocketListener(abc.SocketListener): - def __init__(self, raw_socket: socket.socket): - self.__raw_socket = raw_socket - self._loop = get_running_loop() - self._accept_guard = ResourceGuard("accepting connections from") - self._closed = False - - async def accept(self) -> abc.SocketStream: - await AsyncIOBackend.checkpoint() - with self._accept_guard: - while True: - try: - client_sock, _ = self.__raw_socket.accept() - client_sock.setblocking(False) - return UNIXSocketStream(client_sock) - except BlockingIOError: - f: asyncio.Future = asyncio.Future() - self._loop.add_reader(self.__raw_socket, f.set_result, None) - f.add_done_callback( - lambda _: self._loop.remove_reader(self.__raw_socket) - ) - await f - except OSError as exc: - if self._closed: - raise ClosedResourceError from None - else: - raise BrokenResourceError from exc - - async def aclose(self) -> None: - self._closed = True - self.__raw_socket.close() - - @property - def _raw_socket(self) -> socket.socket: - return self.__raw_socket - - -class UDPSocket(abc.UDPSocket): - def __init__( - self, transport: asyncio.DatagramTransport, protocol: DatagramProtocol - ): - self._transport = transport - self._protocol = protocol - self._receive_guard = ResourceGuard("reading from") - self._send_guard = ResourceGuard("writing to") - self._closed = False - - @property - def _raw_socket(self) -> socket.socket: - return self._transport.get_extra_info("socket") - - async def aclose(self) -> None: - if not self._transport.is_closing(): - self._closed = True - self._transport.close() - - async def receive(self) -> tuple[bytes, IPSockAddrType]: - with self._receive_guard: - await AsyncIOBackend.checkpoint() - - # If the buffer is empty, ask for more data - if not self._protocol.read_queue and not self._transport.is_closing(): - self._protocol.read_event.clear() - await self._protocol.read_event.wait() - - try: - return self._protocol.read_queue.popleft() - except IndexError: - if self._closed: - raise ClosedResourceError from None - else: - raise BrokenResourceError from None - - async def send(self, item: UDPPacketType) -> None: - with self._send_guard: - await AsyncIOBackend.checkpoint() - await self._protocol.write_event.wait() - if self._closed: - raise ClosedResourceError - elif self._transport.is_closing(): - raise BrokenResourceError - else: - self._transport.sendto(*item) - - -class ConnectedUDPSocket(abc.ConnectedUDPSocket): - def __init__( - self, transport: asyncio.DatagramTransport, protocol: DatagramProtocol - ): - self._transport = transport - self._protocol = protocol - self._receive_guard = ResourceGuard("reading from") - self._send_guard = ResourceGuard("writing to") - self._closed = False - - @property - def _raw_socket(self) -> socket.socket: - return self._transport.get_extra_info("socket") - - async def aclose(self) -> None: - if not self._transport.is_closing(): - self._closed = True - self._transport.close() - - async def receive(self) -> bytes: - with self._receive_guard: - await AsyncIOBackend.checkpoint() - - # If the buffer is empty, ask for more data - if not self._protocol.read_queue and not self._transport.is_closing(): - self._protocol.read_event.clear() - await self._protocol.read_event.wait() - - try: - packet = self._protocol.read_queue.popleft() - except IndexError: - if self._closed: - raise ClosedResourceError from None - else: - raise BrokenResourceError from None - - return packet[0] - - async def send(self, item: bytes) -> None: - with self._send_guard: - await AsyncIOBackend.checkpoint() - await self._protocol.write_event.wait() - if self._closed: - raise ClosedResourceError - elif self._transport.is_closing(): - raise BrokenResourceError - else: - self._transport.sendto(item) - - -class UNIXDatagramSocket(_RawSocketMixin, abc.UNIXDatagramSocket): - async def receive(self) -> UNIXDatagramPacketType: - loop = get_running_loop() - await AsyncIOBackend.checkpoint() - with self._receive_guard: - while True: - try: - data = self._raw_socket.recvfrom(65536) - except BlockingIOError: - await self._wait_until_readable(loop) - except OSError as exc: - if self._closing: - raise ClosedResourceError from None - else: - raise BrokenResourceError from exc - else: - return data - - async def send(self, item: UNIXDatagramPacketType) -> None: - loop = get_running_loop() - await AsyncIOBackend.checkpoint() - with self._send_guard: - while True: - try: - self._raw_socket.sendto(*item) - except BlockingIOError: - await self._wait_until_writable(loop) - except OSError as exc: - if self._closing: - raise ClosedResourceError from None - else: - raise BrokenResourceError from exc - else: - return - - -class ConnectedUNIXDatagramSocket(_RawSocketMixin, abc.ConnectedUNIXDatagramSocket): - async def receive(self) -> bytes: - loop = get_running_loop() - await AsyncIOBackend.checkpoint() - with self._receive_guard: - while True: - try: - data = self._raw_socket.recv(65536) - except BlockingIOError: - await self._wait_until_readable(loop) - except OSError as exc: - if self._closing: - raise ClosedResourceError from None - else: - raise BrokenResourceError from exc - else: - return data - - async def send(self, item: bytes) -> None: - loop = get_running_loop() - await AsyncIOBackend.checkpoint() - with self._send_guard: - while True: - try: - self._raw_socket.send(item) - except BlockingIOError: - await self._wait_until_writable(loop) - except OSError as exc: - if self._closing: - raise ClosedResourceError from None - else: - raise BrokenResourceError from exc - else: - return - - -_read_events: RunVar[dict[int, asyncio.Event]] = RunVar("read_events") -_write_events: RunVar[dict[int, asyncio.Event]] = RunVar("write_events") - - -# -# Synchronization -# - - -class Event(BaseEvent): - def __new__(cls) -> Event: - return object.__new__(cls) - - def __init__(self) -> None: - self._event = asyncio.Event() - - def set(self) -> None: - self._event.set() - - def is_set(self) -> bool: - return self._event.is_set() - - async def wait(self) -> None: - if self.is_set(): - await AsyncIOBackend.checkpoint() - else: - await self._event.wait() - - def statistics(self) -> EventStatistics: - return EventStatistics(len(self._event._waiters)) - - -class Lock(BaseLock): - def __new__(cls, *, fast_acquire: bool = False) -> Lock: - return object.__new__(cls) - - def __init__(self, *, fast_acquire: bool = False) -> None: - self._fast_acquire = fast_acquire - self._owner_task: asyncio.Task | None = None - self._waiters: deque[tuple[asyncio.Task, asyncio.Future]] = deque() - - async def acquire(self) -> None: - task = cast(asyncio.Task, current_task()) - if self._owner_task is None and not self._waiters: - await AsyncIOBackend.checkpoint_if_cancelled() - self._owner_task = task - - # Unless on the "fast path", yield control of the event loop so that other - # tasks can run too - if not self._fast_acquire: - try: - await AsyncIOBackend.cancel_shielded_checkpoint() - except CancelledError: - self.release() - raise - - return - - if self._owner_task == task: - raise RuntimeError("Attempted to acquire an already held Lock") - - fut: asyncio.Future[None] = asyncio.Future() - item = task, fut - self._waiters.append(item) - try: - await fut - except CancelledError: - self._waiters.remove(item) - if self._owner_task is task: - self.release() - - raise - - self._waiters.remove(item) - - def acquire_nowait(self) -> None: - task = cast(asyncio.Task, current_task()) - if self._owner_task is None and not self._waiters: - self._owner_task = task - return - - if self._owner_task is task: - raise RuntimeError("Attempted to acquire an already held Lock") - - raise WouldBlock - - def locked(self) -> bool: - return self._owner_task is not None - - def release(self) -> None: - if self._owner_task != current_task(): - raise RuntimeError("The current task is not holding this lock") - - for task, fut in self._waiters: - if not fut.cancelled(): - self._owner_task = task - fut.set_result(None) - return - - self._owner_task = None - - def statistics(self) -> LockStatistics: - task_info = AsyncIOTaskInfo(self._owner_task) if self._owner_task else None - return LockStatistics(self.locked(), task_info, len(self._waiters)) - - -class Semaphore(BaseSemaphore): - def __new__( - cls, - initial_value: int, - *, - max_value: int | None = None, - fast_acquire: bool = False, - ) -> Semaphore: - return object.__new__(cls) - - def __init__( - self, - initial_value: int, - *, - max_value: int | None = None, - fast_acquire: bool = False, - ): - super().__init__(initial_value, max_value=max_value) - self._value = initial_value - self._max_value = max_value - self._fast_acquire = fast_acquire - self._waiters: deque[asyncio.Future[None]] = deque() - - async def acquire(self) -> None: - if self._value > 0 and not self._waiters: - await AsyncIOBackend.checkpoint_if_cancelled() - self._value -= 1 - - # Unless on the "fast path", yield control of the event loop so that other - # tasks can run too - if not self._fast_acquire: - try: - await AsyncIOBackend.cancel_shielded_checkpoint() - except CancelledError: - self.release() - raise - - return - - fut: asyncio.Future[None] = asyncio.Future() - self._waiters.append(fut) - try: - await fut - except CancelledError: - try: - self._waiters.remove(fut) - except ValueError: - self.release() - - raise - - def acquire_nowait(self) -> None: - if self._value == 0: - raise WouldBlock - - self._value -= 1 - - def release(self) -> None: - if self._max_value is not None and self._value == self._max_value: - raise ValueError("semaphore released too many times") - - for fut in self._waiters: - if not fut.cancelled(): - fut.set_result(None) - self._waiters.remove(fut) - return - - self._value += 1 - - @property - def value(self) -> int: - return self._value - - @property - def max_value(self) -> int | None: - return self._max_value - - def statistics(self) -> SemaphoreStatistics: - return SemaphoreStatistics(len(self._waiters)) - - -class CapacityLimiter(BaseCapacityLimiter): - _total_tokens: float = 0 - - def __new__(cls, total_tokens: float) -> CapacityLimiter: - return object.__new__(cls) - - def __init__(self, total_tokens: float): - self._borrowers: set[Any] = set() - self._wait_queue: OrderedDict[Any, asyncio.Event] = OrderedDict() - self.total_tokens = total_tokens - - async def __aenter__(self) -> None: - await self.acquire() - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> None: - self.release() - - @property - def total_tokens(self) -> float: - return self._total_tokens - - @total_tokens.setter - def total_tokens(self, value: float) -> None: - if not isinstance(value, int) and not math.isinf(value): - raise TypeError("total_tokens must be an int or math.inf") - if value < 1: - raise ValueError("total_tokens must be >= 1") - - waiters_to_notify = max(value - self._total_tokens, 0) - self._total_tokens = value - - # Notify waiting tasks that they have acquired the limiter - while self._wait_queue and waiters_to_notify: - event = self._wait_queue.popitem(last=False)[1] - event.set() - waiters_to_notify -= 1 - - @property - def borrowed_tokens(self) -> int: - return len(self._borrowers) - - @property - def available_tokens(self) -> float: - return self._total_tokens - len(self._borrowers) - - def acquire_nowait(self) -> None: - self.acquire_on_behalf_of_nowait(current_task()) - - def acquire_on_behalf_of_nowait(self, borrower: object) -> None: - if borrower in self._borrowers: - raise RuntimeError( - "this borrower is already holding one of this CapacityLimiter's tokens" - ) - - if self._wait_queue or len(self._borrowers) >= self._total_tokens: - raise WouldBlock - - self._borrowers.add(borrower) - - async def acquire(self) -> None: - return await self.acquire_on_behalf_of(current_task()) - - async def acquire_on_behalf_of(self, borrower: object) -> None: - await AsyncIOBackend.checkpoint_if_cancelled() - try: - self.acquire_on_behalf_of_nowait(borrower) - except WouldBlock: - event = asyncio.Event() - self._wait_queue[borrower] = event - try: - await event.wait() - except BaseException: - self._wait_queue.pop(borrower, None) - raise - - self._borrowers.add(borrower) - else: - try: - await AsyncIOBackend.cancel_shielded_checkpoint() - except BaseException: - self.release() - raise - - def release(self) -> None: - self.release_on_behalf_of(current_task()) - - def release_on_behalf_of(self, borrower: object) -> None: - try: - self._borrowers.remove(borrower) - except KeyError: - raise RuntimeError( - "this borrower isn't holding any of this CapacityLimiter's tokens" - ) from None - - # Notify the next task in line if this limiter has free capacity now - if self._wait_queue and len(self._borrowers) < self._total_tokens: - event = self._wait_queue.popitem(last=False)[1] - event.set() - - def statistics(self) -> CapacityLimiterStatistics: - return CapacityLimiterStatistics( - self.borrowed_tokens, - self.total_tokens, - tuple(self._borrowers), - len(self._wait_queue), - ) - - -_default_thread_limiter: RunVar[CapacityLimiter] = RunVar("_default_thread_limiter") - - -# -# Operating system signals -# - - -class _SignalReceiver: - def __init__(self, signals: tuple[Signals, ...]): - self._signals = signals - self._loop = get_running_loop() - self._signal_queue: deque[Signals] = deque() - self._future: asyncio.Future = asyncio.Future() - self._handled_signals: set[Signals] = set() - - def _deliver(self, signum: Signals) -> None: - self._signal_queue.append(signum) - if not self._future.done(): - self._future.set_result(None) - - def __enter__(self) -> _SignalReceiver: - for sig in set(self._signals): - self._loop.add_signal_handler(sig, self._deliver, sig) - self._handled_signals.add(sig) - - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> None: - for sig in self._handled_signals: - self._loop.remove_signal_handler(sig) - - def __aiter__(self) -> _SignalReceiver: - return self - - async def __anext__(self) -> Signals: - await AsyncIOBackend.checkpoint() - if not self._signal_queue: - self._future = asyncio.Future() - await self._future - - return self._signal_queue.popleft() - - -# -# Testing and debugging -# - - -class AsyncIOTaskInfo(TaskInfo): - def __init__(self, task: asyncio.Task): - task_state = _task_states.get(task) - if task_state is None: - parent_id = None - else: - parent_id = task_state.parent_id - - coro = task.get_coro() - assert coro is not None, "created TaskInfo from a completed Task" - super().__init__(id(task), parent_id, task.get_name(), coro) - self._task = weakref.ref(task) - - def has_pending_cancellation(self) -> bool: - if not (task := self._task()): - # If the task isn't around anymore, it won't have a pending cancellation - return False - - if task._must_cancel: # type: ignore[attr-defined] - return True - elif ( - isinstance(task._fut_waiter, asyncio.Future) # type: ignore[attr-defined] - and task._fut_waiter.cancelled() # type: ignore[attr-defined] - ): - return True - - if task_state := _task_states.get(task): - if cancel_scope := task_state.cancel_scope: - return cancel_scope._effectively_cancelled - - return False - - -class TestRunner(abc.TestRunner): - _send_stream: MemoryObjectSendStream[tuple[Awaitable[Any], asyncio.Future[Any]]] - - def __init__( - self, - *, - debug: bool | None = None, - use_uvloop: bool = False, - loop_factory: Callable[[], AbstractEventLoop] | None = None, - ) -> None: - if use_uvloop and loop_factory is None: - import uvloop - - loop_factory = uvloop.new_event_loop - - self._runner = Runner(debug=debug, loop_factory=loop_factory) - self._exceptions: list[BaseException] = [] - self._runner_task: asyncio.Task | None = None - - def __enter__(self) -> TestRunner: - self._runner.__enter__() - self.get_loop().set_exception_handler(self._exception_handler) - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> None: - self._runner.__exit__(exc_type, exc_val, exc_tb) - - def get_loop(self) -> AbstractEventLoop: - return self._runner.get_loop() - - def _exception_handler( - self, loop: asyncio.AbstractEventLoop, context: dict[str, Any] - ) -> None: - if isinstance(context.get("exception"), Exception): - self._exceptions.append(context["exception"]) - else: - loop.default_exception_handler(context) - - def _raise_async_exceptions(self) -> None: - # Re-raise any exceptions raised in asynchronous callbacks - if self._exceptions: - exceptions, self._exceptions = self._exceptions, [] - if len(exceptions) == 1: - raise exceptions[0] - elif exceptions: - raise BaseExceptionGroup( - "Multiple exceptions occurred in asynchronous callbacks", exceptions - ) - - async def _run_tests_and_fixtures( - self, - receive_stream: MemoryObjectReceiveStream[ - tuple[Awaitable[T_Retval], asyncio.Future[T_Retval]] - ], - ) -> None: - from _pytest.outcomes import OutcomeException - - with receive_stream, self._send_stream: - async for coro, future in receive_stream: - try: - retval = await coro - except CancelledError as exc: - if not future.cancelled(): - future.cancel(*exc.args) - - raise - except BaseException as exc: - if not future.cancelled(): - future.set_exception(exc) - - if not isinstance(exc, (Exception, OutcomeException)): - raise - else: - if not future.cancelled(): - future.set_result(retval) - - async def _call_in_runner_task( - self, - func: Callable[P, Awaitable[T_Retval]], - *args: P.args, - **kwargs: P.kwargs, - ) -> T_Retval: - if not self._runner_task: - self._send_stream, receive_stream = create_memory_object_stream[ - tuple[Awaitable[Any], asyncio.Future] - ](1) - self._runner_task = self.get_loop().create_task( - self._run_tests_and_fixtures(receive_stream) - ) - - coro = func(*args, **kwargs) - future: asyncio.Future[T_Retval] = self.get_loop().create_future() - self._send_stream.send_nowait((coro, future)) - return await future - - def run_asyncgen_fixture( - self, - fixture_func: Callable[..., AsyncGenerator[T_Retval, Any]], - kwargs: dict[str, Any], - ) -> Iterable[T_Retval]: - asyncgen = fixture_func(**kwargs) - fixturevalue: T_Retval = self.get_loop().run_until_complete( - self._call_in_runner_task(asyncgen.asend, None) - ) - self._raise_async_exceptions() - - yield fixturevalue - - try: - self.get_loop().run_until_complete( - self._call_in_runner_task(asyncgen.asend, None) - ) - except StopAsyncIteration: - self._raise_async_exceptions() - else: - self.get_loop().run_until_complete(asyncgen.aclose()) - raise RuntimeError("Async generator fixture did not stop") - - def run_fixture( - self, - fixture_func: Callable[..., Coroutine[Any, Any, T_Retval]], - kwargs: dict[str, Any], - ) -> T_Retval: - retval = self.get_loop().run_until_complete( - self._call_in_runner_task(fixture_func, **kwargs) - ) - self._raise_async_exceptions() - return retval - - def run_test( - self, test_func: Callable[..., Coroutine[Any, Any, Any]], kwargs: dict[str, Any] - ) -> None: - try: - self.get_loop().run_until_complete( - self._call_in_runner_task(test_func, **kwargs) - ) - except Exception as exc: - self._exceptions.append(exc) - - self._raise_async_exceptions() - - -class AsyncIOBackend(AsyncBackend): - @classmethod - def run( - cls, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]], - args: tuple[Unpack[PosArgsT]], - kwargs: dict[str, Any], - options: dict[str, Any], - ) -> T_Retval: - @wraps(func) - async def wrapper() -> T_Retval: - task = cast(asyncio.Task, current_task()) - task.set_name(get_callable_name(func)) - _task_states[task] = TaskState(None, None) - - try: - return await func(*args) - finally: - del _task_states[task] - - debug = options.get("debug", None) - loop_factory = options.get("loop_factory", None) - if loop_factory is None and options.get("use_uvloop", False): - import uvloop - - loop_factory = uvloop.new_event_loop - - with Runner(debug=debug, loop_factory=loop_factory) as runner: - return runner.run(wrapper()) - - @classmethod - def current_token(cls) -> object: - return get_running_loop() - - @classmethod - def current_time(cls) -> float: - return get_running_loop().time() - - @classmethod - def cancelled_exception_class(cls) -> type[BaseException]: - return CancelledError - - @classmethod - async def checkpoint(cls) -> None: - await sleep(0) - - @classmethod - async def checkpoint_if_cancelled(cls) -> None: - task = current_task() - if task is None: - return - - try: - cancel_scope = _task_states[task].cancel_scope - except KeyError: - return - - while cancel_scope: - if cancel_scope.cancel_called: - await sleep(0) - elif cancel_scope.shield: - break - else: - cancel_scope = cancel_scope._parent_scope - - @classmethod - async def cancel_shielded_checkpoint(cls) -> None: - with CancelScope(shield=True): - await sleep(0) - - @classmethod - async def sleep(cls, delay: float) -> None: - await sleep(delay) - - @classmethod - def create_cancel_scope( - cls, *, deadline: float = math.inf, shield: bool = False - ) -> CancelScope: - return CancelScope(deadline=deadline, shield=shield) - - @classmethod - def current_effective_deadline(cls) -> float: - if (task := current_task()) is None: - return math.inf - - try: - cancel_scope = _task_states[task].cancel_scope - except KeyError: - return math.inf - - deadline = math.inf - while cancel_scope: - deadline = min(deadline, cancel_scope.deadline) - if cancel_scope._cancel_called: - deadline = -math.inf - break - elif cancel_scope.shield: - break - else: - cancel_scope = cancel_scope._parent_scope - - return deadline - - @classmethod - def create_task_group(cls) -> abc.TaskGroup: - return TaskGroup() - - @classmethod - def create_event(cls) -> abc.Event: - return Event() - - @classmethod - def create_lock(cls, *, fast_acquire: bool) -> abc.Lock: - return Lock(fast_acquire=fast_acquire) - - @classmethod - def create_semaphore( - cls, - initial_value: int, - *, - max_value: int | None = None, - fast_acquire: bool = False, - ) -> abc.Semaphore: - return Semaphore(initial_value, max_value=max_value, fast_acquire=fast_acquire) - - @classmethod - def create_capacity_limiter(cls, total_tokens: float) -> abc.CapacityLimiter: - return CapacityLimiter(total_tokens) - - @classmethod - async def run_sync_in_worker_thread( # type: ignore[return] - cls, - func: Callable[[Unpack[PosArgsT]], T_Retval], - args: tuple[Unpack[PosArgsT]], - abandon_on_cancel: bool = False, - limiter: abc.CapacityLimiter | None = None, - ) -> T_Retval: - await cls.checkpoint() - - # If this is the first run in this event loop thread, set up the necessary - # variables - try: - idle_workers = _threadpool_idle_workers.get() - workers = _threadpool_workers.get() - except LookupError: - idle_workers = deque() - workers = set() - _threadpool_idle_workers.set(idle_workers) - _threadpool_workers.set(workers) - - async with limiter or cls.current_default_thread_limiter(): - with CancelScope(shield=not abandon_on_cancel) as scope: - future = asyncio.Future[T_Retval]() - root_task = find_root_task() - if not idle_workers: - worker = WorkerThread(root_task, workers, idle_workers) - worker.start() - workers.add(worker) - root_task.add_done_callback( - worker.stop, context=contextvars.Context() - ) - else: - worker = idle_workers.pop() - - # Prune any other workers that have been idle for MAX_IDLE_TIME - # seconds or longer - now = cls.current_time() - while idle_workers: - if ( - now - idle_workers[0].idle_since - < WorkerThread.MAX_IDLE_TIME - ): - break - - expired_worker = idle_workers.popleft() - expired_worker.root_task.remove_done_callback( - expired_worker.stop - ) - expired_worker.stop() - - context = copy_context() - context.run(sniffio.current_async_library_cvar.set, None) - if abandon_on_cancel or scope._parent_scope is None: - worker_scope = scope - else: - worker_scope = scope._parent_scope - - worker.queue.put_nowait((context, func, args, future, worker_scope)) - return await future - - @classmethod - def check_cancelled(cls) -> None: - scope: CancelScope | None = threadlocals.current_cancel_scope - while scope is not None: - if scope.cancel_called: - raise CancelledError(f"Cancelled by cancel scope {id(scope):x}") - - if scope.shield: - return - - scope = scope._parent_scope - - @classmethod - def run_async_from_thread( - cls, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]], - args: tuple[Unpack[PosArgsT]], - token: object, - ) -> T_Retval: - async def task_wrapper(scope: CancelScope) -> T_Retval: - __tracebackhide__ = True - task = cast(asyncio.Task, current_task()) - _task_states[task] = TaskState(None, scope) - scope._tasks.add(task) - try: - return await func(*args) - except CancelledError as exc: - raise concurrent.futures.CancelledError(str(exc)) from None - finally: - scope._tasks.discard(task) - - loop = cast(AbstractEventLoop, token) - context = copy_context() - context.run(sniffio.current_async_library_cvar.set, "asyncio") - wrapper = task_wrapper(threadlocals.current_cancel_scope) - f: concurrent.futures.Future[T_Retval] = context.run( - asyncio.run_coroutine_threadsafe, wrapper, loop - ) - return f.result() - - @classmethod - def run_sync_from_thread( - cls, - func: Callable[[Unpack[PosArgsT]], T_Retval], - args: tuple[Unpack[PosArgsT]], - token: object, - ) -> T_Retval: - @wraps(func) - def wrapper() -> None: - try: - sniffio.current_async_library_cvar.set("asyncio") - f.set_result(func(*args)) - except BaseException as exc: - f.set_exception(exc) - if not isinstance(exc, Exception): - raise - - f: concurrent.futures.Future[T_Retval] = Future() - loop = cast(AbstractEventLoop, token) - loop.call_soon_threadsafe(wrapper) - return f.result() - - @classmethod - def create_blocking_portal(cls) -> abc.BlockingPortal: - return BlockingPortal() - - @classmethod - async def open_process( - cls, - command: StrOrBytesPath | Sequence[StrOrBytesPath], - *, - stdin: int | IO[Any] | None, - stdout: int | IO[Any] | None, - stderr: int | IO[Any] | None, - **kwargs: Any, - ) -> Process: - await cls.checkpoint() - if isinstance(command, PathLike): - command = os.fspath(command) - - if isinstance(command, (str, bytes)): - process = await asyncio.create_subprocess_shell( - command, - stdin=stdin, - stdout=stdout, - stderr=stderr, - **kwargs, - ) - else: - process = await asyncio.create_subprocess_exec( - *command, - stdin=stdin, - stdout=stdout, - stderr=stderr, - **kwargs, - ) - - stdin_stream = StreamWriterWrapper(process.stdin) if process.stdin else None - stdout_stream = StreamReaderWrapper(process.stdout) if process.stdout else None - stderr_stream = StreamReaderWrapper(process.stderr) if process.stderr else None - return Process(process, stdin_stream, stdout_stream, stderr_stream) - - @classmethod - def setup_process_pool_exit_at_shutdown(cls, workers: set[abc.Process]) -> None: - create_task( - _shutdown_process_pool_on_exit(workers), - name="AnyIO process pool shutdown task", - ) - find_root_task().add_done_callback( - partial(_forcibly_shutdown_process_pool_on_exit, workers) # type:ignore[arg-type] - ) - - @classmethod - async def connect_tcp( - cls, host: str, port: int, local_address: IPSockAddrType | None = None - ) -> abc.SocketStream: - transport, protocol = cast( - tuple[asyncio.Transport, StreamProtocol], - await get_running_loop().create_connection( - StreamProtocol, host, port, local_addr=local_address - ), - ) - transport.pause_reading() - return SocketStream(transport, protocol) - - @classmethod - async def connect_unix(cls, path: str | bytes) -> abc.UNIXSocketStream: - await cls.checkpoint() - loop = get_running_loop() - raw_socket = socket.socket(socket.AF_UNIX) - raw_socket.setblocking(False) - while True: - try: - raw_socket.connect(path) - except BlockingIOError: - f: asyncio.Future = asyncio.Future() - loop.add_writer(raw_socket, f.set_result, None) - f.add_done_callback(lambda _: loop.remove_writer(raw_socket)) - await f - except BaseException: - raw_socket.close() - raise - else: - return UNIXSocketStream(raw_socket) - - @classmethod - def create_tcp_listener(cls, sock: socket.socket) -> SocketListener: - return TCPSocketListener(sock) - - @classmethod - def create_unix_listener(cls, sock: socket.socket) -> SocketListener: - return UNIXSocketListener(sock) - - @classmethod - async def create_udp_socket( - cls, - family: AddressFamily, - local_address: IPSockAddrType | None, - remote_address: IPSockAddrType | None, - reuse_port: bool, - ) -> UDPSocket | ConnectedUDPSocket: - transport, protocol = await get_running_loop().create_datagram_endpoint( - DatagramProtocol, - local_addr=local_address, - remote_addr=remote_address, - family=family, - reuse_port=reuse_port, - ) - if protocol.exception: - transport.close() - raise protocol.exception - - if not remote_address: - return UDPSocket(transport, protocol) - else: - return ConnectedUDPSocket(transport, protocol) - - @classmethod - async def create_unix_datagram_socket( # type: ignore[override] - cls, raw_socket: socket.socket, remote_path: str | bytes | None - ) -> abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocket: - await cls.checkpoint() - loop = get_running_loop() - - if remote_path: - while True: - try: - raw_socket.connect(remote_path) - except BlockingIOError: - f: asyncio.Future = asyncio.Future() - loop.add_writer(raw_socket, f.set_result, None) - f.add_done_callback(lambda _: loop.remove_writer(raw_socket)) - await f - except BaseException: - raw_socket.close() - raise - else: - return ConnectedUNIXDatagramSocket(raw_socket) - else: - return UNIXDatagramSocket(raw_socket) - - @classmethod - async def getaddrinfo( - cls, - host: bytes | str | None, - port: str | int | None, - *, - family: int | AddressFamily = 0, - type: int | SocketKind = 0, - proto: int = 0, - flags: int = 0, - ) -> Sequence[ - tuple[ - AddressFamily, - SocketKind, - int, - str, - tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes], - ] - ]: - return await get_running_loop().getaddrinfo( - host, port, family=family, type=type, proto=proto, flags=flags - ) - - @classmethod - async def getnameinfo( - cls, sockaddr: IPSockAddrType, flags: int = 0 - ) -> tuple[str, str]: - return await get_running_loop().getnameinfo(sockaddr, flags) - - @classmethod - async def wait_readable(cls, obj: FileDescriptorLike) -> None: - await cls.checkpoint() - try: - read_events = _read_events.get() - except LookupError: - read_events = {} - _read_events.set(read_events) - - if not isinstance(obj, int): - obj = obj.fileno() - - if read_events.get(obj): - raise BusyResourceError("reading from") - - loop = get_running_loop() - event = asyncio.Event() - try: - loop.add_reader(obj, event.set) - except NotImplementedError: - from anyio._core._asyncio_selector_thread import get_selector - - selector = get_selector() - selector.add_reader(obj, event.set) - remove_reader = selector.remove_reader - else: - remove_reader = loop.remove_reader - - read_events[obj] = event - try: - await event.wait() - finally: - remove_reader(obj) - del read_events[obj] - - @classmethod - async def wait_writable(cls, obj: FileDescriptorLike) -> None: - await cls.checkpoint() - try: - write_events = _write_events.get() - except LookupError: - write_events = {} - _write_events.set(write_events) - - if not isinstance(obj, int): - obj = obj.fileno() - - if write_events.get(obj): - raise BusyResourceError("writing to") - - loop = get_running_loop() - event = asyncio.Event() - try: - loop.add_writer(obj, event.set) - except NotImplementedError: - from anyio._core._asyncio_selector_thread import get_selector - - selector = get_selector() - selector.add_writer(obj, event.set) - remove_writer = selector.remove_writer - else: - remove_writer = loop.remove_writer - - write_events[obj] = event - try: - await event.wait() - finally: - del write_events[obj] - remove_writer(obj) - - @classmethod - def current_default_thread_limiter(cls) -> CapacityLimiter: - try: - return _default_thread_limiter.get() - except LookupError: - limiter = CapacityLimiter(40) - _default_thread_limiter.set(limiter) - return limiter - - @classmethod - def open_signal_receiver( - cls, *signals: Signals - ) -> AbstractContextManager[AsyncIterator[Signals]]: - return _SignalReceiver(signals) - - @classmethod - def get_current_task(cls) -> TaskInfo: - return AsyncIOTaskInfo(current_task()) # type: ignore[arg-type] - - @classmethod - def get_running_tasks(cls) -> Sequence[TaskInfo]: - return [AsyncIOTaskInfo(task) for task in all_tasks() if not task.done()] - - @classmethod - async def wait_all_tasks_blocked(cls) -> None: - await cls.checkpoint() - this_task = current_task() - while True: - for task in all_tasks(): - if task is this_task: - continue - - waiter = task._fut_waiter # type: ignore[attr-defined] - if waiter is None or waiter.done(): - await sleep(0.1) - break - else: - return - - @classmethod - def create_test_runner(cls, options: dict[str, Any]) -> TestRunner: - return TestRunner(**options) - - -backend_class = AsyncIOBackend diff --git a/venv/lib/python3.12/site-packages/anyio/_backends/_trio.py b/venv/lib/python3.12/site-packages/anyio/_backends/_trio.py deleted file mode 100644 index b80cc04..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_backends/_trio.py +++ /dev/null @@ -1,1334 +0,0 @@ -from __future__ import annotations - -import array -import math -import os -import socket -import sys -import types -import weakref -from collections.abc import ( - AsyncGenerator, - AsyncIterator, - Awaitable, - Callable, - Collection, - Coroutine, - Iterable, - Sequence, -) -from concurrent.futures import Future -from contextlib import AbstractContextManager -from dataclasses import dataclass -from functools import partial -from io import IOBase -from os import PathLike -from signal import Signals -from socket import AddressFamily, SocketKind -from types import TracebackType -from typing import ( - IO, - TYPE_CHECKING, - Any, - Generic, - NoReturn, - TypeVar, - cast, - overload, -) - -import trio.from_thread -import trio.lowlevel -from outcome import Error, Outcome, Value -from trio.lowlevel import ( - current_root_task, - current_task, - wait_readable, - wait_writable, -) -from trio.socket import SocketType as TrioSocketType -from trio.to_thread import run_sync - -from .. import ( - CapacityLimiterStatistics, - EventStatistics, - LockStatistics, - TaskInfo, - WouldBlock, - abc, -) -from .._core._eventloop import claim_worker_thread -from .._core._exceptions import ( - BrokenResourceError, - BusyResourceError, - ClosedResourceError, - EndOfStream, -) -from .._core._sockets import convert_ipv6_sockaddr -from .._core._streams import create_memory_object_stream -from .._core._synchronization import ( - CapacityLimiter as BaseCapacityLimiter, -) -from .._core._synchronization import Event as BaseEvent -from .._core._synchronization import Lock as BaseLock -from .._core._synchronization import ( - ResourceGuard, - SemaphoreStatistics, -) -from .._core._synchronization import Semaphore as BaseSemaphore -from .._core._tasks import CancelScope as BaseCancelScope -from ..abc import IPSockAddrType, UDPPacketType, UNIXDatagramPacketType -from ..abc._eventloop import AsyncBackend, StrOrBytesPath -from ..streams.memory import MemoryObjectSendStream - -if TYPE_CHECKING: - from _typeshed import HasFileno - -if sys.version_info >= (3, 10): - from typing import ParamSpec -else: - from typing_extensions import ParamSpec - -if sys.version_info >= (3, 11): - from typing import TypeVarTuple, Unpack -else: - from exceptiongroup import BaseExceptionGroup - from typing_extensions import TypeVarTuple, Unpack - -T = TypeVar("T") -T_Retval = TypeVar("T_Retval") -T_SockAddr = TypeVar("T_SockAddr", str, IPSockAddrType) -PosArgsT = TypeVarTuple("PosArgsT") -P = ParamSpec("P") - - -# -# Event loop -# - -RunVar = trio.lowlevel.RunVar - - -# -# Timeouts and cancellation -# - - -class CancelScope(BaseCancelScope): - def __new__( - cls, original: trio.CancelScope | None = None, **kwargs: object - ) -> CancelScope: - return object.__new__(cls) - - def __init__(self, original: trio.CancelScope | None = None, **kwargs: Any) -> None: - self.__original = original or trio.CancelScope(**kwargs) - - def __enter__(self) -> CancelScope: - self.__original.__enter__() - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> bool: - return self.__original.__exit__(exc_type, exc_val, exc_tb) - - def cancel(self) -> None: - self.__original.cancel() - - @property - def deadline(self) -> float: - return self.__original.deadline - - @deadline.setter - def deadline(self, value: float) -> None: - self.__original.deadline = value - - @property - def cancel_called(self) -> bool: - return self.__original.cancel_called - - @property - def cancelled_caught(self) -> bool: - return self.__original.cancelled_caught - - @property - def shield(self) -> bool: - return self.__original.shield - - @shield.setter - def shield(self, value: bool) -> None: - self.__original.shield = value - - -# -# Task groups -# - - -class TaskGroup(abc.TaskGroup): - def __init__(self) -> None: - self._active = False - self._nursery_manager = trio.open_nursery(strict_exception_groups=True) - self.cancel_scope = None # type: ignore[assignment] - - async def __aenter__(self) -> TaskGroup: - self._active = True - self._nursery = await self._nursery_manager.__aenter__() - self.cancel_scope = CancelScope(self._nursery.cancel_scope) - return self - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> bool: - try: - # trio.Nursery.__exit__ returns bool; .open_nursery has wrong type - return await self._nursery_manager.__aexit__(exc_type, exc_val, exc_tb) # type: ignore[return-value] - except BaseExceptionGroup as exc: - if not exc.split(trio.Cancelled)[1]: - raise trio.Cancelled._create() from exc - - raise - finally: - del exc_val, exc_tb - self._active = False - - def start_soon( - self, - func: Callable[[Unpack[PosArgsT]], Awaitable[Any]], - *args: Unpack[PosArgsT], - name: object = None, - ) -> None: - if not self._active: - raise RuntimeError( - "This task group is not active; no new tasks can be started." - ) - - self._nursery.start_soon(func, *args, name=name) - - async def start( - self, func: Callable[..., Awaitable[Any]], *args: object, name: object = None - ) -> Any: - if not self._active: - raise RuntimeError( - "This task group is not active; no new tasks can be started." - ) - - return await self._nursery.start(func, *args, name=name) - - -# -# Threads -# - - -class BlockingPortal(abc.BlockingPortal): - def __new__(cls) -> BlockingPortal: - return object.__new__(cls) - - def __init__(self) -> None: - super().__init__() - self._token = trio.lowlevel.current_trio_token() - - def _spawn_task_from_thread( - self, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval], - args: tuple[Unpack[PosArgsT]], - kwargs: dict[str, Any], - name: object, - future: Future[T_Retval], - ) -> None: - trio.from_thread.run_sync( - partial(self._task_group.start_soon, name=name), - self._call_func, - func, - args, - kwargs, - future, - trio_token=self._token, - ) - - -# -# Subprocesses -# - - -@dataclass(eq=False) -class ReceiveStreamWrapper(abc.ByteReceiveStream): - _stream: trio.abc.ReceiveStream - - async def receive(self, max_bytes: int | None = None) -> bytes: - try: - data = await self._stream.receive_some(max_bytes) - except trio.ClosedResourceError as exc: - raise ClosedResourceError from exc.__cause__ - except trio.BrokenResourceError as exc: - raise BrokenResourceError from exc.__cause__ - - if data: - return data - else: - raise EndOfStream - - async def aclose(self) -> None: - await self._stream.aclose() - - -@dataclass(eq=False) -class SendStreamWrapper(abc.ByteSendStream): - _stream: trio.abc.SendStream - - async def send(self, item: bytes) -> None: - try: - await self._stream.send_all(item) - except trio.ClosedResourceError as exc: - raise ClosedResourceError from exc.__cause__ - except trio.BrokenResourceError as exc: - raise BrokenResourceError from exc.__cause__ - - async def aclose(self) -> None: - await self._stream.aclose() - - -@dataclass(eq=False) -class Process(abc.Process): - _process: trio.Process - _stdin: abc.ByteSendStream | None - _stdout: abc.ByteReceiveStream | None - _stderr: abc.ByteReceiveStream | None - - async def aclose(self) -> None: - with CancelScope(shield=True): - if self._stdin: - await self._stdin.aclose() - if self._stdout: - await self._stdout.aclose() - if self._stderr: - await self._stderr.aclose() - - try: - await self.wait() - except BaseException: - self.kill() - with CancelScope(shield=True): - await self.wait() - raise - - async def wait(self) -> int: - return await self._process.wait() - - def terminate(self) -> None: - self._process.terminate() - - def kill(self) -> None: - self._process.kill() - - def send_signal(self, signal: Signals) -> None: - self._process.send_signal(signal) - - @property - def pid(self) -> int: - return self._process.pid - - @property - def returncode(self) -> int | None: - return self._process.returncode - - @property - def stdin(self) -> abc.ByteSendStream | None: - return self._stdin - - @property - def stdout(self) -> abc.ByteReceiveStream | None: - return self._stdout - - @property - def stderr(self) -> abc.ByteReceiveStream | None: - return self._stderr - - -class _ProcessPoolShutdownInstrument(trio.abc.Instrument): - def after_run(self) -> None: - super().after_run() - - -current_default_worker_process_limiter: trio.lowlevel.RunVar = RunVar( - "current_default_worker_process_limiter" -) - - -async def _shutdown_process_pool(workers: set[abc.Process]) -> None: - try: - await trio.sleep(math.inf) - except trio.Cancelled: - for process in workers: - if process.returncode is None: - process.kill() - - with CancelScope(shield=True): - for process in workers: - await process.aclose() - - -# -# Sockets and networking -# - - -class _TrioSocketMixin(Generic[T_SockAddr]): - def __init__(self, trio_socket: TrioSocketType) -> None: - self._trio_socket = trio_socket - self._closed = False - - def _check_closed(self) -> None: - if self._closed: - raise ClosedResourceError - if self._trio_socket.fileno() < 0: - raise BrokenResourceError - - @property - def _raw_socket(self) -> socket.socket: - return self._trio_socket._sock # type: ignore[attr-defined] - - async def aclose(self) -> None: - if self._trio_socket.fileno() >= 0: - self._closed = True - self._trio_socket.close() - - def _convert_socket_error(self, exc: BaseException) -> NoReturn: - if isinstance(exc, trio.ClosedResourceError): - raise ClosedResourceError from exc - elif self._trio_socket.fileno() < 0 and self._closed: - raise ClosedResourceError from None - elif isinstance(exc, OSError): - raise BrokenResourceError from exc - else: - raise exc - - -class SocketStream(_TrioSocketMixin, abc.SocketStream): - def __init__(self, trio_socket: TrioSocketType) -> None: - super().__init__(trio_socket) - self._receive_guard = ResourceGuard("reading from") - self._send_guard = ResourceGuard("writing to") - - async def receive(self, max_bytes: int = 65536) -> bytes: - with self._receive_guard: - try: - data = await self._trio_socket.recv(max_bytes) - except BaseException as exc: - self._convert_socket_error(exc) - - if data: - return data - else: - raise EndOfStream - - async def send(self, item: bytes) -> None: - with self._send_guard: - view = memoryview(item) - while view: - try: - bytes_sent = await self._trio_socket.send(view) - except BaseException as exc: - self._convert_socket_error(exc) - - view = view[bytes_sent:] - - async def send_eof(self) -> None: - self._trio_socket.shutdown(socket.SHUT_WR) - - -class UNIXSocketStream(SocketStream, abc.UNIXSocketStream): - async def receive_fds(self, msglen: int, maxfds: int) -> tuple[bytes, list[int]]: - if not isinstance(msglen, int) or msglen < 0: - raise ValueError("msglen must be a non-negative integer") - if not isinstance(maxfds, int) or maxfds < 1: - raise ValueError("maxfds must be a positive integer") - - fds = array.array("i") - await trio.lowlevel.checkpoint() - with self._receive_guard: - while True: - try: - message, ancdata, flags, addr = await self._trio_socket.recvmsg( - msglen, socket.CMSG_LEN(maxfds * fds.itemsize) - ) - except BaseException as exc: - self._convert_socket_error(exc) - else: - if not message and not ancdata: - raise EndOfStream - - break - - for cmsg_level, cmsg_type, cmsg_data in ancdata: - if cmsg_level != socket.SOL_SOCKET or cmsg_type != socket.SCM_RIGHTS: - raise RuntimeError( - f"Received unexpected ancillary data; message = {message!r}, " - f"cmsg_level = {cmsg_level}, cmsg_type = {cmsg_type}" - ) - - fds.frombytes(cmsg_data[: len(cmsg_data) - (len(cmsg_data) % fds.itemsize)]) - - return message, list(fds) - - async def send_fds(self, message: bytes, fds: Collection[int | IOBase]) -> None: - if not message: - raise ValueError("message must not be empty") - if not fds: - raise ValueError("fds must not be empty") - - filenos: list[int] = [] - for fd in fds: - if isinstance(fd, int): - filenos.append(fd) - elif isinstance(fd, IOBase): - filenos.append(fd.fileno()) - - fdarray = array.array("i", filenos) - await trio.lowlevel.checkpoint() - with self._send_guard: - while True: - try: - await self._trio_socket.sendmsg( - [message], - [ - ( - socket.SOL_SOCKET, - socket.SCM_RIGHTS, - fdarray, - ) - ], - ) - break - except BaseException as exc: - self._convert_socket_error(exc) - - -class TCPSocketListener(_TrioSocketMixin, abc.SocketListener): - def __init__(self, raw_socket: socket.socket): - super().__init__(trio.socket.from_stdlib_socket(raw_socket)) - self._accept_guard = ResourceGuard("accepting connections from") - - async def accept(self) -> SocketStream: - with self._accept_guard: - try: - trio_socket, _addr = await self._trio_socket.accept() - except BaseException as exc: - self._convert_socket_error(exc) - - trio_socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) - return SocketStream(trio_socket) - - -class UNIXSocketListener(_TrioSocketMixin, abc.SocketListener): - def __init__(self, raw_socket: socket.socket): - super().__init__(trio.socket.from_stdlib_socket(raw_socket)) - self._accept_guard = ResourceGuard("accepting connections from") - - async def accept(self) -> UNIXSocketStream: - with self._accept_guard: - try: - trio_socket, _addr = await self._trio_socket.accept() - except BaseException as exc: - self._convert_socket_error(exc) - - return UNIXSocketStream(trio_socket) - - -class UDPSocket(_TrioSocketMixin[IPSockAddrType], abc.UDPSocket): - def __init__(self, trio_socket: TrioSocketType) -> None: - super().__init__(trio_socket) - self._receive_guard = ResourceGuard("reading from") - self._send_guard = ResourceGuard("writing to") - - async def receive(self) -> tuple[bytes, IPSockAddrType]: - with self._receive_guard: - try: - data, addr = await self._trio_socket.recvfrom(65536) - return data, convert_ipv6_sockaddr(addr) - except BaseException as exc: - self._convert_socket_error(exc) - - async def send(self, item: UDPPacketType) -> None: - with self._send_guard: - try: - await self._trio_socket.sendto(*item) - except BaseException as exc: - self._convert_socket_error(exc) - - -class ConnectedUDPSocket(_TrioSocketMixin[IPSockAddrType], abc.ConnectedUDPSocket): - def __init__(self, trio_socket: TrioSocketType) -> None: - super().__init__(trio_socket) - self._receive_guard = ResourceGuard("reading from") - self._send_guard = ResourceGuard("writing to") - - async def receive(self) -> bytes: - with self._receive_guard: - try: - return await self._trio_socket.recv(65536) - except BaseException as exc: - self._convert_socket_error(exc) - - async def send(self, item: bytes) -> None: - with self._send_guard: - try: - await self._trio_socket.send(item) - except BaseException as exc: - self._convert_socket_error(exc) - - -class UNIXDatagramSocket(_TrioSocketMixin[str], abc.UNIXDatagramSocket): - def __init__(self, trio_socket: TrioSocketType) -> None: - super().__init__(trio_socket) - self._receive_guard = ResourceGuard("reading from") - self._send_guard = ResourceGuard("writing to") - - async def receive(self) -> UNIXDatagramPacketType: - with self._receive_guard: - try: - data, addr = await self._trio_socket.recvfrom(65536) - return data, addr - except BaseException as exc: - self._convert_socket_error(exc) - - async def send(self, item: UNIXDatagramPacketType) -> None: - with self._send_guard: - try: - await self._trio_socket.sendto(*item) - except BaseException as exc: - self._convert_socket_error(exc) - - -class ConnectedUNIXDatagramSocket( - _TrioSocketMixin[str], abc.ConnectedUNIXDatagramSocket -): - def __init__(self, trio_socket: TrioSocketType) -> None: - super().__init__(trio_socket) - self._receive_guard = ResourceGuard("reading from") - self._send_guard = ResourceGuard("writing to") - - async def receive(self) -> bytes: - with self._receive_guard: - try: - return await self._trio_socket.recv(65536) - except BaseException as exc: - self._convert_socket_error(exc) - - async def send(self, item: bytes) -> None: - with self._send_guard: - try: - await self._trio_socket.send(item) - except BaseException as exc: - self._convert_socket_error(exc) - - -# -# Synchronization -# - - -class Event(BaseEvent): - def __new__(cls) -> Event: - return object.__new__(cls) - - def __init__(self) -> None: - self.__original = trio.Event() - - def is_set(self) -> bool: - return self.__original.is_set() - - async def wait(self) -> None: - return await self.__original.wait() - - def statistics(self) -> EventStatistics: - orig_statistics = self.__original.statistics() - return EventStatistics(tasks_waiting=orig_statistics.tasks_waiting) - - def set(self) -> None: - self.__original.set() - - -class Lock(BaseLock): - def __new__(cls, *, fast_acquire: bool = False) -> Lock: - return object.__new__(cls) - - def __init__(self, *, fast_acquire: bool = False) -> None: - self._fast_acquire = fast_acquire - self.__original = trio.Lock() - - @staticmethod - def _convert_runtime_error_msg(exc: RuntimeError) -> None: - if exc.args == ("attempt to re-acquire an already held Lock",): - exc.args = ("Attempted to acquire an already held Lock",) - - async def acquire(self) -> None: - if not self._fast_acquire: - try: - await self.__original.acquire() - except RuntimeError as exc: - self._convert_runtime_error_msg(exc) - raise - - return - - # This is the "fast path" where we don't let other tasks run - await trio.lowlevel.checkpoint_if_cancelled() - try: - self.__original.acquire_nowait() - except trio.WouldBlock: - await self.__original._lot.park() - except RuntimeError as exc: - self._convert_runtime_error_msg(exc) - raise - - def acquire_nowait(self) -> None: - try: - self.__original.acquire_nowait() - except trio.WouldBlock: - raise WouldBlock from None - except RuntimeError as exc: - self._convert_runtime_error_msg(exc) - raise - - def locked(self) -> bool: - return self.__original.locked() - - def release(self) -> None: - self.__original.release() - - def statistics(self) -> LockStatistics: - orig_statistics = self.__original.statistics() - owner = TrioTaskInfo(orig_statistics.owner) if orig_statistics.owner else None - return LockStatistics( - orig_statistics.locked, owner, orig_statistics.tasks_waiting - ) - - -class Semaphore(BaseSemaphore): - def __new__( - cls, - initial_value: int, - *, - max_value: int | None = None, - fast_acquire: bool = False, - ) -> Semaphore: - return object.__new__(cls) - - def __init__( - self, - initial_value: int, - *, - max_value: int | None = None, - fast_acquire: bool = False, - ) -> None: - super().__init__(initial_value, max_value=max_value, fast_acquire=fast_acquire) - self.__original = trio.Semaphore(initial_value, max_value=max_value) - - async def acquire(self) -> None: - if not self._fast_acquire: - await self.__original.acquire() - return - - # This is the "fast path" where we don't let other tasks run - await trio.lowlevel.checkpoint_if_cancelled() - try: - self.__original.acquire_nowait() - except trio.WouldBlock: - await self.__original._lot.park() - - def acquire_nowait(self) -> None: - try: - self.__original.acquire_nowait() - except trio.WouldBlock: - raise WouldBlock from None - - @property - def max_value(self) -> int | None: - return self.__original.max_value - - @property - def value(self) -> int: - return self.__original.value - - def release(self) -> None: - self.__original.release() - - def statistics(self) -> SemaphoreStatistics: - orig_statistics = self.__original.statistics() - return SemaphoreStatistics(orig_statistics.tasks_waiting) - - -class CapacityLimiter(BaseCapacityLimiter): - def __new__( - cls, - total_tokens: float | None = None, - *, - original: trio.CapacityLimiter | None = None, - ) -> CapacityLimiter: - return object.__new__(cls) - - def __init__( - self, - total_tokens: float | None = None, - *, - original: trio.CapacityLimiter | None = None, - ) -> None: - if original is not None: - self.__original = original - else: - assert total_tokens is not None - self.__original = trio.CapacityLimiter(total_tokens) - - async def __aenter__(self) -> None: - return await self.__original.__aenter__() - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> None: - await self.__original.__aexit__(exc_type, exc_val, exc_tb) - - @property - def total_tokens(self) -> float: - return self.__original.total_tokens - - @total_tokens.setter - def total_tokens(self, value: float) -> None: - self.__original.total_tokens = value - - @property - def borrowed_tokens(self) -> int: - return self.__original.borrowed_tokens - - @property - def available_tokens(self) -> float: - return self.__original.available_tokens - - def acquire_nowait(self) -> None: - self.__original.acquire_nowait() - - def acquire_on_behalf_of_nowait(self, borrower: object) -> None: - self.__original.acquire_on_behalf_of_nowait(borrower) - - async def acquire(self) -> None: - await self.__original.acquire() - - async def acquire_on_behalf_of(self, borrower: object) -> None: - await self.__original.acquire_on_behalf_of(borrower) - - def release(self) -> None: - return self.__original.release() - - def release_on_behalf_of(self, borrower: object) -> None: - return self.__original.release_on_behalf_of(borrower) - - def statistics(self) -> CapacityLimiterStatistics: - orig = self.__original.statistics() - return CapacityLimiterStatistics( - borrowed_tokens=orig.borrowed_tokens, - total_tokens=orig.total_tokens, - borrowers=tuple(orig.borrowers), - tasks_waiting=orig.tasks_waiting, - ) - - -_capacity_limiter_wrapper: trio.lowlevel.RunVar = RunVar("_capacity_limiter_wrapper") - - -# -# Signal handling -# - - -class _SignalReceiver: - _iterator: AsyncIterator[int] - - def __init__(self, signals: tuple[Signals, ...]): - self._signals = signals - - def __enter__(self) -> _SignalReceiver: - self._cm = trio.open_signal_receiver(*self._signals) - self._iterator = self._cm.__enter__() - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> bool | None: - return self._cm.__exit__(exc_type, exc_val, exc_tb) - - def __aiter__(self) -> _SignalReceiver: - return self - - async def __anext__(self) -> Signals: - signum = await self._iterator.__anext__() - return Signals(signum) - - -# -# Testing and debugging -# - - -class TestRunner(abc.TestRunner): - def __init__(self, **options: Any) -> None: - from queue import Queue - - self._call_queue: Queue[Callable[[], object]] = Queue() - self._send_stream: MemoryObjectSendStream | None = None - self._options = options - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: types.TracebackType | None, - ) -> None: - if self._send_stream: - self._send_stream.close() - while self._send_stream is not None: - self._call_queue.get()() - - async def _run_tests_and_fixtures(self) -> None: - self._send_stream, receive_stream = create_memory_object_stream(1) - with receive_stream: - async for coro, outcome_holder in receive_stream: - try: - retval = await coro - except BaseException as exc: - outcome_holder.append(Error(exc)) - else: - outcome_holder.append(Value(retval)) - - def _main_task_finished(self, outcome: object) -> None: - self._send_stream = None - - def _call_in_runner_task( - self, - func: Callable[P, Awaitable[T_Retval]], - *args: P.args, - **kwargs: P.kwargs, - ) -> T_Retval: - if self._send_stream is None: - trio.lowlevel.start_guest_run( - self._run_tests_and_fixtures, - run_sync_soon_threadsafe=self._call_queue.put, - done_callback=self._main_task_finished, - **self._options, - ) - while self._send_stream is None: - self._call_queue.get()() - - outcome_holder: list[Outcome] = [] - self._send_stream.send_nowait((func(*args, **kwargs), outcome_holder)) - while not outcome_holder: - self._call_queue.get()() - - return outcome_holder[0].unwrap() - - def run_asyncgen_fixture( - self, - fixture_func: Callable[..., AsyncGenerator[T_Retval, Any]], - kwargs: dict[str, Any], - ) -> Iterable[T_Retval]: - asyncgen = fixture_func(**kwargs) - fixturevalue: T_Retval = self._call_in_runner_task(asyncgen.asend, None) - - yield fixturevalue - - try: - self._call_in_runner_task(asyncgen.asend, None) - except StopAsyncIteration: - pass - else: - self._call_in_runner_task(asyncgen.aclose) - raise RuntimeError("Async generator fixture did not stop") - - def run_fixture( - self, - fixture_func: Callable[..., Coroutine[Any, Any, T_Retval]], - kwargs: dict[str, Any], - ) -> T_Retval: - return self._call_in_runner_task(fixture_func, **kwargs) - - def run_test( - self, test_func: Callable[..., Coroutine[Any, Any, Any]], kwargs: dict[str, Any] - ) -> None: - self._call_in_runner_task(test_func, **kwargs) - - -class TrioTaskInfo(TaskInfo): - def __init__(self, task: trio.lowlevel.Task): - parent_id = None - if task.parent_nursery and task.parent_nursery.parent_task: - parent_id = id(task.parent_nursery.parent_task) - - super().__init__(id(task), parent_id, task.name, task.coro) - self._task = weakref.proxy(task) - - def has_pending_cancellation(self) -> bool: - try: - return self._task._cancel_status.effectively_cancelled - except ReferenceError: - # If the task is no longer around, it surely doesn't have a cancellation - # pending - return False - - -class TrioBackend(AsyncBackend): - @classmethod - def run( - cls, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]], - args: tuple[Unpack[PosArgsT]], - kwargs: dict[str, Any], - options: dict[str, Any], - ) -> T_Retval: - return trio.run(func, *args) - - @classmethod - def current_token(cls) -> object: - return trio.lowlevel.current_trio_token() - - @classmethod - def current_time(cls) -> float: - return trio.current_time() - - @classmethod - def cancelled_exception_class(cls) -> type[BaseException]: - return trio.Cancelled - - @classmethod - async def checkpoint(cls) -> None: - await trio.lowlevel.checkpoint() - - @classmethod - async def checkpoint_if_cancelled(cls) -> None: - await trio.lowlevel.checkpoint_if_cancelled() - - @classmethod - async def cancel_shielded_checkpoint(cls) -> None: - await trio.lowlevel.cancel_shielded_checkpoint() - - @classmethod - async def sleep(cls, delay: float) -> None: - await trio.sleep(delay) - - @classmethod - def create_cancel_scope( - cls, *, deadline: float = math.inf, shield: bool = False - ) -> abc.CancelScope: - return CancelScope(deadline=deadline, shield=shield) - - @classmethod - def current_effective_deadline(cls) -> float: - return trio.current_effective_deadline() - - @classmethod - def create_task_group(cls) -> abc.TaskGroup: - return TaskGroup() - - @classmethod - def create_event(cls) -> abc.Event: - return Event() - - @classmethod - def create_lock(cls, *, fast_acquire: bool) -> Lock: - return Lock(fast_acquire=fast_acquire) - - @classmethod - def create_semaphore( - cls, - initial_value: int, - *, - max_value: int | None = None, - fast_acquire: bool = False, - ) -> abc.Semaphore: - return Semaphore(initial_value, max_value=max_value, fast_acquire=fast_acquire) - - @classmethod - def create_capacity_limiter(cls, total_tokens: float) -> CapacityLimiter: - return CapacityLimiter(total_tokens) - - @classmethod - async def run_sync_in_worker_thread( - cls, - func: Callable[[Unpack[PosArgsT]], T_Retval], - args: tuple[Unpack[PosArgsT]], - abandon_on_cancel: bool = False, - limiter: abc.CapacityLimiter | None = None, - ) -> T_Retval: - def wrapper() -> T_Retval: - with claim_worker_thread(TrioBackend, token): - return func(*args) - - token = TrioBackend.current_token() - return await run_sync( - wrapper, - abandon_on_cancel=abandon_on_cancel, - limiter=cast(trio.CapacityLimiter, limiter), - ) - - @classmethod - def check_cancelled(cls) -> None: - trio.from_thread.check_cancelled() - - @classmethod - def run_async_from_thread( - cls, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]], - args: tuple[Unpack[PosArgsT]], - token: object, - ) -> T_Retval: - return trio.from_thread.run(func, *args) - - @classmethod - def run_sync_from_thread( - cls, - func: Callable[[Unpack[PosArgsT]], T_Retval], - args: tuple[Unpack[PosArgsT]], - token: object, - ) -> T_Retval: - return trio.from_thread.run_sync(func, *args) - - @classmethod - def create_blocking_portal(cls) -> abc.BlockingPortal: - return BlockingPortal() - - @classmethod - async def open_process( - cls, - command: StrOrBytesPath | Sequence[StrOrBytesPath], - *, - stdin: int | IO[Any] | None, - stdout: int | IO[Any] | None, - stderr: int | IO[Any] | None, - **kwargs: Any, - ) -> Process: - def convert_item(item: StrOrBytesPath) -> str: - str_or_bytes = os.fspath(item) - if isinstance(str_or_bytes, str): - return str_or_bytes - else: - return os.fsdecode(str_or_bytes) - - if isinstance(command, (str, bytes, PathLike)): - process = await trio.lowlevel.open_process( - convert_item(command), - stdin=stdin, - stdout=stdout, - stderr=stderr, - shell=True, - **kwargs, - ) - else: - process = await trio.lowlevel.open_process( - [convert_item(item) for item in command], - stdin=stdin, - stdout=stdout, - stderr=stderr, - shell=False, - **kwargs, - ) - - stdin_stream = SendStreamWrapper(process.stdin) if process.stdin else None - stdout_stream = ReceiveStreamWrapper(process.stdout) if process.stdout else None - stderr_stream = ReceiveStreamWrapper(process.stderr) if process.stderr else None - return Process(process, stdin_stream, stdout_stream, stderr_stream) - - @classmethod - def setup_process_pool_exit_at_shutdown(cls, workers: set[abc.Process]) -> None: - trio.lowlevel.spawn_system_task(_shutdown_process_pool, workers) - - @classmethod - async def connect_tcp( - cls, host: str, port: int, local_address: IPSockAddrType | None = None - ) -> SocketStream: - family = socket.AF_INET6 if ":" in host else socket.AF_INET - trio_socket = trio.socket.socket(family) - trio_socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) - if local_address: - await trio_socket.bind(local_address) - - try: - await trio_socket.connect((host, port)) - except BaseException: - trio_socket.close() - raise - - return SocketStream(trio_socket) - - @classmethod - async def connect_unix(cls, path: str | bytes) -> abc.UNIXSocketStream: - trio_socket = trio.socket.socket(socket.AF_UNIX) - try: - await trio_socket.connect(path) - except BaseException: - trio_socket.close() - raise - - return UNIXSocketStream(trio_socket) - - @classmethod - def create_tcp_listener(cls, sock: socket.socket) -> abc.SocketListener: - return TCPSocketListener(sock) - - @classmethod - def create_unix_listener(cls, sock: socket.socket) -> abc.SocketListener: - return UNIXSocketListener(sock) - - @classmethod - async def create_udp_socket( - cls, - family: socket.AddressFamily, - local_address: IPSockAddrType | None, - remote_address: IPSockAddrType | None, - reuse_port: bool, - ) -> UDPSocket | ConnectedUDPSocket: - trio_socket = trio.socket.socket(family=family, type=socket.SOCK_DGRAM) - - if reuse_port: - trio_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) - - if local_address: - await trio_socket.bind(local_address) - - if remote_address: - await trio_socket.connect(remote_address) - return ConnectedUDPSocket(trio_socket) - else: - return UDPSocket(trio_socket) - - @classmethod - @overload - async def create_unix_datagram_socket( - cls, raw_socket: socket.socket, remote_path: None - ) -> abc.UNIXDatagramSocket: ... - - @classmethod - @overload - async def create_unix_datagram_socket( - cls, raw_socket: socket.socket, remote_path: str | bytes - ) -> abc.ConnectedUNIXDatagramSocket: ... - - @classmethod - async def create_unix_datagram_socket( - cls, raw_socket: socket.socket, remote_path: str | bytes | None - ) -> abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocket: - trio_socket = trio.socket.from_stdlib_socket(raw_socket) - - if remote_path: - await trio_socket.connect(remote_path) - return ConnectedUNIXDatagramSocket(trio_socket) - else: - return UNIXDatagramSocket(trio_socket) - - @classmethod - async def getaddrinfo( - cls, - host: bytes | str | None, - port: str | int | None, - *, - family: int | AddressFamily = 0, - type: int | SocketKind = 0, - proto: int = 0, - flags: int = 0, - ) -> Sequence[ - tuple[ - AddressFamily, - SocketKind, - int, - str, - tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes], - ] - ]: - return await trio.socket.getaddrinfo(host, port, family, type, proto, flags) - - @classmethod - async def getnameinfo( - cls, sockaddr: IPSockAddrType, flags: int = 0 - ) -> tuple[str, str]: - return await trio.socket.getnameinfo(sockaddr, flags) - - @classmethod - async def wait_readable(cls, obj: HasFileno | int) -> None: - try: - await wait_readable(obj) - except trio.ClosedResourceError as exc: - raise ClosedResourceError().with_traceback(exc.__traceback__) from None - except trio.BusyResourceError: - raise BusyResourceError("reading from") from None - - @classmethod - async def wait_writable(cls, obj: HasFileno | int) -> None: - try: - await wait_writable(obj) - except trio.ClosedResourceError as exc: - raise ClosedResourceError().with_traceback(exc.__traceback__) from None - except trio.BusyResourceError: - raise BusyResourceError("writing to") from None - - @classmethod - def current_default_thread_limiter(cls) -> CapacityLimiter: - try: - return _capacity_limiter_wrapper.get() - except LookupError: - limiter = CapacityLimiter( - original=trio.to_thread.current_default_thread_limiter() - ) - _capacity_limiter_wrapper.set(limiter) - return limiter - - @classmethod - def open_signal_receiver( - cls, *signals: Signals - ) -> AbstractContextManager[AsyncIterator[Signals]]: - return _SignalReceiver(signals) - - @classmethod - def get_current_task(cls) -> TaskInfo: - task = current_task() - return TrioTaskInfo(task) - - @classmethod - def get_running_tasks(cls) -> Sequence[TaskInfo]: - root_task = current_root_task() - assert root_task - task_infos = [TrioTaskInfo(root_task)] - nurseries = root_task.child_nurseries - while nurseries: - new_nurseries: list[trio.Nursery] = [] - for nursery in nurseries: - for task in nursery.child_tasks: - task_infos.append(TrioTaskInfo(task)) - new_nurseries.extend(task.child_nurseries) - - nurseries = new_nurseries - - return task_infos - - @classmethod - async def wait_all_tasks_blocked(cls) -> None: - from trio.testing import wait_all_tasks_blocked - - await wait_all_tasks_blocked() - - @classmethod - def create_test_runner(cls, options: dict[str, Any]) -> TestRunner: - return TestRunner(**options) - - -backend_class = TrioBackend diff --git a/venv/lib/python3.12/site-packages/anyio/_core/__init__.py b/venv/lib/python3.12/site-packages/anyio/_core/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 42aeed1eee459db0e760f040460f401f3f4f94a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 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 diff --git a/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_eventloop.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_eventloop.cpython-312.pyc deleted file mode 100644 index e1d95c587a319be0b1444607ad98b1cf3a1524f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6339 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 cc&rnTu=cWpO=y8d)H`cm?>ZUJ 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 diff --git a/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_signals.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_signals.cpython-312.pyc deleted file mode 100644 index cf3a8755f89830f3d777a88a97bc6470702cc3d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1266 zcmZuw&x;f}6i)TenQq5LSm)p_%VSP9I903TsaXdG4>E^!7kfZxk?M3+rYo9CiX`1* z4qN&+lwx zFY1JRbc?0cyc3-MiOx%sk~9z`4~9YD{F!Oi2ht1M&h*sVnw$X2N zH9x2@SIcsGO#UJRY?Q9!VF%C#mTC){C5+FwoPa7^v(7VfV_6Qy_Z4=^@P0uxJ=^Rr zPr<4x2ZPHjoP;nM`HSIT_tx(1z0s)W?`vkKTK0iTDA8qFNi{W)ctRlejKIFq|BK-j zk#LalB!f9;A~j`Nhs4(dInBpR8{cji!U5G1;q?1(m&;Tg7)TW}fWHaMv?vs!uONa% z;4>!XU=(l*+`yO_>#)(8;^|o>jWH!x5^RQ1TtcFiF`I>;78}oj7KPx6*FnYHH?90p zq37y~Pl2o>awaWS*9`L{*dvv5C^VaKM^FVXqcRmtJATgku^EF2b}pAlt{}Hyn1vaq z(9fC8`lBZ$-CTu2sUoCl8vBfKm2p({*{kUl)XL&VRDxW_czt-GR%{t3IQY63Wh!UU z14UJ?Bs=60O503@#ZByJ770F%in+~{+zPK=iwyq6%>osTx;GIbZOdkx*iS+{Ulw7kp? z!|%Vhd*8gvdjl`=`}cd@MJJB;rzlYt$J#xz#Se)Rf+gjX4(T}24Y%8=^or diff --git a/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_sockets.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_sockets.cpython-312.pyc deleted file mode 100644 index 355250a599615c8e335fe4a97d76cb91896f2c2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31540 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 F{~ysca)bZ? diff --git a/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_streams.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_streams.cpython-312.pyc deleted file mode 100644 index 8bce9f1f9431708c093c6c55a6368a91d9ef8b84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2329 zcmb7FO>7fK6rQzrH~vdv(gG!+Xp|rtBUsZyRmrMQf&PG?36MZlBedDfO9W}_CJ1+kMJ&l7u2h#Klrv7Io`L_YlXc~~9P4C9 zan-sCvSO*ufSar5+!w zt!7i(!FHxnc!GHH-%9zXfUn^c8Ard7rOI|Q@;`W4QPuw7PUPp08(N|Lr>Taotq0FyOWiiW85~A1T=i! z_X18uqQ?^^EuRGx$kW1=@6l6U``k1=QArYtur!TYY>_h)?#Qau=n3su|1e6g1PnrY zRRTZvLyk;APF|nXGz~+yy+AO-(vny?6Cw9%aJeE}bQp#>iCIc7^9Tj+$klY6f}1i^ zzQyEIV1~7{^>@s@6-mTuoNgffcZ`Mi2;pM_zlsOgt37!&wGWCS-_u#rYFeh>NGp<+ zSpXZpeLuTxKlAm7DE7aUMX4_<_tahqOGFI!^rGC8u*g^XzP`$e*LpiEeGg*ye|3$_ z457{2M`oW!S)1eB3C&ONwhTEYjBLXGrsd%C>)>$e(kX)&}NBs z1lCxemDJ$P&}E*WEh7Ls=56B&(m$n>c1(+z^8a|!X9>rvfo4_!@|p_{TVhV77|Dn} z$^!hTU!jEma+RzPi{J zE#Et?z5Px#fTNBsLLf$y1y#dq+kRCyea@t9$VJ+&crK{rlm#)0ZY(< z=_c7!Noni{>&Mpjt^378_d35+|2Y1jI{k2DfA`JV^^q&x(v^+k=y#Xy7Z1d`Q|lwA zyQR|`#n-z<`mj{q%t*VYq`%7J8)N&Q=as>sXG3JyW`?z5Ky#6wCC$x(PpWe5Q@ zLTG0IfMb8+SmcokJsc^Aq=|C)Cc`R7s5z9ja4mV+Vjd=p>=QIn;$$UAC-Brh`WLzP zlYme13T$AL3NFC3nUy5z5gC6>ijT-o`}>NEAA1i{Jq gZh_w2vsRew9zOHy$7_ercMIp&!B1kFvhcr|0van+TNr39#2~HuID3H#) zcXvFBlmf?r>mOb6-p#&!Z{EzjnRzp__aADF_JLR9n&p-*(lWaU>lXXVRH*C0!YJ(#@VbR8OWRS;JtbTAT4Ey$p7# zzKlQV&jgZzOfVT_eQq_B2`9sux@27@l8j{Pll9Q=k!#e3Of(qR_4R^>5if`wAh{4b%kyb6c`aAexKaweveAqI4*oa!?LUIhtW&Qk26= zOs;zpVA&?y6u;t^BM8ACk?ZA#5*(EquLf(#=lzpg<)-hsl3lnCthCiS%~$<@{3>#r z+yeN!=WX%!yC|5rV0k4?(@n`t>zXkfcUb;GV_r)QnF^IARmJjDAosVVY&NY;Tb@zn zyE#QmDKOjp^t`DUL&pL1j7a9pvGlAGw_A>pp^+n2-7}J^D)I=`Q;K06p;V_<=ovke zRTZ<+4NKaFj$8IYZQgR8(0~lfk&+Dau8q^@E=|7+`iAs|rxkNtLK?>>rPQpV$=I2q ziexI|rew^HPg6aYjoa?pVZvS1WEfC0HlI}n)wEiL9KYO)$d> zjGFW~Wz6C8vBZ1i?(gA>2Q6n>%jQhWX_#_avt00{!!3R*lv>WzjFOtQ?5R1~vMbtY z%WIetHFF@jDc$ljI)TS2Rhl-eFnczxDRbinNC4Y`9MDS6UX%cA9oJy z<1YZm4{ew2f9-UVuaI-X#-7D6>hrYijRwSPKB#SayT!P z_n{(12bTh)c`GcD%~;B^+!9B_XBp4^&ULguxX!_@v7IgL40u}Rmo_~w?YuxPG`s?H z7bA=Hc_;nqUxrUbIi~7XcFrCGN$oJv&9cjEtw3#M2xPd$-15qxsgZpB^^&H74#Qc+ zuRPfb+t!p+uvOt2C5Ol*;iAmiKWFW8hsec$htGTPc?&*&)lK$s*}(cgWczi9IEf+5 z*#znEFls3hjW~NmU02s+UtM%lsb@{;| z>QklR23s6iN$Hv?r8R~E<|${CRL;axM%1K?f(WwUYZ)hL(-0*(oy#bi$q|%@V$OF! zWWJhFp~w|FOpt*@Q8eJ7kpM?$c5n`e=_wG|7|kgYFqukeLlFm*GoY%k zR_W^Iz+wU?!hTn_rEC|VkD0Uv!GR&pfgS@rR55c@18tOH!1S6}Y z(o^&0CBY4_00^uVyb45q)DU~Vlh$N?&Hw{c=i}8xZ3vJCL>4D)S`B55&V=eJ%5(p^OBo1`fMgKT|VlRj$Y=OVdaJcc|PkLNvJ9hxLg)BgaRFUfe9Wa@;ro zPM(M7I2&D)2ref@(^=3`=CfxNB`YG^K$}iHh;)wJ}nKV`6Fw zOd)-mX#`^iY=Gk~pHZ;$BlG4AaCZ19@j&0#d&Ng^!=m15l&k{<^vC0@4xvFxxh$NH zXgv}bFGJ6yV<={6tEx}ehsdso=n>?z_`G7*nlcUf)oG;{gaLNV9*O{feXD7(WUd+D zU8*&LyOGL5RqjNb23+XBcp&f)X`3a={T(xLemlmyhCds8CTzw(bCPzlQjD z&s(wu=Dy*S1HQ`so1NrLxA^{7m{HE)`Cf9znyxJ<6gGCjXQ%&fEoj={LrYHNe%#IH9 z?c3jPz{-2FkPJ)HiqS7=^J%>w@KU9JeBA?r{buJapA37djq|k^VxU#yrIVrWNmU1@ zWgPCS9`Za8WjqVbga0BA&XNzqO>Z@ycNJP=_lZy=7O}asz2K|+{;>RgHKKOel}{J_)kseu9dIsc$dxa8Pl`+>0A^|pPF?MehXt_yo? zKWzYDcwq;g3FXL)#c4buWI-KTjjHN%iu|6RwgWoafej+2F>Jc9>BeRoHruh;fz3{A zda#LOvkMzkFp9ZU+(rB0YoUHa@#E!EMPM&Hvg~OMvV5+jmIEV#c*v^#HtsdAZ1~Wn zmZeFt?m#i^Vgy>X{0K30UE{uvz&eKufb2X~F3{Pz(@{f63i+<-}5Z--m&wrRKqvz|%{fr+?EB zD|mvxjJE!*{7yq5$o_r70{qu^7NXsSmfeMLbHN`j1R@0(8i@R^Js5S}C&3UjZO&Mc zH65fjT{?Xzai$7{8MB6WC-ps5b+Cfe7X0{-naTzed3Z&yx#~UFk0rB1XcT?96t?qtmdG}K*vBU4Xe;!?W{yQsy7neLQ{>IyS<>&7^Vvc|H0CdA8B(}M3xa|nnMvm6lZ?p@Eot_&V zc7$Vt-$?9t{!A1SyF5RO#Q?r(6B50ioAyS8TZBZP=Vq$|;Z841xVcM6>~-DT?LfHS z3rKGc2uIzHn@6nZj>D5tO~R$eS?++?+7OSLJjq@i;lefQj zpfINAjIueG>azUw8h$txU|9g>1M!-Nqv^*6(s3KDhgtLqoEoHq2!Gy`#B$BfLEYOh z@SWa6Q8o*)*=npg3nPrH(6G#`I4O`0@ob{t_Aa>_3(f84UFT0<2;6b|AkZ$fbi(c2 zh2R}`WXauGi0y#eSC>5<@c5GO`ojA2@V;M!yH>*6R>S+2!}}l@FWP-|t~(HKKO!2x z*8tCpQQ{5XYXs;%@%dau;&Wo-bFCS5K;Y|xwSy7ihEEs_J8t-$0LQzSxYpvM8(y=D zd9nO%`Q?pIPO@ZY!N=?Vc@gt3ChWC($je~f(D9ey4f08V*dvw|J_l>_Y>Po6+**!F zT~}FxwAQe3iSks;AlI5oFT3#_aWB5es9xXgkT& zZ7l>iU6P1&vfL{Y>q4AlA-l3Ng)p!S2!XX^a zG?DSWl`NQIAH#9TF8vlZf0#2mjN@1)%?RJf0v*Ap8)>Du|M6{B?fCdq4$AJz_&Bvg zmt}`KsTEA=@B;y;8A5rZPnt|otnyGSgiseY_@dadL1mPcSZumMYp|zwy{f_UY?dcu zc5J!KdHjt6#R#6VT|z@*IkaWR6_6gFMu9qtsp@)`nXu(zzZ@`F!fyHCJq^B#AIDer z{O15+j&>Y_X$_wlz<>$09Hx&HUt(Ip@$sskQUITr|8jF}0q7I>5N5(_o+mT9oKuy< zRDwPMK1MG%At;>)!mmizuSxC4B(XvgACc%sr14`ixJ(8=COcQi&fk*ek4XF@vi*+T zwQ7$n+as6eKCpNE$|3&NvHMP2?49m+a@X{wZ;UK;jV!l4e>QNbW`#Uo^pV!iLf4K$ z_fGt;ixy(r3)^}Mjje^|mO@8&p+hXR#|j-?kTn;=k$c_Kf-oi&{0ED620<;y*Hm^g^EEAhe&N_G0fpQQrlIGaJZh-H53~-93}OQ#YPS{ zk*2m{GlyG9u&vn2;WpxJEw*#GgZSEtog5ZPWKS{1;V$9}7CH6BZN%07$#&kKv=h!c zw2x=K^Ep9qG0qV{#>JwWfga?qhJl=I2KtaYKLZ2ET#$hwDmYg$L{xfCWK(V*wB#mLK4kC{lF?foU;Fj}{E(bH67yzf=FOYA_s*Sr@7$U97r|higzNMpz2o~ImZV?O5B>6r zh+MwIB}wO`q?DA?(xf~p%M^E|U864C-D&rvXVk-Kp0sz;H|pcKH(fKSj4B-WrE4ea zM(Yr-Nh)doWMDLacx|#S9h?k}hB)p|hbQYt>p31sH%vB;HgY_ej!ZU0Q&CYQ)fWTvts`0Y)mo|;Y}QkzWV5@YE^Hj5v@eQIJXbs#bJ7sWL^@pM9sqWw{NQ8s=wF_D{?Iy4-enw~t6QlpuJA|tA0 zL^D&-;mK5Pe0cw}LtNz$Vl zsp&*o%c+USlbJCjhvRVzy5jNkQknXD{S)iPGn1)xhck)HWM(RrpIEmY=$uaHkch55 zy)Hd*VBL|K+<0bc)6j;E>#`HM)Y>CJLE=yPoHK6KL&3Zf5VqB$}?8s7iblv}MEAfeh&IXet@cWk6%u3Vd-&R3o7DOjIu$ zJuoAXX{qaAI+FnIF*?#lRs73B0Ewp)6Y0c(bPDC@WtPWt(?^i3y+B1X828Z(2q!mA zoy8=uHV(*h2bx7`w%8kHI3Y6I|4V(h8u z2{pAJ&AsWu@yt~GKx#aZJ{Zp&6jZN9fYwr2hq4C7l9xeS3Rq#AZ)AXdT!3XwbZBVk zlcib%d}ydM76g#8DYD=NLnXxA=#Mx9yoCh+QbTo}3spN3+%ZZf6Q(RMY5Ebp;KLYNsf4_KF z%0Mi=ie8BqMaNU=Bn<|b395dEP1(8 zOgu~Ay&p(YDOiKQEFqup?gidMQn2CF-g$r9tf$S2a4PJK@B!r948mu8v6@l@+%<{0 zATwp+I{#<42B-r%el2r`QLSa(5R;IGbb_S$N=9rvYfM|iQ8Uhy6L61NIi;p&Kwt*8 zhj~(`If|;Yj8g_R1GE&T)>*1{9(bz(G?fBk@L3v~ga8i^5WvJR>uH`})_2jHHOkZ7h- zN8|B)P{>Kz&yON6OT71lwBT~r_Fj&xn2ij~MK%>9n`R@M3xUn=T@DYvE6J4A{qnsR z0zC_E{J5SC;GvVt+oZ2X*1P{iUhl2|551Vd6GG&iltU=4lX6VX4?LQ}ERV559C-~f z!HI)3V4{gMxHTlg6c}uF2)&3v(A_X2rL);)=CvZgZIJ%c5`uHExdncr;^-{POnEFkb zhQ-O6TDbx!OB2*q4P6#)oH&q~7DT3rp3JIKf=i=UDH=M9V64upCtt4-mBI5T&^!}! zBj;Tup8$(W!|1$A-Gy7pL$j*(L#3%skCSL0Q&hsOx}1U*3bs&i4+Zy8a6bhPP+$|h z=oS2)k06qz%;%)C%j4}W2V4jg4isY8d2|*vswBh7TIAFw>yvf3*WtGxcYm@W8NfX-BgYz5V!k8V z2#9JTM>r1YCZ$e6)@NkwWH^CQi4jtPerhxRJagDF*=Q>vNRk{NbmT=bN=q4zq{aHdAaY7*}gmH`nDJQ zw$JuGaC*nZKy*GFdGYucj?dRO&DF0c)~}eWA1u}nUaVjBPB=0b?kk4-3W^YGoMFBn zZ&?)PN>TD4ku4z}Df&@^g2;bax@pZD4mUys8*pH5*=2 zP}Wp;orcUQ8vX=vF(oe29V%(NbQGR~rS{Xv|BCCJ`}1BeCe|5gi}bvgCRAn^U z#QgG#-kWpe3&_k4A*jUi889aX!4rhKlVT52 z@L>w}AczI+QzZ{SQauGzqM5U#98qDmRC6-|fj2Rc(uBk>okAqL9l__M`4xjF9zOet zSAEsMUM7+rN;qKEW;u_pB z4OdUUGyYgZ$wPYPP6*0@gNZB*z{0d-a8BZc9{e%Y5ddypfjKUJS2k(Sro@D;N{qFn zO_6bps5GnT+KgY*W=I1T%8Z}duj?`{^-dI4_an#>(ME+vBWCRYmDFeJKcFI85eQ{w zSXX8?79$&f6evVC&PE<81Rl~g8svAqzV~9}t_y*?NU0gtl$zEK>FdkxaDQLEqf)6M zJf0#v-iL_6g^XzhiQ0A390wSx(U4LN{7a7n!4n#$Q_<@zAkx;kgZuw`~3}+V=;^S16xLI@WsHH zzzZQw8)$5*WSK@EmQs6TJH6uhT3Is$C~KT320Z)PuL~}&DWwm4XcTXY$_Yo3{a0}rqjv$ zsrAE}5iv@vj+Y9eM=4WOVk&vg>Q_kXT6`+Qidck6sxt9A=tj8?0o1XOP{*q0;-x#? z@Q5Ie8^N5ojs|m$oW73~Q?I&NIG>mEt2E`0G<6+B1TWTI#kv)i9mvYM2>w@6TbShx z(Q~Qf4{oa|P|C**l;65SO0Tw%!O&3jX&6CZ@k}I>uwD;GHw~>fs&~XOYm6GNFlXm~ zhtB9o4Ooy$#-#n!(E$p068;p$X#PE~s7G+S-bTavDSagqYtx)3Z{{>UNeMpkbJ(f)KE;38u}M%DOM-dh01=! z%Jr;K*Fd*!lF0Vovqdx^>cvslOgmx(`!37US@%0U9tnVH11?18H8vMOfE}?a1SM$lVRM$(8QOkNi=Na zI#au@h=)u?oQQBIPtL{w)W-Y!P`_0&R;Vci)$=#AAzek%l|z9QB_G0v=Tfq#q&|qUUb}ShDiO-cql8_;e2Q8 zwC9r2R@owYEn%En^c*6KYM?Pwde?;mCkY+0ypJlayiAG9+FNJ2A3ECsJdLsa1>A%N zKSnVU(yL?)Z=4XGZ>Z=!CH)mjXSX5HH21EezpLOMxZJyGws-Sf@3vy^w)xJUxz2UP z&UFiJsqcQdEV=qZq{??=96^f@_ZAnilMuvC5e`Y&G6WFB?U$2nM~B`Gl{v7Mv#3yT z4ZAu+OeNo3(Q8B4`fKD>YIKLs9G(kBi=pUjsCQ23y`c17SD!#BXR&G&IZO5Gv+d59 zTdKDtf?0$x5Hw?#`Cx|H>p@@$S}L*2{4#s@Sn~R>RC+Z6UD68F&-n#*SIr|H=q?7j z=K?E>ft8m6F`zcE`Zrwr$=K>j8SH~Xqioa3WnCvnFOQ<3BP#JyJLw9ct%7@Kvdk~2 zhlWP}4m9#b@kgvpzYNYo`om)5_y#zV(d0ZHAHki8k7p}8@lj&F&5E5$DePCs&o&`| z784>#xb95doYGTNdM+(#0(+kgf0i14UTZj0mc8LDvsHjx6W#tEk1|IFw@?D2y=_IM z?UK?_%`go>lU8>-fCh^@fk*YGvK(M40d}~x0okCVMuzvB|*}te`Key1i1xEAxTU~ zRd$d*fSgL6Y08+_ke4O92a~MHQU)$ZdS2~+z3KI*W+NL4fema2qKRQHytWu#I~!hC zP}VVtR12d?REKf2A2$|J5#L2|7Vk(%RWXTZmZIN7ELLxqADKt8rHCcTFH-SOP{3pJ z)&)yy5z9|MK_pAV7&fEcffFNV_sn_*-XRfF7>m|#rr0XOY}99%jrz*EHY=-#hh1l81;%5kV z5IL;P$h)fyfbBkCZUSn|i&^MpMM$A~xRm%%3p*BE;8F*ysb+3Iz6t7$(+ z1C}pcP(ZE*6Ege@JFiC&5tD%jr6CBCP7HMmL`I@w$wTa-LRuy2$u}CUhwVZLi8Yu+ zvMtDj@pD=0mp=9NeP8?7Y0vX@mj_n=(V^3x7lPFsklJ&KaC9FchNxhjjF3*3-iI3s zJL(~nu9_lQ%4xDTS+^hg@iO%=J@X_2XF2A!%tPuVRl1l+VtVnIrXM&wOKOguqSYcp z*hkzHtu+d8Tu?JvuMVvzG1^tXNeM~AV0luW0ZSRlZ`y}NaD7>rd;|?wEZrTj!jFf& zeqba2Cbg2BF-w6*XuW+>IM3SQ4xdqW#MRBN$$YB?2bEdPL_NfFHPd-}(cgZtd);jJ zh70};mm9kZ-TP)6A1eeNBS~!I5~QS}4ug~sw_i(1E+8+P5M}~T2WrJIA`z{L{SaLF zj%^kro9X++FdHHp1CO$Cw1+__fM}mvC_CR^LP-;d+6X#Chb*i*h;mqmz1+TfwtX!r zXDxtHZJ%bt?b?FHmd&2mmTjq&S`Du9F;u(QguWE8z=4+LF%SZ;pERb|C7|=$wE`NT zr+I1#&{KB4r3&<#nXsEM(2XKhvgk#n&jR{t$}|A|{>0LJht;51MPKSU>YbgOSWvZ) zlP0Fdh}FD850H9L!D@`w-o8)@^I!K8mPm5MQNQZcT9#GoO$-Q0buBgaYer+Kf%--C zhdD$p|64?uhEdjj=>r$^YRrGf4Nka2`s7+kdd5|I8%yEOxR1LJ`|a;DXDeBHew{~} zk+C?W=%wJ{hFvjFz+yfl>;7ypSH2zYU2y%1rj8}Xaxl_PS-ihSVm|fTc)sLS6H|v$ z>T49QIg)`h*uh+>Za3U4kMZUOUTg=W;fY(GD#`JZm)#F4wc?Ub_?hJ`pcW|`0KV+w zsGijqETR;Zj*Cjy<%Z_7PrcmouH>t2IlT?ualz*KmX2=*|3z@FWo@x#?QF}svtGz- z!NwPNpV|Gwo-08VeDA7HYU+Z&T(G%RzYMEN!RG7P2Gsp(+qR(Vtzhl8Ht$=lGQtY_ zBNQ=8i9&9SQdkhI1c7Jh0#acXdqzGkJK2^@f_T2kLuhxX;RYTMU~TzU4Q1r2N4{jH zyB={ILKtI;ky7%GVWmigrbf6?zmLEwQi+}p&B^t7r?>~#b%^1?OD#jOvG`{^^<^%aKS7Kxle?7cn;7v0MD>WoXgo#h`- zzU6Uf4$*_~^-l;#R^DBZnHqwx5cWxB$0xAxgtZOAH+$|0M&?T#IfC6-VkzT(K%UrN6`1y8L){fcYgas3OFvCt~jw!a76HQ4=|%i)f9B~NYRe58e3eZG7z zJiE>XUkVEEu2&zsSikz6K*K^Uid=`4tD*lrv!4I+<#y+{!7q$UU8A>gTmCWoGP-#( zw4*~lE8pMfdFd|1-ttH8Z)&2IWrX9hWx9^pA$aQaj z$cy+-Jhe#wNzl8a+5eNq8j82NQNDt^8x!^sG#2Z`+Srt=Q?uhZ(MK^xk;A&cQXYQ# z=zSDEK6!I1)2&;R#`KLBH@!9q@4?mRXUUyTO^LaHRe%SORwb!XqLuZVCZ)%ShDkKS zT693F@B7xKS99Nf=Cx;L`!>Is`$7JD`ME87i(B^2ZW);kKU`2AW|>ZReNUREIbws_#(}aSvfs+D)mNfr%O)Yp@%WSovdP65Ej`=+P_%JmvA&WJ#N3 zPq8-nrxg1k1vI`Lmny$O85BS`lCne{uqgGdJhA6&_pE2-RqXg1Dl50XV)-$-thn)L zoq_6G9CXC_FxU`v0F29Z>(~JZj=}Nl44zbbt z4=zd`c44Z@g)gudIUZi=gcFnXDT?!&Cpk6oisvX9o5+`#j7?-*s!i2lEfeM?eLflW zBc+K}IgJ!DJn?EL%uCIsT4Q_3$WD0u)=nmlkweOKO5Kl+81^L>ei(z2j1RZs0Cn7T z+>IqU4MbHtIk0Qn+{u9jN*A2<=zX{<-JoJ{!uv5&&&%rDxPd7BxRvTPZ>X%k|34#j=Z-agKx1oDX1=N zVb8ZY7rXbK==%H$gHRnFryYs3oglxZx)ipKCm@JtsLc4pA=>4d8|OD$nuHD4brac% zDR5Wp@fJHoYiV0K>rbV+kI@Jby3`Bkm!?ape~vhlrV~90d#IJ3ggtbU2r7*y*@vjU z?Ul9Pja&?`z1-Md=(u;b@k52chvxk)ufV?5ak;Uh(0SKv<8UD`JnwHR_@kF2ov%!w zd}QtA=I%mt=WO$?LjA7!aLX(ATnG7-TD(%`3#8N2?bx$kM1}pf)3-=}iV8Ps%J2%lXYa zQea`UVT%>Stj@=x%%Ij7K5yi!HI*7mWwSWYU=i0Wnpg7{uB90UzesI7hCFpUf(luS zP|W-#goxcIPyG%(2$!yO22{)PFj-BU{dW078y3}NlH zX21FxHR9geXhfgY-pyFhH>(=Rac)V;%cb*S6E2+aO|(S!Df3x;%5DKL+$Qj|iOK0n zK^ZsMCgweflUTi83se3@m} zw~>0ijy8#lJyp!8Ee?HeAs=S6$_LbWs%t+5_)GFDzBm1YLjl#gwq@h2$vA_dfVN2!=wLcynGFwp;k$a503%AWrD&fY8jfcHW9 zo#kx{UW#A}XzE(1ynTVQ;Xqs$DF-=qh5lRwORn@7?%Gonqle0V#LBB&-lhe( z_T8RmAgZJ-0&ox1)_M_hO0zf*QV+-QXIz?CA?&)pXA!%r+y`ZL8MKSx;iPaUbk40m zEgh7xmK$Oh!v>p+p%A=jbyv6)HVT(QI3u!Cp*~BF29VN30=JQ3xEY?7j>)58D4fme zPtm85yeYEko`wkP*SZ1rMjSA1e=cT9~QY?I+v~e}+e$L|~J}o9=$R zG5TKyCPn&mWWEx}vRU;W?jkp;BjRMyH5eb0c zf5T1qN&Y8_{epsDQeazE0^kjr&9_&>(8&CAf+De07_DiSUtiJRSMaaCymIU8%Hg?{ zdx|Uf@HWT3VtwE1xj*^L`OiQM9NbGDl!NR+xdM!XJSbNd!z&BQ%4#4J@Jr}3f#yjtL`-VXOGROswMNnG6`F6oq{Nlh0B1SBaLl5gfrW-ioU4E4{3R?aCa zFDNTDA4-%oEUCFPuu|f?L|q^+W30@>I2t|^ zo>K;j%D^RMuo@vBe8Wiuv{N7(iyeTjiHGwJE$%KV-Ita;{@_zffO^Tzq%_iPmy?lF z-$d#W1C56lqlRSwJ8CE~-&}SOmDO7$Owc0+E&#_gDwAp8cORVXsBpVLFuY)3XNiJ%E2X? zvgE!`Clna=5LBvN`iMujK8_@)_ssK1gcGCW0gBmCL5U80&Xh}kMct$sTJv4e`CMe+ z&5vG;Y$*h`80d%VmSG!B8c`+C)+zkdhE_b0v3E`^mFeeUO3@1%E@qWdzlJ zf!upG<(l&9C#bl|?mkUFc??#Hs@Pc|=2je)myX9_PySn!>R?-@4YGc?C6Y}!fZrtA2JxF57DM<==Tn67JBWKd z+!V=Ov0)|*H^s2+bT&ggrDoBv%@|H_rXkZ@2(7di>%NPAytTAk zvl5SK$MnUu^XY`KxY^cx-DIq7rR_xx6^n>84)V)w59uc2|3!qn86{vM#t}hVbqn#m z#mK!sJU$!QTL|pcx6~pt_WGLH$d(I%Eo2Vfsu{Oh+NG~GZFGN6-dMS%mL|?qL_dpL zl(^f@HXBkh^KI45)(vo1bwNAHes?K~Q#PSUB7ma3eIiUvo% z!%kGza})oO$f^#-pe40gtzSe)`h_xrNf6?#>fuRo*aW{E)|9)E&GwLr0eRy_gz&Q4 zG6rrT(y^SUD$eJ`q5)1KOgwG)#nMTgbSjj7kfgJLP>rJb`EEP3^oO+5CmX4)w_})d zZmW5gs7dNr0Rau^?{&m%sop5AwJRUBH{4zVhauly%m0Hx!P_+d*n~J_lwCzYbaep(ZAE>QHfXC*Y6u z2^?>0@<(t(W;VvVe_K%127O7?0UJUdOg$Iaq{~sV;t$7e8 zZZPWt3nmk`V}WSKPQvhJ))>5XS%<0p<_X!E>e$v$C7oz+T2I~l-_*_R2rA^Xo9pKD z2EuLKyxAUo03>HLK>z^WXch8VsmX~b@+)qJ8nyxomQ(h$V;yewFpKZ*^}(9dhb14$%#wrA5}N8YvDfk{XBr}1u3Ey? zEGOHDhRmTtbfaHOGpcVJZCM&BhbC~^px!0b(pa6xIKoBe4}4VP2LO|5veNorag1~| zSvi&3QwcHxlYT7?va|(ce8i?{P>9~>%*JYDJFm1EuW+UXwro_X4Q4wYqrM$ScbIdM zTXQe{=%Ik@y6WFkK&FQC;+zciIZAkng3nPvn{m|7Q$WS@em;d-tkCJ}XH?mFk5~vZ zD`rCmnJmC%4jx8Zaf`NDS>n4YDhU6E$c7Oq{6E z3ll}%GCEPCccGpw3;|=I46%g{$=5jNZ7F(N$o9ZXXsrtr(`*zsTvjV9IP|jI!~tGX zuICdw^t7u@_{qp*)QzF_#^n|>DILuf76=9Q1KKEA zTV?BLVLL<}o@gaYgkhoZr~HRojCL52WEN=YPfb|FgD0)$X^^LT7hwb3E7f0D}7JV-&63%F8AL#+rM?L|0BizkMQbO zZ?PWZ+%>=}Uc@PA#jC#|V{1RzON=}!**%-P39~Ua1z=0g+_E*rWousl-8YZ^$Tz!e*Iam4 zLD^LZ@6ybGJ*(tDk_SEC@~*0MkSF?OF7hcv7F(5Bay1Ii*)OM!C;G~cTV?vkSCk|% zx!bYbi`w#ii(uP2RE`rM#3~4{_G7Q-70infs#PZ}55 zBN+n1kZy5ab#jaCgtII?!I#sj+q4YV*jl}WbqBP?b(TgyUlp#i(qUS=At!v zGLF!ttxpc7`nd5{ILCTM@++;tvN^Ys)9Pd*H$F5mb&wtN^R14h;Uc>sR;T_2-Y%S1 zJ@gcP-{+wEmz4Nd6qp!g`X&sjzd=yJ*KZoHrwFf4;Bg!wA8vi6|6A~4?SH-hPjf#w z_Pt}pRUcx9)(2)AcNPLW=Yx%BKl+6y*q?RlY~x*pz+Dxz&@(^>BX!LO8sF)M!z%5) zxuiIpAZ-i-k}Ve<2J#Gn9wqFT(~dsj>Oho+anBHnB5vpJ!i+bt2)XN4HO*>vmLSuI zS}HmGe5A=j=$nh-%>`w1H77Uv_|GxaS@^XNbxO>yT%_-Yp-k)iIqLjP5BEEZ;X4b; zoz+kvgz#|xAUqwI+&}GvR!YqGFV?jRv)wnSVWGH`vHdfSC2SBg^Wi=p*zw#61(qh=t3@G2B{@8|CXHn_Aq;&t& z3^CU3tMEdpi{iz}_VdTo58K#URa92JzV(uFNA=k9=@>YH$YRXmM60O)(P{lo!W;IU z$=KQKK{dD*JzL8VQbailb!{56p+}s2&L7r*WhaVUAp!PLjCzGso+!!6BC^O}R5f1N zinN$MU>cL&Bw+181)7(Pt`9}l%tw3p48@^h=g@px$9z}!)mks@vGN8(*b=MjLv!Kv z#qj!BQ*K22dZ|G@6tF$&UBs$WcT=k7+-+E_R2-oMy^jKXc2x6~2~vy>;(_a~&8WnX zaPpPmp+Gv3ur_gvaQ?R>Aj%UhPf53AWulI-J%YSsvt$T^@67r;3Z7+!ckpTK z?7^ZLhJ4-u!@p&K{99sVih_fb$Ed2lgn$7FyVP(Pg1J9P=l{2POG#=&#S=+cn64Ygwh&%W(q69(^&K8Pt`@So9qyM zf{_kS!pd=iYo#NRG~@OIbaJ_<3J=>~c65A#9>yx%5jFMnL}of`*tqF{aJ&S2>Syqg zD0U9WsS}6LM1I9EP8J{DU-bdg{n~4X#Y!Je6M+|kSmzUQT1h=bFo-4&C1@vHbnt0x ziKEX*PLM-FD!N$B{90OS5Z^`;Z6Vi()X<@!Xzw-{=6Tnhc8rw%Nu^JV_dbKV0RSD6 zy)m)GT5Y$!V`u}viM~}M9);0`TbxQ(Sllo&#Do@Q0;#la**|oGPnPUd2Wez$hAuh- zr$QlOLsxSJnZR>J*thm&}Kuv)VqE0XMjL%3FXpne&kr%4=K|8Vq1EP<^sVgasfiu+KJv(Ry;U6JAnP;8h7n7 zm}{3|>F*-e8oCNgzwmhFT4Vk6HG_lGSnt87c2#0=YCGOm@{eWkZ809KS(PAN@*Cek zPGwaxij}-{26~_YXc{N|r1@|Syn;{tNoO)g*szJC1;H%D zspVNFnUar>8O-u|8bC)bg^v$U9a2NopfCl5Sn+k!eu}N8V2FbC6x=}p>8*V3B5&Lm z+opa>X*|dB494KB1o3s{Zt>BG7UXyV7gs z)=@43Ef=vXZDy__uUL=}Xt{`8X*P3x^eh4`7qM%N?Q-uG3BlF7`{WI0H(!--yS7(e zOUVeX?w9Y8*PmT+Rl@DseXhr4`6KcbiEr0(u8+!8j>4XE=w# et4TM$vA*e*_*HyPTHbUm?~2MeUI_t{@Bar;&QpQ_ diff --git a/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_tasks.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_tasks.cpython-312.pyc deleted file mode 100644 index 20b871a5c6fdef8612c44875715203288c5e08cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6986 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 MyPFfz0e+_c0R*U-6951J diff --git a/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_tempfile.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_tempfile.cpython-312.pyc deleted file mode 100644 index 373c99047299b5d7581233eaa82e0cf2add962e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28133 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 Hg4=%q8`e71 diff --git a/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_typedattr.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_typedattr.cpython-312.pyc deleted file mode 100644 index de9af3f25596bfd959a8347a23bc533b2ffa9879..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3831 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 P>EY;v0PzMBcf$Vwcb?`i diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_asyncio_selector_thread.py b/venv/lib/python3.12/site-packages/anyio/_core/_asyncio_selector_thread.py deleted file mode 100644 index 9f35bae..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_asyncio_selector_thread.py +++ /dev/null @@ -1,167 +0,0 @@ -from __future__ import annotations - -import asyncio -import socket -import threading -from collections.abc import Callable -from selectors import EVENT_READ, EVENT_WRITE, DefaultSelector -from typing import TYPE_CHECKING, Any - -if TYPE_CHECKING: - from _typeshed import FileDescriptorLike - -_selector_lock = threading.Lock() -_selector: Selector | None = None - - -class Selector: - def __init__(self) -> None: - self._thread = threading.Thread(target=self.run, name="AnyIO socket selector") - self._selector = DefaultSelector() - self._send, self._receive = socket.socketpair() - self._send.setblocking(False) - self._receive.setblocking(False) - # This somewhat reduces the amount of memory wasted queueing up data - # for wakeups. With these settings, maximum number of 1-byte sends - # before getting BlockingIOError: - # Linux 4.8: 6 - # macOS (darwin 15.5): 1 - # Windows 10: 525347 - # Windows you're weird. (And on Windows setting SNDBUF to 0 makes send - # blocking, even on non-blocking sockets, so don't do that.) - self._receive.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1) - self._send.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1) - # On Windows this is a TCP socket so this might matter. On other - # platforms this fails b/c AF_UNIX sockets aren't actually TCP. - try: - self._send.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) - except OSError: - pass - - self._selector.register(self._receive, EVENT_READ) - self._closed = False - - def start(self) -> None: - self._thread.start() - threading._register_atexit(self._stop) # type: ignore[attr-defined] - - def _stop(self) -> None: - global _selector - self._closed = True - self._notify_self() - self._send.close() - self._thread.join() - self._selector.unregister(self._receive) - self._receive.close() - self._selector.close() - _selector = None - assert not self._selector.get_map(), ( - "selector still has registered file descriptors after shutdown" - ) - - def _notify_self(self) -> None: - try: - self._send.send(b"\x00") - except BlockingIOError: - pass - - def add_reader(self, fd: FileDescriptorLike, callback: Callable[[], Any]) -> None: - loop = asyncio.get_running_loop() - try: - key = self._selector.get_key(fd) - except KeyError: - self._selector.register(fd, EVENT_READ, {EVENT_READ: (loop, callback)}) - else: - if EVENT_READ in key.data: - raise ValueError( - "this file descriptor is already registered for reading" - ) - - key.data[EVENT_READ] = loop, callback - self._selector.modify(fd, key.events | EVENT_READ, key.data) - - self._notify_self() - - def add_writer(self, fd: FileDescriptorLike, callback: Callable[[], Any]) -> None: - loop = asyncio.get_running_loop() - try: - key = self._selector.get_key(fd) - except KeyError: - self._selector.register(fd, EVENT_WRITE, {EVENT_WRITE: (loop, callback)}) - else: - if EVENT_WRITE in key.data: - raise ValueError( - "this file descriptor is already registered for writing" - ) - - key.data[EVENT_WRITE] = loop, callback - self._selector.modify(fd, key.events | EVENT_WRITE, key.data) - - self._notify_self() - - def remove_reader(self, fd: FileDescriptorLike) -> bool: - try: - key = self._selector.get_key(fd) - except KeyError: - return False - - if new_events := key.events ^ EVENT_READ: - del key.data[EVENT_READ] - self._selector.modify(fd, new_events, key.data) - else: - self._selector.unregister(fd) - - return True - - def remove_writer(self, fd: FileDescriptorLike) -> bool: - try: - key = self._selector.get_key(fd) - except KeyError: - return False - - if new_events := key.events ^ EVENT_WRITE: - del key.data[EVENT_WRITE] - self._selector.modify(fd, new_events, key.data) - else: - self._selector.unregister(fd) - - return True - - def run(self) -> None: - while not self._closed: - for key, events in self._selector.select(): - if key.fileobj is self._receive: - try: - while self._receive.recv(4096): - pass - except BlockingIOError: - pass - - continue - - if events & EVENT_READ: - loop, callback = key.data[EVENT_READ] - self.remove_reader(key.fd) - try: - loop.call_soon_threadsafe(callback) - except RuntimeError: - pass # the loop was already closed - - if events & EVENT_WRITE: - loop, callback = key.data[EVENT_WRITE] - self.remove_writer(key.fd) - try: - loop.call_soon_threadsafe(callback) - except RuntimeError: - pass # the loop was already closed - - -def get_selector() -> Selector: - global _selector - - with _selector_lock: - if _selector is None: - _selector = Selector() - _selector.start() - - return _selector diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_eventloop.py b/venv/lib/python3.12/site-packages/anyio/_core/_eventloop.py deleted file mode 100644 index 6dcb458..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_eventloop.py +++ /dev/null @@ -1,166 +0,0 @@ -from __future__ import annotations - -import math -import sys -import threading -from collections.abc import Awaitable, Callable, Generator -from contextlib import contextmanager -from importlib import import_module -from typing import TYPE_CHECKING, Any, TypeVar - -import sniffio - -if sys.version_info >= (3, 11): - from typing import TypeVarTuple, Unpack -else: - from typing_extensions import TypeVarTuple, Unpack - -if TYPE_CHECKING: - from ..abc import AsyncBackend - -# This must be updated when new backends are introduced -BACKENDS = "asyncio", "trio" - -T_Retval = TypeVar("T_Retval") -PosArgsT = TypeVarTuple("PosArgsT") - -threadlocals = threading.local() -loaded_backends: dict[str, type[AsyncBackend]] = {} - - -def run( - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]], - *args: Unpack[PosArgsT], - backend: str = "asyncio", - backend_options: dict[str, Any] | None = None, -) -> T_Retval: - """ - Run the given coroutine function in an asynchronous event loop. - - The current thread must not be already running an event loop. - - :param func: a coroutine function - :param args: positional arguments to ``func`` - :param backend: name of the asynchronous event loop implementation – currently - either ``asyncio`` or ``trio`` - :param backend_options: keyword arguments to call the backend ``run()`` - implementation with (documented :ref:`here `) - :return: the return value of the coroutine function - :raises RuntimeError: if an asynchronous event loop is already running in this - thread - :raises LookupError: if the named backend is not found - - """ - try: - asynclib_name = sniffio.current_async_library() - except sniffio.AsyncLibraryNotFoundError: - pass - else: - raise RuntimeError(f"Already running {asynclib_name} in this thread") - - try: - async_backend = get_async_backend(backend) - except ImportError as exc: - raise LookupError(f"No such backend: {backend}") from exc - - token = None - if sniffio.current_async_library_cvar.get(None) is None: - # Since we're in control of the event loop, we can cache the name of the async - # library - token = sniffio.current_async_library_cvar.set(backend) - - try: - backend_options = backend_options or {} - return async_backend.run(func, args, {}, backend_options) - finally: - if token: - sniffio.current_async_library_cvar.reset(token) - - -async def sleep(delay: float) -> None: - """ - Pause the current task for the specified duration. - - :param delay: the duration, in seconds - - """ - return await get_async_backend().sleep(delay) - - -async def sleep_forever() -> None: - """ - Pause the current task until it's cancelled. - - This is a shortcut for ``sleep(math.inf)``. - - .. versionadded:: 3.1 - - """ - await sleep(math.inf) - - -async def sleep_until(deadline: float) -> None: - """ - Pause the current task until the given time. - - :param deadline: the absolute time to wake up at (according to the internal - monotonic clock of the event loop) - - .. versionadded:: 3.1 - - """ - now = current_time() - await sleep(max(deadline - now, 0)) - - -def current_time() -> float: - """ - Return the current value of the event loop's internal clock. - - :return: the clock value (seconds) - - """ - return get_async_backend().current_time() - - -def get_all_backends() -> tuple[str, ...]: - """Return a tuple of the names of all built-in backends.""" - return BACKENDS - - -def get_cancelled_exc_class() -> type[BaseException]: - """Return the current async library's cancellation exception class.""" - return get_async_backend().cancelled_exception_class() - - -# -# Private API -# - - -@contextmanager -def claim_worker_thread( - backend_class: type[AsyncBackend], token: object -) -> Generator[Any, None, None]: - threadlocals.current_async_backend = backend_class - threadlocals.current_token = token - try: - yield - finally: - del threadlocals.current_async_backend - del threadlocals.current_token - - -def get_async_backend(asynclib_name: str | None = None) -> type[AsyncBackend]: - if asynclib_name is None: - asynclib_name = sniffio.current_async_library() - - # We use our own dict instead of sys.modules to get the already imported back-end - # class because the appropriate modules in sys.modules could potentially be only - # partially initialized - try: - return loaded_backends[asynclib_name] - except KeyError: - module = import_module(f"anyio._backends._{asynclib_name}") - loaded_backends[asynclib_name] = module.backend_class - return module.backend_class diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_exceptions.py b/venv/lib/python3.12/site-packages/anyio/_core/_exceptions.py deleted file mode 100644 index 16b9448..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_exceptions.py +++ /dev/null @@ -1,126 +0,0 @@ -from __future__ import annotations - -import sys -from collections.abc import Generator -from textwrap import dedent -from typing import Any - -if sys.version_info < (3, 11): - from exceptiongroup import BaseExceptionGroup - - -class BrokenResourceError(Exception): - """ - Raised when trying to use a resource that has been rendered unusable due to external - causes (e.g. a send stream whose peer has disconnected). - """ - - -class BrokenWorkerProcess(Exception): - """ - Raised by :meth:`~anyio.to_process.run_sync` if the worker process terminates abruptly or - otherwise misbehaves. - """ - - -class BrokenWorkerIntepreter(Exception): - """ - Raised by :meth:`~anyio.to_interpreter.run_sync` if an unexpected exception is - raised in the subinterpreter. - """ - - def __init__(self, excinfo: Any): - # This was adapted from concurrent.futures.interpreter.ExecutionFailed - msg = excinfo.formatted - if not msg: - if excinfo.type and excinfo.msg: - msg = f"{excinfo.type.__name__}: {excinfo.msg}" - else: - msg = excinfo.type.__name__ or excinfo.msg - - super().__init__(msg) - self.excinfo = excinfo - - def __str__(self) -> str: - try: - formatted = self.excinfo.errdisplay - except Exception: - return super().__str__() - else: - return dedent( - f""" - {super().__str__()} - - Uncaught in the interpreter: - - {formatted} - """.strip() - ) - - -class BusyResourceError(Exception): - """ - Raised when two tasks are trying to read from or write to the same resource - concurrently. - """ - - def __init__(self, action: str): - super().__init__(f"Another task is already {action} this resource") - - -class ClosedResourceError(Exception): - """Raised when trying to use a resource that has been closed.""" - - -class DelimiterNotFound(Exception): - """ - Raised during - :meth:`~anyio.streams.buffered.BufferedByteReceiveStream.receive_until` if the - maximum number of bytes has been read without the delimiter being found. - """ - - def __init__(self, max_bytes: int) -> None: - super().__init__( - f"The delimiter was not found among the first {max_bytes} bytes" - ) - - -class EndOfStream(Exception): - """ - Raised when trying to read from a stream that has been closed from the other end. - """ - - -class IncompleteRead(Exception): - """ - Raised during - :meth:`~anyio.streams.buffered.BufferedByteReceiveStream.receive_exactly` or - :meth:`~anyio.streams.buffered.BufferedByteReceiveStream.receive_until` if the - connection is closed before the requested amount of bytes has been read. - """ - - def __init__(self) -> None: - super().__init__( - "The stream was closed before the read operation could be completed" - ) - - -class TypedAttributeLookupError(LookupError): - """ - Raised by :meth:`~anyio.TypedAttributeProvider.extra` when the given typed attribute - is not found and no default value has been given. - """ - - -class WouldBlock(Exception): - """Raised by ``X_nowait`` functions if ``X()`` would block.""" - - -def iterate_exceptions( - exception: BaseException, -) -> Generator[BaseException, None, None]: - if isinstance(exception, BaseExceptionGroup): - for exc in exception.exceptions: - yield from iterate_exceptions(exc) - else: - yield exception diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_fileio.py b/venv/lib/python3.12/site-packages/anyio/_core/_fileio.py deleted file mode 100644 index a0d6198..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_fileio.py +++ /dev/null @@ -1,742 +0,0 @@ -from __future__ import annotations - -import os -import pathlib -import sys -from collections.abc import ( - AsyncIterator, - Callable, - Iterable, - Iterator, - Sequence, -) -from dataclasses import dataclass -from functools import partial -from os import PathLike -from typing import ( - IO, - TYPE_CHECKING, - Any, - AnyStr, - ClassVar, - Final, - Generic, - overload, -) - -from .. import to_thread -from ..abc import AsyncResource - -if TYPE_CHECKING: - from types import ModuleType - - from _typeshed import OpenBinaryMode, OpenTextMode, ReadableBuffer, WriteableBuffer -else: - ReadableBuffer = OpenBinaryMode = OpenTextMode = WriteableBuffer = object - - -class AsyncFile(AsyncResource, Generic[AnyStr]): - """ - An asynchronous file object. - - This class wraps a standard file object and provides async friendly versions of the - following blocking methods (where available on the original file object): - - * read - * read1 - * readline - * readlines - * readinto - * readinto1 - * write - * writelines - * truncate - * seek - * tell - * flush - - All other methods are directly passed through. - - This class supports the asynchronous context manager protocol which closes the - underlying file at the end of the context block. - - This class also supports asynchronous iteration:: - - async with await open_file(...) as f: - async for line in f: - print(line) - """ - - def __init__(self, fp: IO[AnyStr]) -> None: - self._fp: Any = fp - - def __getattr__(self, name: str) -> object: - return getattr(self._fp, name) - - @property - def wrapped(self) -> IO[AnyStr]: - """The wrapped file object.""" - return self._fp - - async def __aiter__(self) -> AsyncIterator[AnyStr]: - while True: - line = await self.readline() - if line: - yield line - else: - break - - async def aclose(self) -> None: - return await to_thread.run_sync(self._fp.close) - - async def read(self, size: int = -1) -> AnyStr: - return await to_thread.run_sync(self._fp.read, size) - - async def read1(self: AsyncFile[bytes], size: int = -1) -> bytes: - return await to_thread.run_sync(self._fp.read1, size) - - async def readline(self) -> AnyStr: - return await to_thread.run_sync(self._fp.readline) - - async def readlines(self) -> list[AnyStr]: - return await to_thread.run_sync(self._fp.readlines) - - async def readinto(self: AsyncFile[bytes], b: WriteableBuffer) -> int: - return await to_thread.run_sync(self._fp.readinto, b) - - async def readinto1(self: AsyncFile[bytes], b: WriteableBuffer) -> int: - return await to_thread.run_sync(self._fp.readinto1, b) - - @overload - async def write(self: AsyncFile[bytes], b: ReadableBuffer) -> int: ... - - @overload - async def write(self: AsyncFile[str], b: str) -> int: ... - - async def write(self, b: ReadableBuffer | str) -> int: - return await to_thread.run_sync(self._fp.write, b) - - @overload - async def writelines( - self: AsyncFile[bytes], lines: Iterable[ReadableBuffer] - ) -> None: ... - - @overload - async def writelines(self: AsyncFile[str], lines: Iterable[str]) -> None: ... - - async def writelines(self, lines: Iterable[ReadableBuffer] | Iterable[str]) -> None: - return await to_thread.run_sync(self._fp.writelines, lines) - - async def truncate(self, size: int | None = None) -> int: - return await to_thread.run_sync(self._fp.truncate, size) - - async def seek(self, offset: int, whence: int | None = os.SEEK_SET) -> int: - return await to_thread.run_sync(self._fp.seek, offset, whence) - - async def tell(self) -> int: - return await to_thread.run_sync(self._fp.tell) - - async def flush(self) -> None: - return await to_thread.run_sync(self._fp.flush) - - -@overload -async def open_file( - file: str | PathLike[str] | int, - mode: OpenBinaryMode, - buffering: int = ..., - encoding: str | None = ..., - errors: str | None = ..., - newline: str | None = ..., - closefd: bool = ..., - opener: Callable[[str, int], int] | None = ..., -) -> AsyncFile[bytes]: ... - - -@overload -async def open_file( - file: str | PathLike[str] | int, - mode: OpenTextMode = ..., - buffering: int = ..., - encoding: str | None = ..., - errors: str | None = ..., - newline: str | None = ..., - closefd: bool = ..., - opener: Callable[[str, int], int] | None = ..., -) -> AsyncFile[str]: ... - - -async def open_file( - file: str | PathLike[str] | int, - mode: str = "r", - buffering: int = -1, - encoding: str | None = None, - errors: str | None = None, - newline: str | None = None, - closefd: bool = True, - opener: Callable[[str, int], int] | None = None, -) -> AsyncFile[Any]: - """ - Open a file asynchronously. - - The arguments are exactly the same as for the builtin :func:`open`. - - :return: an asynchronous file object - - """ - fp = await to_thread.run_sync( - open, file, mode, buffering, encoding, errors, newline, closefd, opener - ) - return AsyncFile(fp) - - -def wrap_file(file: IO[AnyStr]) -> AsyncFile[AnyStr]: - """ - Wrap an existing file as an asynchronous file. - - :param file: an existing file-like object - :return: an asynchronous file object - - """ - return AsyncFile(file) - - -@dataclass(eq=False) -class _PathIterator(AsyncIterator["Path"]): - iterator: Iterator[PathLike[str]] - - async def __anext__(self) -> Path: - nextval = await to_thread.run_sync( - next, self.iterator, None, abandon_on_cancel=True - ) - if nextval is None: - raise StopAsyncIteration from None - - return Path(nextval) - - -class Path: - """ - An asynchronous version of :class:`pathlib.Path`. - - This class cannot be substituted for :class:`pathlib.Path` or - :class:`pathlib.PurePath`, but it is compatible with the :class:`os.PathLike` - interface. - - It implements the Python 3.10 version of :class:`pathlib.Path` interface, except for - the deprecated :meth:`~pathlib.Path.link_to` method. - - Some methods may be unavailable or have limited functionality, based on the Python - version: - - * :meth:`~pathlib.Path.copy` (available on Python 3.14 or later) - * :meth:`~pathlib.Path.copy_into` (available on Python 3.14 or later) - * :meth:`~pathlib.Path.from_uri` (available on Python 3.13 or later) - * :meth:`~pathlib.PurePath.full_match` (available on Python 3.13 or later) - * :attr:`~pathlib.Path.info` (available on Python 3.14 or later) - * :meth:`~pathlib.Path.is_junction` (available on Python 3.12 or later) - * :meth:`~pathlib.PurePath.match` (the ``case_sensitive`` parameter is only - available on Python 3.13 or later) - * :meth:`~pathlib.Path.move` (available on Python 3.14 or later) - * :meth:`~pathlib.Path.move_into` (available on Python 3.14 or later) - * :meth:`~pathlib.PurePath.relative_to` (the ``walk_up`` parameter is only available - on Python 3.12 or later) - * :meth:`~pathlib.Path.walk` (available on Python 3.12 or later) - - Any methods that do disk I/O need to be awaited on. These methods are: - - * :meth:`~pathlib.Path.absolute` - * :meth:`~pathlib.Path.chmod` - * :meth:`~pathlib.Path.cwd` - * :meth:`~pathlib.Path.exists` - * :meth:`~pathlib.Path.expanduser` - * :meth:`~pathlib.Path.group` - * :meth:`~pathlib.Path.hardlink_to` - * :meth:`~pathlib.Path.home` - * :meth:`~pathlib.Path.is_block_device` - * :meth:`~pathlib.Path.is_char_device` - * :meth:`~pathlib.Path.is_dir` - * :meth:`~pathlib.Path.is_fifo` - * :meth:`~pathlib.Path.is_file` - * :meth:`~pathlib.Path.is_junction` - * :meth:`~pathlib.Path.is_mount` - * :meth:`~pathlib.Path.is_socket` - * :meth:`~pathlib.Path.is_symlink` - * :meth:`~pathlib.Path.lchmod` - * :meth:`~pathlib.Path.lstat` - * :meth:`~pathlib.Path.mkdir` - * :meth:`~pathlib.Path.open` - * :meth:`~pathlib.Path.owner` - * :meth:`~pathlib.Path.read_bytes` - * :meth:`~pathlib.Path.read_text` - * :meth:`~pathlib.Path.readlink` - * :meth:`~pathlib.Path.rename` - * :meth:`~pathlib.Path.replace` - * :meth:`~pathlib.Path.resolve` - * :meth:`~pathlib.Path.rmdir` - * :meth:`~pathlib.Path.samefile` - * :meth:`~pathlib.Path.stat` - * :meth:`~pathlib.Path.symlink_to` - * :meth:`~pathlib.Path.touch` - * :meth:`~pathlib.Path.unlink` - * :meth:`~pathlib.Path.walk` - * :meth:`~pathlib.Path.write_bytes` - * :meth:`~pathlib.Path.write_text` - - Additionally, the following methods return an async iterator yielding - :class:`~.Path` objects: - - * :meth:`~pathlib.Path.glob` - * :meth:`~pathlib.Path.iterdir` - * :meth:`~pathlib.Path.rglob` - """ - - __slots__ = "_path", "__weakref__" - - __weakref__: Any - - def __init__(self, *args: str | PathLike[str]) -> None: - self._path: Final[pathlib.Path] = pathlib.Path(*args) - - def __fspath__(self) -> str: - return self._path.__fspath__() - - def __str__(self) -> str: - return self._path.__str__() - - def __repr__(self) -> str: - return f"{self.__class__.__name__}({self.as_posix()!r})" - - def __bytes__(self) -> bytes: - return self._path.__bytes__() - - def __hash__(self) -> int: - return self._path.__hash__() - - def __eq__(self, other: object) -> bool: - target = other._path if isinstance(other, Path) else other - return self._path.__eq__(target) - - def __lt__(self, other: pathlib.PurePath | Path) -> bool: - target = other._path if isinstance(other, Path) else other - return self._path.__lt__(target) - - def __le__(self, other: pathlib.PurePath | Path) -> bool: - target = other._path if isinstance(other, Path) else other - return self._path.__le__(target) - - def __gt__(self, other: pathlib.PurePath | Path) -> bool: - target = other._path if isinstance(other, Path) else other - return self._path.__gt__(target) - - def __ge__(self, other: pathlib.PurePath | Path) -> bool: - target = other._path if isinstance(other, Path) else other - return self._path.__ge__(target) - - def __truediv__(self, other: str | PathLike[str]) -> Path: - return Path(self._path / other) - - def __rtruediv__(self, other: str | PathLike[str]) -> Path: - return Path(other) / self - - @property - def parts(self) -> tuple[str, ...]: - return self._path.parts - - @property - def drive(self) -> str: - return self._path.drive - - @property - def root(self) -> str: - return self._path.root - - @property - def anchor(self) -> str: - return self._path.anchor - - @property - def parents(self) -> Sequence[Path]: - return tuple(Path(p) for p in self._path.parents) - - @property - def parent(self) -> Path: - return Path(self._path.parent) - - @property - def name(self) -> str: - return self._path.name - - @property - def suffix(self) -> str: - return self._path.suffix - - @property - def suffixes(self) -> list[str]: - return self._path.suffixes - - @property - def stem(self) -> str: - return self._path.stem - - async def absolute(self) -> Path: - path = await to_thread.run_sync(self._path.absolute) - return Path(path) - - def as_posix(self) -> str: - return self._path.as_posix() - - def as_uri(self) -> str: - return self._path.as_uri() - - if sys.version_info >= (3, 13): - parser: ClassVar[ModuleType] = pathlib.Path.parser - - @classmethod - def from_uri(cls, uri: str) -> Path: - return Path(pathlib.Path.from_uri(uri)) - - def full_match( - self, path_pattern: str, *, case_sensitive: bool | None = None - ) -> bool: - return self._path.full_match(path_pattern, case_sensitive=case_sensitive) - - def match( - self, path_pattern: str, *, case_sensitive: bool | None = None - ) -> bool: - return self._path.match(path_pattern, case_sensitive=case_sensitive) - else: - - def match(self, path_pattern: str) -> bool: - return self._path.match(path_pattern) - - if sys.version_info >= (3, 14): - - @property - def info(self) -> Any: # TODO: add return type annotation when Typeshed gets it - return self._path.info - - async def copy( - self, - target: str | os.PathLike[str], - *, - follow_symlinks: bool = True, - dirs_exist_ok: bool = False, - preserve_metadata: bool = False, - ) -> Path: - func = partial( - self._path.copy, - follow_symlinks=follow_symlinks, - dirs_exist_ok=dirs_exist_ok, - preserve_metadata=preserve_metadata, - ) - return Path(await to_thread.run_sync(func, target)) - - async def copy_into( - self, - target_dir: str | os.PathLike[str], - *, - follow_symlinks: bool = True, - dirs_exist_ok: bool = False, - preserve_metadata: bool = False, - ) -> Path: - func = partial( - self._path.copy_into, - follow_symlinks=follow_symlinks, - dirs_exist_ok=dirs_exist_ok, - preserve_metadata=preserve_metadata, - ) - return Path(await to_thread.run_sync(func, target_dir)) - - async def move(self, target: str | os.PathLike[str]) -> Path: - # Upstream does not handle anyio.Path properly as a PathLike - target = pathlib.Path(target) - return Path(await to_thread.run_sync(self._path.move, target)) - - async def move_into( - self, - target_dir: str | os.PathLike[str], - ) -> Path: - return Path(await to_thread.run_sync(self._path.move_into, target_dir)) - - def is_relative_to(self, other: str | PathLike[str]) -> bool: - try: - self.relative_to(other) - return True - except ValueError: - return False - - async def chmod(self, mode: int, *, follow_symlinks: bool = True) -> None: - func = partial(os.chmod, follow_symlinks=follow_symlinks) - return await to_thread.run_sync(func, self._path, mode) - - @classmethod - async def cwd(cls) -> Path: - path = await to_thread.run_sync(pathlib.Path.cwd) - return cls(path) - - async def exists(self) -> bool: - return await to_thread.run_sync(self._path.exists, abandon_on_cancel=True) - - async def expanduser(self) -> Path: - return Path( - await to_thread.run_sync(self._path.expanduser, abandon_on_cancel=True) - ) - - def glob(self, pattern: str) -> AsyncIterator[Path]: - gen = self._path.glob(pattern) - return _PathIterator(gen) - - async def group(self) -> str: - return await to_thread.run_sync(self._path.group, abandon_on_cancel=True) - - async def hardlink_to( - self, target: str | bytes | PathLike[str] | PathLike[bytes] - ) -> None: - if isinstance(target, Path): - target = target._path - - await to_thread.run_sync(os.link, target, self) - - @classmethod - async def home(cls) -> Path: - home_path = await to_thread.run_sync(pathlib.Path.home) - return cls(home_path) - - def is_absolute(self) -> bool: - return self._path.is_absolute() - - async def is_block_device(self) -> bool: - return await to_thread.run_sync( - self._path.is_block_device, abandon_on_cancel=True - ) - - async def is_char_device(self) -> bool: - return await to_thread.run_sync( - self._path.is_char_device, abandon_on_cancel=True - ) - - async def is_dir(self) -> bool: - return await to_thread.run_sync(self._path.is_dir, abandon_on_cancel=True) - - async def is_fifo(self) -> bool: - return await to_thread.run_sync(self._path.is_fifo, abandon_on_cancel=True) - - async def is_file(self) -> bool: - return await to_thread.run_sync(self._path.is_file, abandon_on_cancel=True) - - if sys.version_info >= (3, 12): - - async def is_junction(self) -> bool: - return await to_thread.run_sync(self._path.is_junction) - - async def is_mount(self) -> bool: - return await to_thread.run_sync( - os.path.ismount, self._path, abandon_on_cancel=True - ) - - def is_reserved(self) -> bool: - return self._path.is_reserved() - - async def is_socket(self) -> bool: - return await to_thread.run_sync(self._path.is_socket, abandon_on_cancel=True) - - async def is_symlink(self) -> bool: - return await to_thread.run_sync(self._path.is_symlink, abandon_on_cancel=True) - - async def iterdir(self) -> AsyncIterator[Path]: - gen = ( - self._path.iterdir() - if sys.version_info < (3, 13) - else await to_thread.run_sync(self._path.iterdir, abandon_on_cancel=True) - ) - async for path in _PathIterator(gen): - yield path - - def joinpath(self, *args: str | PathLike[str]) -> Path: - return Path(self._path.joinpath(*args)) - - async def lchmod(self, mode: int) -> None: - await to_thread.run_sync(self._path.lchmod, mode) - - async def lstat(self) -> os.stat_result: - return await to_thread.run_sync(self._path.lstat, abandon_on_cancel=True) - - async def mkdir( - self, mode: int = 0o777, parents: bool = False, exist_ok: bool = False - ) -> None: - await to_thread.run_sync(self._path.mkdir, mode, parents, exist_ok) - - @overload - async def open( - self, - mode: OpenBinaryMode, - buffering: int = ..., - encoding: str | None = ..., - errors: str | None = ..., - newline: str | None = ..., - ) -> AsyncFile[bytes]: ... - - @overload - async def open( - self, - mode: OpenTextMode = ..., - buffering: int = ..., - encoding: str | None = ..., - errors: str | None = ..., - newline: str | None = ..., - ) -> AsyncFile[str]: ... - - async def open( - self, - mode: str = "r", - buffering: int = -1, - encoding: str | None = None, - errors: str | None = None, - newline: str | None = None, - ) -> AsyncFile[Any]: - fp = await to_thread.run_sync( - self._path.open, mode, buffering, encoding, errors, newline - ) - return AsyncFile(fp) - - async def owner(self) -> str: - return await to_thread.run_sync(self._path.owner, abandon_on_cancel=True) - - async def read_bytes(self) -> bytes: - return await to_thread.run_sync(self._path.read_bytes) - - async def read_text( - self, encoding: str | None = None, errors: str | None = None - ) -> str: - return await to_thread.run_sync(self._path.read_text, encoding, errors) - - if sys.version_info >= (3, 12): - - def relative_to( - self, *other: str | PathLike[str], walk_up: bool = False - ) -> Path: - return Path(self._path.relative_to(*other, walk_up=walk_up)) - - else: - - def relative_to(self, *other: str | PathLike[str]) -> Path: - return Path(self._path.relative_to(*other)) - - async def readlink(self) -> Path: - target = await to_thread.run_sync(os.readlink, self._path) - return Path(target) - - async def rename(self, target: str | pathlib.PurePath | Path) -> Path: - if isinstance(target, Path): - target = target._path - - await to_thread.run_sync(self._path.rename, target) - return Path(target) - - async def replace(self, target: str | pathlib.PurePath | Path) -> Path: - if isinstance(target, Path): - target = target._path - - await to_thread.run_sync(self._path.replace, target) - return Path(target) - - async def resolve(self, strict: bool = False) -> Path: - func = partial(self._path.resolve, strict=strict) - return Path(await to_thread.run_sync(func, abandon_on_cancel=True)) - - def rglob(self, pattern: str) -> AsyncIterator[Path]: - gen = self._path.rglob(pattern) - return _PathIterator(gen) - - async def rmdir(self) -> None: - await to_thread.run_sync(self._path.rmdir) - - async def samefile(self, other_path: str | PathLike[str]) -> bool: - if isinstance(other_path, Path): - other_path = other_path._path - - return await to_thread.run_sync( - self._path.samefile, other_path, abandon_on_cancel=True - ) - - async def stat(self, *, follow_symlinks: bool = True) -> os.stat_result: - func = partial(os.stat, follow_symlinks=follow_symlinks) - return await to_thread.run_sync(func, self._path, abandon_on_cancel=True) - - async def symlink_to( - self, - target: str | bytes | PathLike[str] | PathLike[bytes], - target_is_directory: bool = False, - ) -> None: - if isinstance(target, Path): - target = target._path - - await to_thread.run_sync(self._path.symlink_to, target, target_is_directory) - - async def touch(self, mode: int = 0o666, exist_ok: bool = True) -> None: - await to_thread.run_sync(self._path.touch, mode, exist_ok) - - async def unlink(self, missing_ok: bool = False) -> None: - try: - await to_thread.run_sync(self._path.unlink) - except FileNotFoundError: - if not missing_ok: - raise - - if sys.version_info >= (3, 12): - - async def walk( - self, - top_down: bool = True, - on_error: Callable[[OSError], object] | None = None, - follow_symlinks: bool = False, - ) -> AsyncIterator[tuple[Path, list[str], list[str]]]: - def get_next_value() -> tuple[pathlib.Path, list[str], list[str]] | None: - try: - return next(gen) - except StopIteration: - return None - - gen = self._path.walk(top_down, on_error, follow_symlinks) - while True: - value = await to_thread.run_sync(get_next_value) - if value is None: - return - - root, dirs, paths = value - yield Path(root), dirs, paths - - def with_name(self, name: str) -> Path: - return Path(self._path.with_name(name)) - - def with_stem(self, stem: str) -> Path: - return Path(self._path.with_name(stem + self._path.suffix)) - - def with_suffix(self, suffix: str) -> Path: - return Path(self._path.with_suffix(suffix)) - - def with_segments(self, *pathsegments: str | PathLike[str]) -> Path: - return Path(*pathsegments) - - async def write_bytes(self, data: bytes) -> int: - return await to_thread.run_sync(self._path.write_bytes, data) - - async def write_text( - self, - data: str, - encoding: str | None = None, - errors: str | None = None, - newline: str | None = None, - ) -> int: - # Path.write_text() does not support the "newline" parameter before Python 3.10 - def sync_write_text() -> int: - with self._path.open( - "w", encoding=encoding, errors=errors, newline=newline - ) as fp: - return fp.write(data) - - return await to_thread.run_sync(sync_write_text) - - -PathLike.register(Path) diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_resources.py b/venv/lib/python3.12/site-packages/anyio/_core/_resources.py deleted file mode 100644 index b9a5344..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_resources.py +++ /dev/null @@ -1,18 +0,0 @@ -from __future__ import annotations - -from ..abc import AsyncResource -from ._tasks import CancelScope - - -async def aclose_forcefully(resource: AsyncResource) -> None: - """ - Close an asynchronous resource in a cancelled scope. - - Doing this closes the resource without waiting on anything. - - :param resource: the resource to close - - """ - with CancelScope() as scope: - scope.cancel() - await resource.aclose() diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_signals.py b/venv/lib/python3.12/site-packages/anyio/_core/_signals.py deleted file mode 100644 index f3451d3..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_signals.py +++ /dev/null @@ -1,27 +0,0 @@ -from __future__ import annotations - -from collections.abc import AsyncIterator -from contextlib import AbstractContextManager -from signal import Signals - -from ._eventloop import get_async_backend - - -def open_signal_receiver( - *signals: Signals, -) -> AbstractContextManager[AsyncIterator[Signals]]: - """ - Start receiving operating system signals. - - :param signals: signals to receive (e.g. ``signal.SIGINT``) - :return: an asynchronous context manager for an asynchronous iterator which yields - signal numbers - - .. warning:: Windows does not support signals natively so it is best to avoid - relying on this in cross-platform applications. - - .. warning:: On asyncio, this permanently replaces any previous signal handler for - the given signals, as set via :meth:`~asyncio.loop.add_signal_handler`. - - """ - return get_async_backend().open_signal_receiver(*signals) diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_sockets.py b/venv/lib/python3.12/site-packages/anyio/_core/_sockets.py deleted file mode 100644 index 054bcdd..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_sockets.py +++ /dev/null @@ -1,792 +0,0 @@ -from __future__ import annotations - -import errno -import os -import socket -import ssl -import stat -import sys -from collections.abc import Awaitable -from ipaddress import IPv6Address, ip_address -from os import PathLike, chmod -from socket import AddressFamily, SocketKind -from typing import TYPE_CHECKING, Any, Literal, cast, overload - -from .. import to_thread -from ..abc import ( - ConnectedUDPSocket, - ConnectedUNIXDatagramSocket, - IPAddressType, - IPSockAddrType, - SocketListener, - SocketStream, - UDPSocket, - UNIXDatagramSocket, - UNIXSocketStream, -) -from ..streams.stapled import MultiListener -from ..streams.tls import TLSStream -from ._eventloop import get_async_backend -from ._resources import aclose_forcefully -from ._synchronization import Event -from ._tasks import create_task_group, move_on_after - -if TYPE_CHECKING: - from _typeshed import FileDescriptorLike -else: - FileDescriptorLike = object - -if sys.version_info < (3, 11): - from exceptiongroup import ExceptionGroup - -if sys.version_info < (3, 13): - from typing_extensions import deprecated -else: - from warnings import deprecated - -IPPROTO_IPV6 = getattr(socket, "IPPROTO_IPV6", 41) # https://bugs.python.org/issue29515 - -AnyIPAddressFamily = Literal[ - AddressFamily.AF_UNSPEC, AddressFamily.AF_INET, AddressFamily.AF_INET6 -] -IPAddressFamily = Literal[AddressFamily.AF_INET, AddressFamily.AF_INET6] - - -# tls_hostname given -@overload -async def connect_tcp( - remote_host: IPAddressType, - remote_port: int, - *, - local_host: IPAddressType | None = ..., - ssl_context: ssl.SSLContext | None = ..., - tls_standard_compatible: bool = ..., - tls_hostname: str, - happy_eyeballs_delay: float = ..., -) -> TLSStream: ... - - -# ssl_context given -@overload -async def connect_tcp( - remote_host: IPAddressType, - remote_port: int, - *, - local_host: IPAddressType | None = ..., - ssl_context: ssl.SSLContext, - tls_standard_compatible: bool = ..., - tls_hostname: str | None = ..., - happy_eyeballs_delay: float = ..., -) -> TLSStream: ... - - -# tls=True -@overload -async def connect_tcp( - remote_host: IPAddressType, - remote_port: int, - *, - local_host: IPAddressType | None = ..., - tls: Literal[True], - ssl_context: ssl.SSLContext | None = ..., - tls_standard_compatible: bool = ..., - tls_hostname: str | None = ..., - happy_eyeballs_delay: float = ..., -) -> TLSStream: ... - - -# tls=False -@overload -async def connect_tcp( - remote_host: IPAddressType, - remote_port: int, - *, - local_host: IPAddressType | None = ..., - tls: Literal[False], - ssl_context: ssl.SSLContext | None = ..., - tls_standard_compatible: bool = ..., - tls_hostname: str | None = ..., - happy_eyeballs_delay: float = ..., -) -> SocketStream: ... - - -# No TLS arguments -@overload -async def connect_tcp( - remote_host: IPAddressType, - remote_port: int, - *, - local_host: IPAddressType | None = ..., - happy_eyeballs_delay: float = ..., -) -> SocketStream: ... - - -async def connect_tcp( - remote_host: IPAddressType, - remote_port: int, - *, - local_host: IPAddressType | None = None, - tls: bool = False, - ssl_context: ssl.SSLContext | None = None, - tls_standard_compatible: bool = True, - tls_hostname: str | None = None, - happy_eyeballs_delay: float = 0.25, -) -> SocketStream | TLSStream: - """ - Connect to a host using the TCP protocol. - - This function implements the stateless version of the Happy Eyeballs algorithm (RFC - 6555). If ``remote_host`` is a host name that resolves to multiple IP addresses, - each one is tried until one connection attempt succeeds. If the first attempt does - not connected within 250 milliseconds, a second attempt is started using the next - address in the list, and so on. On IPv6 enabled systems, an IPv6 address (if - available) is tried first. - - When the connection has been established, a TLS handshake will be done if either - ``ssl_context`` or ``tls_hostname`` is not ``None``, or if ``tls`` is ``True``. - - :param remote_host: the IP address or host name to connect to - :param remote_port: port on the target host to connect to - :param local_host: the interface address or name to bind the socket to before - connecting - :param tls: ``True`` to do a TLS handshake with the connected stream and return a - :class:`~anyio.streams.tls.TLSStream` instead - :param ssl_context: the SSL context object to use (if omitted, a default context is - created) - :param tls_standard_compatible: If ``True``, performs the TLS shutdown handshake - before closing the stream and requires that the server does this as well. - Otherwise, :exc:`~ssl.SSLEOFError` may be raised during reads from the stream. - Some protocols, such as HTTP, require this option to be ``False``. - See :meth:`~ssl.SSLContext.wrap_socket` for details. - :param tls_hostname: host name to check the server certificate against (defaults to - the value of ``remote_host``) - :param happy_eyeballs_delay: delay (in seconds) before starting the next connection - attempt - :return: a socket stream object if no TLS handshake was done, otherwise a TLS stream - :raises OSError: if the connection attempt fails - - """ - # Placed here due to https://github.com/python/mypy/issues/7057 - connected_stream: SocketStream | None = None - - async def try_connect(remote_host: str, event: Event) -> None: - nonlocal connected_stream - try: - stream = await asynclib.connect_tcp(remote_host, remote_port, local_address) - except OSError as exc: - oserrors.append(exc) - return - else: - if connected_stream is None: - connected_stream = stream - tg.cancel_scope.cancel() - else: - await stream.aclose() - finally: - event.set() - - asynclib = get_async_backend() - local_address: IPSockAddrType | None = None - family = socket.AF_UNSPEC - if local_host: - gai_res = await getaddrinfo(str(local_host), None) - family, *_, local_address = gai_res[0] - - target_host = str(remote_host) - try: - addr_obj = ip_address(remote_host) - except ValueError: - addr_obj = None - - if addr_obj is not None: - if isinstance(addr_obj, IPv6Address): - target_addrs = [(socket.AF_INET6, addr_obj.compressed)] - else: - target_addrs = [(socket.AF_INET, addr_obj.compressed)] - else: - # getaddrinfo() will raise an exception if name resolution fails - gai_res = await getaddrinfo( - target_host, remote_port, family=family, type=socket.SOCK_STREAM - ) - - # Organize the list so that the first address is an IPv6 address (if available) - # and the second one is an IPv4 addresses. The rest can be in whatever order. - v6_found = v4_found = False - target_addrs = [] - for af, *rest, sa in gai_res: - if af == socket.AF_INET6 and not v6_found: - v6_found = True - target_addrs.insert(0, (af, sa[0])) - elif af == socket.AF_INET and not v4_found and v6_found: - v4_found = True - target_addrs.insert(1, (af, sa[0])) - else: - target_addrs.append((af, sa[0])) - - oserrors: list[OSError] = [] - try: - async with create_task_group() as tg: - for i, (af, addr) in enumerate(target_addrs): - event = Event() - tg.start_soon(try_connect, addr, event) - with move_on_after(happy_eyeballs_delay): - await event.wait() - - if connected_stream is None: - cause = ( - oserrors[0] - if len(oserrors) == 1 - else ExceptionGroup("multiple connection attempts failed", oserrors) - ) - raise OSError("All connection attempts failed") from cause - finally: - oserrors.clear() - - if tls or tls_hostname or ssl_context: - try: - return await TLSStream.wrap( - connected_stream, - server_side=False, - hostname=tls_hostname or str(remote_host), - ssl_context=ssl_context, - standard_compatible=tls_standard_compatible, - ) - except BaseException: - await aclose_forcefully(connected_stream) - raise - - return connected_stream - - -async def connect_unix(path: str | bytes | PathLike[Any]) -> UNIXSocketStream: - """ - Connect to the given UNIX socket. - - Not available on Windows. - - :param path: path to the socket - :return: a socket stream object - - """ - path = os.fspath(path) - return await get_async_backend().connect_unix(path) - - -async def create_tcp_listener( - *, - local_host: IPAddressType | None = None, - local_port: int = 0, - family: AnyIPAddressFamily = socket.AddressFamily.AF_UNSPEC, - backlog: int = 65536, - reuse_port: bool = False, -) -> MultiListener[SocketStream]: - """ - Create a TCP socket listener. - - :param local_port: port number to listen on - :param local_host: IP address of the interface to listen on. If omitted, listen on - all IPv4 and IPv6 interfaces. To listen on all interfaces on a specific address - family, use ``0.0.0.0`` for IPv4 or ``::`` for IPv6. - :param family: address family (used if ``local_host`` was omitted) - :param backlog: maximum number of queued incoming connections (up to a maximum of - 2**16, or 65536) - :param reuse_port: ``True`` to allow multiple sockets to bind to the same - address/port (not supported on Windows) - :return: a list of listener objects - - """ - asynclib = get_async_backend() - backlog = min(backlog, 65536) - local_host = str(local_host) if local_host is not None else None - gai_res = await getaddrinfo( - local_host, - local_port, - family=family, - type=socket.SocketKind.SOCK_STREAM if sys.platform == "win32" else 0, - flags=socket.AI_PASSIVE | socket.AI_ADDRCONFIG, - ) - listeners: list[SocketListener] = [] - try: - # The set() is here to work around a glibc bug: - # https://sourceware.org/bugzilla/show_bug.cgi?id=14969 - sockaddr: tuple[str, int] | tuple[str, int, int, int] - for fam, kind, *_, sockaddr in sorted(set(gai_res)): - # Workaround for an uvloop bug where we don't get the correct scope ID for - # IPv6 link-local addresses when passing type=socket.SOCK_STREAM to - # getaddrinfo(): https://github.com/MagicStack/uvloop/issues/539 - if sys.platform != "win32" and kind is not SocketKind.SOCK_STREAM: - continue - - raw_socket = socket.socket(fam) - raw_socket.setblocking(False) - - # For Windows, enable exclusive address use. For others, enable address - # reuse. - if sys.platform == "win32": - raw_socket.setsockopt(socket.SOL_SOCKET, socket.SO_EXCLUSIVEADDRUSE, 1) - else: - raw_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - - if reuse_port: - raw_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) - - # If only IPv6 was requested, disable dual stack operation - if fam == socket.AF_INET6: - raw_socket.setsockopt(IPPROTO_IPV6, socket.IPV6_V6ONLY, 1) - - # Workaround for #554 - if "%" in sockaddr[0]: - addr, scope_id = sockaddr[0].split("%", 1) - sockaddr = (addr, sockaddr[1], 0, int(scope_id)) - - raw_socket.bind(sockaddr) - raw_socket.listen(backlog) - listener = asynclib.create_tcp_listener(raw_socket) - listeners.append(listener) - except BaseException: - for listener in listeners: - await listener.aclose() - - raise - - return MultiListener(listeners) - - -async def create_unix_listener( - path: str | bytes | PathLike[Any], - *, - mode: int | None = None, - backlog: int = 65536, -) -> SocketListener: - """ - Create a UNIX socket listener. - - Not available on Windows. - - :param path: path of the socket - :param mode: permissions to set on the socket - :param backlog: maximum number of queued incoming connections (up to a maximum of - 2**16, or 65536) - :return: a listener object - - .. versionchanged:: 3.0 - If a socket already exists on the file system in the given path, it will be - removed first. - - """ - backlog = min(backlog, 65536) - raw_socket = await setup_unix_local_socket(path, mode, socket.SOCK_STREAM) - try: - raw_socket.listen(backlog) - return get_async_backend().create_unix_listener(raw_socket) - except BaseException: - raw_socket.close() - raise - - -async def create_udp_socket( - family: AnyIPAddressFamily = AddressFamily.AF_UNSPEC, - *, - local_host: IPAddressType | None = None, - local_port: int = 0, - reuse_port: bool = False, -) -> UDPSocket: - """ - Create a UDP socket. - - If ``port`` has been given, the socket will be bound to this port on the local - machine, making this socket suitable for providing UDP based services. - - :param family: address family (``AF_INET`` or ``AF_INET6``) – automatically - determined from ``local_host`` if omitted - :param local_host: IP address or host name of the local interface to bind to - :param local_port: local port to bind to - :param reuse_port: ``True`` to allow multiple sockets to bind to the same - address/port (not supported on Windows) - :return: a UDP socket - - """ - if family is AddressFamily.AF_UNSPEC and not local_host: - raise ValueError('Either "family" or "local_host" must be given') - - if local_host: - gai_res = await getaddrinfo( - str(local_host), - local_port, - family=family, - type=socket.SOCK_DGRAM, - flags=socket.AI_PASSIVE | socket.AI_ADDRCONFIG, - ) - family = cast(AnyIPAddressFamily, gai_res[0][0]) - local_address = gai_res[0][-1] - elif family is AddressFamily.AF_INET6: - local_address = ("::", 0) - else: - local_address = ("0.0.0.0", 0) - - sock = await get_async_backend().create_udp_socket( - family, local_address, None, reuse_port - ) - return cast(UDPSocket, sock) - - -async def create_connected_udp_socket( - remote_host: IPAddressType, - remote_port: int, - *, - family: AnyIPAddressFamily = AddressFamily.AF_UNSPEC, - local_host: IPAddressType | None = None, - local_port: int = 0, - reuse_port: bool = False, -) -> ConnectedUDPSocket: - """ - Create a connected UDP socket. - - Connected UDP sockets can only communicate with the specified remote host/port, an - any packets sent from other sources are dropped. - - :param remote_host: remote host to set as the default target - :param remote_port: port on the remote host to set as the default target - :param family: address family (``AF_INET`` or ``AF_INET6``) – automatically - determined from ``local_host`` or ``remote_host`` if omitted - :param local_host: IP address or host name of the local interface to bind to - :param local_port: local port to bind to - :param reuse_port: ``True`` to allow multiple sockets to bind to the same - address/port (not supported on Windows) - :return: a connected UDP socket - - """ - local_address = None - if local_host: - gai_res = await getaddrinfo( - str(local_host), - local_port, - family=family, - type=socket.SOCK_DGRAM, - flags=socket.AI_PASSIVE | socket.AI_ADDRCONFIG, - ) - family = cast(AnyIPAddressFamily, gai_res[0][0]) - local_address = gai_res[0][-1] - - gai_res = await getaddrinfo( - str(remote_host), remote_port, family=family, type=socket.SOCK_DGRAM - ) - family = cast(AnyIPAddressFamily, gai_res[0][0]) - remote_address = gai_res[0][-1] - - sock = await get_async_backend().create_udp_socket( - family, local_address, remote_address, reuse_port - ) - return cast(ConnectedUDPSocket, sock) - - -async def create_unix_datagram_socket( - *, - local_path: None | str | bytes | PathLike[Any] = None, - local_mode: int | None = None, -) -> UNIXDatagramSocket: - """ - Create a UNIX datagram socket. - - Not available on Windows. - - If ``local_path`` has been given, the socket will be bound to this path, making this - socket suitable for receiving datagrams from other processes. Other processes can - send datagrams to this socket only if ``local_path`` is set. - - If a socket already exists on the file system in the ``local_path``, it will be - removed first. - - :param local_path: the path on which to bind to - :param local_mode: permissions to set on the local socket - :return: a UNIX datagram socket - - """ - raw_socket = await setup_unix_local_socket( - local_path, local_mode, socket.SOCK_DGRAM - ) - return await get_async_backend().create_unix_datagram_socket(raw_socket, None) - - -async def create_connected_unix_datagram_socket( - remote_path: str | bytes | PathLike[Any], - *, - local_path: None | str | bytes | PathLike[Any] = None, - local_mode: int | None = None, -) -> ConnectedUNIXDatagramSocket: - """ - Create a connected UNIX datagram socket. - - Connected datagram sockets can only communicate with the specified remote path. - - If ``local_path`` has been given, the socket will be bound to this path, making - this socket suitable for receiving datagrams from other processes. Other processes - can send datagrams to this socket only if ``local_path`` is set. - - If a socket already exists on the file system in the ``local_path``, it will be - removed first. - - :param remote_path: the path to set as the default target - :param local_path: the path on which to bind to - :param local_mode: permissions to set on the local socket - :return: a connected UNIX datagram socket - - """ - remote_path = os.fspath(remote_path) - raw_socket = await setup_unix_local_socket( - local_path, local_mode, socket.SOCK_DGRAM - ) - return await get_async_backend().create_unix_datagram_socket( - raw_socket, remote_path - ) - - -async def getaddrinfo( - host: bytes | str | None, - port: str | int | None, - *, - family: int | AddressFamily = 0, - type: int | SocketKind = 0, - proto: int = 0, - flags: int = 0, -) -> list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int]]]: - """ - Look up a numeric IP address given a host name. - - Internationalized domain names are translated according to the (non-transitional) - IDNA 2008 standard. - - .. note:: 4-tuple IPv6 socket addresses are automatically converted to 2-tuples of - (host, port), unlike what :func:`socket.getaddrinfo` does. - - :param host: host name - :param port: port number - :param family: socket family (`'AF_INET``, ...) - :param type: socket type (``SOCK_STREAM``, ...) - :param proto: protocol number - :param flags: flags to pass to upstream ``getaddrinfo()`` - :return: list of tuples containing (family, type, proto, canonname, sockaddr) - - .. seealso:: :func:`socket.getaddrinfo` - - """ - # Handle unicode hostnames - if isinstance(host, str): - try: - encoded_host: bytes | None = host.encode("ascii") - except UnicodeEncodeError: - import idna - - encoded_host = idna.encode(host, uts46=True) - else: - encoded_host = host - - gai_res = await get_async_backend().getaddrinfo( - encoded_host, port, family=family, type=type, proto=proto, flags=flags - ) - return [ - (family, type, proto, canonname, convert_ipv6_sockaddr(sockaddr)) - for family, type, proto, canonname, sockaddr in gai_res - # filter out IPv6 results when IPv6 is disabled - if not isinstance(sockaddr[0], int) - ] - - -def getnameinfo(sockaddr: IPSockAddrType, flags: int = 0) -> Awaitable[tuple[str, str]]: - """ - Look up the host name of an IP address. - - :param sockaddr: socket address (e.g. (ipaddress, port) for IPv4) - :param flags: flags to pass to upstream ``getnameinfo()`` - :return: a tuple of (host name, service name) - - .. seealso:: :func:`socket.getnameinfo` - - """ - return get_async_backend().getnameinfo(sockaddr, flags) - - -@deprecated("This function is deprecated; use `wait_readable` instead") -def wait_socket_readable(sock: socket.socket) -> Awaitable[None]: - """ - .. deprecated:: 4.7.0 - Use :func:`wait_readable` instead. - - Wait until the given socket has data to be read. - - .. warning:: Only use this on raw sockets that have not been wrapped by any higher - level constructs like socket streams! - - :param sock: a socket object - :raises ~anyio.ClosedResourceError: if the socket was closed while waiting for the - socket to become readable - :raises ~anyio.BusyResourceError: if another task is already waiting for the socket - to become readable - - """ - return get_async_backend().wait_readable(sock.fileno()) - - -@deprecated("This function is deprecated; use `wait_writable` instead") -def wait_socket_writable(sock: socket.socket) -> Awaitable[None]: - """ - .. deprecated:: 4.7.0 - Use :func:`wait_writable` instead. - - Wait until the given socket can be written to. - - This does **NOT** work on Windows when using the asyncio backend with a proactor - event loop (default on py3.8+). - - .. warning:: Only use this on raw sockets that have not been wrapped by any higher - level constructs like socket streams! - - :param sock: a socket object - :raises ~anyio.ClosedResourceError: if the socket was closed while waiting for the - socket to become writable - :raises ~anyio.BusyResourceError: if another task is already waiting for the socket - to become writable - - """ - return get_async_backend().wait_writable(sock.fileno()) - - -def wait_readable(obj: FileDescriptorLike) -> Awaitable[None]: - """ - Wait until the given object has data to be read. - - On Unix systems, ``obj`` must either be an integer file descriptor, or else an - object with a ``.fileno()`` method which returns an integer file descriptor. Any - kind of file descriptor can be passed, though the exact semantics will depend on - your kernel. For example, this probably won't do anything useful for on-disk files. - - On Windows systems, ``obj`` must either be an integer ``SOCKET`` handle, or else an - object with a ``.fileno()`` method which returns an integer ``SOCKET`` handle. File - descriptors aren't supported, and neither are handles that refer to anything besides - a ``SOCKET``. - - On backends where this functionality is not natively provided (asyncio - ``ProactorEventLoop`` on Windows), it is provided using a separate selector thread - which is set to shut down when the interpreter shuts down. - - .. warning:: Don't use this on raw sockets that have been wrapped by any higher - level constructs like socket streams! - - :param obj: an object with a ``.fileno()`` method or an integer handle - :raises ~anyio.ClosedResourceError: if the object was closed while waiting for the - object to become readable - :raises ~anyio.BusyResourceError: if another task is already waiting for the object - to become readable - - """ - return get_async_backend().wait_readable(obj) - - -def wait_writable(obj: FileDescriptorLike) -> Awaitable[None]: - """ - Wait until the given object can be written to. - - :param obj: an object with a ``.fileno()`` method or an integer handle - :raises ~anyio.ClosedResourceError: if the object was closed while waiting for the - object to become writable - :raises ~anyio.BusyResourceError: if another task is already waiting for the object - to become writable - - .. seealso:: See the documentation of :func:`wait_readable` for the definition of - ``obj`` and notes on backend compatibility. - - .. warning:: Don't use this on raw sockets that have been wrapped by any higher - level constructs like socket streams! - - """ - return get_async_backend().wait_writable(obj) - - -# -# Private API -# - - -def convert_ipv6_sockaddr( - sockaddr: tuple[str, int, int, int] | tuple[str, int], -) -> tuple[str, int]: - """ - Convert a 4-tuple IPv6 socket address to a 2-tuple (address, port) format. - - If the scope ID is nonzero, it is added to the address, separated with ``%``. - Otherwise the flow id and scope id are simply cut off from the tuple. - Any other kinds of socket addresses are returned as-is. - - :param sockaddr: the result of :meth:`~socket.socket.getsockname` - :return: the converted socket address - - """ - # This is more complicated than it should be because of MyPy - if isinstance(sockaddr, tuple) and len(sockaddr) == 4: - host, port, flowinfo, scope_id = sockaddr - if scope_id: - # PyPy (as of v7.3.11) leaves the interface name in the result, so - # we discard it and only get the scope ID from the end - # (https://foss.heptapod.net/pypy/pypy/-/issues/3938) - host = host.split("%")[0] - - # Add scope_id to the address - return f"{host}%{scope_id}", port - else: - return host, port - else: - return sockaddr - - -async def setup_unix_local_socket( - path: None | str | bytes | PathLike[Any], - mode: int | None, - socktype: int, -) -> socket.socket: - """ - Create a UNIX local socket object, deleting the socket at the given path if it - exists. - - Not available on Windows. - - :param path: path of the socket - :param mode: permissions to set on the socket - :param socktype: socket.SOCK_STREAM or socket.SOCK_DGRAM - - """ - path_str: str | None - if path is not None: - path_str = os.fsdecode(path) - - # Linux abstract namespace sockets aren't backed by a concrete file so skip stat call - if not path_str.startswith("\0"): - # Copied from pathlib... - try: - stat_result = os.stat(path) - except OSError as e: - if e.errno not in ( - errno.ENOENT, - errno.ENOTDIR, - errno.EBADF, - errno.ELOOP, - ): - raise - else: - if stat.S_ISSOCK(stat_result.st_mode): - os.unlink(path) - else: - path_str = None - - raw_socket = socket.socket(socket.AF_UNIX, socktype) - raw_socket.setblocking(False) - - if path_str is not None: - try: - await to_thread.run_sync(raw_socket.bind, path_str, abandon_on_cancel=True) - if mode is not None: - await to_thread.run_sync(chmod, path_str, mode, abandon_on_cancel=True) - except BaseException: - raw_socket.close() - raise - - return raw_socket diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_streams.py b/venv/lib/python3.12/site-packages/anyio/_core/_streams.py deleted file mode 100644 index 6a9814e..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_streams.py +++ /dev/null @@ -1,52 +0,0 @@ -from __future__ import annotations - -import math -from typing import TypeVar -from warnings import warn - -from ..streams.memory import ( - MemoryObjectReceiveStream, - MemoryObjectSendStream, - MemoryObjectStreamState, -) - -T_Item = TypeVar("T_Item") - - -class create_memory_object_stream( - tuple[MemoryObjectSendStream[T_Item], MemoryObjectReceiveStream[T_Item]], -): - """ - Create a memory object stream. - - The stream's item type can be annotated like - :func:`create_memory_object_stream[T_Item]`. - - :param max_buffer_size: number of items held in the buffer until ``send()`` starts - blocking - :param item_type: old way of marking the streams with the right generic type for - static typing (does nothing on AnyIO 4) - - .. deprecated:: 4.0 - Use ``create_memory_object_stream[YourItemType](...)`` instead. - :return: a tuple of (send stream, receive stream) - - """ - - def __new__( # type: ignore[misc] - cls, max_buffer_size: float = 0, item_type: object = None - ) -> tuple[MemoryObjectSendStream[T_Item], MemoryObjectReceiveStream[T_Item]]: - if max_buffer_size != math.inf and not isinstance(max_buffer_size, int): - raise ValueError("max_buffer_size must be either an integer or math.inf") - if max_buffer_size < 0: - raise ValueError("max_buffer_size cannot be negative") - if item_type is not None: - warn( - "The item_type argument has been deprecated in AnyIO 4.0. " - "Use create_memory_object_stream[YourItemType](...) instead.", - DeprecationWarning, - stacklevel=2, - ) - - state = MemoryObjectStreamState[T_Item](max_buffer_size) - return (MemoryObjectSendStream(state), MemoryObjectReceiveStream(state)) diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_subprocesses.py b/venv/lib/python3.12/site-packages/anyio/_core/_subprocesses.py deleted file mode 100644 index 36d9b30..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_subprocesses.py +++ /dev/null @@ -1,202 +0,0 @@ -from __future__ import annotations - -import sys -from collections.abc import AsyncIterable, Iterable, Mapping, Sequence -from io import BytesIO -from os import PathLike -from subprocess import PIPE, CalledProcessError, CompletedProcess -from typing import IO, Any, Union, cast - -from ..abc import Process -from ._eventloop import get_async_backend -from ._tasks import create_task_group - -if sys.version_info >= (3, 10): - from typing import TypeAlias -else: - from typing_extensions import TypeAlias - -StrOrBytesPath: TypeAlias = Union[str, bytes, "PathLike[str]", "PathLike[bytes]"] - - -async def run_process( - command: StrOrBytesPath | Sequence[StrOrBytesPath], - *, - input: bytes | None = None, - stdin: int | IO[Any] | None = None, - stdout: int | IO[Any] | None = PIPE, - stderr: int | IO[Any] | None = PIPE, - check: bool = True, - cwd: StrOrBytesPath | None = None, - env: Mapping[str, str] | None = None, - startupinfo: Any = None, - creationflags: int = 0, - start_new_session: bool = False, - pass_fds: Sequence[int] = (), - user: str | int | None = None, - group: str | int | None = None, - extra_groups: Iterable[str | int] | None = None, - umask: int = -1, -) -> CompletedProcess[bytes]: - """ - Run an external command in a subprocess and wait until it completes. - - .. seealso:: :func:`subprocess.run` - - :param command: either a string to pass to the shell, or an iterable of strings - containing the executable name or path and its arguments - :param input: bytes passed to the standard input of the subprocess - :param stdin: one of :data:`subprocess.PIPE`, :data:`subprocess.DEVNULL`, - a file-like object, or `None`; ``input`` overrides this - :param stdout: one of :data:`subprocess.PIPE`, :data:`subprocess.DEVNULL`, - a file-like object, or `None` - :param stderr: one of :data:`subprocess.PIPE`, :data:`subprocess.DEVNULL`, - :data:`subprocess.STDOUT`, a file-like object, or `None` - :param check: if ``True``, raise :exc:`~subprocess.CalledProcessError` if the - process terminates with a return code other than 0 - :param cwd: If not ``None``, change the working directory to this before running the - command - :param env: if not ``None``, this mapping replaces the inherited environment - variables from the parent process - :param startupinfo: an instance of :class:`subprocess.STARTUPINFO` that can be used - to specify process startup parameters (Windows only) - :param creationflags: flags that can be used to control the creation of the - subprocess (see :class:`subprocess.Popen` for the specifics) - :param start_new_session: if ``true`` the setsid() system call will be made in the - child process prior to the execution of the subprocess. (POSIX only) - :param pass_fds: sequence of file descriptors to keep open between the parent and - child processes. (POSIX only) - :param user: effective user to run the process as (Python >= 3.9, POSIX only) - :param group: effective group to run the process as (Python >= 3.9, POSIX only) - :param extra_groups: supplementary groups to set in the subprocess (Python >= 3.9, - POSIX only) - :param umask: if not negative, this umask is applied in the child process before - running the given command (Python >= 3.9, POSIX only) - :return: an object representing the completed process - :raises ~subprocess.CalledProcessError: if ``check`` is ``True`` and the process - exits with a nonzero return code - - """ - - async def drain_stream(stream: AsyncIterable[bytes], index: int) -> None: - buffer = BytesIO() - async for chunk in stream: - buffer.write(chunk) - - stream_contents[index] = buffer.getvalue() - - if stdin is not None and input is not None: - raise ValueError("only one of stdin and input is allowed") - - async with await open_process( - command, - stdin=PIPE if input else stdin, - stdout=stdout, - stderr=stderr, - cwd=cwd, - env=env, - startupinfo=startupinfo, - creationflags=creationflags, - start_new_session=start_new_session, - pass_fds=pass_fds, - user=user, - group=group, - extra_groups=extra_groups, - umask=umask, - ) as process: - stream_contents: list[bytes | None] = [None, None] - async with create_task_group() as tg: - if process.stdout: - tg.start_soon(drain_stream, process.stdout, 0) - - if process.stderr: - tg.start_soon(drain_stream, process.stderr, 1) - - if process.stdin and input: - await process.stdin.send(input) - await process.stdin.aclose() - - await process.wait() - - output, errors = stream_contents - if check and process.returncode != 0: - raise CalledProcessError(cast(int, process.returncode), command, output, errors) - - return CompletedProcess(command, cast(int, process.returncode), output, errors) - - -async def open_process( - command: StrOrBytesPath | Sequence[StrOrBytesPath], - *, - stdin: int | IO[Any] | None = PIPE, - stdout: int | IO[Any] | None = PIPE, - stderr: int | IO[Any] | None = PIPE, - cwd: StrOrBytesPath | None = None, - env: Mapping[str, str] | None = None, - startupinfo: Any = None, - creationflags: int = 0, - start_new_session: bool = False, - pass_fds: Sequence[int] = (), - user: str | int | None = None, - group: str | int | None = None, - extra_groups: Iterable[str | int] | None = None, - umask: int = -1, -) -> Process: - """ - Start an external command in a subprocess. - - .. seealso:: :class:`subprocess.Popen` - - :param command: either a string to pass to the shell, or an iterable of strings - containing the executable name or path and its arguments - :param stdin: one of :data:`subprocess.PIPE`, :data:`subprocess.DEVNULL`, a - file-like object, or ``None`` - :param stdout: one of :data:`subprocess.PIPE`, :data:`subprocess.DEVNULL`, - a file-like object, or ``None`` - :param stderr: one of :data:`subprocess.PIPE`, :data:`subprocess.DEVNULL`, - :data:`subprocess.STDOUT`, a file-like object, or ``None`` - :param cwd: If not ``None``, the working directory is changed before executing - :param env: If env is not ``None``, it must be a mapping that defines the - environment variables for the new process - :param creationflags: flags that can be used to control the creation of the - subprocess (see :class:`subprocess.Popen` for the specifics) - :param startupinfo: an instance of :class:`subprocess.STARTUPINFO` that can be used - to specify process startup parameters (Windows only) - :param start_new_session: if ``true`` the setsid() system call will be made in the - child process prior to the execution of the subprocess. (POSIX only) - :param pass_fds: sequence of file descriptors to keep open between the parent and - child processes. (POSIX only) - :param user: effective user to run the process as (POSIX only) - :param group: effective group to run the process as (POSIX only) - :param extra_groups: supplementary groups to set in the subprocess (POSIX only) - :param umask: if not negative, this umask is applied in the child process before - running the given command (POSIX only) - :return: an asynchronous process object - - """ - kwargs: dict[str, Any] = {} - if user is not None: - kwargs["user"] = user - - if group is not None: - kwargs["group"] = group - - if extra_groups is not None: - kwargs["extra_groups"] = group - - if umask >= 0: - kwargs["umask"] = umask - - return await get_async_backend().open_process( - command, - stdin=stdin, - stdout=stdout, - stderr=stderr, - cwd=cwd, - env=env, - startupinfo=startupinfo, - creationflags=creationflags, - start_new_session=start_new_session, - pass_fds=pass_fds, - **kwargs, - ) diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_synchronization.py b/venv/lib/python3.12/site-packages/anyio/_core/_synchronization.py deleted file mode 100644 index a633132..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_synchronization.py +++ /dev/null @@ -1,732 +0,0 @@ -from __future__ import annotations - -import math -from collections import deque -from dataclasses import dataclass -from types import TracebackType - -from sniffio import AsyncLibraryNotFoundError - -from ..lowlevel import checkpoint -from ._eventloop import get_async_backend -from ._exceptions import BusyResourceError -from ._tasks import CancelScope -from ._testing import TaskInfo, get_current_task - - -@dataclass(frozen=True) -class EventStatistics: - """ - :ivar int tasks_waiting: number of tasks waiting on :meth:`~.Event.wait` - """ - - tasks_waiting: int - - -@dataclass(frozen=True) -class CapacityLimiterStatistics: - """ - :ivar int borrowed_tokens: number of tokens currently borrowed by tasks - :ivar float total_tokens: total number of available tokens - :ivar tuple borrowers: tasks or other objects currently holding tokens borrowed from - this limiter - :ivar int tasks_waiting: number of tasks waiting on - :meth:`~.CapacityLimiter.acquire` or - :meth:`~.CapacityLimiter.acquire_on_behalf_of` - """ - - borrowed_tokens: int - total_tokens: float - borrowers: tuple[object, ...] - tasks_waiting: int - - -@dataclass(frozen=True) -class LockStatistics: - """ - :ivar bool locked: flag indicating if this lock is locked or not - :ivar ~anyio.TaskInfo owner: task currently holding the lock (or ``None`` if the - lock is not held by any task) - :ivar int tasks_waiting: number of tasks waiting on :meth:`~.Lock.acquire` - """ - - locked: bool - owner: TaskInfo | None - tasks_waiting: int - - -@dataclass(frozen=True) -class ConditionStatistics: - """ - :ivar int tasks_waiting: number of tasks blocked on :meth:`~.Condition.wait` - :ivar ~anyio.LockStatistics lock_statistics: statistics of the underlying - :class:`~.Lock` - """ - - tasks_waiting: int - lock_statistics: LockStatistics - - -@dataclass(frozen=True) -class SemaphoreStatistics: - """ - :ivar int tasks_waiting: number of tasks waiting on :meth:`~.Semaphore.acquire` - - """ - - tasks_waiting: int - - -class Event: - def __new__(cls) -> Event: - try: - return get_async_backend().create_event() - except AsyncLibraryNotFoundError: - return EventAdapter() - - def set(self) -> None: - """Set the flag, notifying all listeners.""" - raise NotImplementedError - - def is_set(self) -> bool: - """Return ``True`` if the flag is set, ``False`` if not.""" - raise NotImplementedError - - async def wait(self) -> None: - """ - Wait until the flag has been set. - - If the flag has already been set when this method is called, it returns - immediately. - - """ - raise NotImplementedError - - def statistics(self) -> EventStatistics: - """Return statistics about the current state of this event.""" - raise NotImplementedError - - -class EventAdapter(Event): - _internal_event: Event | None = None - _is_set: bool = False - - def __new__(cls) -> EventAdapter: - return object.__new__(cls) - - @property - def _event(self) -> Event: - if self._internal_event is None: - self._internal_event = get_async_backend().create_event() - if self._is_set: - self._internal_event.set() - - return self._internal_event - - def set(self) -> None: - if self._internal_event is None: - self._is_set = True - else: - self._event.set() - - def is_set(self) -> bool: - if self._internal_event is None: - return self._is_set - - return self._internal_event.is_set() - - async def wait(self) -> None: - await self._event.wait() - - def statistics(self) -> EventStatistics: - if self._internal_event is None: - return EventStatistics(tasks_waiting=0) - - return self._internal_event.statistics() - - -class Lock: - def __new__(cls, *, fast_acquire: bool = False) -> Lock: - try: - return get_async_backend().create_lock(fast_acquire=fast_acquire) - except AsyncLibraryNotFoundError: - return LockAdapter(fast_acquire=fast_acquire) - - async def __aenter__(self) -> None: - await self.acquire() - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> None: - self.release() - - async def acquire(self) -> None: - """Acquire the lock.""" - raise NotImplementedError - - def acquire_nowait(self) -> None: - """ - Acquire the lock, without blocking. - - :raises ~anyio.WouldBlock: if the operation would block - - """ - raise NotImplementedError - - def release(self) -> None: - """Release the lock.""" - raise NotImplementedError - - def locked(self) -> bool: - """Return True if the lock is currently held.""" - raise NotImplementedError - - def statistics(self) -> LockStatistics: - """ - Return statistics about the current state of this lock. - - .. versionadded:: 3.0 - """ - raise NotImplementedError - - -class LockAdapter(Lock): - _internal_lock: Lock | None = None - - def __new__(cls, *, fast_acquire: bool = False) -> LockAdapter: - return object.__new__(cls) - - def __init__(self, *, fast_acquire: bool = False): - self._fast_acquire = fast_acquire - - @property - def _lock(self) -> Lock: - if self._internal_lock is None: - self._internal_lock = get_async_backend().create_lock( - fast_acquire=self._fast_acquire - ) - - return self._internal_lock - - async def __aenter__(self) -> None: - await self._lock.acquire() - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> None: - if self._internal_lock is not None: - self._internal_lock.release() - - async def acquire(self) -> None: - """Acquire the lock.""" - await self._lock.acquire() - - def acquire_nowait(self) -> None: - """ - Acquire the lock, without blocking. - - :raises ~anyio.WouldBlock: if the operation would block - - """ - self._lock.acquire_nowait() - - def release(self) -> None: - """Release the lock.""" - self._lock.release() - - def locked(self) -> bool: - """Return True if the lock is currently held.""" - return self._lock.locked() - - def statistics(self) -> LockStatistics: - """ - Return statistics about the current state of this lock. - - .. versionadded:: 3.0 - - """ - if self._internal_lock is None: - return LockStatistics(False, None, 0) - - return self._internal_lock.statistics() - - -class Condition: - _owner_task: TaskInfo | None = None - - def __init__(self, lock: Lock | None = None): - self._lock = lock or Lock() - self._waiters: deque[Event] = deque() - - async def __aenter__(self) -> None: - await self.acquire() - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> None: - self.release() - - def _check_acquired(self) -> None: - if self._owner_task != get_current_task(): - raise RuntimeError("The current task is not holding the underlying lock") - - async def acquire(self) -> None: - """Acquire the underlying lock.""" - await self._lock.acquire() - self._owner_task = get_current_task() - - def acquire_nowait(self) -> None: - """ - Acquire the underlying lock, without blocking. - - :raises ~anyio.WouldBlock: if the operation would block - - """ - self._lock.acquire_nowait() - self._owner_task = get_current_task() - - def release(self) -> None: - """Release the underlying lock.""" - self._lock.release() - - def locked(self) -> bool: - """Return True if the lock is set.""" - return self._lock.locked() - - def notify(self, n: int = 1) -> None: - """Notify exactly n listeners.""" - self._check_acquired() - for _ in range(n): - try: - event = self._waiters.popleft() - except IndexError: - break - - event.set() - - def notify_all(self) -> None: - """Notify all the listeners.""" - self._check_acquired() - for event in self._waiters: - event.set() - - self._waiters.clear() - - async def wait(self) -> None: - """Wait for a notification.""" - await checkpoint() - event = Event() - self._waiters.append(event) - self.release() - try: - await event.wait() - except BaseException: - if not event.is_set(): - self._waiters.remove(event) - - raise - finally: - with CancelScope(shield=True): - await self.acquire() - - def statistics(self) -> ConditionStatistics: - """ - Return statistics about the current state of this condition. - - .. versionadded:: 3.0 - """ - return ConditionStatistics(len(self._waiters), self._lock.statistics()) - - -class Semaphore: - def __new__( - cls, - initial_value: int, - *, - max_value: int | None = None, - fast_acquire: bool = False, - ) -> Semaphore: - try: - return get_async_backend().create_semaphore( - initial_value, max_value=max_value, fast_acquire=fast_acquire - ) - except AsyncLibraryNotFoundError: - return SemaphoreAdapter(initial_value, max_value=max_value) - - def __init__( - self, - initial_value: int, - *, - max_value: int | None = None, - fast_acquire: bool = False, - ): - if not isinstance(initial_value, int): - raise TypeError("initial_value must be an integer") - if initial_value < 0: - raise ValueError("initial_value must be >= 0") - if max_value is not None: - if not isinstance(max_value, int): - raise TypeError("max_value must be an integer or None") - if max_value < initial_value: - raise ValueError( - "max_value must be equal to or higher than initial_value" - ) - - self._fast_acquire = fast_acquire - - async def __aenter__(self) -> Semaphore: - await self.acquire() - return self - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> None: - self.release() - - async def acquire(self) -> None: - """Decrement the semaphore value, blocking if necessary.""" - raise NotImplementedError - - def acquire_nowait(self) -> None: - """ - Acquire the underlying lock, without blocking. - - :raises ~anyio.WouldBlock: if the operation would block - - """ - raise NotImplementedError - - def release(self) -> None: - """Increment the semaphore value.""" - raise NotImplementedError - - @property - def value(self) -> int: - """The current value of the semaphore.""" - raise NotImplementedError - - @property - def max_value(self) -> int | None: - """The maximum value of the semaphore.""" - raise NotImplementedError - - def statistics(self) -> SemaphoreStatistics: - """ - Return statistics about the current state of this semaphore. - - .. versionadded:: 3.0 - """ - raise NotImplementedError - - -class SemaphoreAdapter(Semaphore): - _internal_semaphore: Semaphore | None = None - - def __new__( - cls, - initial_value: int, - *, - max_value: int | None = None, - fast_acquire: bool = False, - ) -> SemaphoreAdapter: - return object.__new__(cls) - - def __init__( - self, - initial_value: int, - *, - max_value: int | None = None, - fast_acquire: bool = False, - ) -> None: - super().__init__(initial_value, max_value=max_value, fast_acquire=fast_acquire) - self._initial_value = initial_value - self._max_value = max_value - - @property - def _semaphore(self) -> Semaphore: - if self._internal_semaphore is None: - self._internal_semaphore = get_async_backend().create_semaphore( - self._initial_value, max_value=self._max_value - ) - - return self._internal_semaphore - - async def acquire(self) -> None: - await self._semaphore.acquire() - - def acquire_nowait(self) -> None: - self._semaphore.acquire_nowait() - - def release(self) -> None: - self._semaphore.release() - - @property - def value(self) -> int: - if self._internal_semaphore is None: - return self._initial_value - - return self._semaphore.value - - @property - def max_value(self) -> int | None: - return self._max_value - - def statistics(self) -> SemaphoreStatistics: - if self._internal_semaphore is None: - return SemaphoreStatistics(tasks_waiting=0) - - return self._semaphore.statistics() - - -class CapacityLimiter: - def __new__(cls, total_tokens: float) -> CapacityLimiter: - try: - return get_async_backend().create_capacity_limiter(total_tokens) - except AsyncLibraryNotFoundError: - return CapacityLimiterAdapter(total_tokens) - - async def __aenter__(self) -> None: - raise NotImplementedError - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> bool | None: - raise NotImplementedError - - @property - def total_tokens(self) -> float: - """ - The total number of tokens available for borrowing. - - This is a read-write property. If the total number of tokens is increased, the - proportionate number of tasks waiting on this limiter will be granted their - tokens. - - .. versionchanged:: 3.0 - The property is now writable. - - """ - raise NotImplementedError - - @total_tokens.setter - def total_tokens(self, value: float) -> None: - raise NotImplementedError - - @property - def borrowed_tokens(self) -> int: - """The number of tokens that have currently been borrowed.""" - raise NotImplementedError - - @property - def available_tokens(self) -> float: - """The number of tokens currently available to be borrowed""" - raise NotImplementedError - - def acquire_nowait(self) -> None: - """ - Acquire a token for the current task without waiting for one to become - available. - - :raises ~anyio.WouldBlock: if there are no tokens available for borrowing - - """ - raise NotImplementedError - - def acquire_on_behalf_of_nowait(self, borrower: object) -> None: - """ - Acquire a token without waiting for one to become available. - - :param borrower: the entity borrowing a token - :raises ~anyio.WouldBlock: if there are no tokens available for borrowing - - """ - raise NotImplementedError - - async def acquire(self) -> None: - """ - Acquire a token for the current task, waiting if necessary for one to become - available. - - """ - raise NotImplementedError - - async def acquire_on_behalf_of(self, borrower: object) -> None: - """ - Acquire a token, waiting if necessary for one to become available. - - :param borrower: the entity borrowing a token - - """ - raise NotImplementedError - - def release(self) -> None: - """ - Release the token held by the current task. - - :raises RuntimeError: if the current task has not borrowed a token from this - limiter. - - """ - raise NotImplementedError - - def release_on_behalf_of(self, borrower: object) -> None: - """ - Release the token held by the given borrower. - - :raises RuntimeError: if the borrower has not borrowed a token from this - limiter. - - """ - raise NotImplementedError - - def statistics(self) -> CapacityLimiterStatistics: - """ - Return statistics about the current state of this limiter. - - .. versionadded:: 3.0 - - """ - raise NotImplementedError - - -class CapacityLimiterAdapter(CapacityLimiter): - _internal_limiter: CapacityLimiter | None = None - - def __new__(cls, total_tokens: float) -> CapacityLimiterAdapter: - return object.__new__(cls) - - def __init__(self, total_tokens: float) -> None: - self.total_tokens = total_tokens - - @property - def _limiter(self) -> CapacityLimiter: - if self._internal_limiter is None: - self._internal_limiter = get_async_backend().create_capacity_limiter( - self._total_tokens - ) - - return self._internal_limiter - - async def __aenter__(self) -> None: - await self._limiter.__aenter__() - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> bool | None: - return await self._limiter.__aexit__(exc_type, exc_val, exc_tb) - - @property - def total_tokens(self) -> float: - if self._internal_limiter is None: - return self._total_tokens - - return self._internal_limiter.total_tokens - - @total_tokens.setter - def total_tokens(self, value: float) -> None: - if not isinstance(value, int) and value is not math.inf: - raise TypeError("total_tokens must be an int or math.inf") - elif value < 1: - raise ValueError("total_tokens must be >= 1") - - if self._internal_limiter is None: - self._total_tokens = value - return - - self._limiter.total_tokens = value - - @property - def borrowed_tokens(self) -> int: - if self._internal_limiter is None: - return 0 - - return self._internal_limiter.borrowed_tokens - - @property - def available_tokens(self) -> float: - if self._internal_limiter is None: - return self._total_tokens - - return self._internal_limiter.available_tokens - - def acquire_nowait(self) -> None: - self._limiter.acquire_nowait() - - def acquire_on_behalf_of_nowait(self, borrower: object) -> None: - self._limiter.acquire_on_behalf_of_nowait(borrower) - - async def acquire(self) -> None: - await self._limiter.acquire() - - async def acquire_on_behalf_of(self, borrower: object) -> None: - await self._limiter.acquire_on_behalf_of(borrower) - - def release(self) -> None: - self._limiter.release() - - def release_on_behalf_of(self, borrower: object) -> None: - self._limiter.release_on_behalf_of(borrower) - - def statistics(self) -> CapacityLimiterStatistics: - if self._internal_limiter is None: - return CapacityLimiterStatistics( - borrowed_tokens=0, - total_tokens=self.total_tokens, - borrowers=(), - tasks_waiting=0, - ) - - return self._internal_limiter.statistics() - - -class ResourceGuard: - """ - A context manager for ensuring that a resource is only used by a single task at a - time. - - Entering this context manager while the previous has not exited it yet will trigger - :exc:`BusyResourceError`. - - :param action: the action to guard against (visible in the :exc:`BusyResourceError` - when triggered, e.g. "Another task is already {action} this resource") - - .. versionadded:: 4.1 - """ - - __slots__ = "action", "_guarded" - - def __init__(self, action: str = "using"): - self.action: str = action - self._guarded = False - - def __enter__(self) -> None: - if self._guarded: - raise BusyResourceError(self.action) - - self._guarded = True - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> None: - self._guarded = False diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_tasks.py b/venv/lib/python3.12/site-packages/anyio/_core/_tasks.py deleted file mode 100644 index fe49015..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_tasks.py +++ /dev/null @@ -1,158 +0,0 @@ -from __future__ import annotations - -import math -from collections.abc import Generator -from contextlib import contextmanager -from types import TracebackType - -from ..abc._tasks import TaskGroup, TaskStatus -from ._eventloop import get_async_backend - - -class _IgnoredTaskStatus(TaskStatus[object]): - def started(self, value: object = None) -> None: - pass - - -TASK_STATUS_IGNORED = _IgnoredTaskStatus() - - -class CancelScope: - """ - Wraps a unit of work that can be made separately cancellable. - - :param deadline: The time (clock value) when this scope is cancelled automatically - :param shield: ``True`` to shield the cancel scope from external cancellation - """ - - def __new__( - cls, *, deadline: float = math.inf, shield: bool = False - ) -> CancelScope: - return get_async_backend().create_cancel_scope(shield=shield, deadline=deadline) - - def cancel(self) -> None: - """Cancel this scope immediately.""" - raise NotImplementedError - - @property - def deadline(self) -> float: - """ - The time (clock value) when this scope is cancelled automatically. - - Will be ``float('inf')`` if no timeout has been set. - - """ - raise NotImplementedError - - @deadline.setter - def deadline(self, value: float) -> None: - raise NotImplementedError - - @property - def cancel_called(self) -> bool: - """``True`` if :meth:`cancel` has been called.""" - raise NotImplementedError - - @property - def cancelled_caught(self) -> bool: - """ - ``True`` if this scope suppressed a cancellation exception it itself raised. - - This is typically used to check if any work was interrupted, or to see if the - scope was cancelled due to its deadline being reached. The value will, however, - only be ``True`` if the cancellation was triggered by the scope itself (and not - an outer scope). - - """ - raise NotImplementedError - - @property - def shield(self) -> bool: - """ - ``True`` if this scope is shielded from external cancellation. - - While a scope is shielded, it will not receive cancellations from outside. - - """ - raise NotImplementedError - - @shield.setter - def shield(self, value: bool) -> None: - raise NotImplementedError - - def __enter__(self) -> CancelScope: - raise NotImplementedError - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> bool: - raise NotImplementedError - - -@contextmanager -def fail_after( - delay: float | None, shield: bool = False -) -> Generator[CancelScope, None, None]: - """ - Create a context manager which raises a :class:`TimeoutError` if does not finish in - time. - - :param delay: maximum allowed time (in seconds) before raising the exception, or - ``None`` to disable the timeout - :param shield: ``True`` to shield the cancel scope from external cancellation - :return: a context manager that yields a cancel scope - :rtype: :class:`~typing.ContextManager`\\[:class:`~anyio.CancelScope`\\] - - """ - current_time = get_async_backend().current_time - deadline = (current_time() + delay) if delay is not None else math.inf - with get_async_backend().create_cancel_scope( - deadline=deadline, shield=shield - ) as cancel_scope: - yield cancel_scope - - if cancel_scope.cancelled_caught and current_time() >= cancel_scope.deadline: - raise TimeoutError - - -def move_on_after(delay: float | None, shield: bool = False) -> CancelScope: - """ - Create a cancel scope with a deadline that expires after the given delay. - - :param delay: maximum allowed time (in seconds) before exiting the context block, or - ``None`` to disable the timeout - :param shield: ``True`` to shield the cancel scope from external cancellation - :return: a cancel scope - - """ - deadline = ( - (get_async_backend().current_time() + delay) if delay is not None else math.inf - ) - return get_async_backend().create_cancel_scope(deadline=deadline, shield=shield) - - -def current_effective_deadline() -> float: - """ - Return the nearest deadline among all the cancel scopes effective for the current - task. - - :return: a clock value from the event loop's internal clock (or ``float('inf')`` if - there is no deadline in effect, or ``float('-inf')`` if the current scope has - been cancelled) - :rtype: float - - """ - return get_async_backend().current_effective_deadline() - - -def create_task_group() -> TaskGroup: - """ - Create a task group. - - :return: a task group - - """ - return get_async_backend().create_task_group() diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_tempfile.py b/venv/lib/python3.12/site-packages/anyio/_core/_tempfile.py deleted file mode 100644 index 26d70ec..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_tempfile.py +++ /dev/null @@ -1,616 +0,0 @@ -from __future__ import annotations - -import os -import sys -import tempfile -from collections.abc import Iterable -from io import BytesIO, TextIOWrapper -from types import TracebackType -from typing import ( - TYPE_CHECKING, - Any, - AnyStr, - Generic, - overload, -) - -from .. import to_thread -from .._core._fileio import AsyncFile -from ..lowlevel import checkpoint_if_cancelled - -if TYPE_CHECKING: - from _typeshed import OpenBinaryMode, OpenTextMode, ReadableBuffer, WriteableBuffer - - -class TemporaryFile(Generic[AnyStr]): - """ - An asynchronous temporary file that is automatically created and cleaned up. - - This class provides an asynchronous context manager interface to a temporary file. - The file is created using Python's standard `tempfile.TemporaryFile` function in a - background thread, and is wrapped as an asynchronous file using `AsyncFile`. - - :param mode: The mode in which the file is opened. Defaults to "w+b". - :param buffering: The buffering policy (-1 means the default buffering). - :param encoding: The encoding used to decode or encode the file. Only applicable in - text mode. - :param newline: Controls how universal newlines mode works (only applicable in text - mode). - :param suffix: The suffix for the temporary file name. - :param prefix: The prefix for the temporary file name. - :param dir: The directory in which the temporary file is created. - :param errors: The error handling scheme used for encoding/decoding errors. - """ - - _async_file: AsyncFile[AnyStr] - - @overload - def __init__( - self: TemporaryFile[bytes], - mode: OpenBinaryMode = ..., - buffering: int = ..., - encoding: str | None = ..., - newline: str | None = ..., - suffix: str | None = ..., - prefix: str | None = ..., - dir: str | None = ..., - *, - errors: str | None = ..., - ): ... - @overload - def __init__( - self: TemporaryFile[str], - mode: OpenTextMode, - buffering: int = ..., - encoding: str | None = ..., - newline: str | None = ..., - suffix: str | None = ..., - prefix: str | None = ..., - dir: str | None = ..., - *, - errors: str | None = ..., - ): ... - - def __init__( - self, - mode: OpenTextMode | OpenBinaryMode = "w+b", - buffering: int = -1, - encoding: str | None = None, - newline: str | None = None, - suffix: str | None = None, - prefix: str | None = None, - dir: str | None = None, - *, - errors: str | None = None, - ) -> None: - self.mode = mode - self.buffering = buffering - self.encoding = encoding - self.newline = newline - self.suffix: str | None = suffix - self.prefix: str | None = prefix - self.dir: str | None = dir - self.errors = errors - - async def __aenter__(self) -> AsyncFile[AnyStr]: - fp = await to_thread.run_sync( - lambda: tempfile.TemporaryFile( - self.mode, - self.buffering, - self.encoding, - self.newline, - self.suffix, - self.prefix, - self.dir, - errors=self.errors, - ) - ) - self._async_file = AsyncFile(fp) - return self._async_file - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_value: BaseException | None, - traceback: TracebackType | None, - ) -> None: - await self._async_file.aclose() - - -class NamedTemporaryFile(Generic[AnyStr]): - """ - An asynchronous named temporary file that is automatically created and cleaned up. - - This class provides an asynchronous context manager for a temporary file with a - visible name in the file system. It uses Python's standard - :func:`~tempfile.NamedTemporaryFile` function and wraps the file object with - :class:`AsyncFile` for asynchronous operations. - - :param mode: The mode in which the file is opened. Defaults to "w+b". - :param buffering: The buffering policy (-1 means the default buffering). - :param encoding: The encoding used to decode or encode the file. Only applicable in - text mode. - :param newline: Controls how universal newlines mode works (only applicable in text - mode). - :param suffix: The suffix for the temporary file name. - :param prefix: The prefix for the temporary file name. - :param dir: The directory in which the temporary file is created. - :param delete: Whether to delete the file when it is closed. - :param errors: The error handling scheme used for encoding/decoding errors. - :param delete_on_close: (Python 3.12+) Whether to delete the file on close. - """ - - _async_file: AsyncFile[AnyStr] - - @overload - def __init__( - self: NamedTemporaryFile[bytes], - mode: OpenBinaryMode = ..., - buffering: int = ..., - encoding: str | None = ..., - newline: str | None = ..., - suffix: str | None = ..., - prefix: str | None = ..., - dir: str | None = ..., - delete: bool = ..., - *, - errors: str | None = ..., - delete_on_close: bool = ..., - ): ... - @overload - def __init__( - self: NamedTemporaryFile[str], - mode: OpenTextMode, - buffering: int = ..., - encoding: str | None = ..., - newline: str | None = ..., - suffix: str | None = ..., - prefix: str | None = ..., - dir: str | None = ..., - delete: bool = ..., - *, - errors: str | None = ..., - delete_on_close: bool = ..., - ): ... - - def __init__( - self, - mode: OpenBinaryMode | OpenTextMode = "w+b", - buffering: int = -1, - encoding: str | None = None, - newline: str | None = None, - suffix: str | None = None, - prefix: str | None = None, - dir: str | None = None, - delete: bool = True, - *, - errors: str | None = None, - delete_on_close: bool = True, - ) -> None: - self._params: dict[str, Any] = { - "mode": mode, - "buffering": buffering, - "encoding": encoding, - "newline": newline, - "suffix": suffix, - "prefix": prefix, - "dir": dir, - "delete": delete, - "errors": errors, - } - if sys.version_info >= (3, 12): - self._params["delete_on_close"] = delete_on_close - - async def __aenter__(self) -> AsyncFile[AnyStr]: - fp = await to_thread.run_sync( - lambda: tempfile.NamedTemporaryFile(**self._params) - ) - self._async_file = AsyncFile(fp) - return self._async_file - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_value: BaseException | None, - traceback: TracebackType | None, - ) -> None: - await self._async_file.aclose() - - -class SpooledTemporaryFile(AsyncFile[AnyStr]): - """ - An asynchronous spooled temporary file that starts in memory and is spooled to disk. - - This class provides an asynchronous interface to a spooled temporary file, much like - Python's standard :class:`~tempfile.SpooledTemporaryFile`. It supports asynchronous - write operations and provides a method to force a rollover to disk. - - :param max_size: Maximum size in bytes before the file is rolled over to disk. - :param mode: The mode in which the file is opened. Defaults to "w+b". - :param buffering: The buffering policy (-1 means the default buffering). - :param encoding: The encoding used to decode or encode the file (text mode only). - :param newline: Controls how universal newlines mode works (text mode only). - :param suffix: The suffix for the temporary file name. - :param prefix: The prefix for the temporary file name. - :param dir: The directory in which the temporary file is created. - :param errors: The error handling scheme used for encoding/decoding errors. - """ - - _rolled: bool = False - - @overload - def __init__( - self: SpooledTemporaryFile[bytes], - max_size: int = ..., - mode: OpenBinaryMode = ..., - buffering: int = ..., - encoding: str | None = ..., - newline: str | None = ..., - suffix: str | None = ..., - prefix: str | None = ..., - dir: str | None = ..., - *, - errors: str | None = ..., - ): ... - @overload - def __init__( - self: SpooledTemporaryFile[str], - max_size: int = ..., - mode: OpenTextMode = ..., - buffering: int = ..., - encoding: str | None = ..., - newline: str | None = ..., - suffix: str | None = ..., - prefix: str | None = ..., - dir: str | None = ..., - *, - errors: str | None = ..., - ): ... - - def __init__( - self, - max_size: int = 0, - mode: OpenBinaryMode | OpenTextMode = "w+b", - buffering: int = -1, - encoding: str | None = None, - newline: str | None = None, - suffix: str | None = None, - prefix: str | None = None, - dir: str | None = None, - *, - errors: str | None = None, - ) -> None: - self._tempfile_params: dict[str, Any] = { - "mode": mode, - "buffering": buffering, - "encoding": encoding, - "newline": newline, - "suffix": suffix, - "prefix": prefix, - "dir": dir, - "errors": errors, - } - self._max_size = max_size - if "b" in mode: - super().__init__(BytesIO()) # type: ignore[arg-type] - else: - super().__init__( - TextIOWrapper( # type: ignore[arg-type] - BytesIO(), - encoding=encoding, - errors=errors, - newline=newline, - write_through=True, - ) - ) - - async def aclose(self) -> None: - if not self._rolled: - self._fp.close() - return - - await super().aclose() - - async def _check(self) -> None: - if self._rolled or self._fp.tell() < self._max_size: - return - - await self.rollover() - - async def rollover(self) -> None: - if self._rolled: - return - - self._rolled = True - buffer = self._fp - buffer.seek(0) - self._fp = await to_thread.run_sync( - lambda: tempfile.TemporaryFile(**self._tempfile_params) - ) - await self.write(buffer.read()) - buffer.close() - - @property - def closed(self) -> bool: - return self._fp.closed - - async def read(self, size: int = -1) -> AnyStr: - if not self._rolled: - await checkpoint_if_cancelled() - return self._fp.read(size) - - return await super().read(size) # type: ignore[return-value] - - async def read1(self: SpooledTemporaryFile[bytes], size: int = -1) -> bytes: - if not self._rolled: - await checkpoint_if_cancelled() - return self._fp.read1(size) - - return await super().read1(size) - - async def readline(self) -> AnyStr: - if not self._rolled: - await checkpoint_if_cancelled() - return self._fp.readline() - - return await super().readline() # type: ignore[return-value] - - async def readlines(self) -> list[AnyStr]: - if not self._rolled: - await checkpoint_if_cancelled() - return self._fp.readlines() - - return await super().readlines() # type: ignore[return-value] - - async def readinto(self: SpooledTemporaryFile[bytes], b: WriteableBuffer) -> int: - if not self._rolled: - await checkpoint_if_cancelled() - self._fp.readinto(b) - - return await super().readinto(b) - - async def readinto1(self: SpooledTemporaryFile[bytes], b: WriteableBuffer) -> int: - if not self._rolled: - await checkpoint_if_cancelled() - self._fp.readinto(b) - - return await super().readinto1(b) - - async def seek(self, offset: int, whence: int | None = os.SEEK_SET) -> int: - if not self._rolled: - await checkpoint_if_cancelled() - return self._fp.seek(offset, whence) - - return await super().seek(offset, whence) - - async def tell(self) -> int: - if not self._rolled: - await checkpoint_if_cancelled() - return self._fp.tell() - - return await super().tell() - - async def truncate(self, size: int | None = None) -> int: - if not self._rolled: - await checkpoint_if_cancelled() - return self._fp.truncate(size) - - return await super().truncate(size) - - @overload - async def write(self: SpooledTemporaryFile[bytes], b: ReadableBuffer) -> int: ... - @overload - async def write(self: SpooledTemporaryFile[str], b: str) -> int: ... - - async def write(self, b: ReadableBuffer | str) -> int: - """ - Asynchronously write data to the spooled temporary file. - - If the file has not yet been rolled over, the data is written synchronously, - and a rollover is triggered if the size exceeds the maximum size. - - :param s: The data to write. - :return: The number of bytes written. - :raises RuntimeError: If the underlying file is not initialized. - - """ - if not self._rolled: - await checkpoint_if_cancelled() - result = self._fp.write(b) - await self._check() - return result - - return await super().write(b) # type: ignore[misc] - - @overload - async def writelines( - self: SpooledTemporaryFile[bytes], lines: Iterable[ReadableBuffer] - ) -> None: ... - @overload - async def writelines( - self: SpooledTemporaryFile[str], lines: Iterable[str] - ) -> None: ... - - async def writelines(self, lines: Iterable[str] | Iterable[ReadableBuffer]) -> None: - """ - Asynchronously write a list of lines to the spooled temporary file. - - If the file has not yet been rolled over, the lines are written synchronously, - and a rollover is triggered if the size exceeds the maximum size. - - :param lines: An iterable of lines to write. - :raises RuntimeError: If the underlying file is not initialized. - - """ - if not self._rolled: - await checkpoint_if_cancelled() - result = self._fp.writelines(lines) - await self._check() - return result - - return await super().writelines(lines) # type: ignore[misc] - - -class TemporaryDirectory(Generic[AnyStr]): - """ - An asynchronous temporary directory that is created and cleaned up automatically. - - This class provides an asynchronous context manager for creating a temporary - directory. It wraps Python's standard :class:`~tempfile.TemporaryDirectory` to - perform directory creation and cleanup operations in a background thread. - - :param suffix: Suffix to be added to the temporary directory name. - :param prefix: Prefix to be added to the temporary directory name. - :param dir: The parent directory where the temporary directory is created. - :param ignore_cleanup_errors: Whether to ignore errors during cleanup - (Python 3.10+). - :param delete: Whether to delete the directory upon closing (Python 3.12+). - """ - - def __init__( - self, - suffix: AnyStr | None = None, - prefix: AnyStr | None = None, - dir: AnyStr | None = None, - *, - ignore_cleanup_errors: bool = False, - delete: bool = True, - ) -> None: - self.suffix: AnyStr | None = suffix - self.prefix: AnyStr | None = prefix - self.dir: AnyStr | None = dir - self.ignore_cleanup_errors = ignore_cleanup_errors - self.delete = delete - - self._tempdir: tempfile.TemporaryDirectory | None = None - - async def __aenter__(self) -> str: - params: dict[str, Any] = { - "suffix": self.suffix, - "prefix": self.prefix, - "dir": self.dir, - } - if sys.version_info >= (3, 10): - params["ignore_cleanup_errors"] = self.ignore_cleanup_errors - - if sys.version_info >= (3, 12): - params["delete"] = self.delete - - self._tempdir = await to_thread.run_sync( - lambda: tempfile.TemporaryDirectory(**params) - ) - return await to_thread.run_sync(self._tempdir.__enter__) - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_value: BaseException | None, - traceback: TracebackType | None, - ) -> None: - if self._tempdir is not None: - await to_thread.run_sync( - self._tempdir.__exit__, exc_type, exc_value, traceback - ) - - async def cleanup(self) -> None: - if self._tempdir is not None: - await to_thread.run_sync(self._tempdir.cleanup) - - -@overload -async def mkstemp( - suffix: str | None = None, - prefix: str | None = None, - dir: str | None = None, - text: bool = False, -) -> tuple[int, str]: ... - - -@overload -async def mkstemp( - suffix: bytes | None = None, - prefix: bytes | None = None, - dir: bytes | None = None, - text: bool = False, -) -> tuple[int, bytes]: ... - - -async def mkstemp( - suffix: AnyStr | None = None, - prefix: AnyStr | None = None, - dir: AnyStr | None = None, - text: bool = False, -) -> tuple[int, str | bytes]: - """ - Asynchronously create a temporary file and return an OS-level handle and the file - name. - - This function wraps `tempfile.mkstemp` and executes it in a background thread. - - :param suffix: Suffix to be added to the file name. - :param prefix: Prefix to be added to the file name. - :param dir: Directory in which the temporary file is created. - :param text: Whether the file is opened in text mode. - :return: A tuple containing the file descriptor and the file name. - - """ - return await to_thread.run_sync(tempfile.mkstemp, suffix, prefix, dir, text) - - -@overload -async def mkdtemp( - suffix: str | None = None, - prefix: str | None = None, - dir: str | None = None, -) -> str: ... - - -@overload -async def mkdtemp( - suffix: bytes | None = None, - prefix: bytes | None = None, - dir: bytes | None = None, -) -> bytes: ... - - -async def mkdtemp( - suffix: AnyStr | None = None, - prefix: AnyStr | None = None, - dir: AnyStr | None = None, -) -> str | bytes: - """ - Asynchronously create a temporary directory and return its path. - - This function wraps `tempfile.mkdtemp` and executes it in a background thread. - - :param suffix: Suffix to be added to the directory name. - :param prefix: Prefix to be added to the directory name. - :param dir: Parent directory where the temporary directory is created. - :return: The path of the created temporary directory. - - """ - return await to_thread.run_sync(tempfile.mkdtemp, suffix, prefix, dir) - - -async def gettempdir() -> str: - """ - Asynchronously return the name of the directory used for temporary files. - - This function wraps `tempfile.gettempdir` and executes it in a background thread. - - :return: The path of the temporary directory as a string. - - """ - return await to_thread.run_sync(tempfile.gettempdir) - - -async def gettempdirb() -> bytes: - """ - Asynchronously return the name of the directory used for temporary files in bytes. - - This function wraps `tempfile.gettempdirb` and executes it in a background thread. - - :return: The path of the temporary directory as bytes. - - """ - return await to_thread.run_sync(tempfile.gettempdirb) diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_testing.py b/venv/lib/python3.12/site-packages/anyio/_core/_testing.py deleted file mode 100644 index 9e28b22..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_testing.py +++ /dev/null @@ -1,78 +0,0 @@ -from __future__ import annotations - -from collections.abc import Awaitable, Generator -from typing import Any, cast - -from ._eventloop import get_async_backend - - -class TaskInfo: - """ - Represents an asynchronous task. - - :ivar int id: the unique identifier of the task - :ivar parent_id: the identifier of the parent task, if any - :vartype parent_id: Optional[int] - :ivar str name: the description of the task (if any) - :ivar ~collections.abc.Coroutine coro: the coroutine object of the task - """ - - __slots__ = "_name", "id", "parent_id", "name", "coro" - - def __init__( - self, - id: int, - parent_id: int | None, - name: str | None, - coro: Generator[Any, Any, Any] | Awaitable[Any], - ): - func = get_current_task - self._name = f"{func.__module__}.{func.__qualname__}" - self.id: int = id - self.parent_id: int | None = parent_id - self.name: str | None = name - self.coro: Generator[Any, Any, Any] | Awaitable[Any] = coro - - def __eq__(self, other: object) -> bool: - if isinstance(other, TaskInfo): - return self.id == other.id - - return NotImplemented - - def __hash__(self) -> int: - return hash(self.id) - - def __repr__(self) -> str: - return f"{self.__class__.__name__}(id={self.id!r}, name={self.name!r})" - - def has_pending_cancellation(self) -> bool: - """ - Return ``True`` if the task has a cancellation pending, ``False`` otherwise. - - """ - return False - - -def get_current_task() -> TaskInfo: - """ - Return the current task. - - :return: a representation of the current task - - """ - return get_async_backend().get_current_task() - - -def get_running_tasks() -> list[TaskInfo]: - """ - Return a list of running tasks in the current event loop. - - :return: a list of task info objects - - """ - return cast("list[TaskInfo]", get_async_backend().get_running_tasks()) - - -async def wait_all_tasks_blocked() -> None: - """Wait until all other tasks are waiting for something.""" - await get_async_backend().wait_all_tasks_blocked() diff --git a/venv/lib/python3.12/site-packages/anyio/_core/_typedattr.py b/venv/lib/python3.12/site-packages/anyio/_core/_typedattr.py deleted file mode 100644 index f358a44..0000000 --- a/venv/lib/python3.12/site-packages/anyio/_core/_typedattr.py +++ /dev/null @@ -1,81 +0,0 @@ -from __future__ import annotations - -from collections.abc import Callable, Mapping -from typing import Any, TypeVar, final, overload - -from ._exceptions import TypedAttributeLookupError - -T_Attr = TypeVar("T_Attr") -T_Default = TypeVar("T_Default") -undefined = object() - - -def typed_attribute() -> Any: - """Return a unique object, used to mark typed attributes.""" - return object() - - -class TypedAttributeSet: - """ - Superclass for typed attribute collections. - - Checks that every public attribute of every subclass has a type annotation. - """ - - def __init_subclass__(cls) -> None: - annotations: dict[str, Any] = getattr(cls, "__annotations__", {}) - for attrname in dir(cls): - if not attrname.startswith("_") and attrname not in annotations: - raise TypeError( - f"Attribute {attrname!r} is missing its type annotation" - ) - - super().__init_subclass__() - - -class TypedAttributeProvider: - """Base class for classes that wish to provide typed extra attributes.""" - - @property - def extra_attributes(self) -> Mapping[T_Attr, Callable[[], T_Attr]]: - """ - A mapping of the extra attributes to callables that return the corresponding - values. - - If the provider wraps another provider, the attributes from that wrapper should - also be included in the returned mapping (but the wrapper may override the - callables from the wrapped instance). - - """ - return {} - - @overload - def extra(self, attribute: T_Attr) -> T_Attr: ... - - @overload - def extra(self, attribute: T_Attr, default: T_Default) -> T_Attr | T_Default: ... - - @final - def extra(self, attribute: Any, default: object = undefined) -> object: - """ - extra(attribute, default=undefined) - - Return the value of the given typed extra attribute. - - :param attribute: the attribute (member of a :class:`~TypedAttributeSet`) to - look for - :param default: the value that should be returned if no value is found for the - attribute - :raises ~anyio.TypedAttributeLookupError: if the search failed and no default - value was given - - """ - try: - getter = self.extra_attributes[attribute] - except KeyError: - if default is undefined: - raise TypedAttributeLookupError("Attribute not found") from None - else: - return default - - return getter() diff --git a/venv/lib/python3.12/site-packages/anyio/abc/__init__.py b/venv/lib/python3.12/site-packages/anyio/abc/__init__.py deleted file mode 100644 index 3d3b61c..0000000 --- a/venv/lib/python3.12/site-packages/anyio/abc/__init__.py +++ /dev/null @@ -1,55 +0,0 @@ -from __future__ import annotations - -from ._eventloop import AsyncBackend as AsyncBackend -from ._resources import AsyncResource as AsyncResource -from ._sockets import ConnectedUDPSocket as ConnectedUDPSocket -from ._sockets import ConnectedUNIXDatagramSocket as ConnectedUNIXDatagramSocket -from ._sockets import IPAddressType as IPAddressType -from ._sockets import IPSockAddrType as IPSockAddrType -from ._sockets import SocketAttribute as SocketAttribute -from ._sockets import SocketListener as SocketListener -from ._sockets import SocketStream as SocketStream -from ._sockets import UDPPacketType as UDPPacketType -from ._sockets import UDPSocket as UDPSocket -from ._sockets import UNIXDatagramPacketType as UNIXDatagramPacketType -from ._sockets import UNIXDatagramSocket as UNIXDatagramSocket -from ._sockets import UNIXSocketStream as UNIXSocketStream -from ._streams import AnyByteReceiveStream as AnyByteReceiveStream -from ._streams import AnyByteSendStream as AnyByteSendStream -from ._streams import AnyByteStream as AnyByteStream -from ._streams import AnyUnreliableByteReceiveStream as AnyUnreliableByteReceiveStream -from ._streams import AnyUnreliableByteSendStream as AnyUnreliableByteSendStream -from ._streams import AnyUnreliableByteStream as AnyUnreliableByteStream -from ._streams import ByteReceiveStream as ByteReceiveStream -from ._streams import ByteSendStream as ByteSendStream -from ._streams import ByteStream as ByteStream -from ._streams import Listener as Listener -from ._streams import ObjectReceiveStream as ObjectReceiveStream -from ._streams import ObjectSendStream as ObjectSendStream -from ._streams import ObjectStream as ObjectStream -from ._streams import UnreliableObjectReceiveStream as UnreliableObjectReceiveStream -from ._streams import UnreliableObjectSendStream as UnreliableObjectSendStream -from ._streams import UnreliableObjectStream as UnreliableObjectStream -from ._subprocesses import Process as Process -from ._tasks import TaskGroup as TaskGroup -from ._tasks import TaskStatus as TaskStatus -from ._testing import TestRunner as TestRunner - -# Re-exported here, for backwards compatibility -# isort: off -from .._core._synchronization import ( - CapacityLimiter as CapacityLimiter, - Condition as Condition, - Event as Event, - Lock as Lock, - Semaphore as Semaphore, -) -from .._core._tasks import CancelScope as CancelScope -from ..from_thread import BlockingPortal as BlockingPortal - -# Re-export imports so they look like they live directly in this package -for __value in list(locals().values()): - if getattr(__value, "__module__", "").startswith("anyio.abc."): - __value.__module__ = __name__ - -del __value diff --git a/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 7da626b1d7e4427b96385052d9037d2684316c80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2221 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 diff --git a/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_sockets.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_sockets.cpython-312.pyc deleted file mode 100644 index 1a4135ed5aa92020b10d1aa43a7fbff44ecf1525..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9876 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 sna^s*!}Tl+ElaJtGs2#`ujhFv=i896w*#H0l diff --git a/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_streams.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_streams.cpython-312.pyc deleted file mode 100644 index 0e0739bf6f472d29ed05ad430c9a115eed506d62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8432 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 diff --git a/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_subprocesses.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_subprocesses.cpython-312.pyc deleted file mode 100644 index 337ef9cdccae64640e0e219fcea0f06b6cc3e5c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3236 zcmcInOK%)S5boZceLoV%iGT=2t%!)MNM@Cw2(&^F2O?v|IF=n0v=WgOMVTAQHJP*&snqRL#q?j`Oe(bEvJZs_v@#y1Kgeheo4H z;Jdwca%;X!$Zt4EzCy&%X&0C~#3UxQi9@@TBA>H!PQIHD`Mj+-g>C_O#VpuGr_?Ql ze9t zBF7O`q8~c_9hf_WlP)z$H)qmro-1bE%-vG%#rE9-NE&87BPoUwB_k<;q-hp1k}|J^ zD;0NT>5A1*cL*>^y`;KYs5@+y_tDiu-JDt3N7smT)qQl$QLS|(D6I<5;8Kn+EVxWZ z{I-PWdPB*!xsU)o^EOz=uyrXrJvrR0=>k#xB&}ZRc|{;xq6sA0DsdRtppu%7=MrpF(J`=?VtL&p zQ=sI9!2X!JyJ8_6nVQL@@V{YqWodc&KVx?TB7Y%l3R>+}BaRpVB#t6M*bIa%`|Yj4 z?^CF-Ei#?Su&X8;zgzwp;9hF)v6i%Gv0mm}4|JhBv6JX@#}3`0)8~Sn=IW-(I;QUH zP*7nkDwN~LpRV>=X{b>VwQ}MRq!tt-Gl{7(7S&TN<9$~H2DYcEVE zu4S6l(not5k@}3P&JQeeTuZ#e;KISY?xY!``=}-E*9cX%G}9Q_mM$6Go@~T@mL4NB zZV@|BCF#O_4(ELZT4c68JR_ZI6ajYP@sT8}U0LT~$(_TT;7*5onQeF?JfzasT~ik( zv)sYZe@T=J(l;%4+(;q{hnEf(%=za9;|=|nkERIjVZykX2?xfD2aD(3=f%T?0K5(y z6-=9n3dYMbQLVtEsTl2NkhfeP4%jI$2o$W3mLgt5YkUZXV(}($vB|g!=Im=08b-6m z$7bJJd$g}U^*Bom4h3aRb9IMnT2R$A$1{gE@^wx7a;V#}rle`6XK0$h`&7&!nMd*p zlH)*v@<6~VMffA}I?7HUVMtCQc>_s!6=9nUn}(<%hXkL&@&S-rE0e>8bs2~a9oQ3#F`MqdA-xue=1iP-potWe)rT59n2js+ka{K`~ W^$U6Daq%*xi}beh7YUg#%zpvWHYIof diff --git a/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_tasks.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_tasks.cpython-312.pyc deleted file mode 100644 index aae4a19afdad631a8e04ff72683d3950ad1eddc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4512 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 Pc3J!6#J`AQl<)rwJ$0-y diff --git a/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_testing.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_testing.cpython-312.pyc deleted file mode 100644 index ef6d9f89f68eef09e97f7a8517bc4bb101a0304b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2831 zcmd5;&2QXP5P$Zry|&kzex)sqD6uMNwGeg%l>kK*qK&GmNaRo=gd9cITl*z(>yPEx zo5rgiipZgV08%+~tIB`E4K9@>l%k%vZM%p=Ps}`fH|sQ1J>p%>8_&!e&-=~1H}BV0 z%OLPPxOHLse1ni@_%eBvf|16%z&s=#@uYx+k}XNd%YkgmFxG-vShwq;Vk<&k57e+> zH$u(ULfzIw!#0Fm37Vm4n_32zl%{?hC97>YZ(O~$@)b*IK1X{=%Bh=%EZvU1c0HfFnq-lCgGG$fH0HUs zLW6+z0+#D5F^>nSAF*7!nSvUG;H!2u%JRlq)@R>Pp3BafTSQRMG8}3ABfLK(jM$P# zVDXY&^E6N1gXJ?tC)J;)d$qm#-rAkndJgFR!BW&rP~0` z);5fOV#U4N%uTJkK4=FCDw*(`(2&h~5kj|2rC2WVfSEK_1zz{a*W{73`UsO)Pgt;- zpn>)BR(CrNS@(8K<1mic(C@B5Y6k)2u?s=&bOXQF?PrkF=yK32XSwb;usp^cXE=X=NM|ZN0bfp_(8+!B`f7ordZxN7)>DV&W_YvGuDGby zbpc1aEJJG-&qXI4C7;m7ho1#Yx*-?{qp# zR<)_FJ8K|{vW*R~+?R8n@22a}hzltfUd>651?!Ffa69eD>)=gHUb4WtaLX@2Ai@_n zfdd!sVq}-9ksamYAhZJ?c^$!O8@c8<5wtPK$qmN|V{Z^3Z#vF*0~(Z?hU0j#>o^?G zX^xj6zJO#A$ps|uA;HEVDq5U0B4L6wL7w~uWRE+F&xpBCF71<>zmuE$WbseMe6aSz#(nv3^%Keb M>C=A*3}Q|H0(H9U`2YX_ diff --git a/venv/lib/python3.12/site-packages/anyio/abc/_eventloop.py b/venv/lib/python3.12/site-packages/anyio/abc/_eventloop.py deleted file mode 100644 index 4cfce83..0000000 --- a/venv/lib/python3.12/site-packages/anyio/abc/_eventloop.py +++ /dev/null @@ -1,376 +0,0 @@ -from __future__ import annotations - -import math -import sys -from abc import ABCMeta, abstractmethod -from collections.abc import AsyncIterator, Awaitable, Callable, Sequence -from contextlib import AbstractContextManager -from os import PathLike -from signal import Signals -from socket import AddressFamily, SocketKind, socket -from typing import ( - IO, - TYPE_CHECKING, - Any, - TypeVar, - Union, - overload, -) - -if sys.version_info >= (3, 11): - from typing import TypeVarTuple, Unpack -else: - from typing_extensions import TypeVarTuple, Unpack - -if sys.version_info >= (3, 10): - from typing import TypeAlias -else: - from typing_extensions import TypeAlias - -if TYPE_CHECKING: - from _typeshed import HasFileno - - from .._core._synchronization import CapacityLimiter, Event, Lock, Semaphore - from .._core._tasks import CancelScope - from .._core._testing import TaskInfo - from ..from_thread import BlockingPortal - from ._sockets import ( - ConnectedUDPSocket, - ConnectedUNIXDatagramSocket, - IPSockAddrType, - SocketListener, - SocketStream, - UDPSocket, - UNIXDatagramSocket, - UNIXSocketStream, - ) - from ._subprocesses import Process - from ._tasks import TaskGroup - from ._testing import TestRunner - -T_Retval = TypeVar("T_Retval") -PosArgsT = TypeVarTuple("PosArgsT") -StrOrBytesPath: TypeAlias = Union[str, bytes, "PathLike[str]", "PathLike[bytes]"] - - -class AsyncBackend(metaclass=ABCMeta): - @classmethod - @abstractmethod - def run( - cls, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]], - args: tuple[Unpack[PosArgsT]], - kwargs: dict[str, Any], - options: dict[str, Any], - ) -> T_Retval: - """ - Run the given coroutine function in an asynchronous event loop. - - The current thread must not be already running an event loop. - - :param func: a coroutine function - :param args: positional arguments to ``func`` - :param kwargs: positional arguments to ``func`` - :param options: keyword arguments to call the backend ``run()`` implementation - with - :return: the return value of the coroutine function - """ - - @classmethod - @abstractmethod - def current_token(cls) -> object: - """ - - :return: - """ - - @classmethod - @abstractmethod - def current_time(cls) -> float: - """ - Return the current value of the event loop's internal clock. - - :return: the clock value (seconds) - """ - - @classmethod - @abstractmethod - def cancelled_exception_class(cls) -> type[BaseException]: - """Return the exception class that is raised in a task if it's cancelled.""" - - @classmethod - @abstractmethod - async def checkpoint(cls) -> None: - """ - Check if the task has been cancelled, and allow rescheduling of other tasks. - - This is effectively the same as running :meth:`checkpoint_if_cancelled` and then - :meth:`cancel_shielded_checkpoint`. - """ - - @classmethod - async def checkpoint_if_cancelled(cls) -> None: - """ - Check if the current task group has been cancelled. - - This will check if the task has been cancelled, but will not allow other tasks - to be scheduled if not. - - """ - if cls.current_effective_deadline() == -math.inf: - await cls.checkpoint() - - @classmethod - async def cancel_shielded_checkpoint(cls) -> None: - """ - Allow the rescheduling of other tasks. - - This will give other tasks the opportunity to run, but without checking if the - current task group has been cancelled, unlike with :meth:`checkpoint`. - - """ - with cls.create_cancel_scope(shield=True): - await cls.sleep(0) - - @classmethod - @abstractmethod - async def sleep(cls, delay: float) -> None: - """ - Pause the current task for the specified duration. - - :param delay: the duration, in seconds - """ - - @classmethod - @abstractmethod - def create_cancel_scope( - cls, *, deadline: float = math.inf, shield: bool = False - ) -> CancelScope: - pass - - @classmethod - @abstractmethod - def current_effective_deadline(cls) -> float: - """ - Return the nearest deadline among all the cancel scopes effective for the - current task. - - :return: - - a clock value from the event loop's internal clock - - ``inf`` if there is no deadline in effect - - ``-inf`` if the current scope has been cancelled - :rtype: float - """ - - @classmethod - @abstractmethod - def create_task_group(cls) -> TaskGroup: - pass - - @classmethod - @abstractmethod - def create_event(cls) -> Event: - pass - - @classmethod - @abstractmethod - def create_lock(cls, *, fast_acquire: bool) -> Lock: - pass - - @classmethod - @abstractmethod - def create_semaphore( - cls, - initial_value: int, - *, - max_value: int | None = None, - fast_acquire: bool = False, - ) -> Semaphore: - pass - - @classmethod - @abstractmethod - def create_capacity_limiter(cls, total_tokens: float) -> CapacityLimiter: - pass - - @classmethod - @abstractmethod - async def run_sync_in_worker_thread( - cls, - func: Callable[[Unpack[PosArgsT]], T_Retval], - args: tuple[Unpack[PosArgsT]], - abandon_on_cancel: bool = False, - limiter: CapacityLimiter | None = None, - ) -> T_Retval: - pass - - @classmethod - @abstractmethod - def check_cancelled(cls) -> None: - pass - - @classmethod - @abstractmethod - def run_async_from_thread( - cls, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]], - args: tuple[Unpack[PosArgsT]], - token: object, - ) -> T_Retval: - pass - - @classmethod - @abstractmethod - def run_sync_from_thread( - cls, - func: Callable[[Unpack[PosArgsT]], T_Retval], - args: tuple[Unpack[PosArgsT]], - token: object, - ) -> T_Retval: - pass - - @classmethod - @abstractmethod - def create_blocking_portal(cls) -> BlockingPortal: - pass - - @classmethod - @abstractmethod - async def open_process( - cls, - command: StrOrBytesPath | Sequence[StrOrBytesPath], - *, - stdin: int | IO[Any] | None, - stdout: int | IO[Any] | None, - stderr: int | IO[Any] | None, - **kwargs: Any, - ) -> Process: - pass - - @classmethod - @abstractmethod - def setup_process_pool_exit_at_shutdown(cls, workers: set[Process]) -> None: - pass - - @classmethod - @abstractmethod - async def connect_tcp( - cls, host: str, port: int, local_address: IPSockAddrType | None = None - ) -> SocketStream: - pass - - @classmethod - @abstractmethod - async def connect_unix(cls, path: str | bytes) -> UNIXSocketStream: - pass - - @classmethod - @abstractmethod - def create_tcp_listener(cls, sock: socket) -> SocketListener: - pass - - @classmethod - @abstractmethod - def create_unix_listener(cls, sock: socket) -> SocketListener: - pass - - @classmethod - @abstractmethod - async def create_udp_socket( - cls, - family: AddressFamily, - local_address: IPSockAddrType | None, - remote_address: IPSockAddrType | None, - reuse_port: bool, - ) -> UDPSocket | ConnectedUDPSocket: - pass - - @classmethod - @overload - async def create_unix_datagram_socket( - cls, raw_socket: socket, remote_path: None - ) -> UNIXDatagramSocket: ... - - @classmethod - @overload - async def create_unix_datagram_socket( - cls, raw_socket: socket, remote_path: str | bytes - ) -> ConnectedUNIXDatagramSocket: ... - - @classmethod - @abstractmethod - async def create_unix_datagram_socket( - cls, raw_socket: socket, remote_path: str | bytes | None - ) -> UNIXDatagramSocket | ConnectedUNIXDatagramSocket: - pass - - @classmethod - @abstractmethod - async def getaddrinfo( - cls, - host: bytes | str | None, - port: str | int | None, - *, - family: int | AddressFamily = 0, - type: int | SocketKind = 0, - proto: int = 0, - flags: int = 0, - ) -> Sequence[ - tuple[ - AddressFamily, - SocketKind, - int, - str, - tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes], - ] - ]: - pass - - @classmethod - @abstractmethod - async def getnameinfo( - cls, sockaddr: IPSockAddrType, flags: int = 0 - ) -> tuple[str, str]: - pass - - @classmethod - @abstractmethod - async def wait_readable(cls, obj: HasFileno | int) -> None: - pass - - @classmethod - @abstractmethod - async def wait_writable(cls, obj: HasFileno | int) -> None: - pass - - @classmethod - @abstractmethod - def current_default_thread_limiter(cls) -> CapacityLimiter: - pass - - @classmethod - @abstractmethod - def open_signal_receiver( - cls, *signals: Signals - ) -> AbstractContextManager[AsyncIterator[Signals]]: - pass - - @classmethod - @abstractmethod - def get_current_task(cls) -> TaskInfo: - pass - - @classmethod - @abstractmethod - def get_running_tasks(cls) -> Sequence[TaskInfo]: - pass - - @classmethod - @abstractmethod - async def wait_all_tasks_blocked(cls) -> None: - pass - - @classmethod - @abstractmethod - def create_test_runner(cls, options: dict[str, Any]) -> TestRunner: - pass diff --git a/venv/lib/python3.12/site-packages/anyio/abc/_resources.py b/venv/lib/python3.12/site-packages/anyio/abc/_resources.py deleted file mode 100644 index 10df115..0000000 --- a/venv/lib/python3.12/site-packages/anyio/abc/_resources.py +++ /dev/null @@ -1,33 +0,0 @@ -from __future__ import annotations - -from abc import ABCMeta, abstractmethod -from types import TracebackType -from typing import TypeVar - -T = TypeVar("T") - - -class AsyncResource(metaclass=ABCMeta): - """ - Abstract base class for all closeable asynchronous resources. - - Works as an asynchronous context manager which returns the instance itself on enter, - and calls :meth:`aclose` on exit. - """ - - __slots__ = () - - async def __aenter__(self: T) -> T: - return self - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> None: - await self.aclose() - - @abstractmethod - async def aclose(self) -> None: - """Close the resource.""" diff --git a/venv/lib/python3.12/site-packages/anyio/abc/_sockets.py b/venv/lib/python3.12/site-packages/anyio/abc/_sockets.py deleted file mode 100644 index 1c6a450..0000000 --- a/venv/lib/python3.12/site-packages/anyio/abc/_sockets.py +++ /dev/null @@ -1,194 +0,0 @@ -from __future__ import annotations - -import socket -from abc import abstractmethod -from collections.abc import Callable, Collection, Mapping -from contextlib import AsyncExitStack -from io import IOBase -from ipaddress import IPv4Address, IPv6Address -from socket import AddressFamily -from types import TracebackType -from typing import Any, TypeVar, Union - -from .._core._typedattr import ( - TypedAttributeProvider, - TypedAttributeSet, - typed_attribute, -) -from ._streams import ByteStream, Listener, UnreliableObjectStream -from ._tasks import TaskGroup - -IPAddressType = Union[str, IPv4Address, IPv6Address] -IPSockAddrType = tuple[str, int] -SockAddrType = Union[IPSockAddrType, str] -UDPPacketType = tuple[bytes, IPSockAddrType] -UNIXDatagramPacketType = tuple[bytes, str] -T_Retval = TypeVar("T_Retval") - - -class _NullAsyncContextManager: - async def __aenter__(self) -> None: - pass - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> bool | None: - return None - - -class SocketAttribute(TypedAttributeSet): - #: the address family of the underlying socket - family: AddressFamily = typed_attribute() - #: the local socket address of the underlying socket - local_address: SockAddrType = typed_attribute() - #: for IP addresses, the local port the underlying socket is bound to - local_port: int = typed_attribute() - #: the underlying stdlib socket object - raw_socket: socket.socket = typed_attribute() - #: the remote address the underlying socket is connected to - remote_address: SockAddrType = typed_attribute() - #: for IP addresses, the remote port the underlying socket is connected to - remote_port: int = typed_attribute() - - -class _SocketProvider(TypedAttributeProvider): - @property - def extra_attributes(self) -> Mapping[Any, Callable[[], Any]]: - from .._core._sockets import convert_ipv6_sockaddr as convert - - attributes: dict[Any, Callable[[], Any]] = { - SocketAttribute.family: lambda: self._raw_socket.family, - SocketAttribute.local_address: lambda: convert( - self._raw_socket.getsockname() - ), - SocketAttribute.raw_socket: lambda: self._raw_socket, - } - try: - peername: tuple[str, int] | None = convert(self._raw_socket.getpeername()) - except OSError: - peername = None - - # Provide the remote address for connected sockets - if peername is not None: - attributes[SocketAttribute.remote_address] = lambda: peername - - # Provide local and remote ports for IP based sockets - if self._raw_socket.family in (AddressFamily.AF_INET, AddressFamily.AF_INET6): - attributes[SocketAttribute.local_port] = ( - lambda: self._raw_socket.getsockname()[1] - ) - if peername is not None: - remote_port = peername[1] - attributes[SocketAttribute.remote_port] = lambda: remote_port - - return attributes - - @property - @abstractmethod - def _raw_socket(self) -> socket.socket: - pass - - -class SocketStream(ByteStream, _SocketProvider): - """ - Transports bytes over a socket. - - Supports all relevant extra attributes from :class:`~SocketAttribute`. - """ - - -class UNIXSocketStream(SocketStream): - @abstractmethod - async def send_fds(self, message: bytes, fds: Collection[int | IOBase]) -> None: - """ - Send file descriptors along with a message to the peer. - - :param message: a non-empty bytestring - :param fds: a collection of files (either numeric file descriptors or open file - or socket objects) - """ - - @abstractmethod - async def receive_fds(self, msglen: int, maxfds: int) -> tuple[bytes, list[int]]: - """ - Receive file descriptors along with a message from the peer. - - :param msglen: length of the message to expect from the peer - :param maxfds: maximum number of file descriptors to expect from the peer - :return: a tuple of (message, file descriptors) - """ - - -class SocketListener(Listener[SocketStream], _SocketProvider): - """ - Listens to incoming socket connections. - - Supports all relevant extra attributes from :class:`~SocketAttribute`. - """ - - @abstractmethod - async def accept(self) -> SocketStream: - """Accept an incoming connection.""" - - async def serve( - self, - handler: Callable[[SocketStream], Any], - task_group: TaskGroup | None = None, - ) -> None: - from .. import create_task_group - - async with AsyncExitStack() as stack: - if task_group is None: - task_group = await stack.enter_async_context(create_task_group()) - - while True: - stream = await self.accept() - task_group.start_soon(handler, stream) - - -class UDPSocket(UnreliableObjectStream[UDPPacketType], _SocketProvider): - """ - Represents an unconnected UDP socket. - - Supports all relevant extra attributes from :class:`~SocketAttribute`. - """ - - async def sendto(self, data: bytes, host: str, port: int) -> None: - """ - Alias for :meth:`~.UnreliableObjectSendStream.send` ((data, (host, port))). - - """ - return await self.send((data, (host, port))) - - -class ConnectedUDPSocket(UnreliableObjectStream[bytes], _SocketProvider): - """ - Represents an connected UDP socket. - - Supports all relevant extra attributes from :class:`~SocketAttribute`. - """ - - -class UNIXDatagramSocket( - UnreliableObjectStream[UNIXDatagramPacketType], _SocketProvider -): - """ - Represents an unconnected Unix datagram socket. - - Supports all relevant extra attributes from :class:`~SocketAttribute`. - """ - - async def sendto(self, data: bytes, path: str) -> None: - """Alias for :meth:`~.UnreliableObjectSendStream.send` ((data, path)).""" - return await self.send((data, path)) - - -class ConnectedUNIXDatagramSocket(UnreliableObjectStream[bytes], _SocketProvider): - """ - Represents a connected Unix datagram socket. - - Supports all relevant extra attributes from :class:`~SocketAttribute`. - """ diff --git a/venv/lib/python3.12/site-packages/anyio/abc/_streams.py b/venv/lib/python3.12/site-packages/anyio/abc/_streams.py deleted file mode 100644 index f11d97b..0000000 --- a/venv/lib/python3.12/site-packages/anyio/abc/_streams.py +++ /dev/null @@ -1,203 +0,0 @@ -from __future__ import annotations - -from abc import abstractmethod -from collections.abc import Callable -from typing import Any, Generic, TypeVar, Union - -from .._core._exceptions import EndOfStream -from .._core._typedattr import TypedAttributeProvider -from ._resources import AsyncResource -from ._tasks import TaskGroup - -T_Item = TypeVar("T_Item") -T_co = TypeVar("T_co", covariant=True) -T_contra = TypeVar("T_contra", contravariant=True) - - -class UnreliableObjectReceiveStream( - Generic[T_co], AsyncResource, TypedAttributeProvider -): - """ - An interface for receiving objects. - - This interface makes no guarantees that the received messages arrive in the order in - which they were sent, or that no messages are missed. - - Asynchronously iterating over objects of this type will yield objects matching the - given type parameter. - """ - - def __aiter__(self) -> UnreliableObjectReceiveStream[T_co]: - return self - - async def __anext__(self) -> T_co: - try: - return await self.receive() - except EndOfStream: - raise StopAsyncIteration - - @abstractmethod - async def receive(self) -> T_co: - """ - Receive the next item. - - :raises ~anyio.ClosedResourceError: if the receive stream has been explicitly - closed - :raises ~anyio.EndOfStream: if this stream has been closed from the other end - :raises ~anyio.BrokenResourceError: if this stream has been rendered unusable - due to external causes - """ - - -class UnreliableObjectSendStream( - Generic[T_contra], AsyncResource, TypedAttributeProvider -): - """ - An interface for sending objects. - - This interface makes no guarantees that the messages sent will reach the - recipient(s) in the same order in which they were sent, or at all. - """ - - @abstractmethod - async def send(self, item: T_contra) -> None: - """ - Send an item to the peer(s). - - :param item: the item to send - :raises ~anyio.ClosedResourceError: if the send stream has been explicitly - closed - :raises ~anyio.BrokenResourceError: if this stream has been rendered unusable - due to external causes - """ - - -class UnreliableObjectStream( - UnreliableObjectReceiveStream[T_Item], UnreliableObjectSendStream[T_Item] -): - """ - A bidirectional message stream which does not guarantee the order or reliability of - message delivery. - """ - - -class ObjectReceiveStream(UnreliableObjectReceiveStream[T_co]): - """ - A receive message stream which guarantees that messages are received in the same - order in which they were sent, and that no messages are missed. - """ - - -class ObjectSendStream(UnreliableObjectSendStream[T_contra]): - """ - A send message stream which guarantees that messages are delivered in the same order - in which they were sent, without missing any messages in the middle. - """ - - -class ObjectStream( - ObjectReceiveStream[T_Item], - ObjectSendStream[T_Item], - UnreliableObjectStream[T_Item], -): - """ - A bidirectional message stream which guarantees the order and reliability of message - delivery. - """ - - @abstractmethod - async def send_eof(self) -> None: - """ - Send an end-of-file indication to the peer. - - You should not try to send any further data to this stream after calling this - method. This method is idempotent (does nothing on successive calls). - """ - - -class ByteReceiveStream(AsyncResource, TypedAttributeProvider): - """ - An interface for receiving bytes from a single peer. - - Iterating this byte stream will yield a byte string of arbitrary length, but no more - than 65536 bytes. - """ - - def __aiter__(self) -> ByteReceiveStream: - return self - - async def __anext__(self) -> bytes: - try: - return await self.receive() - except EndOfStream: - raise StopAsyncIteration - - @abstractmethod - async def receive(self, max_bytes: int = 65536) -> bytes: - """ - Receive at most ``max_bytes`` bytes from the peer. - - .. note:: Implementers of this interface should not return an empty - :class:`bytes` object, and users should ignore them. - - :param max_bytes: maximum number of bytes to receive - :return: the received bytes - :raises ~anyio.EndOfStream: if this stream has been closed from the other end - """ - - -class ByteSendStream(AsyncResource, TypedAttributeProvider): - """An interface for sending bytes to a single peer.""" - - @abstractmethod - async def send(self, item: bytes) -> None: - """ - Send the given bytes to the peer. - - :param item: the bytes to send - """ - - -class ByteStream(ByteReceiveStream, ByteSendStream): - """A bidirectional byte stream.""" - - @abstractmethod - async def send_eof(self) -> None: - """ - Send an end-of-file indication to the peer. - - You should not try to send any further data to this stream after calling this - method. This method is idempotent (does nothing on successive calls). - """ - - -#: Type alias for all unreliable bytes-oriented receive streams. -AnyUnreliableByteReceiveStream = Union[ - UnreliableObjectReceiveStream[bytes], ByteReceiveStream -] -#: Type alias for all unreliable bytes-oriented send streams. -AnyUnreliableByteSendStream = Union[UnreliableObjectSendStream[bytes], ByteSendStream] -#: Type alias for all unreliable bytes-oriented streams. -AnyUnreliableByteStream = Union[UnreliableObjectStream[bytes], ByteStream] -#: Type alias for all bytes-oriented receive streams. -AnyByteReceiveStream = Union[ObjectReceiveStream[bytes], ByteReceiveStream] -#: Type alias for all bytes-oriented send streams. -AnyByteSendStream = Union[ObjectSendStream[bytes], ByteSendStream] -#: Type alias for all bytes-oriented streams. -AnyByteStream = Union[ObjectStream[bytes], ByteStream] - - -class Listener(Generic[T_co], AsyncResource, TypedAttributeProvider): - """An interface for objects that let you accept incoming connections.""" - - @abstractmethod - async def serve( - self, handler: Callable[[T_co], Any], task_group: TaskGroup | None = None - ) -> None: - """ - Accept incoming connections as they come in and start tasks to handle them. - - :param handler: a callable that will be used to handle each accepted connection - :param task_group: the task group that will be used to start tasks for handling - each accepted connection (if omitted, an ad-hoc task group will be created) - """ diff --git a/venv/lib/python3.12/site-packages/anyio/abc/_subprocesses.py b/venv/lib/python3.12/site-packages/anyio/abc/_subprocesses.py deleted file mode 100644 index ce0564c..0000000 --- a/venv/lib/python3.12/site-packages/anyio/abc/_subprocesses.py +++ /dev/null @@ -1,79 +0,0 @@ -from __future__ import annotations - -from abc import abstractmethod -from signal import Signals - -from ._resources import AsyncResource -from ._streams import ByteReceiveStream, ByteSendStream - - -class Process(AsyncResource): - """An asynchronous version of :class:`subprocess.Popen`.""" - - @abstractmethod - async def wait(self) -> int: - """ - Wait until the process exits. - - :return: the exit code of the process - """ - - @abstractmethod - def terminate(self) -> None: - """ - Terminates the process, gracefully if possible. - - On Windows, this calls ``TerminateProcess()``. - On POSIX systems, this sends ``SIGTERM`` to the process. - - .. seealso:: :meth:`subprocess.Popen.terminate` - """ - - @abstractmethod - def kill(self) -> None: - """ - Kills the process. - - On Windows, this calls ``TerminateProcess()``. - On POSIX systems, this sends ``SIGKILL`` to the process. - - .. seealso:: :meth:`subprocess.Popen.kill` - """ - - @abstractmethod - def send_signal(self, signal: Signals) -> None: - """ - Send a signal to the subprocess. - - .. seealso:: :meth:`subprocess.Popen.send_signal` - - :param signal: the signal number (e.g. :data:`signal.SIGHUP`) - """ - - @property - @abstractmethod - def pid(self) -> int: - """The process ID of the process.""" - - @property - @abstractmethod - def returncode(self) -> int | None: - """ - The return code of the process. If the process has not yet terminated, this will - be ``None``. - """ - - @property - @abstractmethod - def stdin(self) -> ByteSendStream | None: - """The stream for the standard input of the process.""" - - @property - @abstractmethod - def stdout(self) -> ByteReceiveStream | None: - """The stream for the standard output of the process.""" - - @property - @abstractmethod - def stderr(self) -> ByteReceiveStream | None: - """The stream for the standard error output of the process.""" diff --git a/venv/lib/python3.12/site-packages/anyio/abc/_tasks.py b/venv/lib/python3.12/site-packages/anyio/abc/_tasks.py deleted file mode 100644 index f6e5c40..0000000 --- a/venv/lib/python3.12/site-packages/anyio/abc/_tasks.py +++ /dev/null @@ -1,101 +0,0 @@ -from __future__ import annotations - -import sys -from abc import ABCMeta, abstractmethod -from collections.abc import Awaitable, Callable -from types import TracebackType -from typing import TYPE_CHECKING, Any, Protocol, TypeVar, overload - -if sys.version_info >= (3, 11): - from typing import TypeVarTuple, Unpack -else: - from typing_extensions import TypeVarTuple, Unpack - -if TYPE_CHECKING: - from .._core._tasks import CancelScope - -T_Retval = TypeVar("T_Retval") -T_contra = TypeVar("T_contra", contravariant=True) -PosArgsT = TypeVarTuple("PosArgsT") - - -class TaskStatus(Protocol[T_contra]): - @overload - def started(self: TaskStatus[None]) -> None: ... - - @overload - def started(self, value: T_contra) -> None: ... - - def started(self, value: T_contra | None = None) -> None: - """ - Signal that the task has started. - - :param value: object passed back to the starter of the task - """ - - -class TaskGroup(metaclass=ABCMeta): - """ - Groups several asynchronous tasks together. - - :ivar cancel_scope: the cancel scope inherited by all child tasks - :vartype cancel_scope: CancelScope - - .. note:: On asyncio, support for eager task factories is considered to be - **experimental**. In particular, they don't follow the usual semantics of new - tasks being scheduled on the next iteration of the event loop, and may thus - cause unexpected behavior in code that wasn't written with such semantics in - mind. - """ - - cancel_scope: CancelScope - - @abstractmethod - def start_soon( - self, - func: Callable[[Unpack[PosArgsT]], Awaitable[Any]], - *args: Unpack[PosArgsT], - name: object = None, - ) -> None: - """ - Start a new task in this task group. - - :param func: a coroutine function - :param args: positional arguments to call the function with - :param name: name of the task, for the purposes of introspection and debugging - - .. versionadded:: 3.0 - """ - - @abstractmethod - async def start( - self, - func: Callable[..., Awaitable[Any]], - *args: object, - name: object = None, - ) -> Any: - """ - Start a new task and wait until it signals for readiness. - - :param func: a coroutine function - :param args: positional arguments to call the function with - :param name: name of the task, for the purposes of introspection and debugging - :return: the value passed to ``task_status.started()`` - :raises RuntimeError: if the task finishes without calling - ``task_status.started()`` - - .. versionadded:: 3.0 - """ - - @abstractmethod - async def __aenter__(self) -> TaskGroup: - """Enter the task group context and allow starting new tasks.""" - - @abstractmethod - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> bool | None: - """Exit the task group context waiting for all tasks to finish.""" diff --git a/venv/lib/python3.12/site-packages/anyio/abc/_testing.py b/venv/lib/python3.12/site-packages/anyio/abc/_testing.py deleted file mode 100644 index 7c50ed7..0000000 --- a/venv/lib/python3.12/site-packages/anyio/abc/_testing.py +++ /dev/null @@ -1,65 +0,0 @@ -from __future__ import annotations - -import types -from abc import ABCMeta, abstractmethod -from collections.abc import AsyncGenerator, Callable, Coroutine, Iterable -from typing import Any, TypeVar - -_T = TypeVar("_T") - - -class TestRunner(metaclass=ABCMeta): - """ - Encapsulates a running event loop. Every call made through this object will use the - same event loop. - """ - - def __enter__(self) -> TestRunner: - return self - - @abstractmethod - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: types.TracebackType | None, - ) -> bool | None: ... - - @abstractmethod - def run_asyncgen_fixture( - self, - fixture_func: Callable[..., AsyncGenerator[_T, Any]], - kwargs: dict[str, Any], - ) -> Iterable[_T]: - """ - Run an async generator fixture. - - :param fixture_func: the fixture function - :param kwargs: keyword arguments to call the fixture function with - :return: an iterator yielding the value yielded from the async generator - """ - - @abstractmethod - def run_fixture( - self, - fixture_func: Callable[..., Coroutine[Any, Any, _T]], - kwargs: dict[str, Any], - ) -> _T: - """ - Run an async fixture. - - :param fixture_func: the fixture function - :param kwargs: keyword arguments to call the fixture function with - :return: the return value of the fixture function - """ - - @abstractmethod - def run_test( - self, test_func: Callable[..., Coroutine[Any, Any, Any]], kwargs: dict[str, Any] - ) -> None: - """ - Run an async test function. - - :param test_func: the test function - :param kwargs: keyword arguments to call the test function with - """ diff --git a/venv/lib/python3.12/site-packages/anyio/from_thread.py b/venv/lib/python3.12/site-packages/anyio/from_thread.py deleted file mode 100644 index 6179097..0000000 --- a/venv/lib/python3.12/site-packages/anyio/from_thread.py +++ /dev/null @@ -1,527 +0,0 @@ -from __future__ import annotations - -import sys -from collections.abc import Awaitable, Callable, Generator -from concurrent.futures import Future -from contextlib import ( - AbstractAsyncContextManager, - AbstractContextManager, - contextmanager, -) -from dataclasses import dataclass, field -from inspect import isawaitable -from threading import Lock, Thread, get_ident -from types import TracebackType -from typing import ( - Any, - Generic, - TypeVar, - cast, - overload, -) - -from ._core import _eventloop -from ._core._eventloop import get_async_backend, get_cancelled_exc_class, threadlocals -from ._core._synchronization import Event -from ._core._tasks import CancelScope, create_task_group -from .abc import AsyncBackend -from .abc._tasks import TaskStatus - -if sys.version_info >= (3, 11): - from typing import TypeVarTuple, Unpack -else: - from typing_extensions import TypeVarTuple, Unpack - -T_Retval = TypeVar("T_Retval") -T_co = TypeVar("T_co", covariant=True) -PosArgsT = TypeVarTuple("PosArgsT") - - -def run( - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]], *args: Unpack[PosArgsT] -) -> T_Retval: - """ - Call a coroutine function from a worker thread. - - :param func: a coroutine function - :param args: positional arguments for the callable - :return: the return value of the coroutine function - - """ - try: - async_backend = threadlocals.current_async_backend - token = threadlocals.current_token - except AttributeError: - raise RuntimeError( - "This function can only be run from an AnyIO worker thread" - ) from None - - return async_backend.run_async_from_thread(func, args, token=token) - - -def run_sync( - func: Callable[[Unpack[PosArgsT]], T_Retval], *args: Unpack[PosArgsT] -) -> T_Retval: - """ - Call a function in the event loop thread from a worker thread. - - :param func: a callable - :param args: positional arguments for the callable - :return: the return value of the callable - - """ - try: - async_backend = threadlocals.current_async_backend - token = threadlocals.current_token - except AttributeError: - raise RuntimeError( - "This function can only be run from an AnyIO worker thread" - ) from None - - return async_backend.run_sync_from_thread(func, args, token=token) - - -class _BlockingAsyncContextManager(Generic[T_co], AbstractContextManager): - _enter_future: Future[T_co] - _exit_future: Future[bool | None] - _exit_event: Event - _exit_exc_info: tuple[ - type[BaseException] | None, BaseException | None, TracebackType | None - ] = (None, None, None) - - def __init__( - self, async_cm: AbstractAsyncContextManager[T_co], portal: BlockingPortal - ): - self._async_cm = async_cm - self._portal = portal - - async def run_async_cm(self) -> bool | None: - try: - self._exit_event = Event() - value = await self._async_cm.__aenter__() - except BaseException as exc: - self._enter_future.set_exception(exc) - raise - else: - self._enter_future.set_result(value) - - try: - # Wait for the sync context manager to exit. - # This next statement can raise `get_cancelled_exc_class()` if - # something went wrong in a task group in this async context - # manager. - await self._exit_event.wait() - finally: - # In case of cancellation, it could be that we end up here before - # `_BlockingAsyncContextManager.__exit__` is called, and an - # `_exit_exc_info` has been set. - result = await self._async_cm.__aexit__(*self._exit_exc_info) - return result - - def __enter__(self) -> T_co: - self._enter_future = Future() - self._exit_future = self._portal.start_task_soon(self.run_async_cm) - return self._enter_future.result() - - def __exit__( - self, - __exc_type: type[BaseException] | None, - __exc_value: BaseException | None, - __traceback: TracebackType | None, - ) -> bool | None: - self._exit_exc_info = __exc_type, __exc_value, __traceback - self._portal.call(self._exit_event.set) - return self._exit_future.result() - - -class _BlockingPortalTaskStatus(TaskStatus): - def __init__(self, future: Future): - self._future = future - - def started(self, value: object = None) -> None: - self._future.set_result(value) - - -class BlockingPortal: - """An object that lets external threads run code in an asynchronous event loop.""" - - def __new__(cls) -> BlockingPortal: - return get_async_backend().create_blocking_portal() - - def __init__(self) -> None: - self._event_loop_thread_id: int | None = get_ident() - self._stop_event = Event() - self._task_group = create_task_group() - self._cancelled_exc_class = get_cancelled_exc_class() - - async def __aenter__(self) -> BlockingPortal: - await self._task_group.__aenter__() - return self - - async def __aexit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> bool | None: - await self.stop() - return await self._task_group.__aexit__(exc_type, exc_val, exc_tb) - - def _check_running(self) -> None: - if self._event_loop_thread_id is None: - raise RuntimeError("This portal is not running") - if self._event_loop_thread_id == get_ident(): - raise RuntimeError( - "This method cannot be called from the event loop thread" - ) - - async def sleep_until_stopped(self) -> None: - """Sleep until :meth:`stop` is called.""" - await self._stop_event.wait() - - async def stop(self, cancel_remaining: bool = False) -> None: - """ - Signal the portal to shut down. - - This marks the portal as no longer accepting new calls and exits from - :meth:`sleep_until_stopped`. - - :param cancel_remaining: ``True`` to cancel all the remaining tasks, ``False`` - to let them finish before returning - - """ - self._event_loop_thread_id = None - self._stop_event.set() - if cancel_remaining: - self._task_group.cancel_scope.cancel() - - async def _call_func( - self, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval], - args: tuple[Unpack[PosArgsT]], - kwargs: dict[str, Any], - future: Future[T_Retval], - ) -> None: - def callback(f: Future[T_Retval]) -> None: - if f.cancelled() and self._event_loop_thread_id not in ( - None, - get_ident(), - ): - self.call(scope.cancel) - - try: - retval_or_awaitable = func(*args, **kwargs) - if isawaitable(retval_or_awaitable): - with CancelScope() as scope: - if future.cancelled(): - scope.cancel() - else: - future.add_done_callback(callback) - - retval = await retval_or_awaitable - else: - retval = retval_or_awaitable - except self._cancelled_exc_class: - future.cancel() - future.set_running_or_notify_cancel() - except BaseException as exc: - if not future.cancelled(): - future.set_exception(exc) - - # Let base exceptions fall through - if not isinstance(exc, Exception): - raise - else: - if not future.cancelled(): - future.set_result(retval) - finally: - scope = None # type: ignore[assignment] - - def _spawn_task_from_thread( - self, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval], - args: tuple[Unpack[PosArgsT]], - kwargs: dict[str, Any], - name: object, - future: Future[T_Retval], - ) -> None: - """ - Spawn a new task using the given callable. - - Implementers must ensure that the future is resolved when the task finishes. - - :param func: a callable - :param args: positional arguments to be passed to the callable - :param kwargs: keyword arguments to be passed to the callable - :param name: name of the task (will be coerced to a string if not ``None``) - :param future: a future that will resolve to the return value of the callable, - or the exception raised during its execution - - """ - raise NotImplementedError - - @overload - def call( - self, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]], - *args: Unpack[PosArgsT], - ) -> T_Retval: ... - - @overload - def call( - self, func: Callable[[Unpack[PosArgsT]], T_Retval], *args: Unpack[PosArgsT] - ) -> T_Retval: ... - - def call( - self, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval], - *args: Unpack[PosArgsT], - ) -> T_Retval: - """ - Call the given function in the event loop thread. - - If the callable returns a coroutine object, it is awaited on. - - :param func: any callable - :raises RuntimeError: if the portal is not running or if this method is called - from within the event loop thread - - """ - return cast(T_Retval, self.start_task_soon(func, *args).result()) - - @overload - def start_task_soon( - self, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]], - *args: Unpack[PosArgsT], - name: object = None, - ) -> Future[T_Retval]: ... - - @overload - def start_task_soon( - self, - func: Callable[[Unpack[PosArgsT]], T_Retval], - *args: Unpack[PosArgsT], - name: object = None, - ) -> Future[T_Retval]: ... - - def start_task_soon( - self, - func: Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval], - *args: Unpack[PosArgsT], - name: object = None, - ) -> Future[T_Retval]: - """ - Start a task in the portal's task group. - - The task will be run inside a cancel scope which can be cancelled by cancelling - the returned future. - - :param func: the target function - :param args: positional arguments passed to ``func`` - :param name: name of the task (will be coerced to a string if not ``None``) - :return: a future that resolves with the return value of the callable if the - task completes successfully, or with the exception raised in the task - :raises RuntimeError: if the portal is not running or if this method is called - from within the event loop thread - :rtype: concurrent.futures.Future[T_Retval] - - .. versionadded:: 3.0 - - """ - self._check_running() - f: Future[T_Retval] = Future() - self._spawn_task_from_thread(func, args, {}, name, f) - return f - - def start_task( - self, - func: Callable[..., Awaitable[T_Retval]], - *args: object, - name: object = None, - ) -> tuple[Future[T_Retval], Any]: - """ - Start a task in the portal's task group and wait until it signals for readiness. - - This method works the same way as :meth:`.abc.TaskGroup.start`. - - :param func: the target function - :param args: positional arguments passed to ``func`` - :param name: name of the task (will be coerced to a string if not ``None``) - :return: a tuple of (future, task_status_value) where the ``task_status_value`` - is the value passed to ``task_status.started()`` from within the target - function - :rtype: tuple[concurrent.futures.Future[T_Retval], Any] - - .. versionadded:: 3.0 - - """ - - def task_done(future: Future[T_Retval]) -> None: - if not task_status_future.done(): - if future.cancelled(): - task_status_future.cancel() - elif future.exception(): - task_status_future.set_exception(future.exception()) - else: - exc = RuntimeError( - "Task exited without calling task_status.started()" - ) - task_status_future.set_exception(exc) - - self._check_running() - task_status_future: Future = Future() - task_status = _BlockingPortalTaskStatus(task_status_future) - f: Future = Future() - f.add_done_callback(task_done) - self._spawn_task_from_thread(func, args, {"task_status": task_status}, name, f) - return f, task_status_future.result() - - def wrap_async_context_manager( - self, cm: AbstractAsyncContextManager[T_co] - ) -> AbstractContextManager[T_co]: - """ - Wrap an async context manager as a synchronous context manager via this portal. - - Spawns a task that will call both ``__aenter__()`` and ``__aexit__()``, stopping - in the middle until the synchronous context manager exits. - - :param cm: an asynchronous context manager - :return: a synchronous context manager - - .. versionadded:: 2.1 - - """ - return _BlockingAsyncContextManager(cm, self) - - -@dataclass -class BlockingPortalProvider: - """ - A manager for a blocking portal. Used as a context manager. The first thread to - enter this context manager causes a blocking portal to be started with the specific - parameters, and the last thread to exit causes the portal to be shut down. Thus, - there will be exactly one blocking portal running in this context as long as at - least one thread has entered this context manager. - - The parameters are the same as for :func:`~anyio.run`. - - :param backend: name of the backend - :param backend_options: backend options - - .. versionadded:: 4.4 - """ - - backend: str = "asyncio" - backend_options: dict[str, Any] | None = None - _lock: Lock = field(init=False, default_factory=Lock) - _leases: int = field(init=False, default=0) - _portal: BlockingPortal = field(init=False) - _portal_cm: AbstractContextManager[BlockingPortal] | None = field( - init=False, default=None - ) - - def __enter__(self) -> BlockingPortal: - with self._lock: - if self._portal_cm is None: - self._portal_cm = start_blocking_portal( - self.backend, self.backend_options - ) - self._portal = self._portal_cm.__enter__() - - self._leases += 1 - return self._portal - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> None: - portal_cm: AbstractContextManager[BlockingPortal] | None = None - with self._lock: - assert self._portal_cm - assert self._leases > 0 - self._leases -= 1 - if not self._leases: - portal_cm = self._portal_cm - self._portal_cm = None - del self._portal - - if portal_cm: - portal_cm.__exit__(None, None, None) - - -@contextmanager -def start_blocking_portal( - backend: str = "asyncio", backend_options: dict[str, Any] | None = None -) -> Generator[BlockingPortal, Any, None]: - """ - Start a new event loop in a new thread and run a blocking portal in its main task. - - The parameters are the same as for :func:`~anyio.run`. - - :param backend: name of the backend - :param backend_options: backend options - :return: a context manager that yields a blocking portal - - .. versionchanged:: 3.0 - Usage as a context manager is now required. - - """ - - async def run_portal() -> None: - async with BlockingPortal() as portal_: - future.set_result(portal_) - await portal_.sleep_until_stopped() - - def run_blocking_portal() -> None: - if future.set_running_or_notify_cancel(): - try: - _eventloop.run( - run_portal, backend=backend, backend_options=backend_options - ) - except BaseException as exc: - if not future.done(): - future.set_exception(exc) - - future: Future[BlockingPortal] = Future() - thread = Thread(target=run_blocking_portal, daemon=True) - thread.start() - try: - cancel_remaining_tasks = False - portal = future.result() - try: - yield portal - except BaseException: - cancel_remaining_tasks = True - raise - finally: - try: - portal.call(portal.stop, cancel_remaining_tasks) - except RuntimeError: - pass - finally: - thread.join() - - -def check_cancelled() -> None: - """ - Check if the cancel scope of the host task's running the current worker thread has - been cancelled. - - If the host task's current cancel scope has indeed been cancelled, the - backend-specific cancellation exception will be raised. - - :raises RuntimeError: if the current thread was not spawned by - :func:`.to_thread.run_sync` - - """ - try: - async_backend: AsyncBackend = threadlocals.current_async_backend - except AttributeError: - raise RuntimeError( - "This function can only be run from an AnyIO worker thread" - ) from None - - async_backend.check_cancelled() diff --git a/venv/lib/python3.12/site-packages/anyio/lowlevel.py b/venv/lib/python3.12/site-packages/anyio/lowlevel.py deleted file mode 100644 index 14c7668..0000000 --- a/venv/lib/python3.12/site-packages/anyio/lowlevel.py +++ /dev/null @@ -1,161 +0,0 @@ -from __future__ import annotations - -import enum -from dataclasses import dataclass -from typing import Any, Generic, Literal, TypeVar, overload -from weakref import WeakKeyDictionary - -from ._core._eventloop import get_async_backend - -T = TypeVar("T") -D = TypeVar("D") - - -async def checkpoint() -> None: - """ - Check for cancellation and allow the scheduler to switch to another task. - - Equivalent to (but more efficient than):: - - await checkpoint_if_cancelled() - await cancel_shielded_checkpoint() - - - .. versionadded:: 3.0 - - """ - await get_async_backend().checkpoint() - - -async def checkpoint_if_cancelled() -> None: - """ - Enter a checkpoint if the enclosing cancel scope has been cancelled. - - This does not allow the scheduler to switch to a different task. - - .. versionadded:: 3.0 - - """ - await get_async_backend().checkpoint_if_cancelled() - - -async def cancel_shielded_checkpoint() -> None: - """ - Allow the scheduler to switch to another task but without checking for cancellation. - - Equivalent to (but potentially more efficient than):: - - with CancelScope(shield=True): - await checkpoint() - - - .. versionadded:: 3.0 - - """ - await get_async_backend().cancel_shielded_checkpoint() - - -def current_token() -> object: - """ - Return a backend specific token object that can be used to get back to the event - loop. - - """ - return get_async_backend().current_token() - - -_run_vars: WeakKeyDictionary[Any, dict[str, Any]] = WeakKeyDictionary() -_token_wrappers: dict[Any, _TokenWrapper] = {} - - -@dataclass(frozen=True) -class _TokenWrapper: - __slots__ = "_token", "__weakref__" - _token: object - - -class _NoValueSet(enum.Enum): - NO_VALUE_SET = enum.auto() - - -class RunvarToken(Generic[T]): - __slots__ = "_var", "_value", "_redeemed" - - def __init__(self, var: RunVar[T], value: T | Literal[_NoValueSet.NO_VALUE_SET]): - self._var = var - self._value: T | Literal[_NoValueSet.NO_VALUE_SET] = value - self._redeemed = False - - -class RunVar(Generic[T]): - """ - Like a :class:`~contextvars.ContextVar`, except scoped to the running event loop. - """ - - __slots__ = "_name", "_default" - - NO_VALUE_SET: Literal[_NoValueSet.NO_VALUE_SET] = _NoValueSet.NO_VALUE_SET - - _token_wrappers: set[_TokenWrapper] = set() - - def __init__( - self, name: str, default: T | Literal[_NoValueSet.NO_VALUE_SET] = NO_VALUE_SET - ): - self._name = name - self._default = default - - @property - def _current_vars(self) -> dict[str, T]: - token = current_token() - try: - return _run_vars[token] - except KeyError: - run_vars = _run_vars[token] = {} - return run_vars - - @overload - def get(self, default: D) -> T | D: ... - - @overload - def get(self) -> T: ... - - def get( - self, default: D | Literal[_NoValueSet.NO_VALUE_SET] = NO_VALUE_SET - ) -> T | D: - try: - return self._current_vars[self._name] - except KeyError: - if default is not RunVar.NO_VALUE_SET: - return default - elif self._default is not RunVar.NO_VALUE_SET: - return self._default - - raise LookupError( - f'Run variable "{self._name}" has no value and no default set' - ) - - def set(self, value: T) -> RunvarToken[T]: - current_vars = self._current_vars - token = RunvarToken(self, current_vars.get(self._name, RunVar.NO_VALUE_SET)) - current_vars[self._name] = value - return token - - def reset(self, token: RunvarToken[T]) -> None: - if token._var is not self: - raise ValueError("This token does not belong to this RunVar") - - if token._redeemed: - raise ValueError("This token has already been used") - - if token._value is _NoValueSet.NO_VALUE_SET: - try: - del self._current_vars[self._name] - except KeyError: - pass - else: - self._current_vars[self._name] = token._value - - token._redeemed = True - - def __repr__(self) -> str: - return f"" diff --git a/venv/lib/python3.12/site-packages/anyio/py.typed b/venv/lib/python3.12/site-packages/anyio/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/anyio/pytest_plugin.py b/venv/lib/python3.12/site-packages/anyio/pytest_plugin.py deleted file mode 100644 index 21e4ab2..0000000 --- a/venv/lib/python3.12/site-packages/anyio/pytest_plugin.py +++ /dev/null @@ -1,272 +0,0 @@ -from __future__ import annotations - -import socket -import sys -from collections.abc import Callable, Generator, Iterator -from contextlib import ExitStack, contextmanager -from inspect import isasyncgenfunction, iscoroutinefunction, ismethod -from typing import Any, cast - -import pytest -import sniffio -from _pytest.fixtures import SubRequest -from _pytest.outcomes import Exit - -from ._core._eventloop import get_all_backends, get_async_backend -from ._core._exceptions import iterate_exceptions -from .abc import TestRunner - -if sys.version_info < (3, 11): - from exceptiongroup import ExceptionGroup - -_current_runner: TestRunner | None = None -_runner_stack: ExitStack | None = None -_runner_leases = 0 - - -def extract_backend_and_options(backend: object) -> tuple[str, dict[str, Any]]: - if isinstance(backend, str): - return backend, {} - elif isinstance(backend, tuple) and len(backend) == 2: - if isinstance(backend[0], str) and isinstance(backend[1], dict): - return cast(tuple[str, dict[str, Any]], backend) - - raise TypeError("anyio_backend must be either a string or tuple of (string, dict)") - - -@contextmanager -def get_runner( - backend_name: str, backend_options: dict[str, Any] -) -> Iterator[TestRunner]: - global _current_runner, _runner_leases, _runner_stack - if _current_runner is None: - asynclib = get_async_backend(backend_name) - _runner_stack = ExitStack() - if sniffio.current_async_library_cvar.get(None) is None: - # Since we're in control of the event loop, we can cache the name of the - # async library - token = sniffio.current_async_library_cvar.set(backend_name) - _runner_stack.callback(sniffio.current_async_library_cvar.reset, token) - - backend_options = backend_options or {} - _current_runner = _runner_stack.enter_context( - asynclib.create_test_runner(backend_options) - ) - - _runner_leases += 1 - try: - yield _current_runner - finally: - _runner_leases -= 1 - if not _runner_leases: - assert _runner_stack is not None - _runner_stack.close() - _runner_stack = _current_runner = None - - -def pytest_configure(config: Any) -> None: - config.addinivalue_line( - "markers", - "anyio: mark the (coroutine function) test to be run asynchronously via anyio.", - ) - - -@pytest.hookimpl(hookwrapper=True) -def pytest_fixture_setup(fixturedef: Any, request: Any) -> Generator[Any]: - def wrapper( - *args: Any, anyio_backend: Any, request: SubRequest, **kwargs: Any - ) -> Any: - # Rebind any fixture methods to the request instance - if ( - request.instance - and ismethod(func) - and type(func.__self__) is type(request.instance) - ): - local_func = func.__func__.__get__(request.instance) - else: - local_func = func - - backend_name, backend_options = extract_backend_and_options(anyio_backend) - if has_backend_arg: - kwargs["anyio_backend"] = anyio_backend - - if has_request_arg: - kwargs["request"] = request - - with get_runner(backend_name, backend_options) as runner: - if isasyncgenfunction(local_func): - yield from runner.run_asyncgen_fixture(local_func, kwargs) - else: - yield runner.run_fixture(local_func, kwargs) - - # Only apply this to coroutine functions and async generator functions in requests - # that involve the anyio_backend fixture - func = fixturedef.func - if isasyncgenfunction(func) or iscoroutinefunction(func): - if "anyio_backend" in request.fixturenames: - fixturedef.func = wrapper - original_argname = fixturedef.argnames - - if not (has_backend_arg := "anyio_backend" in fixturedef.argnames): - fixturedef.argnames += ("anyio_backend",) - - if not (has_request_arg := "request" in fixturedef.argnames): - fixturedef.argnames += ("request",) - - try: - return (yield) - finally: - fixturedef.func = func - fixturedef.argnames = original_argname - - return (yield) - - -@pytest.hookimpl(tryfirst=True) -def pytest_pycollect_makeitem(collector: Any, name: Any, obj: Any) -> None: - if collector.istestfunction(obj, name): - inner_func = obj.hypothesis.inner_test if hasattr(obj, "hypothesis") else obj - if iscoroutinefunction(inner_func): - marker = collector.get_closest_marker("anyio") - own_markers = getattr(obj, "pytestmark", ()) - if marker or any(marker.name == "anyio" for marker in own_markers): - pytest.mark.usefixtures("anyio_backend")(obj) - - -@pytest.hookimpl(tryfirst=True) -def pytest_pyfunc_call(pyfuncitem: Any) -> bool | None: - def run_with_hypothesis(**kwargs: Any) -> None: - with get_runner(backend_name, backend_options) as runner: - runner.run_test(original_func, kwargs) - - backend = pyfuncitem.funcargs.get("anyio_backend") - if backend: - backend_name, backend_options = extract_backend_and_options(backend) - - if hasattr(pyfuncitem.obj, "hypothesis"): - # Wrap the inner test function unless it's already wrapped - original_func = pyfuncitem.obj.hypothesis.inner_test - if original_func.__qualname__ != run_with_hypothesis.__qualname__: - if iscoroutinefunction(original_func): - pyfuncitem.obj.hypothesis.inner_test = run_with_hypothesis - - return None - - if iscoroutinefunction(pyfuncitem.obj): - funcargs = pyfuncitem.funcargs - testargs = {arg: funcargs[arg] for arg in pyfuncitem._fixtureinfo.argnames} - with get_runner(backend_name, backend_options) as runner: - try: - runner.run_test(pyfuncitem.obj, testargs) - except ExceptionGroup as excgrp: - for exc in iterate_exceptions(excgrp): - if isinstance(exc, (Exit, KeyboardInterrupt, SystemExit)): - raise exc from excgrp - - raise - - return True - - return None - - -@pytest.fixture(scope="module", params=get_all_backends()) -def anyio_backend(request: Any) -> Any: - return request.param - - -@pytest.fixture -def anyio_backend_name(anyio_backend: Any) -> str: - if isinstance(anyio_backend, str): - return anyio_backend - else: - return anyio_backend[0] - - -@pytest.fixture -def anyio_backend_options(anyio_backend: Any) -> dict[str, Any]: - if isinstance(anyio_backend, str): - return {} - else: - return anyio_backend[1] - - -class FreePortFactory: - """ - Manages port generation based on specified socket kind, ensuring no duplicate - ports are generated. - - This class provides functionality for generating available free ports on the - system. It is initialized with a specific socket kind and can generate ports - for given address families while avoiding reuse of previously generated ports. - - Users should not instantiate this class directly, but use the - ``free_tcp_port_factory`` and ``free_udp_port_factory`` fixtures instead. For simple - uses cases, ``free_tcp_port`` and ``free_udp_port`` can be used instead. - """ - - def __init__(self, kind: socket.SocketKind) -> None: - self._kind = kind - self._generated = set[int]() - - @property - def kind(self) -> socket.SocketKind: - """ - The type of socket connection (e.g., :data:`~socket.SOCK_STREAM` or - :data:`~socket.SOCK_DGRAM`) used to bind for checking port availability - - """ - return self._kind - - def __call__(self, family: socket.AddressFamily | None = None) -> int: - """ - Return an unbound port for the given address family. - - :param family: if omitted, both IPv4 and IPv6 addresses will be tried - :return: a port number - - """ - if family is not None: - families = [family] - else: - families = [socket.AF_INET] - if socket.has_ipv6: - families.append(socket.AF_INET6) - - while True: - port = 0 - with ExitStack() as stack: - for family in families: - sock = stack.enter_context(socket.socket(family, self._kind)) - addr = "::1" if family == socket.AF_INET6 else "127.0.0.1" - try: - sock.bind((addr, port)) - except OSError: - break - - if not port: - port = sock.getsockname()[1] - else: - if port not in self._generated: - self._generated.add(port) - return port - - -@pytest.fixture(scope="session") -def free_tcp_port_factory() -> FreePortFactory: - return FreePortFactory(socket.SOCK_STREAM) - - -@pytest.fixture(scope="session") -def free_udp_port_factory() -> FreePortFactory: - return FreePortFactory(socket.SOCK_DGRAM) - - -@pytest.fixture -def free_tcp_port(free_tcp_port_factory: Callable[[], int]) -> int: - return free_tcp_port_factory() - - -@pytest.fixture -def free_udp_port(free_udp_port_factory: Callable[[], int]) -> int: - return free_udp_port_factory() diff --git a/venv/lib/python3.12/site-packages/anyio/streams/__init__.py b/venv/lib/python3.12/site-packages/anyio/streams/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/anyio/streams/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/streams/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index c65ae7cfbcaac1b3170313a65955dc56cc86b994..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183 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 diff --git a/venv/lib/python3.12/site-packages/anyio/streams/__pycache__/file.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/streams/__pycache__/file.cpython-312.pyc deleted file mode 100644 index 93f98a7f5f7760683789e648cf955059b4c9879e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7524 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 O$+&d(9|Raa{(k_6vz?3p diff --git a/venv/lib/python3.12/site-packages/anyio/streams/__pycache__/memory.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/streams/__pycache__/memory.cpython-312.pyc deleted file mode 100644 index ca9d4bf0d7138d7408e892f4e0308a93034c26c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14944 zcmds8du&_RdB2yue2An-O4Q4GURe??>S@Pz;>eFWmLG9c%dMrvt=yEQd9Py1d?@E$ z*_I-=n$v7@m(KRE#SVg@%77wL?PBh*p#e4wNnI4hHVmYwl=6j(xM==Z|C38&ZH@l1 z?>qOwhbY(ST5Q;{b?&+6`JHpV^F4m&^54qK9Snr|6PwTM4=~Kn@kI}IHNj^8gJqcO zjKBzNl!>upEQ@JV)HG&-r#WhlabsM}GG?LqT+|w~joD)MF*|*?M9X51F$Yasqt2LX z%oQsiE04Ly+>mDz>`_n5JLZj5j8()c$0}pKF(1t@i&n*|$EssBV>R^M5v`5Yjn&0A zjctn6kJZyWXS5;KIM&EACPs7%uA4w7hOs94UM{$Ad2X7tyk?r`g}e$Quf@b1VT8)B zGlEYnziHNL@=((zRNbo9`=hmLpjNHu5}P(bHNEalwFxuUTCz!i7_Y5l+eT>H1Z`Vr+j{l6u5J6YDbV~2>@dJ8&QLs_kVA4L5toJo zCdGN22qF=MgORYTSOoFaDG_qZgpeExM?;dNSjHn_RDhP{qa+j-Plv*1N2e#nfLXB} z5#u6>gcZkdC?*P{Qp$A@U2{hXAMe4v@rIF@8dn5>q5B9wH<`6yIPpA&Ej^ zrt?r-I6gii6EPH1948Y~QQ<%|5k3p#*hfRs*`x9CgyMZgl!M_ZLd3Wnlpz=BupBxE zZ;J2u=?O6`pAf@hEuW30f8nO=nBBbo)%9>^8Ukm6_x z^DIWnYNTvN%8se&vVcQrJSN5xWLld7U6>KvI!TU%CB=;N`}DOqJvBZqlHe39D{NUb z5t0>8EOa5L|TNQ4rx zL|mMS^bZ1KPDN$Ngk3$?AB~*upPZJ@B;woqwmsD^MP#ve5_mB5iYWDm;?t2tzc!ct z7+tNt$!XFAUDK!z5|SUHH<;B;jcKm&esz7Ct6#09aeY&oYr0?8kmefhH#Dzs&7@mz zco_EFB)(d((b}10v!8=n`5O&q(+r!<-7*=H#sXVzRkvI%y=Bp*%a~2DLYcbZ4#EC) zZp;qb?NsXWw;Q=qV`Xx9$)s?Rcm%do5XVEXI>GT!SO(T06+ntohFcSi!1)NUWE)PQ z7PC26t5{f*k&wYKR`>&UWwUWeTxVpXY!;YRFr?f?c9xmYW9#9O$i0u)05Fmb4tGeFiBc8}QsEN} z65Kqp9U>3|oFqoaX)h8|$Md8I9>{-0oFu{EOzTD~*r!(koySOcz~-2TR>oUE96iTLNaUYm8FJMCXR^d;)n!oW6AQVT4XF2mPspV< zV}2gP6pZ95EWpYA4_uw?>4tBR=>}#G!G=Xnj7XcH*mMrzj)~VZ7Z#Nlia2o+tb|MyTc=^<&_IV z56!0ItToA1Cu@hYjLBksU}d)N(u=lR=Z+_<`)R>LyWOJBni5l59K8k9<%^@7nFK4+PfS=q0GU+*1cJZ@g1{>HsLr&(vkY~oP$f9vSq9}!csk(ef~Qlc7Rur2f^s)J z%gdO;e?pDmfqb_nU_2mTYL!j-45R5^m2YO6@{96#366L;0U`#hCy+#k$$prh!ktbe zqKXaF7#g|-hZm11{IOZw;p=$3;8`3lu%#5Rz|NF|ls5$p#XSw;Z1@-W8ZePzc&O*& zD5UbwM0qecnUG|#5h60^$u0R)DVQZF%Djrlup6``=9pEx>x%QTGh+`d+XIWAPucr^ zVh>OTFFm;*0ZkiCj#y#*;x&{&-iPOF`f{+dSDe32vbPMyx2)qNq47tGX8XnRp=zn5mjo9MpLf(cf0>a1>@h zifV|vwY?0+6G+=k=f+~DuqF~Iy$jJCvsTBryjS*oW6!fPY8lA197wes_^~C~avRxr#Tp7MRyy9v!I&4~YHm&+?XFcenjP`#aBEFn^Ib z&%(S+6NaSA4Iegrkr`oNy$#6+>kWvej1U410&~fv_o6?)Yd+7CBTyVDC)kj@j1is~ zf-_XTI_yC`eFq_>aCkNpGn_$sgcSF4;POUJPsu7cM)1(-=dD~nC-lfEcI}l&1?SGD zWf%ItC-Q-?KCMa=I+s3z=s%fXgTd>r`}1hVUZ1qrubI4MJ#Zc}K7Y#RPy0HPuFf?J zQ`Ybs^pop<$+*jUK51-y=g9oAd$s-lz@=(;rfZ*>e|~lM;QT@L%mq@ez+!L8wQG$t zmmgtQYuYk3ovE76bWK;r+m-Tm-S<|ZX`S)*ro6ow@3xe8+wI;Dsy^}_{?c%bx{nz(=t-oa0@}7G&tqXF}+r4Inmq%+2K;LgA0cLi|J-Ca#%KEu$ z93BDE)=k{1X9I#;eGg~142ma1Mx8;u84CyFN)d`O>-zHabg{OS@+dB_ z59lm){hrft;P|1r8{qOZ9Ga`@K`XX@Ewq=JmW>q>tuO~2NIXQKhpGzn&?lbG+uZk^ z-*c{b_9X3l)~f*!g{oEWhrQZ}38Xg!Fn5DcRSmHDh9RuyF$~!L*jrH$Ofz7KgY9p$ zDBZebTk}~!q{yM1^4Oql3HN`(SwslD>Z(U)QUDCugUridR-&pYWhm<{Smwhjfb9gV65^#vF&qiy*f$)4@x~KGHMQU-V;t;PI84%XJbZ>E;)y8< z%-LuZFFf*@bCit03Q#0zIABw`&v3lJ>;iP2`soUHR-Bf|7*y7!xie=y!MzF<>4kzE z*;EpL2b)Ub73fpC01>dMm+@9znf=D>YD3HX!8bo^7(l(tuHM@fDc4gUxq4SUzALX? zel6qKn(}PD{oJx==e_353p?K1{qF8e+rCuWzD(O-s% zYSpIeN3R|I>!Al`cn5XheR|EtcpKNVKQiU(Xaymdsaiq6VwwztEFveaoO=r*Ke|TkSA1tK4YWWwc&pk zN2$b3LhU6^^;qoUg>X=YJ4wZcsdJ&IVx?K9B^(KSm)tFac!8oL1)yOew*l?6&Uc|{ z7V!W$fi9-3TxGZQ>xc4`uHOPAHsUntKn^4=DZLRQDPbg(0&DR)Mm8k&tO3Ic=65)_ zh_T3q6EMrbl@!p1fn}!Q-;#BB#_?jD${>N?GsE#AnOE2gkJx>18)j86aFja#WodFL{L2X)$U2P*1D5z3kC%-T6|?wyx6qLKSIyhL5L`upsc&+ zs=9LQ^0C#*#v7yG`tsXf&NS^vHSI_??z}zv&zs*L{in_kw!Po@!RM3SBlo;5tF;aP zW#h`-Yi3<=4Qq(3!VQA~1-Kc7XVFU6(vK0qD%eMcpz@NPT!hC=J#yEn1E5Y0T?mVl zc(eX8Kg(m^`O!4D zBg?Ut{;aj$vMIZ(($bUdEVt~>Xhv%quB%2fK- zY?!h$6&-73m~t=876ue9&x{4N)<1j^PNtE_04$u_--LH7hWoN5y6viML^ZYtCy zxfvA#!*`&0F)-|3w)+=bQ}*tk*!`*`MDeW$lr-?iW}kxGjU?gk3k(BzX;`is0?H1Z zl-!dLSX7PCa=A>&3$IdE?K(i&bkRI(E(NMQ4oZ>gX4zSDuuP`_Ea+-IoqOgPPUa`4 zny_yY8C5U0$1E9DI$J7_M8WMk57T?ucF@YMVJmrQ`}j{nvH&OM8KWZ zLB*U~ewe%jn>GxJi|Qvgyr=?a5L0L|sW+Klz|?k#lscGQ5CLfX(g*;Guo#Wf&(qXz zCD4B&sGRcdfxn2a2(p3qkGH>S&C{3)LsVqgsa}@`Nf+35dD2Y+0yNnAN7%)`L$nTz z&iPTxo~;@_?XJ9X_VU?`yL;K)z3T6J@9ev0GycJpe=y@8O8JM9pMNRoA4>aA!tL?= zu^YQqeGNL=yf5Y3x8mEs%C}#&|5f>_w<+UoO?g{aylt!Anl&c_PMg|u+TH!o&A2@C zvTCrmraY}_=jMgc_fEZgD$}t))v^o@}cjKT-~2kHYQz~$CfXU(V%=C1v1{$ zJqEXCpA5GyIJzug*R@61HAs{k{GbanfD6#LHH0_Nq=i!79L$vTX7+m-86Xxl2<#<5 ztfyIhT=b;@Dg5?^LK03Z`lIVS&!dPR=HGsy80djKKu{1@NeKLD{0vj#r{Z!Xij_e) zKw;>W5L{G|1l)Y77gmOF&@QetY=sI{4S9rPCi6lB#D)xbBajr*MF`1rh6n!t%4K7X zh64`u#sJORyc+{*ozc%*5GGX03w#Ii6|9U>RD+aM$@eA5Clx3c+*N?PYzO_+r4g>xZj659+FWoG;40hk$)@IaYUf{AeR@C#|F@)E zTNWKD*Y-6NS6;JP!(UHaOQdVIWV~CJy;}ga=YPqVpg_L@=uUaNGv5A`xBs@|{evss z=T^PdYZj>S2pk1(Jver!-aeIS+LeO;o?WX|b=QZk4P~nOQ&rF)S+)CKO<)n=|LqR| zlzMip8ff}0{fY zEaq?9c3`vR2b-UT^qmH*j_5z6o6V3eZIh!h{bXkBr^NbQ`6qY-tRFXU{Ym~~0{uAR z?+x=8m?rsH>XQKdWE@ty0OtQo$WV=nA^?i|zcYnjO#|Jk`_%`yMqFfJbtN7;D1q>I zERO!&sijjZo@bNxXV+sn=qH#_VaB14jkaD|`d>x(BRLfdiX~s&1MwJ2s#>R7mLKa1 z8niYI8-5a8O4Xr&Dhhgk_?b-JO#wo-MIl!+cT+$jPzgQ?q&8*Fe?@;-H7CzPN&)m- z43PrF-S{Fw1=~ps>J>;zik3W%WhBvyEb|x8@G)q6*Rrc?F_d!kf8^>iti;}w2O#)m z&r|nW;VXoE%kcS>|M|54g>>uCRktA#)l1RsDev|b@6Oex?$Q`M!0+4tC>T7Mgek6r z1P~D_`tmJzqEzg?71oCkY%D=kAT5yr>5+LF5*rQSoVi0Wyn#mK<$4 z)Vm$&JC7Z7LsUQ?GB>3UjbWtkaqu=lB(3l&Vk9@7fok{QaQFqLIvh$3Js8W;4mor= zkbt6)9$h;71xRePJO5X}Y4SSG z;mz=GhX4yPWF8{L8BRo_VA|tv%Lp<)!Ot8Nr}1MlQ6hNKD1fb4 z5I2_ya-m{{G?*8p3`-HHBTmfL5Cb=6psJvDvf_sCZHd?yltuU<6f~;9l1i*^4xJ9G zAKu^>J_J!T#U4$ZkAnD*s^&IgVFckQb=whyQoqvKhpA&2(Z%k<6!Hqi$sgJGs6TAl zM{YqL9$U!?F?@W&vOi@u|D5rB%yfOsbpDiS`IzZXG5x>dEUYQZK=dmY!|wW+*_UGW z{gi3_S(*20UAnA(&U)A8oGnq0Li)^X#Nh4Hr&Sq73?B}hH!%he$) z>t3)ea_^QW`wx7uBh~+Wmccx&HYOi{ST=_KDrDR^x$uQlQ(toH{txO>TVKdBm`NKv KFkzA|)_((KKf$p8 diff --git a/venv/lib/python3.12/site-packages/anyio/streams/__pycache__/stapled.cpython-312.pyc b/venv/lib/python3.12/site-packages/anyio/streams/__pycache__/stapled.cpython-312.pyc deleted file mode 100644 index 939f0c46e0c646324ef98269200a05ced2d9241d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7544 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 diff --git a/venv/lib/python3.12/site-packages/anyio/streams/buffered.py b/venv/lib/python3.12/site-packages/anyio/streams/buffered.py deleted file mode 100644 index f5d5e83..0000000 --- a/venv/lib/python3.12/site-packages/anyio/streams/buffered.py +++ /dev/null @@ -1,119 +0,0 @@ -from __future__ import annotations - -from collections.abc import Callable, Mapping -from dataclasses import dataclass, field -from typing import Any - -from .. import ClosedResourceError, DelimiterNotFound, EndOfStream, IncompleteRead -from ..abc import AnyByteReceiveStream, ByteReceiveStream - - -@dataclass(eq=False) -class BufferedByteReceiveStream(ByteReceiveStream): - """ - Wraps any bytes-based receive stream and uses a buffer to provide sophisticated - receiving capabilities in the form of a byte stream. - """ - - receive_stream: AnyByteReceiveStream - _buffer: bytearray = field(init=False, default_factory=bytearray) - _closed: bool = field(init=False, default=False) - - async def aclose(self) -> None: - await self.receive_stream.aclose() - self._closed = True - - @property - def buffer(self) -> bytes: - """The bytes currently in the buffer.""" - return bytes(self._buffer) - - @property - def extra_attributes(self) -> Mapping[Any, Callable[[], Any]]: - return self.receive_stream.extra_attributes - - async def receive(self, max_bytes: int = 65536) -> bytes: - if self._closed: - raise ClosedResourceError - - if self._buffer: - chunk = bytes(self._buffer[:max_bytes]) - del self._buffer[:max_bytes] - return chunk - elif isinstance(self.receive_stream, ByteReceiveStream): - return await self.receive_stream.receive(max_bytes) - else: - # With a bytes-oriented object stream, we need to handle any surplus bytes - # we get from the receive() call - chunk = await self.receive_stream.receive() - if len(chunk) > max_bytes: - # Save the surplus bytes in the buffer - self._buffer.extend(chunk[max_bytes:]) - return chunk[:max_bytes] - else: - return chunk - - async def receive_exactly(self, nbytes: int) -> bytes: - """ - Read exactly the given amount of bytes from the stream. - - :param nbytes: the number of bytes to read - :return: the bytes read - :raises ~anyio.IncompleteRead: if the stream was closed before the requested - amount of bytes could be read from the stream - - """ - while True: - remaining = nbytes - len(self._buffer) - if remaining <= 0: - retval = self._buffer[:nbytes] - del self._buffer[:nbytes] - return bytes(retval) - - try: - if isinstance(self.receive_stream, ByteReceiveStream): - chunk = await self.receive_stream.receive(remaining) - else: - chunk = await self.receive_stream.receive() - except EndOfStream as exc: - raise IncompleteRead from exc - - self._buffer.extend(chunk) - - async def receive_until(self, delimiter: bytes, max_bytes: int) -> bytes: - """ - Read from the stream until the delimiter is found or max_bytes have been read. - - :param delimiter: the marker to look for in the stream - :param max_bytes: maximum number of bytes that will be read before raising - :exc:`~anyio.DelimiterNotFound` - :return: the bytes read (not including the delimiter) - :raises ~anyio.IncompleteRead: if the stream was closed before the delimiter - was found - :raises ~anyio.DelimiterNotFound: if the delimiter is not found within the - bytes read up to the maximum allowed - - """ - delimiter_size = len(delimiter) - offset = 0 - while True: - # Check if the delimiter can be found in the current buffer - index = self._buffer.find(delimiter, offset) - if index >= 0: - found = self._buffer[:index] - del self._buffer[: index + len(delimiter) :] - return bytes(found) - - # Check if the buffer is already at or over the limit - if len(self._buffer) >= max_bytes: - raise DelimiterNotFound(max_bytes) - - # Read more data into the buffer from the socket - try: - data = await self.receive_stream.receive() - except EndOfStream as exc: - raise IncompleteRead from exc - - # Move the offset forward and add the new data to the buffer - offset = max(len(self._buffer) - delimiter_size + 1, 0) - self._buffer.extend(data) diff --git a/venv/lib/python3.12/site-packages/anyio/streams/file.py b/venv/lib/python3.12/site-packages/anyio/streams/file.py deleted file mode 100644 index f492464..0000000 --- a/venv/lib/python3.12/site-packages/anyio/streams/file.py +++ /dev/null @@ -1,148 +0,0 @@ -from __future__ import annotations - -from collections.abc import Callable, Mapping -from io import SEEK_SET, UnsupportedOperation -from os import PathLike -from pathlib import Path -from typing import Any, BinaryIO, cast - -from .. import ( - BrokenResourceError, - ClosedResourceError, - EndOfStream, - TypedAttributeSet, - to_thread, - typed_attribute, -) -from ..abc import ByteReceiveStream, ByteSendStream - - -class FileStreamAttribute(TypedAttributeSet): - #: the open file descriptor - file: BinaryIO = typed_attribute() - #: the path of the file on the file system, if available (file must be a real file) - path: Path = typed_attribute() - #: the file number, if available (file must be a real file or a TTY) - fileno: int = typed_attribute() - - -class _BaseFileStream: - def __init__(self, file: BinaryIO): - self._file = file - - async def aclose(self) -> None: - await to_thread.run_sync(self._file.close) - - @property - def extra_attributes(self) -> Mapping[Any, Callable[[], Any]]: - attributes: dict[Any, Callable[[], Any]] = { - FileStreamAttribute.file: lambda: self._file, - } - - if hasattr(self._file, "name"): - attributes[FileStreamAttribute.path] = lambda: Path(self._file.name) - - try: - self._file.fileno() - except UnsupportedOperation: - pass - else: - attributes[FileStreamAttribute.fileno] = lambda: self._file.fileno() - - return attributes - - -class FileReadStream(_BaseFileStream, ByteReceiveStream): - """ - A byte stream that reads from a file in the file system. - - :param file: a file that has been opened for reading in binary mode - - .. versionadded:: 3.0 - """ - - @classmethod - async def from_path(cls, path: str | PathLike[str]) -> FileReadStream: - """ - Create a file read stream by opening the given file. - - :param path: path of the file to read from - - """ - file = await to_thread.run_sync(Path(path).open, "rb") - return cls(cast(BinaryIO, file)) - - async def receive(self, max_bytes: int = 65536) -> bytes: - try: - data = await to_thread.run_sync(self._file.read, max_bytes) - except ValueError: - raise ClosedResourceError from None - except OSError as exc: - raise BrokenResourceError from exc - - if data: - return data - else: - raise EndOfStream - - async def seek(self, position: int, whence: int = SEEK_SET) -> int: - """ - Seek the file to the given position. - - .. seealso:: :meth:`io.IOBase.seek` - - .. note:: Not all file descriptors are seekable. - - :param position: position to seek the file to - :param whence: controls how ``position`` is interpreted - :return: the new absolute position - :raises OSError: if the file is not seekable - - """ - return await to_thread.run_sync(self._file.seek, position, whence) - - async def tell(self) -> int: - """ - Return the current stream position. - - .. note:: Not all file descriptors are seekable. - - :return: the current absolute position - :raises OSError: if the file is not seekable - - """ - return await to_thread.run_sync(self._file.tell) - - -class FileWriteStream(_BaseFileStream, ByteSendStream): - """ - A byte stream that writes to a file in the file system. - - :param file: a file that has been opened for writing in binary mode - - .. versionadded:: 3.0 - """ - - @classmethod - async def from_path( - cls, path: str | PathLike[str], append: bool = False - ) -> FileWriteStream: - """ - Create a file write stream by opening the given file for writing. - - :param path: path of the file to write to - :param append: if ``True``, open the file for appending; if ``False``, any - existing file at the given path will be truncated - - """ - mode = "ab" if append else "wb" - file = await to_thread.run_sync(Path(path).open, mode) - return cls(cast(BinaryIO, file)) - - async def send(self, item: bytes) -> None: - try: - await to_thread.run_sync(self._file.write, item) - except ValueError: - raise ClosedResourceError from None - except OSError as exc: - raise BrokenResourceError from exc diff --git a/venv/lib/python3.12/site-packages/anyio/streams/memory.py b/venv/lib/python3.12/site-packages/anyio/streams/memory.py deleted file mode 100644 index 83bf1d9..0000000 --- a/venv/lib/python3.12/site-packages/anyio/streams/memory.py +++ /dev/null @@ -1,317 +0,0 @@ -from __future__ import annotations - -import warnings -from collections import OrderedDict, deque -from dataclasses import dataclass, field -from types import TracebackType -from typing import Generic, NamedTuple, TypeVar - -from .. import ( - BrokenResourceError, - ClosedResourceError, - EndOfStream, - WouldBlock, -) -from .._core._testing import TaskInfo, get_current_task -from ..abc import Event, ObjectReceiveStream, ObjectSendStream -from ..lowlevel import checkpoint - -T_Item = TypeVar("T_Item") -T_co = TypeVar("T_co", covariant=True) -T_contra = TypeVar("T_contra", contravariant=True) - - -class MemoryObjectStreamStatistics(NamedTuple): - current_buffer_used: int #: number of items stored in the buffer - #: maximum number of items that can be stored on this stream (or :data:`math.inf`) - max_buffer_size: float - open_send_streams: int #: number of unclosed clones of the send stream - open_receive_streams: int #: number of unclosed clones of the receive stream - #: number of tasks blocked on :meth:`MemoryObjectSendStream.send` - tasks_waiting_send: int - #: number of tasks blocked on :meth:`MemoryObjectReceiveStream.receive` - tasks_waiting_receive: int - - -@dataclass(eq=False) -class MemoryObjectItemReceiver(Generic[T_Item]): - task_info: TaskInfo = field(init=False, default_factory=get_current_task) - item: T_Item = field(init=False) - - def __repr__(self) -> str: - # When item is not defined, we get following error with default __repr__: - # AttributeError: 'MemoryObjectItemReceiver' object has no attribute 'item' - item = getattr(self, "item", None) - return f"{self.__class__.__name__}(task_info={self.task_info}, item={item!r})" - - -@dataclass(eq=False) -class MemoryObjectStreamState(Generic[T_Item]): - max_buffer_size: float = field() - buffer: deque[T_Item] = field(init=False, default_factory=deque) - open_send_channels: int = field(init=False, default=0) - open_receive_channels: int = field(init=False, default=0) - waiting_receivers: OrderedDict[Event, MemoryObjectItemReceiver[T_Item]] = field( - init=False, default_factory=OrderedDict - ) - waiting_senders: OrderedDict[Event, T_Item] = field( - init=False, default_factory=OrderedDict - ) - - def statistics(self) -> MemoryObjectStreamStatistics: - return MemoryObjectStreamStatistics( - len(self.buffer), - self.max_buffer_size, - self.open_send_channels, - self.open_receive_channels, - len(self.waiting_senders), - len(self.waiting_receivers), - ) - - -@dataclass(eq=False) -class MemoryObjectReceiveStream(Generic[T_co], ObjectReceiveStream[T_co]): - _state: MemoryObjectStreamState[T_co] - _closed: bool = field(init=False, default=False) - - def __post_init__(self) -> None: - self._state.open_receive_channels += 1 - - def receive_nowait(self) -> T_co: - """ - Receive the next item if it can be done without waiting. - - :return: the received item - :raises ~anyio.ClosedResourceError: if this send stream has been closed - :raises ~anyio.EndOfStream: if the buffer is empty and this stream has been - closed from the sending end - :raises ~anyio.WouldBlock: if there are no items in the buffer and no tasks - waiting to send - - """ - if self._closed: - raise ClosedResourceError - - if self._state.waiting_senders: - # Get the item from the next sender - send_event, item = self._state.waiting_senders.popitem(last=False) - self._state.buffer.append(item) - send_event.set() - - if self._state.buffer: - return self._state.buffer.popleft() - elif not self._state.open_send_channels: - raise EndOfStream - - raise WouldBlock - - async def receive(self) -> T_co: - await checkpoint() - try: - return self.receive_nowait() - except WouldBlock: - # Add ourselves in the queue - receive_event = Event() - receiver = MemoryObjectItemReceiver[T_co]() - self._state.waiting_receivers[receive_event] = receiver - - try: - await receive_event.wait() - finally: - self._state.waiting_receivers.pop(receive_event, None) - - try: - return receiver.item - except AttributeError: - raise EndOfStream from None - - def clone(self) -> MemoryObjectReceiveStream[T_co]: - """ - Create a clone of this receive stream. - - Each clone can be closed separately. Only when all clones have been closed will - the receiving end of the memory stream be considered closed by the sending ends. - - :return: the cloned stream - - """ - if self._closed: - raise ClosedResourceError - - return MemoryObjectReceiveStream(_state=self._state) - - def close(self) -> None: - """ - Close the stream. - - This works the exact same way as :meth:`aclose`, but is provided as a special - case for the benefit of synchronous callbacks. - - """ - if not self._closed: - self._closed = True - self._state.open_receive_channels -= 1 - if self._state.open_receive_channels == 0: - send_events = list(self._state.waiting_senders.keys()) - for event in send_events: - event.set() - - async def aclose(self) -> None: - self.close() - - def statistics(self) -> MemoryObjectStreamStatistics: - """ - Return statistics about the current state of this stream. - - .. versionadded:: 3.0 - """ - return self._state.statistics() - - def __enter__(self) -> MemoryObjectReceiveStream[T_co]: - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> None: - self.close() - - def __del__(self) -> None: - if not self._closed: - warnings.warn( - f"Unclosed <{self.__class__.__name__} at {id(self):x}>", - ResourceWarning, - source=self, - ) - - -@dataclass(eq=False) -class MemoryObjectSendStream(Generic[T_contra], ObjectSendStream[T_contra]): - _state: MemoryObjectStreamState[T_contra] - _closed: bool = field(init=False, default=False) - - def __post_init__(self) -> None: - self._state.open_send_channels += 1 - - def send_nowait(self, item: T_contra) -> None: - """ - Send an item immediately if it can be done without waiting. - - :param item: the item to send - :raises ~anyio.ClosedResourceError: if this send stream has been closed - :raises ~anyio.BrokenResourceError: if the stream has been closed from the - receiving end - :raises ~anyio.WouldBlock: if the buffer is full and there are no tasks waiting - to receive - - """ - if self._closed: - raise ClosedResourceError - if not self._state.open_receive_channels: - raise BrokenResourceError - - while self._state.waiting_receivers: - receive_event, receiver = self._state.waiting_receivers.popitem(last=False) - if not receiver.task_info.has_pending_cancellation(): - receiver.item = item - receive_event.set() - return - - if len(self._state.buffer) < self._state.max_buffer_size: - self._state.buffer.append(item) - else: - raise WouldBlock - - async def send(self, item: T_contra) -> None: - """ - Send an item to the stream. - - If the buffer is full, this method blocks until there is again room in the - buffer or the item can be sent directly to a receiver. - - :param item: the item to send - :raises ~anyio.ClosedResourceError: if this send stream has been closed - :raises ~anyio.BrokenResourceError: if the stream has been closed from the - receiving end - - """ - await checkpoint() - try: - self.send_nowait(item) - except WouldBlock: - # Wait until there's someone on the receiving end - send_event = Event() - self._state.waiting_senders[send_event] = item - try: - await send_event.wait() - except BaseException: - self._state.waiting_senders.pop(send_event, None) - raise - - if send_event in self._state.waiting_senders: - del self._state.waiting_senders[send_event] - raise BrokenResourceError from None - - def clone(self) -> MemoryObjectSendStream[T_contra]: - """ - Create a clone of this send stream. - - Each clone can be closed separately. Only when all clones have been closed will - the sending end of the memory stream be considered closed by the receiving ends. - - :return: the cloned stream - - """ - if self._closed: - raise ClosedResourceError - - return MemoryObjectSendStream(_state=self._state) - - def close(self) -> None: - """ - Close the stream. - - This works the exact same way as :meth:`aclose`, but is provided as a special - case for the benefit of synchronous callbacks. - - """ - if not self._closed: - self._closed = True - self._state.open_send_channels -= 1 - if self._state.open_send_channels == 0: - receive_events = list(self._state.waiting_receivers.keys()) - self._state.waiting_receivers.clear() - for event in receive_events: - event.set() - - async def aclose(self) -> None: - self.close() - - def statistics(self) -> MemoryObjectStreamStatistics: - """ - Return statistics about the current state of this stream. - - .. versionadded:: 3.0 - """ - return self._state.statistics() - - def __enter__(self) -> MemoryObjectSendStream[T_contra]: - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> None: - self.close() - - def __del__(self) -> None: - if not self._closed: - warnings.warn( - f"Unclosed <{self.__class__.__name__} at {id(self):x}>", - ResourceWarning, - source=self, - ) diff --git a/venv/lib/python3.12/site-packages/anyio/streams/stapled.py b/venv/lib/python3.12/site-packages/anyio/streams/stapled.py deleted file mode 100644 index 80f64a2..0000000 --- a/venv/lib/python3.12/site-packages/anyio/streams/stapled.py +++ /dev/null @@ -1,141 +0,0 @@ -from __future__ import annotations - -from collections.abc import Callable, Mapping, Sequence -from dataclasses import dataclass -from typing import Any, Generic, TypeVar - -from ..abc import ( - ByteReceiveStream, - ByteSendStream, - ByteStream, - Listener, - ObjectReceiveStream, - ObjectSendStream, - ObjectStream, - TaskGroup, -) - -T_Item = TypeVar("T_Item") -T_Stream = TypeVar("T_Stream") - - -@dataclass(eq=False) -class StapledByteStream(ByteStream): - """ - Combines two byte streams into a single, bidirectional byte stream. - - Extra attributes will be provided from both streams, with the receive stream - providing the values in case of a conflict. - - :param ByteSendStream send_stream: the sending byte stream - :param ByteReceiveStream receive_stream: the receiving byte stream - """ - - send_stream: ByteSendStream - receive_stream: ByteReceiveStream - - async def receive(self, max_bytes: int = 65536) -> bytes: - return await self.receive_stream.receive(max_bytes) - - async def send(self, item: bytes) -> None: - await self.send_stream.send(item) - - async def send_eof(self) -> None: - await self.send_stream.aclose() - - async def aclose(self) -> None: - await self.send_stream.aclose() - await self.receive_stream.aclose() - - @property - def extra_attributes(self) -> Mapping[Any, Callable[[], Any]]: - return { - **self.send_stream.extra_attributes, - **self.receive_stream.extra_attributes, - } - - -@dataclass(eq=False) -class StapledObjectStream(Generic[T_Item], ObjectStream[T_Item]): - """ - Combines two object streams into a single, bidirectional object stream. - - Extra attributes will be provided from both streams, with the receive stream - providing the values in case of a conflict. - - :param ObjectSendStream send_stream: the sending object stream - :param ObjectReceiveStream receive_stream: the receiving object stream - """ - - send_stream: ObjectSendStream[T_Item] - receive_stream: ObjectReceiveStream[T_Item] - - async def receive(self) -> T_Item: - return await self.receive_stream.receive() - - async def send(self, item: T_Item) -> None: - await self.send_stream.send(item) - - async def send_eof(self) -> None: - await self.send_stream.aclose() - - async def aclose(self) -> None: - await self.send_stream.aclose() - await self.receive_stream.aclose() - - @property - def extra_attributes(self) -> Mapping[Any, Callable[[], Any]]: - return { - **self.send_stream.extra_attributes, - **self.receive_stream.extra_attributes, - } - - -@dataclass(eq=False) -class MultiListener(Generic[T_Stream], Listener[T_Stream]): - """ - Combines multiple listeners into one, serving connections from all of them at once. - - Any MultiListeners in the given collection of listeners will have their listeners - moved into this one. - - Extra attributes are provided from each listener, with each successive listener - overriding any conflicting attributes from the previous one. - - :param listeners: listeners to serve - :type listeners: Sequence[Listener[T_Stream]] - """ - - listeners: Sequence[Listener[T_Stream]] - - def __post_init__(self) -> None: - listeners: list[Listener[T_Stream]] = [] - for listener in self.listeners: - if isinstance(listener, MultiListener): - listeners.extend(listener.listeners) - del listener.listeners[:] # type: ignore[attr-defined] - else: - listeners.append(listener) - - self.listeners = listeners - - async def serve( - self, handler: Callable[[T_Stream], Any], task_group: TaskGroup | None = None - ) -> None: - from .. import create_task_group - - async with create_task_group() as tg: - for listener in self.listeners: - tg.start_soon(listener.serve, handler, task_group) - - async def aclose(self) -> None: - for listener in self.listeners: - await listener.aclose() - - @property - def extra_attributes(self) -> Mapping[Any, Callable[[], Any]]: - attributes: dict = {} - for listener in self.listeners: - attributes.update(listener.extra_attributes) - - return attributes diff --git a/venv/lib/python3.12/site-packages/anyio/streams/text.py b/venv/lib/python3.12/site-packages/anyio/streams/text.py deleted file mode 100644 index f1a1127..0000000 --- a/venv/lib/python3.12/site-packages/anyio/streams/text.py +++ /dev/null @@ -1,147 +0,0 @@ -from __future__ import annotations - -import codecs -from collections.abc import Callable, Mapping -from dataclasses import InitVar, dataclass, field -from typing import Any - -from ..abc import ( - AnyByteReceiveStream, - AnyByteSendStream, - AnyByteStream, - ObjectReceiveStream, - ObjectSendStream, - ObjectStream, -) - - -@dataclass(eq=False) -class TextReceiveStream(ObjectReceiveStream[str]): - """ - Stream wrapper that decodes bytes to strings using the given encoding. - - Decoding is done using :class:`~codecs.IncrementalDecoder` which returns any - completely received unicode characters as soon as they come in. - - :param transport_stream: any bytes-based receive stream - :param encoding: character encoding to use for decoding bytes to strings (defaults - to ``utf-8``) - :param errors: handling scheme for decoding errors (defaults to ``strict``; see the - `codecs module documentation`_ for a comprehensive list of options) - - .. _codecs module documentation: - https://docs.python.org/3/library/codecs.html#codec-objects - """ - - transport_stream: AnyByteReceiveStream - encoding: InitVar[str] = "utf-8" - errors: InitVar[str] = "strict" - _decoder: codecs.IncrementalDecoder = field(init=False) - - def __post_init__(self, encoding: str, errors: str) -> None: - decoder_class = codecs.getincrementaldecoder(encoding) - self._decoder = decoder_class(errors=errors) - - async def receive(self) -> str: - while True: - chunk = await self.transport_stream.receive() - decoded = self._decoder.decode(chunk) - if decoded: - return decoded - - async def aclose(self) -> None: - await self.transport_stream.aclose() - self._decoder.reset() - - @property - def extra_attributes(self) -> Mapping[Any, Callable[[], Any]]: - return self.transport_stream.extra_attributes - - -@dataclass(eq=False) -class TextSendStream(ObjectSendStream[str]): - """ - Sends strings to the wrapped stream as bytes using the given encoding. - - :param AnyByteSendStream transport_stream: any bytes-based send stream - :param str encoding: character encoding to use for encoding strings to bytes - (defaults to ``utf-8``) - :param str errors: handling scheme for encoding errors (defaults to ``strict``; see - the `codecs module documentation`_ for a comprehensive list of options) - - .. _codecs module documentation: - https://docs.python.org/3/library/codecs.html#codec-objects - """ - - transport_stream: AnyByteSendStream - encoding: InitVar[str] = "utf-8" - errors: str = "strict" - _encoder: Callable[..., tuple[bytes, int]] = field(init=False) - - def __post_init__(self, encoding: str) -> None: - self._encoder = codecs.getencoder(encoding) - - async def send(self, item: str) -> None: - encoded = self._encoder(item, self.errors)[0] - await self.transport_stream.send(encoded) - - async def aclose(self) -> None: - await self.transport_stream.aclose() - - @property - def extra_attributes(self) -> Mapping[Any, Callable[[], Any]]: - return self.transport_stream.extra_attributes - - -@dataclass(eq=False) -class TextStream(ObjectStream[str]): - """ - A bidirectional stream that decodes bytes to strings on receive and encodes strings - to bytes on send. - - Extra attributes will be provided from both streams, with the receive stream - providing the values in case of a conflict. - - :param AnyByteStream transport_stream: any bytes-based stream - :param str encoding: character encoding to use for encoding/decoding strings to/from - bytes (defaults to ``utf-8``) - :param str errors: handling scheme for encoding errors (defaults to ``strict``; see - the `codecs module documentation`_ for a comprehensive list of options) - - .. _codecs module documentation: - https://docs.python.org/3/library/codecs.html#codec-objects - """ - - transport_stream: AnyByteStream - encoding: InitVar[str] = "utf-8" - errors: InitVar[str] = "strict" - _receive_stream: TextReceiveStream = field(init=False) - _send_stream: TextSendStream = field(init=False) - - def __post_init__(self, encoding: str, errors: str) -> None: - self._receive_stream = TextReceiveStream( - self.transport_stream, encoding=encoding, errors=errors - ) - self._send_stream = TextSendStream( - self.transport_stream, encoding=encoding, errors=errors - ) - - async def receive(self) -> str: - return await self._receive_stream.receive() - - async def send(self, item: str) -> None: - await self._send_stream.send(item) - - async def send_eof(self) -> None: - await self.transport_stream.send_eof() - - async def aclose(self) -> None: - await self._send_stream.aclose() - await self._receive_stream.aclose() - - @property - def extra_attributes(self) -> Mapping[Any, Callable[[], Any]]: - return { - **self._send_stream.extra_attributes, - **self._receive_stream.extra_attributes, - } diff --git a/venv/lib/python3.12/site-packages/anyio/streams/tls.py b/venv/lib/python3.12/site-packages/anyio/streams/tls.py deleted file mode 100644 index 70a41cc..0000000 --- a/venv/lib/python3.12/site-packages/anyio/streams/tls.py +++ /dev/null @@ -1,352 +0,0 @@ -from __future__ import annotations - -import logging -import re -import ssl -import sys -from collections.abc import Callable, Mapping -from dataclasses import dataclass -from functools import wraps -from typing import Any, TypeVar - -from .. import ( - BrokenResourceError, - EndOfStream, - aclose_forcefully, - get_cancelled_exc_class, - to_thread, -) -from .._core._typedattr import TypedAttributeSet, typed_attribute -from ..abc import AnyByteStream, ByteStream, Listener, TaskGroup - -if sys.version_info >= (3, 11): - from typing import TypeVarTuple, Unpack -else: - from typing_extensions import TypeVarTuple, Unpack - -T_Retval = TypeVar("T_Retval") -PosArgsT = TypeVarTuple("PosArgsT") -_PCTRTT = tuple[tuple[str, str], ...] -_PCTRTTT = tuple[_PCTRTT, ...] - - -class TLSAttribute(TypedAttributeSet): - """Contains Transport Layer Security related attributes.""" - - #: the selected ALPN protocol - alpn_protocol: str | None = typed_attribute() - #: the channel binding for type ``tls-unique`` - channel_binding_tls_unique: bytes = typed_attribute() - #: the selected cipher - cipher: tuple[str, str, int] = typed_attribute() - #: the peer certificate in dictionary form (see :meth:`ssl.SSLSocket.getpeercert` - # for more information) - peer_certificate: None | (dict[str, str | _PCTRTTT | _PCTRTT]) = typed_attribute() - #: the peer certificate in binary form - peer_certificate_binary: bytes | None = typed_attribute() - #: ``True`` if this is the server side of the connection - server_side: bool = typed_attribute() - #: ciphers shared by the client during the TLS handshake (``None`` if this is the - #: client side) - shared_ciphers: list[tuple[str, str, int]] | None = typed_attribute() - #: the :class:`~ssl.SSLObject` used for encryption - ssl_object: ssl.SSLObject = typed_attribute() - #: ``True`` if this stream does (and expects) a closing TLS handshake when the - #: stream is being closed - standard_compatible: bool = typed_attribute() - #: the TLS protocol version (e.g. ``TLSv1.2``) - tls_version: str = typed_attribute() - - -@dataclass(eq=False) -class TLSStream(ByteStream): - """ - A stream wrapper that encrypts all sent data and decrypts received data. - - This class has no public initializer; use :meth:`wrap` instead. - All extra attributes from :class:`~TLSAttribute` are supported. - - :var AnyByteStream transport_stream: the wrapped stream - - """ - - transport_stream: AnyByteStream - standard_compatible: bool - _ssl_object: ssl.SSLObject - _read_bio: ssl.MemoryBIO - _write_bio: ssl.MemoryBIO - - @classmethod - async def wrap( - cls, - transport_stream: AnyByteStream, - *, - server_side: bool | None = None, - hostname: str | None = None, - ssl_context: ssl.SSLContext | None = None, - standard_compatible: bool = True, - ) -> TLSStream: - """ - Wrap an existing stream with Transport Layer Security. - - This performs a TLS handshake with the peer. - - :param transport_stream: a bytes-transporting stream to wrap - :param server_side: ``True`` if this is the server side of the connection, - ``False`` if this is the client side (if omitted, will be set to ``False`` - if ``hostname`` has been provided, ``False`` otherwise). Used only to create - a default context when an explicit context has not been provided. - :param hostname: host name of the peer (if host name checking is desired) - :param ssl_context: the SSLContext object to use (if not provided, a secure - default will be created) - :param standard_compatible: if ``False``, skip the closing handshake when - closing the connection, and don't raise an exception if the peer does the - same - :raises ~ssl.SSLError: if the TLS handshake fails - - """ - if server_side is None: - server_side = not hostname - - if not ssl_context: - purpose = ( - ssl.Purpose.CLIENT_AUTH if server_side else ssl.Purpose.SERVER_AUTH - ) - ssl_context = ssl.create_default_context(purpose) - - # Re-enable detection of unexpected EOFs if it was disabled by Python - if hasattr(ssl, "OP_IGNORE_UNEXPECTED_EOF"): - ssl_context.options &= ~ssl.OP_IGNORE_UNEXPECTED_EOF - - bio_in = ssl.MemoryBIO() - bio_out = ssl.MemoryBIO() - - # External SSLContext implementations may do blocking I/O in wrap_bio(), - # but the standard library implementation won't - if type(ssl_context) is ssl.SSLContext: - ssl_object = ssl_context.wrap_bio( - bio_in, bio_out, server_side=server_side, server_hostname=hostname - ) - else: - ssl_object = await to_thread.run_sync( - ssl_context.wrap_bio, - bio_in, - bio_out, - server_side, - hostname, - None, - ) - - wrapper = cls( - transport_stream=transport_stream, - standard_compatible=standard_compatible, - _ssl_object=ssl_object, - _read_bio=bio_in, - _write_bio=bio_out, - ) - await wrapper._call_sslobject_method(ssl_object.do_handshake) - return wrapper - - async def _call_sslobject_method( - self, func: Callable[[Unpack[PosArgsT]], T_Retval], *args: Unpack[PosArgsT] - ) -> T_Retval: - while True: - try: - result = func(*args) - except ssl.SSLWantReadError: - try: - # Flush any pending writes first - if self._write_bio.pending: - await self.transport_stream.send(self._write_bio.read()) - - data = await self.transport_stream.receive() - except EndOfStream: - self._read_bio.write_eof() - except OSError as exc: - self._read_bio.write_eof() - self._write_bio.write_eof() - raise BrokenResourceError from exc - else: - self._read_bio.write(data) - except ssl.SSLWantWriteError: - await self.transport_stream.send(self._write_bio.read()) - except ssl.SSLSyscallError as exc: - self._read_bio.write_eof() - self._write_bio.write_eof() - raise BrokenResourceError from exc - except ssl.SSLError as exc: - self._read_bio.write_eof() - self._write_bio.write_eof() - if isinstance(exc, ssl.SSLEOFError) or ( - exc.strerror and "UNEXPECTED_EOF_WHILE_READING" in exc.strerror - ): - if self.standard_compatible: - raise BrokenResourceError from exc - else: - raise EndOfStream from None - - raise - else: - # Flush any pending writes first - if self._write_bio.pending: - await self.transport_stream.send(self._write_bio.read()) - - return result - - async def unwrap(self) -> tuple[AnyByteStream, bytes]: - """ - Does the TLS closing handshake. - - :return: a tuple of (wrapped byte stream, bytes left in the read buffer) - - """ - await self._call_sslobject_method(self._ssl_object.unwrap) - self._read_bio.write_eof() - self._write_bio.write_eof() - return self.transport_stream, self._read_bio.read() - - async def aclose(self) -> None: - if self.standard_compatible: - try: - await self.unwrap() - except BaseException: - await aclose_forcefully(self.transport_stream) - raise - - await self.transport_stream.aclose() - - async def receive(self, max_bytes: int = 65536) -> bytes: - data = await self._call_sslobject_method(self._ssl_object.read, max_bytes) - if not data: - raise EndOfStream - - return data - - async def send(self, item: bytes) -> None: - await self._call_sslobject_method(self._ssl_object.write, item) - - async def send_eof(self) -> None: - tls_version = self.extra(TLSAttribute.tls_version) - match = re.match(r"TLSv(\d+)(?:\.(\d+))?", tls_version) - if match: - major, minor = int(match.group(1)), int(match.group(2) or 0) - if (major, minor) < (1, 3): - raise NotImplementedError( - f"send_eof() requires at least TLSv1.3; current " - f"session uses {tls_version}" - ) - - raise NotImplementedError( - "send_eof() has not yet been implemented for TLS streams" - ) - - @property - def extra_attributes(self) -> Mapping[Any, Callable[[], Any]]: - return { - **self.transport_stream.extra_attributes, - TLSAttribute.alpn_protocol: self._ssl_object.selected_alpn_protocol, - TLSAttribute.channel_binding_tls_unique: ( - self._ssl_object.get_channel_binding - ), - TLSAttribute.cipher: self._ssl_object.cipher, - TLSAttribute.peer_certificate: lambda: self._ssl_object.getpeercert(False), - TLSAttribute.peer_certificate_binary: lambda: self._ssl_object.getpeercert( - True - ), - TLSAttribute.server_side: lambda: self._ssl_object.server_side, - TLSAttribute.shared_ciphers: lambda: self._ssl_object.shared_ciphers() - if self._ssl_object.server_side - else None, - TLSAttribute.standard_compatible: lambda: self.standard_compatible, - TLSAttribute.ssl_object: lambda: self._ssl_object, - TLSAttribute.tls_version: self._ssl_object.version, - } - - -@dataclass(eq=False) -class TLSListener(Listener[TLSStream]): - """ - A convenience listener that wraps another listener and auto-negotiates a TLS session - on every accepted connection. - - If the TLS handshake times out or raises an exception, - :meth:`handle_handshake_error` is called to do whatever post-mortem processing is - deemed necessary. - - Supports only the :attr:`~TLSAttribute.standard_compatible` extra attribute. - - :param Listener listener: the listener to wrap - :param ssl_context: the SSL context object - :param standard_compatible: a flag passed through to :meth:`TLSStream.wrap` - :param handshake_timeout: time limit for the TLS handshake - (passed to :func:`~anyio.fail_after`) - """ - - listener: Listener[Any] - ssl_context: ssl.SSLContext - standard_compatible: bool = True - handshake_timeout: float = 30 - - @staticmethod - async def handle_handshake_error(exc: BaseException, stream: AnyByteStream) -> None: - """ - Handle an exception raised during the TLS handshake. - - This method does 3 things: - - #. Forcefully closes the original stream - #. Logs the exception (unless it was a cancellation exception) using the - ``anyio.streams.tls`` logger - #. Reraises the exception if it was a base exception or a cancellation exception - - :param exc: the exception - :param stream: the original stream - - """ - await aclose_forcefully(stream) - - # Log all except cancellation exceptions - if not isinstance(exc, get_cancelled_exc_class()): - # CPython (as of 3.11.5) returns incorrect `sys.exc_info()` here when using - # any asyncio implementation, so we explicitly pass the exception to log - # (https://github.com/python/cpython/issues/108668). Trio does not have this - # issue because it works around the CPython bug. - logging.getLogger(__name__).exception( - "Error during TLS handshake", exc_info=exc - ) - - # Only reraise base exceptions and cancellation exceptions - if not isinstance(exc, Exception) or isinstance(exc, get_cancelled_exc_class()): - raise - - async def serve( - self, - handler: Callable[[TLSStream], Any], - task_group: TaskGroup | None = None, - ) -> None: - @wraps(handler) - async def handler_wrapper(stream: AnyByteStream) -> None: - from .. import fail_after - - try: - with fail_after(self.handshake_timeout): - wrapped_stream = await TLSStream.wrap( - stream, - ssl_context=self.ssl_context, - standard_compatible=self.standard_compatible, - ) - except BaseException as exc: - await self.handle_handshake_error(exc, stream) - else: - await handler(wrapped_stream) - - await self.listener.serve(handler_wrapper, task_group) - - async def aclose(self) -> None: - await self.listener.aclose() - - @property - def extra_attributes(self) -> Mapping[Any, Callable[[], Any]]: - return { - TLSAttribute.standard_compatible: lambda: self.standard_compatible, - } diff --git a/venv/lib/python3.12/site-packages/anyio/to_interpreter.py b/venv/lib/python3.12/site-packages/anyio/to_interpreter.py deleted file mode 100644 index 8a2e993..0000000 --- a/venv/lib/python3.12/site-packages/anyio/to_interpreter.py +++ /dev/null @@ -1,218 +0,0 @@ -from __future__ import annotations - -import atexit -import os -import pickle -import sys -from collections import deque -from collections.abc import Callable -from textwrap import dedent -from typing import Any, Final, TypeVar - -from . import current_time, to_thread -from ._core._exceptions import BrokenWorkerIntepreter -from ._core._synchronization import CapacityLimiter -from .lowlevel import RunVar - -if sys.version_info >= (3, 11): - from typing import TypeVarTuple, Unpack -else: - from typing_extensions import TypeVarTuple, Unpack - -UNBOUND: Final = 2 # I have no clue how this works, but it was used in the stdlib -FMT_UNPICKLED: Final = 0 -FMT_PICKLED: Final = 1 -DEFAULT_CPU_COUNT: Final = 8 # this is just an arbitrarily selected value -MAX_WORKER_IDLE_TIME = ( - 30 # seconds a subinterpreter can be idle before becoming eligible for pruning -) - -T_Retval = TypeVar("T_Retval") -PosArgsT = TypeVarTuple("PosArgsT") - -_idle_workers = RunVar[deque["Worker"]]("_available_workers") -_default_interpreter_limiter = RunVar[CapacityLimiter]("_default_interpreter_limiter") - - -class Worker: - _run_func = compile( - dedent(""" - import _interpqueues as queues - import _interpreters as interpreters - from pickle import loads, dumps, HIGHEST_PROTOCOL - - item = queues.get(queue_id)[0] - try: - func, args = loads(item) - retval = func(*args) - except BaseException as exc: - is_exception = True - retval = exc - else: - is_exception = False - - try: - queues.put(queue_id, (retval, is_exception), FMT_UNPICKLED, UNBOUND) - except interpreters.NotShareableError: - retval = dumps(retval, HIGHEST_PROTOCOL) - queues.put(queue_id, (retval, is_exception), FMT_PICKLED, UNBOUND) - """), - "", - "exec", - ) - - last_used: float = 0 - - _initialized: bool = False - _interpreter_id: int - _queue_id: int - - def initialize(self) -> None: - import _interpqueues as queues - import _interpreters as interpreters - - self._interpreter_id = interpreters.create() - self._queue_id = queues.create(2, FMT_UNPICKLED, UNBOUND) - self._initialized = True - interpreters.set___main___attrs( - self._interpreter_id, - { - "queue_id": self._queue_id, - "FMT_PICKLED": FMT_PICKLED, - "FMT_UNPICKLED": FMT_UNPICKLED, - "UNBOUND": UNBOUND, - }, - ) - - def destroy(self) -> None: - import _interpqueues as queues - import _interpreters as interpreters - - if self._initialized: - interpreters.destroy(self._interpreter_id) - queues.destroy(self._queue_id) - - def _call( - self, - func: Callable[..., T_Retval], - args: tuple[Any], - ) -> tuple[Any, bool]: - import _interpqueues as queues - import _interpreters as interpreters - - if not self._initialized: - self.initialize() - - payload = pickle.dumps((func, args), pickle.HIGHEST_PROTOCOL) - queues.put(self._queue_id, payload, FMT_PICKLED, UNBOUND) - - res: Any - is_exception: bool - if exc_info := interpreters.exec(self._interpreter_id, self._run_func): - raise BrokenWorkerIntepreter(exc_info) - - (res, is_exception), fmt = queues.get(self._queue_id)[:2] - if fmt == FMT_PICKLED: - res = pickle.loads(res) - - return res, is_exception - - async def call( - self, - func: Callable[..., T_Retval], - args: tuple[Any], - limiter: CapacityLimiter, - ) -> T_Retval: - result, is_exception = await to_thread.run_sync( - self._call, - func, - args, - limiter=limiter, - ) - if is_exception: - raise result - - return result - - -def _stop_workers(workers: deque[Worker]) -> None: - for worker in workers: - worker.destroy() - - workers.clear() - - -async def run_sync( - func: Callable[[Unpack[PosArgsT]], T_Retval], - *args: Unpack[PosArgsT], - limiter: CapacityLimiter | None = None, -) -> T_Retval: - """ - Call the given function with the given arguments in a subinterpreter. - - If the ``cancellable`` option is enabled and the task waiting for its completion is - cancelled, the call will still run its course but its return value (or any raised - exception) will be ignored. - - .. warning:: This feature is **experimental**. The upstream interpreter API has not - yet been finalized or thoroughly tested, so don't rely on this for anything - mission critical. - - :param func: a callable - :param args: positional arguments for the callable - :param limiter: capacity limiter to use to limit the total amount of subinterpreters - running (if omitted, the default limiter is used) - :return: the result of the call - :raises BrokenWorkerIntepreter: if there's an internal error in a subinterpreter - - """ - if sys.version_info <= (3, 13): - raise RuntimeError("subinterpreters require at least Python 3.13") - - if limiter is None: - limiter = current_default_interpreter_limiter() - - try: - idle_workers = _idle_workers.get() - except LookupError: - idle_workers = deque() - _idle_workers.set(idle_workers) - atexit.register(_stop_workers, idle_workers) - - async with limiter: - try: - worker = idle_workers.pop() - except IndexError: - worker = Worker() - - try: - return await worker.call(func, args, limiter) - finally: - # Prune workers that have been idle for too long - now = current_time() - while idle_workers: - if now - idle_workers[0].last_used <= MAX_WORKER_IDLE_TIME: - break - - await to_thread.run_sync(idle_workers.popleft().destroy, limiter=limiter) - - worker.last_used = current_time() - idle_workers.append(worker) - - -def current_default_interpreter_limiter() -> CapacityLimiter: - """ - Return the capacity limiter that is used by default to limit the number of - concurrently running subinterpreters. - - Defaults to the number of CPU cores. - - :return: a capacity limiter object - - """ - try: - return _default_interpreter_limiter.get() - except LookupError: - limiter = CapacityLimiter(os.cpu_count() or DEFAULT_CPU_COUNT) - _default_interpreter_limiter.set(limiter) - return limiter diff --git a/venv/lib/python3.12/site-packages/anyio/to_process.py b/venv/lib/python3.12/site-packages/anyio/to_process.py deleted file mode 100644 index 495de2a..0000000 --- a/venv/lib/python3.12/site-packages/anyio/to_process.py +++ /dev/null @@ -1,258 +0,0 @@ -from __future__ import annotations - -import os -import pickle -import subprocess -import sys -from collections import deque -from collections.abc import Callable -from importlib.util import module_from_spec, spec_from_file_location -from typing import TypeVar, cast - -from ._core._eventloop import current_time, get_async_backend, get_cancelled_exc_class -from ._core._exceptions import BrokenWorkerProcess -from ._core._subprocesses import open_process -from ._core._synchronization import CapacityLimiter -from ._core._tasks import CancelScope, fail_after -from .abc import ByteReceiveStream, ByteSendStream, Process -from .lowlevel import RunVar, checkpoint_if_cancelled -from .streams.buffered import BufferedByteReceiveStream - -if sys.version_info >= (3, 11): - from typing import TypeVarTuple, Unpack -else: - from typing_extensions import TypeVarTuple, Unpack - -WORKER_MAX_IDLE_TIME = 300 # 5 minutes - -T_Retval = TypeVar("T_Retval") -PosArgsT = TypeVarTuple("PosArgsT") - -_process_pool_workers: RunVar[set[Process]] = RunVar("_process_pool_workers") -_process_pool_idle_workers: RunVar[deque[tuple[Process, float]]] = RunVar( - "_process_pool_idle_workers" -) -_default_process_limiter: RunVar[CapacityLimiter] = RunVar("_default_process_limiter") - - -async def run_sync( # type: ignore[return] - func: Callable[[Unpack[PosArgsT]], T_Retval], - *args: Unpack[PosArgsT], - cancellable: bool = False, - limiter: CapacityLimiter | None = None, -) -> T_Retval: - """ - Call the given function with the given arguments in a worker process. - - If the ``cancellable`` option is enabled and the task waiting for its completion is - cancelled, the worker process running it will be abruptly terminated using SIGKILL - (or ``terminateProcess()`` on Windows). - - :param func: a callable - :param args: positional arguments for the callable - :param cancellable: ``True`` to allow cancellation of the operation while it's - running - :param limiter: capacity limiter to use to limit the total amount of processes - running (if omitted, the default limiter is used) - :return: an awaitable that yields the return value of the function. - - """ - - async def send_raw_command(pickled_cmd: bytes) -> object: - try: - await stdin.send(pickled_cmd) - response = await buffered.receive_until(b"\n", 50) - status, length = response.split(b" ") - if status not in (b"RETURN", b"EXCEPTION"): - raise RuntimeError( - f"Worker process returned unexpected response: {response!r}" - ) - - pickled_response = await buffered.receive_exactly(int(length)) - except BaseException as exc: - workers.discard(process) - try: - process.kill() - with CancelScope(shield=True): - await process.aclose() - except ProcessLookupError: - pass - - if isinstance(exc, get_cancelled_exc_class()): - raise - else: - raise BrokenWorkerProcess from exc - - retval = pickle.loads(pickled_response) - if status == b"EXCEPTION": - assert isinstance(retval, BaseException) - raise retval - else: - return retval - - # First pickle the request before trying to reserve a worker process - await checkpoint_if_cancelled() - request = pickle.dumps(("run", func, args), protocol=pickle.HIGHEST_PROTOCOL) - - # If this is the first run in this event loop thread, set up the necessary variables - try: - workers = _process_pool_workers.get() - idle_workers = _process_pool_idle_workers.get() - except LookupError: - workers = set() - idle_workers = deque() - _process_pool_workers.set(workers) - _process_pool_idle_workers.set(idle_workers) - get_async_backend().setup_process_pool_exit_at_shutdown(workers) - - async with limiter or current_default_process_limiter(): - # Pop processes from the pool (starting from the most recently used) until we - # find one that hasn't exited yet - process: Process - while idle_workers: - process, idle_since = idle_workers.pop() - if process.returncode is None: - stdin = cast(ByteSendStream, process.stdin) - buffered = BufferedByteReceiveStream( - cast(ByteReceiveStream, process.stdout) - ) - - # Prune any other workers that have been idle for WORKER_MAX_IDLE_TIME - # seconds or longer - now = current_time() - killed_processes: list[Process] = [] - while idle_workers: - if now - idle_workers[0][1] < WORKER_MAX_IDLE_TIME: - break - - process_to_kill, idle_since = idle_workers.popleft() - process_to_kill.kill() - workers.remove(process_to_kill) - killed_processes.append(process_to_kill) - - with CancelScope(shield=True): - for killed_process in killed_processes: - await killed_process.aclose() - - break - - workers.remove(process) - else: - command = [sys.executable, "-u", "-m", __name__] - process = await open_process( - command, stdin=subprocess.PIPE, stdout=subprocess.PIPE - ) - try: - stdin = cast(ByteSendStream, process.stdin) - buffered = BufferedByteReceiveStream( - cast(ByteReceiveStream, process.stdout) - ) - with fail_after(20): - message = await buffered.receive(6) - - if message != b"READY\n": - raise BrokenWorkerProcess( - f"Worker process returned unexpected response: {message!r}" - ) - - main_module_path = getattr(sys.modules["__main__"], "__file__", None) - pickled = pickle.dumps( - ("init", sys.path, main_module_path), - protocol=pickle.HIGHEST_PROTOCOL, - ) - await send_raw_command(pickled) - except (BrokenWorkerProcess, get_cancelled_exc_class()): - raise - except BaseException as exc: - process.kill() - raise BrokenWorkerProcess( - "Error during worker process initialization" - ) from exc - - workers.add(process) - - with CancelScope(shield=not cancellable): - try: - return cast(T_Retval, await send_raw_command(request)) - finally: - if process in workers: - idle_workers.append((process, current_time())) - - -def current_default_process_limiter() -> CapacityLimiter: - """ - Return the capacity limiter that is used by default to limit the number of worker - processes. - - :return: a capacity limiter object - - """ - try: - return _default_process_limiter.get() - except LookupError: - limiter = CapacityLimiter(os.cpu_count() or 2) - _default_process_limiter.set(limiter) - return limiter - - -def process_worker() -> None: - # Redirect standard streams to os.devnull so that user code won't interfere with the - # parent-worker communication - stdin = sys.stdin - stdout = sys.stdout - sys.stdin = open(os.devnull) - sys.stdout = open(os.devnull, "w") - - stdout.buffer.write(b"READY\n") - while True: - retval = exception = None - try: - command, *args = pickle.load(stdin.buffer) - except EOFError: - return - except BaseException as exc: - exception = exc - else: - if command == "run": - func, args = args - try: - retval = func(*args) - except BaseException as exc: - exception = exc - elif command == "init": - main_module_path: str | None - sys.path, main_module_path = args - del sys.modules["__main__"] - if main_module_path and os.path.isfile(main_module_path): - # Load the parent's main module but as __mp_main__ instead of - # __main__ (like multiprocessing does) to avoid infinite recursion - try: - spec = spec_from_file_location("__mp_main__", main_module_path) - if spec and spec.loader: - main = module_from_spec(spec) - spec.loader.exec_module(main) - sys.modules["__main__"] = main - except BaseException as exc: - exception = exc - try: - if exception is not None: - status = b"EXCEPTION" - pickled = pickle.dumps(exception, pickle.HIGHEST_PROTOCOL) - else: - status = b"RETURN" - pickled = pickle.dumps(retval, pickle.HIGHEST_PROTOCOL) - except BaseException as exc: - exception = exc - status = b"EXCEPTION" - pickled = pickle.dumps(exc, pickle.HIGHEST_PROTOCOL) - - stdout.buffer.write(b"%s %d\n" % (status, len(pickled))) - stdout.buffer.write(pickled) - - # Respect SIGTERM - if isinstance(exception, SystemExit): - raise exception - - -if __name__ == "__main__": - process_worker() diff --git a/venv/lib/python3.12/site-packages/anyio/to_thread.py b/venv/lib/python3.12/site-packages/anyio/to_thread.py deleted file mode 100644 index 5070516..0000000 --- a/venv/lib/python3.12/site-packages/anyio/to_thread.py +++ /dev/null @@ -1,69 +0,0 @@ -from __future__ import annotations - -import sys -from collections.abc import Callable -from typing import TypeVar -from warnings import warn - -from ._core._eventloop import get_async_backend -from .abc import CapacityLimiter - -if sys.version_info >= (3, 11): - from typing import TypeVarTuple, Unpack -else: - from typing_extensions import TypeVarTuple, Unpack - -T_Retval = TypeVar("T_Retval") -PosArgsT = TypeVarTuple("PosArgsT") - - -async def run_sync( - func: Callable[[Unpack[PosArgsT]], T_Retval], - *args: Unpack[PosArgsT], - abandon_on_cancel: bool = False, - cancellable: bool | None = None, - limiter: CapacityLimiter | None = None, -) -> T_Retval: - """ - Call the given function with the given arguments in a worker thread. - - If the ``cancellable`` option is enabled and the task waiting for its completion is - cancelled, the thread will still run its course but its return value (or any raised - exception) will be ignored. - - :param func: a callable - :param args: positional arguments for the callable - :param abandon_on_cancel: ``True`` to abandon the thread (leaving it to run - unchecked on own) if the host task is cancelled, ``False`` to ignore - cancellations in the host task until the operation has completed in the worker - thread - :param cancellable: deprecated alias of ``abandon_on_cancel``; will override - ``abandon_on_cancel`` if both parameters are passed - :param limiter: capacity limiter to use to limit the total amount of threads running - (if omitted, the default limiter is used) - :return: an awaitable that yields the return value of the function. - - """ - if cancellable is not None: - abandon_on_cancel = cancellable - warn( - "The `cancellable=` keyword argument to `anyio.to_thread.run_sync` is " - "deprecated since AnyIO 4.1.0; use `abandon_on_cancel=` instead", - DeprecationWarning, - stacklevel=2, - ) - - return await get_async_backend().run_sync_in_worker_thread( - func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter - ) - - -def current_default_thread_limiter() -> CapacityLimiter: - """ - Return the capacity limiter that is used by default to limit the number of - concurrent threads. - - :return: a capacity limiter object - - """ - return get_async_backend().current_default_thread_limiter() diff --git a/venv/lib/python3.12/site-packages/apscheduler/__init__.py b/venv/lib/python3.12/site-packages/apscheduler/__init__.py deleted file mode 100644 index 475135f..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -import importlib.metadata as importlib_metadata -import sys - -try: - release = importlib_metadata.version("APScheduler").split("-")[0] -except importlib_metadata.PackageNotFoundError: - release = "3.5.0" - -version_info = tuple(int(x) if x.isdigit() else x for x in release.split(".")) -version = __version__ = ".".join(str(x) for x in version_info[:3]) -del sys, importlib_metadata diff --git a/venv/lib/python3.12/site-packages/apscheduler/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index ab723b497a88b7be82bd7de9ff80030280b1b490..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1146 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 F{|Pc7AjSXy diff --git a/venv/lib/python3.12/site-packages/apscheduler/__pycache__/job.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/__pycache__/job.cpython-312.pyc deleted file mode 100644 index 72a0c96738e2aeb5b42c44f332ef9efff2f384a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12820 zcmc&*TWnj$nLdYiij+u6v@Vux9ZR-k%9b40vSrIoe3N54i4`PvoJ2{Mrg)AdO1voN z99kAbwQiBc%0;@7_5#b>237$Bm74wmsHI=6@8{*yk8WYY^zCs4S_iJZvC zxHvz^$1Q^vp1v(HYuq+yi`xh7?Asc1#GQjqR<^}lardB`mF=;LxM$E4_YQjFm4lV> zs==zbZ_pR_5Bhn|!ky(r$NQY<{Me$+I9NU93c7zoA3;mebzYU^@K8)DIxmDLCZdTE zR63(dBo39T}12prcqD8I>aAp-4CuBRHY3 zJffg7nYb#+YDi6n#IP!<(YREsG)f^^nvjdtBa&JgmI$LqMRI72hRD)zu>u*DQ5Dfv zuH{z!EUDLC`467 zh@@m$N~lIBi8UkvNfs0pSnOs~TpEp{E73<#Mw6+SC?q7{S{RZ9Oss|zY7~7%VQ7ji zBBe-jcLf{ScQs6qWFac{X>Ez7=<3Lwd0Gywisa%lAsqK`I6l$3}ZWn0_0 z`*11|(YhL26x5_3U6UdyRVqPMQxh>M6N@UUKs?hYOeB>kAuJrDic}nn0v?lWr3R$Z za4{NDh4D#k=(sdBnUux<%ebLrGA2Zl;TX1o9f2wg!I&qRh)oG{D#0cM0#Ff=bg~hK zu`bpMUIxu%Nf1-z+tDOK+qkNI2w+|b%T!0hD&|b6ax$i|hRz4zk~|G!ak*2~SRfvD74^0%By8yHmqxiwfKD_e8;T1aE%hy=bMQHqDJMdPWskVwUcG&aSmb$J2RG-Q!f znd8jm4l_(e6?4(6c-zoP-9`b@bWIImxn;ej;z@Z6g(Z*DK&3aT6U4}RoD?#TH z>5G-CXi@ZpLX%Q>oD4%KV%P!F-VXeE@b~oZko_ZnlT-1lr5m;k_boeTYI&Z^@EI!@@sXfN6nDK=bmo77;C z}6H~D2 zi38pHzp@WHSL&JwN5;b=lCm#6VNL`PL){ZoavMOWy)WRySaKg~l;@EB{yMkfs=VRM zxf+&STMJv;W^5n$3N83qay1uRff?I}-W%SWt7qQwpdt7j>Dwc>$8U{iT|JAJ^RAw! zfWSp~%JoFMV00Wq;U=6HP{U{|`yDf>SE@u$!=)-!(s<&HHEGxq1s7=4$#AgZe7FnC zFeU3kcpMs@)Q)DkBctI2kfYfmO*b;rtc0(kmQ&bjw~Lww0;fP@Hj?ctntwoxgjP{gazX&TN%QKvHMDA}U(m)Fw^&hvqH!j1 za?m2T7`(DIjKpbS531q)fqSt$JzlYcIb zCS?`QjzEf5nT)EDQ8GN!qy>WK-((;yIZcA{n z_p#ODt|%Nj^@M&OIXHj7pnAF5Ai<~UpAI9txtY>1l{`A>>5oww#`y^bgsF`5k4$=B zlHwCd8R800L`f+V68w20wrP;d9fdz1xhKN#?Y|_Y-6oI{k?-=1$O@rYr>C8DOS_4b ztoSzCln!JX6)QD)-H~(cSlIc!j_-CX_AKu?p4)SL$#tSkRR8~p_EVE+uSyDBB1R{J zRm;gFM2Ce5Sz=BZ$jUY?{`qJJdBE&nl6WL#I+POiWKjLmlwGyK4?kbHEH)+!XO!$$})>AOYx*`lZWMGoSmw_z$$-9BdX1~hL8iM zbu2aiVG7Z*4GK}299X3l8RV;qbL;Z8otxuHbPx=SB0C&1q$5ZW z9l?=88)D9|)+HJU^33&J$FxpTqJW+DFqNZyOcPSJ7)bF4mVIqGU)zG3_3g>J_N?~? zOuO(;3=bpRv}I$5a@v})%6%DYh9BPwXZ&EsGPaSmuzsv#nQXvD?&cUd?rRc3HEai) z$6?OHe}I|D{Y?MR#L($vd;(z-%>^{LymaJLfN6D7LL}+Rl~so$P>aGys7+3yjFWvN zmQoOS3YICYK6Pq>j+>Kxf^pn6&%Ndf`ef?WCs1VOt##erS>*x}gB2YJ9D+caQ&2-u zJ+?9ycA$U*gn@a3R!m%U8z*Z;rojr)2yTOJXR1Op-0YIBA?mNL`zDRLj0}?D=eE?( zxC;%<%MG2mhR&JFUsW|NRNkw7AoLWxTb8}eIdAj)J4@a@g=XRQOSfKHZa$i8K6?Mc z&ky9AU!J+}*v|QysefMRdF0~!jagU2dTAn>vO`HLN;kPExCn3#G~L6MJ*A_kX!7DWaL~+PMaM8i zw9&d0w`ga-cF{q33RR&883> zt04GGBaPCuqYRt2_1KiFGPY@_N+)fWGUl$PZHYFO6vvu+xzf$4_3P`Wor!YFxQvyp zp^V$0j3NN9bR=JsM0Y9fe!WUPXSidAg3!<)=jWsITOzAltu+NzQTX34;bY|mIlAF~qW zIQJVc^m(h;E+K8u5-sX31Ii{Vs5V9$zqAtIs+vKmVNecjGPb5P=1*FAtubC-c@3L0 zz~(%^$(#XW%(Sa)PM1nro+SfYN?VzJ+mdmO?KXOpe#ht#zb1W~6YD-I*KjUiBfwTx z&sMg7lac3HExXJ7;DnlGixgFDK;8% zgS|Dim6+Yo%=yquBFLq=ZJF-a)|TZCIFT zH+FK==$YX%?u^w~AoCIZ3Jics(8E!BCOxlm5rf@Pg zuqcx~PB$8t2W7A|^f31@eTXPEoTQs4I%!axl!&D<3Pnc+Tqw!WA?7lJJHS(Y!h6%7 zTlNaU?M3TEa-vufRg5(ht$3;ZHRPAcm%$ZiG1D3tp8+TTkFiZ z*-JMD9(t;0U(b1(7aWTnIbr|3H$JU@aPVBA^O<{RbDc+Ldv6|{J34=LskZ&oz|R_g z+&I(!hnl(%-S5bCpPYUD=38@bEi^1`>HJjv*?T{JZ|3>We2w!v?^u_7I}1%Mv#ynT z#H8}|9dovoYBc=A_D2?5_0E-+;Ns4F%f7jDzpdcvg{<&;zV3~z|BcUTx6b!0)GgKS zUVQzNx9+}mzwXmOzU%pH*T72afqVV=)+4jddB>cuG|3NMxTpT;jitTMGfed7>&|5T zXI8L=_B(A$zV;uC-LLy;{ZjXN)_gi&*Pr$Gf97pjuq}v-&o6loJj8v;x!KD&subGx zpfs5C3Ur5}*X`&)>5ZIsyMaA}5RQDHW9H1SY8&oUEFSz}+mdjI&0rwCWv33|p{He` zH|Ocp$7O|{eBj{BnSw8n^$9=dy!YCVPA_$y`1H)rU-`)kfKUj$`qXNvuX)5-s%sE( z?LIJbE{kxixAUQA%Y1##Bdi1(=Id`a-D+AG%r`!h59|l9w%z*5A9}XVkK{bNj8*#b zfoICuW%0Fp;qMQ!mA;U#dok;Ov9P-fV?#Obu7{q$yff!%Db#JdIX*YO5X{%@ojFUa zHge~^rP>3uy1L%`&gH}BbBE6_AAU7=_|ZX#EtoY}r7!=ni}Tj5)CdLt zxn=*$IseOrK*P=RbLZzr@_}}Atgd-#wbfQV;%t>wkgcY++ugUi^IJQgaJ;+y#tSp2 zXSb|)YiIlC+vZch^zM3WMfLB0d(px*v_1hbc7jp<{@f!wN}nrq%knQl&xPaMza94s zR9XMMl1IMkGK~}!X{V=KVG=eA(J7534-Ti=4Wk<0wuqKh-q?n{rumYuSMo>XSIW+^ z{Fv!IU|o7LJQn4cN-JimG#)E5D$9Pyp;qOc@XR)VH_WR(qbo*laE>%)OrzVhCE?w; z7f$))%@Ly4q>a~vTC#y_5^BktSd%gohav}KO+qa>4Qmo=$s(^ws5MV)r6$x0r7xp| zTJt1h)KRqHJ6=Se>;vi3mneuz{#YcO(48SX8;ZiaO2e4LenzxN`6?fWJz3JtqOd#t zS3x{+Vb75?Z%UNl-^8N{N$jR)Q3_re$#kL0?Dz&=({32`R7~n4XNx^kAe$L9+=cGn zkcS)e7M*yBqu^1JjwgOJycdR5u?Ml9n0JH<+klB7=_1;mHvuHT&25WeY}>4z%ORqCyd=%}`>&QDa`c>$4rKle-dh|L|!(psfucK(BF}6~#Gh=q>SEbjL=~L0C z*O`$yJWKHp$nOA-{5CSii0ny{E?+{rZLa{oT6-2}RPHAYL5C_li4bFw_@_#tPadF| znG`bFV!kRZP7}&MN~HDI26iS>tKJ$w*5Ej=k+o9IE|Rr>#iZA{g2(^iksC*5-(2AH zp4Np|9(dZB+_f$oTx`s>9mux!WP4tRg9t-THrxUm?&4}2=52F(@an}`XxKJCe5(@0 z%9X(OdG+@6t?7KA3*YWSee?XAxq94mf8eEVW4VSP^(zG6BhFo5UFw?V&&?%K^pw}O zc4T)S%e6jB?`c|A4c*qda6Gr|05xodf31J~(zSKHRN1gUCRJBZz|$zwqby~3RhJ_? zkJ3wWBWwkYSd$=&8`P2=zR0O2&tK&3@^trg4x?qVyo^1HRRc-&d>pSm=}D&~8m~j_ z>}l&NdO1QN>0M|=_BKQ-A0`@61PyPEJX>a^?_6B+>?lA*_0ILqOSeaFjpl0Gv)=X< z-?pr4+xqamsZ@>u1|C|IlY`RQ1a(11*+fXG9WB<6>@bwJfwcP=8OhyI@!7OPAp7)e z+7f&Y8)7_6wtL-87K{o#cgCjlH&oi!v$U-i3;^p@Lp9&-z12G(TsXA2^ONA+;9}Fg zQ(0ec*44XyLxgQc&+ntKik{_n1sxl2Ms5%-YDsTxxM4%Xk$;rHL+WWhfvD~@AU zn)C$p*wJF@GozkqVB9~T-T9FN=yMHdM|$?CkG-J`t9?SzpayrdxvPI8chr<7H!#}gm!j=sDGRwtdqJUW~!O(nQvM0 z1Yza^4a>E=9@Or7WaX-bJ6-o|%g>z3J##AGdisI?^usON9y__pTKMdBEi=zQgh33> z1!tS)UtF|(;=Su#`0Bk^?>p{YyZ>(1cQUJA$jTC}Z;Sj2e(;!*PSYZk51!ZD1cSS*L^B@6dxx@!l0 zc2X8Z_POhrM#Jai_wWfu;uNZXWaWAO*Id`Hxn2Lk)%_Q@|92KAZ}}ZZSs-oWPw`JU I_QOE^FLl|}7ytkO diff --git a/venv/lib/python3.12/site-packages/apscheduler/__pycache__/util.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/__pycache__/util.cpython-312.pyc deleted file mode 100644 index 161f7b9cb91748b4210f19ec389af73b9e754db2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16698 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" % (self.__class__.__name__, self.code) - - -class JobEvent(SchedulerEvent): - """ - An event that concerns a job. - - :ivar code: the type code of this event - :ivar job_id: identifier of the job in question - :ivar jobstore: alias of the job store containing the job in question - """ - - def __init__(self, code, job_id, jobstore): - super().__init__(code) - self.code = code - self.job_id = job_id - self.jobstore = jobstore - - -class JobSubmissionEvent(JobEvent): - """ - An event that concerns the submission of a job to its executor. - - :ivar scheduled_run_times: a list of datetimes when the job was intended to run - """ - - def __init__(self, code, job_id, jobstore, scheduled_run_times): - super().__init__(code, job_id, jobstore) - self.scheduled_run_times = scheduled_run_times - - -class JobExecutionEvent(JobEvent): - """ - An event that concerns the running of a job within its executor. - - :ivar scheduled_run_time: the time when the job was scheduled to be run - :ivar retval: the return value of the successfully executed job - :ivar exception: the exception raised by the job - :ivar traceback: a formatted traceback for the exception - """ - - def __init__( - self, - code, - job_id, - jobstore, - scheduled_run_time, - retval=None, - exception=None, - traceback=None, - ): - super().__init__(code, job_id, jobstore) - self.scheduled_run_time = scheduled_run_time - self.retval = retval - self.exception = exception - self.traceback = traceback diff --git a/venv/lib/python3.12/site-packages/apscheduler/executors/__init__.py b/venv/lib/python3.12/site-packages/apscheduler/executors/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index fad98014b76b721012c24073722df6dcc00f740c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 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 diff --git a/venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/gevent.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/gevent.cpython-312.pyc deleted file mode 100644 index 8db348c0e98f9965c0c5d252c4840d203b229754..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1730 zcmaJ>O>7%Q6rR~#|He+XO;ePpgsq%PwUpQt)E+|ACaKyAB1ILIkZK~<>)o-l?t0hV zSvPT%N)ZG#K2UN&0U<#Pho*87+z2P&%q0=3QnsAnQ1upYDy8AV8?V<%P{m05-n@Bl z=KXzde~HJV2-b(+zcc-uL+DQ?_$$!bG^Sy*f;6OI17#TJ3|!(eT#3){7)3mdkP$d^ z32DM2(gK95^WN=DsEQMa1O|}ZnF(^R)A%~}bR_sbr{PTS-QWzKL9_f-G=r1Dr%XAS zl#5nw?&KwMgP4x5kZf|jqT7T@h32`Wo77PZgJ`Pf#iK2k zsBskJ6+}=5Ybe9q^BT8^GD4M43U24Yx9849C0K7)Oe%qEDkT;q%T%g{Qnam98@ts`LbxZX;hIZq&`ohSh4G)5eP*Itn1 zi(e~Xr^A1{81r{~+>cQMEcBtT@HfHR2&1duxeZ5d@+nI$8FKjoaa>Vu!BD0ZRV9?V zoUXZX52-3CJGy1Mooypx+W=jjR;e2%v#P9{c?)0`_Ce$Zo0z385AbpYN{l>ZRgt8H zh25$2v{fSMqNP|R%OrDp`n+Y*is8T^Ou&t_q36=&sxxhwucuDEmZrKxhRTY1O(_tX zR?1YJCR)WHcAB(?h^9Ssrpi?}tiq7wz# zy)l;Je;&d>p%p z#x_gAjj&cadWle*{S=yo&t@gb?qS-_gJqa|`G2c)m_0BI{(Av8EXyon zS$3ncT(VdTVIPy_>lMXlX+koDr^>S350~yE`xRi#xNSBtO~Q~*8R!?$Uz`vKH)0)u zUeA!(B*Qi9NLZ^#=Xl^&k(Sktq2Nt14cmgTeN5W=;*J} gv7hL=@YX-<>I8s6glBFG{pgFpDgNuoApZdPznz((O#lD@ diff --git a/venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/pool.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/pool.cpython-312.pyc deleted file mode 100644 index c2a38355b3ba755dcb563a0f70913f3e3e9feaa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4940 zcmcIoU2Gf25#GDw&yk`;>c@^H`R6RzaT!~rE!k-*yJ=!OKXn|{jok!cTAWV2qezN> z-8)7YsSXez67-Nh1gQH|pic(+V#Zb}TofQc3lw>iBN=x6P;_SR zj-+J9Ef918&h78a?(BRsv;1potDivm>?aX2Pq+*wb|!|JY#H!H@(tS{!{2v1%js(X&89!*>lES@nx>-9pfsQGKX zEv(lEz5a&Yz%&rX@b5}Z(Dr;G8LFi#Sk%FT&O_WYPj<>yGu zt-4fUj*EHb$rKm!o+n|q8A3rQ)Dafv8-$o2{~p zxYx$OLS;EDn%<HZYXWKSsD`9UNV*g1`+WNoS0~<`_)YeMHx|DC z(OZjeE&b@m_ikRez5lga+s@zhlGd*IQ&&3f`bnsBCDc_7^;bgu*H3-;;`=Wyoccq@ za_H#i*t@?H+J8O%VdDM7g7Q&vF}ajp4t@&RU4_Srqe!X)7?Or>PAOFd6w$h zV10vrX7>CS1){a+-v#ooi{u{f^9`?UC#~(5&y>$p1G_4LU8{l4E9bBES9=C3Jp&8V zH}?Jc(4P)fhhM1-zp^gyt^Rp#%|m?ts@Pi*d#}B`EbeE=Z|s>%Dk`*y<*>jLp~tzqp;G3b8sejn%VW1C_t;xM^Z z93Q>D54swItjfg%)e5xyoG<2LA=M2b)n#^ENK#Ev8-uE{8}{Z0Lz14)NlrMDjHF^n zV0XHNrYog#k|M?PxpXiST=1_ zKt-R0s$c&(5X?JD{1m7297&N`z8;6tXp&n>x)ws~0}U~zX7vd!1zbPie$CAaMlGP0 zU69p)L*5)3Ep&KHfBkk$uYEmq2;`VTDre9Zs4+`jv^Upk01(g1gWcyD5wc@V$993melOK3n)>Y0*J%iEgeYH7^Uw-f_`!%97VF(fyQdp5c;IIzOdy?-mZ!;r1{vjrKz zZD>;lyjajBhW!*#X8Lu_P_={tDV7<`0!`Uh3I5G&fmF>|M~}gDijOh+9VFjGQgaFP z8E87W*e0;=Y;t!sv_FTdGC&aRy-$A9duX9=-gQUZ0b#W&?tphmRqU^b{nyWa9IXz% zS{Z!x=J@Tw*YAjLGaE2r)s zHu>Y4wd{mDL~HRiz61s9CCGAX+aqHZ+)wJynSF%j;DtzyvW=_}_%6y8H(xox> zz&|cgt&maTU^mvtWXecF#7{tsPeSn54J8-X!amDpSgwPijDo#_Plh0zgOw~nV}S#* zq=x9iY&GnvC$#h%xR#|w$OU4s9bl00OkY!*+mzkD4Df2CZDwfz diff --git a/venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/tornado.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/executors/__pycache__/tornado.cpython-312.pyc deleted file mode 100644 index 9b92ce3886404f4b7d620187021f654e0f5109e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2912 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 a0zLucwu&+S4b9vco4|?7?mmJ|TKx+EuAmeE diff --git a/venv/lib/python3.12/site-packages/apscheduler/executors/asyncio.py b/venv/lib/python3.12/site-packages/apscheduler/executors/asyncio.py deleted file mode 100644 index cc7eb65..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/executors/asyncio.py +++ /dev/null @@ -1,52 +0,0 @@ -import sys - -from apscheduler.executors.base import BaseExecutor, run_coroutine_job, run_job -from apscheduler.util import iscoroutinefunction_partial - - -class AsyncIOExecutor(BaseExecutor): - """ - Runs jobs in the default executor of the event loop. - - If the job function is a native coroutine function, it is scheduled to be run directly in the - event loop as soon as possible. All other functions are run in the event loop's default - executor which is usually a thread pool. - - Plugin alias: ``asyncio`` - """ - - def start(self, scheduler, alias): - super().start(scheduler, alias) - self._eventloop = scheduler._eventloop - self._pending_futures = set() - - def shutdown(self, wait=True): - # There is no way to honor wait=True without converting this method into a coroutine method - for f in self._pending_futures: - if not f.done(): - f.cancel() - - self._pending_futures.clear() - - def _do_submit_job(self, job, run_times): - def callback(f): - self._pending_futures.discard(f) - try: - events = f.result() - except BaseException: - self._run_job_error(job.id, *sys.exc_info()[1:]) - else: - self._run_job_success(job.id, events) - - if iscoroutinefunction_partial(job.func): - coro = run_coroutine_job( - job, job._jobstore_alias, run_times, self._logger.name - ) - f = self._eventloop.create_task(coro) - else: - f = self._eventloop.run_in_executor( - None, run_job, job, job._jobstore_alias, run_times, self._logger.name - ) - - f.add_done_callback(callback) - self._pending_futures.add(f) diff --git a/venv/lib/python3.12/site-packages/apscheduler/executors/base.py b/venv/lib/python3.12/site-packages/apscheduler/executors/base.py deleted file mode 100644 index d690a38..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/executors/base.py +++ /dev/null @@ -1,205 +0,0 @@ -import logging -import sys -import traceback -from abc import ABCMeta, abstractmethod -from collections import defaultdict -from datetime import datetime, timedelta, timezone -from traceback import format_tb - -from apscheduler.events import ( - EVENT_JOB_ERROR, - EVENT_JOB_EXECUTED, - EVENT_JOB_MISSED, - JobExecutionEvent, -) - - -class MaxInstancesReachedError(Exception): - def __init__(self, job): - super().__init__( - 'Job "%s" has already reached its maximum number of instances (%d)' - % (job.id, job.max_instances) - ) - - -class BaseExecutor(metaclass=ABCMeta): - """Abstract base class that defines the interface that every executor must implement.""" - - _scheduler = None - _lock = None - _logger = logging.getLogger("apscheduler.executors") - - def __init__(self): - super().__init__() - self._instances = defaultdict(lambda: 0) - - def start(self, scheduler, alias): - """ - Called by the scheduler when the scheduler is being started or when the executor is being - added to an already running scheduler. - - :param apscheduler.schedulers.base.BaseScheduler scheduler: the scheduler that is starting - this executor - :param str|unicode alias: alias of this executor as it was assigned to the scheduler - - """ - self._scheduler = scheduler - self._lock = scheduler._create_lock() - self._logger = logging.getLogger(f"apscheduler.executors.{alias}") - - def shutdown(self, wait=True): - """ - Shuts down this executor. - - :param bool wait: ``True`` to wait until all submitted jobs - have been executed - """ - - def submit_job(self, job, run_times): - """ - Submits job for execution. - - :param Job job: job to execute - :param list[datetime] run_times: list of datetimes specifying - when the job should have been run - :raises MaxInstancesReachedError: if the maximum number of - allowed instances for this job has been reached - - """ - assert self._lock is not None, "This executor has not been started yet" - with self._lock: - if self._instances[job.id] >= job.max_instances: - raise MaxInstancesReachedError(job) - - self._do_submit_job(job, run_times) - self._instances[job.id] += 1 - - @abstractmethod - def _do_submit_job(self, job, run_times): - """Performs the actual task of scheduling `run_job` to be called.""" - - def _run_job_success(self, job_id, events): - """ - Called by the executor with the list of generated events when :func:`run_job` has been - successfully called. - - """ - with self._lock: - self._instances[job_id] -= 1 - if self._instances[job_id] == 0: - del self._instances[job_id] - - for event in events: - self._scheduler._dispatch_event(event) - - def _run_job_error(self, job_id, exc, traceback=None): - """Called by the executor with the exception if there is an error calling `run_job`.""" - with self._lock: - self._instances[job_id] -= 1 - if self._instances[job_id] == 0: - del self._instances[job_id] - - exc_info = (exc.__class__, exc, traceback) - self._logger.error("Error running job %s", job_id, exc_info=exc_info) - - -def run_job(job, jobstore_alias, run_times, logger_name): - """ - Called by executors to run the job. Returns a list of scheduler events to be dispatched by the - scheduler. - - """ - events = [] - logger = logging.getLogger(logger_name) - for run_time in run_times: - # See if the job missed its run time window, and handle - # possible misfires accordingly - if job.misfire_grace_time is not None: - difference = datetime.now(timezone.utc) - run_time - grace_time = timedelta(seconds=job.misfire_grace_time) - if difference > grace_time: - events.append( - JobExecutionEvent( - EVENT_JOB_MISSED, job.id, jobstore_alias, run_time - ) - ) - logger.warning('Run time of job "%s" was missed by %s', job, difference) - continue - - logger.info('Running job "%s" (scheduled at %s)', job, run_time) - try: - retval = job.func(*job.args, **job.kwargs) - except BaseException: - exc, tb = sys.exc_info()[1:] - formatted_tb = "".join(format_tb(tb)) - events.append( - JobExecutionEvent( - EVENT_JOB_ERROR, - job.id, - jobstore_alias, - run_time, - exception=exc, - traceback=formatted_tb, - ) - ) - logger.exception('Job "%s" raised an exception', job) - - # This is to prevent cyclic references that would lead to memory leaks - traceback.clear_frames(tb) - del tb - else: - events.append( - JobExecutionEvent( - EVENT_JOB_EXECUTED, job.id, jobstore_alias, run_time, retval=retval - ) - ) - logger.info('Job "%s" executed successfully', job) - - return events - - -async def run_coroutine_job(job, jobstore_alias, run_times, logger_name): - """Coroutine version of run_job().""" - events = [] - logger = logging.getLogger(logger_name) - for run_time in run_times: - # See if the job missed its run time window, and handle possible misfires accordingly - if job.misfire_grace_time is not None: - difference = datetime.now(timezone.utc) - run_time - grace_time = timedelta(seconds=job.misfire_grace_time) - if difference > grace_time: - events.append( - JobExecutionEvent( - EVENT_JOB_MISSED, job.id, jobstore_alias, run_time - ) - ) - logger.warning('Run time of job "%s" was missed by %s', job, difference) - continue - - logger.info('Running job "%s" (scheduled at %s)', job, run_time) - try: - retval = await job.func(*job.args, **job.kwargs) - except BaseException: - exc, tb = sys.exc_info()[1:] - formatted_tb = "".join(format_tb(tb)) - events.append( - JobExecutionEvent( - EVENT_JOB_ERROR, - job.id, - jobstore_alias, - run_time, - exception=exc, - traceback=formatted_tb, - ) - ) - logger.exception('Job "%s" raised an exception', job) - traceback.clear_frames(tb) - else: - events.append( - JobExecutionEvent( - EVENT_JOB_EXECUTED, job.id, jobstore_alias, run_time, retval=retval - ) - ) - logger.info('Job "%s" executed successfully', job) - - return events diff --git a/venv/lib/python3.12/site-packages/apscheduler/executors/debug.py b/venv/lib/python3.12/site-packages/apscheduler/executors/debug.py deleted file mode 100644 index ac739ae..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/executors/debug.py +++ /dev/null @@ -1,20 +0,0 @@ -import sys - -from apscheduler.executors.base import BaseExecutor, run_job - - -class DebugExecutor(BaseExecutor): - """ - A special executor that executes the target callable directly instead of deferring it to a - thread or process. - - Plugin alias: ``debug`` - """ - - def _do_submit_job(self, job, run_times): - try: - events = run_job(job, job._jobstore_alias, run_times, self._logger.name) - except BaseException: - self._run_job_error(job.id, *sys.exc_info()[1:]) - else: - self._run_job_success(job.id, events) diff --git a/venv/lib/python3.12/site-packages/apscheduler/executors/gevent.py b/venv/lib/python3.12/site-packages/apscheduler/executors/gevent.py deleted file mode 100644 index 385be40..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/executors/gevent.py +++ /dev/null @@ -1,29 +0,0 @@ -import sys - -from apscheduler.executors.base import BaseExecutor, run_job - -try: - import gevent -except ImportError as exc: # pragma: nocover - raise ImportError("GeventExecutor requires gevent installed") from exc - - -class GeventExecutor(BaseExecutor): - """ - Runs jobs as greenlets. - - Plugin alias: ``gevent`` - """ - - def _do_submit_job(self, job, run_times): - def callback(greenlet): - try: - events = greenlet.get() - except BaseException: - self._run_job_error(job.id, *sys.exc_info()[1:]) - else: - self._run_job_success(job.id, events) - - gevent.spawn( - run_job, job, job._jobstore_alias, run_times, self._logger.name - ).link(callback) diff --git a/venv/lib/python3.12/site-packages/apscheduler/executors/pool.py b/venv/lib/python3.12/site-packages/apscheduler/executors/pool.py deleted file mode 100644 index 166de7c..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/executors/pool.py +++ /dev/null @@ -1,82 +0,0 @@ -import concurrent.futures -import multiprocessing -from abc import abstractmethod -from concurrent.futures.process import BrokenProcessPool - -from apscheduler.executors.base import BaseExecutor, run_job - - -class BasePoolExecutor(BaseExecutor): - @abstractmethod - def __init__(self, pool): - super().__init__() - self._pool = pool - - def _do_submit_job(self, job, run_times): - def callback(f): - exc, tb = ( - f.exception_info() - if hasattr(f, "exception_info") - else (f.exception(), getattr(f.exception(), "__traceback__", None)) - ) - if exc: - self._run_job_error(job.id, exc, tb) - else: - self._run_job_success(job.id, f.result()) - - f = self._pool.submit( - run_job, job, job._jobstore_alias, run_times, self._logger.name - ) - f.add_done_callback(callback) - - def shutdown(self, wait=True): - self._pool.shutdown(wait) - - -class ThreadPoolExecutor(BasePoolExecutor): - """ - An executor that runs jobs in a concurrent.futures thread pool. - - Plugin alias: ``threadpool`` - - :param max_workers: the maximum number of spawned threads. - :param pool_kwargs: dict of keyword arguments to pass to the underlying - ThreadPoolExecutor constructor - """ - - def __init__(self, max_workers=10, pool_kwargs=None): - pool_kwargs = pool_kwargs or {} - pool = concurrent.futures.ThreadPoolExecutor(int(max_workers), **pool_kwargs) - super().__init__(pool) - - -class ProcessPoolExecutor(BasePoolExecutor): - """ - An executor that runs jobs in a concurrent.futures process pool. - - Plugin alias: ``processpool`` - - :param max_workers: the maximum number of spawned processes. - :param pool_kwargs: dict of keyword arguments to pass to the underlying - ProcessPoolExecutor constructor - """ - - def __init__(self, max_workers=10, pool_kwargs=None): - self.pool_kwargs = pool_kwargs or {} - self.pool_kwargs.setdefault("mp_context", multiprocessing.get_context("spawn")) - pool = concurrent.futures.ProcessPoolExecutor( - int(max_workers), **self.pool_kwargs - ) - super().__init__(pool) - - def _do_submit_job(self, job, run_times): - try: - super()._do_submit_job(job, run_times) - except BrokenProcessPool: - self._logger.warning( - "Process pool is broken; replacing pool with a fresh instance" - ) - self._pool = self._pool.__class__( - self._pool._max_workers, **self.pool_kwargs - ) - super()._do_submit_job(job, run_times) diff --git a/venv/lib/python3.12/site-packages/apscheduler/executors/tornado.py b/venv/lib/python3.12/site-packages/apscheduler/executors/tornado.py deleted file mode 100644 index 46789bd..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/executors/tornado.py +++ /dev/null @@ -1,49 +0,0 @@ -import sys -from concurrent.futures import ThreadPoolExecutor - -from tornado.gen import convert_yielded - -from apscheduler.executors.base import BaseExecutor, run_coroutine_job, run_job -from apscheduler.util import iscoroutinefunction_partial - - -class TornadoExecutor(BaseExecutor): - """ - Runs jobs either in a thread pool or directly on the I/O loop. - - If the job function is a native coroutine function, it is scheduled to be run directly in the - I/O loop as soon as possible. All other functions are run in a thread pool. - - Plugin alias: ``tornado`` - - :param int max_workers: maximum number of worker threads in the thread pool - """ - - def __init__(self, max_workers=10): - super().__init__() - self.executor = ThreadPoolExecutor(max_workers) - - def start(self, scheduler, alias): - super().start(scheduler, alias) - self._ioloop = scheduler._ioloop - - def _do_submit_job(self, job, run_times): - def callback(f): - try: - events = f.result() - except BaseException: - self._run_job_error(job.id, *sys.exc_info()[1:]) - else: - self._run_job_success(job.id, events) - - if iscoroutinefunction_partial(job.func): - f = run_coroutine_job( - job, job._jobstore_alias, run_times, self._logger.name - ) - else: - f = self.executor.submit( - run_job, job, job._jobstore_alias, run_times, self._logger.name - ) - - f = convert_yielded(f) - f.add_done_callback(callback) diff --git a/venv/lib/python3.12/site-packages/apscheduler/executors/twisted.py b/venv/lib/python3.12/site-packages/apscheduler/executors/twisted.py deleted file mode 100644 index 710b20a..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/executors/twisted.py +++ /dev/null @@ -1,24 +0,0 @@ -from apscheduler.executors.base import BaseExecutor, run_job - - -class TwistedExecutor(BaseExecutor): - """ - Runs jobs in the reactor's thread pool. - - Plugin alias: ``twisted`` - """ - - def start(self, scheduler, alias): - super().start(scheduler, alias) - self._reactor = scheduler._reactor - - def _do_submit_job(self, job, run_times): - def callback(success, result): - if success: - self._run_job_success(job.id, result) - else: - self._run_job_error(job.id, result.value, result.tb) - - self._reactor.getThreadPool().callInThreadWithCallback( - callback, run_job, job, job._jobstore_alias, run_times, self._logger.name - ) diff --git a/venv/lib/python3.12/site-packages/apscheduler/job.py b/venv/lib/python3.12/site-packages/apscheduler/job.py deleted file mode 100644 index 35e8370..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/job.py +++ /dev/null @@ -1,330 +0,0 @@ -from collections.abc import Iterable, Mapping -from inspect import isclass, ismethod -from uuid import uuid4 - -from apscheduler.triggers.base import BaseTrigger -from apscheduler.util import ( - check_callable_args, - convert_to_datetime, - datetime_repr, - get_callable_name, - obj_to_ref, - ref_to_obj, -) - - -class Job: - """ - Contains the options given when scheduling callables and its current schedule and other state. - This class should never be instantiated by the user. - - :var str id: the unique identifier of this job - :var str name: the description of this job - :var func: the callable to execute - :var tuple|list args: positional arguments to the callable - :var dict kwargs: keyword arguments to the callable - :var bool coalesce: whether to only run the job once when several run times are due - :var trigger: the trigger object that controls the schedule of this job - :var str executor: the name of the executor that will run this job - :var int misfire_grace_time: the time (in seconds) how much this job's execution is allowed to - be late (``None`` means "allow the job to run no matter how late it is") - :var int max_instances: the maximum number of concurrently executing instances allowed for this - job - :var datetime.datetime next_run_time: the next scheduled run time of this job - - .. note:: - The ``misfire_grace_time`` has some non-obvious effects on job execution. See the - :ref:`missed-job-executions` section in the documentation for an in-depth explanation. - """ - - __slots__ = ( - "_scheduler", - "_jobstore_alias", - "id", - "trigger", - "executor", - "func", - "func_ref", - "args", - "kwargs", - "name", - "misfire_grace_time", - "coalesce", - "max_instances", - "next_run_time", - "__weakref__", - ) - - def __init__(self, scheduler, id=None, **kwargs): - super().__init__() - self._scheduler = scheduler - self._jobstore_alias = None - self._modify(id=id or uuid4().hex, **kwargs) - - def modify(self, **changes): - """ - Makes the given changes to this job and saves it in the associated job store. - - Accepted keyword arguments are the same as the variables on this class. - - .. seealso:: :meth:`~apscheduler.schedulers.base.BaseScheduler.modify_job` - - :return Job: this job instance - - """ - self._scheduler.modify_job(self.id, self._jobstore_alias, **changes) - return self - - def reschedule(self, trigger, **trigger_args): - """ - Shortcut for switching the trigger on this job. - - .. seealso:: :meth:`~apscheduler.schedulers.base.BaseScheduler.reschedule_job` - - :return Job: this job instance - - """ - self._scheduler.reschedule_job( - self.id, self._jobstore_alias, trigger, **trigger_args - ) - return self - - def pause(self): - """ - Temporarily suspend the execution of this job. - - .. seealso:: :meth:`~apscheduler.schedulers.base.BaseScheduler.pause_job` - - :return Job: this job instance - - """ - self._scheduler.pause_job(self.id, self._jobstore_alias) - return self - - def resume(self): - """ - Resume the schedule of this job if previously paused. - - .. seealso:: :meth:`~apscheduler.schedulers.base.BaseScheduler.resume_job` - - :return Job: this job instance - - """ - self._scheduler.resume_job(self.id, self._jobstore_alias) - return self - - def remove(self): - """ - Unschedules this job and removes it from its associated job store. - - .. seealso:: :meth:`~apscheduler.schedulers.base.BaseScheduler.remove_job` - - """ - self._scheduler.remove_job(self.id, self._jobstore_alias) - - @property - def pending(self): - """ - Returns ``True`` if the referenced job is still waiting to be added to its designated job - store. - - """ - return self._jobstore_alias is None - - # - # Private API - # - - def _get_run_times(self, now): - """ - Computes the scheduled run times between ``next_run_time`` and ``now`` (inclusive). - - :type now: datetime.datetime - :rtype: list[datetime.datetime] - - """ - run_times = [] - next_run_time = self.next_run_time - while next_run_time and next_run_time <= now: - run_times.append(next_run_time) - next_run_time = self.trigger.get_next_fire_time(next_run_time, now) - - return run_times - - def _modify(self, **changes): - """ - Validates the changes to the Job and makes the modifications if and only if all of them - validate. - - """ - approved = {} - - if "id" in changes: - value = changes.pop("id") - if not isinstance(value, str): - raise TypeError("id must be a nonempty string") - if hasattr(self, "id"): - raise ValueError("The job ID may not be changed") - approved["id"] = value - - if "func" in changes or "args" in changes or "kwargs" in changes: - func = changes.pop("func") if "func" in changes else self.func - args = changes.pop("args") if "args" in changes else self.args - kwargs = changes.pop("kwargs") if "kwargs" in changes else self.kwargs - - if isinstance(func, str): - func_ref = func - func = ref_to_obj(func) - elif callable(func): - try: - func_ref = obj_to_ref(func) - except ValueError: - # If this happens, this Job won't be serializable - func_ref = None - else: - raise TypeError("func must be a callable or a textual reference to one") - - if not hasattr(self, "name") and changes.get("name", None) is None: - changes["name"] = get_callable_name(func) - - if isinstance(args, str) or not isinstance(args, Iterable): - raise TypeError("args must be a non-string iterable") - if isinstance(kwargs, str) or not isinstance(kwargs, Mapping): - raise TypeError("kwargs must be a dict-like object") - - check_callable_args(func, args, kwargs) - - approved["func"] = func - approved["func_ref"] = func_ref - approved["args"] = args - approved["kwargs"] = kwargs - - if "name" in changes: - value = changes.pop("name") - if not value or not isinstance(value, str): - raise TypeError("name must be a nonempty string") - approved["name"] = value - - if "misfire_grace_time" in changes: - value = changes.pop("misfire_grace_time") - if value is not None and (not isinstance(value, int) or value <= 0): - raise TypeError( - "misfire_grace_time must be either None or a positive integer" - ) - approved["misfire_grace_time"] = value - - if "coalesce" in changes: - value = bool(changes.pop("coalesce")) - approved["coalesce"] = value - - if "max_instances" in changes: - value = changes.pop("max_instances") - if not isinstance(value, int) or value <= 0: - raise TypeError("max_instances must be a positive integer") - approved["max_instances"] = value - - if "trigger" in changes: - trigger = changes.pop("trigger") - if not isinstance(trigger, BaseTrigger): - raise TypeError( - f"Expected a trigger instance, got {trigger.__class__.__name__} instead" - ) - - approved["trigger"] = trigger - - if "executor" in changes: - value = changes.pop("executor") - if not isinstance(value, str): - raise TypeError("executor must be a string") - approved["executor"] = value - - if "next_run_time" in changes: - value = changes.pop("next_run_time") - approved["next_run_time"] = convert_to_datetime( - value, self._scheduler.timezone, "next_run_time" - ) - - if changes: - raise AttributeError( - "The following are not modifiable attributes of Job: {}".format( - ", ".join(changes) - ) - ) - - for key, value in approved.items(): - setattr(self, key, value) - - def __getstate__(self): - # Don't allow this Job to be serialized if the function reference could not be determined - if not self.func_ref: - raise ValueError( - f"This Job cannot be serialized since the reference to its callable ({self.func!r}) could not " - "be determined. Consider giving a textual reference (module:function name) " - "instead." - ) - - # Instance methods cannot survive serialization as-is, so store the "self" argument - # explicitly - func = self.func - if ( - ismethod(func) - and not isclass(func.__self__) - and obj_to_ref(func) == self.func_ref - ): - args = (func.__self__,) + tuple(self.args) - else: - args = self.args - - return { - "version": 1, - "id": self.id, - "func": self.func_ref, - "trigger": self.trigger, - "executor": self.executor, - "args": args, - "kwargs": self.kwargs, - "name": self.name, - "misfire_grace_time": self.misfire_grace_time, - "coalesce": self.coalesce, - "max_instances": self.max_instances, - "next_run_time": self.next_run_time, - } - - def __setstate__(self, state): - if state.get("version", 1) > 1: - raise ValueError( - f"Job has version {state['version']}, but only version 1 can be handled" - ) - - self.id = state["id"] - self.func_ref = state["func"] - self.func = ref_to_obj(self.func_ref) - self.trigger = state["trigger"] - self.executor = state["executor"] - self.args = state["args"] - self.kwargs = state["kwargs"] - self.name = state["name"] - self.misfire_grace_time = state["misfire_grace_time"] - self.coalesce = state["coalesce"] - self.max_instances = state["max_instances"] - self.next_run_time = state["next_run_time"] - - def __eq__(self, other): - if isinstance(other, Job): - return self.id == other.id - return NotImplemented - - def __repr__(self): - return f"" - - def __str__(self): - if hasattr(self, "next_run_time"): - status = ( - "next run at: " + datetime_repr(self.next_run_time) - if self.next_run_time - else "paused" - ) - else: - status = "pending" - - return f"{self.name} (trigger: {self.trigger}, {status})" diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/__init__.py b/venv/lib/python3.12/site-packages/apscheduler/jobstores/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 81f964aa9b9a2691a4a81d462213104663ae1d72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmX@j%ge<81g+b{GC=fW5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!iqp@?&rQ|O%1_MC z&Cg4%%G7tx&nqs?DFF(WrRJ6C=VT`77gUyHn9cz zCugLll;)%s0gXs1F3B$fipIxh=4F<|$LkeT{^GF7%?HWb6|n-XV+7)25aS~=BO_xG HGmr%U+hQ}d diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/base.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/base.cpython-312.pyc deleted file mode 100644 index 038f2916b5b68df1497deec637df1e7fa077cfc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6814 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 diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/etcd.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/etcd.cpython-312.pyc deleted file mode 100644 index 580e5edd1eb19b4c860c2eea3cc2ca1afc7101ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9050 zcmeG?TW}lKb$55M-~t4R2LXyNQIKd#f+>>G!PNqX?n#6RHj;WDmB7eEhi9GFe(&u+H;;c zPcCq$$ayB@{1gXAL#!c45na|}aoG?M&Lk6Zh%vZh$+IEOa6J>zWT>9dld5d^4kZ&~ zN-V0!65~gu5mim9Mk9?MH3D=?Zh#)i1JEmZ0s6A!0uydJK|(&mRe77pzXOe&K`0c# zT5vLXR)Y%#BlLQG!J))-P?5*<Bv-%Uv4}PhJVQTn=8QQukcz00cu><-IFddwKp`9p zdVqQ_aH-z^wgeI9 zr8JNQv0e{eU;pc^TH42XpGI-f5zHt-8doA&&_vyYz>lB_fZ;0cDFRby zhC>u7!-=AX_dyN{1}{Dc_fI6_a{pv9l8l2ooQd^=;?sc4(0NWyoal@x|8&Qh+|`jLnGQq!srzB3aTsZeQs79O_3kaiNl{fp$Dhd3H9 z)#Zei+d^AmOJCM@Tj(h4Jcz&DzjimR`Z|_3kK}!amtBWH_P1nhmmR;Z_pY{eEgsId z^<;;?cl?vK?p)hrOD+J|ybJr1Xo+K>ff^Ed=I*}%SRffP3BT1vVrHOAui!0KQn*H$c^Eb&LVv&>P z-e}DMgUB)D6qzO^)5ncIVEPRQkVXWS;rb{ zceE5*H^0?>wf(IvSGO#+=3Dn(I+i^$_qEmLjs<02S=^s*?#Ui0_?lOIJ9ECBOPg-C z=R!~AeS_IUg{J20vHPp;j&;H~T0Uypw8p{j0}c80heN{9cJlsq$Iu?`{oM?}4UB{e zg)-7bsDRoksvA^9CBm>kz!DR|v|_Oo+Aw(&_8bQWeGOz4$jwO%682jSRxQI$wSf@x z(557xXD>I~$gB$O1Y|LZ;zi6`W0dSOoexoF!}xJn zu0;S`BpZoh3sezhjYm3sGw<55#=#&Ek-*PACwb~1bIb9Uqrdpt2M0!PyLaAbS~_*T zGw*(4S$K8%D;u?wKDz_XI5fQVXBMNhvH|LPvZ+6K&1aRC3DuBjmo*3b!DIY9AU*!RSH zqwkL9_YMEEdt`BP&Uxjryl3mOdn9WEP!L=zLU&H+UX*SNJq33YGCNN^hZ)N4-*@e^ zZBRcb0#yAx16=;a?N}|VWpSx#+bZ~&nH1nFRmGZ}VJ4ATtBNIG68i&COl3c7vSgde z3($X?^px9H?RwE(&w{r%iJG{oOa`htpqXJawi{e&C0Il)praQ=3!D}4RaLB;yv|I6 z5RR&yFn*0S1#=758G}EEj#tQKdR0N_G}xF#l`5TQxI|Q~)S`-_x(z4rQaYZ}sN-cC zR&Oe;i?J~gTtal`G+k3sSAnfnCv)9T=G_Azh2RDspFh6h@5%Xl3W3&z)AOfS0=>CF z?@HjYT;Q>rv3%g*t=+l6@UnlTY8-lZ-wfT_w;b4=4?MfB}dji z$J}v(=&t&Li%st|zulbo?Ob;4{2Xychn|Y_t}i9dmfkh(4KQsD-CQ%0sy(xYjjCmt zD#V5QZd6=qeYw_twW6?+FGxj&+aM|sS{CE~ z!gBj^fqgem1E*ocb-h5+NmlTwjvQoYPqd2qqH-I1SWp$Ds~!mB1BQ=Atwj!oK|w@45wJiS{ind zrhN@J_4qNTYj#+10y>P;mD>;}sE9t8Y<$FV@h zA&7!MwoDnoXARoaq(V*1TeP!&F^e%wUIT?heFobs?;!s}!pl}#YtPutFdR-*OXb=( zCcY#Nf{Z%wLP}~DkXS64(n}CSEE^b&{aBS#u}RwXG^Q9M^4T*LNK{vI8v{ChLHQ73Ukmje5(sqRF~a-~-9J=b0~u zBbp16YPNh^}JF0&fO-r5Aq8&}9f}GohCf znD5620eGgeo;-rvy0vY=-d^YfD})aeF+Ju6i}fj{tUsk&F@{~Ai6zF88q$J13;l;oqTgg`S zC7g%`|VYb0rLY7ZDP-&ony zo7>d8B>gOQEtcQ(MBevgw(jHR&FiGm;k$G=duYzP#x^wgR@;Ja?Yg>aQG-POT;0dr zyOzXU_fv)TEi3K2bM3ot?)bBw+@8bv_9GCacKYU=YXX6Aw0^$+%CQeUJJ#H=+npeB zwG}q^KrXkTXU(5=c+eWhPRd=A^ z^8C{C(mkGoEF<9@&inUTiGS-lu~#3e(9yMcJlFA+oBmwK0XT8_Iw4u z=9+h{c(&&}+YA1uZ?%5Lv0mSr1GagfAuIp&5IJOL|HeMlG~B`eZ94;S1Iwc&qGtc^ zpz>wRzJ!5aQT4#mQmJVuYZ^z(cZG*|Oj&=yz5WCq^~i`{us)2HzcA*?TOv_t-Cn|LOSOAHOZUTJZYj_ALy~ z53V#lnrnJ=+1Io5`> zT?vpeD;MM$9yvVp(sL)pufF)g$rld2@Em;!Q+x1Idl8_Eryf9X1i_04sFa7X_8Njm z5cDCK0bn!~U+J4*mo9QmQ?gvXnu@_I)2`UYy$AC0F#8=4QL9OzAYDiuwwc}PrqfX+8*H>mz0G|@-Z zP5}TN!7#rh4Zk8genYnWioB8|ulxsVW7s!u_K^~S41Cl+hj{^n_lHE)K(P06$m%e#UH*|g4IhUd= zD>8;%NQd|5+`n_b^K0G`8yWu#FsNqk3r@Zk%`PC$SgC-%(9d0 ztYgx_U>%#_X8B2;AuM^F$c~SR%qh%$ht+q|InRfkUt=NcFg>Rty7Gp4dBRXN#SDz8 z$yg#DHR8#sv+@~DQ#G>*TF@M-0V?&nl9kN+}~MVO}>PvvW~v3X8Jk z!qfL5^K)3OLM9oROtLaF>By28BeNe1lN_#Zl9xH4PMHVllAS;W*#)#g7J$0t2B3|y z8>mNa1nQMNK%27ULuS%9LBd|M>AW(lYV-D1($j7c65W zW0a}dG|CwNPhSS|YvvX)DvgUwhWrZ7?|!+4AyXtnBwI=(j-~P$5i(EiG2>y* zW(txNPsR;NGIZ$cRLaVSVbbO7Jea3PSKpq5Vl~Tb8@wE6(K-@gFhAFNyyv+q0GRyHqBH7wcV0oWafT(B$*9C0|3J@evcg=*RVRw zYM@TUbWAA*7+Mnz7EEplC+{r$aTH+inT~t1be$PD;K#Mc=-HZ(q^Z zQ}FeyzP5I5!*}#icfof&FC5p9v;Gc$0xbZM3V<@q{c?VRogxbk*n72PfE&|ka#1AY zJ!o0r7WfSRQ}}1tE2jz3K>ah03HZ<0hJyC6NQSdVXUL8H9Ocx|)PxX z%_&Ja?6d^rNUGONFOY2|H(kg87Q%FZh|GqH_UkwbYMoe?qz5D|$ti_mHT_(TEUOz^ zp{M>15Wq@s_(9J`a5U>J1zNJMQrG@FGq-29h@(MV9M6s|hf2O+-Y2e}ec)a1JyG(v zZaRs-E!(uo6K~7X_~Ll(@MF)uO&9QQx@n7b0u?F4EGSiqu?vvd4P#nIeeB5$V#}iS z&SwHl@B{(a*{Gv(^(K`M4M|HSsUYt$RJ=Masw}K#l*bOHv{*-CJ2>`1cl~=n0EELw z9=89sJ!>qb7t^`!#f97tDIy07zJa`O=8F~}&k6!zLIv>}WOft8X|lvb0gzGlq6(n`7!(lKMJ!m1wO-MThG5w6*CY z#sINc2{;8izx}m27g(6Bal78mW!PP2C~H5p1ZYod(hS)~onLKq> z^q{s4gexM;)Xwg$L3+8q4|?i91_H<5*t9gdIJ*2!v9+%NzsA0=0==sfpIx|nVI$C= z_w@gxWne8@9DJoP_{v7h$!tT(-%|AV6#PA_XV>)KT)lU7!#|qkOM+*~z346qp@I;~ z^{w`-&gZ*_zZ6DFy$9Ap`JTgBt|$b-Rps{F*?W8Mx*$Glzbm*ZS-AQ?Jk$)zuqJJL zEo#$QIBoWN>kdrS>1AW;BM2*I8fu1wBH)0nH=B)%1ElA_;QaSbOH z>r2Q&KicmW;0ZTa;71Rog^}R#YtJL0UK4eJVqZH1xv*;+_@+xuPi= z58zsrYS-F;MN3oArl6)kD#sF%k%4=?kE11 zTkaKi?r7fMR|<9%gNF*iLu=&+t-EOXSEO!LtWP&A+ww7`d@KkmBuwz+j|@PRJ$tH9VRL# zw6ZqF7C69X9jl+=DB|rdRbRjz#$7e(1lrsosD#)H)k~w0+eRCP5fp)8-on^ktf*L6 ztsjayvR7k9gR9Eb`k2{nI*C2s2LhN0brwV6LMU7e4HQBHYq1B3jnLR)Q`V9F5t!iY zO9+=TRN$N|7Pf3%t#e&Y0b)vi>~r&ETkUQ0f6eX<+QLpL3F32PHPMWLf0bUYTitc9V>?8HHa z%Fv2(WTxsqQTP5}V;gP{fa2>_xR+VGEeSy$1bU7PcLg@CUBO%$CXyX#D1%3+J937{ zu#oDMbHSBy?K-v#TQiJxXUXsjT=E54#<`pscnrX~797cN#yNvVwkFxP9on;PSDxC@ z*bI+%qw=1Z8?Y<5A@b?RZmKar-d2p1mefUKT7f452x>$%MhjDMxGm!|LcgeLVmv0s zjRW{-V2Cj_m6ZFddR&`UG=-LdUDT)5R6-UnE0sB{07-#5czKaUHCZ)5#YL1K9&la9 zjQKej&wgS#1`9JPgISF<29uA8x}jMQ7TAy8K1@eE8T%RpLB2+~!h?b%p(L$PjgKYN zh+$b2!LleAscC3dOg5pK>~!38%*JKY1q9uW>BUTCDLNWGoC*{5QPeG_J8QIVXPo#J zbkctZ#}Q`?mX&H?ya*Y^fKV$&s69a(y??Jvs_eT$6u!&?$YAve78E>;9@wXd}2V(ZPlWsV&c7T1%u_GS0xbHvxYJo3w_%`V~( zWE-gZh5h&*lZ?Ovm}I&oX;#H263BZb>4Q`xQEqWblB`B0i9VBPZLnhv?`s+w5bXex z0VGF|yoiKaikC2l(S_+Pzve_0xG70+qw+&7HFqa1VWappBxv;YlR&=xnEaFFc;Ool z$9HXc82-eTQ{daSS{VK{X3NR&&u=+h{0mzFKYx6y*Twg31z2Dd7=GWso$Y*pZjTN* z9(I}SRqsE8aQxQ$&miJfLyKcw2yk-KU(K2_;t4A@!o}T#uo0Qj&VDBxw}kbw_9he& il6nV_O$Wm;e=qt?KhMnh&zW=n^ZnQPXQ$If;QEWNFHQfWmymzM8{;zTjc0!cjd>yvfr*lU z_RjZEL_nTbA2=pho0{n%m@|&Kj@^{B07j;o$`Af(@ucumg1p z4xqJy6R1n51zIP#fVzb`pdP^uv|jK4^$PVs8?xj&6KEVKey{4Z-0-p~Y`W}j~$KI@B$lS<;MDEY34v)2-m;0sApsTfFBhL-3PKx$zn zI_pb@WLXq^N`g+FoQ>fb?2>(#>9pEm(5}PNijq9k-ycdw`Y4ky(U*{>`jfNDbRym# zPDv8Xj@|HxGW1g#4ATScn^t1c4!uX4!04%X)6vVpJ{x`Ag=lIDw-=3s;;or1xS-@Fgbcitsp-QsQbv0DXgn#N*nc%4b!%@JL+oB_rW0 zQ85UElmsmNkp2K?p%38LuZmIQb={K*$tR0a1f-Y_;dcFde1bR`N<{$%uqI_%EG=X@ zGBpia>q09m^-jBHnGj5~pOs9UaEOom<8!&dZgl3TGFV=|o41M`+v6>ra& zXPgF4`5)E%q5gJ;C@!N%Fh@wn`~~yZOyw*YQq3S_m}VH3VJRg+-k4*S_$_1U-4~}t zU%R1*?Vwx$Qc(ddjHN)d@r2@=5Pf1Ssm!MLP~I~7{v@}`T>B$R=PTm3s%ANrgu~#2 z!ALx!1cRz;11wbArBE~_QkyB^5><-^U)3gyiVgtDfgQH;0{k_qNfx7%DsOB+Y6TXl z1xXV!J9LN!!IsFXH3$j}nh*@ic!&sQpYP_&pY%^BVq*VHB9s7~71NP^a4Iq&4jx_= z<5&BmkqO;syx#ZPzJ58Ph`q^B_)2I>l)-$I&<0aXP%V}?}n(6JC zg6C|`arO^(_ex90!ihplPj>jzGe0<*ijI!Fqhn!c(f!2Hv(nO)Z+TXb7iiNCpsJMkXN7a9A+H zxMoV4Vmu)be+cZ~a^;bLLerS)jEmQmpp=SJ$9xgptqe$%MZZaEguwtHB_t{Ibm2@T z5nL=lNf56C!!~5FmJUHRQwuEl;IWLW!ZVh3KttLIB;By_B>!@B-MvqEZPa06DQ)HhSIAC!+0 zfl*2lD@z09Xesj;EpV^wSo(;reTKZhycbX5!T`qTpplJmsymCpg3Z)%*uVIV2pea$W5|bzh(Z| z-DAc2o_u}J;)$gXm(CUH2ebV5$4_OIqN^+K>ROmy{3yTk?SkuYj(_)C0mx=i;?}7s z2cc1k!%WFvftW}&VWM_s*a#CTae{!jF{u+~N}D>PARtyktp-y%B`UZ#*$@X8Ph3;2 zrNCNVCkzL23n?l;Io-MuLY2K|VS2d>2q>brcQIV>?#o)2UG;Z9p8NRT&z2e=HRtvY z<+cwOTq8MtWV0Hg0@3ZKq46q6!p#c=H;;&_RM1IwiUFgAv%+74? z7aP|Z2dSwx2zX|+Us&S=h(B{v@5rzd%3>-i_x5?FX!%Gts&k$&xpxu%kobh zWP~}#JaHiMewN>Ptl&7l%CT14^1GMl|7Q84l&JhqLxak{WC-Dbenm=J2-2(y#WGkS z2xG>{SIij5=1mx{HU%dm*MrFr#HRv_DS`eP_JKDu%3@53PjROeuDQ zx9FE)%oIcry_8ZMIa6yqEB|Mh8I;b3%ZPVjwVn-KaBCP><6Q#tt5OupkXh0}6sS9B z7v%Mg5UFC!Loaxr$!M4VjhSwh^L%y;@^lXDDK$3IYryPxXvWwEDY7Uj)Eu+GfCfn8 zLUF4WEtXWxLMoP&RYwp_6Sd~SAdLbgl!%08Q3r_1q2a33u9}cQp_JaTQK$5dAdHr; z1G!07S-Z7&*->}r{M`AXV`tv6^M|e59~`)UV5RHmBe{6&LjKr=Lf1PhJ9e!!ZGYgn z?^qZwcD<4BdZW;F@R7Ip*17y!=L$_@&p5Wd@oA04?fH@8owYBXdq~}mHNseXS3I2y z<6mC-{8GWQ2NZObgJ&;g41RA7yf(0(Jl@|nSkHwkafc$IxI0d9SB^bE{*`>dhL<6K zrQ{~dIID&-n5Bd-Z3a4v-UQU(;x=4WP{UHcQw5dPFbSTBsfI={&m8(FWBwalhLgH7 z+)N3B<%I~QD-hF34eRh&4dJ?py2Z=_p8aMtHJvaGg`qS8E%1Jjh)5_)faQ7wO6bF- zQ6y;dG|ZuGS8b^zmXHv+(n);ajD-};O@rY?Dy~TAtMmv~I)nW+;ptEuvI^A#B_hmu zQF$PwFk%XQzN#@rxi1ETEMNiH5dl|Oi@ux)gux$O(fmyXXJi{r)KBl+GV zh2CS|c#8w?TTH?2-ZA}^KEzAite7gyJzverJ=7+{N}{s`A3uA zOy!P@72M~umhbKE&nAnFyYr2^7eoKj*uUcOE!2P6_<3W&)17m4uX1F|-t2+RMiTc# z!HW9yY92aM5t`6gZ)=9FW?%%C9(+ZzUiK&YAwyV$2df>a=8ILEAVwkirIyC2wbvb$ z7Wqm0aojsV)(1H@NsK`Ot9ry&?z@TuG2Z|W<8D|dWDsz{eYm=0t4X!ev!X<)R1ZPp zRis+>#c0f>0T>SOr}(w&@`#1vvr->)R3-&3eM^StOt)>cof{ZF!U<4IVdF+p)sg2r z76!lLcWE%G+z{#--4HtcSJ{x^%__HpB>~kOjwZm9Y}^PhPp1?iaV@?%OE-ExhT$?A z4sGf7IeU?B&hyRR@mn|JyL1xY(uJ3eaWzw1#^nvBY>um?ffWg(E+*7~nNn#9UZ!8= zIU#ncUKC=>#i#1#JHrOi%F!#sj_bJKsjXAZ(L_j)CETc56NIqz8q{>a@q&re9j|H& zmNRlokf!9Si^gAA=F}eOse@)^(f+N|C+T%~vN_1zl#l%!2cikagrQ~r?A@~q%>{2y z*1A&bzH?>n%C9;KwcE4YG7o3g1htiW%}@A_<>qY<+U~byxld}Bx3@pIa{o$}d%|yB zc6qY4%_mxNuXvX8WQyEi;RmIV8F=l+t6E}(IfB4WLEXN5iZrV*8Ck_J`3aOKZkQls zWUCcU;9b>D+9c4zp5f4qe};V0Z6e?p+y0L=RtW-Og_aCgnfw8I;N&5^!#Imx5Z)c2 zn5yFNXG-NsgB!{{=8Q?tj`T1DMsrp7XYlFRX2=KRlfNo`2CC7mHO7V1HTxOqD74f5 z_u^Rk#o92qOrwPEYwwcVu@*v25Z0M-x+1P`b2=#xv>9fX{E%Y5-Um5hBPcODIycb`omQT3Q0JtgPj67-gXo z*St7QV$#hUjb$mJo&#?ApMYQn;)cYdd26%Oblv?t%RXW7wsuVKNSYud9E z{D(+x|ApM^?|`>$?tMnsX4@LES`TJVty(P3gUfZ^dHY@az2Rc(zI^Mxr8gg)$-jQ8 z&^r2E-RV^;@I7rJj+Rm|yDRV5wb-!K@TfMo_hhd7)Dy?(518n@c-}y~5S*H{869^W z#k!sOx}D43W8XA=+x58ZImfy^s}|yJE7o=8>o8kPeV+K&x&y0L81qs_*(`MoyvaU( z^YGw7^WPs}fUc{ap^T`t$D9?uRAO2Pt&LYT6Z%W|iV57Njl6_F5BF;`)G$nAFPXz> ztFK!tiycX`{-a=hd@uy7(s8JHL$ZKQVzYOE4k(lbgPXmB(erBDp{TYR zG^|irf_I>8Q|nHRo;)=&eld9A-SZdE51l_t>&mpGsq#=;fcm;JEA<1bbO6cQNRA;H zLV{Hl>0Kn3kYG(f`g0_RdWuLX0WH<3m&n5+WXnNNG9NspUjH~PYe}f&l%OM*(?DL_ zCQn(XnO|)up0?%sW=M^fo3oQLWKGt!b4Uw2o@6@wH9FuhKHjLRI@{ED6O5`k_PRz^G^fZNRD9 zk?a8Sl0U3r;;4jy2UY X@D7;BW0QGc3-{P+9q@3EJ=p$VW=m&3 diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/redis.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/redis.cpython-312.pyc deleted file mode 100644 index 1b836fcd5f598a6a9aed27575f5f74b9ee939918..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9588 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 diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/rethinkdb.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/rethinkdb.cpython-312.pyc deleted file mode 100644 index a562bf0291d1834018d6094e0b6034af04fd9c50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11249 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 diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/sqlalchemy.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/sqlalchemy.cpython-312.pyc deleted file mode 100644 index 1fb3c410d8437d76d138bc3f0fce42b7db155be9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11620 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 Y-MY_1-SM#d)-rc|j(tJqP7w3|3y-#A0RR91 diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/zookeeper.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/jobstores/__pycache__/zookeeper.cpython-312.pyc deleted file mode 100644 index 1f7035b58ac8689dc0678223ab7be606f0e4df07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10170 zcmeG?TW}lKb$4HQE(s8Ph;KroND-n$MlUO36zVOTmQBT$Vp~u=5QJTdAn~Ag7m|p8 ziQ-WkFjXUQ+>WG)8_{iMOpTl|{pIPjom%c=-04RNkt&g`I&r4ybo@tCN~$P7J?AcV z0g{m2b~4kS-WeX;$GML^=iKwU{Ktw47lHD7AHFiYsezDx!-iReLgnEsRIU?=NKA|b z@t2J;aVE&b*&xecn~QOAKFG&~pg`Mv%oeu??X)h$9C2sR8FvL;ad*&7`)n~WUJ1Z&2bb|U*W5~VU&%|cCb++mC{ zx%y33VuIDDt1mDY$VKiHxxfV6pW)zOfYlvRSd+DAT-F^3)5(Mky`I6OBp_k8kffYZf;VO56e2`#C}y6;djF%*kNv}oeofMm?8gwYq0$3-h<&Yu|=?yDJ5Y?OpyStBt)5+waSX54E>CM4p z@|Y}-$%=UpzaqbpiYl_|r+EHo0+x@(WGP}$#DILE@$d#zz7H&vNsy695Q)V}ti(yY z%#Tn3D4j;g5T7MOj3iuk25pkm*fKImfQeENd#CSRRFA% zDgk;V4?wTv1z06j0rW{efYnkpz?v+%$OLOokU))IwdVW6zXjI1{7@*}RsTrxtO{T0 z5Bn`#zoy7?kN-eo+#i#NwB&hN@sG;m7m|wP4=d+VaUh)vHQ6r#r6O8v+&>mpRax?D zNxJkXl6aHqKT|?$I>PJ+%OQ+A3h(B#=>V~#zZ%c-dMYL>gGVE# zEeig*n8e&E z=#w{@336V9B>39mrlSpd*v$9`~k7?saZS0U)OF@)61ht4N7Pbh10I9k&6rv&;3aR+DC~bcKr6-}@;bdIy9Z80hanQi&XfNne z6+{9$&&!GPy|L)o-m!6QIGNbdvu%5?8r9^jW8uhX_?)bkN&_r$mfjP!*Sc6eW8+E< zY?f}c)Pt!idrShg!?-#O;PEB$$V;4+llGjWe!&NNanRzwc;##F3`XT;r}85daS5 zTQ<;vhp-ok6l4nP1SJpu9-_ovCmAvVzpIPd0sWT57Dq=cc`Wt;rmfgAYo>gHtwotL zyU92Su!AQ9ywV6=l!?0AU^3+~nWj>Ho%Tp*Ag0NxhSEsP+4`w z;R@pwhbzk7DUb=SITHKh*yD9Rq2FQdfi%D(v|li{tf^js}CF%llIAqYtiZ2 z1;-{J>D6yfetXfg@t$X+Mb?&_*m7TNTjGef!=PrV09n*@0avNml?o;7f~EMa<;728 z(txE|LYT4CCH7CSPUJxuVH~lPBJN_8q6+;MoO6Pk;5Ag}w2YuCT2(TfDbf=H?BZE9 z49$!nv8a_SJX^+gg0vIOYvO|A$T8#;@X>M+xxpt)ukHkW5(27ga=@vy13JA2ItSL- zU@&)1)^wYpU3DRr3`?qB1uh)$UDcvmN|QsdgkFK3;*pCHd5oGoyCDlUTs*wA^aC*>tPzX4_1|e8Y~(=d;gVd+C9% z{`!`wEjKRA`!;0{<$ZOFzOJ0FYo>bUbS|)G-q#16)pgnDA3yLkFB8UD|Fi0KOC0<@ zQGKxcPY*Z_JVWk2<2=Z6A2STVNU0E_;Lt052`XT-EfFjV(gfJhkuSK0hsjk~^Bjq= zuYJr7<6W;?LSMw&$OAFv8YTx1n6$Z0UB z{531G0qiNeg8b~Dc|R!S>qA4)i=fOPxRB^I38_g1W8zXKDEpCWE67jp1;nXz&eQIN zIga#J_W%I3*0cTn#O=gY8^u~bbM%m)0goA%x`Wq2bFG^0Xmo7>@8Slbm2UPCV|SLC04e= zh|WeOs+%dYE{0G;Q==UUDZPjwNU8XkN&^zZY}+CbxkCVjYED5Xq@c^GBr7|y_XV8D zL)s<0T7%oe5|!+9!&>!F7#f1f>W=_?k=bp3zw@?fdVksS%&fY&`?=ii=jK}m@(s<4 z4S`%kV7{UIbAhXJWrar$;;p-ynatccGQD%LeRr;XH)se@=q%^lYWaGtIkEM|_$)ss zw%!+afiZ4HW4!f&Z{zfdcVBtum3iNmIdKab=B-a2qBC{(>n#VH$j41>2m4l<%z#Ox_wH2X}KgoPZcwc?pJB z%egBxhFQm_Ihn;#6(?gJ@pmHa)vm0)DDBTqpIq$Nlk3rc^uy@|wO*di`26vkC<>A?kAgzy}2)SFN-M z+O6@ML2;Mj98AF|9WVm^Kg~TNwIM61CC7Au zraIS<*`W@nG%0x@Q7$iNj$MUi)UN;l`F492-Cg(GT^4bhb7J#?*lM-SM2kSgz}iF$ zQj1dTPoV-7V;~l?;@omn!aSf+OsxVjFk6mxMU6nIXUVBKAKkQ)%r+Tu6i3V&V4yQZ z3p)4)HEjx#UAKoIFuDMFWbm!Pq7-~9-4!Y(vuq)n&C)&8f5)c^qr>$2(S@Vl)e23c zY=iD{Vb+=y${zuuit!t8qNXM5d{9|+b#!v{?e_V~)-0EIxECGukg~neu;6IN6b7U( zvfP!*eCvi=qc=yh+=8Pi@9||_24gJ3!-7Z*%9yu7RKM^3a$|4~;wJdRgv5VSxB;^a zQ!KVZvf?m#{Ra?_86HO&TqCB)@YJwio~zu><+5plxeLvv*(U5?l1;Oj_!ACz9&s3{ z5=fd9Y6*BFggS@!3r>M*VpTCm&2=*Na#4uHzb#BSAs(n+H65B6r#Y7)SFZ3Nyh?qB z1quP~gbQ}H;)&wijH_f$El)Jes?s9aB)jC$Fk4N_h`&%N`FYQIr=aS8;MUsBfee#% z!%L^@vg19s8R5{pp%oi}A=pN*9O|4^WdupIsz^eHH&=prY}v2pi(hhzTw|_OSY|~u zjC@H0VWMX@MNo^p!U!c^s=cT3K@<(_xntjA24EeYKE%1eZ52>5gkb`SUr ze~OwDnxTjcM`Mx#$t4VOl^z7W2+&ASZ3gy+{y%{&JT@jLBxO4cfC7yr&z*xOIj3wU zft4W6Kw2s&dpZYC{<;l68y*WpBVV;22P%i)_0!0uK(biX?dTX_#Yh_`;3?3ESa;!C z&mh>1z({r#CPRdrfKC;83mGr7>^I&UFmaP^`T~-^jdPEI)pAD51Gq>n*%f4&EqrCT=VX0 zPI&0Kb^7M%TcMkwnN#yEyQf@`!l`;t*L*!T6`S5YU)Oz&`?Ph_r|TMT?7O$F8=f&b z12b*+I`(|p(2`%jar$&_{kD8l+hWtUT+_DM_Swer@4ouZtDk!uO}=aP zB_FA(z3!fJ-+1=EcjHnE9O&~cL~P8rbb|v_(GAD&)?D{Yd8VEBy_+FusObJ>eb|IYR`PWjq4&ziZ&75KUb{LBcVtQf{puQLnh%dN9KO zi2%1>7)*QjcBuX?<4O7J9crNe39~otw0hEPpdVaj^njEU0@UXCoQ=W`Ngce7YaKcm zkjIozsGLJ*j{ObHRF46ma(q>sgg24aoTGKFZQJb55BoppU)=G0ZpZVV9R8dm?8&2zr)nLV>7KRo@x>Dd=Q^38b;&p8eo3ZqW>4j$4K3dNK7 zp9zMy^hPQiGY*YT6g=pdDJk!B1J6Epb6Aa|kudH8$ZC zv+U)d>T(NPmmA$eV7bu-z$?I%N{Ve0s+YYTg6r3V3@aRAD7on7fm%a%7L}ma_{SAX zNvcMM4jm%hQ}SOQJ@B$(xTcM(dX3lrp0n`Yrl3&M>>ka2=-yJ)lopK{85C5B##4b< z`foGFe>%7a;$xtajem#W;9T_J3g%CZ??Ar-?2^Ire&q@@(YaK=1pxF2!~6@W_&M41 zA7szJleV9eS99dm|73ZF{hR<;5;^8Y=3n`)N3J(m<_L2`{1u^<$4gG)s0P&p!#{J? t&ea{9cOCkqdX9hLx47tw%o7!pv9q=VEV;`H2Wq*ycIN>vch`&c{{ml0jFJEV diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/base.py b/venv/lib/python3.12/site-packages/apscheduler/jobstores/base.py deleted file mode 100644 index 01cabd1..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/jobstores/base.py +++ /dev/null @@ -1,141 +0,0 @@ -import logging -from abc import ABCMeta, abstractmethod - - -class JobLookupError(KeyError): - """Raised when the job store cannot find a job for update or removal.""" - - def __init__(self, job_id): - super().__init__(f"No job by the id of {job_id} was found") - - -class ConflictingIdError(KeyError): - """Raised when the uniqueness of job IDs is being violated.""" - - def __init__(self, job_id): - super().__init__(f"Job identifier ({job_id}) conflicts with an existing job") - - -class TransientJobError(ValueError): - """ - Raised when an attempt to add transient (with no func_ref) job to a persistent job store is - detected. - """ - - def __init__(self, job_id): - super().__init__( - f"Job ({job_id}) cannot be added to this job store because a reference to the callable " - "could not be determined." - ) - - -class BaseJobStore(metaclass=ABCMeta): - """Abstract base class that defines the interface that every job store must implement.""" - - _scheduler = None - _alias = None - _logger = logging.getLogger("apscheduler.jobstores") - - def start(self, scheduler, alias): - """ - Called by the scheduler when the scheduler is being started or when the job store is being - added to an already running scheduler. - - :param apscheduler.schedulers.base.BaseScheduler scheduler: the scheduler that is starting - this job store - :param str|unicode alias: alias of this job store as it was assigned to the scheduler - """ - - self._scheduler = scheduler - self._alias = alias - self._logger = logging.getLogger(f"apscheduler.jobstores.{alias}") - - def shutdown(self): - """Frees any resources still bound to this job store.""" - - def _fix_paused_jobs_sorting(self, jobs): - for i, job in enumerate(jobs): - if job.next_run_time is not None: - if i > 0: - paused_jobs = jobs[:i] - del jobs[:i] - jobs.extend(paused_jobs) - break - - @abstractmethod - def lookup_job(self, job_id): - """ - Returns a specific job, or ``None`` if it isn't found.. - - The job store is responsible for setting the ``scheduler`` and ``jobstore`` attributes of - the returned job to point to the scheduler and itself, respectively. - - :param str|unicode job_id: identifier of the job - :rtype: Job - """ - - @abstractmethod - def get_due_jobs(self, now): - """ - Returns the list of jobs that have ``next_run_time`` earlier or equal to ``now``. - The returned jobs must be sorted by next run time (ascending). - - :param datetime.datetime now: the current (timezone aware) datetime - :rtype: list[Job] - """ - - @abstractmethod - def get_next_run_time(self): - """ - Returns the earliest run time of all the jobs stored in this job store, or ``None`` if - there are no active jobs. - - :rtype: datetime.datetime - """ - - @abstractmethod - def get_all_jobs(self): - """ - Returns a list of all jobs in this job store. - The returned jobs should be sorted by next run time (ascending). - Paused jobs (next_run_time == None) should be sorted last. - - The job store is responsible for setting the ``scheduler`` and ``jobstore`` attributes of - the returned jobs to point to the scheduler and itself, respectively. - - :rtype: list[Job] - """ - - @abstractmethod - def add_job(self, job): - """ - Adds the given job to this store. - - :param Job job: the job to add - :raises ConflictingIdError: if there is another job in this store with the same ID - """ - - @abstractmethod - def update_job(self, job): - """ - Replaces the job in the store with the given newer version. - - :param Job job: the job to update - :raises JobLookupError: if the job does not exist - """ - - @abstractmethod - def remove_job(self, job_id): - """ - Removes the given job from this store. - - :param str|unicode job_id: identifier of the job - :raises JobLookupError: if the job does not exist - """ - - @abstractmethod - def remove_all_jobs(self): - """Removes all jobs from this store.""" - - def __repr__(self): - return f"<{self.__class__.__name__}>" diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/etcd.py b/venv/lib/python3.12/site-packages/apscheduler/jobstores/etcd.py deleted file mode 100644 index 3fe74ff..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/jobstores/etcd.py +++ /dev/null @@ -1,170 +0,0 @@ -import pickle -from datetime import datetime, timezone - -from apscheduler.job import Job -from apscheduler.jobstores.base import BaseJobStore, ConflictingIdError, JobLookupError -from apscheduler.util import ( - datetime_to_utc_timestamp, - maybe_ref, - utc_timestamp_to_datetime, -) - -try: - from etcd3 import Etcd3Client -except ImportError as exc: # pragma: nocover - raise ImportError("EtcdJobStore requires etcd3 be installed") from exc - - -class EtcdJobStore(BaseJobStore): - """ - Stores jobs in a etcd. Any leftover keyword arguments are directly passed to - etcd3's `etcd3.client - `_. - - Plugin alias: ``etcd`` - - :param str path: path to store jobs in - :param client: a :class:`~etcd3.client.etcd3` instance to use instead of - providing connection arguments - :param int pickle_protocol: pickle protocol level to use (for serialization), defaults to the - highest available - """ - - def __init__( - self, - path="/apscheduler", - client=None, - close_connection_on_exit=False, - pickle_protocol=pickle.DEFAULT_PROTOCOL, - **connect_args, - ): - super().__init__() - self.pickle_protocol = pickle_protocol - self.close_connection_on_exit = close_connection_on_exit - - if not path: - raise ValueError('The "path" parameter must not be empty') - - self.path = path - - if client: - self.client = maybe_ref(client) - else: - self.client = Etcd3Client(**connect_args) - - def lookup_job(self, job_id): - node_path = self.path + "/" + str(job_id) - try: - content, _ = self.client.get(node_path) - content = pickle.loads(content) - job = self._reconstitute_job(content["job_state"]) - return job - except BaseException: - return None - - def get_due_jobs(self, now): - timestamp = datetime_to_utc_timestamp(now) - jobs = [ - job_record["job"] - for job_record in self._get_jobs() - if job_record["next_run_time"] is not None - and job_record["next_run_time"] <= timestamp - ] - return jobs - - def get_next_run_time(self): - next_runs = [ - job_record["next_run_time"] - for job_record in self._get_jobs() - if job_record["next_run_time"] is not None - ] - return utc_timestamp_to_datetime(min(next_runs)) if len(next_runs) > 0 else None - - def get_all_jobs(self): - jobs = [job_record["job"] for job_record in self._get_jobs()] - self._fix_paused_jobs_sorting(jobs) - return jobs - - def add_job(self, job): - node_path = self.path + "/" + str(job.id) - value = { - "next_run_time": datetime_to_utc_timestamp(job.next_run_time), - "job_state": job.__getstate__(), - } - data = pickle.dumps(value, self.pickle_protocol) - status = self.client.put_if_not_exists(node_path, value=data) - if not status: - raise ConflictingIdError(job.id) - - def update_job(self, job): - node_path = self.path + "/" + str(job.id) - changes = { - "next_run_time": datetime_to_utc_timestamp(job.next_run_time), - "job_state": job.__getstate__(), - } - data = pickle.dumps(changes, self.pickle_protocol) - status, _ = self.client.transaction( - compare=[self.client.transactions.version(node_path) > 0], - success=[self.client.transactions.put(node_path, value=data)], - failure=[], - ) - if not status: - raise JobLookupError(job.id) - - def remove_job(self, job_id): - node_path = self.path + "/" + str(job_id) - status, _ = self.client.transaction( - compare=[self.client.transactions.version(node_path) > 0], - success=[self.client.transactions.delete(node_path)], - failure=[], - ) - if not status: - raise JobLookupError(job_id) - - def remove_all_jobs(self): - self.client.delete_prefix(self.path) - - def shutdown(self): - self.client.close() - - def _reconstitute_job(self, job_state): - job_state = job_state - job = Job.__new__(Job) - job.__setstate__(job_state) - job._scheduler = self._scheduler - job._jobstore_alias = self._alias - return job - - def _get_jobs(self): - jobs = [] - failed_job_ids = [] - all_ids = list(self.client.get_prefix(self.path)) - - for doc, _ in all_ids: - try: - content = pickle.loads(doc) - job_record = { - "next_run_time": content["next_run_time"], - "job": self._reconstitute_job(content["job_state"]), - } - jobs.append(job_record) - except BaseException: - content = pickle.loads(doc) - failed_id = content["job_state"]["id"] - failed_job_ids.append(failed_id) - self._logger.exception( - 'Unable to restore job "%s" -- removing it', failed_id - ) - - if failed_job_ids: - for failed_id in failed_job_ids: - self.remove_job(failed_id) - paused_sort_key = datetime(9999, 12, 31, tzinfo=timezone.utc) - return sorted( - jobs, - key=lambda job_record: job_record["job"].next_run_time or paused_sort_key, - ) - - def __repr__(self): - self._logger.exception("<%s (client=%s)>", self.__class__.__name__, self.client) - return f"<{self.__class__.__name__} (client={self.client})>" diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/memory.py b/venv/lib/python3.12/site-packages/apscheduler/jobstores/memory.py deleted file mode 100644 index 8103cfd..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/jobstores/memory.py +++ /dev/null @@ -1,106 +0,0 @@ -from apscheduler.jobstores.base import BaseJobStore, ConflictingIdError, JobLookupError -from apscheduler.util import datetime_to_utc_timestamp - - -class MemoryJobStore(BaseJobStore): - """ - Stores jobs in an array in RAM. Provides no persistence support. - - Plugin alias: ``memory`` - """ - - def __init__(self): - super().__init__() - # list of (job, timestamp), sorted by next_run_time and job id (ascending) - self._jobs = [] - self._jobs_index = {} # id -> (job, timestamp) lookup table - - def lookup_job(self, job_id): - return self._jobs_index.get(job_id, (None, None))[0] - - def get_due_jobs(self, now): - now_timestamp = datetime_to_utc_timestamp(now) - pending = [] - for job, timestamp in self._jobs: - if timestamp is None or timestamp > now_timestamp: - break - pending.append(job) - - return pending - - def get_next_run_time(self): - return self._jobs[0][0].next_run_time if self._jobs else None - - def get_all_jobs(self): - return [j[0] for j in self._jobs] - - def add_job(self, job): - if job.id in self._jobs_index: - raise ConflictingIdError(job.id) - - timestamp = datetime_to_utc_timestamp(job.next_run_time) - index = self._get_job_index(timestamp, job.id) - self._jobs.insert(index, (job, timestamp)) - self._jobs_index[job.id] = (job, timestamp) - - def update_job(self, job): - old_job, old_timestamp = self._jobs_index.get(job.id, (None, None)) - if old_job is None: - raise JobLookupError(job.id) - - # If the next run time has not changed, simply replace the job in its present index. - # Otherwise, reinsert the job to the list to preserve the ordering. - old_index = self._get_job_index(old_timestamp, old_job.id) - new_timestamp = datetime_to_utc_timestamp(job.next_run_time) - if old_timestamp == new_timestamp: - self._jobs[old_index] = (job, new_timestamp) - else: - del self._jobs[old_index] - new_index = self._get_job_index(new_timestamp, job.id) - self._jobs.insert(new_index, (job, new_timestamp)) - - self._jobs_index[old_job.id] = (job, new_timestamp) - - def remove_job(self, job_id): - job, timestamp = self._jobs_index.get(job_id, (None, None)) - if job is None: - raise JobLookupError(job_id) - - index = self._get_job_index(timestamp, job_id) - del self._jobs[index] - del self._jobs_index[job.id] - - def remove_all_jobs(self): - self._jobs = [] - self._jobs_index = {} - - def shutdown(self): - self.remove_all_jobs() - - def _get_job_index(self, timestamp, job_id): - """ - Returns the index of the given job, or if it's not found, the index where the job should be - inserted based on the given timestamp. - - :type timestamp: int - :type job_id: str - - """ - lo, hi = 0, len(self._jobs) - timestamp = float("inf") if timestamp is None else timestamp - while lo < hi: - mid = (lo + hi) // 2 - mid_job, mid_timestamp = self._jobs[mid] - mid_timestamp = float("inf") if mid_timestamp is None else mid_timestamp - if mid_timestamp > timestamp: - hi = mid - elif mid_timestamp < timestamp: - lo = mid + 1 - elif mid_job.id > job_id: - hi = mid - elif mid_job.id < job_id: - lo = mid + 1 - else: - return mid - - return lo diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/mongodb.py b/venv/lib/python3.12/site-packages/apscheduler/jobstores/mongodb.py deleted file mode 100644 index 102c0bd..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/jobstores/mongodb.py +++ /dev/null @@ -1,158 +0,0 @@ -import pickle -import warnings - -from apscheduler.job import Job -from apscheduler.jobstores.base import BaseJobStore, ConflictingIdError, JobLookupError -from apscheduler.util import ( - datetime_to_utc_timestamp, - maybe_ref, - utc_timestamp_to_datetime, -) - -try: - from bson.binary import Binary - from pymongo import ASCENDING, MongoClient - from pymongo.errors import DuplicateKeyError -except ImportError as exc: # pragma: nocover - raise ImportError("MongoDBJobStore requires PyMongo installed") from exc - - -class MongoDBJobStore(BaseJobStore): - """ - Stores jobs in a MongoDB database. Any leftover keyword arguments are directly passed to - pymongo's `MongoClient - `_. - - Plugin alias: ``mongodb`` - - :param str database: database to store jobs in - :param str collection: collection to store jobs in - :param client: a :class:`~pymongo.mongo_client.MongoClient` instance to use instead of - providing connection arguments - :param int pickle_protocol: pickle protocol level to use (for serialization), defaults to the - highest available - """ - - def __init__( - self, - database="apscheduler", - collection="jobs", - client=None, - pickle_protocol=pickle.HIGHEST_PROTOCOL, - **connect_args, - ): - super().__init__() - self.pickle_protocol = pickle_protocol - - if not database: - raise ValueError('The "database" parameter must not be empty') - if not collection: - raise ValueError('The "collection" parameter must not be empty') - - if client: - self.client = maybe_ref(client) - else: - connect_args.setdefault("w", 1) - self.client = MongoClient(**connect_args) - - self.collection = self.client[database][collection] - - def start(self, scheduler, alias): - super().start(scheduler, alias) - self.collection.create_index("next_run_time", sparse=True) - - @property - def connection(self): - warnings.warn( - 'The "connection" member is deprecated -- use "client" instead', - DeprecationWarning, - ) - return self.client - - def lookup_job(self, job_id): - document = self.collection.find_one(job_id, ["job_state"]) - return self._reconstitute_job(document["job_state"]) if document else None - - def get_due_jobs(self, now): - timestamp = datetime_to_utc_timestamp(now) - return self._get_jobs({"next_run_time": {"$lte": timestamp}}) - - def get_next_run_time(self): - document = self.collection.find_one( - {"next_run_time": {"$ne": None}}, - projection=["next_run_time"], - sort=[("next_run_time", ASCENDING)], - ) - return ( - utc_timestamp_to_datetime(document["next_run_time"]) if document else None - ) - - def get_all_jobs(self): - jobs = self._get_jobs({}) - self._fix_paused_jobs_sorting(jobs) - return jobs - - def add_job(self, job): - try: - self.collection.insert_one( - { - "_id": job.id, - "next_run_time": datetime_to_utc_timestamp(job.next_run_time), - "job_state": Binary( - pickle.dumps(job.__getstate__(), self.pickle_protocol) - ), - } - ) - except DuplicateKeyError: - raise ConflictingIdError(job.id) - - def update_job(self, job): - changes = { - "next_run_time": datetime_to_utc_timestamp(job.next_run_time), - "job_state": Binary(pickle.dumps(job.__getstate__(), self.pickle_protocol)), - } - result = self.collection.update_one({"_id": job.id}, {"$set": changes}) - if result and result.matched_count == 0: - raise JobLookupError(job.id) - - def remove_job(self, job_id): - result = self.collection.delete_one({"_id": job_id}) - if result and result.deleted_count == 0: - raise JobLookupError(job_id) - - def remove_all_jobs(self): - self.collection.delete_many({}) - - def shutdown(self): - self.client.close() - - def _reconstitute_job(self, job_state): - job_state = pickle.loads(job_state) - job = Job.__new__(Job) - job.__setstate__(job_state) - job._scheduler = self._scheduler - job._jobstore_alias = self._alias - return job - - def _get_jobs(self, conditions): - jobs = [] - failed_job_ids = [] - for document in self.collection.find( - conditions, ["_id", "job_state"], sort=[("next_run_time", ASCENDING)] - ): - try: - jobs.append(self._reconstitute_job(document["job_state"])) - except BaseException: - self._logger.exception( - 'Unable to restore job "%s" -- removing it', document["_id"] - ) - failed_job_ids.append(document["_id"]) - - # Remove all the jobs we failed to restore - if failed_job_ids: - self.collection.delete_many({"_id": {"$in": failed_job_ids}}) - - return jobs - - def __repr__(self): - return f"<{self.__class__.__name__} (client={self.client})>" diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/redis.py b/venv/lib/python3.12/site-packages/apscheduler/jobstores/redis.py deleted file mode 100644 index 528285f..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/jobstores/redis.py +++ /dev/null @@ -1,160 +0,0 @@ -import pickle -from datetime import datetime, timezone - -from apscheduler.job import Job -from apscheduler.jobstores.base import BaseJobStore, ConflictingIdError, JobLookupError -from apscheduler.util import datetime_to_utc_timestamp, utc_timestamp_to_datetime - -try: - from redis import Redis -except ImportError as exc: # pragma: nocover - raise ImportError("RedisJobStore requires redis installed") from exc - - -class RedisJobStore(BaseJobStore): - """ - Stores jobs in a Redis database. Any leftover keyword arguments are directly passed to redis's - :class:`~redis.StrictRedis`. - - Plugin alias: ``redis`` - - :param int db: the database number to store jobs in - :param str jobs_key: key to store jobs in - :param str run_times_key: key to store the jobs' run times in - :param int pickle_protocol: pickle protocol level to use (for serialization), defaults to the - highest available - """ - - def __init__( - self, - db=0, - jobs_key="apscheduler.jobs", - run_times_key="apscheduler.run_times", - pickle_protocol=pickle.HIGHEST_PROTOCOL, - **connect_args, - ): - super().__init__() - - if db is None: - raise ValueError('The "db" parameter must not be empty') - if not jobs_key: - raise ValueError('The "jobs_key" parameter must not be empty') - if not run_times_key: - raise ValueError('The "run_times_key" parameter must not be empty') - - self.pickle_protocol = pickle_protocol - self.jobs_key = jobs_key - self.run_times_key = run_times_key - self.redis = Redis(db=int(db), **connect_args) - - def lookup_job(self, job_id): - job_state = self.redis.hget(self.jobs_key, job_id) - return self._reconstitute_job(job_state) if job_state else None - - def get_due_jobs(self, now): - timestamp = datetime_to_utc_timestamp(now) - job_ids = self.redis.zrangebyscore(self.run_times_key, 0, timestamp) - if job_ids: - job_states = self.redis.hmget(self.jobs_key, *job_ids) - return self._reconstitute_jobs(zip(job_ids, job_states)) - return [] - - def get_next_run_time(self): - next_run_time = self.redis.zrange(self.run_times_key, 0, 0, withscores=True) - if next_run_time: - return utc_timestamp_to_datetime(next_run_time[0][1]) - - def get_all_jobs(self): - job_states = self.redis.hgetall(self.jobs_key) - jobs = self._reconstitute_jobs(job_states.items()) - paused_sort_key = datetime(9999, 12, 31, tzinfo=timezone.utc) - return sorted(jobs, key=lambda job: job.next_run_time or paused_sort_key) - - def add_job(self, job): - if self.redis.hexists(self.jobs_key, job.id): - raise ConflictingIdError(job.id) - - with self.redis.pipeline() as pipe: - pipe.multi() - pipe.hset( - self.jobs_key, - job.id, - pickle.dumps(job.__getstate__(), self.pickle_protocol), - ) - if job.next_run_time: - pipe.zadd( - self.run_times_key, - {job.id: datetime_to_utc_timestamp(job.next_run_time)}, - ) - - pipe.execute() - - def update_job(self, job): - if not self.redis.hexists(self.jobs_key, job.id): - raise JobLookupError(job.id) - - with self.redis.pipeline() as pipe: - pipe.hset( - self.jobs_key, - job.id, - pickle.dumps(job.__getstate__(), self.pickle_protocol), - ) - if job.next_run_time: - pipe.zadd( - self.run_times_key, - {job.id: datetime_to_utc_timestamp(job.next_run_time)}, - ) - else: - pipe.zrem(self.run_times_key, job.id) - - pipe.execute() - - def remove_job(self, job_id): - if not self.redis.hexists(self.jobs_key, job_id): - raise JobLookupError(job_id) - - with self.redis.pipeline() as pipe: - pipe.hdel(self.jobs_key, job_id) - pipe.zrem(self.run_times_key, job_id) - pipe.execute() - - def remove_all_jobs(self): - with self.redis.pipeline() as pipe: - pipe.delete(self.jobs_key) - pipe.delete(self.run_times_key) - pipe.execute() - - def shutdown(self): - self.redis.connection_pool.disconnect() - - def _reconstitute_job(self, job_state): - job_state = pickle.loads(job_state) - job = Job.__new__(Job) - job.__setstate__(job_state) - job._scheduler = self._scheduler - job._jobstore_alias = self._alias - return job - - def _reconstitute_jobs(self, job_states): - jobs = [] - failed_job_ids = [] - for job_id, job_state in job_states: - try: - jobs.append(self._reconstitute_job(job_state)) - except BaseException: - self._logger.exception( - 'Unable to restore job "%s" -- removing it', job_id - ) - failed_job_ids.append(job_id) - - # Remove all the jobs we failed to restore - if failed_job_ids: - with self.redis.pipeline() as pipe: - pipe.hdel(self.jobs_key, *failed_job_ids) - pipe.zrem(self.run_times_key, *failed_job_ids) - pipe.execute() - - return jobs - - def __repr__(self): - return f"<{self.__class__.__name__}>" diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/rethinkdb.py b/venv/lib/python3.12/site-packages/apscheduler/jobstores/rethinkdb.py deleted file mode 100644 index d78290b..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/jobstores/rethinkdb.py +++ /dev/null @@ -1,173 +0,0 @@ -import pickle - -from apscheduler.job import Job -from apscheduler.jobstores.base import BaseJobStore, ConflictingIdError, JobLookupError -from apscheduler.util import ( - datetime_to_utc_timestamp, - maybe_ref, - utc_timestamp_to_datetime, -) - -try: - from rethinkdb import RethinkDB -except ImportError as exc: # pragma: nocover - raise ImportError("RethinkDBJobStore requires rethinkdb installed") from exc - - -class RethinkDBJobStore(BaseJobStore): - """ - Stores jobs in a RethinkDB database. Any leftover keyword arguments are directly passed to - rethinkdb's `RethinkdbClient `_. - - Plugin alias: ``rethinkdb`` - - :param str database: database to store jobs in - :param str collection: collection to store jobs in - :param client: a :class:`rethinkdb.net.Connection` instance to use instead of providing - connection arguments - :param int pickle_protocol: pickle protocol level to use (for serialization), defaults to the - highest available - """ - - def __init__( - self, - database="apscheduler", - table="jobs", - client=None, - pickle_protocol=pickle.HIGHEST_PROTOCOL, - **connect_args, - ): - super().__init__() - - if not database: - raise ValueError('The "database" parameter must not be empty') - if not table: - raise ValueError('The "table" parameter must not be empty') - - self.database = database - self.table_name = table - self.table = None - self.client = client - self.pickle_protocol = pickle_protocol - self.connect_args = connect_args - self.r = RethinkDB() - self.conn = None - - def start(self, scheduler, alias): - super().start(scheduler, alias) - - if self.client: - self.conn = maybe_ref(self.client) - else: - self.conn = self.r.connect(db=self.database, **self.connect_args) - - if self.database not in self.r.db_list().run(self.conn): - self.r.db_create(self.database).run(self.conn) - - if self.table_name not in self.r.table_list().run(self.conn): - self.r.table_create(self.table_name).run(self.conn) - - if "next_run_time" not in self.r.table(self.table_name).index_list().run( - self.conn - ): - self.r.table(self.table_name).index_create("next_run_time").run(self.conn) - - self.table = self.r.db(self.database).table(self.table_name) - - def lookup_job(self, job_id): - results = list(self.table.get_all(job_id).pluck("job_state").run(self.conn)) - return self._reconstitute_job(results[0]["job_state"]) if results else None - - def get_due_jobs(self, now): - return self._get_jobs( - self.r.row["next_run_time"] <= datetime_to_utc_timestamp(now) - ) - - def get_next_run_time(self): - results = list( - self.table.filter(self.r.row["next_run_time"] != None) - .order_by(self.r.asc("next_run_time")) - .map(lambda x: x["next_run_time"]) - .limit(1) - .run(self.conn) - ) - return utc_timestamp_to_datetime(results[0]) if results else None - - def get_all_jobs(self): - jobs = self._get_jobs() - self._fix_paused_jobs_sorting(jobs) - return jobs - - def add_job(self, job): - job_dict = { - "id": job.id, - "next_run_time": datetime_to_utc_timestamp(job.next_run_time), - "job_state": self.r.binary( - pickle.dumps(job.__getstate__(), self.pickle_protocol) - ), - } - results = self.table.insert(job_dict).run(self.conn) - if results["errors"] > 0: - raise ConflictingIdError(job.id) - - def update_job(self, job): - changes = { - "next_run_time": datetime_to_utc_timestamp(job.next_run_time), - "job_state": self.r.binary( - pickle.dumps(job.__getstate__(), self.pickle_protocol) - ), - } - results = self.table.get_all(job.id).update(changes).run(self.conn) - skipped = False in map(lambda x: results[x] == 0, results.keys()) - if results["skipped"] > 0 or results["errors"] > 0 or not skipped: - raise JobLookupError(job.id) - - def remove_job(self, job_id): - results = self.table.get_all(job_id).delete().run(self.conn) - if results["deleted"] + results["skipped"] != 1: - raise JobLookupError(job_id) - - def remove_all_jobs(self): - self.table.delete().run(self.conn) - - def shutdown(self): - self.conn.close() - - def _reconstitute_job(self, job_state): - job_state = pickle.loads(job_state) - job = Job.__new__(Job) - job.__setstate__(job_state) - job._scheduler = self._scheduler - job._jobstore_alias = self._alias - return job - - def _get_jobs(self, predicate=None): - jobs = [] - failed_job_ids = [] - query = ( - self.table.filter(self.r.row["next_run_time"] != None).filter(predicate) - if predicate - else self.table - ) - query = query.order_by("next_run_time", "id").pluck("id", "job_state") - - for document in query.run(self.conn): - try: - jobs.append(self._reconstitute_job(document["job_state"])) - except Exception: - self._logger.exception( - 'Unable to restore job "%s" -- removing it', document["id"] - ) - failed_job_ids.append(document["id"]) - - # Remove all the jobs we failed to restore - if failed_job_ids: - self.r.expr(failed_job_ids).for_each( - lambda job_id: self.table.get_all(job_id).delete() - ).run(self.conn) - - return jobs - - def __repr__(self): - connection = self.conn - return f"<{self.__class__.__name__} (connection={connection})>" diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/sqlalchemy.py b/venv/lib/python3.12/site-packages/apscheduler/jobstores/sqlalchemy.py deleted file mode 100644 index 9866acf..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/jobstores/sqlalchemy.py +++ /dev/null @@ -1,194 +0,0 @@ -import pickle - -from apscheduler.job import Job -from apscheduler.jobstores.base import BaseJobStore, ConflictingIdError, JobLookupError -from apscheduler.util import ( - datetime_to_utc_timestamp, - maybe_ref, - utc_timestamp_to_datetime, -) - -try: - from sqlalchemy import ( - Column, - Float, - LargeBinary, - MetaData, - Table, - Unicode, - and_, - create_engine, - select, - ) - from sqlalchemy.exc import IntegrityError - from sqlalchemy.sql.expression import null -except ImportError as exc: # pragma: nocover - raise ImportError("SQLAlchemyJobStore requires SQLAlchemy installed") from exc - - -class SQLAlchemyJobStore(BaseJobStore): - """ - Stores jobs in a database table using SQLAlchemy. - The table will be created if it doesn't exist in the database. - - Plugin alias: ``sqlalchemy`` - - :param str url: connection string (see - :ref:`SQLAlchemy documentation ` on this) - :param engine: an SQLAlchemy :class:`~sqlalchemy.engine.Engine` to use instead of creating a - new one based on ``url`` - :param str tablename: name of the table to store jobs in - :param metadata: a :class:`~sqlalchemy.schema.MetaData` instance to use instead of creating a - new one - :param int pickle_protocol: pickle protocol level to use (for serialization), defaults to the - highest available - :param str tableschema: name of the (existing) schema in the target database where the table - should be - :param dict engine_options: keyword arguments to :func:`~sqlalchemy.create_engine` - (ignored if ``engine`` is given) - """ - - def __init__( - self, - url=None, - engine=None, - tablename="apscheduler_jobs", - metadata=None, - pickle_protocol=pickle.HIGHEST_PROTOCOL, - tableschema=None, - engine_options=None, - ): - super().__init__() - self.pickle_protocol = pickle_protocol - metadata = maybe_ref(metadata) or MetaData() - - if engine: - self.engine = maybe_ref(engine) - elif url: - self.engine = create_engine(url, **(engine_options or {})) - else: - raise ValueError('Need either "engine" or "url" defined') - - # 191 = max key length in MySQL for InnoDB/utf8mb4 tables, - # 25 = precision that translates to an 8-byte float - self.jobs_t = Table( - tablename, - metadata, - Column("id", Unicode(191), primary_key=True), - Column("next_run_time", Float(25), index=True), - Column("job_state", LargeBinary, nullable=False), - schema=tableschema, - ) - - def start(self, scheduler, alias): - super().start(scheduler, alias) - self.jobs_t.create(self.engine, True) - - def lookup_job(self, job_id): - selectable = select(self.jobs_t.c.job_state).where(self.jobs_t.c.id == job_id) - with self.engine.begin() as connection: - job_state = connection.execute(selectable).scalar() - return self._reconstitute_job(job_state) if job_state else None - - def get_due_jobs(self, now): - timestamp = datetime_to_utc_timestamp(now) - return self._get_jobs(self.jobs_t.c.next_run_time <= timestamp) - - def get_next_run_time(self): - selectable = ( - select(self.jobs_t.c.next_run_time) - .where(self.jobs_t.c.next_run_time != null()) - .order_by(self.jobs_t.c.next_run_time) - .limit(1) - ) - with self.engine.begin() as connection: - next_run_time = connection.execute(selectable).scalar() - return utc_timestamp_to_datetime(next_run_time) - - def get_all_jobs(self): - jobs = self._get_jobs() - self._fix_paused_jobs_sorting(jobs) - return jobs - - def add_job(self, job): - insert = self.jobs_t.insert().values( - **{ - "id": job.id, - "next_run_time": datetime_to_utc_timestamp(job.next_run_time), - "job_state": pickle.dumps(job.__getstate__(), self.pickle_protocol), - } - ) - with self.engine.begin() as connection: - try: - connection.execute(insert) - except IntegrityError: - raise ConflictingIdError(job.id) - - def update_job(self, job): - update = ( - self.jobs_t.update() - .values( - **{ - "next_run_time": datetime_to_utc_timestamp(job.next_run_time), - "job_state": pickle.dumps(job.__getstate__(), self.pickle_protocol), - } - ) - .where(self.jobs_t.c.id == job.id) - ) - with self.engine.begin() as connection: - result = connection.execute(update) - if result.rowcount == 0: - raise JobLookupError(job.id) - - def remove_job(self, job_id): - delete = self.jobs_t.delete().where(self.jobs_t.c.id == job_id) - with self.engine.begin() as connection: - result = connection.execute(delete) - if result.rowcount == 0: - raise JobLookupError(job_id) - - def remove_all_jobs(self): - delete = self.jobs_t.delete() - with self.engine.begin() as connection: - connection.execute(delete) - - def shutdown(self): - self.engine.dispose() - - def _reconstitute_job(self, job_state): - job_state = pickle.loads(job_state) - job_state["jobstore"] = self - job = Job.__new__(Job) - job.__setstate__(job_state) - job._scheduler = self._scheduler - job._jobstore_alias = self._alias - return job - - def _get_jobs(self, *conditions): - jobs = [] - selectable = select(self.jobs_t.c.id, self.jobs_t.c.job_state).order_by( - self.jobs_t.c.next_run_time - ) - selectable = selectable.where(and_(*conditions)) if conditions else selectable - failed_job_ids = set() - with self.engine.begin() as connection: - for row in connection.execute(selectable): - try: - jobs.append(self._reconstitute_job(row.job_state)) - except BaseException: - self._logger.exception( - 'Unable to restore job "%s" -- removing it', row.id - ) - failed_job_ids.add(row.id) - - # Remove all the jobs we failed to restore - if failed_job_ids: - delete = self.jobs_t.delete().where( - self.jobs_t.c.id.in_(failed_job_ids) - ) - connection.execute(delete) - - return jobs - - def __repr__(self): - return f"<{self.__class__.__name__} (url={self.engine.url})>" diff --git a/venv/lib/python3.12/site-packages/apscheduler/jobstores/zookeeper.py b/venv/lib/python3.12/site-packages/apscheduler/jobstores/zookeeper.py deleted file mode 100644 index 687fbc2..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/jobstores/zookeeper.py +++ /dev/null @@ -1,197 +0,0 @@ -import pickle -from datetime import datetime, timezone - -from kazoo.exceptions import NodeExistsError, NoNodeError - -from apscheduler.job import Job -from apscheduler.jobstores.base import BaseJobStore, ConflictingIdError, JobLookupError -from apscheduler.util import ( - datetime_to_utc_timestamp, - maybe_ref, - utc_timestamp_to_datetime, -) - -try: - from kazoo.client import KazooClient -except ImportError as exc: # pragma: nocover - raise ImportError("ZooKeeperJobStore requires Kazoo installed") from exc - - -class ZooKeeperJobStore(BaseJobStore): - """ - Stores jobs in a ZooKeeper tree. Any leftover keyword arguments are directly passed to - kazoo's `KazooClient - `_. - - Plugin alias: ``zookeeper`` - - :param str path: path to store jobs in - :param client: a :class:`~kazoo.client.KazooClient` instance to use instead of - providing connection arguments - :param int pickle_protocol: pickle protocol level to use (for serialization), defaults to the - highest available - """ - - def __init__( - self, - path="/apscheduler", - client=None, - close_connection_on_exit=False, - pickle_protocol=pickle.HIGHEST_PROTOCOL, - **connect_args, - ): - super().__init__() - self.pickle_protocol = pickle_protocol - self.close_connection_on_exit = close_connection_on_exit - - if not path: - raise ValueError('The "path" parameter must not be empty') - - self.path = path - - if client: - self.client = maybe_ref(client) - else: - self.client = KazooClient(**connect_args) - self._ensured_path = False - - def _ensure_paths(self): - if not self._ensured_path: - self.client.ensure_path(self.path) - self._ensured_path = True - - def start(self, scheduler, alias): - super().start(scheduler, alias) - if not self.client.connected: - self.client.start() - - def lookup_job(self, job_id): - self._ensure_paths() - node_path = self.path + "/" + str(job_id) - try: - content, _ = self.client.get(node_path) - doc = pickle.loads(content) - job = self._reconstitute_job(doc["job_state"]) - return job - except BaseException: - return None - - def get_due_jobs(self, now): - timestamp = datetime_to_utc_timestamp(now) - jobs = [ - job_def["job"] - for job_def in self._get_jobs() - if job_def["next_run_time"] is not None - and job_def["next_run_time"] <= timestamp - ] - return jobs - - def get_next_run_time(self): - next_runs = [ - job_def["next_run_time"] - for job_def in self._get_jobs() - if job_def["next_run_time"] is not None - ] - return utc_timestamp_to_datetime(min(next_runs)) if len(next_runs) > 0 else None - - def get_all_jobs(self): - jobs = [job_def["job"] for job_def in self._get_jobs()] - self._fix_paused_jobs_sorting(jobs) - return jobs - - def add_job(self, job): - self._ensure_paths() - node_path = self.path + "/" + str(job.id) - value = { - "next_run_time": datetime_to_utc_timestamp(job.next_run_time), - "job_state": job.__getstate__(), - } - data = pickle.dumps(value, self.pickle_protocol) - try: - self.client.create(node_path, value=data) - except NodeExistsError: - raise ConflictingIdError(job.id) - - def update_job(self, job): - self._ensure_paths() - node_path = self.path + "/" + str(job.id) - changes = { - "next_run_time": datetime_to_utc_timestamp(job.next_run_time), - "job_state": job.__getstate__(), - } - data = pickle.dumps(changes, self.pickle_protocol) - try: - self.client.set(node_path, value=data) - except NoNodeError: - raise JobLookupError(job.id) - - def remove_job(self, job_id): - self._ensure_paths() - node_path = self.path + "/" + str(job_id) - try: - self.client.delete(node_path) - except NoNodeError: - raise JobLookupError(job_id) - - def remove_all_jobs(self): - try: - self.client.delete(self.path, recursive=True) - except NoNodeError: - pass - self._ensured_path = False - - def shutdown(self): - if self.close_connection_on_exit: - self.client.stop() - self.client.close() - - def _reconstitute_job(self, job_state): - job_state = job_state - job = Job.__new__(Job) - job.__setstate__(job_state) - job._scheduler = self._scheduler - job._jobstore_alias = self._alias - return job - - def _get_jobs(self): - self._ensure_paths() - jobs = [] - failed_job_ids = [] - all_ids = self.client.get_children(self.path) - for node_name in all_ids: - try: - node_path = self.path + "/" + node_name - content, _ = self.client.get(node_path) - doc = pickle.loads(content) - job_def = { - "job_id": node_name, - "next_run_time": doc["next_run_time"] - if doc["next_run_time"] - else None, - "job_state": doc["job_state"], - "job": self._reconstitute_job(doc["job_state"]), - "creation_time": _.ctime, - } - jobs.append(job_def) - except BaseException: - self._logger.exception( - 'Unable to restore job "%s" -- removing it', node_name - ) - failed_job_ids.append(node_name) - - # Remove all the jobs we failed to restore - if failed_job_ids: - for failed_id in failed_job_ids: - self.remove_job(failed_id) - paused_sort_key = datetime(9999, 12, 31, tzinfo=timezone.utc) - return sorted( - jobs, - key=lambda job_def: ( - job_def["job"].next_run_time or paused_sort_key, - job_def["creation_time"], - ), - ) - - def __repr__(self): - self._logger.exception("<%s (client=%s)>", self.__class__.__name__, self.client) - return f"<{self.__class__.__name__} (client={self.client})>" diff --git a/venv/lib/python3.12/site-packages/apscheduler/schedulers/__init__.py b/venv/lib/python3.12/site-packages/apscheduler/schedulers/__init__.py deleted file mode 100644 index c17cc29..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/schedulers/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -class SchedulerAlreadyRunningError(Exception): - """Raised when attempting to start or configure the scheduler when it's already running.""" - - def __str__(self): - return "Scheduler is already running" - - -class SchedulerNotRunningError(Exception): - """Raised when attempting to shutdown the scheduler when it's not running.""" - - def __str__(self): - return "Scheduler is not running" diff --git a/venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index a74e4f33ed7d09cb5d8d68a04e29998e4a71a480..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1052 zcmbVL&2H2%5Vn&nYzqY;A;bYBACS;iYQoP62_Yd=^|lg4aLC0niMt78?ZtLlk`ssW z3X~()6%W8e@B)x4FMzbmr6)Y`X4`^V3Fcr=X8et3zR&r(wzi6_z5nte`+yPp0Uw?9 z7S8OBbqsUAkBe!ZhE`Xn!oYr@z#05ZgN(@?# zh6;jzQhNnrumI6ZYM%nN>yBDT4hMd-viUaQ_9u|S>Cqxj3U%0j=;VE*u3A*9)=lgD b^fAVBFTmla2Xkb%`K17_f2@94-`(;XJLC^R diff --git a/venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/asyncio.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/asyncio.cpython-312.pyc deleted file mode 100644 index 16481b4009d50ce1be45019453af580b37f55867..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3683 zcmb_fUu+yl8K2p`z1usVbB+_m|IOx4+bnU_)HHKl3O79zzdG%C^svA4e6v(MSP zJ!bae_;gW?Fv6}{QXUZDiL^o@k%h!t`v^~c;3dYfY%Qq(Q66}6;}lhW;`?U*gqr6VM>?$RKsLm z)pUGio|z4z0)TZy!-z2M~E&YoAgkG21 zWKIe-b_{b7XdP>9IXVg@3*-)+(q)FH_A`ck)vkMv>o)v@Wz%sC?z(lun`O3XakFCU zil5-NQ}Gifo8f-)%Dfm;h*QJ1{6wW$FLT^dgSPnD_am1rb$YU~;LW=AlliBfp5#@}ezIYfub4A7p9Jh9$S30&Ec1nWx$5Q{3x2pU zYaL2nM=Qq%R{4(%60&{QX^fvxBg%qMQaD z>~~+uEPwTfmvS$)L+dy$cwp^}<4&7ShomkP?mor;;e=D=PXCWX5poFQ2gC>D)W0=8N z1sEfqw22X~ddXz8Tvy;F9ar`iwx)S9r5w zGZ;LGw-AG}D4%SYfTHE64WsOsoErwm141+r-o{4Yp>-&PKc;A2=r|1T_~X!l%WdTj z+<5(s*YA%%wmDu{8!xPne{K2Pn-@P)dsk8`y>C}G)Um+v_5|%5C=o#y#-IsPA+mLv z3Xtv*UL(jJK_RnYP~xk6w&_{!eBJLcxaT$uuUdm_5*nVEH>(~S1Hs(}V-jc$bsHS& zdICQfg$~0S8n>nn-aL3u9fxSPsSd)^hC1ABDPAGsx?@4NJH52&Tucdg88!<7&}xWP zblE_P7`^{S3dnDM=8+2lJ@5#=+;AI$C;>znqwLlz)tM%j%iuQPXmOFbv@mmJfrj9E0S{Ya-AH!4{t9f$PeBK+6*23cI=t00aJT2^ z)~NQ&i@&(IIa*j7E&R6qyGtKj{{7|k(QhrEd+WlsOtQxUWIM4#;s|74gURPbCpNZs z)Y^-n9k)PAfL0WTB=%+4!B0YtDccSta||;aj}oB3G?=zV_cA_mQ8b$$g$``*$=x{f z#+j{b-;E0^7dErnT2{N4J+jqz@Ta}o3ds(2TZ&c+ODiz>A2>w*lXXxm?iqAC!%}3q zEKKuzjRteeHiS}4uk1-U1v># za#pZnXiXiuIkBNW(G5d<;TWu-dZ$pelN!BFDUmR$!YVc>LF6fh!cb=C!UMe+779?D zk9Aaq`KW;4c{8X!*h%~_AikJ)8tD%jWvFC5+Xz#%5q;m%yDa}a(dS?Tz7M)Z@}YY6 zuetH{oOV~$guOa_NvD_e9QdG7H*2RAl^Q>WfziB$*o0MT#ZrLz`=!fWv z+$L&AhC!cUd<(8i!x>%?Ln^|J2DuUV>=*`6T4W8R^m9RyJcOdyVS&og!#-UiA4?fU z-5wfrn6zj$mOrfQ9MELse3aK2T-l+w?(32AK@J`B;*b z^UMk z1X!RQcSx`m+Vh$EOaSS#?CbD|X7eM^ZOfF>KaqWZCdd9xPJKuoe~?Vl0}uP3rib6Y K{t1CW==c|Dph2Pl diff --git a/venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/background.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/background.cpython-312.pyc deleted file mode 100644 index 606dd5e22fda4951ef809089cf9f528ee39ca7ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2558 zcmcH*OKcle@V&LY-Z(aCNl}}mNtdLeT}o}yh6vIhlvX`}BBWFtETr|u`)sefAM@VZ zwuvkhq#zQhP;o#B;y^)26a^%1z=;btE=fOXv}(lxIB*N3h^i;%?RxDr3O5+Z^JeDF z&dknl{ZlTNK>+W3`+Dui6hglUCI;X`*qDH05t+!uHga$gJ5o`?f|u-slPo4fI$@_A zxhRKp(oQ={QNc(;=a8A2L#9mR6K3}86Ff| zVooWh%;X#@$|0WuK0S{v^smahIqZL z8pms#H`sWg09q{HnC3Ol&3m+3IGP_V*wz#^=yW0S3x&zoxMPn*>|t-JPRg8}Ea_W~ zRy?X!dgE3uaB1Bc4eP|SFoIqd;gGeg_VZ@v?1ALy_H zfF8`EySoRMDxcIps$bvp&FIac=Wp(QVLo{!dsoRVq*s;xrLo(}@CK-&ay#e1h_xs@ zZ485S5j9aAn62=3|Mv3jDz@BunD+2^<)T;ym1~>kq81_4m6+MJQ;*5JSG3v_qH8lAJ=)uCf5jy~?E?w4MhjMpag ziVWMVN_dcT4Tn$>qt+G3I*Gmn7SkEwRP+rM`G9^C+m9v%ozWe`a&_DD8Z;*aX+0Wa zEkQ+aK@v=}K)!HEoUP_lX)j#S0YEc-+qFmNU=XgE1!xwnb@yC7ws35vd+6H!FAjZr z=+5xy>hS2T;jz2@`#wG}f9A?7zba4MQ3h6(fu%Dm%8_fMHx19%ADZ7c?q_B2841V9N1?mZYNefx>D&H@!`Tgt#%cE`f2 zVNReO6kQkHq3cj`-SNbq0id(G{-$r(t(&y2!@Ae?Fz|5t!x~c&SdeS2pfa&-UDt5* z24aw3jKUXvO9c`Q&PD(|m_vU^*_5)r7xnbcp1YrvQX_vVN^0=$U5QlRIsz1i7d|zi zWrD8u7bR*}k)L2-)2`b3S&tfe-@j?J{^(G#qJtfqwR~>b;Vuq+e~F?vL|Z>pjz{S^ pNe=@nUXY2httT+XKckV~&~x|DiF;_|zC4WkR{9V9h2RXI{|Dw>Y|Q`w diff --git a/venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/base.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/base.cpython-312.pyc deleted file mode 100644 index 265e9db7dfd5202dd20ba2234a2495aa241821b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54321 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 diff --git a/venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/qt.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/qt.cpython-312.pyc deleted file mode 100644 index f1b8189c7ddb49736213cfd85ab918098c2a880f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2526 zcmaJ@T})I*6rQ<1yLZ`L`H>3pBUkb7`ol)4wTZ?Q#2RWsB={3IZEml7N4T)NcbU0> ztZPaent~~{JT&;w2b=l;;l;Q1)#tvjMFZSu(xz!r-YD4A_|l%a`@@R0lW^vonK^sE zIo~;F_$eGNLoh!7;Y#0%gwSu?C=7pI*>FLbK_)VB93^lRW3CHvAt6RZPZ#4-LXOH9 z35baB=QAZ!HhuGA?iWn|ypYp6&_@Rl`Vg$BKdJ=yc}x_L0pg#>xie{)OohwBO06hDSrqaBeT6fcYBw^4tizDPBV( zSPQT6AJwoMwh}3uI(ou3hvEbl{3!}*%;9_O1|vPOKEk)?st-I?IpEcQU}%EtyExio znZ%VYj&?g~e@nM>)}|zVy4xu_sgw*3S(Gr9SWX|IYR)CXJ=BB4@2HNg4j z3rwJ!I9k?&G{p^;U`uOlDl6Phb@~iPr9(*uSX4s=cx0F)9W`#-sg|x-o+uBQ46+>l zHab9jgJ+Oa+?^CNXbO@lgDsR19^kJaaWbf%du$o=c^jiqG>5x1(UsXyicnW!eM63E zk0jlo&Kx_XJ63{FO>!kh;x}B$puNoX4UBkmK-Xh&gE3ua@KvO$>e$O`kv=;?BK@{u zC+s9iTamMNk`2WjScEGLN8;A?NNUvSvy-hY$Bsvs<&dK(BQ{|45*9I1#h65j8jB1% zEvZpj0pCbhm&CB80Ja8p*lrLn#?VtGJn7FWwfFWeDBAt~KP%d@5?WGfVd;rdw*iMx ztUxU{cw+Ig*?0hAhR3TIPguy0&3I+-r)QjenIYs9W1GPyPJ>k_3R5VQ;BCR--|$9% zprCEe83DfOHHFPJt`+<M`t9q$U!GNwR&n3Zh+#Q8BQZN^GB@B^oOZ^q38Yfq3EU9m zg8{YbB}BTml!nrsdN|8EL5!hd+#f4-%fXt3VDr=3`ftzP56wDRwRN%K?T7t~wQUof zPwUjBy2IJJ!?T?aou!kV*^`}%bstQ0OkG%$QD`sa?7mV0oIa1TJD_-!!Mt_QlMvRe zi(vN`$=lp4&`ayy;8Udebst`09|J9;h;D;jO{BYEautiU#T;uG8WgXiIqb!n@!ZM< z)Z;B(vn7s&isQ-5T0uYfzWwg4$y-b1&Drwi$L0H$E2?LL)4`<*HCv%R zuGjRJyA4 z0=YGKa1i6gnooh9S!L(F-A|N;{{hwk$Gv6-b8bvRSxoVQ%GZ+GxhV5mraXQgCaBw7 zgN>1RT-SjL4?EAH_j1TX{3sXvdW-{oF^*QG)?dPvWA8tg1i5})k>m?_JtWBu>me*R z{_PXwgKG$chu3rN(zdyQ+*1tQnet2l+ac7k?Kqtb z1(V;FO@UYwF~-kO^E1@=J38@eZPR!1ePgzAw*C9^g=1$IYdh9a0AImbse0`E#ML#y zCvRJ++;wkcZu{)j`G#!Mi5~;mrnbe(_6gsbf~sm~8mAj4d@D+Lt(^P)S%rc-7Is`( zEW5lQU4HJX!w0`U`WJ%f#oBhLs&$0r@QM-w7;^X}<4nz0x9t%g?UCCK$&WM)@?ZTy BM#umF diff --git a/venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/tornado.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/schedulers/__pycache__/tornado.cpython-312.pyc deleted file mode 100644 index fe90f4a556d55c3ba76094972ee23e42362cce07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3621 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 fC-U`w^Cf2R1IDw~pGLFjmNF&(Dt1`_ - for further details) - ========== ============================================================================= - """ - - _thread = None - - def _configure(self, config): - self._daemon = asbool(config.pop("daemon", True)) - super()._configure(config) - - def start(self, *args, **kwargs): - if self._event is None or self._event.is_set(): - self._event = Event() - - BaseScheduler.start(self, *args, **kwargs) - self._thread = Thread( - target=self._main_loop, name="APScheduler", daemon=self._daemon - ) - self._thread.start() - - def shutdown(self, *args, **kwargs): - super().shutdown(*args, **kwargs) - self._thread.join() - del self._thread diff --git a/venv/lib/python3.12/site-packages/apscheduler/schedulers/base.py b/venv/lib/python3.12/site-packages/apscheduler/schedulers/base.py deleted file mode 100644 index 7d713c7..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/schedulers/base.py +++ /dev/null @@ -1,1264 +0,0 @@ -import sys -import warnings -from abc import ABCMeta, abstractmethod -from collections.abc import Mapping, MutableMapping -from contextlib import ExitStack -from datetime import datetime, timedelta -from importlib.metadata import entry_points -from logging import getLogger -from threading import TIMEOUT_MAX, RLock - -from tzlocal import get_localzone - -from apscheduler.events import ( - EVENT_ALL, - EVENT_ALL_JOBS_REMOVED, - EVENT_EXECUTOR_ADDED, - EVENT_EXECUTOR_REMOVED, - EVENT_JOB_ADDED, - EVENT_JOB_MAX_INSTANCES, - EVENT_JOB_MODIFIED, - EVENT_JOB_REMOVED, - EVENT_JOB_SUBMITTED, - EVENT_JOBSTORE_ADDED, - EVENT_JOBSTORE_REMOVED, - EVENT_SCHEDULER_PAUSED, - EVENT_SCHEDULER_RESUMED, - EVENT_SCHEDULER_SHUTDOWN, - EVENT_SCHEDULER_STARTED, - JobEvent, - JobSubmissionEvent, - SchedulerEvent, -) -from apscheduler.executors.base import BaseExecutor, MaxInstancesReachedError -from apscheduler.executors.pool import ThreadPoolExecutor -from apscheduler.job import Job -from apscheduler.jobstores.base import BaseJobStore, ConflictingIdError, JobLookupError -from apscheduler.jobstores.memory import MemoryJobStore -from apscheduler.schedulers import ( - SchedulerAlreadyRunningError, - SchedulerNotRunningError, -) -from apscheduler.triggers.base import BaseTrigger -from apscheduler.util import ( - asbool, - asint, - astimezone, - maybe_ref, - obj_to_ref, - ref_to_obj, - undefined, -) - -#: constant indicating a scheduler's stopped state -STATE_STOPPED = 0 -#: constant indicating a scheduler's running state (started and processing jobs) -STATE_RUNNING = 1 -#: constant indicating a scheduler's paused state (started but not processing jobs) -STATE_PAUSED = 2 - - -class BaseScheduler(metaclass=ABCMeta): - """ - Abstract base class for all schedulers. - - Takes the following keyword arguments: - - :param str|logging.Logger logger: logger to use for the scheduler's logging (defaults to - apscheduler.scheduler) - :param str|datetime.tzinfo timezone: the default time zone (defaults to the local timezone) - :param int|float jobstore_retry_interval: the minimum number of seconds to wait between - retries in the scheduler's main loop if the job store raises an exception when getting - the list of due jobs - :param dict job_defaults: default values for newly added jobs - :param dict jobstores: a dictionary of job store alias -> job store instance or configuration - dict - :param dict executors: a dictionary of executor alias -> executor instance or configuration - dict - - :ivar int state: current running state of the scheduler (one of the following constants from - ``apscheduler.schedulers.base``: ``STATE_STOPPED``, ``STATE_RUNNING``, ``STATE_PAUSED``) - - .. seealso:: :ref:`scheduler-config` - """ - - # The `group=...` API is only available in the backport, used in <=3.7, and in std>=3.10. - if (3, 8) <= sys.version_info < (3, 10): - _trigger_plugins = { - ep.name: ep for ep in entry_points()["apscheduler.triggers"] - } - _executor_plugins = { - ep.name: ep for ep in entry_points()["apscheduler.executors"] - } - _jobstore_plugins = { - ep.name: ep for ep in entry_points()["apscheduler.jobstores"] - } - else: - _trigger_plugins = { - ep.name: ep for ep in entry_points(group="apscheduler.triggers") - } - _executor_plugins = { - ep.name: ep for ep in entry_points(group="apscheduler.executors") - } - _jobstore_plugins = { - ep.name: ep for ep in entry_points(group="apscheduler.jobstores") - } - - _trigger_classes = {} - _executor_classes = {} - _jobstore_classes = {} - - # - # Public API - # - - def __init__(self, gconfig={}, **options): - super().__init__() - self._executors = {} - self._executors_lock = self._create_lock() - self._jobstores = {} - self._jobstores_lock = self._create_lock() - self._listeners = [] - self._listeners_lock = self._create_lock() - self._pending_jobs = [] - self.state = STATE_STOPPED - self.configure(gconfig, **options) - - def __getstate__(self): - raise TypeError( - "Schedulers cannot be serialized. Ensure that you are not passing a " - "scheduler instance as an argument to a job, or scheduling an instance " - "method where the instance contains a scheduler as an attribute." - ) - - def configure(self, gconfig={}, prefix="apscheduler.", **options): - """ - Reconfigures the scheduler with the given options. - - Can only be done when the scheduler isn't running. - - :param dict gconfig: a "global" configuration dictionary whose values can be overridden by - keyword arguments to this method - :param str|unicode prefix: pick only those keys from ``gconfig`` that are prefixed with - this string (pass an empty string or ``None`` to use all keys) - :raises SchedulerAlreadyRunningError: if the scheduler is already running - - """ - if self.state != STATE_STOPPED: - raise SchedulerAlreadyRunningError - - # If a non-empty prefix was given, strip it from the keys in the - # global configuration dict - if prefix: - prefixlen = len(prefix) - gconfig = dict( - (key[prefixlen:], value) - for key, value in gconfig.items() - if key.startswith(prefix) - ) - - # Create a structure from the dotted options - # (e.g. "a.b.c = d" -> {'a': {'b': {'c': 'd'}}}) - config = {} - for key, value in gconfig.items(): - parts = key.split(".") - parent = config - key = parts.pop(0) - while parts: - parent = parent.setdefault(key, {}) - key = parts.pop(0) - parent[key] = value - - # Override any options with explicit keyword arguments - config.update(options) - self._configure(config) - - def start(self, paused=False): - """ - Start the configured executors and job stores and begin processing scheduled jobs. - - :param bool paused: if ``True``, don't start job processing until :meth:`resume` is called - :raises SchedulerAlreadyRunningError: if the scheduler is already running - :raises RuntimeError: if running under uWSGI with threads disabled - - """ - if self.state != STATE_STOPPED: - raise SchedulerAlreadyRunningError - - self._check_uwsgi() - - with self._executors_lock: - # Create a default executor if nothing else is configured - if "default" not in self._executors: - self.add_executor(self._create_default_executor(), "default") - - # Start all the executors - for alias, executor in self._executors.items(): - executor.start(self, alias) - - with self._jobstores_lock: - # Create a default job store if nothing else is configured - if "default" not in self._jobstores: - self.add_jobstore(self._create_default_jobstore(), "default") - - # Start all the job stores - for alias, store in self._jobstores.items(): - store.start(self, alias) - - # Schedule all pending jobs - for job, jobstore_alias, replace_existing in self._pending_jobs: - self._real_add_job(job, jobstore_alias, replace_existing) - del self._pending_jobs[:] - - self.state = STATE_PAUSED if paused else STATE_RUNNING - self._logger.info("Scheduler started") - self._dispatch_event(SchedulerEvent(EVENT_SCHEDULER_STARTED)) - - if not paused: - self.wakeup() - - @abstractmethod - def shutdown(self, wait=True): - """ - Shuts down the scheduler, along with its executors and job stores. - - Does not interrupt any currently running jobs. - - :param bool wait: ``True`` to wait until all currently executing jobs have finished - :raises SchedulerNotRunningError: if the scheduler has not been started yet - - """ - if self.state == STATE_STOPPED: - raise SchedulerNotRunningError - - self.state = STATE_STOPPED - - # Shut down all executors - with self._executors_lock, self._jobstores_lock: - for executor in self._executors.values(): - executor.shutdown(wait) - - # Shut down all job stores - for jobstore in self._jobstores.values(): - jobstore.shutdown() - - self._logger.info("Scheduler has been shut down") - self._dispatch_event(SchedulerEvent(EVENT_SCHEDULER_SHUTDOWN)) - - def pause(self): - """ - Pause job processing in the scheduler. - - This will prevent the scheduler from waking up to do job processing until :meth:`resume` - is called. It will not however stop any already running job processing. - - """ - if self.state == STATE_STOPPED: - raise SchedulerNotRunningError - elif self.state == STATE_RUNNING: - self.state = STATE_PAUSED - self._logger.info("Paused scheduler job processing") - self._dispatch_event(SchedulerEvent(EVENT_SCHEDULER_PAUSED)) - - def resume(self): - """Resume job processing in the scheduler.""" - if self.state == STATE_STOPPED: - raise SchedulerNotRunningError - elif self.state == STATE_PAUSED: - self.state = STATE_RUNNING - self._logger.info("Resumed scheduler job processing") - self._dispatch_event(SchedulerEvent(EVENT_SCHEDULER_RESUMED)) - self.wakeup() - - @property - def running(self): - """ - Return ``True`` if the scheduler has been started. - - This is a shortcut for ``scheduler.state != STATE_STOPPED``. - - """ - return self.state != STATE_STOPPED - - def add_executor(self, executor, alias="default", **executor_opts): - """ - Adds an executor to this scheduler. - - Any extra keyword arguments will be passed to the executor plugin's constructor, assuming - that the first argument is the name of an executor plugin. - - :param str|unicode|apscheduler.executors.base.BaseExecutor executor: either an executor - instance or the name of an executor plugin - :param str|unicode alias: alias for the scheduler - :raises ValueError: if there is already an executor by the given alias - - """ - with self._executors_lock: - if alias in self._executors: - raise ValueError( - f'This scheduler already has an executor by the alias of "{alias}"' - ) - - if isinstance(executor, BaseExecutor): - self._executors[alias] = executor - elif isinstance(executor, str): - self._executors[alias] = executor = self._create_plugin_instance( - "executor", executor, executor_opts - ) - else: - raise TypeError( - f"Expected an executor instance or a string, got {executor.__class__.__name__} instead" - ) - - # Start the executor right away if the scheduler is running - if self.state != STATE_STOPPED: - executor.start(self, alias) - - self._dispatch_event(SchedulerEvent(EVENT_EXECUTOR_ADDED, alias)) - - def remove_executor(self, alias, shutdown=True): - """ - Removes the executor by the given alias from this scheduler. - - :param str|unicode alias: alias of the executor - :param bool shutdown: ``True`` to shut down the executor after - removing it - - """ - with self._executors_lock: - executor = self._lookup_executor(alias) - del self._executors[alias] - - if shutdown: - executor.shutdown() - - self._dispatch_event(SchedulerEvent(EVENT_EXECUTOR_REMOVED, alias)) - - def add_jobstore(self, jobstore, alias="default", **jobstore_opts): - """ - Adds a job store to this scheduler. - - Any extra keyword arguments will be passed to the job store plugin's constructor, assuming - that the first argument is the name of a job store plugin. - - :param str|unicode|apscheduler.jobstores.base.BaseJobStore jobstore: job store to be added - :param str|unicode alias: alias for the job store - :raises ValueError: if there is already a job store by the given alias - - """ - with self._jobstores_lock: - if alias in self._jobstores: - raise ValueError( - f'This scheduler already has a job store by the alias of "{alias}"' - ) - - if isinstance(jobstore, BaseJobStore): - self._jobstores[alias] = jobstore - elif isinstance(jobstore, str): - self._jobstores[alias] = jobstore = self._create_plugin_instance( - "jobstore", jobstore, jobstore_opts - ) - else: - raise TypeError( - f"Expected a job store instance or a string, got {jobstore.__class__.__name__} instead" - ) - - # Start the job store right away if the scheduler isn't stopped - if self.state != STATE_STOPPED: - jobstore.start(self, alias) - - # Notify listeners that a new job store has been added - self._dispatch_event(SchedulerEvent(EVENT_JOBSTORE_ADDED, alias)) - - # Notify the scheduler so it can scan the new job store for jobs - if self.state != STATE_STOPPED: - self.wakeup() - - def remove_jobstore(self, alias, shutdown=True): - """ - Removes the job store by the given alias from this scheduler. - - :param str|unicode alias: alias of the job store - :param bool shutdown: ``True`` to shut down the job store after removing it - - """ - with self._jobstores_lock: - jobstore = self._lookup_jobstore(alias) - del self._jobstores[alias] - - if shutdown: - jobstore.shutdown() - - self._dispatch_event(SchedulerEvent(EVENT_JOBSTORE_REMOVED, alias)) - - def add_listener(self, callback, mask=EVENT_ALL): - """ - add_listener(callback, mask=EVENT_ALL) - - Adds a listener for scheduler events. - - When a matching event occurs, ``callback`` is executed with the event object as its - sole argument. If the ``mask`` parameter is not provided, the callback will receive events - of all types. - - :param callback: any callable that takes one argument - :param int mask: bitmask that indicates which events should be - listened to - - .. seealso:: :mod:`apscheduler.events` - .. seealso:: :ref:`scheduler-events` - - """ - with self._listeners_lock: - self._listeners.append((callback, mask)) - - def remove_listener(self, callback): - """Removes a previously added event listener.""" - - with self._listeners_lock: - for i, (cb, _) in enumerate(self._listeners): - if callback == cb: - del self._listeners[i] - - def add_job( - self, - func, - trigger=None, - args=None, - kwargs=None, - id=None, - name=None, - misfire_grace_time=undefined, - coalesce=undefined, - max_instances=undefined, - next_run_time=undefined, - jobstore="default", - executor="default", - replace_existing=False, - **trigger_args, - ): - """ - add_job(func, trigger=None, args=None, kwargs=None, id=None, \ - name=None, misfire_grace_time=undefined, coalesce=undefined, \ - max_instances=undefined, next_run_time=undefined, \ - jobstore='default', executor='default', \ - replace_existing=False, **trigger_args) - - Adds the given job to the job list and wakes up the scheduler if it's already running. - - Any option that defaults to ``undefined`` will be replaced with the corresponding default - value when the job is scheduled (which happens when the scheduler is started, or - immediately if the scheduler is already running). - - The ``func`` argument can be given either as a callable object or a textual reference in - the ``package.module:some.object`` format, where the first half (separated by ``:``) is an - importable module and the second half is a reference to the callable object, relative to - the module. - - The ``trigger`` argument can either be: - #. the alias name of the trigger (e.g. ``date``, ``interval`` or ``cron``), in which case - any extra keyword arguments to this method are passed on to the trigger's constructor - #. an instance of a trigger class - - :param func: callable (or a textual reference to one) to run at the given time - :param str|apscheduler.triggers.base.BaseTrigger trigger: trigger that determines when - ``func`` is called - :param list|tuple args: list of positional arguments to call func with - :param dict kwargs: dict of keyword arguments to call func with - :param str|unicode id: explicit identifier for the job (for modifying it later) - :param str|unicode name: textual description of the job - :param int misfire_grace_time: seconds after the designated runtime that the job is still - allowed to be run (or ``None`` to allow the job to run no matter how late it is) - :param bool coalesce: run once instead of many times if the scheduler determines that the - job should be run more than once in succession - :param int max_instances: maximum number of concurrently running instances allowed for this - job - :param datetime next_run_time: when to first run the job, regardless of the trigger (pass - ``None`` to add the job as paused) - :param str|unicode jobstore: alias of the job store to store the job in - :param str|unicode executor: alias of the executor to run the job with - :param bool replace_existing: ``True`` to replace an existing job with the same ``id`` - (but retain the number of runs from the existing one) - :rtype: Job - - """ - job_kwargs = { - "trigger": self._create_trigger(trigger, trigger_args), - "executor": executor, - "func": func, - "args": tuple(args) if args is not None else (), - "kwargs": dict(kwargs) if kwargs is not None else {}, - "id": id, - "name": name, - "misfire_grace_time": misfire_grace_time, - "coalesce": coalesce, - "max_instances": max_instances, - "next_run_time": next_run_time, - } - job_kwargs = dict( - (key, value) for key, value in job_kwargs.items() if value is not undefined - ) - job = Job(self, **job_kwargs) - - # Don't really add jobs to job stores before the scheduler is up and running - with self._jobstores_lock: - if self.state == STATE_STOPPED: - self._pending_jobs.append((job, jobstore, replace_existing)) - self._logger.info( - "Adding job tentatively -- it will be properly scheduled when " - "the scheduler starts" - ) - else: - self._real_add_job(job, jobstore, replace_existing) - - return job - - def scheduled_job( - self, - trigger, - args=None, - kwargs=None, - id=None, - name=None, - misfire_grace_time=undefined, - coalesce=undefined, - max_instances=undefined, - next_run_time=undefined, - jobstore="default", - executor="default", - **trigger_args, - ): - """ - scheduled_job(trigger, args=None, kwargs=None, id=None, \ - name=None, misfire_grace_time=undefined, \ - coalesce=undefined, max_instances=undefined, \ - next_run_time=undefined, jobstore='default', \ - executor='default',**trigger_args) - - A decorator version of :meth:`add_job`, except that ``replace_existing`` is always - ``True``. - - .. important:: The ``id`` argument must be given if scheduling a job in a persistent job - store. The scheduler cannot, however, enforce this requirement. - - """ - - def inner(func): - self.add_job( - func, - trigger, - args, - kwargs, - id, - name, - misfire_grace_time, - coalesce, - max_instances, - next_run_time, - jobstore, - executor, - True, - **trigger_args, - ) - return func - - return inner - - def modify_job(self, job_id, jobstore=None, **changes): - """ - Modifies the properties of a single job. - - Modifications are passed to this method as extra keyword arguments. - - :param str|unicode job_id: the identifier of the job - :param str|unicode jobstore: alias of the job store that contains the job - :return Job: the relevant job instance - - """ - with self._jobstores_lock: - job, jobstore = self._lookup_job(job_id, jobstore) - job._modify(**changes) - if jobstore: - self._lookup_jobstore(jobstore).update_job(job) - - self._dispatch_event(JobEvent(EVENT_JOB_MODIFIED, job_id, jobstore)) - - # Wake up the scheduler since the job's next run time may have been changed - if self.state == STATE_RUNNING: - self.wakeup() - - return job - - def reschedule_job(self, job_id, jobstore=None, trigger=None, **trigger_args): - """ - Constructs a new trigger for a job and updates its next run time. - - Extra keyword arguments are passed directly to the trigger's constructor. - - :param str|unicode job_id: the identifier of the job - :param str|unicode jobstore: alias of the job store that contains the job - :param trigger: alias of the trigger type or a trigger instance - :return Job: the relevant job instance - - """ - trigger = self._create_trigger(trigger, trigger_args) - now = datetime.now(self.timezone) - next_run_time = trigger.get_next_fire_time(None, now) - return self.modify_job( - job_id, jobstore, trigger=trigger, next_run_time=next_run_time - ) - - def pause_job(self, job_id, jobstore=None): - """ - Causes the given job not to be executed until it is explicitly resumed. - - :param str|unicode job_id: the identifier of the job - :param str|unicode jobstore: alias of the job store that contains the job - :return Job: the relevant job instance - - """ - return self.modify_job(job_id, jobstore, next_run_time=None) - - def resume_job(self, job_id, jobstore=None): - """ - Resumes the schedule of the given job, or removes the job if its schedule is finished. - - :param str|unicode job_id: the identifier of the job - :param str|unicode jobstore: alias of the job store that contains the job - :return Job|None: the relevant job instance if the job was rescheduled, or ``None`` if no - next run time could be calculated and the job was removed - - """ - with self._jobstores_lock: - job, jobstore = self._lookup_job(job_id, jobstore) - now = datetime.now(self.timezone) - next_run_time = job.trigger.get_next_fire_time(None, now) - if next_run_time: - return self.modify_job(job_id, jobstore, next_run_time=next_run_time) - else: - self.remove_job(job.id, jobstore) - - def get_jobs(self, jobstore=None, pending=None): - """ - Returns a list of pending jobs (if the scheduler hasn't been started yet) and scheduled - jobs, either from a specific job store or from all of them. - - If the scheduler has not been started yet, only pending jobs can be returned because the - job stores haven't been started yet either. - - :param str|unicode jobstore: alias of the job store - :param bool pending: **DEPRECATED** - :rtype: list[Job] - - """ - if pending is not None: - warnings.warn( - 'The "pending" option is deprecated -- get_jobs() always returns ' - "scheduled jobs if the scheduler has been started and pending jobs " - "otherwise", - DeprecationWarning, - ) - - with self._jobstores_lock: - jobs = [] - if self.state == STATE_STOPPED: - for job, alias, replace_existing in self._pending_jobs: - if jobstore is None or alias == jobstore: - jobs.append(job) - else: - for alias, store in self._jobstores.items(): - if jobstore is None or alias == jobstore: - jobs.extend(store.get_all_jobs()) - - return jobs - - def get_job(self, job_id, jobstore=None): - """ - Returns the Job that matches the given ``job_id``. - - :param str|unicode job_id: the identifier of the job - :param str|unicode jobstore: alias of the job store that most likely contains the job - :return: the Job by the given ID, or ``None`` if it wasn't found - :rtype: Job - - """ - with self._jobstores_lock: - try: - return self._lookup_job(job_id, jobstore)[0] - except JobLookupError: - return - - def remove_job(self, job_id, jobstore=None): - """ - Removes a job, preventing it from being run any more. - - :param str|unicode job_id: the identifier of the job - :param str|unicode jobstore: alias of the job store that contains the job - :raises JobLookupError: if the job was not found - - """ - jobstore_alias = None - with self._jobstores_lock: - # Check if the job is among the pending jobs - if self.state == STATE_STOPPED: - for i, (job, alias, replace_existing) in enumerate(self._pending_jobs): - if job.id == job_id and jobstore in (None, alias): - del self._pending_jobs[i] - jobstore_alias = alias - break - else: - # Otherwise, try to remove it from each store until it succeeds or we run out of - # stores to check - for alias, store in self._jobstores.items(): - if jobstore in (None, alias): - try: - store.remove_job(job_id) - jobstore_alias = alias - break - except JobLookupError: - continue - - if jobstore_alias is None: - raise JobLookupError(job_id) - - # Notify listeners that a job has been removed - event = JobEvent(EVENT_JOB_REMOVED, job_id, jobstore_alias) - self._dispatch_event(event) - - self._logger.info("Removed job %s", job_id) - - def remove_all_jobs(self, jobstore=None): - """ - Removes all jobs from the specified job store, or all job stores if none is given. - - :param str|unicode jobstore: alias of the job store - - """ - with self._jobstores_lock: - if self.state == STATE_STOPPED: - if jobstore: - self._pending_jobs = [ - pending - for pending in self._pending_jobs - if pending[1] != jobstore - ] - else: - self._pending_jobs = [] - else: - for alias, store in self._jobstores.items(): - if jobstore in (None, alias): - store.remove_all_jobs() - - self._dispatch_event(SchedulerEvent(EVENT_ALL_JOBS_REMOVED, jobstore)) - - def print_jobs(self, jobstore=None, out=None): - """ - print_jobs(jobstore=None, out=sys.stdout) - - Prints out a textual listing of all jobs currently scheduled on either all job stores or - just a specific one. - - :param str|unicode jobstore: alias of the job store, ``None`` to list jobs from all stores - :param file out: a file-like object to print to (defaults to **sys.stdout** if nothing is - given) - - """ - out = out or sys.stdout - with self._jobstores_lock: - if self.state == STATE_STOPPED: - print("Pending jobs:", file=out) - if self._pending_jobs: - for job, jobstore_alias, replace_existing in self._pending_jobs: - if jobstore in (None, jobstore_alias): - print(f" {job}", file=out) - else: - print(" No pending jobs", file=out) - else: - for alias, store in sorted(self._jobstores.items()): - if jobstore in (None, alias): - print(f"Jobstore {alias}:", file=out) - jobs = store.get_all_jobs() - if jobs: - for job in jobs: - print(f" {job}", file=out) - else: - print(" No scheduled jobs", file=out) - - def export_jobs(self, outfile, jobstore=None): - """ - Export stored jobs as JSON. - - :param outfile: either a file object opened in text write mode ("w"), or a path - to the target file - :param jobstore: alias of the job store to export jobs from (if omitted, export - from all configured job stores) - - """ - import json - import pickle - from base64 import b64encode - - from apscheduler import version - - if self.state == STATE_STOPPED: - raise RuntimeError( - "the scheduler must have been started for job export to work" - ) - - def encode_with_pickle(obj): - return b64encode(pickle.dumps(obj, pickle.HIGHEST_PROTOCOL)).decode("ascii") - - def json_default(obj): - if hasattr(obj, "__getstate__") and hasattr(obj, "__setstate__"): - state = obj.__getstate__() - if isinstance(state, Mapping): - return { - "__apscheduler_class__": obj_to_ref(obj.__class__), - "__apscheduler_state__": state, - } - - return {"__apscheduler_pickle__": encode_with_pickle(obj)} - - with self._jobstores_lock: - all_jobs = [ - job - for alias, store in self._jobstores.items() - for job in store.get_all_jobs() - if jobstore in (None, alias) - ] - - with ExitStack() as stack: - if not hasattr(outfile, "write"): - outfile = stack.enter_context(open(outfile, "w")) - - json.dump( - { - "version": 1, - "scheduler_version": version, - "jobs": [job.__getstate__() for job in all_jobs], - }, - outfile, - default=json_default, - ) - - def import_jobs(self, infile, jobstore="default"): - """ - Import jobs previously exported via :meth:`export_jobs. - - :param infile: either a file object opened in text read mode ("r") or a path to - a JSON file containing previously exported jobs - :param jobstore: the alias of the job store to import the jobs to - - """ - import json - import pickle - from base64 import b64decode - - def json_object_hook(dct): - if pickle_data := dct.get("__apscheduler_pickle__"): - return pickle.loads(b64decode(pickle_data)) - - if obj_class := dct.get("__apscheduler_class__"): - if obj_state := dct.get("__apscheduler_state__"): - obj_class = ref_to_obj(obj_class) - obj = object.__new__(obj_class) - obj.__setstate__(obj_state) - return obj - - return dct - - jobstore = self._jobstores[jobstore] - with ExitStack() as stack: - if not hasattr(infile, "read"): - infile = stack.enter_context(open(infile)) - - data = json.load(infile, object_hook=json_object_hook) - if not isinstance(data, dict): - raise ValueError() - - if (version := data.get("version", None)) != 1: - raise ValueError(f"unrecognized version: {version}") - - for job_state in data["jobs"]: - job = object.__new__(Job) - job.__setstate__(job_state) - jobstore.add_job(job) - - @abstractmethod - def wakeup(self): - """ - Notifies the scheduler that there may be jobs due for execution. - Triggers :meth:`_process_jobs` to be run in an implementation specific manner. - """ - - # - # Private API - # - - def _configure(self, config): - # Set general options - self._logger = maybe_ref(config.pop("logger", None)) or getLogger( - "apscheduler.scheduler" - ) - self.timezone = astimezone(config.pop("timezone", None)) or get_localzone() - self.jobstore_retry_interval = float(config.pop("jobstore_retry_interval", 10)) - - # Set the job defaults - job_defaults = config.get("job_defaults", {}) - self._job_defaults = { - "misfire_grace_time": asint(job_defaults.get("misfire_grace_time", 1)), - "coalesce": asbool(job_defaults.get("coalesce", True)), - "max_instances": asint(job_defaults.get("max_instances", 1)), - } - - # Configure executors - self._executors.clear() - for alias, value in config.get("executors", {}).items(): - if isinstance(value, BaseExecutor): - self.add_executor(value, alias) - elif isinstance(value, MutableMapping): - executor_class = value.pop("class", None) - plugin = value.pop("type", None) - if plugin: - executor = self._create_plugin_instance("executor", plugin, value) - elif executor_class: - cls = maybe_ref(executor_class) - executor = cls(**value) - else: - raise ValueError( - f'Cannot create executor "{alias}" -- either "type" or "class" must be defined' - ) - - self.add_executor(executor, alias) - else: - raise TypeError( - f"Expected executor instance or dict for executors['{alias}'], got {value.__class__.__name__} instead" - ) - - # Configure job stores - self._jobstores.clear() - for alias, value in config.get("jobstores", {}).items(): - if isinstance(value, BaseJobStore): - self.add_jobstore(value, alias) - elif isinstance(value, MutableMapping): - jobstore_class = value.pop("class", None) - plugin = value.pop("type", None) - if plugin: - jobstore = self._create_plugin_instance("jobstore", plugin, value) - elif jobstore_class: - cls = maybe_ref(jobstore_class) - jobstore = cls(**value) - else: - raise ValueError( - f'Cannot create job store "{alias}" -- either "type" or "class" must be ' - "defined" - ) - - self.add_jobstore(jobstore, alias) - else: - raise TypeError( - f"Expected job store instance or dict for jobstores['{alias}'], got {value.__class__.__name__} instead" - ) - - def _create_default_executor(self): - """Creates a default executor store, specific to the particular scheduler type.""" - return ThreadPoolExecutor() - - def _create_default_jobstore(self): - """Creates a default job store, specific to the particular scheduler type.""" - return MemoryJobStore() - - def _lookup_executor(self, alias): - """ - Returns the executor instance by the given name from the list of executors that were added - to this scheduler. - - :type alias: str - :raises KeyError: if no executor by the given alias is not found - - """ - try: - return self._executors[alias] - except KeyError: - raise KeyError(f"No such executor: {alias}") - - def _lookup_jobstore(self, alias): - """ - Returns the job store instance by the given name from the list of job stores that were - added to this scheduler. - - :type alias: str - :raises KeyError: if no job store by the given alias is not found - - """ - try: - return self._jobstores[alias] - except KeyError: - raise KeyError(f"No such job store: {alias}") - - def _lookup_job(self, job_id, jobstore_alias): - """ - Finds a job by its ID. - - :type job_id: str - :param str jobstore_alias: alias of a job store to look in - :return tuple[Job, str]: a tuple of job, jobstore alias (jobstore alias is None in case of - a pending job) - :raises JobLookupError: if no job by the given ID is found. - - """ - if self.state == STATE_STOPPED: - # Check if the job is among the pending jobs - for job, alias, replace_existing in self._pending_jobs: - if job.id == job_id: - return job, None - else: - # Look in all job stores - for alias, store in self._jobstores.items(): - if jobstore_alias in (None, alias): - job = store.lookup_job(job_id) - if job is not None: - return job, alias - - raise JobLookupError(job_id) - - def _dispatch_event(self, event): - """ - Dispatches the given event to interested listeners. - - :param SchedulerEvent event: the event to send - - """ - with self._listeners_lock: - listeners = tuple(self._listeners) - - for cb, mask in listeners: - if event.code & mask: - try: - cb(event) - except BaseException: - self._logger.exception("Error notifying listener") - - def _check_uwsgi(self): - """Check if we're running under uWSGI with threads disabled.""" - uwsgi_module = sys.modules.get("uwsgi") - if not getattr(uwsgi_module, "has_threads", True): - raise RuntimeError( - "The scheduler seems to be running under uWSGI, but threads have " - "been disabled. You must run uWSGI with the --enable-threads " - "option for the scheduler to work." - ) - - def _real_add_job(self, job, jobstore_alias, replace_existing): - """ - :param Job job: the job to add - :param bool replace_existing: ``True`` to use update_job() in case the job already exists - in the store - - """ - # Fill in undefined values with defaults - replacements = {} - for key, value in self._job_defaults.items(): - if not hasattr(job, key): - replacements[key] = value - - # Calculate the next run time if there is none defined - if not hasattr(job, "next_run_time"): - now = datetime.now(self.timezone) - replacements["next_run_time"] = job.trigger.get_next_fire_time(None, now) - - # Apply any replacements - job._modify(**replacements) - - # Add the job to the given job store - store = self._lookup_jobstore(jobstore_alias) - try: - store.add_job(job) - except ConflictingIdError: - if replace_existing: - store.update_job(job) - else: - raise - - # Mark the job as no longer pending - job._jobstore_alias = jobstore_alias - - # Notify listeners that a new job has been added - event = JobEvent(EVENT_JOB_ADDED, job.id, jobstore_alias) - self._dispatch_event(event) - - self._logger.info('Added job "%s" to job store "%s"', job.name, jobstore_alias) - - # Notify the scheduler about the new job - if self.state == STATE_RUNNING: - self.wakeup() - - def _create_plugin_instance(self, type_, alias, constructor_kwargs): - """Creates an instance of the given plugin type, loading the plugin first if necessary.""" - plugin_container, class_container, base_class = { - "trigger": (self._trigger_plugins, self._trigger_classes, BaseTrigger), - "jobstore": (self._jobstore_plugins, self._jobstore_classes, BaseJobStore), - "executor": (self._executor_plugins, self._executor_classes, BaseExecutor), - }[type_] - - try: - plugin_cls = class_container[alias] - except KeyError: - if alias in plugin_container: - plugin_cls = class_container[alias] = plugin_container[alias].load() - if not issubclass(plugin_cls, base_class): - raise TypeError( - f"The {type_} entry point does not point to a {type_} class" - ) - else: - raise LookupError(f'No {type_} by the name "{alias}" was found') - - return plugin_cls(**constructor_kwargs) - - def _create_trigger(self, trigger, trigger_args): - if isinstance(trigger, BaseTrigger): - return trigger - elif trigger is None: - trigger = "date" - elif not isinstance(trigger, str): - raise TypeError( - f"Expected a trigger instance or string, got {trigger.__class__.__name__} instead" - ) - - # Use the scheduler's time zone if nothing else is specified - trigger_args.setdefault("timezone", self.timezone) - - # Instantiate the trigger class - return self._create_plugin_instance("trigger", trigger, trigger_args) - - def _create_lock(self): - """Creates a reentrant lock object.""" - return RLock() - - def _process_jobs(self): - """ - Iterates through jobs in every jobstore, starts jobs that are due and figures out how long - to wait for the next round. - - If the ``get_due_jobs()`` call raises an exception, a new wakeup is scheduled in at least - ``jobstore_retry_interval`` seconds. - - """ - if self.state == STATE_PAUSED: - self._logger.debug("Scheduler is paused -- not processing jobs") - return None - - self._logger.debug("Looking for jobs to run") - now = datetime.now(self.timezone) - next_wakeup_time = None - events = [] - - with self._jobstores_lock: - for jobstore_alias, jobstore in self._jobstores.items(): - try: - due_jobs = jobstore.get_due_jobs(now) - except Exception as e: - # Schedule a wakeup at least in jobstore_retry_interval seconds - self._logger.warning( - "Error getting due jobs from job store %r: %s", - jobstore_alias, - e, - ) - retry_wakeup_time = now + timedelta( - seconds=self.jobstore_retry_interval - ) - if not next_wakeup_time or next_wakeup_time > retry_wakeup_time: - next_wakeup_time = retry_wakeup_time - - continue - - for job in due_jobs: - # Look up the job's executor - try: - executor = self._lookup_executor(job.executor) - except BaseException: - self._logger.error( - 'Executor lookup ("%s") failed for job "%s" -- removing it from the ' - "job store", - job.executor, - job, - ) - self.remove_job(job.id, jobstore_alias) - continue - - run_times = job._get_run_times(now) - run_times = ( - run_times[-1:] if run_times and job.coalesce else run_times - ) - if run_times: - try: - executor.submit_job(job, run_times) - except MaxInstancesReachedError: - self._logger.warning( - 'Execution of job "%s" skipped: maximum number of running ' - "instances reached (%d)", - job, - job.max_instances, - ) - event = JobSubmissionEvent( - EVENT_JOB_MAX_INSTANCES, - job.id, - jobstore_alias, - run_times, - ) - events.append(event) - except BaseException: - self._logger.exception( - 'Error submitting job "%s" to executor "%s"', - job, - job.executor, - ) - else: - event = JobSubmissionEvent( - EVENT_JOB_SUBMITTED, job.id, jobstore_alias, run_times - ) - events.append(event) - - # Update the job if it has a next execution time. - # Otherwise remove it from the job store. - job_next_run = job.trigger.get_next_fire_time( - run_times[-1], now - ) - if job_next_run: - job._modify(next_run_time=job_next_run) - jobstore.update_job(job) - else: - self.remove_job(job.id, jobstore_alias) - - # Set a new next wakeup time if there isn't one yet or - # the jobstore has an even earlier one - jobstore_next_run_time = jobstore.get_next_run_time() - if jobstore_next_run_time and ( - next_wakeup_time is None - or jobstore_next_run_time < next_wakeup_time - ): - next_wakeup_time = jobstore_next_run_time.astimezone(self.timezone) - - # Dispatch collected events - for event in events: - self._dispatch_event(event) - - # Determine the delay until this method should be called again - if self.state == STATE_PAUSED: - wait_seconds = None - self._logger.debug("Scheduler is paused; waiting until resume() is called") - elif next_wakeup_time is None: - wait_seconds = None - self._logger.debug("No jobs; waiting until a job is added") - else: - now = datetime.now(self.timezone) - wait_seconds = min( - max((next_wakeup_time - now).total_seconds(), 0), TIMEOUT_MAX - ) - self._logger.debug( - "Next wakeup is due at %s (in %f seconds)", - next_wakeup_time, - wait_seconds, - ) - - return wait_seconds diff --git a/venv/lib/python3.12/site-packages/apscheduler/schedulers/blocking.py b/venv/lib/python3.12/site-packages/apscheduler/schedulers/blocking.py deleted file mode 100644 index 0330885..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/schedulers/blocking.py +++ /dev/null @@ -1,33 +0,0 @@ -from threading import TIMEOUT_MAX, Event - -from apscheduler.schedulers.base import STATE_STOPPED, BaseScheduler - - -class BlockingScheduler(BaseScheduler): - """ - A scheduler that runs in the foreground - (:meth:`~apscheduler.schedulers.base.BaseScheduler.start` will block). - """ - - _event = None - - def start(self, *args, **kwargs): - if self._event is None or self._event.is_set(): - self._event = Event() - - super().start(*args, **kwargs) - self._main_loop() - - def shutdown(self, wait=True): - super().shutdown(wait) - self._event.set() - - def _main_loop(self): - wait_seconds = TIMEOUT_MAX - while self.state != STATE_STOPPED: - self._event.wait(wait_seconds) - self._event.clear() - wait_seconds = self._process_jobs() - - def wakeup(self): - self._event.set() diff --git a/venv/lib/python3.12/site-packages/apscheduler/schedulers/gevent.py b/venv/lib/python3.12/site-packages/apscheduler/schedulers/gevent.py deleted file mode 100644 index e32ad64..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/schedulers/gevent.py +++ /dev/null @@ -1,34 +0,0 @@ -from apscheduler.schedulers.base import BaseScheduler -from apscheduler.schedulers.blocking import BlockingScheduler - -try: - import gevent - from gevent.event import Event - from gevent.lock import RLock -except ImportError as exc: # pragma: nocover - raise ImportError("GeventScheduler requires gevent installed") from exc - - -class GeventScheduler(BlockingScheduler): - """A scheduler that runs as a Gevent greenlet.""" - - _greenlet = None - - def start(self, *args, **kwargs): - self._event = Event() - BaseScheduler.start(self, *args, **kwargs) - self._greenlet = gevent.spawn(self._main_loop) - return self._greenlet - - def shutdown(self, *args, **kwargs): - super().shutdown(*args, **kwargs) - self._greenlet.join() - del self._greenlet - - def _create_lock(self): - return RLock() - - def _create_default_executor(self): - from apscheduler.executors.gevent import GeventExecutor - - return GeventExecutor() diff --git a/venv/lib/python3.12/site-packages/apscheduler/schedulers/qt.py b/venv/lib/python3.12/site-packages/apscheduler/schedulers/qt.py deleted file mode 100644 index 457b539..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/schedulers/qt.py +++ /dev/null @@ -1,44 +0,0 @@ -from importlib import import_module -from itertools import product - -from apscheduler.schedulers.base import BaseScheduler - -for version, pkgname in product(range(6, 1, -1), ("PySide", "PyQt")): - try: - qtcore = import_module(pkgname + str(version) + ".QtCore") - except ImportError: - pass - else: - QTimer = qtcore.QTimer - break -else: - raise ImportError("QtScheduler requires either PySide/PyQt (v6 to v2) installed") - - -class QtScheduler(BaseScheduler): - """A scheduler that runs in a Qt event loop.""" - - _timer = None - - def shutdown(self, *args, **kwargs): - super().shutdown(*args, **kwargs) - self._stop_timer() - - def _start_timer(self, wait_seconds): - self._stop_timer() - if wait_seconds is not None: - wait_time = min(int(wait_seconds * 1000), 2147483647) - self._timer = QTimer.singleShot(wait_time, self._process_jobs) - - def _stop_timer(self): - if self._timer: - if self._timer.isActive(): - self._timer.stop() - del self._timer - - def wakeup(self): - self._start_timer(0) - - def _process_jobs(self): - wait_seconds = super()._process_jobs() - self._start_timer(wait_seconds) diff --git a/venv/lib/python3.12/site-packages/apscheduler/schedulers/tornado.py b/venv/lib/python3.12/site-packages/apscheduler/schedulers/tornado.py deleted file mode 100644 index 96741b7..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/schedulers/tornado.py +++ /dev/null @@ -1,65 +0,0 @@ -from datetime import timedelta -from functools import wraps - -from apscheduler.schedulers.base import BaseScheduler -from apscheduler.util import maybe_ref - -try: - from tornado.ioloop import IOLoop -except ImportError as exc: # pragma: nocover - raise ImportError("TornadoScheduler requires tornado installed") from exc - - -def run_in_ioloop(func): - @wraps(func) - def wrapper(self, *args, **kwargs): - self._ioloop.add_callback(func, self, *args, **kwargs) - - return wrapper - - -class TornadoScheduler(BaseScheduler): - """ - A scheduler that runs on a Tornado IOLoop. - - The default executor can run jobs based on native coroutines (``async def``). - - =========== =============================================================== - ``io_loop`` Tornado IOLoop instance to use (defaults to the global IO loop) - =========== =============================================================== - """ - - _ioloop = None - _timeout = None - - @run_in_ioloop - def shutdown(self, wait=True): - super().shutdown(wait) - self._stop_timer() - - def _configure(self, config): - self._ioloop = maybe_ref(config.pop("io_loop", None)) or IOLoop.current() - super()._configure(config) - - def _start_timer(self, wait_seconds): - self._stop_timer() - if wait_seconds is not None: - self._timeout = self._ioloop.add_timeout( - timedelta(seconds=wait_seconds), self.wakeup - ) - - def _stop_timer(self): - if self._timeout: - self._ioloop.remove_timeout(self._timeout) - del self._timeout - - def _create_default_executor(self): - from apscheduler.executors.tornado import TornadoExecutor - - return TornadoExecutor() - - @run_in_ioloop - def wakeup(self): - self._stop_timer() - wait_seconds = self._process_jobs() - self._start_timer(wait_seconds) diff --git a/venv/lib/python3.12/site-packages/apscheduler/schedulers/twisted.py b/venv/lib/python3.12/site-packages/apscheduler/schedulers/twisted.py deleted file mode 100644 index 7a3622c..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/schedulers/twisted.py +++ /dev/null @@ -1,62 +0,0 @@ -from functools import wraps - -from apscheduler.schedulers.base import BaseScheduler -from apscheduler.util import maybe_ref - -try: - from twisted.internet import reactor as default_reactor -except ImportError as exc: # pragma: nocover - raise ImportError("TwistedScheduler requires Twisted installed") from exc - - -def run_in_reactor(func): - @wraps(func) - def wrapper(self, *args, **kwargs): - self._reactor.callFromThread(func, self, *args, **kwargs) - - return wrapper - - -class TwistedScheduler(BaseScheduler): - """ - A scheduler that runs on a Twisted reactor. - - Extra options: - - =========== ======================================================== - ``reactor`` Reactor instance to use (defaults to the global reactor) - =========== ======================================================== - """ - - _reactor = None - _delayedcall = None - - def _configure(self, config): - self._reactor = maybe_ref(config.pop("reactor", default_reactor)) - super()._configure(config) - - @run_in_reactor - def shutdown(self, wait=True): - super().shutdown(wait) - self._stop_timer() - - def _start_timer(self, wait_seconds): - self._stop_timer() - if wait_seconds is not None: - self._delayedcall = self._reactor.callLater(wait_seconds, self.wakeup) - - def _stop_timer(self): - if self._delayedcall and self._delayedcall.active(): - self._delayedcall.cancel() - del self._delayedcall - - @run_in_reactor - def wakeup(self): - self._stop_timer() - wait_seconds = self._process_jobs() - self._start_timer(wait_seconds) - - def _create_default_executor(self): - from apscheduler.executors.twisted import TwistedExecutor - - return TwistedExecutor() diff --git a/venv/lib/python3.12/site-packages/apscheduler/triggers/__init__.py b/venv/lib/python3.12/site-packages/apscheduler/triggers/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/venv/lib/python3.12/site-packages/apscheduler/triggers/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/triggers/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 42cf70839bef4f94c6e7225eb1734b941076346f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190 zcmX@j%ge<81g+b{GC=fW5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!iq+4^&rQ|O%1_MC z&Cg4%%G7tx&nqs?DFF(WrRJ6C=VT`77gUyHn9cz zCugLll;)%s>6a8`rl+SC73;^xXXa&=#K-FuRQ}?y$;}5z+ZC|_ZDR!DVi4maGb1Bo I5i^hl0G&89KmY&$ diff --git a/venv/lib/python3.12/site-packages/apscheduler/triggers/__pycache__/base.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/triggers/__pycache__/base.cpython-312.pyc deleted file mode 100644 index 70e50d572342ac54a1609cc510c1a5f816edff07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1918 zcma)7&2QX96d&9Bm5)te3z0yyOgKP|S}zoFSs_GQiK-%r1g(%T2Yc2tyX)YOWoEqT zuJ+JM;cp0k0GBGgAR+bIJC`6hfDs}RCvK@0ap;LRw%5t3e9htcy_tF6zc>E2*<41j zzIgcY;O#0xzbRq9K+e|eJ@_0Til`PKTYdFF3w2u$4cpL^Yy_3CYF9O+qZ^1;_7SZz z{Xy-}$PL)Fv1ZnPSHg~|r}eAXu5U9*(lyc*k`qscOb%jdYUz^nLq=I3iI=P9R4;_t z>%bf!hHQ-@Tc?_BP~EPuDmC`eVR6Z>sR-=)xN6qYm1{(>+uZN>8J~Q3weW|#u#3Hb z2!Z8*NK9GJkC+k|_9Mx7k9aIUVk5@KSmq{hm`%GSR~%y^xPv6?n2BY@R9(O z=q1c^W2JG|-H9XSy4G^J)fo~_!qSRWx*Kvf^5aA}%BiCw=w!*y_i-K+lw+Rx9uZlD z^uLWq@m>de3FlCv(s!x0!y8Z?(?~0V1--O2cX=90YJdfy3JGO<@=1FThpfFDlQ@L@ zCVu;R9El_V)U-z|8npwz+a8VqLD5^*n^)Sxm+bP8c%P9z6KygS-hk00V7y(VBHF6` z)^MD*`b;{i52wB-7tSEYdis0?q7n*^_s|R|@>Hwms}4-o|J%SEps99GpXx%NYPW!w z0EB$W5;MDJwTn}#P4&Y9@elOFLTdu2x1eg|@dBPmMB~t(FzmXEdAKg_jxnLskNTKk zo?XNv5+n>?R50K5CE(orA7Gg(Sm8zUolMRln?YsIhXy3FFpJ4>82F4@faS9BY6j*Q zEzw)UBoPf3@_@s}HTOtw+y3djI zX~S_M5;Dh0mmMdJ)kFfn>NuY#Bq&bmjzeP)wwD}71hEv3!&S6=O_2>n)Z3BS%%bON z;xbYLM!W)KAN^GM^!S<9-J8eNbC30Ub#-Q-+H)rv*IKJ?Yq`48RDT@!_mJ#QVAgpH z_ELj%J+3A+bDcKkZ)R5U+~HynPa5y!`Mk?t1~oOX;w2y_hNfvhqvo&ZwO`PMKWgW- OZSBh&eBrq1_n*|Ui`Q)Mk8@~T=Oj+zlU$0A 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 CU-S-E^ep5lnpRi*UyV=+rhQ=HbiO57qlo@0g zY}+EXC_BhTxj~L0HgcAT>=hz%5_5+&<_+5QQ9Fz}Bztbup^rLY)KxI*Ot}4?PjRB3 z$(DUdP^CU9kB&;zZ_9d=;c!q>f>avGdZ5BK4229cMr|`Yo2}58BN7>8L^5a-nL$=` zf@jPiCvsQFpj`xi1|6aUYG=accV%nPSeFtVmSb{k)U>*2%epkf0X6Fg%bF(9o{;%s zx+ye>{Y@UKIg(;hBnT~|q-@Y*tX_gFGCkAG}=YCi;8IbA=?Yj8C_-)7Qg3HR1KTpoRFw0E3y1O`0Yj;{mHt6 z!B9j{)nG8|4F*RgP1OWV3I_EZ^V?`S3OTKH#z^3Kx&!`bEmX;;wprl3A}@%kUxjL# zJgDEf?jZdBTj`tWzuDP_9S>?6AF`yXY5weL)8S0h;g!n3UFYhN?#z+yl_SsJ_nqBf zL2BJa>Ko@S-MI8wxzp!aCr-EL(FO+(R6Mn_ZD+iWkaZ?tAiq~H!V+M(h6{HRC7_6m zXuD(15^a~d;f4J9-4fXpBQgyj_XeDESo0El7k221wp1W(f75R5>bDut;y^8ML~fgRf)<%L{3T~FAAE#k0_Kk1CCE} zyfVTkTif{IagA4Ek%aX~<;UZ^rtnAkkPzdCC4NkZi4jTEgH8`lzbDH=3}rn7LS$Te zj#7ov8nB9IJ0?V}05t*`7c=XG2hyYw#%eB%vkoC1mtrEsydKGRJ-oAyP(;NP%i@0> zOxHsRa+4L@P56e}1$SP(KJ{IYg$z>WyMFxY@!78}Fe_zy7hb+!*78YJ(^}QByH77Q zWIDQ*k9FVcUaPL3J9XpKYISR-x^=ng(DI@Fb(X1oh1q1;>K*HZE#I;3A@xo3FWgWd zAC;}`+@+_b-Fp{0GrI#DgmbrEy)g6q>~o-deqg0)|4i3fT>~DDg?%e^Ei-4=yw$5- zKI7#VYCrNGSo8X>U$}a~9I5}<>;KFRDkvtsE%^;&c}spPb!H%T3eOo#!BXmMfMki& z0iz{y7p)cnLP|Y(gS=_8u(TI2H{bSiJxR}rsr13A^i0bv*w zG(BSIF7Pp*{1zEK5L8SFMk2$IqEehb0WOTk%`ioM5h~d1ipJH7y_t%=xWGMEdse;s zGTwdWYOnbZzt{NF#u<5@yH$3xY&N~@ZQgWpn7TN(2QuKZC-Yr>D<~#Oze{&D>j?&< z3c{Na%dd_L5hLO;SE~_4gIrB959k?~Vx&@ZZIKwd^yG|aLb1ZLp*BKwg{=8nrq6A1 zHv8@km&@+is42I%ZhpaT_Zag~It0I5v9hKK`&)R14LAmHAmA7ra*TxC@5p-2#6*)* z2$K*@9z0HGB9lTw<*B5N)0oO@V-hb3G$Ko?#>b?~8b2aaiPz*PRAYk13z3K}G%5oV z;4R$I^Mo);B?>{@#LvO1k$EJ}}3eu?bKDQ4x_ZNdO^KLZ-;e`K7{5wKj|*l#HSa zu&rPomO_FRR&a|&9`I>vv_X;pE~)a;Wg(vh`eH_aZq1a2cTe>I7dF#aCof77A)&`>SQ!TYq|mqqEDo&? z4H>y^Xb9jJ;$BpF2%xBU0BV z6%}CrIpPGgw2mWbF3pNS7bXa05=6s{qnA8^(9naTu}cRbL-F7V-VcgOiZjR;JS{<1 zz`p5MFDa!tZM*iWNrhRU!nPiYsO5L)AdsyBS^-SqvKGY64PxfWvQaq(m2f#*9t6G+ zNd%1*Hb}5Z9jf9~nvj)owQyognbi41)|1nw7ITTiU_H4zpBw|9_n;d@)bBtA(6Xbd zkR@X$!!9JqzM9!&rsAo!`o>QxYi0*u z-}83YZO>aT-LLF`q1AeSrrv+M_3q1yhnH%8)%eTCd!d#3^UJ>Tf39noZ+%^vW!Gy- zMfIZ%8)!3Fb;Fqst~5gs!A-mYm0}2@EnFgG5Gi0QIha^fx`}nixnrV@_1{YnNb*9pSSxm z%Cd$=f0abIU!o?m2&Z8;^o;gzaEL8gdOOVjX9S{%I+SK4W5PrM$p8$JX%2E)p?M?&=H7HC@l*TzSM zJdUc86gBvmzFZL1fX;~GsvHX;KB&1FFdHOf3#5v8Xj%9NZkOV;tlC~!A*YHw_ka$ zDRZ#*5j}z0PhzzneE62bFux~9|42F> pI+_{J{Id@U{5|{%)65Jo%azU89bllpo9Snkef$4Pu%W;EKL7!$7%Q6rR~1dt)bQ8kf@06sA8SbxLEJl%Gbl2$~8?i-7`_Fsim2?EDj+O)#lR(i=s9HTr;(kY+JYL{EVNaVS>tcLh%c^0@3dBhv3^PUFo1%=H+&5zrVMolFjFwq3x-X(i^J8@w zn0Z7|0o$mc*tnqDNY*n_Z)H- zt-7+%?m86LwC)o~qa7DK6y%r%WF;%%|rNeS%u>-M{D)ygV) zmWCtQ1cN3(OcNw2h}dPqeyDo>+kihUpzfI54vjcxfj9v5zwt(H!Y|R>q;L5pNKDPi z9rV4R;&Rvo6inq@XEax?@(JG?8rU%kc>CK~9u( zpj-_N({wzCn`Ui83-$)$-3)jT>;p1`u4T5Iomk5BUCj)Cy?^29Sz|e!X`~;z)|gXm21Xgadmy&*nF4{R`M-s7 zRtb|ZUINGWA{=ahO$brM7Kj5R3ZUII!Nq_>rJy{UT3v6IY!Pbffq>JSdoS$xX7|P2 zi|d|j7*9t2#?uK-Ab~yU@AtsWqn2*LeC^yqlVf@v+qef#PUAYBTr+X-O>dP{VXTve1!=Gi9T znGn^;b3P{lWsc=KHEN4tX306zOf;!!#2+KI?T?Vr3Ww?9R!J<{LyDG1Mkx#)&vvOD zVJ#V^oWSuQ{V;Sxoma{(4OJ*em^yB`6?%vhWUMfysFRbAFE z5J@68>l)m%t~VtFRDx4LX3(GM`{w9pum7ChzPzF5?A9~S&mQ_c-SyGF5BANyaUL(F zx1E3GYWm@8-M!1*gO?t=+_N}zurWAtWn?*X|NMb72Y$))FJ}51-MbpQ@+&G{|1w@x z)lBCKQad_VQmE&_vy+RPva{NU9d{yJ0|z8x_5vdi-hvr4xrP}KHdkCXsG@RCm8h@j zP!9U$4SXW2Fad%H_Ojbr@SZeHczOWpnOmVQH+O?tuo(!TeEr6cr_aCk)rl`oEZslU z*tqx7GmUkRH;l*c^j_dadOr%xz5DZSaR~og-Uc+ehCMLVTrIJx=X8iw%iq9H)!NC< z__5mGS5y142eKO53Oa0?AotDyKuG+#xN{gsyN`l)kOMMHMXuZ?UVd zv2N#u_HR#I+56-EANDUj_DW;#vBt628|}weRHZE?^8#;CKAV;vgelW3`QkwU*us=~ zt75qkbVI0t?H6GifE~C#2VgTXTbP)NOyr;K5Ts9#ejpc-v@RzW6HlWg;(*p%SDeSs=Yps=7kM;F%=j*dFi97>Kb| zcEw5wY6WN?5(J2#MIwkw4b@7aPwhT!rG2q+BztGG+N`#H=vzv;md zd1TjYMFQglRr5XmF+|xE56j4$%qKXd22+-c%M3**jwr{+;Tss?WI8THnRrG>a?s#A z!bsdHkslf1M9Qvs83~KwP9+o-lIJ;5re%SyXbl)OTI5nK%;*fa5% zWX)Y+L#;G*$r(O5ET{uCe7ToYWwBdh1!;+^4A9hEHA1OcF-#{rge7CV3{Kcf!l7cu z)!D^_b0l|>i>C3k$aCZ1LmCtKjmaRz4nkQJb5*hERn|7P6CttD90hCt%<)LKS#6!QuhQlb>*X3lU)ED4 zQ5jD%CkHAVF1gmIKhkF*c4S?#I-}M6iY--|EjcW$y;)_=ZE4N@f2~<^SXv9pA!Ec< zt6iCU)^(AP_7F%88eFlBM$P=fo>Y5=-eKCa+V2c--up(X3G*1|fCfCKyHH@K_h z-0R4>s^rZ5s{t*Q9UMoLdx&x>P8CEI2S!81sluG%*3nCG>*q9OC^~Q*JAo3A1(}J{hEzT7@L+-mp?G|dd~p*dn=!$ww`MG=8C6Kadx9gCR(?LyJt`!)?wG&`2|$$$-+fd_ zO6j-^jpw=K`R+J>t~)g@j|$0`yY}^TOT5f=rkLm$Gr~#TOiGH5a%?)ziQPI5O5Fxf zbfv}>4^8t)UZ&|xOzod3*ar z|AL?VmoK!~x?|>I5jTH&axu^_?Y%#+5a^uSRq8qVwC5=9&6GO!7drMATMrmKp8Go& z0=wrt^T98Is{DhG?|ocseGT`2+e+Pf3)@)Q)b@1K+xG_^oVa&lZsUCTak$w2`q%A$ z>HKqNq5Z81?_zW3Z0t$;Zk=#^ z>RW*&K+y`M!4JIqDwv*E!8A*VTe3u~0-2a!E9N0x_fXlBGjJrZL#`=V+gLyNON({y zi>&4B$@5v;i#UF{&J4I`&LQJ4qLwPKbbvOC5RvgAWPpnC%{hO$WozwOX9i$Tg(V0P zR)F@~?OD4C&an!N7&AbSbz4gsp&|nqki*)o!bKQ@re)8I)_trQc66%=;+F7?^!4yvr)@gSblg| zsaJapyrCi8mGGI-piOL3wc;zrY6Y2XYoX|Qp5q`Z{RHGP`kOCY4tJNr2MXZ>#qhx= zZ0Yd31^5rYJ2_Mi)L)|~>1pX{U|Tu7^)7vrE`?t$gkLR&_fHNjH8fA*E{B_q3P9Dtrww3+Ow}oDSyKi=v8(Z%NZU&6c z=H{uf8)H8N+;!e%TOMTHZtSD_v_5AJ>Sk6G70cWOJxB6NP}lJ zPqb+O>r~xX!k$B#?k&C0z0KYc5R?7{8&>gCf-=`)m=L< zdEokoGept1ZRVY)z8#AjTFV=H=6?00sqpgAd{6(^{pC=@)ZrV4OQBtb(60Q3-TB?` zFWZUw4~P}JJyg4l?19>4FKXH{9V;|aI5R3Yx6Swq&7C-NDmRAB_Ud}uc8kPtbITNe zgP-vfH-n;2eb2)g&a2eiY8zBAoPozfZEd*)XX1`sg_%r^5okX8nK%RKzKR?BK%yEj z+%yeu5r7p9&trw!F^&ar+`Wv-_07|--0i#Bmv7!ZyDuN?%zHYYA892EysDzWx+AsS zv9UI}l0U+HEMV90`&+<0VgsbGgkiY660yn&G}nZ+uhL&R-zG=3expv{>$wGhtJ$oT z6`bi=@ZUmrY^F}u8LM32O#2{dk%3udR;(*lx#U*K6NUxQWO1oAu8-gm?jh47`Z7K^ zT<|!F-*5UdHOBi%U&gJylJsR74_(TUJ1^z-sEKUB=bH}Z{fCyF_KTDsw?EB z>4bor!a86kv3e5njQe2P$R7DaNK-J^l|hl?FHV0w*0Rj23_7XvOuaEr);jgOgf8l;#GXMYp diff --git a/venv/lib/python3.12/site-packages/apscheduler/triggers/base.py b/venv/lib/python3.12/site-packages/apscheduler/triggers/base.py deleted file mode 100644 index 917af8c..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/triggers/base.py +++ /dev/null @@ -1,35 +0,0 @@ -import random -from abc import ABCMeta, abstractmethod -from datetime import timedelta - - -class BaseTrigger(metaclass=ABCMeta): - """Abstract base class that defines the interface that every trigger must implement.""" - - __slots__ = () - - @abstractmethod - def get_next_fire_time(self, previous_fire_time, now): - """ - Returns the next datetime to fire on, If no such datetime can be calculated, returns - ``None``. - - :param datetime.datetime previous_fire_time: the previous time the trigger was fired - :param datetime.datetime now: current datetime - """ - - def _apply_jitter(self, next_fire_time, jitter, now): - """ - Randomize ``next_fire_time`` by adding a random value (the jitter). - - :param datetime.datetime|None next_fire_time: next fire time without jitter applied. If - ``None``, returns ``None``. - :param int|None jitter: maximum number of seconds to add to ``next_fire_time`` - (if ``None`` or ``0``, returns ``next_fire_time``) - :param datetime.datetime now: current datetime - :return datetime.datetime|None: next fire time with a jitter. - """ - if next_fire_time is None or not jitter: - return next_fire_time - - return next_fire_time + timedelta(seconds=random.uniform(0, jitter)) diff --git a/venv/lib/python3.12/site-packages/apscheduler/triggers/calendarinterval.py b/venv/lib/python3.12/site-packages/apscheduler/triggers/calendarinterval.py deleted file mode 100644 index cd86048..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/triggers/calendarinterval.py +++ /dev/null @@ -1,186 +0,0 @@ -from __future__ import annotations - -from datetime import date, datetime, time, timedelta, tzinfo -from typing import Any - -from tzlocal import get_localzone - -from apscheduler.triggers.base import BaseTrigger -from apscheduler.util import ( - asdate, - astimezone, - timezone_repr, -) - - -class CalendarIntervalTrigger(BaseTrigger): - """ - Runs the task on specified calendar-based intervals always at the same exact time of - day. - - When calculating the next date, the ``years`` and ``months`` parameters are first - added to the previous date while keeping the day of the month constant. This is - repeated until the resulting date is valid. After that, the ``weeks`` and ``days`` - parameters are added to that date. Finally, the date is combined with the given time - (hour, minute, second) to form the final datetime. - - This means that if the ``days`` or ``weeks`` parameters are not used, the task will - always be executed on the same day of the month at the same wall clock time, - assuming the date and time are valid. - - If the resulting datetime is invalid due to a daylight saving forward shift, the - date is discarded and the process moves on to the next date. If instead the datetime - is ambiguous due to a backward DST shift, the earlier of the two resulting datetimes - is used. - - If no previous run time is specified when requesting a new run time (like when - starting for the first time or resuming after being paused), ``start_date`` is used - as a reference and the next valid datetime equal to or later than the current time - will be returned. Otherwise, the next valid datetime starting from the previous run - time is returned, even if it's in the past. - - .. warning:: Be wary of setting a start date near the end of the month (29. – 31.) - if you have ``months`` specified in your interval, as this will skip the months - when those days do not exist. Likewise, setting the start date on the leap day - (February 29th) and having ``years`` defined may cause some years to be skipped. - - Users are also discouraged from using a time inside the target timezone's DST - switching period (typically around 2 am) since a date could either be skipped or - repeated due to the specified wall clock time either occurring twice or not at - all. - - :param years: number of years to wait - :param months: number of months to wait - :param weeks: number of weeks to wait - :param days: number of days to wait - :param hour: hour to run the task at - :param minute: minute to run the task at - :param second: second to run the task at - :param start_date: first date to trigger on (defaults to current date if omitted) - :param end_date: latest possible date to trigger on - :param timezone: time zone to use for calculating the next fire time (defaults - to scheduler timezone if created via the scheduler, otherwise the local time - zone) - :param jitter: delay the job execution by ``jitter`` seconds at most - """ - - __slots__ = ( - "years", - "months", - "weeks", - "days", - "start_date", - "end_date", - "timezone", - "jitter", - "_time", - ) - - def __init__( - self, - *, - years: int = 0, - months: int = 0, - weeks: int = 0, - days: int = 0, - hour: int = 0, - minute: int = 0, - second: int = 0, - start_date: date | str | None = None, - end_date: date | str | None = None, - timezone: str | tzinfo | None = None, - jitter: int | None = None, - ): - if timezone: - self.timezone = astimezone(timezone) - else: - self.timezone = astimezone(get_localzone()) - - self.years = years - self.months = months - self.weeks = weeks - self.days = days - self.start_date = asdate(start_date) or date.today() - self.end_date = asdate(end_date) - self.jitter = jitter - self._time = time(hour, minute, second, tzinfo=self.timezone) - - if self.years == self.months == self.weeks == self.days == 0: - raise ValueError("interval must be at least 1 day long") - - if self.end_date and self.start_date > self.end_date: - raise ValueError("end_date cannot be earlier than start_date") - - def get_next_fire_time( - self, previous_fire_time: datetime | None, now: datetime - ) -> datetime | None: - while True: - if previous_fire_time: - year, month = previous_fire_time.year, previous_fire_time.month - while True: - month += self.months - year += self.years + (month - 1) // 12 - month = (month - 1) % 12 + 1 - try: - next_date = date(year, month, previous_fire_time.day) - except ValueError: - pass # Nonexistent date - else: - next_date += timedelta(self.days + self.weeks * 7) - break - else: - next_date = self.start_date - - # Don't return any date past end_date - if self.end_date and next_date > self.end_date: - return None - - # Combine the date with the designated time and normalize the result - timestamp = datetime.combine(next_date, self._time).timestamp() - next_time = datetime.fromtimestamp(timestamp, self.timezone) - - # Check if the time is off due to normalization and a forward DST shift - if next_time.timetz() != self._time: - previous_fire_time = next_time.date() - else: - return self._apply_jitter(next_time, self.jitter, now) - - def __getstate__(self) -> dict[str, Any]: - return { - "version": 1, - "interval": [self.years, self.months, self.weeks, self.days], - "time": [self._time.hour, self._time.minute, self._time.second], - "start_date": self.start_date, - "end_date": self.end_date, - "timezone": self.timezone, - "jitter": self.jitter, - } - - def __setstate__(self, state: dict[str, Any]) -> None: - if state.get("version", 1) > 1: - raise ValueError( - f"Got serialized data for version {state['version']} of " - f"{self.__class__.__name__}, but only versions up to 1 can be handled" - ) - - self.years, self.months, self.weeks, self.days = state["interval"] - self.start_date = state["start_date"] - self.end_date = state["end_date"] - self.timezone = state["timezone"] - self.jitter = state["jitter"] - self._time = time(*state["time"], tzinfo=self.timezone) - - def __repr__(self) -> str: - fields = [] - for field in "years", "months", "weeks", "days": - value = getattr(self, field) - if value > 0: - fields.append(f"{field}={value}") - - fields.append(f"time={self._time.isoformat()!r}") - fields.append(f"start_date='{self.start_date}'") - if self.end_date: - fields.append(f"end_date='{self.end_date}'") - - fields.append(f"timezone={timezone_repr(self.timezone)!r}") - return f'{self.__class__.__name__}({", ".join(fields)})' diff --git a/venv/lib/python3.12/site-packages/apscheduler/triggers/combining.py b/venv/lib/python3.12/site-packages/apscheduler/triggers/combining.py deleted file mode 100644 index 653f9b5..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/triggers/combining.py +++ /dev/null @@ -1,114 +0,0 @@ -from apscheduler.triggers.base import BaseTrigger -from apscheduler.util import obj_to_ref, ref_to_obj - - -class BaseCombiningTrigger(BaseTrigger): - __slots__ = ("triggers", "jitter") - - def __init__(self, triggers, jitter=None): - self.triggers = triggers - self.jitter = jitter - - def __getstate__(self): - return { - "version": 1, - "triggers": [ - (obj_to_ref(trigger.__class__), trigger.__getstate__()) - for trigger in self.triggers - ], - "jitter": self.jitter, - } - - def __setstate__(self, state): - if state.get("version", 1) > 1: - raise ValueError( - f"Got serialized data for version {state['version']} of " - f"{self.__class__.__name__}, but only versions up to 1 can be handled" - ) - - self.jitter = state["jitter"] - self.triggers = [] - for clsref, state in state["triggers"]: - cls = ref_to_obj(clsref) - trigger = cls.__new__(cls) - trigger.__setstate__(state) - self.triggers.append(trigger) - - def __repr__(self): - return "<{}({}{})>".format( - self.__class__.__name__, - self.triggers, - f", jitter={self.jitter}" if self.jitter else "", - ) - - -class AndTrigger(BaseCombiningTrigger): - """ - Always returns the earliest next fire time that all the given triggers can agree on. - The trigger is considered to be finished when any of the given triggers has finished its - schedule. - - Trigger alias: ``and`` - - .. warning:: This trigger should only be used to combine triggers that fire on - specific times of day, such as - :class:`~apscheduler.triggers.cron.CronTrigger` and - class:`~apscheduler.triggers.calendarinterval.CalendarIntervalTrigger`. - Attempting to use it with - :class:`~apscheduler.triggers.interval.IntervalTrigger` will likely result in - the scheduler hanging as it tries to find a fire time that matches exactly - between fire times produced by all the given triggers. - - :param list triggers: triggers to combine - :param int|None jitter: delay the job execution by ``jitter`` seconds at most - """ - - __slots__ = () - - def get_next_fire_time(self, previous_fire_time, now): - while True: - fire_times = [ - trigger.get_next_fire_time(previous_fire_time, now) - for trigger in self.triggers - ] - if None in fire_times: - return None - elif min(fire_times) == max(fire_times): - return self._apply_jitter(fire_times[0], self.jitter, now) - else: - now = max(fire_times) - - def __str__(self): - return "and[{}]".format(", ".join(str(trigger) for trigger in self.triggers)) - - -class OrTrigger(BaseCombiningTrigger): - """ - Always returns the earliest next fire time produced by any of the given triggers. - The trigger is considered finished when all the given triggers have finished their schedules. - - Trigger alias: ``or`` - - :param list triggers: triggers to combine - :param int|None jitter: delay the job execution by ``jitter`` seconds at most - - .. note:: Triggers that depends on the previous fire time, such as the interval trigger, may - seem to behave strangely since they are always passed the previous fire time produced by - any of the given triggers. - """ - - __slots__ = () - - def get_next_fire_time(self, previous_fire_time, now): - fire_times = [ - trigger.get_next_fire_time(previous_fire_time, now) - for trigger in self.triggers - ] - fire_times = [fire_time for fire_time in fire_times if fire_time is not None] - if fire_times: - return self._apply_jitter(min(fire_times), self.jitter, now) - else: - return None - - def __str__(self): - return "or[{}]".format(", ".join(str(trigger) for trigger in self.triggers)) diff --git a/venv/lib/python3.12/site-packages/apscheduler/triggers/cron/__init__.py b/venv/lib/python3.12/site-packages/apscheduler/triggers/cron/__init__.py deleted file mode 100644 index 03be819..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/triggers/cron/__init__.py +++ /dev/null @@ -1,289 +0,0 @@ -from datetime import datetime, timedelta - -from tzlocal import get_localzone - -from apscheduler.triggers.base import BaseTrigger -from apscheduler.triggers.cron.fields import ( - DEFAULT_VALUES, - BaseField, - DayOfMonthField, - DayOfWeekField, - MonthField, - WeekField, -) -from apscheduler.util import ( - astimezone, - convert_to_datetime, - datetime_ceil, - datetime_repr, -) - - -class CronTrigger(BaseTrigger): - """ - Triggers when current time matches all specified time constraints, - similarly to how the UNIX cron scheduler works. - - :param int|str year: 4-digit year - :param int|str month: month (1-12) - :param int|str day: day of month (1-31) - :param int|str week: ISO week (1-53) - :param int|str day_of_week: number or name of weekday (0-6 or mon,tue,wed,thu,fri,sat,sun) - :param int|str hour: hour (0-23) - :param int|str minute: minute (0-59) - :param int|str second: second (0-59) - :param datetime|str start_date: earliest possible date/time to trigger on (inclusive) - :param datetime|str end_date: latest possible date/time to trigger on (inclusive) - :param datetime.tzinfo|str timezone: time zone to use for the date/time calculations (defaults - to scheduler timezone) - :param int|None jitter: delay the job execution by ``jitter`` seconds at most - - .. note:: The first weekday is always **monday**. - """ - - FIELD_NAMES = ( - "year", - "month", - "day", - "week", - "day_of_week", - "hour", - "minute", - "second", - ) - FIELDS_MAP = { - "year": BaseField, - "month": MonthField, - "week": WeekField, - "day": DayOfMonthField, - "day_of_week": DayOfWeekField, - "hour": BaseField, - "minute": BaseField, - "second": BaseField, - } - - __slots__ = "timezone", "start_date", "end_date", "fields", "jitter" - - def __init__( - self, - year=None, - month=None, - day=None, - week=None, - day_of_week=None, - hour=None, - minute=None, - second=None, - start_date=None, - end_date=None, - timezone=None, - jitter=None, - ): - if timezone: - self.timezone = astimezone(timezone) - elif isinstance(start_date, datetime) and start_date.tzinfo: - self.timezone = astimezone(start_date.tzinfo) - elif isinstance(end_date, datetime) and end_date.tzinfo: - self.timezone = astimezone(end_date.tzinfo) - else: - self.timezone = get_localzone() - - self.start_date = convert_to_datetime(start_date, self.timezone, "start_date") - self.end_date = convert_to_datetime(end_date, self.timezone, "end_date") - - self.jitter = jitter - - values = dict( - (key, value) - for (key, value) in locals().items() - if key in self.FIELD_NAMES and value is not None - ) - self.fields = [] - assign_defaults = False - for field_name in self.FIELD_NAMES: - if field_name in values: - exprs = values.pop(field_name) - is_default = False - assign_defaults = not values - elif assign_defaults: - exprs = DEFAULT_VALUES[field_name] - is_default = True - else: - exprs = "*" - is_default = True - - field_class = self.FIELDS_MAP[field_name] - field = field_class(field_name, exprs, is_default) - self.fields.append(field) - - @classmethod - def from_crontab(cls, expr, timezone=None): - """ - Create a :class:`~CronTrigger` from a standard crontab expression. - - See https://en.wikipedia.org/wiki/Cron for more information on the format accepted here. - - :param expr: minute, hour, day of month, month, day of week - :param datetime.tzinfo|str timezone: time zone to use for the date/time calculations ( - defaults to scheduler timezone) - :return: a :class:`~CronTrigger` instance - - """ - values = expr.split() - if len(values) != 5: - raise ValueError(f"Wrong number of fields; got {len(values)}, expected 5") - - return cls( - minute=values[0], - hour=values[1], - day=values[2], - month=values[3], - day_of_week=values[4], - timezone=timezone, - ) - - def _increment_field_value(self, dateval, fieldnum): - """ - Increments the designated field and resets all less significant fields to their minimum - values. - - :type dateval: datetime - :type fieldnum: int - :return: a tuple containing the new date, and the number of the field that was actually - incremented - :rtype: tuple - """ - - values = {} - i = 0 - while i < len(self.fields): - field = self.fields[i] - if not field.REAL: - if i == fieldnum: - fieldnum -= 1 - i -= 1 - else: - i += 1 - continue - - if i < fieldnum: - values[field.name] = field.get_value(dateval) - i += 1 - elif i > fieldnum: - values[field.name] = field.get_min(dateval) - i += 1 - else: - value = field.get_value(dateval) - maxval = field.get_max(dateval) - if value == maxval: - fieldnum -= 1 - i -= 1 - else: - values[field.name] = value + 1 - i += 1 - - difference = datetime(**values) - dateval.replace(tzinfo=None) - dateval = datetime.fromtimestamp( - dateval.timestamp() + difference.total_seconds(), self.timezone - ) - return dateval, fieldnum - - def _set_field_value(self, dateval, fieldnum, new_value): - values = {} - for i, field in enumerate(self.fields): - if field.REAL: - if i < fieldnum: - values[field.name] = field.get_value(dateval) - elif i > fieldnum: - values[field.name] = field.get_min(dateval) - else: - values[field.name] = new_value - - return datetime(**values, tzinfo=self.timezone, fold=dateval.fold) - - def get_next_fire_time(self, previous_fire_time, now): - if previous_fire_time: - start_date = min(now, previous_fire_time + timedelta(microseconds=1)) - if start_date == previous_fire_time: - start_date += timedelta(microseconds=1) - else: - start_date = max(now, self.start_date) if self.start_date else now - - fieldnum = 0 - next_date = datetime_ceil(start_date).astimezone(self.timezone) - while 0 <= fieldnum < len(self.fields): - field = self.fields[fieldnum] - curr_value = field.get_value(next_date) - next_value = field.get_next_value(next_date) - - if next_value is None: - # No valid value was found - next_date, fieldnum = self._increment_field_value( - next_date, fieldnum - 1 - ) - elif next_value > curr_value: - # A valid, but higher than the starting value, was found - if field.REAL: - next_date = self._set_field_value(next_date, fieldnum, next_value) - fieldnum += 1 - else: - next_date, fieldnum = self._increment_field_value( - next_date, fieldnum - ) - else: - # A valid value was found, no changes necessary - fieldnum += 1 - - # Return if the date has rolled past the end date - if self.end_date and next_date > self.end_date: - return None - - if fieldnum >= 0: - next_date = self._apply_jitter(next_date, self.jitter, now) - return min(next_date, self.end_date) if self.end_date else next_date - - def __getstate__(self): - return { - "version": 2, - "timezone": self.timezone, - "start_date": self.start_date, - "end_date": self.end_date, - "fields": self.fields, - "jitter": self.jitter, - } - - def __setstate__(self, state): - # This is for compatibility with APScheduler 3.0.x - if isinstance(state, tuple): - state = state[1] - - if state.get("version", 1) > 2: - raise ValueError( - f"Got serialized data for version {state['version']} of " - f"{self.__class__.__name__}, but only versions up to 2 can be handled" - ) - - self.timezone = astimezone(state["timezone"]) - self.start_date = state["start_date"] - self.end_date = state["end_date"] - self.fields = state["fields"] - self.jitter = state.get("jitter") - - def __str__(self): - options = [f"{f.name}='{f}'" for f in self.fields if not f.is_default] - return "cron[{}]".format(", ".join(options)) - - def __repr__(self): - options = [f"{f.name}='{f}'" for f in self.fields if not f.is_default] - if self.start_date: - options.append(f"start_date={datetime_repr(self.start_date)!r}") - if self.end_date: - options.append(f"end_date={datetime_repr(self.end_date)!r}") - if self.jitter: - options.append(f"jitter={self.jitter}") - - return "<{} ({}, timezone='{}')>".format( - self.__class__.__name__, - ", ".join(options), - self.timezone, - ) diff --git a/venv/lib/python3.12/site-packages/apscheduler/triggers/cron/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/apscheduler/triggers/cron/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index b95df22ab66cc098568102af5c26f038383817da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11622 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 F{{WOE{T2i1&NNAxnw2)-OU29z5OXA?4^j^~> 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 diff --git a/venv/lib/python3.12/site-packages/apscheduler/triggers/cron/expressions.py b/venv/lib/python3.12/site-packages/apscheduler/triggers/cron/expressions.py deleted file mode 100644 index 0d84ec2..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/triggers/cron/expressions.py +++ /dev/null @@ -1,285 +0,0 @@ -"""This module contains the expressions applicable for CronTrigger's fields.""" - -__all__ = ( - "AllExpression", - "RangeExpression", - "WeekdayRangeExpression", - "WeekdayPositionExpression", - "LastDayOfMonthExpression", -) - -import re -from calendar import monthrange - -from apscheduler.util import asint - -WEEKDAYS = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"] -MONTHS = [ - "jan", - "feb", - "mar", - "apr", - "may", - "jun", - "jul", - "aug", - "sep", - "oct", - "nov", - "dec", -] - - -class AllExpression: - value_re = re.compile(r"\*(?:/(?P\d+))?$") - - def __init__(self, step=None): - self.step = asint(step) - if self.step == 0: - raise ValueError("Increment must be higher than 0") - - def validate_range(self, field_name): - from apscheduler.triggers.cron.fields import MAX_VALUES, MIN_VALUES - - value_range = MAX_VALUES[field_name] - MIN_VALUES[field_name] - if self.step and self.step > value_range: - raise ValueError( - f"the step value ({self.step}) is higher than the total range of the " - f"expression ({value_range})" - ) - - def get_next_value(self, date, field): - start = field.get_value(date) - minval = field.get_min(date) - maxval = field.get_max(date) - start = max(start, minval) - - if not self.step: - next = start - else: - distance_to_next = (self.step - (start - minval)) % self.step - next = start + distance_to_next - - if next <= maxval: - return next - - def __eq__(self, other): - return isinstance(other, self.__class__) and self.step == other.step - - def __str__(self): - if self.step: - return "*/%d" % self.step - return "*" - - def __repr__(self): - return f"{self.__class__.__name__}({self.step})" - - -class RangeExpression(AllExpression): - value_re = re.compile(r"(?P\d+)(?:-(?P\d+))?(?:/(?P\d+))?$") - - def __init__(self, first, last=None, step=None): - super().__init__(step) - first = asint(first) - last = asint(last) - if last is None and step is None: - last = first - if last is not None and first > last: - raise ValueError( - "The minimum value in a range must not be higher than the maximum" - ) - self.first = first - self.last = last - - def validate_range(self, field_name): - from apscheduler.triggers.cron.fields import MAX_VALUES, MIN_VALUES - - super().validate_range(field_name) - if self.first < MIN_VALUES[field_name]: - raise ValueError( - f"the first value ({self.first}) is lower than the minimum value ({MIN_VALUES[field_name]})" - ) - if self.last is not None and self.last > MAX_VALUES[field_name]: - raise ValueError( - f"the last value ({self.last}) is higher than the maximum value ({MAX_VALUES[field_name]})" - ) - value_range = (self.last or MAX_VALUES[field_name]) - self.first - if self.step and self.step > value_range: - raise ValueError( - f"the step value ({self.step}) is higher than the total range of the " - f"expression ({value_range})" - ) - - def get_next_value(self, date, field): - startval = field.get_value(date) - minval = field.get_min(date) - maxval = field.get_max(date) - - # Apply range limits - minval = max(minval, self.first) - maxval = min(maxval, self.last) if self.last is not None else maxval - nextval = max(minval, startval) - - # Apply the step if defined - if self.step: - distance_to_next = (self.step - (nextval - minval)) % self.step - nextval += distance_to_next - - return nextval if nextval <= maxval else None - - def __eq__(self, other): - return ( - isinstance(other, self.__class__) - and self.first == other.first - and self.last == other.last - ) - - def __str__(self): - if self.last != self.first and self.last is not None: - range = "%d-%d" % (self.first, self.last) - else: - range = str(self.first) - - if self.step: - return "%s/%d" % (range, self.step) - - return range - - def __repr__(self): - args = [str(self.first)] - if self.last != self.first and self.last is not None or self.step: - args.append(str(self.last)) - - if self.step: - args.append(str(self.step)) - - return "{}({})".format(self.__class__.__name__, ", ".join(args)) - - -class MonthRangeExpression(RangeExpression): - value_re = re.compile(r"(?P[a-z]+)(?:-(?P[a-z]+))?", re.IGNORECASE) - - def __init__(self, first, last=None): - try: - first_num = MONTHS.index(first.lower()) + 1 - except ValueError: - raise ValueError(f'Invalid month name "{first}"') - - if last: - try: - last_num = MONTHS.index(last.lower()) + 1 - except ValueError: - raise ValueError(f'Invalid month name "{last}"') - else: - last_num = None - - super().__init__(first_num, last_num) - - def __str__(self): - if self.last != self.first and self.last is not None: - return f"{MONTHS[self.first - 1]}-{MONTHS[self.last - 1]}" - return MONTHS[self.first - 1] - - def __repr__(self): - args = [f"'{MONTHS[self.first]}'"] - if self.last != self.first and self.last is not None: - args.append(f"'{MONTHS[self.last - 1]}'") - return "{}({})".format(self.__class__.__name__, ", ".join(args)) - - -class WeekdayRangeExpression(RangeExpression): - value_re = re.compile(r"(?P[a-z]+)(?:-(?P[a-z]+))?", re.IGNORECASE) - - def __init__(self, first, last=None): - try: - first_num = WEEKDAYS.index(first.lower()) - except ValueError: - raise ValueError(f'Invalid weekday name "{first}"') - - if last: - try: - last_num = WEEKDAYS.index(last.lower()) - except ValueError: - raise ValueError(f'Invalid weekday name "{last}"') - else: - last_num = None - - super().__init__(first_num, last_num) - - def __str__(self): - if self.last != self.first and self.last is not None: - return f"{WEEKDAYS[self.first]}-{WEEKDAYS[self.last]}" - return WEEKDAYS[self.first] - - def __repr__(self): - args = [f"'{WEEKDAYS[self.first]}'"] - if self.last != self.first and self.last is not None: - args.append(f"'{WEEKDAYS[self.last]}'") - return "{}({})".format(self.__class__.__name__, ", ".join(args)) - - -class WeekdayPositionExpression(AllExpression): - options = ["1st", "2nd", "3rd", "4th", "5th", "last"] - value_re = re.compile( - r"(?P{}) +(?P(?:\d+|\w+))".format("|".join(options)), - re.IGNORECASE, - ) - - def __init__(self, option_name, weekday_name): - super().__init__(None) - try: - self.option_num = self.options.index(option_name.lower()) - except ValueError: - raise ValueError(f'Invalid weekday position "{option_name}"') - - try: - self.weekday = WEEKDAYS.index(weekday_name.lower()) - except ValueError: - raise ValueError(f'Invalid weekday name "{weekday_name}"') - - def get_next_value(self, date, field): - # Figure out the weekday of the month's first day and the number of days in that month - first_day_wday, last_day = monthrange(date.year, date.month) - - # Calculate which day of the month is the first of the target weekdays - first_hit_day = self.weekday - first_day_wday + 1 - if first_hit_day <= 0: - first_hit_day += 7 - - # Calculate what day of the month the target weekday would be - if self.option_num < 5: - target_day = first_hit_day + self.option_num * 7 - else: - target_day = first_hit_day + ((last_day - first_hit_day) // 7) * 7 - - if target_day <= last_day and target_day >= date.day: - return target_day - - def __eq__(self, other): - return ( - super().__eq__(other) - and self.option_num == other.option_num - and self.weekday == other.weekday - ) - - def __str__(self): - return f"{self.options[self.option_num]} {WEEKDAYS[self.weekday]}" - - def __repr__(self): - return f"{self.__class__.__name__}('{self.options[self.option_num]}', '{WEEKDAYS[self.weekday]}')" - - -class LastDayOfMonthExpression(AllExpression): - value_re = re.compile(r"last", re.IGNORECASE) - - def __init__(self): - super().__init__(None) - - def get_next_value(self, date, field): - return monthrange(date.year, date.month)[1] - - def __str__(self): - return "last" - - def __repr__(self): - return f"{self.__class__.__name__}()" diff --git a/venv/lib/python3.12/site-packages/apscheduler/triggers/cron/fields.py b/venv/lib/python3.12/site-packages/apscheduler/triggers/cron/fields.py deleted file mode 100644 index 4c08179..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/triggers/cron/fields.py +++ /dev/null @@ -1,149 +0,0 @@ -"""Fields represent CronTrigger options which map to :class:`~datetime.datetime` fields.""" - -__all__ = ( - "MIN_VALUES", - "MAX_VALUES", - "DEFAULT_VALUES", - "BaseField", - "WeekField", - "DayOfMonthField", - "DayOfWeekField", -) - -import re -from calendar import monthrange - -from apscheduler.triggers.cron.expressions import ( - AllExpression, - LastDayOfMonthExpression, - MonthRangeExpression, - RangeExpression, - WeekdayPositionExpression, - WeekdayRangeExpression, -) - -MIN_VALUES = { - "year": 1970, - "month": 1, - "day": 1, - "week": 1, - "day_of_week": 0, - "hour": 0, - "minute": 0, - "second": 0, -} -MAX_VALUES = { - "year": 9999, - "month": 12, - "day": 31, - "week": 53, - "day_of_week": 6, - "hour": 23, - "minute": 59, - "second": 59, -} -DEFAULT_VALUES = { - "year": "*", - "month": 1, - "day": 1, - "week": "*", - "day_of_week": "*", - "hour": 0, - "minute": 0, - "second": 0, -} -SEPARATOR = re.compile(" *, *") - - -class BaseField: - REAL = True - COMPILERS = [AllExpression, RangeExpression] - - def __init__(self, name, exprs, is_default=False): - self.name = name - self.is_default = is_default - self.compile_expressions(exprs) - - def get_min(self, dateval): - return MIN_VALUES[self.name] - - def get_max(self, dateval): - return MAX_VALUES[self.name] - - def get_value(self, dateval): - return getattr(dateval, self.name) - - def get_next_value(self, dateval): - smallest = None - for expr in self.expressions: - value = expr.get_next_value(dateval, self) - if smallest is None or (value is not None and value < smallest): - smallest = value - - return smallest - - def compile_expressions(self, exprs): - self.expressions = [] - - # Split a comma-separated expression list, if any - for expr in SEPARATOR.split(str(exprs).strip()): - self.compile_expression(expr) - - def compile_expression(self, expr): - for compiler in self.COMPILERS: - match = compiler.value_re.match(expr) - if match: - compiled_expr = compiler(**match.groupdict()) - - try: - compiled_expr.validate_range(self.name) - except ValueError as e: - raise ValueError( - f"Error validating expression {expr!r}: {e}" - ) from None - - self.expressions.append(compiled_expr) - return - - raise ValueError(f'Unrecognized expression "{expr}" for field "{self.name}"') - - def __eq__(self, other): - return ( - isinstance(self, self.__class__) and self.expressions == other.expressions - ) - - def __str__(self): - expr_strings = (str(e) for e in self.expressions) - return ",".join(expr_strings) - - def __repr__(self): - return f"{self.__class__.__name__}('{self.name}', '{self}')" - - -class WeekField(BaseField): - REAL = False - - def get_value(self, dateval): - return dateval.isocalendar()[1] - - -class DayOfMonthField(BaseField): - COMPILERS = BaseField.COMPILERS + [ - WeekdayPositionExpression, - LastDayOfMonthExpression, - ] - - def get_max(self, dateval): - return monthrange(dateval.year, dateval.month)[1] - - -class DayOfWeekField(BaseField): - REAL = False - COMPILERS = BaseField.COMPILERS + [WeekdayRangeExpression] - - def get_value(self, dateval): - return dateval.weekday() - - -class MonthField(BaseField): - COMPILERS = BaseField.COMPILERS + [MonthRangeExpression] diff --git a/venv/lib/python3.12/site-packages/apscheduler/triggers/date.py b/venv/lib/python3.12/site-packages/apscheduler/triggers/date.py deleted file mode 100644 index a9302da..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/triggers/date.py +++ /dev/null @@ -1,51 +0,0 @@ -from datetime import datetime - -from tzlocal import get_localzone - -from apscheduler.triggers.base import BaseTrigger -from apscheduler.util import astimezone, convert_to_datetime, datetime_repr - - -class DateTrigger(BaseTrigger): - """ - Triggers once on the given datetime. If ``run_date`` is left empty, current time is used. - - :param datetime|str run_date: the date/time to run the job at - :param datetime.tzinfo|str timezone: time zone for ``run_date`` if it doesn't have one already - """ - - __slots__ = "run_date" - - def __init__(self, run_date=None, timezone=None): - timezone = astimezone(timezone) or get_localzone() - if run_date is not None: - self.run_date = convert_to_datetime(run_date, timezone, "run_date") - else: - self.run_date = datetime.now(timezone) - - def get_next_fire_time(self, previous_fire_time, now): - return self.run_date if previous_fire_time is None else None - - def __getstate__(self): - return {"version": 1, "run_date": self.run_date} - - def __setstate__(self, state): - # This is for compatibility with APScheduler 3.0.x - if isinstance(state, tuple): - state = state[1] - - if state.get("version", 1) > 1: - raise ValueError( - f"Got serialized data for version {state['version']} of " - f"{self.__class__.__name__}, but only version 1 can be handled" - ) - - self.run_date = state["run_date"] - - def __str__(self): - return f"date[{datetime_repr(self.run_date)}]" - - def __repr__(self): - return ( - f"<{self.__class__.__name__} (run_date='{datetime_repr(self.run_date)}')>" - ) diff --git a/venv/lib/python3.12/site-packages/apscheduler/triggers/interval.py b/venv/lib/python3.12/site-packages/apscheduler/triggers/interval.py deleted file mode 100644 index 9264c4a..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/triggers/interval.py +++ /dev/null @@ -1,138 +0,0 @@ -import random -from datetime import datetime, timedelta -from math import ceil - -from tzlocal import get_localzone - -from apscheduler.triggers.base import BaseTrigger -from apscheduler.util import ( - astimezone, - convert_to_datetime, - datetime_repr, -) - - -class IntervalTrigger(BaseTrigger): - """ - Triggers on specified intervals, starting on ``start_date`` if specified, ``datetime.now()`` + - interval otherwise. - - :param int weeks: number of weeks to wait - :param int days: number of days to wait - :param int hours: number of hours to wait - :param int minutes: number of minutes to wait - :param int seconds: number of seconds to wait - :param datetime|str start_date: starting point for the interval calculation - :param datetime|str end_date: latest possible date/time to trigger on - :param datetime.tzinfo|str timezone: time zone to use for the date/time calculations - :param int|None jitter: delay the job execution by ``jitter`` seconds at most - """ - - __slots__ = ( - "timezone", - "start_date", - "end_date", - "interval", - "interval_length", - "jitter", - ) - - def __init__( - self, - weeks=0, - days=0, - hours=0, - minutes=0, - seconds=0, - start_date=None, - end_date=None, - timezone=None, - jitter=None, - ): - self.interval = timedelta( - weeks=weeks, days=days, hours=hours, minutes=minutes, seconds=seconds - ) - self.interval_length = self.interval.total_seconds() - if self.interval_length == 0: - self.interval = timedelta(seconds=1) - self.interval_length = 1 - - if timezone: - self.timezone = astimezone(timezone) - elif isinstance(start_date, datetime) and start_date.tzinfo: - self.timezone = astimezone(start_date.tzinfo) - elif isinstance(end_date, datetime) and end_date.tzinfo: - self.timezone = astimezone(end_date.tzinfo) - else: - self.timezone = get_localzone() - - start_date = start_date or (datetime.now(self.timezone) + self.interval) - self.start_date = convert_to_datetime(start_date, self.timezone, "start_date") - self.end_date = convert_to_datetime(end_date, self.timezone, "end_date") - - self.jitter = jitter - - def get_next_fire_time(self, previous_fire_time, now): - if previous_fire_time: - next_fire_time = previous_fire_time.timestamp() + self.interval_length - elif self.start_date > now: - next_fire_time = self.start_date.timestamp() - else: - timediff = now.timestamp() - self.start_date.timestamp() - next_interval_num = int(ceil(timediff / self.interval_length)) - next_fire_time = ( - self.start_date.timestamp() + self.interval_length * next_interval_num - ) - - if self.jitter is not None: - next_fire_time += random.uniform(0, self.jitter) - - if not self.end_date or next_fire_time <= self.end_date.timestamp(): - return datetime.fromtimestamp(next_fire_time, tz=self.timezone) - - def __getstate__(self): - return { - "version": 2, - "timezone": astimezone(self.timezone), - "start_date": self.start_date, - "end_date": self.end_date, - "interval": self.interval, - "jitter": self.jitter, - } - - def __setstate__(self, state): - # This is for compatibility with APScheduler 3.0.x - if isinstance(state, tuple): - state = state[1] - - if state.get("version", 1) > 2: - raise ValueError( - f"Got serialized data for version {state['version']} of " - f"{self.__class__.__name__}, but only versions up to 2 can be handled" - ) - - self.timezone = state["timezone"] - self.start_date = state["start_date"] - self.end_date = state["end_date"] - self.interval = state["interval"] - self.interval_length = self.interval.total_seconds() - self.jitter = state.get("jitter") - - def __str__(self): - return f"interval[{self.interval!s}]" - - def __repr__(self): - options = [ - f"interval={self.interval!r}", - f"start_date={datetime_repr(self.start_date)!r}", - ] - if self.end_date: - options.append(f"end_date={datetime_repr(self.end_date)!r}") - if self.jitter: - options.append(f"jitter={self.jitter}") - - return "<{} ({}, timezone='{}')>".format( - self.__class__.__name__, - ", ".join(options), - self.timezone, - ) diff --git a/venv/lib/python3.12/site-packages/apscheduler/util.py b/venv/lib/python3.12/site-packages/apscheduler/util.py deleted file mode 100644 index 82eb8c0..0000000 --- a/venv/lib/python3.12/site-packages/apscheduler/util.py +++ /dev/null @@ -1,461 +0,0 @@ -"""This module contains several handy functions primarily meant for internal use.""" - -__all__ = ( - "asint", - "asbool", - "astimezone", - "convert_to_datetime", - "datetime_to_utc_timestamp", - "utc_timestamp_to_datetime", - "datetime_ceil", - "get_callable_name", - "obj_to_ref", - "ref_to_obj", - "maybe_ref", - "check_callable_args", - "normalize", - "localize", - "undefined", -) - -import re -import sys -from calendar import timegm -from datetime import date, datetime, time, timedelta, timezone, tzinfo -from functools import partial -from inspect import isbuiltin, isclass, isfunction, ismethod, signature - -if sys.version_info < (3, 14): - from asyncio import iscoroutinefunction -else: - from inspect import iscoroutinefunction - -if sys.version_info < (3, 9): - from backports.zoneinfo import ZoneInfo -else: - from zoneinfo import ZoneInfo - - -class _Undefined: - def __nonzero__(self): - return False - - def __bool__(self): - return False - - def __repr__(self): - return "" - - -undefined = ( - _Undefined() -) #: a unique object that only signifies that no value is defined - - -def asint(text): - """ - Safely converts a string to an integer, returning ``None`` if the string is ``None``. - - :type text: str - :rtype: int - - """ - if text is not None: - return int(text) - - -def asbool(obj): - """ - Interprets an object as a boolean value. - - :rtype: bool - - """ - if isinstance(obj, str): - obj = obj.strip().lower() - if obj in ("true", "yes", "on", "y", "t", "1"): - return True - - if obj in ("false", "no", "off", "n", "f", "0"): - return False - - raise ValueError(f'Unable to interpret value "{obj}" as boolean') - - return bool(obj) - - -def astimezone(obj): - """ - Interprets an object as a timezone. - - :rtype: tzinfo - - """ - if isinstance(obj, str): - if obj == "UTC": - return timezone.utc - - return ZoneInfo(obj) - - if isinstance(obj, tzinfo): - if obj.tzname(None) == "local": - raise ValueError( - "Unable to determine the name of the local timezone -- you must " - "explicitly specify the name of the local timezone. Please refrain " - "from using timezones like EST to prevent problems with daylight " - "saving time. Instead, use a locale based timezone name (such as " - "Europe/Helsinki)." - ) - elif isinstance(obj, ZoneInfo): - return obj - elif hasattr(obj, "zone"): - # pytz timezones - if obj.zone: - return ZoneInfo(obj.zone) - - return timezone(obj._offset) - - return obj - - if obj is not None: - raise TypeError(f"Expected tzinfo, got {obj.__class__.__name__} instead") - - -def asdate(obj): - if isinstance(obj, str): - return date.fromisoformat(obj) - - return obj - - -_DATE_REGEX = re.compile( - r"(?P\d{4})-(?P\d{1,2})-(?P\d{1,2})" - r"(?:[ T](?P\d{1,2}):(?P\d{1,2}):(?P\d{1,2})" - r"(?:\.(?P\d{1,6}))?" - r"(?PZ|[+-]\d\d:\d\d)?)?$" -) - - -def convert_to_datetime(input, tz, arg_name): - """ - Converts the given object to a timezone aware datetime object. - - If a timezone aware datetime object is passed, it is returned unmodified. - If a native datetime object is passed, it is given the specified timezone. - If the input is a string, it is parsed as a datetime with the given timezone. - - Date strings are accepted in three different forms: date only (Y-m-d), date with - time (Y-m-d H:M:S) or with date+time with microseconds (Y-m-d H:M:S.micro). - Additionally you can override the time zone by giving a specific offset in the - format specified by ISO 8601: Z (UTC), +HH:MM or -HH:MM. - - :param str|datetime input: the datetime or string to convert to a timezone aware - datetime - :param datetime.tzinfo tz: timezone to interpret ``input`` in - :param str arg_name: the name of the argument (used in an error message) - :rtype: datetime - - """ - if input is None: - return - elif isinstance(input, datetime): - datetime_ = input - elif isinstance(input, date): - datetime_ = datetime.combine(input, time()) - elif isinstance(input, str): - m = _DATE_REGEX.match(input) - if not m: - raise ValueError("Invalid date string") - - values = m.groupdict() - tzname = values.pop("timezone") - if tzname == "Z": - tz = timezone.utc - elif tzname: - hours, minutes = (int(x) for x in tzname[1:].split(":")) - sign = 1 if tzname[0] == "+" else -1 - tz = timezone(sign * timedelta(hours=hours, minutes=minutes)) - - values = {k: int(v or 0) for k, v in values.items()} - datetime_ = datetime(**values) - else: - raise TypeError(f"Unsupported type for {arg_name}: {input.__class__.__name__}") - - if datetime_.tzinfo is not None: - return datetime_ - if tz is None: - raise ValueError( - f'The "tz" argument must be specified if {arg_name} has no timezone information' - ) - if isinstance(tz, str): - tz = astimezone(tz) - - return localize(datetime_, tz) - - -def datetime_to_utc_timestamp(timeval): - """ - Converts a datetime instance to a timestamp. - - :type timeval: datetime - :rtype: float - - """ - if timeval is not None: - return timegm(timeval.utctimetuple()) + timeval.microsecond / 1000000 - - -def utc_timestamp_to_datetime(timestamp): - """ - Converts the given timestamp to a datetime instance. - - :type timestamp: float - :rtype: datetime - - """ - if timestamp is not None: - return datetime.fromtimestamp(timestamp, timezone.utc) - - -def timedelta_seconds(delta): - """ - Converts the given timedelta to seconds. - - :type delta: timedelta - :rtype: float - - """ - return delta.days * 24 * 60 * 60 + delta.seconds + delta.microseconds / 1000000.0 - - -def datetime_ceil(dateval): - """ - Rounds the given datetime object upwards. - - :type dateval: datetime - - """ - if dateval.microsecond > 0: - return dateval + timedelta(seconds=1, microseconds=-dateval.microsecond) - return dateval - - -def datetime_repr(dateval): - return dateval.strftime("%Y-%m-%d %H:%M:%S %Z") if dateval else "None" - - -def timezone_repr(timezone: tzinfo) -> str: - if isinstance(timezone, ZoneInfo): - return timezone.key - - return repr(timezone) - - -def get_callable_name(func): - """ - Returns the best available display name for the given function/callable. - - :rtype: str - - """ - if ismethod(func): - self = func.__self__ - cls = self if isclass(self) else type(self) - return f"{cls.__qualname__}.{func.__name__}" - elif isclass(func) or isfunction(func) or isbuiltin(func): - return func.__qualname__ - elif hasattr(func, "__call__") and callable(func.__call__): - # instance of a class with a __call__ method - return type(func).__qualname__ - - raise TypeError( - f"Unable to determine a name for {func!r} -- maybe it is not a callable?" - ) - - -def obj_to_ref(obj): - """ - Returns the path to the given callable. - - :rtype: str - :raises TypeError: if the given object is not callable - :raises ValueError: if the given object is a :class:`~functools.partial`, lambda or a nested - function - - """ - if isinstance(obj, partial): - raise ValueError("Cannot create a reference to a partial()") - - name = get_callable_name(obj) - if "" in name: - raise ValueError("Cannot create a reference to a lambda") - if "" in name: - raise ValueError("Cannot create a reference to a nested function") - - if ismethod(obj): - module = obj.__self__.__module__ - else: - module = obj.__module__ - - return f"{module}:{name}" - - -def ref_to_obj(ref): - """ - Returns the object pointed to by ``ref``. - - :type ref: str - - """ - if not isinstance(ref, str): - raise TypeError("References must be strings") - if ":" not in ref: - raise ValueError("Invalid reference") - - modulename, rest = ref.split(":", 1) - try: - obj = __import__(modulename, fromlist=[rest]) - except ImportError as exc: - raise LookupError( - f"Error resolving reference {ref}: could not import module" - ) from exc - - try: - for name in rest.split("."): - obj = getattr(obj, name) - return obj - except Exception: - raise LookupError(f"Error resolving reference {ref}: error looking up object") - - -def maybe_ref(ref): - """ - Returns the object that the given reference points to, if it is indeed a reference. - If it is not a reference, the object is returned as-is. - - """ - if not isinstance(ref, str): - return ref - return ref_to_obj(ref) - - -def check_callable_args(func, args, kwargs): - """ - Ensures that the given callable can be called with the given arguments. - - :type args: tuple - :type kwargs: dict - - """ - pos_kwargs_conflicts = [] # parameters that have a match in both args and kwargs - positional_only_kwargs = [] # positional-only parameters that have a match in kwargs - unsatisfied_args = [] # parameters in signature that don't have a match in args or kwargs - unsatisfied_kwargs = [] # keyword-only arguments that don't have a match in kwargs - unmatched_args = list( - args - ) # args that didn't match any of the parameters in the signature - # kwargs that didn't match any of the parameters in the signature - unmatched_kwargs = list(kwargs) - # indicates if the signature defines *args and **kwargs respectively - has_varargs = has_var_kwargs = False - - try: - sig = signature(func, follow_wrapped=False) - except ValueError: - # signature() doesn't work against every kind of callable - return - - for param in sig.parameters.values(): - if param.kind == param.POSITIONAL_OR_KEYWORD: - if param.name in unmatched_kwargs and unmatched_args: - pos_kwargs_conflicts.append(param.name) - elif unmatched_args: - del unmatched_args[0] - elif param.name in unmatched_kwargs: - unmatched_kwargs.remove(param.name) - elif param.default is param.empty: - unsatisfied_args.append(param.name) - elif param.kind == param.POSITIONAL_ONLY: - if unmatched_args: - del unmatched_args[0] - elif param.name in unmatched_kwargs: - unmatched_kwargs.remove(param.name) - positional_only_kwargs.append(param.name) - elif param.default is param.empty: - unsatisfied_args.append(param.name) - elif param.kind == param.KEYWORD_ONLY: - if param.name in unmatched_kwargs: - unmatched_kwargs.remove(param.name) - elif param.default is param.empty: - unsatisfied_kwargs.append(param.name) - elif param.kind == param.VAR_POSITIONAL: - has_varargs = True - elif param.kind == param.VAR_KEYWORD: - has_var_kwargs = True - - # Make sure there are no conflicts between args and kwargs - if pos_kwargs_conflicts: - raise ValueError( - "The following arguments are supplied in both args and kwargs: {}".format( - ", ".join(pos_kwargs_conflicts) - ) - ) - - # Check if keyword arguments are being fed to positional-only parameters - if positional_only_kwargs: - raise ValueError( - "The following arguments cannot be given as keyword arguments: {}".format( - ", ".join(positional_only_kwargs) - ) - ) - - # Check that the number of positional arguments minus the number of matched kwargs - # matches the argspec - if unsatisfied_args: - raise ValueError( - "The following arguments have not been supplied: {}".format( - ", ".join(unsatisfied_args) - ) - ) - - # Check that all keyword-only arguments have been supplied - if unsatisfied_kwargs: - raise ValueError( - "The following keyword-only arguments have not been supplied in kwargs: " - "{}".format(", ".join(unsatisfied_kwargs)) - ) - - # Check that the callable can accept the given number of positional arguments - if not has_varargs and unmatched_args: - raise ValueError( - f"The list of positional arguments is longer than the target callable can " - f"handle (allowed: {len(args) - len(unmatched_args)}, given in args: " - f"{len(args)})" - ) - - # Check that the callable can accept the given keyword arguments - if not has_var_kwargs and unmatched_kwargs: - raise ValueError( - "The target callable does not accept the following keyword arguments: " - "{}".format(", ".join(unmatched_kwargs)) - ) - - -def iscoroutinefunction_partial(f): - while isinstance(f, partial): - f = f.func - - # The asyncio version of iscoroutinefunction includes testing for @coroutine - # decorations vs. the inspect version which does not. - return iscoroutinefunction(f) - - -def normalize(dt): - return datetime.fromtimestamp(dt.timestamp(), dt.tzinfo) - - -def localize(dt, tzinfo): - if hasattr(tzinfo, "localize"): - return tzinfo.localize(dt) - - return normalize(dt.replace(tzinfo=tzinfo)) diff --git a/venv/lib/python3.12/site-packages/attr/__init__.py b/venv/lib/python3.12/site-packages/attr/__init__.py deleted file mode 100644 index 5c6e065..0000000 --- a/venv/lib/python3.12/site-packages/attr/__init__.py +++ /dev/null @@ -1,104 +0,0 @@ -# SPDX-License-Identifier: MIT - -""" -Classes Without Boilerplate -""" - -from functools import partial -from typing import Callable, Literal, Protocol - -from . import converters, exceptions, filters, setters, validators -from ._cmp import cmp_using -from ._config import get_run_validators, set_run_validators -from ._funcs import asdict, assoc, astuple, has, resolve_types -from ._make import ( - NOTHING, - Attribute, - Converter, - Factory, - _Nothing, - attrib, - attrs, - evolve, - fields, - fields_dict, - make_class, - validate, -) -from ._next_gen import define, field, frozen, mutable -from ._version_info import VersionInfo - - -s = attributes = attrs -ib = attr = attrib -dataclass = partial(attrs, auto_attribs=True) # happy Easter ;) - - -class AttrsInstance(Protocol): - pass - - -NothingType = Literal[_Nothing.NOTHING] - -__all__ = [ - "NOTHING", - "Attribute", - "AttrsInstance", - "Converter", - "Factory", - "NothingType", - "asdict", - "assoc", - "astuple", - "attr", - "attrib", - "attributes", - "attrs", - "cmp_using", - "converters", - "define", - "evolve", - "exceptions", - "field", - "fields", - "fields_dict", - "filters", - "frozen", - "get_run_validators", - "has", - "ib", - "make_class", - "mutable", - "resolve_types", - "s", - "set_run_validators", - "setters", - "validate", - "validators", -] - - -def _make_getattr(mod_name: str) -> Callable: - """ - Create a metadata proxy for packaging information that uses *mod_name* in - its warnings and errors. - """ - - def __getattr__(name: str) -> str: - if name not in ("__version__", "__version_info__"): - msg = f"module {mod_name} has no attribute {name}" - raise AttributeError(msg) - - from importlib.metadata import metadata - - meta = metadata("attrs") - - if name == "__version_info__": - return VersionInfo._from_version_string(meta["version"]) - - return meta["version"] - - return __getattr__ - - -__getattr__ = _make_getattr(__name__) diff --git a/venv/lib/python3.12/site-packages/attr/__init__.pyi b/venv/lib/python3.12/site-packages/attr/__init__.pyi deleted file mode 100644 index 133e501..0000000 --- a/venv/lib/python3.12/site-packages/attr/__init__.pyi +++ /dev/null @@ -1,389 +0,0 @@ -import enum -import sys - -from typing import ( - Any, - Callable, - Generic, - Literal, - Mapping, - Protocol, - Sequence, - TypeVar, - overload, -) - -# `import X as X` is required to make these public -from . import converters as converters -from . import exceptions as exceptions -from . import filters as filters -from . import setters as setters -from . import validators as validators -from ._cmp import cmp_using as cmp_using -from ._typing_compat import AttrsInstance_ -from ._version_info import VersionInfo -from attrs import ( - define as define, - field as field, - mutable as mutable, - frozen as frozen, - _EqOrderType, - _ValidatorType, - _ConverterType, - _ReprArgType, - _OnSetAttrType, - _OnSetAttrArgType, - _FieldTransformer, - _ValidatorArgType, -) - -if sys.version_info >= (3, 10): - from typing import TypeGuard, TypeAlias -else: - from typing_extensions import TypeGuard, TypeAlias - -if sys.version_info >= (3, 11): - from typing import dataclass_transform -else: - from typing_extensions import dataclass_transform - -__version__: str -__version_info__: VersionInfo -__title__: str -__description__: str -__url__: str -__uri__: str -__author__: str -__email__: str -__license__: str -__copyright__: str - -_T = TypeVar("_T") -_C = TypeVar("_C", bound=type) - -_FilterType = Callable[["Attribute[_T]", _T], bool] - -# We subclass this here to keep the protocol's qualified name clean. -class AttrsInstance(AttrsInstance_, Protocol): - pass - -_A = TypeVar("_A", bound=type[AttrsInstance]) - -class _Nothing(enum.Enum): - NOTHING = enum.auto() - -NOTHING = _Nothing.NOTHING -NothingType: TypeAlias = Literal[_Nothing.NOTHING] - -# NOTE: Factory lies about its return type to make this possible: -# `x: List[int] # = Factory(list)` -# Work around mypy issue #4554 in the common case by using an overload. - -@overload -def Factory(factory: Callable[[], _T]) -> _T: ... -@overload -def Factory( - factory: Callable[[Any], _T], - takes_self: Literal[True], -) -> _T: ... -@overload -def Factory( - factory: Callable[[], _T], - takes_self: Literal[False], -) -> _T: ... - -In = TypeVar("In") -Out = TypeVar("Out") - -class Converter(Generic[In, Out]): - @overload - def __init__(self, converter: Callable[[In], Out]) -> None: ... - @overload - def __init__( - self, - converter: Callable[[In, AttrsInstance, Attribute], Out], - *, - takes_self: Literal[True], - takes_field: Literal[True], - ) -> None: ... - @overload - def __init__( - self, - converter: Callable[[In, Attribute], Out], - *, - takes_field: Literal[True], - ) -> None: ... - @overload - def __init__( - self, - converter: Callable[[In, AttrsInstance], Out], - *, - takes_self: Literal[True], - ) -> None: ... - -class Attribute(Generic[_T]): - name: str - default: _T | None - validator: _ValidatorType[_T] | None - repr: _ReprArgType - cmp: _EqOrderType - eq: _EqOrderType - order: _EqOrderType - hash: bool | None - init: bool - converter: Converter | None - metadata: dict[Any, Any] - type: type[_T] | None - kw_only: bool - on_setattr: _OnSetAttrType - alias: str | None - - def evolve(self, **changes: Any) -> "Attribute[Any]": ... - -# NOTE: We had several choices for the annotation to use for type arg: -# 1) Type[_T] -# - Pros: Handles simple cases correctly -# - Cons: Might produce less informative errors in the case of conflicting -# TypeVars e.g. `attr.ib(default='bad', type=int)` -# 2) Callable[..., _T] -# - Pros: Better error messages than #1 for conflicting TypeVars -# - Cons: Terrible error messages for validator checks. -# e.g. attr.ib(type=int, validator=validate_str) -# -> error: Cannot infer function type argument -# 3) type (and do all of the work in the mypy plugin) -# - Pros: Simple here, and we could customize the plugin with our own errors. -# - Cons: Would need to write mypy plugin code to handle all the cases. -# We chose option #1. - -# `attr` lies about its return type to make the following possible: -# attr() -> Any -# attr(8) -> int -# attr(validator=) -> Whatever the callable expects. -# This makes this type of assignments possible: -# x: int = attr(8) -# -# This form catches explicit None or no default but with no other arguments -# returns Any. -@overload -def attrib( - default: None = ..., - validator: None = ..., - repr: _ReprArgType = ..., - cmp: _EqOrderType | None = ..., - hash: bool | None = ..., - init: bool = ..., - metadata: Mapping[Any, Any] | None = ..., - type: None = ..., - converter: None = ..., - factory: None = ..., - kw_only: bool = ..., - eq: _EqOrderType | None = ..., - order: _EqOrderType | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - alias: str | None = ..., -) -> Any: ... - -# This form catches an explicit None or no default and infers the type from the -# other arguments. -@overload -def attrib( - default: None = ..., - validator: _ValidatorArgType[_T] | None = ..., - repr: _ReprArgType = ..., - cmp: _EqOrderType | None = ..., - hash: bool | None = ..., - init: bool = ..., - metadata: Mapping[Any, Any] | None = ..., - type: type[_T] | None = ..., - converter: _ConverterType - | list[_ConverterType] - | tuple[_ConverterType] - | None = ..., - factory: Callable[[], _T] | None = ..., - kw_only: bool = ..., - eq: _EqOrderType | None = ..., - order: _EqOrderType | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - alias: str | None = ..., -) -> _T: ... - -# This form catches an explicit default argument. -@overload -def attrib( - default: _T, - validator: _ValidatorArgType[_T] | None = ..., - repr: _ReprArgType = ..., - cmp: _EqOrderType | None = ..., - hash: bool | None = ..., - init: bool = ..., - metadata: Mapping[Any, Any] | None = ..., - type: type[_T] | None = ..., - converter: _ConverterType - | list[_ConverterType] - | tuple[_ConverterType] - | None = ..., - factory: Callable[[], _T] | None = ..., - kw_only: bool = ..., - eq: _EqOrderType | None = ..., - order: _EqOrderType | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - alias: str | None = ..., -) -> _T: ... - -# This form covers type=non-Type: e.g. forward references (str), Any -@overload -def attrib( - default: _T | None = ..., - validator: _ValidatorArgType[_T] | None = ..., - repr: _ReprArgType = ..., - cmp: _EqOrderType | None = ..., - hash: bool | None = ..., - init: bool = ..., - metadata: Mapping[Any, Any] | None = ..., - type: object = ..., - converter: _ConverterType - | list[_ConverterType] - | tuple[_ConverterType] - | None = ..., - factory: Callable[[], _T] | None = ..., - kw_only: bool = ..., - eq: _EqOrderType | None = ..., - order: _EqOrderType | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - alias: str | None = ..., -) -> Any: ... -@overload -@dataclass_transform(order_default=True, field_specifiers=(attrib, field)) -def attrs( - maybe_cls: _C, - these: dict[str, Any] | None = ..., - repr_ns: str | None = ..., - repr: bool = ..., - cmp: _EqOrderType | None = ..., - hash: bool | None = ..., - init: bool = ..., - slots: bool = ..., - frozen: bool = ..., - weakref_slot: bool = ..., - str: bool = ..., - auto_attribs: bool = ..., - kw_only: bool = ..., - cache_hash: bool = ..., - auto_exc: bool = ..., - eq: _EqOrderType | None = ..., - order: _EqOrderType | None = ..., - auto_detect: bool = ..., - collect_by_mro: bool = ..., - getstate_setstate: bool | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - field_transformer: _FieldTransformer | None = ..., - match_args: bool = ..., - unsafe_hash: bool | None = ..., -) -> _C: ... -@overload -@dataclass_transform(order_default=True, field_specifiers=(attrib, field)) -def attrs( - maybe_cls: None = ..., - these: dict[str, Any] | None = ..., - repr_ns: str | None = ..., - repr: bool = ..., - cmp: _EqOrderType | None = ..., - hash: bool | None = ..., - init: bool = ..., - slots: bool = ..., - frozen: bool = ..., - weakref_slot: bool = ..., - str: bool = ..., - auto_attribs: bool = ..., - kw_only: bool = ..., - cache_hash: bool = ..., - auto_exc: bool = ..., - eq: _EqOrderType | None = ..., - order: _EqOrderType | None = ..., - auto_detect: bool = ..., - collect_by_mro: bool = ..., - getstate_setstate: bool | None = ..., - on_setattr: _OnSetAttrArgType | None = ..., - field_transformer: _FieldTransformer | None = ..., - match_args: bool = ..., - unsafe_hash: bool | None = ..., -) -> Callable[[_C], _C]: ... -def fields(cls: type[AttrsInstance]) -> Any: ... -def fields_dict(cls: type[AttrsInstance]) -> dict[str, Attribute[Any]]: ... -def validate(inst: AttrsInstance) -> None: ... -def resolve_types( - cls: _A, - globalns: dict[str, Any] | None = ..., - localns: dict[str, Any] | None = ..., - attribs: list[Attribute[Any]] | None = ..., - include_extras: bool = ..., -) -> _A: ... - -# TODO: add support for returning a proper attrs class from the mypy plugin -# we use Any instead of _CountingAttr so that e.g. `make_class('Foo', -# [attr.ib()])` is valid -def make_class( - name: str, - attrs: list[str] | tuple[str, ...] | dict[str, Any], - bases: tuple[type, ...] = ..., - class_body: dict[str, Any] | None = ..., - repr_ns: str | None = ..., - repr: bool = ..., - cmp: _EqOrderType | None = ..., - hash: bool | None = ..., - init: bool = ..., - slots: bool = ..., - frozen: bool = ..., - weakref_slot: bool = ..., - str: bool = ..., - auto_attribs: bool = ..., - kw_only: bool = ..., - cache_hash: bool = ..., - auto_exc: bool = ..., - eq: _EqOrderType | None = ..., - order: _EqOrderType | None = ..., - collect_by_mro: bool = ..., - on_setattr: _OnSetAttrArgType | None = ..., - field_transformer: _FieldTransformer | None = ..., -) -> type: ... - -# _funcs -- - -# TODO: add support for returning TypedDict from the mypy plugin -# FIXME: asdict/astuple do not honor their factory args. Waiting on one of -# these: -# https://github.com/python/mypy/issues/4236 -# https://github.com/python/typing/issues/253 -# XXX: remember to fix attrs.asdict/astuple too! -def asdict( - inst: AttrsInstance, - recurse: bool = ..., - filter: _FilterType[Any] | None = ..., - dict_factory: type[Mapping[Any, Any]] = ..., - retain_collection_types: bool = ..., - value_serializer: Callable[[type, Attribute[Any], Any], Any] | None = ..., - tuple_keys: bool | None = ..., -) -> dict[str, Any]: ... - -# TODO: add support for returning NamedTuple from the mypy plugin -def astuple( - inst: AttrsInstance, - recurse: bool = ..., - filter: _FilterType[Any] | None = ..., - tuple_factory: type[Sequence[Any]] = ..., - retain_collection_types: bool = ..., -) -> tuple[Any, ...]: ... -def has(cls: type) -> TypeGuard[type[AttrsInstance]]: ... -def assoc(inst: _T, **changes: Any) -> _T: ... -def evolve(inst: _T, **changes: Any) -> _T: ... - -# _config -- - -def set_run_validators(run: bool) -> None: ... -def get_run_validators() -> bool: ... - -# aliases -- - -s = attributes = attrs -ib = attr = attrib -dataclass = attrs # Technically, partial(attrs, auto_attribs=True) ;) diff --git a/venv/lib/python3.12/site-packages/attr/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/attr/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 9eaa08a553f300cb7c99101aa538a2d1d6d97d30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2611 zcmZWq-ESMm5#Ku=dB-nNCS}RCzRr?mn@&u|RvZ^jARw00$VI9&iP04May|2w(%H9n z?A}qe1Q}%u199Gr0)+)61%jdvE!+a>TmFZ>&{c!Div&&(6h+>YDnW`ob!JbLQg=bl z&dz?#&dl$3e=U~_1ln7#&#dMxLO#dApk?=z-JfWL+$SEP#M3-I(6~-@4fRZr;RZE$ zmS%a5=D=on*}&u$wRoQ9d4U#qkrsK0megD>DDxpYq;xZ=@L@X4579$vYz0+bqcuK4 zNBCiSn2*v?K1RpXTs}C$kJ6+37(K?v={TRD6MT|R@+msSr|C4esm+hm<9vqB@L4*` zPtX%;Um=*|C+SIkik{-9>1kf4b!9IGXZTa}DUGn{TN-_uo@GYb!>ipf z=mj|c0(tVZ3$z8v`h6P>_KSm6s?S=Xf5aYf?0 zK|Ld_MK=iC>j9JID}KU+8%XO%B1)oG6nuea*R!(Fio!J}U^bQocB{oYi64crG~0fl zjAqP|bau@Re9uiH5yLh47VkLS*bi6gx~#6S#1Y-lIangAuQT$giW&u=9%3lE7} z(sbjb+W`kNt8OgIg2hp=#++om!{T~Ln#-?VTe`aZvdq7jB*MSmO_VO8nD&nHp}^gn%xPgvrM2fds~a-sv9=#F znN^EnuZT8SC{5l?FqrW8;*TL*5T>hPJGutrlG{xpC%rmuVIl@?FN0*a1eW`R5vl<` z^mPrQR>nugSHn1Q!xme{ggH*=a^^U);5a<;x&i7X$N5>;4bquEl3hIe+aESpBhH#P zA~)hu$Ts{Y#3k+q2^iN{xYi8(>&?zO)JZtsICs7oLjj!axUHM+3X7ZQYSVH2&`%tv z(ODO#;Y=mwK#392cgQ2d5@!eY`iwY?`slzQ#!x!~LKgR;e+|+mhS7WoMHS}^yhkEv&4Wuf_3+45N{!UX$fd)^YjC~ZQLbopt3uq+uEk~ z2B{kxoq`Q*Q82)t?b@6rF5ttpJ0iNZZnq<0rvZn;w0$TQ!CeHGovgZv-9;du8TfVv z7O2zwB({I&aeft-EYf6C@qLqOs)pg~% zxQusW6n|=`&X@nkUvUMdUc)sAIPh<$RLV}jJG(=m`~B?K*zHV^(pcXZRmU&azb8${ z@uC(aGvDrpK*UiH3xtx)0e?d*1!7Aemxvsi_pq)It{|;|sxWFe@HtU@0H?wisqL?% zSVut1oP!s{Pf&~EffV^!^_cGv)IK)}tVu;bX~`&#IbasWAU58ScS3e6frN%B87T@< zoPz`-%lmbrfQ$ts=24tOf!}xW3<#M=0#Kinlv0~$gh0WE*m1-nuES7^ItomRK;B7d z7K`dz>xC2t3j))DaE<>AVke_%+Lt+9GrqQnHuab^9+Jkt$mI{oY>;2$SsoE#ip5D9mk5cX4OMfu_UOL;$ zf0fg;{Jo{G2y{CZsf^xR{b=;$L--Ay>J|TO%og>Yx$}xPqK$1W?hxqSTiV6$%Lb`T OY%OgM&Hb{dp7URP#jTtG diff --git a/venv/lib/python3.12/site-packages/attr/__pycache__/_cmp.cpython-312.pyc b/venv/lib/python3.12/site-packages/attr/__pycache__/_cmp.cpython-312.pyc deleted file mode 100644 index 9fbec1df321edf95c2318fe681ba906374b47fa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5075 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 B_D%o* diff --git a/venv/lib/python3.12/site-packages/attr/__pycache__/_compat.cpython-312.pyc b/venv/lib/python3.12/site-packages/attr/__pycache__/_compat.cpython-312.pyc deleted file mode 100644 index fab77d630da86660c0b25b13faed179a17256400..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3501 zcmcIm&2QVt6(5rNpk!H;EJaGP-h{jPaOlQ%>;!JoE*1@vZDJrb+;w*WtL+kuII^fv zq;^OpmZ4zXBETjKw2pxS&Y=Z-Op!|uyMIM57JQJ)>;eI{KoOvaBtC4BQ{N0lNj7Yw zmk!9`n|W`BGw=Q0$KMAB;|SW9AHQFI4Al2@5VTN-*m=q!w2pM7b0#YIU#`HhF<;=> zS11VZ<;_qvTnJYqg$PIG1T$I{3nGVjgt^L4uyODEtV8OdJLeE8#4%sV^|%40b9(qV z(j#|%12Tz2Wui=G@K70%$s`Yzi7^@JP?zDqU8Os8ESLP3H_0Tz?+UuzWr)ciIi?%9>@_uI3uH z<;W$Q$fHHm86EG6c#^92iKr@QLsV7WD7vcZ35(bTO$e~Yp@)^<-kK=eRXkC#HM?qC zc-fe^20PbH7bfpw>+XbU+@7d4+_G(59G{$;a10lZ)wJRrZ4o;Yn(LAYwP;ssnmb-= zcqtWr(EopO1pYD%uS2^P^h!jj%xd#dvn`!$Nhdeu$-hl)Nz2>OT~hCbSeC{Zt~UhV4Wqa~MUMb{?FpD`76#+qXM?eZJw6mlaS5#&;6vR2|xBNC^PreAsiHPAh@ zBrKqNoWjj2VJ~V}P7N1bF9yf6G`JEb$6yC9{;6ix@kfN%#Ebn3w82OKOUS`y$rA%b zIP@s8OtN$l0Licn0Mhci`{{T*VE+h&olDSx!FeGz{B8b3JAbZ~Klk+LR(|T?^*`MF z&$p@Lf1cTt&b~ohYPs4&IvQd%^cZ34gm2tJ^HhK|b zmQWKbqK}J^X*jMIuW3Z9Viyy~i`=D1alCjhtdMtLg%_I(guF1@6XNAb%80Pl&MxR= zX<%T7QW;mJ9=NRR3#0u+Ct+jfGwA#nl3iW;YH2%@|7ZHhV|~56R&M8%R!(W>F0^tN zwsKQj>5C5|{}@O=En$gaUwsNCikF=+*wWhAMr)FC4 z6C*FA452xA7vQLJD3o@dLU$10$j=V|S=W(aai_Um;8nVg9q{%C6u=|*zwgh$!Y}`H zKd|^g&Bx4PkWj)t8q)rPzKGs2{d_l?(BQ0a%eN+(qH^SWksI8n%rb`hpys_K}w>!>Pu4-P;^X*UktUl9WZyB0Z0XK8l| zUWcOn0eZ~~VG)iylz$vunRycmg@@lH2Ey5$JtfMZeCGi>Br{^0}+Oc3kpXCCF(kJ_I7SH3zdg!f?lD6@jXO ztpYWK;TKeMHZc|r3n~fDDBv>?r)02+XE6)i*n3IlUOq~7iyU*B+-WB#oRK%noi3%sc4%fq%T_SjBB@x zgnA;OYVaa}DiHBcdBm?!RHIrmF%5XEK!Or)VQ#@oK-zX-2gqF|+Z&i$P%o-i)VW)q z%zFton7puSG`VXuwQF>7*XWWz8tg?zsFpki{oa(rY9Iz0FKpV7SiJ;j*t0bg#-BN}YVzSpDMB7h96NlGura JxD->$e*wY!Cl~+# diff --git a/venv/lib/python3.12/site-packages/attr/__pycache__/_config.cpython-312.pyc b/venv/lib/python3.12/site-packages/attr/__pycache__/_config.cpython-312.pyc deleted file mode 100644 index c6fcbbac3a05c6a4ad0ed679a06cabb901cec934..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1107 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