From 68f858f730e079ff7ae7e6d5a2f54af76a5d1043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=B2?= Date: Tue, 22 Jul 2025 16:33:14 +0500 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=B8=D0=B7=D0=BD=D0=B5=D1=81=20=D0=BB?= =?UTF-8?q?=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0=20=D0=B3=D0=BE=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D1=8F,=20=D0=BD=D1=83=D0=B6=D0=BD=D0=BE=20=D0=BA=D0=B0?= =?UTF-8?q?=D0=BA=20=D1=82=D0=BE=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA?= =?UTF-8?q?=20title?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .venv/bin/Activate.ps1 | 247 + .venv/bin/activate | 70 + .venv/bin/activate.csh | 27 + .venv/bin/activate.fish | 69 + .venv/bin/normalizer | 8 + .venv/bin/pip | 8 + .venv/bin/pip3 | 8 + .venv/bin/pip3.12 | 8 + .venv/bin/python | 1 + .venv/bin/python3 | 1 + .venv/bin/python3.12 | 1 + .../typing_extensions.cpython-312.pyc | Bin 0 -> 162217 bytes .../beautifulsoup4-4.13.4.dist-info/INSTALLER | 1 + .../beautifulsoup4-4.13.4.dist-info/METADATA | 123 + .../beautifulsoup4-4.13.4.dist-info/RECORD | 90 + .../beautifulsoup4-4.13.4.dist-info/REQUESTED | 0 .../beautifulsoup4-4.13.4.dist-info/WHEEL | 4 + .../licenses/AUTHORS | 49 + .../licenses/LICENSE | 31 + .../python3.12/site-packages/bs4/__init__.py | 1170 +++ .../bs4/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 39654 bytes .../__pycache__/_deprecation.cpython-312.pyc | Bin 0 -> 3770 bytes .../bs4/__pycache__/_typing.cpython-312.pyc | Bin 0 -> 3572 bytes .../bs4/__pycache__/_warnings.cpython-312.pyc | Bin 0 -> 5623 bytes .../bs4/__pycache__/css.cpython-312.pyc | Bin 0 -> 14449 bytes .../bs4/__pycache__/dammit.cpython-312.pyc | Bin 0 -> 46504 bytes .../bs4/__pycache__/diagnose.cpython-312.pyc | Bin 0 -> 12678 bytes .../bs4/__pycache__/element.cpython-312.pyc | Bin 0 -> 108010 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 1786 bytes .../bs4/__pycache__/filter.cpython-312.pyc | Bin 0 -> 28679 bytes .../bs4/__pycache__/formatter.cpython-312.pyc | Bin 0 -> 10554 bytes .../site-packages/bs4/_deprecation.py | 80 + .../python3.12/site-packages/bs4/_typing.py | 196 + .../python3.12/site-packages/bs4/_warnings.py | 98 + .../site-packages/bs4/builder/__init__.py | 848 ++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 27488 bytes .../__pycache__/_html5lib.cpython-312.pyc | Bin 0 -> 23163 bytes .../__pycache__/_htmlparser.cpython-312.pyc | Bin 0 -> 14659 bytes .../builder/__pycache__/_lxml.cpython-312.pyc | Bin 0 -> 18508 bytes .../site-packages/bs4/builder/_html5lib.py | 594 ++ .../site-packages/bs4/builder/_htmlparser.py | 474 + .../site-packages/bs4/builder/_lxml.py | 491 + .venv/lib/python3.12/site-packages/bs4/css.py | 338 + .../python3.12/site-packages/bs4/dammit.py | 1408 +++ .../python3.12/site-packages/bs4/diagnose.py | 268 + .../python3.12/site-packages/bs4/element.py | 2894 ++++++ .../site-packages/bs4/exceptions.py | 28 + .../python3.12/site-packages/bs4/filter.py | 759 ++ .../python3.12/site-packages/bs4/formatter.py | 276 + .../lib/python3.12/site-packages/bs4/py.typed | 0 .../site-packages/bs4/tests/__init__.py | 1318 +++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 68284 bytes .../__pycache__/test_builder.cpython-312.pyc | Bin 0 -> 1600 bytes .../test_builder_registry.cpython-312.pyc | Bin 0 -> 7624 bytes .../__pycache__/test_css.cpython-312.pyc | Bin 0 -> 28935 bytes .../__pycache__/test_dammit.cpython-312.pyc | Bin 0 -> 19812 bytes .../__pycache__/test_element.cpython-312.pyc | Bin 0 -> 6057 bytes .../__pycache__/test_filter.cpython-312.pyc | Bin 0 -> 32637 bytes .../test_formatter.cpython-312.pyc | Bin 0 -> 7826 bytes .../__pycache__/test_fuzz.cpython-312.pyc | Bin 0 -> 7065 bytes .../__pycache__/test_html5lib.cpython-312.pyc | Bin 0 -> 11988 bytes .../test_htmlparser.cpython-312.pyc | Bin 0 -> 7311 bytes .../__pycache__/test_lxml.cpython-312.pyc | Bin 0 -> 8123 bytes .../test_navigablestring.cpython-312.pyc | Bin 0 -> 8555 bytes .../test_pageelement.cpython-312.pyc | Bin 0 -> 22934 bytes .../__pycache__/test_soup.cpython-312.pyc | Bin 0 -> 31525 bytes .../__pycache__/test_tag.cpython-312.pyc | Bin 0 -> 14145 bytes .../__pycache__/test_tree.cpython-312.pyc | Bin 0 -> 93985 bytes ...mized-bs4_fuzzer-4670634698080256.testcase | 1 + ...mized-bs4_fuzzer-4818336571064320.testcase | 1 + ...mized-bs4_fuzzer-4999465949331456.testcase | 1 + ...mized-bs4_fuzzer-5000587759190016.testcase | Bin 0 -> 15347 bytes ...mized-bs4_fuzzer-5167584867909632.testcase | Bin 0 -> 19469 bytes ...mized-bs4_fuzzer-5270998950477824.testcase | Bin 0 -> 12 bytes ...mized-bs4_fuzzer-5375146639360000.testcase | 1 + ...mized-bs4_fuzzer-5492400320282624.testcase | Bin 0 -> 11502 bytes ...mized-bs4_fuzzer-5703933063462912.testcase | 2 + ...mized-bs4_fuzzer-5843991618256896.testcase | 1 + ...mized-bs4_fuzzer-5984173902397440.testcase | Bin 0 -> 51495 bytes ...mized-bs4_fuzzer-6124268085182464.testcase | 1 + ...mized-bs4_fuzzer-6241471367348224.testcase | 1 + ...mized-bs4_fuzzer-6306874195312640.testcase | 1 + ...mized-bs4_fuzzer-6450958476902400.testcase | Bin 0 -> 3546 bytes ...mized-bs4_fuzzer-6600557255327744.testcase | Bin 0 -> 124 bytes ...0c8ed8bcd0785b67000fcd5dea1d33f08.testcase | Bin 0 -> 2607 bytes ...a2b26f13537b68d3794b0478a4090ee4a.testcase | Bin 0 -> 103 bytes .../site-packages/bs4/tests/test_builder.py | 28 + .../bs4/tests/test_builder_registry.py | 139 + .../site-packages/bs4/tests/test_css.py | 536 + .../site-packages/bs4/tests/test_dammit.py | 433 + .../site-packages/bs4/tests/test_element.py | 138 + .../site-packages/bs4/tests/test_filter.py | 683 ++ .../site-packages/bs4/tests/test_formatter.py | 170 + .../site-packages/bs4/tests/test_fuzz.py | 181 + .../site-packages/bs4/tests/test_html5lib.py | 264 + .../bs4/tests/test_htmlparser.py | 161 + .../site-packages/bs4/tests/test_lxml.py | 196 + .../bs4/tests/test_navigablestring.py | 155 + .../bs4/tests/test_pageelement.py | 437 + .../site-packages/bs4/tests/test_soup.py | 602 ++ .../site-packages/bs4/tests/test_tag.py | 241 + .../site-packages/bs4/tests/test_tree.py | 1456 +++ .../certifi-2025.7.14.dist-info/INSTALLER | 1 + .../certifi-2025.7.14.dist-info/METADATA | 77 + .../certifi-2025.7.14.dist-info/RECORD | 14 + .../certifi-2025.7.14.dist-info/WHEEL | 5 + .../licenses/LICENSE | 20 + .../certifi-2025.7.14.dist-info/top_level.txt | 1 + .../site-packages/certifi/__init__.py | 4 + .../site-packages/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 333 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 648 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 0 -> 2080 bytes .../site-packages/certifi/cacert.pem | 4778 +++++++++ .../python3.12/site-packages/certifi/core.py | 83 + .../python3.12/site-packages/certifi/py.typed | 0 .../INSTALLER | 1 + .../METADATA | 731 ++ .../charset_normalizer-3.4.2.dist-info/RECORD | 35 + .../charset_normalizer-3.4.2.dist-info/WHEEL | 6 + .../entry_points.txt | 2 + .../licenses/LICENSE | 21 + .../top_level.txt | 1 + .../charset_normalizer/__init__.py | 48 + .../charset_normalizer/__main__.py | 6 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1799 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 374 bytes .../__pycache__/api.cpython-312.pyc | Bin 0 -> 18188 bytes .../__pycache__/cd.cpython-312.pyc | Bin 0 -> 13315 bytes .../__pycache__/constant.cpython-312.pyc | Bin 0 -> 40829 bytes .../__pycache__/legacy.cpython-312.pyc | Bin 0 -> 2799 bytes .../__pycache__/md.cpython-312.pyc | Bin 0 -> 24366 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 17146 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 13775 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 401 bytes .../site-packages/charset_normalizer/api.py | 668 ++ .../site-packages/charset_normalizer/cd.py | 395 + .../charset_normalizer/cli/__init__.py | 8 + .../charset_normalizer/cli/__main__.py | 381 + .../cli/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 362 bytes .../cli/__pycache__/__main__.cpython-312.pyc | Bin 0 -> 14423 bytes .../charset_normalizer/constant.py | 2015 ++++ .../charset_normalizer/legacy.py | 64 + .../md.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 16120 bytes .../site-packages/charset_normalizer/md.py | 635 ++ .../md__mypyc.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 280856 bytes .../charset_normalizer/models.py | 360 + .../site-packages/charset_normalizer/py.typed | 0 .../site-packages/charset_normalizer/utils.py | 414 + .../charset_normalizer/version.py | 8 + .../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 0 -> 901 bytes .../idna/__pycache__/codec.cpython-312.pyc | Bin 0 -> 5001 bytes .../idna/__pycache__/compat.cpython-312.pyc | Bin 0 -> 905 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 0 -> 16191 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 0 -> 99491 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 0 -> 2653 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 0 -> 232 bytes .../__pycache__/uts46data.cpython-312.pyc | Bin 0 -> 158861 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 +++++++++++++++++ .../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 | 1005 ++ .../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 0 -> 711 bytes .../pip/__pycache__/__main__.cpython-312.pyc | Bin 0 -> 867 bytes .../__pip-runner__.cpython-312.pyc | Bin 0 -> 2230 bytes .../site-packages/pip/_internal/__init__.py | 18 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 813 bytes .../__pycache__/build_env.cpython-312.pyc | Bin 0 -> 14320 bytes .../__pycache__/cache.cpython-312.pyc | Bin 0 -> 12691 bytes .../__pycache__/configuration.cpython-312.pyc | Bin 0 -> 17692 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 33310 bytes .../__pycache__/main.cpython-312.pyc | Bin 0 -> 696 bytes .../__pycache__/pyproject.cpython-312.pyc | Bin 0 -> 4997 bytes .../self_outdated_check.cpython-312.pyc | Bin 0 -> 10578 bytes .../__pycache__/wheel_builder.cpython-312.pyc | Bin 0 -> 13675 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 0 -> 304 bytes .../autocompletion.cpython-312.pyc | Bin 0 -> 8491 bytes .../__pycache__/base_command.cpython-312.pyc | Bin 0 -> 10481 bytes .../__pycache__/cmdoptions.cpython-312.pyc | Bin 0 -> 30400 bytes .../command_context.cpython-312.pyc | Bin 0 -> 1807 bytes .../cli/__pycache__/main.cpython-312.pyc | Bin 0 -> 2324 bytes .../__pycache__/main_parser.cpython-312.pyc | Bin 0 -> 4931 bytes .../cli/__pycache__/parser.cpython-312.pyc | Bin 0 -> 15048 bytes .../__pycache__/progress_bars.cpython-312.pyc | Bin 0 -> 2646 bytes .../__pycache__/req_command.cpython-312.pyc | Bin 0 -> 18878 bytes .../cli/__pycache__/spinners.cpython-312.pyc | Bin 0 -> 7866 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 0 -> 401 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 0 -> 4028 bytes .../__pycache__/cache.cpython-312.pyc | Bin 0 -> 9737 bytes .../__pycache__/check.cpython-312.pyc | Bin 0 -> 2116 bytes .../__pycache__/completion.cpython-312.pyc | Bin 0 -> 5218 bytes .../__pycache__/configuration.cpython-312.pyc | Bin 0 -> 13238 bytes .../__pycache__/debug.cpython-312.pyc | Bin 0 -> 10187 bytes .../__pycache__/download.cpython-312.pyc | Bin 0 -> 7615 bytes .../__pycache__/freeze.cpython-312.pyc | Bin 0 -> 4442 bytes .../commands/__pycache__/hash.cpython-312.pyc | Bin 0 -> 3009 bytes .../commands/__pycache__/help.cpython-312.pyc | Bin 0 -> 1699 bytes .../__pycache__/index.cpython-312.pyc | Bin 0 -> 6746 bytes .../__pycache__/inspect.cpython-312.pyc | Bin 0 -> 4001 bytes .../__pycache__/install.cpython-312.pyc | Bin 0 -> 28939 bytes .../commands/__pycache__/list.cpython-312.pyc | Bin 0 -> 15682 bytes .../__pycache__/search.cpython-312.pyc | Bin 0 -> 7647 bytes .../commands/__pycache__/show.cpython-312.pyc | Bin 0 -> 9754 bytes .../__pycache__/uninstall.cpython-312.pyc | Bin 0 -> 4752 bytes .../__pycache__/wheel.cpython-312.pyc | Bin 0 -> 8982 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 | 109 + .../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 | 370 + .../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 0 -> 967 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 2888 bytes .../__pycache__/installed.cpython-312.pyc | Bin 0 -> 1726 bytes .../__pycache__/sdist.cpython-312.pyc | Bin 0 -> 8514 bytes .../__pycache__/wheel.cpython-312.pyc | Bin 0 -> 2274 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 0 -> 258 bytes .../__pycache__/collector.cpython-312.pyc | Bin 0 -> 21912 bytes .../package_finder.cpython-312.pyc | Bin 0 -> 40761 bytes .../index/__pycache__/sources.cpython-312.pyc | Bin 0 -> 12630 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 0 -> 16802 bytes .../__pycache__/_distutils.cpython-312.pyc | Bin 0 -> 6882 bytes .../__pycache__/_sysconfig.cpython-312.pyc | Bin 0 -> 8037 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 3807 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 0 -> 5908 bytes .../__pycache__/_json.cpython-312.pyc | Bin 0 -> 2901 bytes .../metadata/__pycache__/base.cpython-312.pyc | Bin 0 -> 35738 bytes .../__pycache__/pkg_resources.cpython-312.pyc | Bin 0 -> 15816 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 0 -> 384 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 0 -> 3359 bytes .../__pycache__/_dists.cpython-312.pyc | Bin 0 -> 13451 bytes .../__pycache__/_envs.cpython-312.pyc | Bin 0 -> 11206 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 0 -> 292 bytes .../__pycache__/candidate.cpython-312.pyc | Bin 0 -> 1931 bytes .../__pycache__/direct_url.cpython-312.pyc | Bin 0 -> 11225 bytes .../format_control.cpython-312.pyc | Bin 0 -> 4253 bytes .../models/__pycache__/index.cpython-312.pyc | Bin 0 -> 1720 bytes .../installation_report.cpython-312.pyc | Bin 0 -> 2298 bytes .../models/__pycache__/link.cpython-312.pyc | Bin 0 -> 26028 bytes .../models/__pycache__/scheme.cpython-312.pyc | Bin 0 -> 1195 bytes .../__pycache__/search_scope.cpython-312.pyc | Bin 0 -> 5114 bytes .../selection_prefs.cpython-312.pyc | Bin 0 -> 1877 bytes .../__pycache__/target_python.cpython-312.pyc | Bin 0 -> 4980 bytes .../models/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 5806 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 0 -> 280 bytes .../network/__pycache__/auth.cpython-312.pyc | Bin 0 -> 22022 bytes .../network/__pycache__/cache.cpython-312.pyc | Bin 0 -> 6544 bytes .../__pycache__/download.cpython-312.pyc | Bin 0 -> 8579 bytes .../__pycache__/lazy_wheel.cpython-312.pyc | Bin 0 -> 11689 bytes .../__pycache__/session.cpython-312.pyc | Bin 0 -> 18800 bytes .../network/__pycache__/utils.cpython-312.pyc | Bin 0 -> 2279 bytes .../__pycache__/xmlrpc.cpython-312.pyc | Bin 0 -> 2975 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 0 -> 223 bytes .../__pycache__/check.cpython-312.pyc | Bin 0 -> 7605 bytes .../__pycache__/freeze.cpython-312.pyc | Bin 0 -> 10143 bytes .../__pycache__/prepare.cpython-312.pyc | Bin 0 -> 25773 bytes .../_internal/operations/build/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 229 bytes .../__pycache__/build_tracker.cpython-312.pyc | Bin 0 -> 7849 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 0 -> 1906 bytes .../metadata_editable.cpython-312.pyc | Bin 0 -> 1940 bytes .../metadata_legacy.cpython-312.pyc | Bin 0 -> 3091 bytes .../build/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 1710 bytes .../wheel_editable.cpython-312.pyc | Bin 0 -> 2051 bytes .../__pycache__/wheel_legacy.cpython-312.pyc | Bin 0 -> 3955 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 0 -> 292 bytes .../editable_legacy.cpython-312.pyc | Bin 0 -> 1843 bytes .../install/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 33885 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 0 -> 3769 bytes .../__pycache__/constructors.cpython-312.pyc | Bin 0 -> 21608 bytes .../req/__pycache__/req_file.cpython-312.pyc | Bin 0 -> 21487 bytes .../__pycache__/req_install.cpython-312.pyc | Bin 0 -> 38440 bytes .../req/__pycache__/req_set.cpython-312.pyc | Bin 0 -> 7244 bytes .../__pycache__/req_uninstall.cpython-312.pyc | Bin 0 -> 33003 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 0 -> 223 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 1211 bytes .../pip/_internal/resolution/base.py | 20 + .../_internal/resolution/legacy/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 230 bytes .../__pycache__/resolver.cpython-312.pyc | Bin 0 -> 22465 bytes .../_internal/resolution/legacy/resolver.py | 598 ++ .../resolution/resolvelib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 234 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 8363 bytes .../__pycache__/candidates.cpython-312.pyc | Bin 0 -> 30424 bytes .../__pycache__/factory.cpython-312.pyc | Bin 0 -> 32140 bytes .../found_candidates.cpython-312.pyc | Bin 0 -> 6234 bytes .../__pycache__/provider.cpython-312.pyc | Bin 0 -> 10404 bytes .../__pycache__/reporter.cpython-312.pyc | Bin 0 -> 4961 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 0 -> 11455 bytes .../__pycache__/resolver.cpython-312.pyc | Bin 0 -> 12377 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 0 -> 218 bytes .../__pycache__/_jaraco_text.cpython-312.pyc | Bin 0 -> 4559 bytes .../utils/__pycache__/_log.cpython-312.pyc | Bin 0 -> 1889 bytes .../utils/__pycache__/appdirs.cpython-312.pyc | Bin 0 -> 2433 bytes .../utils/__pycache__/compat.cpython-312.pyc | Bin 0 -> 2236 bytes .../compatibility_tags.cpython-312.pyc | Bin 0 -> 5584 bytes .../__pycache__/datetime.cpython-312.pyc | Bin 0 -> 707 bytes .../__pycache__/deprecation.cpython-312.pyc | Bin 0 -> 4209 bytes .../direct_url_helpers.cpython-312.pyc | Bin 0 -> 3586 bytes .../__pycache__/egg_link.cpython-312.pyc | Bin 0 -> 3249 bytes .../__pycache__/encoding.cpython-312.pyc | Bin 0 -> 2181 bytes .../__pycache__/entrypoints.cpython-312.pyc | Bin 0 -> 4016 bytes .../__pycache__/filesystem.cpython-312.pyc | Bin 0 -> 7481 bytes .../__pycache__/filetypes.cpython-312.pyc | Bin 0 -> 1187 bytes .../utils/__pycache__/glibc.cpython-312.pyc | Bin 0 -> 2365 bytes .../utils/__pycache__/hashes.cpython-312.pyc | Bin 0 -> 7577 bytes .../utils/__pycache__/logging.cpython-312.pyc | Bin 0 -> 13580 bytes .../utils/__pycache__/misc.cpython-312.pyc | Bin 0 -> 34144 bytes .../utils/__pycache__/models.cpython-312.pyc | Bin 0 -> 2735 bytes .../__pycache__/packaging.cpython-312.pyc | Bin 0 -> 2606 bytes .../setuptools_build.cpython-312.pyc | Bin 0 -> 4573 bytes .../__pycache__/subprocess.cpython-312.pyc | Bin 0 -> 8741 bytes .../__pycache__/temp_dir.cpython-312.pyc | Bin 0 -> 12085 bytes .../__pycache__/unpacking.cpython-312.pyc | Bin 0 -> 11131 bytes .../utils/__pycache__/urls.cpython-312.pyc | Bin 0 -> 2428 bytes .../__pycache__/virtualenv.cpython-312.pyc | Bin 0 -> 4503 bytes .../utils/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 5949 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 0 -> 557 bytes .../vcs/__pycache__/bazaar.cpython-312.pyc | Bin 0 -> 5049 bytes .../vcs/__pycache__/git.cpython-312.pyc | Bin 0 -> 19018 bytes .../vcs/__pycache__/mercurial.cpython-312.pyc | Bin 0 -> 7638 bytes .../__pycache__/subversion.cpython-312.pyc | Bin 0 -> 12510 bytes .../versioncontrol.cpython-312.pyc | Bin 0 -> 29036 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 0 -> 4719 bytes .../_vendor/__pycache__/six.cpython-312.pyc | Bin 0 -> 41296 bytes .../typing_extensions.cpython-312.pyc | Bin 0 -> 122076 bytes .../pip/_vendor/cachecontrol/__init__.py | 28 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 929 bytes .../__pycache__/_cmd.cpython-312.pyc | Bin 0 -> 2673 bytes .../__pycache__/adapter.cpython-312.pyc | Bin 0 -> 6491 bytes .../__pycache__/cache.cpython-312.pyc | Bin 0 -> 3836 bytes .../__pycache__/controller.cpython-312.pyc | Bin 0 -> 16194 bytes .../__pycache__/filewrapper.cpython-312.pyc | Bin 0 -> 4374 bytes .../__pycache__/heuristics.cpython-312.pyc | Bin 0 -> 6721 bytes .../__pycache__/serialize.cpython-312.pyc | Bin 0 -> 6432 bytes .../__pycache__/wrapper.cpython-312.pyc | Bin 0 -> 1701 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 0 -> 462 bytes .../__pycache__/file_cache.cpython-312.pyc | Bin 0 -> 7737 bytes .../__pycache__/redis_cache.cpython-312.pyc | Bin 0 -> 2765 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/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 0 -> 345 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 672 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 0 -> 3354 bytes .../pip/_vendor/certifi/cacert.pem | 4635 +++++++++ .../site-packages/pip/_vendor/certifi/core.py | 119 + .../pip/_vendor/chardet/__init__.py | 115 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 4595 bytes .../__pycache__/big5freq.cpython-312.pyc | Bin 0 -> 27226 bytes .../__pycache__/big5prober.cpython-312.pyc | Bin 0 -> 1414 bytes .../chardistribution.cpython-312.pyc | Bin 0 -> 9665 bytes .../charsetgroupprober.cpython-312.pyc | Bin 0 -> 4149 bytes .../__pycache__/charsetprober.cpython-312.pyc | Bin 0 -> 5045 bytes .../codingstatemachine.cpython-312.pyc | Bin 0 -> 3905 bytes .../codingstatemachinedict.cpython-312.pyc | Bin 0 -> 816 bytes .../__pycache__/cp949prober.cpython-312.pyc | Bin 0 -> 1423 bytes .../chardet/__pycache__/enums.cpython-312.pyc | Bin 0 -> 3023 bytes .../__pycache__/escprober.cpython-312.pyc | Bin 0 -> 4593 bytes .../chardet/__pycache__/escsm.cpython-312.pyc | Bin 0 -> 15337 bytes .../__pycache__/eucjpprober.cpython-312.pyc | Bin 0 -> 4410 bytes .../__pycache__/euckrfreq.cpython-312.pyc | Bin 0 -> 12109 bytes .../__pycache__/euckrprober.cpython-312.pyc | Bin 0 -> 1417 bytes .../__pycache__/euctwfreq.cpython-312.pyc | Bin 0 -> 27231 bytes .../__pycache__/euctwprober.cpython-312.pyc | Bin 0 -> 1417 bytes .../__pycache__/gb2312freq.cpython-312.pyc | Bin 0 -> 19153 bytes .../__pycache__/gb2312prober.cpython-312.pyc | Bin 0 -> 1430 bytes .../__pycache__/hebrewprober.cpython-312.pyc | Bin 0 -> 5849 bytes .../__pycache__/jisfreq.cpython-312.pyc | Bin 0 -> 22182 bytes .../__pycache__/johabfreq.cpython-312.pyc | Bin 0 -> 83030 bytes .../__pycache__/johabprober.cpython-312.pyc | Bin 0 -> 1421 bytes .../__pycache__/jpcntx.cpython-312.pyc | Bin 0 -> 39576 bytes .../langbulgarianmodel.cpython-312.pyc | Bin 0 -> 83149 bytes .../langgreekmodel.cpython-312.pyc | Bin 0 -> 77015 bytes .../langhebrewmodel.cpython-312.pyc | Bin 0 -> 77526 bytes .../langhungarianmodel.cpython-312.pyc | Bin 0 -> 83103 bytes .../langrussianmodel.cpython-312.pyc | Bin 0 -> 105278 bytes .../__pycache__/langthaimodel.cpython-312.pyc | Bin 0 -> 77704 bytes .../langturkishmodel.cpython-312.pyc | Bin 0 -> 77543 bytes .../__pycache__/latin1prober.cpython-312.pyc | Bin 0 -> 7029 bytes .../macromanprober.cpython-312.pyc | Bin 0 -> 7209 bytes .../mbcharsetprober.cpython-312.pyc | Bin 0 -> 3930 bytes .../mbcsgroupprober.cpython-312.pyc | Bin 0 -> 1615 bytes .../__pycache__/mbcssm.cpython-312.pyc | Bin 0 -> 38672 bytes .../__pycache__/resultdict.cpython-312.pyc | Bin 0 -> 659 bytes .../sbcharsetprober.cpython-312.pyc | Bin 0 -> 6414 bytes .../sbcsgroupprober.cpython-312.pyc | Bin 0 -> 2384 bytes .../__pycache__/sjisprober.cpython-312.pyc | Bin 0 -> 4522 bytes .../universaldetector.cpython-312.pyc | Bin 0 -> 12296 bytes .../__pycache__/utf1632prober.cpython-312.pyc | Bin 0 -> 10006 bytes .../__pycache__/utf8prober.cpython-312.pyc | Bin 0 -> 3202 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 515 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 0 -> 222 bytes .../__pycache__/chardetect.cpython-312.pyc | Bin 0 -> 4039 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 0 -> 227 bytes .../__pycache__/languages.cpython-312.pyc | Bin 0 -> 9782 bytes .../pip/_vendor/chardet/metadata/languages.py | 352 + .../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 0 -> 519 bytes .../colorama/__pycache__/ansi.cpython-312.pyc | Bin 0 -> 3977 bytes .../__pycache__/ansitowin32.cpython-312.pyc | Bin 0 -> 16448 bytes .../__pycache__/initialise.cpython-312.pyc | Bin 0 -> 3577 bytes .../__pycache__/win32.cpython-312.pyc | Bin 0 -> 8153 bytes .../__pycache__/winterm.cpython-312.pyc | Bin 0 -> 9115 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 0 -> 225 bytes .../__pycache__/ansi_test.cpython-312.pyc | Bin 0 -> 5494 bytes .../ansitowin32_test.cpython-312.pyc | Bin 0 -> 18130 bytes .../initialise_test.cpython-312.pyc | Bin 0 -> 11775 bytes .../__pycache__/isatty_test.cpython-312.pyc | Bin 0 -> 4931 bytes .../tests/__pycache__/utils.cpython-312.pyc | Bin 0 -> 2515 bytes .../__pycache__/winterm_test.cpython-312.pyc | Bin 0 -> 6639 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 0 -> 1296 bytes .../__pycache__/compat.cpython-312.pyc | Bin 0 -> 45632 bytes .../__pycache__/database.cpython-312.pyc | Bin 0 -> 66054 bytes .../distlib/__pycache__/index.cpython-312.pyc | Bin 0 -> 24393 bytes .../__pycache__/locators.cpython-312.pyc | Bin 0 -> 60185 bytes .../__pycache__/manifest.cpython-312.pyc | Bin 0 -> 15152 bytes .../__pycache__/markers.cpython-312.pyc | Bin 0 -> 7709 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 0 -> 41826 bytes .../__pycache__/resources.cpython-312.pyc | Bin 0 -> 17352 bytes .../__pycache__/scripts.cpython-312.pyc | Bin 0 -> 19607 bytes .../distlib/__pycache__/util.cpython-312.pyc | Bin 0 -> 88283 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 30393 bytes .../distlib/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 51888 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/util.py | 2025 ++++ .../pip/_vendor/distlib/version.py | 751 ++ .../pip/_vendor/distlib/wheel.py | 1099 +++ .../pip/_vendor/distro/__init__.py | 54 + .../pip/_vendor/distro/__main__.py | 4 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 987 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 319 bytes .../distro/__pycache__/distro.cpython-312.pyc | Bin 0 -> 53781 bytes .../pip/_vendor/distro/distro.py | 1399 +++ .../pip/_vendor/idna/__init__.py | 44 + .../idna/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 908 bytes .../idna/__pycache__/codec.cpython-312.pyc | Bin 0 -> 4660 bytes .../idna/__pycache__/compat.cpython-312.pyc | Bin 0 -> 914 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 0 -> 16309 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 0 -> 38409 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 0 -> 2665 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 0 -> 243 bytes .../__pycache__/uts46data.cpython-312.pyc | Bin 0 -> 158897 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 + .../pip/_vendor/idna/uts46data.py | 8600 ++++++++++++++++ .../pip/_vendor/msgpack/__init__.py | 57 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1858 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 2052 bytes .../msgpack/__pycache__/ext.cpython-312.pyc | Bin 0 -> 8695 bytes .../__pycache__/fallback.cpython-312.pyc | Bin 0 -> 43603 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 0 -> 657 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 493 bytes .../__pycache__/_manylinux.cpython-312.pyc | Bin 0 -> 12103 bytes .../__pycache__/_musllinux.cpython-312.pyc | Bin 0 -> 6937 bytes .../__pycache__/_structures.cpython-312.pyc | Bin 0 -> 3268 bytes .../__pycache__/markers.cpython-312.pyc | Bin 0 -> 14085 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 0 -> 6973 bytes .../__pycache__/specifiers.cpython-312.pyc | Bin 0 -> 31274 bytes .../__pycache__/tags.cpython-312.pyc | Bin 0 -> 18983 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 5895 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 19966 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/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 0 -> 146501 bytes .../pip/_vendor/platformdirs/__init__.py | 566 ++ .../pip/_vendor/platformdirs/__main__.py | 53 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 18056 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 1973 bytes .../__pycache__/android.cpython-312.pyc | Bin 0 -> 9471 bytes .../__pycache__/api.cpython-312.pyc | Bin 0 -> 9699 bytes .../__pycache__/macos.cpython-312.pyc | Bin 0 -> 5664 bytes .../__pycache__/unix.cpython-312.pyc | Bin 0 -> 12468 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 338 bytes .../__pycache__/windows.cpython-312.pyc | Bin 0 -> 13026 bytes .../pip/_vendor/platformdirs/android.py | 210 + .../pip/_vendor/platformdirs/api.py | 223 + .../pip/_vendor/platformdirs/macos.py | 91 + .../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 0 -> 3516 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 762 bytes .../__pycache__/cmdline.cpython-312.pyc | Bin 0 -> 26633 bytes .../__pycache__/console.cpython-312.pyc | Bin 0 -> 2654 bytes .../__pycache__/filter.cpython-312.pyc | Bin 0 -> 3260 bytes .../__pycache__/formatter.cpython-312.pyc | Bin 0 -> 4597 bytes .../__pycache__/lexer.cpython-312.pyc | Bin 0 -> 38357 bytes .../__pycache__/modeline.cpython-312.pyc | Bin 0 -> 1596 bytes .../__pycache__/plugin.cpython-312.pyc | Bin 0 -> 3424 bytes .../__pycache__/regexopt.cpython-312.pyc | Bin 0 -> 4109 bytes .../__pycache__/scanner.cpython-312.pyc | Bin 0 -> 4784 bytes .../__pycache__/sphinxext.cpython-312.pyc | Bin 0 -> 11074 bytes .../__pycache__/style.cpython-312.pyc | Bin 0 -> 6702 bytes .../__pycache__/token.cpython-312.pyc | Bin 0 -> 8170 bytes .../__pycache__/unistring.cpython-312.pyc | Bin 0 -> 33016 bytes .../pygments/__pycache__/util.cpython-312.pyc | Bin 0 -> 14009 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 0 -> 37964 bytes .../pip/_vendor/pygments/formatter.py | 124 + .../_vendor/pygments/formatters/__init__.py | 158 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 6954 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 0 -> 4243 bytes .../__pycache__/bbcode.cpython-312.pyc | Bin 0 -> 4222 bytes .../__pycache__/groff.cpython-312.pyc | Bin 0 -> 7292 bytes .../__pycache__/html.cpython-312.pyc | Bin 0 -> 40600 bytes .../__pycache__/img.cpython-312.pyc | Bin 0 -> 27071 bytes .../__pycache__/irc.cpython-312.pyc | Bin 0 -> 6093 bytes .../__pycache__/latex.cpython-312.pyc | Bin 0 -> 19982 bytes .../__pycache__/other.cpython-312.pyc | Bin 0 -> 6912 bytes .../__pycache__/pangomarkup.cpython-312.pyc | Bin 0 -> 2958 bytes .../__pycache__/rtf.cpython-312.pyc | Bin 0 -> 6154 bytes .../__pycache__/svg.cpython-312.pyc | Bin 0 -> 9094 bytes .../__pycache__/terminal.cpython-312.pyc | Bin 0 -> 5857 bytes .../__pycache__/terminal256.cpython-312.pyc | Bin 0 -> 15185 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 0 -> 14680 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 0 -> 64432 bytes .../lexers/__pycache__/python.cpython-312.pyc | Bin 0 -> 42667 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 0 -> 4476 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 0 -> 7939 bytes .../__pycache__/actions.cpython-312.pyc | Bin 0 -> 8423 bytes .../__pycache__/common.cpython-312.pyc | Bin 0 -> 13442 bytes .../__pycache__/core.cpython-312.pyc | Bin 0 -> 267736 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 13022 bytes .../__pycache__/helpers.cpython-312.pyc | Bin 0 -> 48529 bytes .../__pycache__/results.cpython-312.pyc | Bin 0 -> 34138 bytes .../__pycache__/testing.cpython-312.pyc | Bin 0 -> 17216 bytes .../__pycache__/unicode.cpython-312.pyc | Bin 0 -> 13212 bytes .../__pycache__/util.cpython-312.pyc | Bin 0 -> 14932 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 0 -> 26841 bytes .../pip/_vendor/pyparsing/exceptions.py | 299 + .../pip/_vendor/pyparsing/helpers.py | 1100 +++ .../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 0 -> 641 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 0 -> 402 bytes .../__pycache__/_impl.cpython-312.pyc | Bin 0 -> 14753 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 0 -> 1108 bytes .../__pycache__/_in_process.cpython-312.pyc | Bin 0 -> 14425 bytes .../_in_process/_in_process.py | 353 + .../pip/_vendor/requests/__init__.py | 182 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 5481 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 0 -> 612 bytes .../_internal_utils.cpython-312.pyc | Bin 0 -> 2052 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 0 -> 21308 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 0 -> 7232 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 0 -> 13951 bytes .../__pycache__/certs.cpython-312.pyc | Bin 0 -> 950 bytes .../__pycache__/compat.cpython-312.pyc | Bin 0 -> 1535 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 0 -> 25274 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 7075 bytes .../requests/__pycache__/help.cpython-312.pyc | Bin 0 -> 4340 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 0 -> 1080 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 35476 bytes .../__pycache__/packages.cpython-312.pyc | Bin 0 -> 800 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 0 -> 27785 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 0 -> 5987 bytes .../__pycache__/structures.cpython-312.pyc | Bin 0 -> 5645 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 36297 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 0 -> 662 bytes .../__pycache__/providers.cpython-312.pyc | Bin 0 -> 6879 bytes .../__pycache__/reporters.cpython-312.pyc | Bin 0 -> 2682 bytes .../__pycache__/resolvers.cpython-312.pyc | Bin 0 -> 25925 bytes .../__pycache__/structs.cpython-312.pyc | Bin 0 -> 10534 bytes .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 228 bytes .../collections_abc.cpython-312.pyc | Bin 0 -> 448 bytes .../resolvelib/compat/collections_abc.py | 6 + .../pip/_vendor/resolvelib/providers.py | 133 + .../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 0 -> 7043 bytes .../rich/__pycache__/__main__.cpython-312.pyc | Bin 0 -> 10332 bytes .../__pycache__/_cell_widths.cpython-312.pyc | Bin 0 -> 7849 bytes .../__pycache__/_emoji_codes.cpython-312.pyc | Bin 0 -> 206004 bytes .../_emoji_replace.cpython-312.pyc | Bin 0 -> 1757 bytes .../_export_format.cpython-312.pyc | Bin 0 -> 2349 bytes .../__pycache__/_extension.cpython-312.pyc | Bin 0 -> 565 bytes .../rich/__pycache__/_fileno.cpython-312.pyc | Bin 0 -> 883 bytes .../rich/__pycache__/_inspect.cpython-312.pyc | Bin 0 -> 12105 bytes .../__pycache__/_log_render.cpython-312.pyc | Bin 0 -> 4175 bytes .../rich/__pycache__/_loop.cpython-312.pyc | Bin 0 -> 1913 bytes .../__pycache__/_null_file.cpython-312.pyc | Bin 0 -> 3648 bytes .../__pycache__/_palettes.cpython-312.pyc | Bin 0 -> 5188 bytes .../rich/__pycache__/_pick.cpython-312.pyc | Bin 0 -> 754 bytes .../rich/__pycache__/_ratio.cpython-312.pyc | Bin 0 -> 6607 bytes .../__pycache__/_spinners.cpython-312.pyc | Bin 0 -> 13207 bytes .../rich/__pycache__/_stack.cpython-312.pyc | Bin 0 -> 993 bytes .../rich/__pycache__/_timer.cpython-312.pyc | Bin 0 -> 893 bytes .../_win32_console.cpython-312.pyc | Bin 0 -> 29004 bytes .../rich/__pycache__/_windows.cpython-312.pyc | Bin 0 -> 2518 bytes .../_windows_renderer.cpython-312.pyc | Bin 0 -> 3601 bytes .../rich/__pycache__/_wrap.cpython-312.pyc | Bin 0 -> 2388 bytes .../rich/__pycache__/abc.cpython-312.pyc | Bin 0 -> 1636 bytes .../rich/__pycache__/align.cpython-312.pyc | Bin 0 -> 12350 bytes .../rich/__pycache__/ansi.cpython-312.pyc | Bin 0 -> 9134 bytes .../rich/__pycache__/bar.cpython-312.pyc | Bin 0 -> 4300 bytes .../rich/__pycache__/box.cpython-312.pyc | Bin 0 -> 11886 bytes .../rich/__pycache__/cells.cpython-312.pyc | Bin 0 -> 5646 bytes .../rich/__pycache__/color.cpython-312.pyc | Bin 0 -> 26598 bytes .../__pycache__/color_triplet.cpython-312.pyc | Bin 0 -> 1729 bytes .../rich/__pycache__/columns.cpython-312.pyc | Bin 0 -> 8615 bytes .../rich/__pycache__/console.cpython-312.pyc | Bin 0 -> 113821 bytes .../__pycache__/constrain.cpython-312.pyc | Bin 0 -> 2286 bytes .../__pycache__/containers.cpython-312.pyc | Bin 0 -> 9254 bytes .../rich/__pycache__/control.cpython-312.pyc | Bin 0 -> 10957 bytes .../default_styles.cpython-312.pyc | Bin 0 -> 10401 bytes .../rich/__pycache__/diagnose.cpython-312.pyc | Bin 0 -> 1515 bytes .../rich/__pycache__/emoji.cpython-312.pyc | Bin 0 -> 4237 bytes .../rich/__pycache__/errors.cpython-312.pyc | Bin 0 -> 1873 bytes .../__pycache__/file_proxy.cpython-312.pyc | Bin 0 -> 3605 bytes .../rich/__pycache__/filesize.cpython-312.pyc | Bin 0 -> 3110 bytes .../__pycache__/highlighter.cpython-312.pyc | Bin 0 -> 9926 bytes .../rich/__pycache__/json.cpython-312.pyc | Bin 0 -> 6063 bytes .../rich/__pycache__/jupyter.cpython-312.pyc | Bin 0 -> 5237 bytes .../rich/__pycache__/layout.cpython-312.pyc | Bin 0 -> 20248 bytes .../rich/__pycache__/live.cpython-312.pyc | Bin 0 -> 19171 bytes .../__pycache__/live_render.cpython-312.pyc | Bin 0 -> 4922 bytes .../rich/__pycache__/logging.cpython-312.pyc | Bin 0 -> 13582 bytes .../rich/__pycache__/markup.cpython-312.pyc | Bin 0 -> 9326 bytes .../rich/__pycache__/measure.cpython-312.pyc | Bin 0 -> 6404 bytes .../rich/__pycache__/padding.cpython-312.pyc | Bin 0 -> 7162 bytes .../rich/__pycache__/pager.cpython-312.pyc | Bin 0 -> 1848 bytes .../rich/__pycache__/palette.cpython-312.pyc | Bin 0 -> 5342 bytes .../rich/__pycache__/panel.cpython-312.pyc | Bin 0 -> 12125 bytes .../rich/__pycache__/pretty.cpython-312.pyc | Bin 0 -> 40084 bytes .../rich/__pycache__/progress.cpython-312.pyc | Bin 0 -> 75106 bytes .../__pycache__/progress_bar.cpython-312.pyc | Bin 0 -> 10417 bytes .../rich/__pycache__/prompt.cpython-312.pyc | Bin 0 -> 14809 bytes .../rich/__pycache__/protocol.cpython-312.pyc | Bin 0 -> 1820 bytes .../rich/__pycache__/region.cpython-312.pyc | Bin 0 -> 595 bytes .../rich/__pycache__/repr.cpython-312.pyc | Bin 0 -> 6654 bytes .../rich/__pycache__/rule.cpython-312.pyc | Bin 0 -> 6596 bytes .../rich/__pycache__/scope.cpython-312.pyc | Bin 0 -> 3858 bytes .../rich/__pycache__/screen.cpython-312.pyc | Bin 0 -> 2512 bytes .../rich/__pycache__/segment.cpython-312.pyc | Bin 0 -> 28189 bytes .../rich/__pycache__/spinner.cpython-312.pyc | Bin 0 -> 6092 bytes .../rich/__pycache__/status.cpython-312.pyc | Bin 0 -> 6096 bytes .../rich/__pycache__/style.cpython-312.pyc | Bin 0 -> 33542 bytes .../rich/__pycache__/styled.cpython-312.pyc | Bin 0 -> 2167 bytes .../rich/__pycache__/syntax.cpython-312.pyc | Bin 0 -> 39640 bytes .../rich/__pycache__/table.cpython-312.pyc | Bin 0 -> 43612 bytes .../terminal_theme.cpython-312.pyc | Bin 0 -> 3376 bytes .../rich/__pycache__/text.cpython-312.pyc | Bin 0 -> 58991 bytes .../rich/__pycache__/theme.cpython-312.pyc | Bin 0 -> 6368 bytes .../rich/__pycache__/themes.cpython-312.pyc | Bin 0 -> 342 bytes .../__pycache__/traceback.cpython-312.pyc | Bin 0 -> 31576 bytes .../rich/__pycache__/tree.cpython-312.pyc | Bin 0 -> 11467 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/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 0 -> 27114 bytes .../__pycache__/_asyncio.cpython-312.pyc | Bin 0 -> 4834 bytes .../__pycache__/_utils.cpython-312.pyc | Bin 0 -> 2343 bytes .../__pycache__/after.cpython-312.pyc | Bin 0 -> 1652 bytes .../__pycache__/before.cpython-312.pyc | Bin 0 -> 1492 bytes .../__pycache__/before_sleep.cpython-312.pyc | Bin 0 -> 2330 bytes .../tenacity/__pycache__/nap.cpython-312.pyc | Bin 0 -> 1440 bytes .../__pycache__/retry.cpython-312.pyc | Bin 0 -> 14309 bytes .../tenacity/__pycache__/stop.cpython-312.pyc | Bin 0 -> 5596 bytes .../__pycache__/tornadoweb.cpython-312.pyc | Bin 0 -> 2614 bytes .../tenacity/__pycache__/wait.cpython-312.pyc | Bin 0 -> 12441 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/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 0 -> 412 bytes .../tomli/__pycache__/_parser.cpython-312.pyc | Bin 0 -> 26955 bytes .../tomli/__pycache__/_re.cpython-312.pyc | Bin 0 -> 3936 bytes .../tomli/__pycache__/_types.cpython-312.pyc | Bin 0 -> 394 bytes .../pip/_vendor/tomli/_parser.py | 691 ++ .../site-packages/pip/_vendor/tomli/_re.py | 107 + .../site-packages/pip/_vendor/tomli/_types.py | 10 + .../pip/_vendor/truststore/__init__.py | 13 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 646 bytes .../__pycache__/_api.cpython-312.pyc | Bin 0 -> 15825 bytes .../__pycache__/_macos.cpython-312.pyc | Bin 0 -> 16690 bytes .../__pycache__/_openssl.cpython-312.pyc | Bin 0 -> 2243 bytes .../_ssl_constants.cpython-312.pyc | Bin 0 -> 1127 bytes .../__pycache__/_windows.cpython-312.pyc | Bin 0 -> 15534 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/typing_extensions.py | 3072 ++++++ .../pip/_vendor/urllib3/__init__.py | 102 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 3433 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 0 -> 15959 bytes .../__pycache__/_version.cpython-312.pyc | Bin 0 -> 246 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 20435 bytes .../connectionpool.cpython-312.pyc | Bin 0 -> 36307 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 13521 bytes .../__pycache__/fields.cpython-312.pyc | Bin 0 -> 10441 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 0 -> 4046 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 0 -> 20658 bytes .../__pycache__/request.cpython-312.pyc | Bin 0 -> 7322 bytes .../__pycache__/response.cpython-312.pyc | Bin 0 -> 33996 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 0 -> 226 bytes .../_appengine_environ.cpython-312.pyc | Bin 0 -> 1876 bytes .../__pycache__/appengine.cpython-312.pyc | Bin 0 -> 11592 bytes .../__pycache__/ntlmpool.cpython-312.pyc | Bin 0 -> 5747 bytes .../__pycache__/pyopenssl.cpython-312.pyc | Bin 0 -> 24478 bytes .../securetransport.cpython-312.pyc | Bin 0 -> 35584 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 0 -> 7539 bytes .../urllib3/contrib/_appengine_environ.py | 36 + .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 243 bytes .../__pycache__/bindings.cpython-312.pyc | Bin 0 -> 17455 bytes .../__pycache__/low_level.cpython-312.pyc | Bin 0 -> 14829 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 0 -> 227 bytes .../packages/__pycache__/six.cpython-312.pyc | Bin 0 -> 41347 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 237 bytes .../__pycache__/makefile.cpython-312.pyc | Bin 0 -> 1853 bytes .../weakref_finalize.cpython-312.pyc | Bin 0 -> 7359 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 | 553 ++ .../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 0 -> 1174 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 4784 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 0 -> 1580 bytes .../util/__pycache__/queue.cpython-312.pyc | Bin 0 -> 1380 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 0 -> 4211 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 0 -> 3017 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 0 -> 21746 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 0 -> 15131 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 0 -> 5099 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 0 -> 10800 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 0 -> 11167 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 0 -> 15823 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 0 -> 4431 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 | 622 ++ .../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 0 -> 12029 bytes .../__pycache__/labels.cpython-312.pyc | Bin 0 -> 7160 bytes .../__pycache__/mklabels.cpython-312.pyc | Bin 0 -> 2727 bytes .../__pycache__/tests.cpython-312.pyc | Bin 0 -> 9279 bytes .../x_user_defined.cpython-312.pyc | Bin 0 -> 3323 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 + .../requests-2.32.4.dist-info/INSTALLER | 1 + .../requests-2.32.4.dist-info/METADATA | 133 + .../requests-2.32.4.dist-info/RECORD | 43 + .../requests-2.32.4.dist-info/REQUESTED | 0 .../requests-2.32.4.dist-info/WHEEL | 5 + .../licenses/LICENSE | 175 + .../requests-2.32.4.dist-info/top_level.txt | 1 + .../site-packages/requests/__init__.py | 184 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 5436 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 0 -> 600 bytes .../_internal_utils.cpython-312.pyc | Bin 0 -> 2040 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 0 -> 28380 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 0 -> 7220 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 0 -> 13939 bytes .../__pycache__/certs.cpython-312.pyc | Bin 0 -> 682 bytes .../__pycache__/compat.cpython-312.pyc | Bin 0 -> 2396 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 0 -> 25292 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 7601 bytes .../requests/__pycache__/help.cpython-312.pyc | Bin 0 -> 4343 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 0 -> 1068 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 35517 bytes .../__pycache__/packages.cpython-312.pyc | Bin 0 -> 1155 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 0 -> 27898 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 0 -> 6047 bytes .../__pycache__/structures.cpython-312.pyc | Bin 0 -> 5633 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 36194 bytes .../site-packages/requests/__version__.py | 14 + .../site-packages/requests/_internal_utils.py | 50 + .../site-packages/requests/adapters.py | 719 ++ .../python3.12/site-packages/requests/api.py | 157 + .../python3.12/site-packages/requests/auth.py | 314 + .../site-packages/requests/certs.py | 17 + .../site-packages/requests/compat.py | 106 + .../site-packages/requests/cookies.py | 561 ++ .../site-packages/requests/exceptions.py | 151 + .../python3.12/site-packages/requests/help.py | 134 + .../site-packages/requests/hooks.py | 33 + .../site-packages/requests/models.py | 1039 ++ .../site-packages/requests/packages.py | 23 + .../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 +++ .../soupsieve-2.7.dist-info/INSTALLER | 1 + .../soupsieve-2.7.dist-info/METADATA | 115 + .../soupsieve-2.7.dist-info/RECORD | 20 + .../soupsieve-2.7.dist-info/WHEEL | 4 + .../licenses/LICENSE.md | 21 + .../site-packages/soupsieve/__init__.py | 168 + .../site-packages/soupsieve/__meta__.py | 197 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 6133 bytes .../__pycache__/__meta__.cpython-312.pyc | Bin 0 -> 8135 bytes .../__pycache__/css_match.cpython-312.pyc | Bin 0 -> 63870 bytes .../__pycache__/css_parser.cpython-312.pyc | Bin 0 -> 50236 bytes .../__pycache__/css_types.cpython-312.pyc | Bin 0 -> 17356 bytes .../__pycache__/pretty.cpython-312.pyc | Bin 0 -> 5075 bytes .../__pycache__/util.cpython-312.pyc | Bin 0 -> 4745 bytes .../site-packages/soupsieve/css_match.py | 1645 ++++ .../site-packages/soupsieve/css_parser.py | 1318 +++ .../site-packages/soupsieve/css_types.py | 407 + .../site-packages/soupsieve/pretty.py | 139 + .../site-packages/soupsieve/py.typed | 0 .../site-packages/soupsieve/util.py | 117 + .../INSTALLER | 1 + .../METADATA | 68 + .../typing_extensions-4.14.1.dist-info/RECORD | 7 + .../typing_extensions-4.14.1.dist-info/WHEEL | 4 + .../licenses/LICENSE | 279 + .../site-packages/typing_extensions.py | 4244 ++++++++ .../urllib3-2.5.0.dist-info/INSTALLER | 1 + .../urllib3-2.5.0.dist-info/METADATA | 154 + .../urllib3-2.5.0.dist-info/RECORD | 79 + .../urllib3-2.5.0.dist-info/WHEEL | 4 + .../licenses/LICENSE.txt | 21 + .../site-packages/urllib3/__init__.py | 211 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 7331 bytes .../_base_connection.cpython-312.pyc | Bin 0 -> 6869 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 0 -> 22590 bytes .../_request_methods.cpython-312.pyc | Bin 0 -> 10623 bytes .../__pycache__/_version.cpython-312.pyc | Bin 0 -> 667 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 38434 bytes .../connectionpool.cpython-312.pyc | Bin 0 -> 39756 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 16632 bytes .../__pycache__/fields.cpython-312.pyc | Bin 0 -> 12043 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 0 -> 3510 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 0 -> 24424 bytes .../__pycache__/response.cpython-312.pyc | Bin 0 -> 52734 bytes .../site-packages/urllib3/_base_connection.py | 165 + .../site-packages/urllib3/_collections.py | 479 + .../site-packages/urllib3/_request_methods.py | 278 + .../site-packages/urllib3/_version.py | 21 + .../site-packages/urllib3/connection.py | 1093 +++ .../site-packages/urllib3/connectionpool.py | 1178 +++ .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 214 bytes .../__pycache__/pyopenssl.cpython-312.pyc | Bin 0 -> 28237 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 0 -> 8192 bytes .../urllib3/contrib/emscripten/__init__.py | 16 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 922 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 10263 bytes .../__pycache__/fetch.cpython-312.pyc | Bin 0 -> 28653 bytes .../__pycache__/request.cpython-312.pyc | Bin 0 -> 1442 bytes .../__pycache__/response.cpython-312.pyc | Bin 0 -> 12236 bytes .../urllib3/contrib/emscripten/connection.py | 255 + .../emscripten/emscripten_fetch_worker.js | 110 + .../urllib3/contrib/emscripten/fetch.py | 728 ++ .../urllib3/contrib/emscripten/request.py | 22 + .../urllib3/contrib/emscripten/response.py | 277 + .../urllib3/contrib/pyopenssl.py | 564 ++ .../site-packages/urllib3/contrib/socks.py | 228 + .../site-packages/urllib3/exceptions.py | 335 + .../site-packages/urllib3/fields.py | 341 + .../site-packages/urllib3/filepost.py | 89 + .../site-packages/urllib3/http2/__init__.py | 53 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1767 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 17074 bytes .../http2/__pycache__/probe.cpython-312.pyc | Bin 0 -> 3718 bytes .../site-packages/urllib3/http2/connection.py | 356 + .../site-packages/urllib3/http2/probe.py | 87 + .../site-packages/urllib3/poolmanager.py | 653 ++ .../python3.12/site-packages/urllib3/py.typed | 2 + .../site-packages/urllib3/response.py | 1307 +++ .../site-packages/urllib3/util/__init__.py | 42 + .../util/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1027 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 4717 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 0 -> 1239 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 0 -> 8339 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 0 -> 2895 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 0 -> 20308 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 0 -> 17191 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 0 -> 5579 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 0 -> 13346 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 0 -> 11711 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 0 -> 16248 bytes .../util/__pycache__/util.cpython-312.pyc | Bin 0 -> 2016 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 0 -> 3462 bytes .../site-packages/urllib3/util/connection.py | 137 + .../site-packages/urllib3/util/proxy.py | 43 + .../site-packages/urllib3/util/request.py | 266 + .../site-packages/urllib3/util/response.py | 101 + .../site-packages/urllib3/util/retry.py | 533 + .../site-packages/urllib3/util/ssl_.py | 524 + .../urllib3/util/ssl_match_hostname.py | 159 + .../urllib3/util/ssltransport.py | 271 + .../site-packages/urllib3/util/timeout.py | 275 + .../site-packages/urllib3/util/url.py | 469 + .../site-packages/urllib3/util/util.py | 42 + .../site-packages/urllib3/util/wait.py | 124 + .venv/lib64 | 1 + .venv/pyvenv.cfg | 5 + __pycache__/cor_func.cpython-312.pyc | Bin 0 -> 4285 bytes cor_ func.py | 104 + main.py | 114 - report fns.txt | 100 +- requirements.txt | 3 + 1329 files changed, 259067 insertions(+), 164 deletions(-) create mode 100644 .venv/bin/Activate.ps1 create mode 100644 .venv/bin/activate create mode 100644 .venv/bin/activate.csh create mode 100644 .venv/bin/activate.fish create mode 100755 .venv/bin/normalizer create mode 100755 .venv/bin/pip create mode 100755 .venv/bin/pip3 create mode 100755 .venv/bin/pip3.12 create mode 120000 .venv/bin/python create mode 120000 .venv/bin/python3 create mode 120000 .venv/bin/python3.12 create mode 100644 .venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/INSTALLER create mode 100644 .venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/METADATA create mode 100644 .venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/RECORD create mode 100644 .venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/REQUESTED create mode 100644 .venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/WHEEL create mode 100644 .venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/licenses/AUTHORS create mode 100644 .venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/licenses/LICENSE create mode 100644 .venv/lib/python3.12/site-packages/bs4/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/__pycache__/_deprecation.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/__pycache__/_typing.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/__pycache__/_warnings.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/__pycache__/css.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/__pycache__/dammit.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/__pycache__/diagnose.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/__pycache__/element.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/__pycache__/exceptions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/__pycache__/filter.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/__pycache__/formatter.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/_deprecation.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/_typing.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/_warnings.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/builder/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/builder/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/builder/__pycache__/_html5lib.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/builder/__pycache__/_lxml.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/builder/_html5lib.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/builder/_htmlparser.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/builder/_lxml.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/css.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/dammit.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/diagnose.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/element.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/exceptions.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/filter.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/formatter.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/py.typed create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_css.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_dammit.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_element.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_filter.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_formatter.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_fuzz.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_lxml.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_soup.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_tag.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_tree.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6306874195312640.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/fuzz/crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_builder.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_builder_registry.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_css.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_dammit.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_element.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_filter.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_formatter.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_fuzz.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_html5lib.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_htmlparser.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_lxml.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_navigablestring.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_pageelement.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_soup.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_tag.py create mode 100644 .venv/lib/python3.12/site-packages/bs4/tests/test_tree.py create mode 100644 .venv/lib/python3.12/site-packages/certifi-2025.7.14.dist-info/INSTALLER create mode 100644 .venv/lib/python3.12/site-packages/certifi-2025.7.14.dist-info/METADATA create mode 100644 .venv/lib/python3.12/site-packages/certifi-2025.7.14.dist-info/RECORD create mode 100644 .venv/lib/python3.12/site-packages/certifi-2025.7.14.dist-info/WHEEL create mode 100644 .venv/lib/python3.12/site-packages/certifi-2025.7.14.dist-info/licenses/LICENSE create mode 100644 .venv/lib/python3.12/site-packages/certifi-2025.7.14.dist-info/top_level.txt create mode 100644 .venv/lib/python3.12/site-packages/certifi/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/certifi/__main__.py create mode 100644 .venv/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/certifi/__pycache__/core.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/certifi/cacert.pem create mode 100644 .venv/lib/python3.12/site-packages/certifi/core.py create mode 100644 .venv/lib/python3.12/site-packages/certifi/py.typed create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer-3.4.2.dist-info/INSTALLER create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer-3.4.2.dist-info/METADATA create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer-3.4.2.dist-info/RECORD create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer-3.4.2.dist-info/WHEEL create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer-3.4.2.dist-info/entry_points.txt create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer-3.4.2.dist-info/licenses/LICENSE create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer-3.4.2.dist-info/top_level.txt create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/__main__.py create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__main__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/constant.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/md.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/models.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/api.py create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/cd.py create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/constant.py create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/legacy.py create mode 100755 .venv/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/md.py create mode 100755 .venv/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/models.py create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/py.typed create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/utils.py create mode 100644 .venv/lib/python3.12/site-packages/charset_normalizer/version.py create mode 100644 .venv/lib/python3.12/site-packages/idna-3.10.dist-info/INSTALLER create mode 100644 .venv/lib/python3.12/site-packages/idna-3.10.dist-info/LICENSE.md create mode 100644 .venv/lib/python3.12/site-packages/idna-3.10.dist-info/METADATA create mode 100644 .venv/lib/python3.12/site-packages/idna-3.10.dist-info/RECORD create mode 100644 .venv/lib/python3.12/site-packages/idna-3.10.dist-info/WHEEL create mode 100644 .venv/lib/python3.12/site-packages/idna/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/idna/__pycache__/compat.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/idna/__pycache__/core.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/idna/__pycache__/idnadata.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/idna/__pycache__/package_data.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/idna/codec.py create mode 100644 .venv/lib/python3.12/site-packages/idna/compat.py create mode 100644 .venv/lib/python3.12/site-packages/idna/core.py create mode 100644 .venv/lib/python3.12/site-packages/idna/idnadata.py create mode 100644 .venv/lib/python3.12/site-packages/idna/intranges.py create mode 100644 .venv/lib/python3.12/site-packages/idna/package_data.py create mode 100644 .venv/lib/python3.12/site-packages/idna/py.typed create mode 100644 .venv/lib/python3.12/site-packages/idna/uts46data.py create mode 100644 .venv/lib/python3.12/site-packages/pip-24.0.dist-info/AUTHORS.txt create mode 100644 .venv/lib/python3.12/site-packages/pip-24.0.dist-info/INSTALLER create mode 100644 .venv/lib/python3.12/site-packages/pip-24.0.dist-info/LICENSE.txt create mode 100644 .venv/lib/python3.12/site-packages/pip-24.0.dist-info/METADATA create mode 100644 .venv/lib/python3.12/site-packages/pip-24.0.dist-info/RECORD create mode 100644 .venv/lib/python3.12/site-packages/pip-24.0.dist-info/REQUESTED create mode 100644 .venv/lib/python3.12/site-packages/pip-24.0.dist-info/WHEEL create mode 100644 .venv/lib/python3.12/site-packages/pip-24.0.dist-info/entry_points.txt create mode 100644 .venv/lib/python3.12/site-packages/pip-24.0.dist-info/top_level.txt create mode 100644 .venv/lib/python3.12/site-packages/pip/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/__main__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/__pip-runner__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/__pycache__/__main__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/__pycache__/main.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/build_env.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cache.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/base_command.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/command_context.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/main.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/main_parser.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/parser.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/progress_bars.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/req_command.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/spinners.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/cli/status_codes.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/cache.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/check.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/completion.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/debug.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/download.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/hash.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/help.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/index.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/install.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/list.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/search.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/show.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/cache.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/check.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/completion.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/configuration.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/debug.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/download.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/freeze.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/hash.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/help.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/index.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/inspect.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/install.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/list.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/search.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/show.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/uninstall.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/commands/wheel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/configuration.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/distributions/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/base.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/distributions/base.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/distributions/installed.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/distributions/wheel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/exceptions.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/index/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/collector.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/sources.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/index/collector.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/index/package_finder.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/index/sources.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/locations/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/base.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/locations/_distutils.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/locations/_sysconfig.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/locations/base.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/main.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/_json.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/base.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_compat.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_dists.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_envs.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/metadata/pkg_resources.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/candidate.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/format_control.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/index.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/link.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/scheme.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/target_python.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/wheel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/candidate.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/direct_url.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/format_control.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/index.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/installation_report.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/link.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/scheme.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/search_scope.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/target_python.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/models/wheel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/auth.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/cache.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/download.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/session.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/utils.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/auth.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/cache.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/download.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/lazy_wheel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/session.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/utils.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/check.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/build_tracker.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata_editable.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata_legacy.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel_editable.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel_legacy.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/check.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/freeze.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/install/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/install/editable_legacy.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/install/wheel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/operations/prepare.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/pyproject.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/req/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/constructors.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_file.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_install.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_set.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/req/constructors.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/req/req_file.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/req/req_install.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/req/req_set.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/base.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/base.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/resolver.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/base.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/provider.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/reporter.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/requirements.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/self_outdated_check.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_log.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compat.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/logging.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/misc.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/models.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/urls.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/_jaraco_text.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/_log.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/appdirs.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/compat.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/compatibility_tags.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/datetime.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/deprecation.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/direct_url_helpers.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/egg_link.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/encoding.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/entrypoints.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/filesystem.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/filetypes.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/glibc.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/hashes.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/logging.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/misc.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/models.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/packaging.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/subprocess.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/unpacking.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/urls.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/utils/wheel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/vcs/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/git.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/vcs/git.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/vcs/subversion.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_internal/wheel_builder.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/six.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/certifi/core.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/codingstatemachinedict.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/enums.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/johabfreq.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/johabprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/langrussianmodel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/macromanprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/metadata/languages.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/resultdict.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/utf1632prober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/chardet/version.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/utils.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/ansi_test.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/initialise_test.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/isatty_test.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/utils.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/winterm_test.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/win32.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/compat.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/database.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/index.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/locators.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/markers.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/resources.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/util.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/version.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distro/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distro/__main__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/distro/distro.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/core.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/codec.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/compat.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/core.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/intranges.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/package_data.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/msgpack/ext.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/_manylinux.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/_musllinux.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/markers.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/tags.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/utils.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/packaging/version.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__main__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/android.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/api.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/macos.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/unix.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/version.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/windows.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__main__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/cmdline.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/console.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/filter.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatter.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/_mapping.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/bbcode.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/groff.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/html.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/img.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/irc.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/latex.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/other.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/rtf.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/svg.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal256.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexer.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/_mapping.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/python.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/modeline.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/plugin.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/regexopt.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/scanner.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/sphinxext.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/style.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/token.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/unistring.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pygments/util.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/actions.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/common.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/core.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/diagram/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/exceptions.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/helpers.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/results.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/testing.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/unicode.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/util.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_compat.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/api.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/help.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/models.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/__version__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/adapters.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/api.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/auth.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/certs.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/compat.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/cookies.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/help.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/hooks.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/models.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/packages.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/sessions.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/structures.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/requests/utils.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/providers.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/reporters.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/structs.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__main__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/align.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/box.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/console.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/control.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/json.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/region.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/status.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/style.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/table.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/text.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_cell_widths.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_codes.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_replace.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_export_format.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_extension.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_fileno.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_inspect.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_log_render.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_loop.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_null_file.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_palettes.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_pick.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_ratio.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_spinners.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_stack.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_timer.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_win32_console.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_windows.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_windows_renderer.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/_wrap.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/abc.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/align.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/ansi.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/bar.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/box.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/cells.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/color.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/color_triplet.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/columns.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/console.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/constrain.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/containers.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/control.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/default_styles.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/diagnose.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/emoji.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/errors.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/file_proxy.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/filesize.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/highlighter.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/json.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/jupyter.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/layout.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/live.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/live_render.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/logging.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/markup.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/measure.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/padding.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/pager.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/palette.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/panel.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/pretty.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/progress.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/progress_bar.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/prompt.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/protocol.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/region.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/repr.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/rule.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/scope.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/screen.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/segment.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/spinner.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/status.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/style.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/styled.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/syntax.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/table.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/terminal_theme.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/text.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/theme.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/themes.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/traceback.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/rich/tree.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/six.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/_asyncio.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/_utils.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/after.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/before.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/before_sleep.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/nap.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/retry.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/stop.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/tornadoweb.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tenacity/wait.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tomli/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tomli/_parser.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tomli/_re.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/tomli/_types.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/truststore/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/truststore/_api.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/truststore/_macos.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/truststore/_openssl.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/truststore/_ssl_constants.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/truststore/_windows.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/typing_extensions.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/_version.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/request.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/response.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/proxy.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssltransport.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/vendor.txt create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 .venv/lib/python3.12/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 .venv/lib/python3.12/site-packages/pip/py.typed create mode 100644 .venv/lib/python3.12/site-packages/requests-2.32.4.dist-info/INSTALLER create mode 100644 .venv/lib/python3.12/site-packages/requests-2.32.4.dist-info/METADATA create mode 100644 .venv/lib/python3.12/site-packages/requests-2.32.4.dist-info/RECORD create mode 100644 .venv/lib/python3.12/site-packages/requests-2.32.4.dist-info/REQUESTED create mode 100644 .venv/lib/python3.12/site-packages/requests-2.32.4.dist-info/WHEEL create mode 100644 .venv/lib/python3.12/site-packages/requests-2.32.4.dist-info/licenses/LICENSE create mode 100644 .venv/lib/python3.12/site-packages/requests-2.32.4.dist-info/top_level.txt create mode 100644 .venv/lib/python3.12/site-packages/requests/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/__version__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/_internal_utils.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/adapters.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/api.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/auth.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/certs.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/compat.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/cookies.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/exceptions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/help.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/hooks.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/models.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/packages.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/sessions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/status_codes.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/structures.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__pycache__/utils.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/requests/__version__.py create mode 100644 .venv/lib/python3.12/site-packages/requests/_internal_utils.py create mode 100644 .venv/lib/python3.12/site-packages/requests/adapters.py create mode 100644 .venv/lib/python3.12/site-packages/requests/api.py create mode 100644 .venv/lib/python3.12/site-packages/requests/auth.py create mode 100644 .venv/lib/python3.12/site-packages/requests/certs.py create mode 100644 .venv/lib/python3.12/site-packages/requests/compat.py create mode 100644 .venv/lib/python3.12/site-packages/requests/cookies.py create mode 100644 .venv/lib/python3.12/site-packages/requests/exceptions.py create mode 100644 .venv/lib/python3.12/site-packages/requests/help.py create mode 100644 .venv/lib/python3.12/site-packages/requests/hooks.py create mode 100644 .venv/lib/python3.12/site-packages/requests/models.py create mode 100644 .venv/lib/python3.12/site-packages/requests/packages.py create mode 100644 .venv/lib/python3.12/site-packages/requests/sessions.py create mode 100644 .venv/lib/python3.12/site-packages/requests/status_codes.py create mode 100644 .venv/lib/python3.12/site-packages/requests/structures.py create mode 100644 .venv/lib/python3.12/site-packages/requests/utils.py create mode 100644 .venv/lib/python3.12/site-packages/soupsieve-2.7.dist-info/INSTALLER create mode 100644 .venv/lib/python3.12/site-packages/soupsieve-2.7.dist-info/METADATA create mode 100644 .venv/lib/python3.12/site-packages/soupsieve-2.7.dist-info/RECORD create mode 100644 .venv/lib/python3.12/site-packages/soupsieve-2.7.dist-info/WHEEL create mode 100644 .venv/lib/python3.12/site-packages/soupsieve-2.7.dist-info/licenses/LICENSE.md create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/__meta__.py create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/__pycache__/__meta__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/__pycache__/css_match.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/__pycache__/css_parser.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/__pycache__/css_types.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/__pycache__/pretty.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/__pycache__/util.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/css_match.py create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/css_parser.py create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/css_types.py create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/pretty.py create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/py.typed create mode 100644 .venv/lib/python3.12/site-packages/soupsieve/util.py create mode 100644 .venv/lib/python3.12/site-packages/typing_extensions-4.14.1.dist-info/INSTALLER create mode 100644 .venv/lib/python3.12/site-packages/typing_extensions-4.14.1.dist-info/METADATA create mode 100644 .venv/lib/python3.12/site-packages/typing_extensions-4.14.1.dist-info/RECORD create mode 100644 .venv/lib/python3.12/site-packages/typing_extensions-4.14.1.dist-info/WHEEL create mode 100644 .venv/lib/python3.12/site-packages/typing_extensions-4.14.1.dist-info/licenses/LICENSE create mode 100644 .venv/lib/python3.12/site-packages/typing_extensions.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/INSTALLER create mode 100644 .venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/METADATA create mode 100644 .venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/RECORD create mode 100644 .venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/WHEEL create mode 100644 .venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/licenses/LICENSE.txt create mode 100644 .venv/lib/python3.12/site-packages/urllib3/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/__pycache__/_base_connection.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/__pycache__/_collections.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/__pycache__/_request_methods.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/__pycache__/_version.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/__pycache__/connection.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/__pycache__/connectionpool.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/__pycache__/exceptions.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/__pycache__/fields.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/__pycache__/filepost.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/__pycache__/poolmanager.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/__pycache__/response.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/_base_connection.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/_collections.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/_request_methods.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/_version.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/connection.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/connectionpool.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/socks.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/connection.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/fetch.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/request.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/response.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/connection.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/fetch.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/request.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/response.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/pyopenssl.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/contrib/socks.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/exceptions.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/fields.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/filepost.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/http2/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/connection.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/probe.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/http2/connection.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/http2/probe.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/poolmanager.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/py.typed create mode 100644 .venv/lib/python3.12/site-packages/urllib3/response.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__init__.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__pycache__/__init__.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__pycache__/connection.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__pycache__/proxy.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__pycache__/request.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__pycache__/response.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__pycache__/retry.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssltransport.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__pycache__/timeout.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__pycache__/url.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__pycache__/util.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/__pycache__/wait.cpython-312.pyc create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/connection.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/proxy.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/request.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/response.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/retry.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/ssl_.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/ssl_match_hostname.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/ssltransport.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/timeout.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/url.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/util.py create mode 100644 .venv/lib/python3.12/site-packages/urllib3/util/wait.py create mode 120000 .venv/lib64 create mode 100644 .venv/pyvenv.cfg create mode 100644 __pycache__/cor_func.cpython-312.pyc create mode 100644 cor_ func.py create mode 100644 requirements.txt diff --git a/.venv/bin/Activate.ps1 b/.venv/bin/Activate.ps1 new file mode 100644 index 0000000..b49d77b --- /dev/null +++ b/.venv/bin/Activate.ps1 @@ -0,0 +1,247 @@ +<# +.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 new file mode 100644 index 0000000..4a7761d --- /dev/null +++ b/.venv/bin/activate @@ -0,0 +1,70 @@ +# 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/slu/Repositories-Git/Control_changes_Saby_format/.venv) +else + # use the path as-is + export VIRTUAL_ENV=/home/slu/Repositories-Git/Control_changes_Saby_format/.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 new file mode 100644 index 0000000..6ae0ed7 --- /dev/null +++ b/.venv/bin/activate.csh @@ -0,0 +1,27 @@ +# 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/slu/Repositories-Git/Control_changes_Saby_format/.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 new file mode 100644 index 0000000..1eb46ad --- /dev/null +++ b/.venv/bin/activate.fish @@ -0,0 +1,69 @@ +# 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/slu/Repositories-Git/Control_changes_Saby_format/.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/normalizer b/.venv/bin/normalizer new file mode 100755 index 0000000..1c4bbd6 --- /dev/null +++ b/.venv/bin/normalizer @@ -0,0 +1,8 @@ +#!/home/slu/Repositories-Git/Control_changes_Saby_format/.venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from charset_normalizer import cli +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(cli.cli_detect()) diff --git a/.venv/bin/pip b/.venv/bin/pip new file mode 100755 index 0000000..00ddb0d --- /dev/null +++ b/.venv/bin/pip @@ -0,0 +1,8 @@ +#!/home/slu/Repositories-Git/Control_changes_Saby_format/.venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/.venv/bin/pip3 b/.venv/bin/pip3 new file mode 100755 index 0000000..00ddb0d --- /dev/null +++ b/.venv/bin/pip3 @@ -0,0 +1,8 @@ +#!/home/slu/Repositories-Git/Control_changes_Saby_format/.venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/.venv/bin/pip3.12 b/.venv/bin/pip3.12 new file mode 100755 index 0000000..00ddb0d --- /dev/null +++ b/.venv/bin/pip3.12 @@ -0,0 +1,8 @@ +#!/home/slu/Repositories-Git/Control_changes_Saby_format/.venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/.venv/bin/python b/.venv/bin/python new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/.venv/bin/python @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/.venv/bin/python3 b/.venv/bin/python3 new file mode 120000 index 0000000..ae65fda --- /dev/null +++ b/.venv/bin/python3 @@ -0,0 +1 @@ +/usr/bin/python3 \ No newline at end of file diff --git a/.venv/bin/python3.12 b/.venv/bin/python3.12 new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/.venv/bin/python3.12 @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/.venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc b/.venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..244540e18257bcc71a20e1d400de859db5f42417 GIT binary patch literal 162217 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�!~t> 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 O3XG%W`d^gs2>*Xj^C~U? literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/INSTALLER b/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/METADATA b/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/METADATA new file mode 100644 index 0000000..eddfd55 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/METADATA @@ -0,0 +1,123 @@ +Metadata-Version: 2.4 +Name: beautifulsoup4 +Version: 4.13.4 +Summary: Screen-scraping library +Project-URL: Download, https://www.crummy.com/software/BeautifulSoup/bs4/download/ +Project-URL: Homepage, https://www.crummy.com/software/BeautifulSoup/bs4/ +Author-email: Leonard Richardson +License: MIT License +License-File: AUTHORS +License-File: LICENSE +Keywords: HTML,XML,parse,soup +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 +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Processing :: Markup :: HTML +Classifier: Topic :: Text Processing :: Markup :: SGML +Classifier: Topic :: Text Processing :: Markup :: XML +Requires-Python: >=3.7.0 +Requires-Dist: soupsieve>1.2 +Requires-Dist: typing-extensions>=4.0.0 +Provides-Extra: cchardet +Requires-Dist: cchardet; extra == 'cchardet' +Provides-Extra: chardet +Requires-Dist: chardet; extra == 'chardet' +Provides-Extra: charset-normalizer +Requires-Dist: charset-normalizer; extra == 'charset-normalizer' +Provides-Extra: html5lib +Requires-Dist: html5lib; extra == 'html5lib' +Provides-Extra: lxml +Requires-Dist: lxml; extra == 'lxml' +Description-Content-Type: text/markdown + +Beautiful Soup is a library that makes it easy to scrape information +from web pages. It sits atop an HTML or XML parser, providing Pythonic +idioms for iterating, searching, and modifying the parse tree. + +# Quick start + +``` +>>> from bs4 import BeautifulSoup +>>> soup = BeautifulSoup("

SomebadHTML") +>>> print(soup.prettify()) + + +

+ Some + + bad + + HTML + + +

+ + +>>> soup.find(string="bad") +'bad' +>>> soup.i +HTML +# +>>> soup = BeautifulSoup("SomebadXML", "xml") +# +>>> print(soup.prettify()) + + + Some + + bad + + XML + + +``` + +To go beyond the basics, [comprehensive documentation is available](https://www.crummy.com/software/BeautifulSoup/bs4/doc/). + +# Links + +* [Homepage](https://www.crummy.com/software/BeautifulSoup/bs4/) +* [Documentation](https://www.crummy.com/software/BeautifulSoup/bs4/doc/) +* [Discussion group](https://groups.google.com/group/beautifulsoup/) +* [Development](https://code.launchpad.net/beautifulsoup/) +* [Bug tracker](https://bugs.launchpad.net/beautifulsoup/) +* [Complete changelog](https://git.launchpad.net/beautifulsoup/tree/CHANGELOG) + +# Note on Python 2 sunsetting + +Beautiful Soup's support for Python 2 was discontinued on December 31, +2020: one year after the sunset date for Python 2 itself. From this +point onward, new Beautiful Soup development will exclusively target +Python 3. The final release of Beautiful Soup 4 to support Python 2 +was 4.9.3. + +# Supporting the project + +If you use Beautiful Soup as part of your professional work, please consider a +[Tidelift subscription](https://tidelift.com/subscription/pkg/pypi-beautifulsoup4?utm_source=pypi-beautifulsoup4&utm_medium=referral&utm_campaign=readme). +This will support many of the free software projects your organization +depends on, not just Beautiful Soup. + +If you use Beautiful Soup for personal projects, the best way to say +thank you is to read +[Tool Safety](https://www.crummy.com/software/BeautifulSoup/zine/), a zine I +wrote about what Beautiful Soup has taught me about software +development. + +# Building the documentation + +The bs4/doc/ directory contains full documentation in Sphinx +format. Run `make html` in that directory to create HTML +documentation. + +# Running the unit tests + +Beautiful Soup supports unit test discovery using Pytest: + +``` +$ pytest +``` + diff --git a/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/RECORD b/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/RECORD new file mode 100644 index 0000000..358fa4c --- /dev/null +++ b/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/RECORD @@ -0,0 +1,90 @@ +beautifulsoup4-4.13.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +beautifulsoup4-4.13.4.dist-info/METADATA,sha256=zXwPMgMEIdymEV_lAL0QzP34i6osem_P2nfqgaEexRo,3809 +beautifulsoup4-4.13.4.dist-info/RECORD,, +beautifulsoup4-4.13.4.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +beautifulsoup4-4.13.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87 +beautifulsoup4-4.13.4.dist-info/licenses/AUTHORS,sha256=uYkjiRjh_aweRnF8tAW2PpJJeickE68NmJwd9siry28,2201 +beautifulsoup4-4.13.4.dist-info/licenses/LICENSE,sha256=VbTY1LHlvIbRDvrJG3TIe8t3UmsPW57a-LnNKtxzl7I,1441 +bs4/__init__.py,sha256=ZkHAdXHt3PEkwDrx_Z4ABuz-T_-TSO8aL6Vpy9uiI8M,44212 +bs4/__pycache__/__init__.cpython-312.pyc,, +bs4/__pycache__/_deprecation.cpython-312.pyc,, +bs4/__pycache__/_typing.cpython-312.pyc,, +bs4/__pycache__/_warnings.cpython-312.pyc,, +bs4/__pycache__/css.cpython-312.pyc,, +bs4/__pycache__/dammit.cpython-312.pyc,, +bs4/__pycache__/diagnose.cpython-312.pyc,, +bs4/__pycache__/element.cpython-312.pyc,, +bs4/__pycache__/exceptions.cpython-312.pyc,, +bs4/__pycache__/filter.cpython-312.pyc,, +bs4/__pycache__/formatter.cpython-312.pyc,, +bs4/_deprecation.py,sha256=ucZjfBAUF1B0f5ldNIIhlkHsYjHtvwELWlE3_pAR6Vs,2394 +bs4/_typing.py,sha256=3FgPPPrdsTa-kvn1R36o1k_2SfilcUWm4M9i7G4qFl8,7118 +bs4/_warnings.py,sha256=ZuOETgcnEbZgw2N0nnNXn6wvtrn2ut7AF0d98bvkMFc,4711 +bs4/builder/__init__.py,sha256=TYAKmGFuVfTsI53reHijcZKETnPuvse57KZ6LsZsJRo,31130 +bs4/builder/__pycache__/__init__.cpython-312.pyc,, +bs4/builder/__pycache__/_html5lib.cpython-312.pyc,, +bs4/builder/__pycache__/_htmlparser.cpython-312.pyc,, +bs4/builder/__pycache__/_lxml.cpython-312.pyc,, +bs4/builder/_html5lib.py,sha256=3MXq29SYg9XoS9gu2hgTDU02IQkv8kIBx3rW1QWY3fg,22846 +bs4/builder/_htmlparser.py,sha256=cu9PFkxkqVIIe9nU3fVy-JJhINEhY8cGbsuCwZCnQCA,17872 +bs4/builder/_lxml.py,sha256=9L5pJ7ekI-G3HhOhoxcpjZPqDMRfUoWj4Nnku6B2uR8,18545 +bs4/css.py,sha256=XGQq7HQUDyYEbDorFMGIGek7QGPiFuZYnvNEQ59GyxM,12685 +bs4/dammit.py,sha256=oHd1elJ44kMobBGSQRuG7Wln6M-BLz1unOuUscaL9h0,51472 +bs4/diagnose.py,sha256=zy7_GPQHsTtNf8s10WWIRcC5xH5_8LKs295Aa7iFUyI,7832 +bs4/element.py,sha256=7w9cLT9oTU8lrWm9nnlPqHpa_v4U8UuyIUsWnTHYLbw,109768 +bs4/exceptions.py,sha256=Q9FOadNe8QRvzDMaKSXe2Wtl8JK_oAZW7mbFZBVP_GE,951 +bs4/filter.py,sha256=8lzv5yE0mw7jhYwPyDiFCfXAB4-wDiIgn7m8fmIKcGA,29031 +bs4/formatter.py,sha256=5O4gBxTTi5TLU6TdqsgYI9Io0Gc_6-oCAWpfHI3Thn0,10464 +bs4/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bs4/tests/__init__.py,sha256=ieOudaXvOWA_g4Gb25adCnhEabtEpRwf9_DdplXKdXQ,52671 +bs4/tests/__pycache__/__init__.cpython-312.pyc,, +bs4/tests/__pycache__/test_builder.cpython-312.pyc,, +bs4/tests/__pycache__/test_builder_registry.cpython-312.pyc,, +bs4/tests/__pycache__/test_css.cpython-312.pyc,, +bs4/tests/__pycache__/test_dammit.cpython-312.pyc,, +bs4/tests/__pycache__/test_element.cpython-312.pyc,, +bs4/tests/__pycache__/test_filter.cpython-312.pyc,, +bs4/tests/__pycache__/test_formatter.cpython-312.pyc,, +bs4/tests/__pycache__/test_fuzz.cpython-312.pyc,, +bs4/tests/__pycache__/test_html5lib.cpython-312.pyc,, +bs4/tests/__pycache__/test_htmlparser.cpython-312.pyc,, +bs4/tests/__pycache__/test_lxml.cpython-312.pyc,, +bs4/tests/__pycache__/test_navigablestring.cpython-312.pyc,, +bs4/tests/__pycache__/test_pageelement.cpython-312.pyc,, +bs4/tests/__pycache__/test_soup.cpython-312.pyc,, +bs4/tests/__pycache__/test_tag.cpython-312.pyc,, +bs4/tests/__pycache__/test_tree.cpython-312.pyc,, +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase,sha256=yUdXkbpNK7LVOQ0LBHMoqZ1rWaBfSXWytoO_xdSm7Ho,15 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase,sha256=Uv_dx4a43TSfoNkjU-jHW2nSXkqHFg4XdAw7SWVObUk,23 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase,sha256=OEyVA0Ej4FxswOElrUNt0In4s4YhrmtaxE_NHGZvGtg,30 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase,sha256=G4vpNBOz-RwMpi6ewEgNEa13zX0sXhmL7VHOyIcdKVQ,15347 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase,sha256=3d8z65o4p7Rur-RmCHoOjzqaYQ8EAtjmiBYTHNyAdl4,19469 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase,sha256=NfGIlit1k40Ip3mlnBkYOkIDJX6gHtjlErwl7gsBjAQ,12 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase,sha256=xy4i1U0nhFHcnyc5pRKS6JRMvuoCNUur-Scor6UxIGw,4317 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase,sha256=Q-UTYpQBUsWoMgIUspUlzveSI-41s4ABC3jajRb-K0o,11502 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase,sha256=2bq3S8KxZgk8EajLReHD8m4_0Lj_nrkyJAxB_z_U0D0,5 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase,sha256=MZDu31LPLfgu6jP9IZkrlwNes3f_sL8WFP5BChkUKdY,35 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase,sha256=w58r-s6besG5JwPXpnz37W2YTj9-_qxFbk6hiEnKeIQ,51495 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase,sha256=q8rkdMECEXKcqVhOf5zWHkSBTQeOPt0JiLg2TZiPCuk,10380 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase,sha256=QfzoOxKwNuqG-4xIrea6MOQLXhfAAOQJ0r9u-J6kSNs,19 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6306874195312640.testcase,sha256=MJ2pHFuuCQUiQz1Kor2sof7LWeRERQ6QK43YNqQHg9o,47 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase,sha256=EItOpSdeD4ewK-qgJ9vtxennwn_huguzXgctrUT7fqE,3546 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase,sha256=a2aJTG4FceGSJXsjtxoS8S4jk_8rZsS3aznLkeO2_dY,124 +bs4/tests/fuzz/crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase,sha256=jRFRtCKlP3-3EDLc_iVRTcE6JNymv0rYcVM6qRaPrxI,2607 +bs4/tests/fuzz/crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase,sha256=7NsdCiXWAhNkmoW1pvF7rbZExyLAQIWtDtSHXIsH6YU,103 +bs4/tests/test_builder.py,sha256=BBMBirb4mb-fVdJj4dxQCxrdcjQeulKSKBFrPFVpVOk,1095 +bs4/tests/test_builder_registry.py,sha256=tpJ5Niva_cF49SdzIb1gMo0W4Tiodr8BYSOE3O6P_g8,5064 +bs4/tests/test_css.py,sha256=T_HCMzpe6hTr8d2YFXm0DScr8gT8d6h0MYlhZfo6A4U,18625 +bs4/tests/test_dammit.py,sha256=TQCVe6kKVYSuYjwTtIvIaOYYmWYPMnR_3PK45kimLg4,17840 +bs4/tests/test_element.py,sha256=u7FbTtKE6pYJetD1PgS3fCU1-QQXfB7GaLwfI3s4ROY,4373 +bs4/tests/test_filter.py,sha256=JzvU3eI4r1QyNIHKqhxbZ-M7q5qgw-S7Y73MGI2tNr4,27395 +bs4/tests/test_formatter.py,sha256=a6TaeNOVeg_ZYseiP7atmFyYJkQJqlk-jlVxMlyJC2o,6943 +bs4/tests/test_fuzz.py,sha256=zyaoWgCt8hnRkXecBYM9x91fI_Ao9eQUcsBi76ooJ08,7123 +bs4/tests/test_html5lib.py,sha256=ljMOAds__k9zhfT4jVnxxhZkLEggaT7wqDexzDNwus4,9206 +bs4/tests/test_htmlparser.py,sha256=iDHEI69GcisNP48BeHdLAWlqPGhrBwxftnUM8_3nsR4,6662 +bs4/tests/test_lxml.py,sha256=4fZIsNVbm2zdRQFNNwD-lqwf_QtUtiU4QbtLXISQZBw,7453 +bs4/tests/test_navigablestring.py,sha256=5-vs86ujXcs6LjT1lPYQHLi2ag3eBtFfnrOrjzV665M,5599 +bs4/tests/test_pageelement.py,sha256=lAw-sVP3zJX0VdHXXN1Ia3tci5dgK10Gac5o9G46IIk,16195 +bs4/tests/test_soup.py,sha256=I-mhNheo2-PTvfJToDI43EO4RmGlpKJsYOS19YoQ7-8,22669 +bs4/tests/test_tag.py,sha256=ue32hxQs_a1cMuzyu7MNjK42t0IOGMA6POPLIArMOts,9690 +bs4/tests/test_tree.py,sha256=Iw2e2spk19PEtCObE0ymgJH4n4F5_KbMvpcOeblHBsI,55074 diff --git a/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/REQUESTED b/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/WHEEL b/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/WHEEL new file mode 100644 index 0000000..12228d4 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/WHEEL @@ -0,0 +1,4 @@ +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/beautifulsoup4-4.13.4.dist-info/licenses/AUTHORS b/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/licenses/AUTHORS new file mode 100644 index 0000000..18926c2 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/licenses/AUTHORS @@ -0,0 +1,49 @@ +Behold, mortal, the origins of Beautiful Soup... +================================================ + +Leonard Richardson is the primary maintainer. + +Aaron DeVore, Isaac Muse and Chris Papademetrious have made +significant contributions to the code base. + +Mark Pilgrim provided the encoding detection code that forms the base +of UnicodeDammit. + +Thomas Kluyver and Ezio Melotti finished the work of getting Beautiful +Soup 4 working under Python 3. + +Simon Willison wrote soupselect, which was used to make Beautiful Soup +support CSS selectors. Isaac Muse wrote SoupSieve, which made it +possible to _remove_ the CSS selector code from Beautiful Soup. + +Sam Ruby helped with a lot of edge cases. + +Jonathan Ellis was awarded the prestigious Beau Potage D'Or for his +work in solving the nestable tags conundrum. + +An incomplete list of people have contributed patches to Beautiful +Soup: + + Istvan Albert, Andrew Lin, Anthony Baxter, Oliver Beattie, Andrew +Boyko, Tony Chang, Francisco Canas, "Delong", Zephyr Fang, Fuzzy, +Roman Gaufman, Yoni Gilad, Richie Hindle, Toshihiro Kamiya, Peteris +Krumins, Kent Johnson, Marek Kapolka, Andreas Kostyrka, Roel Kramer, +Ben Last, Robert Leftwich, Stefaan Lippens, "liquider", Staffan +Malmgren, Ksenia Marasanova, JP Moins, Adam Monsen, John Nagle, "Jon", +Ed Oskiewicz, Martijn Peters, Greg Phillips, Giles Radford, Stefano +Revera, Arthur Rudolph, Marko Samastur, James Salter, Jouni Seppänen, +Alexander Schmolck, Tim Shirley, Geoffrey Sneddon, Ville Skyttä, +"Vikas", Jens Svalgaard, Andy Theyers, Eric Weiser, Glyn Webster, John +Wiseman, Paul Wright, Danny Yoo + +An incomplete list of people who made suggestions or found bugs or +found ways to break Beautiful Soup: + + Hanno Böck, Matteo Bertini, Chris Curvey, Simon Cusack, Bruce Eckel, + Matt Ernst, Michael Foord, Tom Harris, Bill de hOra, Donald Howes, + Matt Patterson, Scott Roberts, Steve Strassmann, Mike Williams, + warchild at redho dot com, Sami Kuisma, Carlos Rocha, Bob Hutchison, + Joren Mc, Michal Migurski, John Kleven, Tim Heaney, Tripp Lilley, Ed + Summers, Dennis Sutch, Chris Smith, Aaron Swartz, Stuart + Turner, Greg Edwards, Kevin J Kalupson, Nikos Kouremenos, Artur de + Sousa Rocha, Yichun Wei, Per Vognsen diff --git a/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/licenses/LICENSE b/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/licenses/LICENSE new file mode 100644 index 0000000..08e3a9c --- /dev/null +++ b/.venv/lib/python3.12/site-packages/beautifulsoup4-4.13.4.dist-info/licenses/LICENSE @@ -0,0 +1,31 @@ +Beautiful Soup is made available under the MIT license: + + Copyright (c) Leonard Richardson + + 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. + +Beautiful Soup incorporates code from the html5lib library, which is +also made available under the MIT license. Copyright (c) James Graham +and other contributors + +Beautiful Soup has an optional dependency on the soupsieve library, +which is also made available under the MIT license. Copyright (c) +Isaac Muse diff --git a/.venv/lib/python3.12/site-packages/bs4/__init__.py b/.venv/lib/python3.12/site-packages/bs4/__init__.py new file mode 100644 index 0000000..324fcfa --- /dev/null +++ b/.venv/lib/python3.12/site-packages/bs4/__init__.py @@ -0,0 +1,1170 @@ +"""Beautiful Soup Elixir and Tonic - "The Screen-Scraper's Friend". + +http://www.crummy.com/software/BeautifulSoup/ + +Beautiful Soup uses a pluggable XML or HTML parser to parse a +(possibly invalid) document into a tree representation. Beautiful Soup +provides methods and Pythonic idioms that make it easy to navigate, +search, and modify the parse tree. + +Beautiful Soup works with Python 3.7 and up. It works better if lxml +and/or html5lib is installed, but they are not required. + +For more than you ever wanted to know about Beautiful Soup, see the +documentation: http://www.crummy.com/software/BeautifulSoup/bs4/doc/ +""" + +__author__ = "Leonard Richardson (leonardr@segfault.org)" +__version__ = "4.13.4" +__copyright__ = "Copyright (c) 2004-2025 Leonard Richardson" +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +__all__ = [ + "AttributeResemblesVariableWarning", + "BeautifulSoup", + "Comment", + "Declaration", + "ProcessingInstruction", + "ResultSet", + "CSS", + "Script", + "Stylesheet", + "Tag", + "TemplateString", + "ElementFilter", + "UnicodeDammit", + "CData", + "Doctype", + + # Exceptions + "FeatureNotFound", + "ParserRejectedMarkup", + "StopParsing", + + # Warnings + "AttributeResemblesVariableWarning", + "GuessedAtParserWarning", + "MarkupResemblesLocatorWarning", + "UnusualUsageWarning", + "XMLParsedAsHTMLWarning", +] + +from collections import Counter +import sys +import warnings + +# The very first thing we do is give a useful error if someone is +# running this code under Python 2. +if sys.version_info.major < 3: + raise ImportError( + "You are trying to use a Python 3-specific version of Beautiful Soup under Python 2. This will not work. The final version of Beautiful Soup to support Python 2 was 4.9.3." + ) + +from .builder import ( + builder_registry, + TreeBuilder, +) +from .builder._htmlparser import HTMLParserTreeBuilder +from .dammit import UnicodeDammit +from .css import CSS +from ._deprecation import ( + _deprecated, +) +from .element import ( + CData, + Comment, + DEFAULT_OUTPUT_ENCODING, + Declaration, + Doctype, + NavigableString, + PageElement, + ProcessingInstruction, + PYTHON_SPECIFIC_ENCODINGS, + ResultSet, + Script, + Stylesheet, + Tag, + TemplateString, +) +from .formatter import Formatter +from .filter import ( + ElementFilter, + SoupStrainer, +) +from typing import ( + Any, + cast, + Counter as CounterType, + Dict, + Iterator, + List, + Sequence, + Optional, + Type, + Union, +) + +from bs4._typing import ( + _Encoding, + _Encodings, + _IncomingMarkup, + _InsertableElement, + _RawAttributeValue, + _RawAttributeValues, + _RawMarkup, +) + +# Import all warnings and exceptions into the main package. +from bs4.exceptions import ( + FeatureNotFound, + ParserRejectedMarkup, + StopParsing, +) +from bs4._warnings import ( + AttributeResemblesVariableWarning, + GuessedAtParserWarning, + MarkupResemblesLocatorWarning, + UnusualUsageWarning, + XMLParsedAsHTMLWarning, +) + + +class BeautifulSoup(Tag): + """A data structure representing a parsed HTML or XML document. + + Most of the methods you'll call on a BeautifulSoup object are inherited from + PageElement or Tag. + + Internally, this class defines the basic interface called by the + tree builders when converting an HTML/XML document into a data + structure. The interface abstracts away the differences between + parsers. To write a new tree builder, you'll need to understand + these methods as a whole. + + These methods will be called by the BeautifulSoup constructor: + * reset() + * feed(markup) + + The tree builder may call these methods from its feed() implementation: + * handle_starttag(name, attrs) # See note about return value + * handle_endtag(name) + * handle_data(data) # Appends to the current data node + * endData(containerClass) # Ends the current data node + + No matter how complicated the underlying parser is, you should be + able to build a tree using 'start tag' events, 'end tag' events, + 'data' events, and "done with data" events. + + If you encounter an empty-element tag (aka a self-closing tag, + like HTML's
tag), call handle_starttag and then + handle_endtag. + """ + + #: Since `BeautifulSoup` subclasses `Tag`, it's possible to treat it as + #: a `Tag` with a `Tag.name`. Hoever, this name makes it clear the + #: `BeautifulSoup` object isn't a real markup tag. + ROOT_TAG_NAME: str = "[document]" + + #: If the end-user gives no indication which tree builder they + #: want, look for one with these features. + DEFAULT_BUILDER_FEATURES: Sequence[str] = ["html", "fast"] + + #: A string containing all ASCII whitespace characters, used in + #: during parsing to detect data chunks that seem 'empty'. + ASCII_SPACES: str = "\x20\x0a\x09\x0c\x0d" + + # FUTURE PYTHON: + element_classes: Dict[Type[PageElement], Type[PageElement]] #: :meta private: + builder: TreeBuilder #: :meta private: + is_xml: bool + known_xml: Optional[bool] + parse_only: Optional[SoupStrainer] #: :meta private: + + # These members are only used while parsing markup. + markup: Optional[_RawMarkup] #: :meta private: + current_data: List[str] #: :meta private: + currentTag: Optional[Tag] #: :meta private: + tagStack: List[Tag] #: :meta private: + open_tag_counter: CounterType[str] #: :meta private: + preserve_whitespace_tag_stack: List[Tag] #: :meta private: + string_container_stack: List[Tag] #: :meta private: + _most_recent_element: Optional[PageElement] #: :meta private: + + #: Beautiful Soup's best guess as to the character encoding of the + #: original document. + original_encoding: Optional[_Encoding] + + #: The character encoding, if any, that was explicitly defined + #: in the original document. This may or may not match + #: `BeautifulSoup.original_encoding`. + declared_html_encoding: Optional[_Encoding] + + #: This is True if the markup that was parsed contains + #: U+FFFD REPLACEMENT_CHARACTER characters which were not present + #: in the original markup. These mark character sequences that + #: could not be represented in Unicode. + contains_replacement_characters: bool + + def __init__( + self, + markup: _IncomingMarkup = "", + features: Optional[Union[str, Sequence[str]]] = None, + builder: Optional[Union[TreeBuilder, Type[TreeBuilder]]] = None, + parse_only: Optional[SoupStrainer] = None, + from_encoding: Optional[_Encoding] = None, + exclude_encodings: Optional[_Encodings] = None, + element_classes: Optional[Dict[Type[PageElement], Type[PageElement]]] = None, + **kwargs: Any, + ): + """Constructor. + + :param markup: A string or a file-like object representing + markup to be parsed. + + :param features: Desirable features of the parser to be + used. This may be the name of a specific parser ("lxml", + "lxml-xml", "html.parser", or "html5lib") or it may be the + type of markup to be used ("html", "html5", "xml"). It's + recommended that you name a specific parser, so that + Beautiful Soup gives you the same results across platforms + and virtual environments. + + :param builder: A TreeBuilder subclass to instantiate (or + instance to use) instead of looking one up based on + `features`. You only need to use this if you've implemented a + custom TreeBuilder. + + :param parse_only: A SoupStrainer. Only parts of the document + matching the SoupStrainer will be considered. This is useful + when parsing part of a document that would otherwise be too + large to fit into memory. + + :param from_encoding: A string indicating the encoding of the + document to be parsed. Pass this in if Beautiful Soup is + guessing wrongly about the document's encoding. + + :param exclude_encodings: A list of strings indicating + encodings known to be wrong. Pass this in if you don't know + the document's encoding but you know Beautiful Soup's guess is + wrong. + + :param element_classes: A dictionary mapping BeautifulSoup + classes like Tag and NavigableString, to other classes you'd + like to be instantiated instead as the parse tree is + built. This is useful for subclassing Tag or NavigableString + to modify default behavior. + + :param kwargs: For backwards compatibility purposes, the + constructor accepts certain keyword arguments used in + Beautiful Soup 3. None of these arguments do anything in + Beautiful Soup 4; they will result in a warning and then be + ignored. + + Apart from this, any keyword arguments passed into the + BeautifulSoup constructor are propagated to the TreeBuilder + constructor. This makes it possible to configure a + TreeBuilder by passing in arguments, not just by saying which + one to use. + """ + if "convertEntities" in kwargs: + del kwargs["convertEntities"] + warnings.warn( + "BS4 does not respect the convertEntities argument to the " + "BeautifulSoup constructor. Entities are always converted " + "to Unicode characters." + ) + + if "markupMassage" in kwargs: + del kwargs["markupMassage"] + warnings.warn( + "BS4 does not respect the markupMassage argument to the " + "BeautifulSoup constructor. The tree builder is responsible " + "for any necessary markup massage." + ) + + if "smartQuotesTo" in kwargs: + del kwargs["smartQuotesTo"] + warnings.warn( + "BS4 does not respect the smartQuotesTo argument to the " + "BeautifulSoup constructor. Smart quotes are always converted " + "to Unicode characters." + ) + + if "selfClosingTags" in kwargs: + del kwargs["selfClosingTags"] + warnings.warn( + "Beautiful Soup 4 does not respect the selfClosingTags argument to the " + "BeautifulSoup constructor. The tree builder is responsible " + "for understanding self-closing tags." + ) + + if "isHTML" in kwargs: + del kwargs["isHTML"] + warnings.warn( + "Beautiful Soup 4 does not respect the isHTML argument to the " + "BeautifulSoup constructor. Suggest you use " + "features='lxml' for HTML and features='lxml-xml' for " + "XML." + ) + + def deprecated_argument(old_name: str, new_name: str) -> Optional[Any]: + if old_name in kwargs: + warnings.warn( + 'The "%s" argument to the BeautifulSoup constructor ' + 'was renamed to "%s" in Beautiful Soup 4.0.0' + % (old_name, new_name), + DeprecationWarning, + stacklevel=3, + ) + return kwargs.pop(old_name) + return None + + parse_only = parse_only or deprecated_argument("parseOnlyThese", "parse_only") + if parse_only is not None: + # Issue a warning if we can tell in advance that + # parse_only will exclude the entire tree. + if parse_only.excludes_everything: + warnings.warn( + f"The given value for parse_only will exclude everything: {parse_only}", + UserWarning, + stacklevel=3, + ) + + from_encoding = from_encoding or deprecated_argument( + "fromEncoding", "from_encoding" + ) + + if from_encoding and isinstance(markup, str): + warnings.warn( + "You provided Unicode markup but also provided a value for from_encoding. Your from_encoding will be ignored." + ) + from_encoding = None + + self.element_classes = element_classes or dict() + + # We need this information to track whether or not the builder + # was specified well enough that we can omit the 'you need to + # specify a parser' warning. + original_builder = builder + original_features = features + + builder_class: Type[TreeBuilder] + if isinstance(builder, type): + # A builder class was passed in; it needs to be instantiated. + builder_class = builder + builder = None + elif builder is None: + if isinstance(features, str): + features = [features] + if features is None or len(features) == 0: + features = self.DEFAULT_BUILDER_FEATURES + possible_builder_class = builder_registry.lookup(*features) + if possible_builder_class is None: + raise FeatureNotFound( + "Couldn't find a tree builder with the features you " + "requested: %s. Do you need to install a parser library?" + % ",".join(features) + ) + builder_class = possible_builder_class + + # At this point either we have a TreeBuilder instance in + # builder, or we have a builder_class that we can instantiate + # with the remaining **kwargs. + if builder is None: + builder = builder_class(**kwargs) + if ( + not original_builder + and not ( + original_features == builder.NAME + or ( + isinstance(original_features, str) + and original_features in builder.ALTERNATE_NAMES + ) + ) + and markup + ): + # The user did not tell us which TreeBuilder to use, + # and we had to guess. Issue a warning. + if builder.is_xml: + markup_type = "XML" + else: + markup_type = "HTML" + + # This code adapted from warnings.py so that we get the same line + # of code as our warnings.warn() call gets, even if the answer is wrong + # (as it may be in a multithreading situation). + caller = None + try: + caller = sys._getframe(1) + except ValueError: + pass + if caller: + globals = caller.f_globals + line_number = caller.f_lineno + else: + globals = sys.__dict__ + line_number = 1 + filename = globals.get("__file__") + if filename: + fnl = filename.lower() + if fnl.endswith((".pyc", ".pyo")): + filename = filename[:-1] + if filename: + # If there is no filename at all, the user is most likely in a REPL, + # and the warning is not necessary. + values = dict( + filename=filename, + line_number=line_number, + parser=builder.NAME, + markup_type=markup_type, + ) + warnings.warn( + GuessedAtParserWarning.MESSAGE % values, + GuessedAtParserWarning, + stacklevel=2, + ) + else: + if kwargs: + warnings.warn( + "Keyword arguments to the BeautifulSoup constructor will be ignored. These would normally be passed into the TreeBuilder constructor, but a TreeBuilder instance was passed in as `builder`." + ) + + self.builder = builder + self.is_xml = builder.is_xml + self.known_xml = self.is_xml + self._namespaces = dict() + self.parse_only = parse_only + + if hasattr(markup, "read"): # It's a file-type object. + markup = markup.read() + elif not isinstance(markup, (bytes, str)) and not hasattr(markup, "__len__"): + raise TypeError( + f"Incoming markup is of an invalid type: {markup!r}. Markup must be a string, a bytestring, or an open filehandle." + ) + elif len(markup) <= 256 and ( + (isinstance(markup, bytes) and b"<" not in markup and b"\n" not in markup) + or (isinstance(markup, str) and "<" not in markup and "\n" not in markup) + ): + # Issue warnings for a couple beginner problems + # involving passing non-markup to Beautiful Soup. + # Beautiful Soup will still parse the input as markup, + # since that is sometimes the intended behavior. + if not self._markup_is_url(markup): + self._markup_resembles_filename(markup) + + # At this point we know markup is a string or bytestring. If + # it was a file-type object, we've read from it. + markup = cast(_RawMarkup, markup) + + rejections = [] + success = False + for ( + self.markup, + self.original_encoding, + self.declared_html_encoding, + self.contains_replacement_characters, + ) in self.builder.prepare_markup( + markup, from_encoding, exclude_encodings=exclude_encodings + ): + self.reset() + self.builder.initialize_soup(self) + try: + self._feed() + success = True + break + except ParserRejectedMarkup as e: + rejections.append(e) + pass + + if not success: + other_exceptions = [str(e) for e in rejections] + raise ParserRejectedMarkup( + "The markup you provided was rejected by the parser. Trying a different parser or a different encoding may help.\n\nOriginal exception(s) from parser:\n " + + "\n ".join(other_exceptions) + ) + + # Clear out the markup and remove the builder's circular + # reference to this object. + self.markup = None + self.builder.soup = None + + def copy_self(self) -> "BeautifulSoup": + """Create a new BeautifulSoup object with the same TreeBuilder, + but not associated with any markup. + + This is the first step of the deepcopy process. + """ + clone = type(self)("", None, self.builder) + + # Keep track of the encoding of the original document, + # since we won't be parsing it again. + clone.original_encoding = self.original_encoding + return clone + + def __getstate__(self) -> Dict[str, Any]: + # Frequently a tree builder can't be pickled. + d = dict(self.__dict__) + if "builder" in d and d["builder"] is not None and not self.builder.picklable: + d["builder"] = type(self.builder) + # Store the contents as a Unicode string. + d["contents"] = [] + d["markup"] = self.decode() + + # If _most_recent_element is present, it's a Tag object left + # over from initial parse. It might not be picklable and we + # don't need it. + if "_most_recent_element" in d: + del d["_most_recent_element"] + return d + + def __setstate__(self, state: Dict[str, Any]) -> None: + # If necessary, restore the TreeBuilder by looking it up. + self.__dict__ = state + if isinstance(self.builder, type): + self.builder = self.builder() + elif not self.builder: + # We don't know which builder was used to build this + # parse tree, so use a default we know is always available. + self.builder = HTMLParserTreeBuilder() + self.builder.soup = self + self.reset() + self._feed() + + @classmethod + @_deprecated( + replaced_by="nothing (private method, will be removed)", version="4.13.0" + ) + def _decode_markup(cls, markup: _RawMarkup) -> str: + """Ensure `markup` is Unicode so it's safe to send into warnings.warn. + + warnings.warn had this problem back in 2010 but fortunately + not anymore. This has not been used for a long time; I just + noticed that fact while working on 4.13.0. + """ + if isinstance(markup, bytes): + decoded = markup.decode("utf-8", "replace") + else: + decoded = markup + return decoded + + @classmethod + def _markup_is_url(cls, markup: _RawMarkup) -> bool: + """Error-handling method to raise a warning if incoming markup looks + like a URL. + + :param markup: A string of markup. + :return: Whether or not the markup resembled a URL + closely enough to justify issuing a warning. + """ + problem: bool = False + if isinstance(markup, bytes): + problem = ( + any(markup.startswith(prefix) for prefix in (b"http:", b"https:")) + and b" " not in markup + ) + elif isinstance(markup, str): + problem = ( + any(markup.startswith(prefix) for prefix in ("http:", "https:")) + and " " not in markup + ) + else: + return False + + if not problem: + return False + warnings.warn( + MarkupResemblesLocatorWarning.URL_MESSAGE % dict(what="URL"), + MarkupResemblesLocatorWarning, + stacklevel=3, + ) + return True + + @classmethod + def _markup_resembles_filename(cls, markup: _RawMarkup) -> bool: + """Error-handling method to issue a warning if incoming markup + resembles a filename. + + :param markup: A string of markup. + :return: Whether or not the markup resembled a filename + closely enough to justify issuing a warning. + """ + markup_b: bytes + + # We're only checking ASCII characters, so rather than write + # the same tests twice, convert Unicode to a bytestring and + # operate on the bytestring. + if isinstance(markup, str): + markup_b = markup.encode("utf8") + else: + markup_b = markup + + # Step 1: does it end with a common textual file extension? + filelike = False + lower = markup_b.lower() + extensions = [b".html", b".htm", b".xml", b".xhtml", b".txt"] + if any(lower.endswith(ext) for ext in extensions): + filelike = True + if not filelike: + return False + + # Step 2: it _might_ be a file, but there are a few things + # we can look for that aren't very common in filenames. + + # Characters that have special meaning to Unix shells. (< was + # excluded before this method was called.) + # + # Many of these are also reserved characters that cannot + # appear in Windows filenames. + for byte in markup_b: + if byte in b"?*#&;>$|": + return False + + # Two consecutive forward slashes (as seen in a URL) or two + # consecutive spaces (as seen in fixed-width data). + # + # (Paths to Windows network shares contain consecutive + # backslashes, so checking that doesn't seem as helpful.) + if b"//" in markup_b: + return False + if b" " in markup_b: + return False + + # A colon in any position other than position 1 (e.g. after a + # Windows drive letter). + if markup_b.startswith(b":"): + return False + colon_i = markup_b.rfind(b":") + if colon_i not in (-1, 1): + return False + + # Step 3: If it survived all of those checks, it's similar + # enough to a file to justify issuing a warning. + warnings.warn( + MarkupResemblesLocatorWarning.FILENAME_MESSAGE % dict(what="filename"), + MarkupResemblesLocatorWarning, + stacklevel=3, + ) + return True + + def _feed(self) -> None: + """Internal method that parses previously set markup, creating a large + number of Tag and NavigableString objects. + """ + # Convert the document to Unicode. + self.builder.reset() + + if self.markup is not None: + self.builder.feed(self.markup) + # Close out any unfinished strings and close all the open tags. + self.endData() + while ( + self.currentTag is not None and self.currentTag.name != self.ROOT_TAG_NAME + ): + self.popTag() + + def reset(self) -> None: + """Reset this object to a state as though it had never parsed any + markup. + """ + Tag.__init__(self, self, self.builder, self.ROOT_TAG_NAME) + self.hidden = True + self.builder.reset() + self.current_data = [] + self.currentTag = None + self.tagStack = [] + self.open_tag_counter = Counter() + self.preserve_whitespace_tag_stack = [] + self.string_container_stack = [] + self._most_recent_element = None + self.pushTag(self) + + def new_tag( + self, + name: str, + namespace: Optional[str] = None, + nsprefix: Optional[str] = None, + attrs: Optional[_RawAttributeValues] = None, + sourceline: Optional[int] = None, + sourcepos: Optional[int] = None, + string: Optional[str] = None, + **kwattrs: _RawAttributeValue, + ) -> Tag: + """Create a new Tag associated with this BeautifulSoup object. + + :param name: The name of the new Tag. + :param namespace: The URI of the new Tag's XML namespace, if any. + :param prefix: The prefix for the new Tag's XML namespace, if any. + :param attrs: A dictionary of this Tag's attribute values; can + be used instead of ``kwattrs`` for attributes like 'class' + that are reserved words in Python. + :param sourceline: The line number where this tag was + (purportedly) found in its source document. + :param sourcepos: The character position within ``sourceline`` where this + tag was (purportedly) found. + :param string: String content for the new Tag, if any. + :param kwattrs: Keyword arguments for the new Tag's attribute values. + + """ + attr_container = self.builder.attribute_dict_class(**kwattrs) + if attrs is not None: + attr_container.update(attrs) + tag_class = self.element_classes.get(Tag, Tag) + + # Assume that this is either Tag or a subclass of Tag. If not, + # the user brought type-unsafety upon themselves. + tag_class = cast(Type[Tag], tag_class) + tag = tag_class( + None, + self.builder, + name, + namespace, + nsprefix, + attr_container, + sourceline=sourceline, + sourcepos=sourcepos, + ) + + if string is not None: + tag.string = string + return tag + + def string_container( + self, base_class: Optional[Type[NavigableString]] = None + ) -> Type[NavigableString]: + """Find the class that should be instantiated to hold a given kind of + string. + + This may be a built-in Beautiful Soup class or a custom class passed + in to the BeautifulSoup constructor. + """ + container = base_class or NavigableString + + # The user may want us to use some other class (hopefully a + # custom subclass) instead of the one we'd use normally. + container = cast( + Type[NavigableString], self.element_classes.get(container, container) + ) + + # On top of that, we may be inside a tag that needs a special + # container class. + if self.string_container_stack and container is NavigableString: + container = self.builder.string_containers.get( + self.string_container_stack[-1].name, container + ) + return container + + def new_string( + self, s: str, subclass: Optional[Type[NavigableString]] = None + ) -> NavigableString: + """Create a new `NavigableString` associated with this `BeautifulSoup` + object. + + :param s: The string content of the `NavigableString` + :param subclass: The subclass of `NavigableString`, if any, to + use. If a document is being processed, an appropriate + subclass for the current location in the document will + be determined automatically. + """ + container = self.string_container(subclass) + return container(s) + + def insert_before(self, *args: _InsertableElement) -> List[PageElement]: + """This method is part of the PageElement API, but `BeautifulSoup` doesn't implement + it because there is nothing before or after it in the parse tree. + """ + raise NotImplementedError( + "BeautifulSoup objects don't support insert_before()." + ) + + def insert_after(self, *args: _InsertableElement) -> List[PageElement]: + """This method is part of the PageElement API, but `BeautifulSoup` doesn't implement + it because there is nothing before or after it in the parse tree. + """ + raise NotImplementedError("BeautifulSoup objects don't support insert_after().") + + def popTag(self) -> Optional[Tag]: + """Internal method called by _popToTag when a tag is closed. + + :meta private: + """ + if not self.tagStack: + # Nothing to pop. This shouldn't happen. + return None + tag = self.tagStack.pop() + if tag.name in self.open_tag_counter: + self.open_tag_counter[tag.name] -= 1 + if ( + self.preserve_whitespace_tag_stack + and tag == self.preserve_whitespace_tag_stack[-1] + ): + self.preserve_whitespace_tag_stack.pop() + if self.string_container_stack and tag == self.string_container_stack[-1]: + self.string_container_stack.pop() + # print("Pop", tag.name) + if self.tagStack: + self.currentTag = self.tagStack[-1] + return self.currentTag + + def pushTag(self, tag: Tag) -> None: + """Internal method called by handle_starttag when a tag is opened. + + :meta private: + """ + # print("Push", tag.name) + if self.currentTag is not None: + self.currentTag.contents.append(tag) + self.tagStack.append(tag) + self.currentTag = self.tagStack[-1] + if tag.name != self.ROOT_TAG_NAME: + self.open_tag_counter[tag.name] += 1 + if tag.name in self.builder.preserve_whitespace_tags: + self.preserve_whitespace_tag_stack.append(tag) + if tag.name in self.builder.string_containers: + self.string_container_stack.append(tag) + + def endData(self, containerClass: Optional[Type[NavigableString]] = None) -> None: + """Method called by the TreeBuilder when the end of a data segment + occurs. + + :param containerClass: The class to use when incorporating the + data segment into the parse tree. + + :meta private: + """ + if self.current_data: + current_data = "".join(self.current_data) + # If whitespace is not preserved, and this string contains + # nothing but ASCII spaces, replace it with a single space + # or newline. + if not self.preserve_whitespace_tag_stack: + strippable = True + for i in current_data: + if i not in self.ASCII_SPACES: + strippable = False + break + if strippable: + if "\n" in current_data: + current_data = "\n" + else: + current_data = " " + + # Reset the data collector. + self.current_data = [] + + # Should we add this string to the tree at all? + if ( + self.parse_only + and len(self.tagStack) <= 1 + and (not self.parse_only.allow_string_creation(current_data)) + ): + return + + containerClass = self.string_container(containerClass) + o = containerClass(current_data) + self.object_was_parsed(o) + + def object_was_parsed( + self, + o: PageElement, + parent: Optional[Tag] = None, + most_recent_element: Optional[PageElement] = None, + ) -> None: + """Method called by the TreeBuilder to integrate an object into the + parse tree. + + :meta private: + """ + if parent is None: + parent = self.currentTag + assert parent is not None + previous_element: Optional[PageElement] + if most_recent_element is not None: + previous_element = most_recent_element + else: + previous_element = self._most_recent_element + + next_element = previous_sibling = next_sibling = None + if isinstance(o, Tag): + next_element = o.next_element + next_sibling = o.next_sibling + previous_sibling = o.previous_sibling + if previous_element is None: + previous_element = o.previous_element + + fix = parent.next_element is not None + + o.setup(parent, previous_element, next_element, previous_sibling, next_sibling) + + self._most_recent_element = o + parent.contents.append(o) + + # Check if we are inserting into an already parsed node. + if fix: + self._linkage_fixer(parent) + + def _linkage_fixer(self, el: Tag) -> None: + """Make sure linkage of this fragment is sound.""" + + first = el.contents[0] + child = el.contents[-1] + descendant: PageElement = child + + if child is first and el.parent is not None: + # Parent should be linked to first child + el.next_element = child + # We are no longer linked to whatever this element is + prev_el = child.previous_element + if prev_el is not None and prev_el is not el: + prev_el.next_element = None + # First child should be linked to the parent, and no previous siblings. + child.previous_element = el + child.previous_sibling = None + + # We have no sibling as we've been appended as the last. + child.next_sibling = None + + # This index is a tag, dig deeper for a "last descendant" + if isinstance(child, Tag) and child.contents: + # _last_decendant is typed as returning Optional[PageElement], + # but the value can't be None here, because el is a Tag + # which we know has contents. + descendant = cast(PageElement, child._last_descendant(False)) + + # As the final step, link last descendant. It should be linked + # to the parent's next sibling (if found), else walk up the chain + # and find a parent with a sibling. It should have no next sibling. + descendant.next_element = None + descendant.next_sibling = None + + target: Optional[Tag] = el + while True: + if target is None: + break + elif target.next_sibling is not None: + descendant.next_element = target.next_sibling + target.next_sibling.previous_element = child + break + target = target.parent + + def _popToTag( + self, name: str, nsprefix: Optional[str] = None, inclusivePop: bool = True + ) -> Optional[Tag]: + """Pops the tag stack up to and including the most recent + instance of the given tag. + + If there are no open tags with the given name, nothing will be + popped. + + :param name: Pop up to the most recent tag with this name. + :param nsprefix: The namespace prefix that goes with `name`. + :param inclusivePop: It this is false, pops the tag stack up + to but *not* including the most recent instqance of the + given tag. + + :meta private: + """ + # print("Popping to %s" % name) + if name == self.ROOT_TAG_NAME: + # The BeautifulSoup object itself can never be popped. + return None + + most_recently_popped = None + + stack_size = len(self.tagStack) + for i in range(stack_size - 1, 0, -1): + if not self.open_tag_counter.get(name): + break + t = self.tagStack[i] + if name == t.name and nsprefix == t.prefix: + if inclusivePop: + most_recently_popped = self.popTag() + break + most_recently_popped = self.popTag() + + return most_recently_popped + + def handle_starttag( + self, + name: str, + namespace: Optional[str], + nsprefix: Optional[str], + attrs: _RawAttributeValues, + sourceline: Optional[int] = None, + sourcepos: Optional[int] = None, + namespaces: Optional[Dict[str, str]] = None, + ) -> Optional[Tag]: + """Called by the tree builder when a new tag is encountered. + + :param name: Name of the tag. + :param nsprefix: Namespace prefix for the tag. + :param attrs: A dictionary of attribute values. Note that + attribute values are expected to be simple strings; processing + of multi-valued attributes such as "class" comes later. + :param sourceline: The line number where this tag was found in its + source document. + :param sourcepos: The character position within `sourceline` where this + tag was found. + :param namespaces: A dictionary of all namespace prefix mappings + currently in scope in the document. + + If this method returns None, the tag was rejected by an active + `ElementFilter`. You should proceed as if the tag had not occurred + in the document. For instance, if this was a self-closing tag, + don't call handle_endtag. + + :meta private: + """ + # print("Start tag %s: %s" % (name, attrs)) + self.endData() + + if ( + self.parse_only + and len(self.tagStack) <= 1 + and not self.parse_only.allow_tag_creation(nsprefix, name, attrs) + ): + return None + + tag_class = self.element_classes.get(Tag, Tag) + # Assume that this is either Tag or a subclass of Tag. If not, + # the user brought type-unsafety upon themselves. + tag_class = cast(Type[Tag], tag_class) + tag = tag_class( + self, + self.builder, + name, + namespace, + nsprefix, + attrs, + self.currentTag, + self._most_recent_element, + sourceline=sourceline, + sourcepos=sourcepos, + namespaces=namespaces, + ) + if tag is None: + return tag + if self._most_recent_element is not None: + self._most_recent_element.next_element = tag + self._most_recent_element = tag + self.pushTag(tag) + return tag + + def handle_endtag(self, name: str, nsprefix: Optional[str] = None) -> None: + """Called by the tree builder when an ending tag is encountered. + + :param name: Name of the tag. + :param nsprefix: Namespace prefix for the tag. + + :meta private: + """ + # print("End tag: " + name) + self.endData() + self._popToTag(name, nsprefix) + + def handle_data(self, data: str) -> None: + """Called by the tree builder when a chunk of textual data is + encountered. + + :meta private: + """ + self.current_data.append(data) + + def decode( + self, + indent_level: Optional[int] = None, + eventual_encoding: _Encoding = DEFAULT_OUTPUT_ENCODING, + formatter: Union[Formatter, str] = "minimal", + iterator: Optional[Iterator[PageElement]] = None, + **kwargs: Any, + ) -> str: + """Returns a string representation of the parse tree + as a full HTML or XML document. + + :param indent_level: Each line of the rendering will be + indented this many levels. (The ``formatter`` decides what a + 'level' means, in terms of spaces or other characters + output.) This is used internally in recursive calls while + pretty-printing. + :param eventual_encoding: The encoding of the final document. + If this is None, the document will be a Unicode string. + :param formatter: Either a `Formatter` object, or a string naming one of + the standard formatters. + :param iterator: The iterator to use when navigating over the + parse tree. This is only used by `Tag.decode_contents` and + you probably won't need to use it. + """ + if self.is_xml: + # Print the XML declaration + encoding_part = "" + declared_encoding: Optional[str] = eventual_encoding + if eventual_encoding in PYTHON_SPECIFIC_ENCODINGS: + # This is a special Python encoding; it can't actually + # go into an XML document because it means nothing + # outside of Python. + declared_encoding = None + if declared_encoding is not None: + encoding_part = ' encoding="%s"' % declared_encoding + prefix = '\n' % encoding_part + else: + prefix = "" + + # Prior to 4.13.0, the first argument to this method was a + # bool called pretty_print, which gave the method a different + # signature from its superclass implementation, Tag.decode. + # + # The signatures of the two methods now match, but just in + # case someone is still passing a boolean in as the first + # argument to this method (or a keyword argument with the old + # name), we can handle it and put out a DeprecationWarning. + warning: Optional[str] = None + if isinstance(indent_level, bool): + if indent_level is True: + indent_level = 0 + elif indent_level is False: + indent_level = None + warning = f"As of 4.13.0, the first argument to BeautifulSoup.decode has been changed from bool to int, to match Tag.decode. Pass in a value of {indent_level} instead." + else: + pretty_print = kwargs.pop("pretty_print", None) + assert not kwargs + if pretty_print is not None: + if pretty_print is True: + indent_level = 0 + elif pretty_print is False: + indent_level = None + warning = f"As of 4.13.0, the pretty_print argument to BeautifulSoup.decode has been removed, to match Tag.decode. Pass in a value of indent_level={indent_level} instead." + + if warning: + warnings.warn(warning, DeprecationWarning, stacklevel=2) + elif indent_level is False or pretty_print is False: + indent_level = None + return prefix + super(BeautifulSoup, self).decode( + indent_level, eventual_encoding, formatter, iterator + ) + + +# Aliases to make it easier to get started quickly, e.g. 'from bs4 import _soup' +_s = BeautifulSoup +_soup = BeautifulSoup + + +class BeautifulStoneSoup(BeautifulSoup): + """Deprecated interface to an XML parser.""" + + def __init__(self, *args: Any, **kwargs: Any): + kwargs["features"] = "xml" + warnings.warn( + "The BeautifulStoneSoup class was deprecated in version 4.0.0. Instead of using " + 'it, pass features="xml" into the BeautifulSoup constructor.', + DeprecationWarning, + stacklevel=2, + ) + super(BeautifulStoneSoup, self).__init__(*args, **kwargs) + + +# If this file is run as a script, act as an HTML pretty-printer. +if __name__ == "__main__": + import sys + + soup = BeautifulSoup(sys.stdin) + print((soup.prettify())) diff --git a/.venv/lib/python3.12/site-packages/bs4/__pycache__/__init__.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4489723fdb70b900312eefdd2fd9ac10a79538fc GIT binary patch literal 39654 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 V;O+S)0o8yz4%F7U$EbvH{{wgbpe6tS literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/__pycache__/_typing.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/__pycache__/_typing.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1d675964683244bc0e3888fcd2d569d70304f968 GIT binary patch literal 3572 zcmaJ@O>Eo96(0TnS+?b0$v+ZhDY2Evl4Co68)rAR<2Y$-$8nPGhC#s4;@IM@NU1|A ziGl+4A&2x*_!b|1RIn)EV|weoKta_#xI8V;Q*TOLAi$pbW=P3)7A*mNGw*xv&Aj)9 z^Qgas!$Abk!PxJLe;r2XpHyf)UVC!fbRzT~JwXzZ93`YUc!%QTor;ThIVk5WxfKuZ zQM|lY@$o*z&-;}CA5emPPzmuNrGxKK!hBfiB9tPwPnz*P_F98DZS&_C-)q~a@Hv}5&-gxzm-_Lb&5tvF zfbm|bf7^j4Y)yt~25n9Bl;#4{#4HUSJf*qFG(*-dtnM9l-6!mdXPL#YZIQ(n?A<0A zKhowe+I)`jqc%T@19+01pLI@orj6U$9B6Z=v{Ou*VA?7E5|cP4`5?9_dxvSpC#^N4 zF?PB$j7u>tgl8Bx%eXYg(5EeAa0hh>0c*h zy<8}l%)sMX1<#jcQOg8P*SuOY{flC$#H`%6<$`WH?>#X6_jF7c=UWvk601|dP^)J6@zeDsVe#(L;{AJT%ckdv3I-Xk*)y-}MBc3G_}5~oidSS!H+$Da z1#1{=6F%G-3GN8kXPgx1Avyi~#pR&_J5fwgK$e}r|@^;q04(DYglYXTq~ z-vxM&Fyb8&;+>L%cLk6Xket{pxv)oa!_R}g*vF2~^F18-MLB3XJ}Az0HOp;qbM{BfSE*k$C(o8RMt&b=zig(6oFRZc7va7E{^tQRri z)@ypPtd48kW>qffld>A*;CVrC&aT}Hdj&1al?ewvoF*$W?907)0TJNWFWMHIgtufB zOWbCS8nTu2qD-X8ib(VtI1t+bs`~@fFUL$wuV&TMRVizx7poE*3D&DbEx22Sv`5;q zjw$&b)zAmW+6Rn05obulli%rFP0UY*Gkp=28Oj|y-Z}RO)krN zezC0Tq+EhGP*k_ECOi^1YrXr)T77Al76fm$Js0D{TBJ5ZO)re)QM_HcdbBb{@Htd%b^iCy!kq z{KIV}!xlHYgnMeCtiZXfisXlC1v1(YU)l43umnnp-s50SVB0$eO!<&7A)h5rfUBZH>(FQ8YDr?yTUl6SwqhIjtR3N?+_m(x=%wF=u zGIGk&3dZa|MYRpJjEkktav?o5p^)%EZD${WLavrI{e*fm&~Eq7PFX&Ox8-3KlbWT~ z)-qSjh}9Yd{94B1s%2fIN2v({p*ND`DC8+j zQMg25n!*eP+P27L3Rfsxr9c}Bxej2uH_PP``HIRnDA4acxk=$`3g1w;MPZ)80)<5i zw<#=9xI^J=$N1SlXSJfQ$tq}R*VFz0f18^whr{uib32^>MgX6KApq2ZPeaHZ`Rw$0 zyq^(3vky6Y|Kkif#`dGfU^E6T!`a)UL~{(qQ~NV@Pn{g3KD_$q{CN3K0V6fv7+u)u z+KnBe1?V-g_+DZE^4|B2Xl5t)?%pBFK)Z?#?*!gmKSV=KFN!7iV~yxVOL-BLi7^9p z?`95B60{?Uo$$NbA&SGCOB?Cg1I0)$HWIfD6xoFpZUaA&t*;t4?i<_D!8|KzkWy<{wZYfOLJ$bM&__p!Zlc~__Z{@r!;QohJBusLAWB`VFV-&~r0X{tV^4kV9HI>t z?U8$E@2+v~Mq^~oaL>VKBk5#eTV?4$sfi=^$X?MH|E3YYWw>vFMG7n+o|XkSYll4p z#ZOPvUB=|RF)`mrEf}bO7Y=Iy>NS)w5_cN0<(<&Gr-x|yC^23SH4-h)*`whZda!>- IGwciZU)7K9-~a#s literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/__pycache__/_warnings.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/__pycache__/_warnings.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cb2d32b6ea1de9b785a326199f4d8f03041e93ca GIT binary patch literal 5623 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 ^-2R&orWdKt(&+-|v)K?45AQy;d)zu( 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­junlw$00#E(E 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 NPp`i97r|90_74MY#;gDU literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/__pycache__/filter.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/__pycache__/filter.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fe3a916d6ea766f42318f5bcbbecc5db0034a74e GIT binary patch literal 28679 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 U^Ll*LB|b8L@Mmxp5&07TKU!ZpmjD0& literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/__pycache__/formatter.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/__pycache__/formatter.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2c9242b83efc359412fcfc4b243908ed2803e209 GIT binary patch literal 10554 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 F{{V-}w#oni literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/_deprecation.py b/.venv/lib/python3.12/site-packages/bs4/_deprecation.py new file mode 100644 index 0000000..a0d7fdc --- /dev/null +++ b/.venv/lib/python3.12/site-packages/bs4/_deprecation.py @@ -0,0 +1,80 @@ +"""Helper functions for deprecation. + +This interface is itself unstable and may change without warning. Do +not use these functions yourself, even as a joke. The underscores are +there for a reason. No support will be given. + +In particular, most of this will go away without warning once +Beautiful Soup drops support for Python 3.11, since Python 3.12 +defines a `@typing.deprecated() +decorator. `_ +""" + +import functools +import warnings + +from typing import ( + Any, + Callable, +) + + +def _deprecated_alias(old_name: str, new_name: str, version: str): + """Alias one attribute name to another for backward compatibility + + :meta private: + """ + + @property + def alias(self) -> Any: + ":meta private:" + warnings.warn( + f"Access to deprecated property {old_name}. (Replaced by {new_name}) -- Deprecated since version {version}.", + DeprecationWarning, + stacklevel=2, + ) + return getattr(self, new_name) + + @alias.setter + def alias(self, value: str) -> None: + ":meta private:" + warnings.warn( + f"Write to deprecated property {old_name}. (Replaced by {new_name}) -- Deprecated since version {version}.", + DeprecationWarning, + stacklevel=2, + ) + return setattr(self, new_name, value) + + return alias + + +def _deprecated_function_alias( + old_name: str, new_name: str, version: str +) -> Callable[[Any], Any]: + def alias(self, *args: Any, **kwargs: Any) -> Any: + ":meta private:" + warnings.warn( + f"Call to deprecated method {old_name}. (Replaced by {new_name}) -- Deprecated since version {version}.", + DeprecationWarning, + stacklevel=2, + ) + return getattr(self, new_name)(*args, **kwargs) + + return alias + + +def _deprecated(replaced_by: str, version: str) -> Callable: + def deprecate(func: Callable) -> Callable: + @functools.wraps(func) + def with_warning(*args: Any, **kwargs: Any) -> Any: + ":meta private:" + warnings.warn( + f"Call to deprecated method {func.__name__}. (Replaced by {replaced_by}) -- Deprecated since version {version}.", + DeprecationWarning, + stacklevel=2, + ) + return func(*args, **kwargs) + + return with_warning + + return deprecate diff --git a/.venv/lib/python3.12/site-packages/bs4/_typing.py b/.venv/lib/python3.12/site-packages/bs4/_typing.py new file mode 100644 index 0000000..ac4ec34 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/bs4/_typing.py @@ -0,0 +1,196 @@ +# Custom type aliases used throughout Beautiful Soup to improve readability. + +# Notes on improvements to the type system in newer versions of Python +# that can be used once Beautiful Soup drops support for older +# versions: +# +# * ClassVar can be put on class variables now. +# * In 3.10, x|y is an accepted shorthand for Union[x,y]. +# * In 3.10, TypeAlias gains capabilities that can be used to +# improve the tree matching types (I don't remember what, exactly). +# * In 3.9 it's possible to specialize the re.Match type, +# e.g. re.Match[str]. In 3.8 there's a typing.re namespace for this, +# but it's removed in 3.12, so to support the widest possible set of +# versions I'm not using it. + +from typing_extensions import ( + runtime_checkable, + Protocol, + TypeAlias, +) +from typing import ( + Any, + Callable, + Dict, + IO, + Iterable, + Mapping, + Optional, + Pattern, + TYPE_CHECKING, + Union, +) + +if TYPE_CHECKING: + from bs4.element import ( + AttributeValueList, + NamespacedAttribute, + NavigableString, + PageElement, + ResultSet, + Tag, + ) + + +@runtime_checkable +class _RegularExpressionProtocol(Protocol): + """A protocol object which can accept either Python's built-in + `re.Pattern` objects, or the similar ``Regex`` objects defined by the + third-party ``regex`` package. + """ + + def search( + self, string: str, pos: int = ..., endpos: int = ... + ) -> Optional[Any]: ... + + @property + def pattern(self) -> str: ... + + +# Aliases for markup in various stages of processing. +# +#: The rawest form of markup: either a string, bytestring, or an open filehandle. +_IncomingMarkup: TypeAlias = Union[str, bytes, IO[str], IO[bytes]] + +#: Markup that is in memory but has (potentially) yet to be converted +#: to Unicode. +_RawMarkup: TypeAlias = Union[str, bytes] + +# Aliases for character encodings +# + +#: A data encoding. +_Encoding: TypeAlias = str + +#: One or more data encodings. +_Encodings: TypeAlias = Iterable[_Encoding] + +# Aliases for XML namespaces +# + +#: The prefix for an XML namespace. +_NamespacePrefix: TypeAlias = str + +#: The URL of an XML namespace +_NamespaceURL: TypeAlias = str + +#: A mapping of prefixes to namespace URLs. +_NamespaceMapping: TypeAlias = Dict[_NamespacePrefix, _NamespaceURL] + +#: A mapping of namespace URLs to prefixes +_InvertedNamespaceMapping: TypeAlias = Dict[_NamespaceURL, _NamespacePrefix] + +# Aliases for the attribute values associated with HTML/XML tags. +# + +#: The value associated with an HTML or XML attribute. This is the +#: relatively unprocessed value Beautiful Soup expects to come from a +#: `TreeBuilder`. +_RawAttributeValue: TypeAlias = str + +#: A dictionary of names to `_RawAttributeValue` objects. This is how +#: Beautiful Soup expects a `TreeBuilder` to represent a tag's +#: attribute values. +_RawAttributeValues: TypeAlias = ( + "Mapping[Union[str, NamespacedAttribute], _RawAttributeValue]" +) + +#: An attribute value in its final form, as stored in the +# `Tag` class, after it has been processed and (in some cases) +# split into a list of strings. +_AttributeValue: TypeAlias = Union[str, "AttributeValueList"] + +#: A dictionary of names to :py:data:`_AttributeValue` objects. This is what +#: a tag's attributes look like after processing. +_AttributeValues: TypeAlias = Dict[str, _AttributeValue] + +#: The methods that deal with turning :py:data:`_RawAttributeValue` into +#: :py:data:`_AttributeValue` may be called several times, even after the values +#: are already processed (e.g. when cloning a tag), so they need to +#: be able to acommodate both possibilities. +_RawOrProcessedAttributeValues: TypeAlias = Union[_RawAttributeValues, _AttributeValues] + +#: A number of tree manipulation methods can take either a `PageElement` or a +#: normal Python string (which will be converted to a `NavigableString`). +_InsertableElement: TypeAlias = Union["PageElement", str] + +# Aliases to represent the many possibilities for matching bits of a +# parse tree. +# +# This is very complicated because we're applying a formal type system +# to some very DWIM code. The types we end up with will be the types +# of the arguments to the SoupStrainer constructor and (more +# familiarly to Beautiful Soup users) the find* methods. + +#: A function that takes a PageElement and returns a yes-or-no answer. +_PageElementMatchFunction: TypeAlias = Callable[["PageElement"], bool] + +#: A function that takes the raw parsed ingredients of a markup tag +#: and returns a yes-or-no answer. +# Not necessary at the moment. +# _AllowTagCreationFunction:TypeAlias = Callable[[Optional[str], str, Optional[_RawAttributeValues]], bool] + +#: A function that takes the raw parsed ingredients of a markup string node +#: and returns a yes-or-no answer. +# Not necessary at the moment. +# _AllowStringCreationFunction:TypeAlias = Callable[[Optional[str]], bool] + +#: A function that takes a `Tag` and returns a yes-or-no answer. +#: A `TagNameMatchRule` expects this kind of function, if you're +#: going to pass it a function. +_TagMatchFunction: TypeAlias = Callable[["Tag"], bool] + +#: A function that takes a single string and returns a yes-or-no +#: answer. An `AttributeValueMatchRule` expects this kind of function, if +#: you're going to pass it a function. So does a `StringMatchRule`. +_StringMatchFunction: TypeAlias = Callable[[str], bool] + +#: Either a tag name, an attribute value or a string can be matched +#: against a string, bytestring, regular expression, or a boolean. +_BaseStrainable: TypeAlias = Union[str, bytes, Pattern[str], bool] + +#: A tag can be matched either with the `_BaseStrainable` options, or +#: using a function that takes the `Tag` as its sole argument. +_BaseStrainableElement: TypeAlias = Union[_BaseStrainable, _TagMatchFunction] + +#: A tag's attribute vgalue can be matched either with the +#: `_BaseStrainable` options, or using a function that takes that +#: value as its sole argument. +_BaseStrainableAttribute: TypeAlias = Union[_BaseStrainable, _StringMatchFunction] + +#: A tag can be matched using either a single criterion or a list of +#: criteria. +_StrainableElement: TypeAlias = Union[ + _BaseStrainableElement, Iterable[_BaseStrainableElement] +] + +#: An attribute value can be matched using either a single criterion +#: or a list of criteria. +_StrainableAttribute: TypeAlias = Union[ + _BaseStrainableAttribute, Iterable[_BaseStrainableAttribute] +] + +#: An string can be matched using the same techniques as +#: an attribute value. +_StrainableString: TypeAlias = _StrainableAttribute + +#: A dictionary may be used to match against multiple attribute vlaues at once. +_StrainableAttributes: TypeAlias = Dict[str, _StrainableAttribute] + +#: Many Beautiful soup methods return a PageElement or an ResultSet of +#: PageElements. A PageElement is either a Tag or a NavigableString. +#: These convenience aliases make it easier for IDE users to see which methods +#: are available on the objects they're dealing with. +_OneElement: TypeAlias = Union["PageElement", "Tag", "NavigableString"] +_AtMostOneElement: TypeAlias = Optional[_OneElement] +_QueryResults: TypeAlias = "ResultSet[_OneElement]" diff --git a/.venv/lib/python3.12/site-packages/bs4/_warnings.py b/.venv/lib/python3.12/site-packages/bs4/_warnings.py new file mode 100644 index 0000000..4309473 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/bs4/_warnings.py @@ -0,0 +1,98 @@ +"""Define some custom warnings.""" + + +class GuessedAtParserWarning(UserWarning): + """The warning issued when BeautifulSoup has to guess what parser to + use -- probably because no parser was specified in the constructor. + """ + + MESSAGE: str = """No parser was explicitly specified, so I'm using the best available %(markup_type)s parser for this system ("%(parser)s"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently. + +The code that caused this warning is on line %(line_number)s of the file %(filename)s. To get rid of this warning, pass the additional argument 'features="%(parser)s"' to the BeautifulSoup constructor. +""" + + +class UnusualUsageWarning(UserWarning): + """A superclass for warnings issued when Beautiful Soup sees + something that is typically the result of a mistake in the calling + code, but might be intentional on the part of the user. If it is + in fact intentional, you can filter the individual warning class + to get rid of the warning. If you don't like Beautiful Soup + second-guessing what you are doing, you can filter the + UnusualUsageWarningclass itself and get rid of these entirely. + """ + + +class MarkupResemblesLocatorWarning(UnusualUsageWarning): + """The warning issued when BeautifulSoup is given 'markup' that + actually looks like a resource locator -- a URL or a path to a file + on disk. + """ + + #: :meta private: + GENERIC_MESSAGE: str = """ + +However, if you want to parse some data that happens to look like a %(what)s, then nothing has gone wrong: you are using Beautiful Soup correctly, and this warning is spurious and can be filtered. To make this warning go away, run this code before calling the BeautifulSoup constructor: + + from bs4 import MarkupResemblesLocatorWarning + import warnings + + warnings.filterwarnings("ignore", category=MarkupResemblesLocatorWarning) + """ + + URL_MESSAGE: str = ( + """The input passed in on this line looks more like a URL than HTML or XML. + +If you meant to use Beautiful Soup to parse the web page found at a certain URL, then something has gone wrong. You should use an Python package like 'requests' to fetch the content behind the URL. Once you have the content as a string, you can feed that string into Beautiful Soup.""" + + GENERIC_MESSAGE + ) + + FILENAME_MESSAGE: str = ( + """The input passed in on this line looks more like a filename than HTML or XML. + +If you meant to use Beautiful Soup to parse the contents of a file on disk, then something has gone wrong. You should open the file first, using code like this: + + filehandle = open(your filename) + +You can then feed the open filehandle into Beautiful Soup instead of using the filename.""" + + GENERIC_MESSAGE + ) + + +class AttributeResemblesVariableWarning(UnusualUsageWarning, SyntaxWarning): + """The warning issued when Beautiful Soup suspects a provided + attribute name may actually be the misspelled name of a Beautiful + Soup variable. Generally speaking, this is only used in cases like + "_class" where it's very unlikely the user would be referencing an + XML attribute with that name. + """ + + MESSAGE: str = """%(original)r is an unusual attribute name and is a common misspelling for %(autocorrect)r. + +If you meant %(autocorrect)r, change your code to use it, and this warning will go away. + +If you really did mean to check the %(original)r attribute, this warning is spurious and can be filtered. To make it go away, run this code before creating your BeautifulSoup object: + + from bs4 import AttributeResemblesVariableWarning + import warnings + + warnings.filterwarnings("ignore", category=AttributeResemblesVariableWarning) +""" + + +class XMLParsedAsHTMLWarning(UnusualUsageWarning): + """The warning issued when an HTML parser is used to parse + XML that is not (as far as we can tell) XHTML. + """ + + MESSAGE: str = """It looks like you're using an HTML parser to parse an XML document. + +Assuming this really is an XML document, what you're doing might work, but you should know that using an XML parser will be more reliable. To parse this document as XML, make sure you have the Python package 'lxml' installed, and pass the keyword argument `features="xml"` into the BeautifulSoup constructor. + +If you want or need to use an HTML parser on this document, you can make this warning go away by filtering it. To do that, run this code before calling the BeautifulSoup constructor: + + from bs4 import XMLParsedAsHTMLWarning + import warnings + + warnings.filterwarnings("ignore", category=XMLParsedAsHTMLWarning) +""" diff --git a/.venv/lib/python3.12/site-packages/bs4/builder/__init__.py b/.venv/lib/python3.12/site-packages/bs4/builder/__init__.py new file mode 100644 index 0000000..5f2b38d --- /dev/null +++ b/.venv/lib/python3.12/site-packages/bs4/builder/__init__.py @@ -0,0 +1,848 @@ +from __future__ import annotations + +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +from collections import defaultdict +import re +from types import ModuleType +from typing import ( + Any, + cast, + Dict, + Iterable, + List, + Optional, + Pattern, + Set, + Tuple, + Type, + TYPE_CHECKING, +) +import warnings +import sys +from bs4.element import ( + AttributeDict, + AttributeValueList, + CharsetMetaAttributeValue, + ContentMetaAttributeValue, + RubyParenthesisString, + RubyTextString, + Stylesheet, + Script, + TemplateString, + nonwhitespace_re, +) + +# Exceptions were moved to their own module in 4.13. Import here for +# backwards compatibility. +from bs4.exceptions import ParserRejectedMarkup + +from bs4._typing import ( + _AttributeValues, + _RawAttributeValue, +) + +from bs4._warnings import XMLParsedAsHTMLWarning + +if TYPE_CHECKING: + from bs4 import BeautifulSoup + from bs4.element import ( + NavigableString, + Tag, + ) + from bs4._typing import ( + _AttributeValue, + _Encoding, + _Encodings, + _RawOrProcessedAttributeValues, + _RawMarkup, + ) + +__all__ = [ + "HTMLTreeBuilder", + "SAXTreeBuilder", + "TreeBuilder", + "TreeBuilderRegistry", +] + +# Some useful features for a TreeBuilder to have. +FAST = "fast" +PERMISSIVE = "permissive" +STRICT = "strict" +XML = "xml" +HTML = "html" +HTML_5 = "html5" + +__all__ = [ + "TreeBuilderRegistry", + "TreeBuilder", + "HTMLTreeBuilder", + "DetectsXMLParsedAsHTML", + + "ParserRejectedMarkup", # backwards compatibility only as of 4.13.0 +] + +class TreeBuilderRegistry(object): + """A way of looking up TreeBuilder subclasses by their name or by desired + features. + """ + + builders_for_feature: Dict[str, List[Type[TreeBuilder]]] + builders: List[Type[TreeBuilder]] + + def __init__(self) -> None: + self.builders_for_feature = defaultdict(list) + self.builders = [] + + def register(self, treebuilder_class: type[TreeBuilder]) -> None: + """Register a treebuilder based on its advertised features. + + :param treebuilder_class: A subclass of `TreeBuilder`. its + `TreeBuilder.features` attribute should list its features. + """ + for feature in treebuilder_class.features: + self.builders_for_feature[feature].insert(0, treebuilder_class) + self.builders.insert(0, treebuilder_class) + + def lookup(self, *features: str) -> Optional[Type[TreeBuilder]]: + """Look up a TreeBuilder subclass with the desired features. + + :param features: A list of features to look for. If none are + provided, the most recently registered TreeBuilder subclass + will be used. + :return: A TreeBuilder subclass, or None if there's no + registered subclass with all the requested features. + """ + if len(self.builders) == 0: + # There are no builders at all. + return None + + if len(features) == 0: + # They didn't ask for any features. Give them the most + # recently registered builder. + return self.builders[0] + + # Go down the list of features in order, and eliminate any builders + # that don't match every feature. + feature_list = list(features) + feature_list.reverse() + candidates = None + candidate_set = None + while len(feature_list) > 0: + feature = feature_list.pop() + we_have_the_feature = self.builders_for_feature.get(feature, []) + if len(we_have_the_feature) > 0: + if candidates is None: + candidates = we_have_the_feature + candidate_set = set(candidates) + else: + # Eliminate any candidates that don't have this feature. + candidate_set = candidate_set.intersection(set(we_have_the_feature)) + + # The only valid candidates are the ones in candidate_set. + # Go through the original list of candidates and pick the first one + # that's in candidate_set. + if candidate_set is None or candidates is None: + return None + for candidate in candidates: + if candidate in candidate_set: + return candidate + return None + + +#: The `BeautifulSoup` constructor will take a list of features +#: and use it to look up `TreeBuilder` classes in this registry. +builder_registry: TreeBuilderRegistry = TreeBuilderRegistry() + + +class TreeBuilder(object): + """Turn a textual document into a Beautiful Soup object tree. + + This is an abstract superclass which smooths out the behavior of + different parser libraries into a single, unified interface. + + :param multi_valued_attributes: If this is set to None, the + TreeBuilder will not turn any values for attributes like + 'class' into lists. Setting this to a dictionary will + customize this behavior; look at :py:attr:`bs4.builder.HTMLTreeBuilder.DEFAULT_CDATA_LIST_ATTRIBUTES` + for an example. + + Internally, these are called "CDATA list attributes", but that + probably doesn't make sense to an end-user, so the argument name + is ``multi_valued_attributes``. + + :param preserve_whitespace_tags: A set of tags to treat + the way
 tags are treated in HTML. Tags in this set
+     are immune from pretty-printing; their contents will always be
+     output as-is.
+
+    :param string_containers: A dictionary mapping tag names to
+     the classes that should be instantiated to contain the textual
+     contents of those tags. The default is to use NavigableString
+     for every tag, no matter what the name. You can override the
+     default by changing :py:attr:`DEFAULT_STRING_CONTAINERS`.
+
+    :param store_line_numbers: If the parser keeps track of the line
+     numbers and positions of the original markup, that information
+     will, by default, be stored in each corresponding
+     :py:class:`bs4.element.Tag` object. You can turn this off by
+     passing store_line_numbers=False; then Tag.sourcepos and
+     Tag.sourceline will always be None. If the parser you're using
+     doesn't keep track of this information, then store_line_numbers
+     is irrelevant.
+
+    :param attribute_dict_class: The value of a multi-valued attribute
+      (such as HTML's 'class') willl be stored in an instance of this
+      class.  The default is Beautiful Soup's built-in
+      `AttributeValueList`, which is a normal Python list, and you
+      will probably never need to change it.
+    """
+
+    USE_DEFAULT: Any = object()  #: :meta private:
+
+    def __init__(
+        self,
+        multi_valued_attributes: Dict[str, Set[str]] = USE_DEFAULT,
+        preserve_whitespace_tags: Set[str] = USE_DEFAULT,
+        store_line_numbers: bool = USE_DEFAULT,
+        string_containers: Dict[str, Type[NavigableString]] = USE_DEFAULT,
+        empty_element_tags: Set[str] = USE_DEFAULT,
+        attribute_dict_class: Type[AttributeDict] = AttributeDict,
+        attribute_value_list_class: Type[AttributeValueList] = AttributeValueList,
+    ):
+        self.soup = None
+        if multi_valued_attributes is self.USE_DEFAULT:
+            multi_valued_attributes = self.DEFAULT_CDATA_LIST_ATTRIBUTES
+        self.cdata_list_attributes = multi_valued_attributes
+        if preserve_whitespace_tags is self.USE_DEFAULT:
+            preserve_whitespace_tags = self.DEFAULT_PRESERVE_WHITESPACE_TAGS
+        self.preserve_whitespace_tags = preserve_whitespace_tags
+        if empty_element_tags is self.USE_DEFAULT:
+            self.empty_element_tags = self.DEFAULT_EMPTY_ELEMENT_TAGS
+        else:
+            self.empty_element_tags = empty_element_tags
+        # TODO: store_line_numbers is probably irrelevant now that
+        # the behavior of sourceline and sourcepos has been made consistent
+        # everywhere.
+        if store_line_numbers == self.USE_DEFAULT:
+            store_line_numbers = self.TRACKS_LINE_NUMBERS
+        self.store_line_numbers = store_line_numbers
+        if string_containers == self.USE_DEFAULT:
+            string_containers = self.DEFAULT_STRING_CONTAINERS
+        self.string_containers = string_containers
+        self.attribute_dict_class = attribute_dict_class
+        self.attribute_value_list_class = attribute_value_list_class
+
+    NAME: str = "[Unknown tree builder]"
+    ALTERNATE_NAMES: Iterable[str] = []
+    features: Iterable[str] = []
+
+    is_xml: bool = False
+    picklable: bool = False
+
+    soup: Optional[BeautifulSoup]  #: :meta private:
+
+    #: A tag will be considered an empty-element
+    #: tag when and only when it has no contents.
+    empty_element_tags: Optional[Set[str]] = None  #: :meta private:
+    cdata_list_attributes: Dict[str, Set[str]]  #: :meta private:
+    preserve_whitespace_tags: Set[str]  #: :meta private:
+    string_containers: Dict[str, Type[NavigableString]]  #: :meta private:
+    tracks_line_numbers: bool  #: :meta private:
+
+    #: A value for these tag/attribute combinations is a space- or
+    #: comma-separated list of CDATA, rather than a single CDATA.
+    DEFAULT_CDATA_LIST_ATTRIBUTES: Dict[str, Set[str]] = defaultdict(set)
+
+    #: Whitespace should be preserved inside these tags.
+    DEFAULT_PRESERVE_WHITESPACE_TAGS: Set[str] = set()
+
+    #: The textual contents of tags with these names should be
+    #: instantiated with some class other than `bs4.element.NavigableString`.
+    DEFAULT_STRING_CONTAINERS: Dict[str, Type[bs4.element.NavigableString]] = {}
+
+    #: By default, tags are treated as empty-element tags if they have
+    #: no contents--that is, using XML rules. HTMLTreeBuilder
+    #: defines a different set of DEFAULT_EMPTY_ELEMENT_TAGS based on the
+    #: HTML 4 and HTML5 standards.
+    DEFAULT_EMPTY_ELEMENT_TAGS: Optional[Set[str]] = None
+
+    #: Most parsers don't keep track of line numbers.
+    TRACKS_LINE_NUMBERS: bool = False
+
+    def initialize_soup(self, soup: BeautifulSoup) -> None:
+        """The BeautifulSoup object has been initialized and is now
+        being associated with the TreeBuilder.
+
+        :param soup: A BeautifulSoup object.
+        """
+        self.soup = soup
+
+    def reset(self) -> None:
+        """Do any work necessary to reset the underlying parser
+        for a new document.
+
+        By default, this does nothing.
+        """
+        pass
+
+    def can_be_empty_element(self, tag_name: str) -> bool:
+        """Might a tag with this name be an empty-element tag?
+
+        The final markup may or may not actually present this tag as
+        self-closing.
+
+        For instance: an HTMLBuilder does not consider a 

tag to be + an empty-element tag (it's not in + HTMLBuilder.empty_element_tags). This means an empty

tag + will be presented as "

", not "

" or "

". + + The default implementation has no opinion about which tags are + empty-element tags, so a tag will be presented as an + empty-element tag if and only if it has no children. + "" will become "", and "bar" will + be left alone. + + :param tag_name: The name of a markup tag. + """ + if self.empty_element_tags is None: + return True + return tag_name in self.empty_element_tags + + def feed(self, markup: _RawMarkup) -> None: + """Run incoming markup through some parsing process.""" + raise NotImplementedError() + + def prepare_markup( + self, + markup: _RawMarkup, + user_specified_encoding: Optional[_Encoding] = None, + document_declared_encoding: Optional[_Encoding] = None, + exclude_encodings: Optional[_Encodings] = None, + ) -> Iterable[Tuple[_RawMarkup, Optional[_Encoding], Optional[_Encoding], bool]]: + """Run any preliminary steps necessary to make incoming markup + acceptable to the parser. + + :param markup: The markup that's about to be parsed. + :param user_specified_encoding: The user asked to try this encoding + to convert the markup into a Unicode string. + :param document_declared_encoding: The markup itself claims to be + in this encoding. NOTE: This argument is not used by the + calling code and can probably be removed. + :param exclude_encodings: The user asked *not* to try any of + these encodings. + + :yield: A series of 4-tuples: (markup, encoding, declared encoding, + has undergone character replacement) + + Each 4-tuple represents a strategy that the parser can try + to convert the document to Unicode and parse it. Each + strategy will be tried in turn. + + By default, the only strategy is to parse the markup + as-is. See `LXMLTreeBuilderForXML` and + `HTMLParserTreeBuilder` for implementations that take into + account the quirks of particular parsers. + + :meta private: + + """ + yield markup, None, None, False + + def test_fragment_to_document(self, fragment: str) -> str: + """Wrap an HTML fragment to make it look like a document. + + Different parsers do this differently. For instance, lxml + introduces an empty tag, and html5lib + doesn't. Abstracting this away lets us write simple tests + which run HTML fragments through the parser and compare the + results against other HTML fragments. + + This method should not be used outside of unit tests. + + :param fragment: A fragment of HTML. + :return: A full HTML document. + :meta private: + """ + return fragment + + def set_up_substitutions(self, tag: Tag) -> bool: + """Set up any substitutions that will need to be performed on + a `Tag` when it's output as a string. + + By default, this does nothing. See `HTMLTreeBuilder` for a + case where this is used. + + :return: Whether or not a substitution was performed. + :meta private: + """ + return False + + def _replace_cdata_list_attribute_values( + self, tag_name: str, attrs: _RawOrProcessedAttributeValues + ) -> _AttributeValues: + """When an attribute value is associated with a tag that can + have multiple values for that attribute, convert the string + value to a list of strings. + + Basically, replaces class="foo bar" with class=["foo", "bar"] + + NOTE: This method modifies its input in place. + + :param tag_name: The name of a tag. + :param attrs: A dictionary containing the tag's attributes. + Any appropriate attribute values will be modified in place. + :return: The modified dictionary that was originally passed in. + """ + + # First, cast the attrs dict to _AttributeValues. This might + # not be accurate yet, but it will be by the time this method + # returns. + modified_attrs = cast(_AttributeValues, attrs) + if not modified_attrs or not self.cdata_list_attributes: + # Nothing to do. + return modified_attrs + + # There is at least a possibility that we need to modify one of + # the attribute values. + universal: Set[str] = self.cdata_list_attributes.get("*", set()) + tag_specific = self.cdata_list_attributes.get(tag_name.lower(), None) + for attr in list(modified_attrs.keys()): + modified_value: _AttributeValue + if attr in universal or (tag_specific and attr in tag_specific): + # We have a "class"-type attribute whose string + # value is a whitespace-separated list of + # values. Split it into a list. + original_value: _AttributeValue = modified_attrs[attr] + if isinstance(original_value, _RawAttributeValue): + # This is a _RawAttributeValue (a string) that + # needs to be split and converted to a + # AttributeValueList so it can be an + # _AttributeValue. + modified_value = self.attribute_value_list_class( + nonwhitespace_re.findall(original_value) + ) + else: + # html5lib calls setAttributes twice for the + # same tag when rearranging the parse tree. On + # the second call the attribute value here is + # already a list. This can also happen when a + # Tag object is cloned. If this happens, leave + # the value alone rather than trying to split + # it again. + modified_value = original_value + modified_attrs[attr] = modified_value + return modified_attrs + + +class SAXTreeBuilder(TreeBuilder): + """A Beautiful Soup treebuilder that listens for SAX events. + + This is not currently used for anything, and it will be removed + soon. It was a good idea, but it wasn't properly integrated into the + rest of Beautiful Soup, so there have been long stretches where it + hasn't worked properly. + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + warnings.warn( + "The SAXTreeBuilder class was deprecated in 4.13.0 and will be removed soon thereafter. It is completely untested and probably doesn't work; do not use it.", + DeprecationWarning, + stacklevel=2, + ) + super(SAXTreeBuilder, self).__init__(*args, **kwargs) + + def feed(self, markup: _RawMarkup) -> None: + raise NotImplementedError() + + def close(self) -> None: + pass + + def startElement(self, name: str, attrs: Dict[str, str]) -> None: + attrs = AttributeDict((key[1], value) for key, value in list(attrs.items())) + # print("Start %s, %r" % (name, attrs)) + assert self.soup is not None + self.soup.handle_starttag(name, None, None, attrs) + + def endElement(self, name: str) -> None: + # print("End %s" % name) + assert self.soup is not None + self.soup.handle_endtag(name) + + def startElementNS( + self, nsTuple: Tuple[str, str], nodeName: str, attrs: Dict[str, str] + ) -> None: + # Throw away (ns, nodeName) for now. + self.startElement(nodeName, attrs) + + def endElementNS(self, nsTuple: Tuple[str, str], nodeName: str) -> None: + # Throw away (ns, nodeName) for now. + self.endElement(nodeName) + # handler.endElementNS((ns, node.nodeName), node.nodeName) + + def startPrefixMapping(self, prefix: str, nodeValue: str) -> None: + # Ignore the prefix for now. + pass + + def endPrefixMapping(self, prefix: str) -> None: + # Ignore the prefix for now. + # handler.endPrefixMapping(prefix) + pass + + def characters(self, content: str) -> None: + assert self.soup is not None + self.soup.handle_data(content) + + def startDocument(self) -> None: + pass + + def endDocument(self) -> None: + pass + + +class HTMLTreeBuilder(TreeBuilder): + """This TreeBuilder knows facts about HTML, such as which tags are treated + specially by the HTML standard. + """ + + #: Some HTML tags are defined as having no contents. Beautiful Soup + #: treats these specially. + DEFAULT_EMPTY_ELEMENT_TAGS: Set[str] = set( + [ + # These are from HTML5. + "area", + "base", + "br", + "col", + "embed", + "hr", + "img", + "input", + "keygen", + "link", + "menuitem", + "meta", + "param", + "source", + "track", + "wbr", + # These are from earlier versions of HTML and are removed in HTML5. + "basefont", + "bgsound", + "command", + "frame", + "image", + "isindex", + "nextid", + "spacer", + ] + ) + + #: The HTML standard defines these tags as block-level elements. Beautiful + #: Soup does not treat these elements differently from other elements, + #: but it may do so eventually, and this information is available if + #: you need to use it. + DEFAULT_BLOCK_ELEMENTS: Set[str] = set( + [ + "address", + "article", + "aside", + "blockquote", + "canvas", + "dd", + "div", + "dl", + "dt", + "fieldset", + "figcaption", + "figure", + "footer", + "form", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "header", + "hr", + "li", + "main", + "nav", + "noscript", + "ol", + "output", + "p", + "pre", + "section", + "table", + "tfoot", + "ul", + "video", + ] + ) + + #: These HTML tags need special treatment so they can be + #: represented by a string class other than `bs4.element.NavigableString`. + #: + #: For some of these tags, it's because the HTML standard defines + #: an unusual content model for them. I made this list by going + #: through the HTML spec + #: (https://html.spec.whatwg.org/#metadata-content) and looking for + #: "metadata content" elements that can contain strings. + #: + #: The Ruby tags ( and ) are here despite being normal + #: "phrasing content" tags, because the content they contain is + #: qualitatively different from other text in the document, and it + #: can be useful to be able to distinguish it. + #: + #: TODO: Arguably

foo

" + soup = self.soup(markup) + return doctype.encode("utf8"), soup + + def test_normal_doctypes(self): + """Make sure normal, everyday HTML doctypes are handled correctly.""" + self.assertDoctypeHandled("html") + self.assertDoctypeHandled( + 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"' + ) + + def test_empty_doctype(self): + soup = self.soup("") + doctype = soup.contents[0] + assert "" == doctype.strip() + + def test_mixed_case_doctype(self): + # A lowercase or mixed-case doctype becomes a Doctype. + for doctype_fragment in ("doctype", "DocType"): + doctype_str, soup = self._document_with_doctype("html", doctype_fragment) + + # Make sure a Doctype object was created and that the DOCTYPE + # is uppercase. + doctype = soup.contents[0] + assert doctype.__class__ == Doctype + assert doctype == "html" + assert soup.encode("utf8")[: len(doctype_str)] == b"" + + # Make sure that the doctype was correctly associated with the + # parse tree and that the rest of the document parsed. + assert soup.p.contents[0] == "foo" + + def test_public_doctype_with_url(self): + doctype = 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"' + self.assertDoctypeHandled(doctype) + + def test_system_doctype(self): + self.assertDoctypeHandled('foo SYSTEM "http://www.example.com/"') + + def test_namespaced_system_doctype(self): + # We can handle a namespaced doctype with a system ID. + self.assertDoctypeHandled('xsl:stylesheet SYSTEM "htmlent.dtd"') + + def test_namespaced_public_doctype(self): + # Test a namespaced doctype with a public id. + self.assertDoctypeHandled('xsl:stylesheet PUBLIC "htmlent.dtd"') + + def test_real_xhtml_document(self): + """A real XHTML document should come out more or less the same as it went in.""" + markup = b""" + + +Hello. +Goodbye. +""" + with warnings.catch_warnings(record=True) as w: + soup = self.soup(markup) + assert soup.encode("utf-8").replace(b"\n", b"") == markup.replace(b"\n", b"") + + # No warning was issued about parsing an XML document as HTML, + # because XHTML is both. + assert w == [] + + def test_namespaced_html(self): + # When a namespaced XML document is parsed as HTML it should + # be treated as HTML with weird tag names. + markup = b"""content""" + with warnings.catch_warnings(record=True) as w: + soup = self.soup(markup) + + assert 2 == len(soup.find_all("ns1:foo")) + + # n.b. no "you're parsing XML as HTML" warning was given + # because there was no XML declaration. + assert [] == w + + def test_detect_xml_parsed_as_html(self): + # A warning is issued when parsing an XML document as HTML, + # but basic stuff should still work. + markup = b"""string""" + with warnings.catch_warnings(record=True) as w: + soup = self.soup(markup) + assert soup.tag.string == "string" + [warning] = w + assert isinstance(warning.message, XMLParsedAsHTMLWarning) + assert str(warning.message) == XMLParsedAsHTMLWarning.MESSAGE + + # NOTE: the warning is not issued if the document appears to + # be XHTML (tested with test_real_xhtml_document in the + # superclass) or if there is no XML declaration (tested with + # test_namespaced_html in the superclass). + + def test_processing_instruction(self): + # We test both Unicode and bytestring to verify that + # process_markup correctly sets processing_instruction_class + # even when the markup is already Unicode and there is no + # need to process anything. + markup = """""" + soup = self.soup(markup) + assert markup == soup.decode() + + markup = b"""""" + soup = self.soup(markup) + assert markup == soup.encode("utf8") + + def test_deepcopy(self): + """Make sure you can copy the tree builder. + + This is important because the builder is part of a + BeautifulSoup object, and we want to be able to copy that. + """ + copy.deepcopy(self.default_builder) + + def test_p_tag_is_never_empty_element(self): + """A

tag is never designated as an empty-element tag. + + Even if the markup shows it as an empty-element tag, it + shouldn't be presented that way. + """ + soup = self.soup("

") + assert not soup.p.is_empty_element + assert str(soup.p) == "

" + + def test_unclosed_tags_get_closed(self): + """A tag that's not closed by the end of the document should be closed. + + This applies to all tags except empty-element tags. + """ + self.assert_soup("

", "

") + self.assert_soup("", "") + + self.assert_soup("
", "
") + + def test_br_is_always_empty_element_tag(self): + """A
tag is designated as an empty-element tag. + + Some parsers treat

as one
tag, some parsers as + two tags, but it should always be an empty-element tag. + """ + soup = self.soup("

") + assert soup.br.is_empty_element + assert str(soup.br) == "
" + + def test_nested_formatting_elements(self): + self.assert_soup("") + + def test_double_head(self): + html = """ + + +Ordinary HEAD element test + + + +Hello, world! + + +""" + soup = self.soup(html) + assert "text/javascript" == soup.find("script")["type"] + + def test_comment(self): + # Comments are represented as Comment objects. + markup = "

foobaz

" + self.assert_soup(markup) + + soup = self.soup(markup) + comment = soup.find(string="foobar") + assert comment.__class__ == Comment + + # The comment is properly integrated into the tree. + foo = soup.find(string="foo") + assert comment == foo.next_element + baz = soup.find(string="baz") + assert comment == baz.previous_element + + def test_preserved_whitespace_in_pre_and_textarea(self): + """Whitespace must be preserved in
 and \n"
+        self.assert_soup(pre_markup)
+        self.assert_soup(textarea_markup)
+
+        soup = self.soup(pre_markup)
+        assert soup.pre.prettify() == pre_markup
+
+        soup = self.soup(textarea_markup)
+        assert soup.textarea.prettify() == textarea_markup
+
+        soup = self.soup("")
+        assert soup.textarea.prettify() == "\n"
+
+    def test_nested_inline_elements(self):
+        """Inline elements can be nested indefinitely."""
+        b_tag = "Inside a B tag"
+        self.assert_soup(b_tag)
+
+        nested_b_tag = "

A nested tag

" + self.assert_soup(nested_b_tag) + + double_nested_b_tag = "

A doubly nested tag

" + self.assert_soup(double_nested_b_tag) + + def test_nested_block_level_elements(self): + """Block elements can be nested.""" + soup = self.soup("

Foo

") + blockquote = soup.blockquote + assert blockquote.p.b.string == "Foo" + assert blockquote.b.string == "Foo" + + def test_correctly_nested_tables(self): + """One table can go inside another one.""" + markup = ( + '' + "" + "" + ) + + self.assert_soup( + markup, + '
Here's another table:" + '' + "" + "
foo
Here\'s another table:' + '
foo
' + "
", + ) + + self.assert_soup( + "" + "" + "
Foo
Bar
Baz
" + ) + + def test_multivalued_attribute_with_whitespace(self): + # Whitespace separating the values of a multi-valued attribute + # should be ignored. + + markup = '
' + soup = self.soup(markup) + assert ["foo", "bar"] == soup.div["class"] + + # If you search by the literal name of the class it's like the whitespace + # wasn't there. + assert soup.div == soup.find("div", class_="foo bar") + + def test_deeply_nested_multivalued_attribute(self): + # html5lib can set the attributes of the same tag many times + # as it rearranges the tree. This has caused problems with + # multivalued attributes. + markup = '
' + soup = self.soup(markup) + assert ["css"] == soup.div.div["class"] + + def test_multivalued_attribute_on_html(self): + # html5lib uses a different API to set the attributes ot the + # tag. This has caused problems with multivalued + # attributes. + markup = '' + soup = self.soup(markup) + assert ["a", "b"] == soup.html["class"] + + def test_angle_brackets_in_attribute_values_are_escaped(self): + self.assert_soup('', '') + + def test_strings_resembling_character_entity_references(self): + # "&T" and "&p" look like incomplete character entities, but they are + # not. + self.assert_soup( + "

• AT&T is in the s&p 500

", + "

\u2022 AT&T is in the s&p 500

", + ) + + def test_apos_entity(self): + self.assert_soup( + "

Bob's Bar

", + "

Bob's Bar

", + ) + + def test_entities_in_foreign_document_encoding(self): + # “ and ” are invalid numeric entities referencing + # Windows-1252 characters. - references a character common + # to Windows-1252 and Unicode, and ☃ references a + # character only found in Unicode. + # + # All of these entities should be converted to Unicode + # characters. + markup = "

“Hello” -☃

" + soup = self.soup(markup) + assert "“Hello” -☃" == soup.p.string + + def test_entities_in_attributes_converted_to_unicode(self): + expect = '

' + self.assert_soup('

', expect) + self.assert_soup('

', expect) + self.assert_soup('

', expect) + self.assert_soup('

', expect) + + def test_entities_in_text_converted_to_unicode(self): + expect = "

pi\N{LATIN SMALL LETTER N WITH TILDE}ata

" + self.assert_soup("

piñata

", expect) + self.assert_soup("

piñata

", expect) + self.assert_soup("

piñata

", expect) + self.assert_soup("

piñata

", expect) + + def test_quot_entity_converted_to_quotation_mark(self): + self.assert_soup( + "

I said "good day!"

", '

I said "good day!"

' + ) + + def test_out_of_range_entity(self): + expect = "\N{REPLACEMENT CHARACTER}" + self.assert_soup("�", expect) + self.assert_soup("�", expect) + self.assert_soup("�", expect) + + def test_multipart_strings(self): + "Mostly to prevent a recurrence of a bug in the html5lib treebuilder." + soup = self.soup("

\nfoo

") + assert "p" == soup.h2.string.next_element.name + assert "p" == soup.p.name + self.assertConnectedness(soup) + + def test_invalid_html_entity(self): + # The html.parser treebuilder can't distinguish between an + # invalid HTML entity with a semicolon and an invalid HTML + # entity with no semicolon (see its subclass for the tested + # behavior). But the other treebuilders can. + markup = "

a &nosuchentity b

" + soup = self.soup(markup) + assert "

a &nosuchentity b

" == soup.p.decode() + + markup = "

a &nosuchentity; b

" + soup = self.soup(markup) + assert "

a &nosuchentity; b

" == soup.p.decode() + + def test_head_tag_between_head_and_body(self): + "Prevent recurrence of a bug in the html5lib treebuilder." + content = """ + + foo + +""" + soup = self.soup(content) + assert soup.html.body is not None + self.assertConnectedness(soup) + + def test_multiple_copies_of_a_tag(self): + "Prevent recurrence of a bug in the html5lib treebuilder." + content = """ + + + + + +""" + soup = self.soup(content) + self.assertConnectedness(soup.article) + + def test_basic_namespaces(self): + """Parsers don't need to *understand* namespaces, but at the + very least they should not choke on namespaces or lose + data.""" + + markup = b'4' + soup = self.soup(markup) + assert markup == soup.encode() + assert "http://www.w3.org/1999/xhtml" == soup.html["xmlns"] + assert "http://www.w3.org/1998/Math/MathML" == soup.html["xmlns:mathml"] + assert "http://www.w3.org/2000/svg" == soup.html["xmlns:svg"] + + def test_multivalued_attribute_value_becomes_list(self): + markup = b'' + soup = self.soup(markup) + assert ["foo", "bar"] == soup.a["class"] + + # + # Generally speaking, tests below this point are more tests of + # Beautiful Soup than tests of the tree builders. But parsers are + # weird, so we run these tests separately for every tree builder + # to detect any differences between them. + # + + def test_can_parse_unicode_document(self): + # A seemingly innocuous document... but it's in Unicode! And + # it contains characters that can't be represented in the + # encoding found in the declaration! The horror! + markup = 'Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!' + soup = self.soup(markup) + assert "Sacr\xe9 bleu!" == soup.body.string + + def test_soupstrainer(self): + """Parsers should be able to work with SoupStrainers.""" + strainer = SoupStrainer("b") + soup = self.soup("A bold statement", parse_only=strainer) + assert soup.decode() == "bold" + + def test_single_quote_attribute_values_become_double_quotes(self): + self.assert_soup("", '') + + def test_attribute_values_with_nested_quotes_are_left_alone(self): + text = """a""" + self.assert_soup(text) + + def test_attribute_values_with_double_nested_quotes_get_quoted(self): + text = """a""" + soup = self.soup(text) + soup.foo["attr"] = 'Brawls happen at "Bob\'s Bar"' + self.assert_soup( + soup.foo.decode(), + """a""", + ) + + def test_ampersand_in_attribute_value_gets_escaped(self): + self.assert_soup( + '', + '', + ) + + self.assert_soup( + 'foo', + 'foo', + ) + + def test_escaped_ampersand_in_attribute_value_is_left_alone(self): + self.assert_soup('') + + def test_entities_in_strings_converted_during_parsing(self): + # Both XML and HTML entities are converted to Unicode characters + # during parsing. + text = "

<<sacré bleu!>>

" + expected = ( + "

<<sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!>>

" + ) + self.assert_soup(text, expected) + + def test_smart_quotes_converted_on_the_way_in(self): + # Microsoft smart quotes are converted to Unicode characters during + # parsing. + quote = b"

\x91Foo\x92

" + soup = self.soup(quote, from_encoding="windows-1252") + assert ( + soup.p.string + == "\N{LEFT SINGLE QUOTATION MARK}Foo\N{RIGHT SINGLE QUOTATION MARK}" + ) + + def test_non_breaking_spaces_converted_on_the_way_in(self): + soup = self.soup("  ") + assert soup.a.string == "\N{NO-BREAK SPACE}" * 2 + + def test_entities_converted_on_the_way_out(self): + text = "

<<sacré bleu!>>

" + expected = "

<<sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!>>

".encode( + "utf-8" + ) + soup = self.soup(text) + assert soup.p.encode("utf-8") == expected + + def test_real_iso_8859_document(self): + # Smoke test of interrelated functionality, using an + # easy-to-understand document. + + # Here it is in Unicode. Note that it claims to be in ISO-8859-1. + unicode_html = '

Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!

' + + # That's because we're going to encode it into ISO-8859-1, + # and use that to test. + iso_latin_html = unicode_html.encode("iso-8859-1") + + # Parse the ISO-8859-1 HTML. + soup = self.soup(iso_latin_html) + + # Encode it to UTF-8. + result = soup.encode("utf-8") + + # What do we expect the result to look like? Well, it would + # look like unicode_html, except that the META tag would say + # UTF-8 instead of ISO-8859-1. + expected = unicode_html.replace("ISO-8859-1", "utf-8") + + # And, of course, it would be in UTF-8, not Unicode. + expected = expected.encode("utf-8") + + # Ta-da! + assert result == expected + + def test_real_shift_jis_document(self): + # Smoke test to make sure the parser can handle a document in + # Shift-JIS encoding, without choking. + shift_jis_html = ( + b"
"
+            b"\x82\xb1\x82\xea\x82\xcdShift-JIS\x82\xc5\x83R\x81[\x83f"
+            b"\x83B\x83\x93\x83O\x82\xb3\x82\xea\x82\xbd\x93\xfa\x96{\x8c"
+            b"\xea\x82\xcc\x83t\x83@\x83C\x83\x8b\x82\xc5\x82\xb7\x81B"
+            b"
" + ) + unicode_html = shift_jis_html.decode("shift-jis") + soup = self.soup(unicode_html) + + # Make sure the parse tree is correctly encoded to various + # encodings. + assert soup.encode("utf-8") == unicode_html.encode("utf-8") + assert soup.encode("euc_jp") == unicode_html.encode("euc_jp") + + def test_real_hebrew_document(self): + # A real-world test to make sure we can convert ISO-8859-9 (a + # Hebrew encoding) to UTF-8. + hebrew_document = b"Hebrew (ISO 8859-8) in Visual Directionality

Hebrew (ISO 8859-8) in Visual Directionality

\xed\xe5\xec\xf9" + soup = self.soup(hebrew_document, from_encoding="iso8859-8") + # Some tree builders call it iso8859-8, others call it iso-8859-9. + # That's not a difference we really care about. + assert soup.original_encoding in ("iso8859-8", "iso-8859-8") + assert soup.encode("utf-8") == ( + hebrew_document.decode("iso8859-8").encode("utf-8") + ) + + def test_meta_tag_reflects_current_encoding(self): + # Here's the tag saying that a document is + # encoded in Shift-JIS. + meta_tag = ( + '' + ) + + # Here's a document incorporating that meta tag. + shift_jis_html = ( + "\n%s\n" + '' + "Shift-JIS markup goes here." + ) % meta_tag + soup = self.soup(shift_jis_html) + + # Parse the document, and the charset is seemingly unaffected. + parsed_meta = soup.find("meta", {"http-equiv": "Content-type"}) + content = parsed_meta["content"] + assert "text/html; charset=x-sjis" == content + + # But that value is actually a ContentMetaAttributeValue object. + assert isinstance(content, ContentMetaAttributeValue) + + # And it will take on a value that reflects its current + # encoding. + assert "text/html; charset=utf8" == content.substitute_encoding("utf8") + + # No matter how the tag is encoded, its charset attribute + # will always be accurate. + assert b"charset=utf8" in parsed_meta.encode("utf8") + assert b"charset=shift-jis" in parsed_meta.encode("shift-jis") + + # For the rest of the story, see TestSubstitutions in + # test_tree.py. + + def test_html5_style_meta_tag_reflects_current_encoding(self): + # Here's the tag saying that a document is + # encoded in Shift-JIS. + meta_tag = '' + + # Here's a document incorporating that meta tag. + shift_jis_html = ( + "\n%s\n" + '' + "Shift-JIS markup goes here." + ) % meta_tag + soup = self.soup(shift_jis_html) + + # Parse the document, and the charset is seemingly unaffected. + parsed_meta = soup.find("meta", id="encoding") + charset = parsed_meta["charset"] + assert "x-sjis" == charset + + # But that value is actually a CharsetMetaAttributeValue object. + assert isinstance(charset, CharsetMetaAttributeValue) + + # And it will take on a value that reflects its current + # encoding. + assert "utf8" == charset.substitute_encoding("utf8") + + # No matter how the tag is encoded, its charset attribute + # will always be accurate. + assert b'charset="utf8"' in parsed_meta.encode("utf8") + assert b'charset="shift-jis"' in parsed_meta.encode("shift-jis") + + def test_python_specific_encodings_not_used_in_charset(self): + # You can encode an HTML document using a Python-specific + # encoding, but that encoding won't be mentioned _inside_ the + # resulting document. Instead, the document will appear to + # have no encoding. + for markup in [ + b'' b'' + ]: + soup = self.soup(markup) + for encoding in PYTHON_SPECIFIC_ENCODINGS: + if encoding in ( + "idna", + "mbcs", + "oem", + "undefined", + "string_escape", + "string-escape", + ): + # For one reason or another, these will raise an + # exception if we actually try to use them, so don't + # bother. + continue + encoded = soup.encode(encoding) + assert b'meta charset=""' in encoded + assert encoding.encode("ascii") not in encoded + + def test_tag_with_no_attributes_can_have_attributes_added(self): + data = self.soup("text") + data.a["foo"] = "bar" + assert 'text' == data.a.decode() + + def test_closing_tag_with_no_opening_tag(self): + # Without BeautifulSoup.open_tag_counter, the tag will + # cause _popToTag to be called over and over again as we look + # for a tag that wasn't there. The result is that 'text2' + # will show up outside the body of the document. + soup = self.soup("

text1

text2
") + assert "

text1

text2
" == soup.body.decode() + + def test_worst_case(self): + """Test the worst case (currently) for linking issues.""" + + soup = self.soup(BAD_DOCUMENT) + self.linkage_validator(soup) + + +class XMLTreeBuilderSmokeTest(TreeBuilderSmokeTest): + def test_pickle_and_unpickle_identity(self): + # Pickling a tree, then unpickling it, yields a tree identical + # to the original. + tree = self.soup("foo") + dumped = pickle.dumps(tree, 2) + loaded = pickle.loads(dumped) + assert loaded.__class__ == BeautifulSoup + assert loaded.decode() == tree.decode() + + def test_docstring_generated(self): + soup = self.soup("") + assert soup.encode() == b'\n' + + def test_xml_declaration(self): + markup = b"""\n""" + soup = self.soup(markup) + assert markup == soup.encode("utf8") + + def test_python_specific_encodings_not_used_in_xml_declaration(self): + # You can encode an XML document using a Python-specific + # encoding, but that encoding won't be mentioned _inside_ the + # resulting document. + markup = b"""\n""" + soup = self.soup(markup) + for encoding in PYTHON_SPECIFIC_ENCODINGS: + if encoding in ( + "idna", + "mbcs", + "oem", + "undefined", + "string_escape", + "string-escape", + ): + # For one reason or another, these will raise an + # exception if we actually try to use them, so don't + # bother. + continue + encoded = soup.encode(encoding) + assert b'' in encoded + assert encoding.encode("ascii") not in encoded + + def test_processing_instruction(self): + markup = b"""\n""" + soup = self.soup(markup) + assert markup == soup.encode("utf8") + + def test_real_xhtml_document(self): + """A real XHTML document should come out *exactly* the same as it went in.""" + markup = b""" + + +Hello. +Goodbye. +""" + soup = self.soup(markup) + assert soup.encode("utf-8") == markup + + def test_nested_namespaces(self): + doc = b""" + + + + + +""" + soup = self.soup(doc) + assert doc == soup.encode() + + def test_formatter_processes_script_tag_for_xml_documents(self): + doc = """ + +""" + soup = BeautifulSoup(doc, "lxml-xml") + # lxml would have stripped this while parsing, but we can add + # it later. + soup.script.string = 'console.log("< < hey > > ");' + encoded = soup.encode() + assert b"< < hey > >" in encoded + + def test_can_parse_unicode_document(self): + markup = 'Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!' + soup = self.soup(markup) + assert "Sacr\xe9 bleu!" == soup.root.string + + def test_can_parse_unicode_document_begining_with_bom(self): + markup = '\N{BYTE ORDER MARK}Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!' + soup = self.soup(markup) + assert "Sacr\xe9 bleu!" == soup.root.string + + def test_popping_namespaced_tag(self): + markup = 'b2012-07-02T20:33:42Zcd' + soup = self.soup(markup) + assert str(soup.rss) == markup + + def test_docstring_includes_correct_encoding(self): + soup = self.soup("") + assert ( + soup.encode("latin1") == b'\n' + ) + + def test_large_xml_document(self): + """A large XML document should come out the same as it went in.""" + markup = ( + b'\n' + + b"0" * (2**12) + + b"" + ) + soup = self.soup(markup) + assert soup.encode("utf-8") == markup + + def test_tags_are_empty_element_if_and_only_if_they_are_empty(self): + self.assert_soup("

", "

") + self.assert_soup("

foo

") + + def test_namespaces_are_preserved(self): + markup = 'This tag is in the a namespaceThis tag is in the b namespace' + soup = self.soup(markup) + root = soup.root + assert "http://example.com/" == root["xmlns:a"] + assert "http://example.net/" == root["xmlns:b"] + + def test_closing_namespaced_tag(self): + markup = '

20010504

' + soup = self.soup(markup) + assert str(soup.p) == markup + + def test_namespaced_attributes(self): + markup = '' + soup = self.soup(markup) + assert str(soup.foo) == markup + + def test_namespaced_attributes_xml_namespace(self): + markup = 'bar' + soup = self.soup(markup) + assert str(soup.foo) == markup + + def test_find_by_prefixed_name(self): + doc = """ + + foo + bar + baz + +""" + soup = self.soup(doc) + + # There are three tags. + assert 3 == len(soup.find_all("tag")) + + # But two of them are ns1:tag and one of them is ns2:tag. + assert 2 == len(soup.find_all("ns1:tag")) + assert 1 == len(soup.find_all("ns2:tag")) + + assert 1, len(soup.find_all("ns2:tag", key="value")) + assert 3, len(soup.find_all(["ns1:tag", "ns2:tag"])) + + def test_copy_tag_preserves_namespace(self): + xml = """ +""" + + soup = self.soup(xml) + tag = soup.document + duplicate = copy.copy(tag) + + # The two tags have the same namespace prefix. + assert tag.prefix == duplicate.prefix + + def test_worst_case(self): + """Test the worst case (currently) for linking issues.""" + + soup = self.soup(BAD_DOCUMENT) + self.linkage_validator(soup) + + +class HTML5TreeBuilderSmokeTest(HTMLTreeBuilderSmokeTest): + """Smoke test for a tree builder that supports HTML5.""" + + def test_real_xhtml_document(self): + # Since XHTML is not HTML5, HTML5 parsers are not tested to handle + # XHTML documents in any particular way. + pass + + def test_html_tags_have_namespace(self): + markup = "" + soup = self.soup(markup) + assert "http://www.w3.org/1999/xhtml" == soup.a.namespace + + def test_svg_tags_have_namespace(self): + markup = "" + soup = self.soup(markup) + namespace = "http://www.w3.org/2000/svg" + assert namespace == soup.svg.namespace + assert namespace == soup.circle.namespace + + def test_mathml_tags_have_namespace(self): + markup = "5" + soup = self.soup(markup) + namespace = "http://www.w3.org/1998/Math/MathML" + assert namespace == soup.math.namespace + assert namespace == soup.msqrt.namespace + + def test_xml_declaration_becomes_comment(self): + markup = '' + soup = self.soup(markup) + assert isinstance(soup.contents[0], Comment) + assert soup.contents[0] == '?xml version="1.0" encoding="utf-8"?' + assert "html" == soup.contents[0].next_element.name diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/__init__.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..033457a84ad9450b991e5b7ba6fad88fa74180b3 GIT binary patch literal 68284 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

8ez3zQSAJcCz2 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 Aw*UYD literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2395d9129ea82a4d8ed3fd973bf0eb581cd4020d GIT binary patch literal 1600 zcmah}&2Jk;6o0c{N$fg_h}(QLZBhrJ8i-c~BDG5DDo_!G5)08BT32Yb-W|sq?}ynL zCw1zG4@KhALpi1DrG*QiT>2-#4T+1}sH$10gv5zk6C*{+iJ9H32yH6fN^jqr`TgF^ zy!U2)Nu?6NPTSoOoPC5?ldXpSCN%f`tq9Gni zio$H}cM^!FlQJENiM9^xDOeYqsEL*j^J0_`qsqc%_+%bnU7~S`V3|jMPMT88SeKh} zQ>dN=Ai{_6C29(OZ}Z49lKyc1$T>gaibs_?E-Qjt1qph1SF$fIJc0&Hz&Rjjm38bj zKOx*KxZs_wgiRHxT@I9p67)XDkvJ-lOr7e1!gzI?5}xO% zG4_dC@f@rYyRLqWYaX$v=UbRe&RJA_&vU8o*_u(&-6c%4D|)G+l|A3lshV5C?uu$# zCAHR|70-P;ckV5fvGHV0H>x^=t1KTXWjBL_T8mRtYXliS9OmMsXI;Da@=KNbe|i@? zA=zN+bNG7%dIwqq7q?USXVBe~`SI2E(CPcicd2hu-c(yU>-&+?IYHR-X(n zJRDy5+1wt!a$9K+p1Obf(V*JuS6hSXuLEb=C&%th-<@uyU%NB?$JoTZn|E)v(y!mS z)b3Aj_I=&=xc|&fAB(gnvSs%8T030rlVfZnw`M11FNi-~klz)$3fZopThmwqg9`<&Og45ub?&q2D0&6vm!HZcjOZGP}T3$ovOp CpPCf_ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..388d7f3df7b3790697e0b32636f031aa6052ed6f GIT binary patch literal 7624 zcmb_hTWs6r75*veLd%lrSn;h*Qa86&NhL>a?8a^`i(1FEn|fZ87OSw9lSMj~LrKn0 zDv2})>4so%fDKunoB;)vhhcD#KKP*zd2HVb?1i#i*yWOkq1{8@TsuX8JnbA(q^^#W zVKj93^S>PaJm)*N-~aUcy#%hMz1OF|2@vu^Uq>g*6xwlxS(d&oamWtl4 zoFmBR_nem$Rq4r0^{CTQ&tx_!ixTaj(uJg=(p>mQWHBCObm#fptOR#|RElTSJptm-J%PqC+7}&;Ilw%_>Jml+WM^gFR;^=qZ&%4Z9(>2NvhMv zkSI;Xv$AT5S}9GDs3e9H)^>19PWYh)H#?wrfvEP_j01~!EQFZUEL{mvcNnVz8_9}F9IM^>ICxe{M*+6y6nasuPEXA*+ z%}DS))Q<%BPI0q$0sD$1Pbv7_Jx}I(r!y(3SCO;5?@O~8C8=g;Qc^-ANwxQ_Oj@NG zSx8LB(-$N~I2WJH2~!!GimSch%ToGsFYKUqHm6Q!(yxajeZ8<+3eCn77vnI!cTzdp ztD-d;RH(J9@N7Gq5;N4D@}OSq=MUXiO>!pLC!>R7j|?bX@F-F?JvNniD7KmuR z2+)W8OAk6tVZGLZIc!^vp_xB-y1S?jXbHinUVTzAUg zDGeN%i0TCK{3724EY? zMIhC1S_FhdR{Bf6MhlEth^q5ll^&`XFwkS5O#`%*oZ+=1A6ki=S?14Z+?fJ@rXD@0 zcLP0M6Fnt2L`dUc{Dtjo`Uyi+D@i0GD>}ch17z)p=)T~n9BqPh68|jxzM zB11);7|4MRZc2))St==XCu}dzr!yfXo0txjx`S?=yAr4AWcq@lwOKLvYJE(3u;>Th55?=SfGFTTCvkNiZqrX7#G#Q(zWy>~8u>kI$j>%P5r(Y@r> zUU}nN-?24c>*F0brHi!ey!G+Tk3SzO`Vam@n5LlzI8%G&*tfpH$1FUrW9Q>;n7ocm zpFHleI-e+LlMA~~huE(>T22qLUx!?$2RvU7x}pxxIHop&fVLwDx>pcV88Itk+b0N@ zvT?aI;t@a~2|=K{ffwyTvJXiJ$X#L}-v|k`6?>8Nz)!&_af5v49NTcZUGFj*txc|X zn2ipPYlPWsYjF*k3vqe^e)eS{fAd4=YMft7kX=h|$%6rF3ev|L&KM`UA=7RWJwUx8 z2eesi0_qdJK>b+Y#9BljP(J4mw&*_8s-1=#@yf`xD~bVYv?n3Q6{QDK^9xd1qH(!8 z>Bbb=u=Bmfe#~9sB{hO>Ei`?KqyidK5~O@$zPoap;mV%6FodpqN}^M6gOuBN}(4z#pmChZFc4`uICEw$evs$^5_RWRA&}%Ijy> z3*?d|Y?N1nAAvOfZP=^MPR1!6h88^oq)H1%8VJ_HKjiBd?I0&Ws7*+cm_MNO8~UFz@}39njr|Bk3pQ{H;SasF&Xq*hSB2TP zDn)%k0&%7?hAT;cY^@VR;~>LUffeqQSt*g6N&<{0wv_z;$ng?vSa}l&D1!5?axWLS zm+u@{;a*(}bgl+oD+FF!{Gb?keV(gQ6FQx)Wj>;Dkpds7R}*?n!|5D{#`D0~60zyx zbA)2aLw|{+7P@_v@~nog3Wu&1eihqUgZNHuDZXc8fa$J+IU1sp0?;>Q-W9!aK+3Z!*KFw@OZ<&rO!ej;_w-l#xPWRi-avVT~sEYj!)NMcBSgQO1$o;8{^^HFRe!37GYa9A@R+i)_j@VeXW3M}ng zCvdyJ|Nid^L+@^48%ycPMhEK}*zhv0*Eig(s}Eb@4YwaE?ae)`Rb3)S*vyEGufu9l@2r>*7Vw)B0zrj5@zVJlZ8hwaqfKR9QZfOKX$M#_oLPjGj#jlBLcTa Szh&NJhW;|}Gl83-qW=Q+Xv%N^ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_css.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_css.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c3a7dafc989e3916cf2fc2d62c98c521d6515ea2 GIT binary patch literal 28935 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_dammit.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_dammit.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..06d0b7107417530fc6bd36a556dae16ddc13b2d5 GIT binary patch literal 19812 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 BPo)3= literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_element.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_element.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3788055b8356e688a802bf3406f67a4137fc8e2f GIT binary patch literal 6057 zcmcf_TWs6bl@C#(6v?z5+ligjWgREAQd?@`wn-B=ot-)U1~Fgl&2;h)u+ zG@E48zN9bBCAqXe=}!lefi$1wX^NpPQi|^urEm`zmrF88=KL@h@a95fj)%FRH@A<> zgY6hOG{Z!`^U{Qz31m-!&I$HswI20AIf@8b$ZWd zGZwse3)KFEoL0?wIi)JzA}9F1YUXt7ifW}?dAg9U47LWLbC*&nPz{x26#5pGWEBRW zPhkOasEnk)z`?5@L^0wXO4BB(DmP?`%4gx(vH;wrEDr~&r>crsq)T85*M}&|WZt2^ zpc|-|XQ6sf;oHoqKtdu_by_XuosucFE=sEtS3}^PT1JaEtkJc&L7M zxwHkmsMe}|4=@d?1^<2qrGa_vM&+uFwd7eN0?dsz1OkAHz6|_4=cp$HVu8B}@!WqF z;$G_yJB5NfY4(Lgw_#5eAf88DWeWznx!-Eam^@ry?Rj4VJ@k*Ex2e zTpo3+(4AVaTh0@IN<;$=FS#EqIUz|(XO*0;N|F0CX&~2f!`r3Bz-TpLB6t-;*|m>)YbnxE^;2Qm5eYS~Zbvp$h9$W@ExE z_@bN>MQwOVm}KscG;6Ms*01EIO-r+KmX^&F=g+H#B}2*JIh`qDEupBUHk*NJ!pe$s zavq8cs8JvzVO@Zw3=BhPJTqEG)gX}+xl9Y&~oc%R9N@^yRRUkRv zXNWU993g2)OfL}Et!PI|L)j*I>U234fBwuS;ime%n7sk7Y%T)$oC1gIIKDbmZXaFZ zHiZK#udWNC&5O1mlF`PY_}ZcPx)8VdxGlsth3=K^joy=My(b^OR_;BsE}XIXGq!MM zQ|MVay3sef);Id_V!3Z@T^O_ZFCw6rEZQS7zU1uH&hrS-E_Pkh5Qu;PIhD6}~PN?fXVum#q&#VDeK z9@@Yv0c;XegYgoAVFV)pTG^X>6!?kkZ4YMe;Ql25kO$hM_VLMb`vo+&R0`cJL(pZc0F_m8g&<2FCOCX82df!}xmMKXZk2mmJ_ zNf7-c$%y0B2?T=(uoQCx|1s<#I1P`9mE4+5q> z=-19k1vct)Ivczjk9B54oW)86pRL~$KD9Xe0LIuB;XDLqB4!Nw_>YBzQdhGm5c`_2 zTwN3eTW-SobCoJa3GBcHJRI4pVNbrs6=G;G@q+?y;?Q}AJ@N9(|9mc~oc(*?>d&4A zU<5~>(F;=~om3jZ(*=-Dr=655}dIV9gjY*>=dCJ3HMs{5pMJ=03;Gd zo-2p@q3G!7TB4VZEc>y<*uR`#>Aro_=KGg!Zgw1OMD(r;12#Wk3j<(yod+6`-OKK( z?>f305naol+5B@$pY1?&l7rTAX=h~gYTduVyVlpbKehf9$h~>mtzQ*SyA88D?V-Mg zMk^&v;gz5g@@iuS?Wk0-&ys7O!3JB|moQ#~l?K$$l!2~hypG@ufD2QQa7pdz_^?`Y zf(XeW3`_>MBIEvqeb^FmsaxY!cm()x+Wa0ghj3?EE;FwJB)Dzg9vKT@D&^)_z)g53;@gEPVVs5 zP#1U1B}8-z907~YhM+Alevc9+|;UE>kaw{b%HYK8w^cd zrD*v5a&UpYO5LENOrrQ(?@Pt(^ffhQL5*&TnQX0!7YES92V&yYZ0<#<=jV;=G~5^# zL<=q&Exa_8MO`yVEnm4JGGXGn3iEgsq^sT)rTCVnh=puUgoB=r1-~LeXDBM(m{T(Z zkyd4>{h`|TD2AeMMgs;)2RyHUF5~zOS%b?@r_DQgX$N^?gIc&MnrnWb@BGaZ5Bq4;5?aUz7;y}oVa`H*QdTLJz?p{;YTbR3_WI` zw;eztT=&#O75^?W-p&50n;Y*BB%;1%pTIh%*&WW~9D*<4G4ZzW7PZ9$xRC1!h>1oF zybdxZ0XX~MdM{Q{m>ap!T*)cIE!&U<5xjfg#FB!z8`-33_ow`rdzd|EybE;b3?}aK zh^1-zG2^3sTVaZB+hzhZvrQrB9He_5QvkLT^dWkJeoP_U9*fe)9#a6eKc;y)^n?OH GKH%TtDE+kn literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_filter.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_filter.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..599723ec3ea8a8e401c56a86c22eeefb72115e18 GIT binary patch literal 32637 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9c2b9265632fbf8c6d667379cc3583d14590c4c4 GIT binary patch literal 11988 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0e4bad778f3500365d900beb6ed0772b36f9e5d4 GIT binary patch literal 8555 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 N2WNgq;IDT6{{;0m literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f31fa90978e926d0f0e5c2cf73d1826b973b8c4e GIT binary patch literal 22934 zcmdUXd2k%pnP1O|!Qg0IB*9A>fE36P2n-G$5D5;&3%o&zqIJ;GjvLbrV5q^&xO)a9 z#(>G}DhXgIMR4U>f+bZ5m0dAt*;#3w#NM@Qv$p?9)mEiuFth=;nF?#YsfsF<3I$M6 z!b(;0`(Ag?*#IF~>q?r$H{Gw_d;R)-=lj0z_1{)ixj7skHeVY)dWhqGM;FH7&`*|s zhLc;I$X((@i)am7E?L;G^^%qS+Ai7Hull=@M{Y@N6IdhS*VRY>>4S*R6gRq z z-S4%iRYxQt5f2R}!Y@S=F|SpvI~QZZ=7~o=65W+N(SgfS z5c3g=piIF_MTV62pfM^MnH_(Ggyr`DfPBk@Wt_X5UjyZIj9Wg?ODC-3*2`9{G#_53 zzKV{^Wkm(J6s<;2qHXp2Z|vka#d@0iW6K!lwfBEYG~7Gj|GSw#>GcixA3GB9!M2`H zY4|Ae+Eu#(B&e1F)v3L!>eS}pt_`=O@StiRj*o<89t{*~UiUx)n%7LWHS+HsC-|hy(_tfHrI~ z>C4A-`;!}Npf`IS;5xU+Z=19)^7S{yrp9I(-nyn;j82W-n3$Sa;J2muZL=pb{H_nH z7CMflJC6O$E18aS^ZdD#>s*>Yw~RhGb3&QKo!^sC42eSz(T^Naj9V_RdcS}uZ2fX2 zdXTFC?%Eh;HYVO$sr1c6&{FgW4~IPjO^;PbTKLSyIwcmhgh zUdiy!%r*S^=DV9ed?n*OIL{wUxeliJgK{Gp7odVjm+|anocu$gLbMf3wq2WS)gdUs zP)Mo9)4`1`+n(Fk-FbjGQr?6jlUeU&v(AW`=37Y&DDhAn@>Rjy%Th2p6bU6Ik@!p& zf^kV!0$?;z8Wa-Yc=A*!0={5ZO&Ffi0k9Taq`dp*`TZ%^{xrY86bDZ9!f@~doU9cG zacaR1Gg%p@KG|W&$32{dgRCt#%5%S>RkZ!U{(&xqpnW-EHr1Z9x4np2YHsH}J$jEPhyq#ERt>V%q8Bt@aN6Noh*h@+cH({pKzA)uEoll z8)v4@%#_W!CePff?EK7z!q4aqyZuF`Yw2CV!L=!po z0s5t*fUyiIMjYkMlVU0_f;lj6B&=Y3C?>qsz-GIsUb3llhKs7~!m|_~fZ41r@>^!@ z-*dk2T=48od-i5LJ@b4|%GHzRdrDcsj!qaWdzZWS{euS2ydV~SckB*mc{60#DCM#7T<0FSxY~w= znrG5A&tz(L%r&KJS|=TgwHs%Sr)!%gorXcSKEr!pk=3og)q1n_owmucMZRIC>`v9~ zs@YJcv16X^NVz)Fd`Bt5X`&dn5vte9ZL2FD(fWfdlJ;;wwbhKz3{*qem?PR@a3R{0 zrCxNb)@P11%1cz)HQO=nhCOH<;)2%KVc<^K<7Dlz10+Y>U33`ZxM_WRqn(>@phc}w zg_c+2j$@qhHbz}znNh4Z-+o?Gn?WejpmoB2h4Yqa3iKi=O)_3&QKmu2&jOSvlWr6) zlLk8j9ej%$=U#_4#~KUkKzivvv)r;+xVJ0p+?eHuHfU#S^72t39Hup#D8jwomjDig&-;njOk0htg7&O+S)wFa$P8)NKo>O!nOiCd3LvV z;9vh;4$EC@dxvVds*o+AGs)xf-XSR>U5&~9q>1^P8(5%dM7`l?PzWpj_H6qT=vCPU z@L#z9d7WG0?Dg)4POi4@p@XZcUgW>=sm)R~Zu!K9^8clf#Q$Ty*5WPKc-VDCkjX+< z)N0H_a5#{=E_|?NiZCf|!%9jm8<7+R%PrN0x%4`jl#thvt@Ag}|Egwtir+hF2e{AIeWK6*`c03@FyoIndyV@cXD@f- zMveQka@GeM!~b4#ay9!D;+yXuI^wnceD9Vcd+fjPI*xP|T1(<> zIVF>m0%P1=tHxzstA;YW3{o~Rf65u6=w@<#DNd;T9LA*(2bxVkMiH^7_RZ|wV*>^4WgWyx)G_z4_Xa@!qU zOO-aqb9DI%?zkMCOAQqc_wpv2qgm^a`U>JNdl>e>@+gYF3=fo80Y6lg2&deoYOxBC z7vYM#R3q|$wPFomomdN4FV+DzjMaM^)M`RaA9I}0>MkkMHS<|%-jq0)+%qT%@q{ex z@+1^ZqG?i3@q|NfNRWnP3GeiJgox-SMg_OU;k6sv>D@(T`Mu#0bU6Z_�udv+4zs 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 W$4(yg+n=(Wu}t@T%F!>If&UA*{{e3R literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_soup.cpython-312.pyc b/.venv/lib/python3.12/site-packages/bs4/tests/__pycache__/test_soup.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc952c378415e463f24e23a4d87dc79d26198a36 GIT binary patch literal 31525 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 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase b/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase new file mode 100644 index 0000000..4828f8a --- /dev/null +++ b/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase @@ -0,0 +1 @@ +

\ No newline at end of file diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase b/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase new file mode 100644 index 0000000000000000000000000000000000000000..8a585ce9270e58b125922297f2d099298adac822 GIT binary patch literal 15347 zcmeHOKW`H;6u+P#aRU+(18Xxd6l%E*Nl7L5s!A+KhygMnL5ETmLXBVgZv$er@K!|sD^YeJSDOAWa&ttPlG6X?Atl{} z^qDpjS}5Y|WIWoTq(csczd4*??66BhVoGhy6y1ZDBgWIhQ~nf$4?LB=5tQo zxX3XIMJ!OhCjE@@G@nnHL!!ULItAw?J4Na|Tz{fnYNoHpCUhroxQ^Xm|6~3AZ`jNU z_1CN>Z8L2Ov5UvVto$ukPyf~8Z|ZG_z+Cw)}rtPVgJ$Y!^aQq_qB2x+d@%#VL&Ee zscL#D6CO7NUrf^%e&SnKww(HyG#lR3!%5nHqKHLiq!Uq%XT(ATAI~R!c+#u~ktD)W z#Z-lH42O%htTt3XpZZq_8E}9wb>zG-$Bf4}bwbGBM0e%#VflQ3>E%3$>n4SKSi0u< zER%m$TsEp5ifAh3ZBVWkB$KNF37662`3#lv#vffpN$8m zN~NsW&nsp9m$XI|Y?vkxR-@e#J2vfv={I9yD{8L>?bJ5jl{m^X>DgR>Pz4nzY55>9 zaJF$P4nM{r0N0v8sLEMw1+^QiLKN+(xQwxB!0bXrBv?Z{w${rqtoY4tO&Vk2ajs38ITfhY1|%rRV$pMf6PhuP>A~gb(by@6 zIYN?5j_g2E=LC?WXmn7m$gyJwVL_x)6E>WMna*0~7+ng6=am8TKe^U~eF_~XCRZkW z#PW{M(|AZY!jT)*wowa!XyA7C+-+hS%aO@_kcpK7$) zCWCD<@Kz>oC}@WX+hj0SGTJ5s9fT9I*)juIwVk>gO$LI&wIfvqDdYl5f{7)#xCTIF z2SI2-qp#%56T}6sGt3_+us`Vd;ONzB-y@~Ll>LlA@XZVW@(&R0YF literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase b/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase new file mode 100644 index 0000000000000000000000000000000000000000..0fe66dd23fe94a8e451dfb1a84da38ed0984c1f9 GIT binary patch literal 19469 zcmeHP%}&BV5UwW1c<}1c&|0d-m{hN9YYZMVF=z-E6E3Azz?Aa07`*ugp1gb37w}np z1J6Ey_J;^Y+hVrDb~+?vcLObSXLo15`M%w!71Cc4g4b8Y>@_=7*S$g~EsGkt2Bn={ zt2=1kXi~B5P|KmamD`Rb<;p=_zIm%4C&qy-Vu088oOsuGz>Kq!-D0_0%~Ls_F?gfesF!B~xlP=*UCbCH?n*-O%0 z!Q*F>?46hl=N3}p9^s$pfQ;#K?C}VRg&?#Cu4Gl`M+NhN`Lsc{A^94o$;0t3y>S870B{5&zz9DFt<}-BMx(8V;~9 zu^`3{e->4K<9oQkG(Mym>pheEPdQ^GK5fr%nc+{ydd)pa{!emW8I*DurdQ@~y8Kk4 zgV7-WU60=nl>ER&`8c&A8JzU^4}@gt+g^h^gT@rwKLtV<2l@NX63OYId;^?(0~P60 z?9W6QN1A0E6WR+_CBVe3&|S@XJ2R{CP{xr=dJz@rVH;L3n4Q9zrUy|Y_Y}rG!O4js mqyYzMPzM!p)C@wIG(#Cwq{BE*384&|DuI`yvfSgo2>k@d3|T1v literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase b/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase new file mode 100644 index 0000000000000000000000000000000000000000..fd411427d765e9b17e1e6a015485a70632bb9554 GIT binary patch literal 12 TcmY$eDbjbbRX@cb^ZOhC75W5K literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase b/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase new file mode 100644 index 0000000..6248b2c --- /dev/null +++ b/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase @@ -0,0 +1 @@ + >tet>< \ No newline at end of file diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase b/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase new file mode 100644 index 0000000000000000000000000000000000000000..107da539fc15bd1664e35287ace9feda21cb5820 GIT binary patch literal 11502 zcmeHNy>HV%6gOf+VqhSEDxuawNKi#?;xtXg#SCTdK!q3y#cd3AnkG&P3ldWY7XAYy zCT0f2N_Q3{#Kh8pfq{iTAiQ_)?sEPrNt;$FI=4Ds&hO(s-o1P8XBP^E%c~a(bbUIR z>pt6&8VYYetR1|1@3DT}-suHUu57m=zZDhNUbKCCoqp6en~h@8f`8Us?*#40@z@;v zvWixx>qm8ug?`kSZAMZ199wmM)@|Fljl~QWU$J;93#i=Gnw~*BlHQ#|0?zbH*5 zb%|;A>ykT1x$T5V0o|~j6!-jKFyP&Q0fx?{e_SD_qO!^BSE=P1b3*t-8C14p{iSNc z2V3ItzI+T%ukbpRx(HH0EkaF-OQ}&>bS_;QQIeM5QcmbNA;V7VgCSi+Ka`)}b4~+u zIOf`Y|F-|bcGS`*xVc><+HeK=DuR7kbb;M|VG*n$UVC7lv5TH2TY-e=Ct3={xQ+R4 zwyZppvo(W_ZxdtZ*>Zz`2*oa8?n9GW;CglXx z<}63=pqMsNj5^H-eT8Y@E zP=-sP&U&-KBcEQhQFN;n4^K@xO-DQbCK=e7a4zp`HQ}5I=Oz-?nQ%^KGA3<_C5= zlRW%*ktfj|g`Fl))G`RHqfkU^=K$nAEVm4Oss1xm@?`cmF%gp;&h|LjDKbyFFvm(o zWHM`)cSw5|y>6c;zMKmSoRv`l zPeWS%fLuIZqeLOxJve;>FPgW-2pF5U#T0&+x5X53 zjQLv8ye*brDwwY#Fm>Y}L;QzdMc~-Z@auB}FN(+qLgC{?R>|o0jGKi4oeBP!uvKWO zmx{C@5I3Jxz--`-k(ePz3Jtudax^kV11};Vc?{4p4le@a3||N1H!?MkT}(oo#aihv D9d3o5 literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase b/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase new file mode 100644 index 0000000..367106c --- /dev/null +++ b/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase @@ -0,0 +1,2 @@ + +t \ No newline at end of file diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase b/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase new file mode 100644 index 0000000000000000000000000000000000000000..a823d557b4bebed8a9cdb880d281c9de69a1aa0a GIT binary patch literal 3546 zcmdP2$xSTDup1>uLtr!nMnhmU1V%$(Gz3ONU^E0qLtw~uwSNNv*}xU^oQ!vv$DtbH{XnB<{4q&MBMIvxRFa&-_pUv zaZ?A@)wk1eCmnC=bU*Q=8+sfD%u9F-wunGF9Af5kU{XeIH<5gU7$((-f1t0?R%dI;Jq*Qch%_#M(x|K>?1-n+*fFB zm6{d^8#<{hj+7bdpv`Q#2CcfFkUioNUyXr5z+=fRP%u7K(G*r#6$M^Z_&u?|;XuBN z@N6(okxftZk53XI6>lL`P*y0e{H4&t=5>jM|{*N|q#^8%sAhqM+Y3%AITJ zj+ie=x^@H_p!D;o#ZMNvPoPiY!4dto?gr%>8ZfxWSt4CK@!+{gLI_zD^Y~@@!h9AT zhwtJ(69K8%&(5%E2fpgGkYsM!X=s?z8oHP}&TI@w9WRoXm;n8Ha{-ib=yrZ_~b; zLif2&eN24}r`0u!2Q^n!;Z(g+b!QW%0&VHg*@TwX)&r$x>#WdFWGZjuEVhzaKfVQc zE1wv%%}(9W_#3HHZI>9f_+=c57M9cCNo@`2bnw)yoeHG+-$q-W|1arjzM|GxoYGoC z;*bTH!DdtxtcOJ%%uC0=se>6mD|1!l76U4^eq4Nq!{I_ly+tmKJqqfTb*ceU6z362 ztyNgQGww04iSboml65FWdBXI!jzWnWgo#v19R>P(S{7XznX3V~Twq+Re44__&~>h> q43wHvMb7{ew`wA?1}AsyPlT5DF{Md(5}xqoqavh!LXgNIAN~adfn_KF literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase b/.venv/lib/python3.12/site-packages/bs4/tests/fuzz/crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase new file mode 100644 index 0000000000000000000000000000000000000000..885711554056588a381fd9a251d48ce76a916a59 GIT binary patch literal 103 zcma!IT*$!C&%p3|?)u|48N3V(Hi{|v$wno$1*wb-3(;hvkz^S9^*|aEj@#ts@G|Jx OROIF`00A~ppfmtd#~j4~ literal 0 HcmV?d00001 diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/test_builder.py b/.venv/lib/python3.12/site-packages/bs4/tests/test_builder.py new file mode 100644 index 0000000..87d6758 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/bs4/tests/test_builder.py @@ -0,0 +1,28 @@ +import pytest +from unittest.mock import patch +from bs4.builder import DetectsXMLParsedAsHTML + + +class TestDetectsXMLParsedAsHTML: + @pytest.mark.parametrize( + "markup,looks_like_xml", + [ + ("No xml declaration", False), + ("obviously HTMLActually XHTML", False), + (" < html>Tricky XHTML", False), + ("", True), + ], + ) + def test_warn_if_markup_looks_like_xml(self, markup, looks_like_xml): + # Test of our ability to guess at whether markup looks XML-ish + # _and_ not HTML-ish. + with patch("bs4.builder.DetectsXMLParsedAsHTML._warn") as mock: + for data in markup, markup.encode("utf8"): + result = DetectsXMLParsedAsHTML.warn_if_markup_looks_like_xml(data) + assert result == looks_like_xml + if looks_like_xml: + assert mock.called + else: + assert not mock.called + mock.reset_mock() diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/test_builder_registry.py b/.venv/lib/python3.12/site-packages/bs4/tests/test_builder_registry.py new file mode 100644 index 0000000..ad4b5a9 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/bs4/tests/test_builder_registry.py @@ -0,0 +1,139 @@ +"""Tests of the builder registry.""" + +import pytest +import warnings +from typing import Type + +from bs4 import BeautifulSoup +from bs4.builder import ( + builder_registry as registry, + TreeBuilder, + TreeBuilderRegistry, +) +from bs4.builder._htmlparser import HTMLParserTreeBuilder + +from . import ( + HTML5LIB_PRESENT, + LXML_PRESENT, +) + +if HTML5LIB_PRESENT: + from bs4.builder._html5lib import HTML5TreeBuilder + +if LXML_PRESENT: + from bs4.builder._lxml import ( + LXMLTreeBuilderForXML, + LXMLTreeBuilder, + ) + + +# TODO: Split out the lxml and html5lib tests into their own classes +# and gate with pytest.mark.skipIf. +class TestBuiltInRegistry(object): + """Test the built-in registry with the default builders registered.""" + + def test_combination(self): + assert registry.lookup("strict", "html") == HTMLParserTreeBuilder + if LXML_PRESENT: + assert registry.lookup("fast", "html") == LXMLTreeBuilder + assert registry.lookup("permissive", "xml") == LXMLTreeBuilderForXML + if HTML5LIB_PRESENT: + assert registry.lookup("html5lib", "html") == HTML5TreeBuilder + + def test_lookup_by_markup_type(self): + if LXML_PRESENT: + assert registry.lookup("html") == LXMLTreeBuilder + assert registry.lookup("xml") == LXMLTreeBuilderForXML + else: + assert registry.lookup("xml") is None + if HTML5LIB_PRESENT: + assert registry.lookup("html") == HTML5TreeBuilder + else: + assert registry.lookup("html") == HTMLParserTreeBuilder + + def test_named_library(self): + if LXML_PRESENT: + assert registry.lookup("lxml", "xml") == LXMLTreeBuilderForXML + assert registry.lookup("lxml", "html") == LXMLTreeBuilder + if HTML5LIB_PRESENT: + assert registry.lookup("html5lib") == HTML5TreeBuilder + + assert registry.lookup("html.parser") == HTMLParserTreeBuilder + + def test_beautifulsoup_constructor_does_lookup(self): + with warnings.catch_warnings(record=True): + # This will create a warning about not explicitly + # specifying a parser, but we'll ignore it. + + # You can pass in a string. + BeautifulSoup("", features="html") + # Or a list of strings. + BeautifulSoup("", features=["html", "fast"]) + pass + + # You'll get an exception if BS can't find an appropriate + # builder. + with pytest.raises(ValueError): + BeautifulSoup("", features="no-such-feature") + + +class TestRegistry(object): + """Test the TreeBuilderRegistry class in general.""" + + def setup_method(self): + self.registry = TreeBuilderRegistry() + + def builder_for_features(self, *feature_list: str) -> Type[TreeBuilder]: + cls = type( + "Builder_" + "_".join(feature_list), (object,), {"features": feature_list} + ) + + self.registry.register(cls) + return cls + + def test_register_with_no_features(self): + builder = self.builder_for_features() + + # Since the builder advertises no features, you can't find it + # by looking up features. + assert self.registry.lookup("foo") is None + + # But you can find it by doing a lookup with no features, if + # this happens to be the only registered builder. + assert self.registry.lookup() == builder + + def test_register_with_features_makes_lookup_succeed(self): + builder = self.builder_for_features("foo", "bar") + assert self.registry.lookup("foo") is builder + assert self.registry.lookup("bar") is builder + + def test_lookup_fails_when_no_builder_implements_feature(self): + assert self.registry.lookup("baz") is None + + def test_lookup_gets_most_recent_registration_when_no_feature_specified(self): + self.builder_for_features("foo") + builder2 = self.builder_for_features("bar") + assert self.registry.lookup() == builder2 + + def test_lookup_fails_when_no_tree_builders_registered(self): + assert self.registry.lookup() is None + + def test_lookup_gets_most_recent_builder_supporting_all_features(self): + self.builder_for_features("foo") + self.builder_for_features("bar") + has_both_early = self.builder_for_features("foo", "bar", "baz") + has_both_late = self.builder_for_features("foo", "bar", "quux") + self.builder_for_features("bar") + self.builder_for_features("foo") + + # There are two builders featuring 'foo' and 'bar', but + # the one that also features 'quux' was registered later. + assert self.registry.lookup("foo", "bar") == has_both_late + + # There is only one builder featuring 'foo', 'bar', and 'baz'. + assert self.registry.lookup("foo", "bar", "baz") == has_both_early + + def test_lookup_fails_when_cannot_reconcile_requested_features(self): + self.builder_for_features("foo", "bar") + self.builder_for_features("foo", "baz") + assert self.registry.lookup("bar", "baz") is None diff --git a/.venv/lib/python3.12/site-packages/bs4/tests/test_css.py b/.venv/lib/python3.12/site-packages/bs4/tests/test_css.py new file mode 100644 index 0000000..b1c4237 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/bs4/tests/test_css.py @@ -0,0 +1,536 @@ +import pytest +import types + +from bs4 import ( + BeautifulSoup, + ResultSet, +) + +from typing import ( + Any, + List, + Tuple, + Type, +) + +from packaging.version import Version + +from . import ( + SoupTest, + SOUP_SIEVE_PRESENT, +) + +SOUPSIEVE_EXCEPTION_ON_UNSUPPORTED_PSEUDOCLASS: Type[Exception] +if SOUP_SIEVE_PRESENT: + from soupsieve import __version__, SelectorSyntaxError + + # Some behavior changes in soupsieve 2.6 that affects one of our + # tests. For the test to run under all versions of Python + # supported by Beautiful Soup (which includes versions of Python + # not supported by soupsieve 2.6) we need to check both behaviors. + SOUPSIEVE_EXCEPTION_ON_UNSUPPORTED_PSEUDOCLASS = SelectorSyntaxError + if Version(__version__) < Version("2.6"): + SOUPSIEVE_EXCEPTION_ON_UNSUPPORTED_PSEUDOCLASS = NotImplementedError + + +@pytest.mark.skipif(not SOUP_SIEVE_PRESENT, reason="Soup Sieve not installed") +class TestCSSSelectors(SoupTest): + """Test basic CSS selector functionality. + + This functionality is implemented in soupsieve, which has a much + more comprehensive test suite, so this is basically an extra check + that soupsieve works as expected. + """ + + HTML = """ + + + +The title + + + +Hello there. +
+
+

An H1

+

Some text

+

Some more text

+

An H2

+

Another

+Bob +

Another H2

+me + +span1a1 +span1a2 test + +span2a1 + + + +
+ +
+ + + + + + + + +

English

+

English UK

+

English US

+

French

+
+ + +""" + + def setup_method(self): + self._soup = BeautifulSoup(self.HTML, "html.parser") + + def assert_css_selects( + self, selector: str, expected_ids: List[str], **kwargs: Any + ) -> None: + results = self._soup.select(selector, **kwargs) + assert isinstance(results, ResultSet) + el_ids = [el["id"] for el in results] + el_ids.sort() + expected_ids.sort() + assert expected_ids == el_ids, "Selector %s, expected [%s], got [%s]" % ( + selector, + ", ".join(expected_ids), + ", ".join(el_ids), + ) + + assertSelect = assert_css_selects + + def assert_css_select_multiple(self, *tests: Tuple[str, List[str]]): + for selector, expected_ids in tests: + self.assert_css_selects(selector, expected_ids) + + def test_precompiled(self): + sel = self._soup.css.compile("div") + + els = self._soup.select(sel) + assert len(els) == 4 + for div in els: + assert div.name == "div" + + el = self._soup.select_one(sel) + assert "main" == el["id"] + + def test_one_tag_one(self): + els = self._soup.select("title") + assert len(els) == 1 + assert els[0].name == "title" + assert els[0].contents == ["The title"] + + def test_one_tag_many(self): + els = self._soup.select("div") + assert len(els) == 4 + for div in els: + assert div.name == "div" + + el = self._soup.select_one("div") + assert "main" == el["id"] + + def test_select_one_returns_none_if_no_match(self): + match = self._soup.select_one("nonexistenttag") + assert None is match + + def test_tag_in_tag_one(self): + self.assert_css_selects("div div", ["inner", "data1"]) + + def test_tag_in_tag_many(self): + for selector in ("html div", "html body div", "body div"): + self.assert_css_selects(selector, ["data1", "main", "inner", "footer"]) + + def test_limit(self): + self.assert_css_selects("html div", ["main"], limit=1) + self.assert_css_selects("html body div", ["inner", "main"], limit=2) + self.assert_css_selects( + "body div", ["data1", "main", "inner", "footer"], limit=10 + ) + + def test_tag_no_match(self): + assert len(self._soup.select("del")) == 0 + + def test_invalid_tag(self): + with pytest.raises(SelectorSyntaxError): + self._soup.select("tag%t") + + def test_select_dashed_tag_ids(self): + self.assert_css_selects("custom-dashed-tag", ["dash1", "dash2"]) + + def test_select_dashed_by_id(self): + dashed = self._soup.select('custom-dashed-tag[id="dash2"]') + assert dashed[0].name == "custom-dashed-tag" + assert dashed[0]["id"] == "dash2" + + def test_dashed_tag_text(self): + assert self._soup.select("body > custom-dashed-tag")[0].text == "Hello there." + + def test_select_dashed_matches_find_all(self): + assert self._soup.select("custom-dashed-tag") == self._soup.find_all( + "custom-dashed-tag" + ) + + def test_header_tags(self): + self.assert_css_select_multiple( + ("h1", ["header1"]), + ("h2", ["header2", "header3"]), + ) + + def test_class_one(self): + for selector in (".onep", "p.onep", "html p.onep"): + els = self._soup.select(selector) + assert len(els) == 1 + assert els[0].name == "p" + assert els[0]["class"] == ["onep"] + + def test_class_mismatched_tag(self): + els = self._soup.select("div.onep") + assert len(els) == 0 + + def test_one_id(self): + for selector in ("div#inner", "#inner", "div div#inner"): + self.assert_css_selects(selector, ["inner"]) + + def test_bad_id(self): + els = self._soup.select("#doesnotexist") + assert len(els) == 0 + + def test_items_in_id(self): + els = self._soup.select("div#inner p") + assert len(els) == 3 + for el in els: + assert el.name == "p" + assert els[1]["class"] == ["onep"] + assert not els[0].has_attr("class") + + def test_a_bunch_of_emptys(self): + for selector in ("div#main del", "div#main div.oops", "div div#main"): + assert len(self._soup.select(selector)) == 0 + + def test_multi_class_support(self): + for selector in ( + ".class1", + "p.class1", + ".class2", + "p.class2", + ".class3", + "p.class3", + "html p.class2", + "div#inner .class2", + ): + self.assert_css_selects(selector, ["pmulti"]) + + def test_multi_class_selection(self): + for selector in (".class1.class3", ".class3.class2", ".class1.class2.class3"): + self.assert_css_selects(selector, ["pmulti"]) + + def test_child_selector(self): + self.assert_css_selects(".s1 > a", ["s1a1", "s1a2"]) + self.assert_css_selects(".s1 > a span", ["s1a2s1"]) + + def test_child_selector_id(self): + self.assert_css_selects(".s1 > a#s1a2 span", ["s1a2s1"]) + + def test_attribute_equals(self): + self.assert_css_select_multiple( + ('p[class="onep"]', ["p1"]), + ('p[id="p1"]', ["p1"]), + ('[class="onep"]', ["p1"]), + ('[id="p1"]', ["p1"]), + ('link[rel="stylesheet"]', ["l1"]), + ('link[type="text/css"]', ["l1"]), + ('link[href="blah.css"]', ["l1"]), + ('link[href="no-blah.css"]', []), + ('[rel="stylesheet"]', ["l1"]), + ('[type="text/css"]', ["l1"]), + ('[href="blah.css"]', ["l1"]), + ('[href="no-blah.css"]', []), + ('p[href="no-blah.css"]', []), + ('[href="no-blah.css"]', []), + ) + + def test_attribute_tilde(self): + self.assert_css_select_multiple( + ('p[class~="class1"]', ["pmulti"]), + ('p[class~="class2"]', ["pmulti"]), + ('p[class~="class3"]', ["pmulti"]), + ('[class~="class1"]', ["pmulti"]), + ('[class~="class2"]', ["pmulti"]), + ('[class~="class3"]', ["pmulti"]), + ('a[rel~="friend"]', ["bob"]), + ('a[rel~="met"]', ["bob"]), + ('[rel~="friend"]', ["bob"]), + ('[rel~="met"]', ["bob"]), + ) + + def test_attribute_startswith(self): + self.assert_css_select_multiple( + ('[rel^="style"]', ["l1"]), + ('link[rel^="style"]', ["l1"]), + ('notlink[rel^="notstyle"]', []), + ('[rel^="notstyle"]', []), + ('link[rel^="notstyle"]', []), + ('link[href^="bla"]', ["l1"]), + ('a[href^="http://"]', ["bob", "me"]), + ('[href^="http://"]', ["bob", "me"]), + ('[id^="p"]', ["pmulti", "p1"]), + ('[id^="m"]', ["me", "main"]), + ('div[id^="m"]', ["main"]), + ('a[id^="m"]', ["me"]), + ('div[data-tag^="dashed"]', ["data1"]), + ) + + def test_attribute_endswith(self): + self.assert_css_select_multiple( + ('[href$=".css"]', ["l1"]), + ('link[href$=".css"]', ["l1"]), + ('link[id$="1"]', ["l1"]), + ( + '[id$="1"]', + ["data1", "l1", "p1", "header1", "s1a1", "s2a1", "s1a2s1", "dash1"], + ), + ('div[id$="1"]', ["data1"]), + ('[id$="noending"]', []), + ) + + def test_attribute_contains(self): + self.assert_css_select_multiple( + # From test_attribute_startswith + ('[rel*="style"]', ["l1"]), + ('link[rel*="style"]', ["l1"]), + ('notlink[rel*="notstyle"]', []), + ('[rel*="notstyle"]', []), + ('link[rel*="notstyle"]', []), + ('link[href*="bla"]', ["l1"]), + ('[href*="http://"]', ["bob", "me"]), + ('[id*="p"]', ["pmulti", "p1"]), + ('div[id*="m"]', ["main"]), + ('a[id*="m"]', ["me"]), + # From test_attribute_endswith + ('[href*=".css"]', ["l1"]), + ('link[href*=".css"]', ["l1"]), + ('link[id*="1"]', ["l1"]), + ( + '[id*="1"]', + [ + "data1", + "l1", + "p1", + "header1", + "s1a1", + "s1a2", + "s2a1", + "s1a2s1", + "dash1", + ], + ), + ('div[id*="1"]', ["data1"]), + ('[id*="noending"]', []), + # New for this test + ('[href*="."]', ["bob", "me", "l1"]), + ('a[href*="."]', ["bob", "me"]), + ('link[href*="."]', ["l1"]), + ('div[id*="n"]', ["main", "inner"]), + ('div[id*="nn"]', ["inner"]), + ('div[data-tag*="edval"]', ["data1"]), + ) + + def test_attribute_exact_or_hypen(self): + self.assert_css_select_multiple( + ('p[lang|="en"]', ["lang-en", "lang-en-gb", "lang-en-us"]), + ('[lang|="en"]', ["lang-en", "lang-en-gb", "lang-en-us"]), + ('p[lang|="fr"]', ["lang-fr"]), + ('p[lang|="gb"]', []), + ) + + def test_attribute_exists(self): + self.assert_css_select_multiple( + ("[rel]", ["l1", "bob", "me"]), + ("link[rel]", ["l1"]), + ("a[rel]", ["bob", "me"]), + ("[lang]", ["lang-en", "lang-en-gb", "lang-en-us", "lang-fr"]), + ("p[class]", ["p1", "pmulti"]), + ("[blah]", []), + ("p[blah]", []), + ("div[data-tag]", ["data1"]), + ) + + def test_quoted_space_in_selector_name(self): + html = """
nope
+
yes
+ """ + soup = BeautifulSoup(html, "html.parser") + [chosen] = soup.select('div[style="display: right"]') + assert "yes" == chosen.string + + def test_unsupported_pseudoclass(self): + with pytest.raises(SOUPSIEVE_EXCEPTION_ON_UNSUPPORTED_PSEUDOCLASS): + self._soup.select("a:no-such-pseudoclass") + + with pytest.raises(SelectorSyntaxError): + self._soup.select("a:nth-of-type(a)") + + def test_nth_of_type(self): + # Try to select first paragraph + els = self._soup.select("div#inner p:nth-of-type(1)") + assert len(els) == 1 + assert els[0].string == "Some text" + + # Try to select third paragraph + els = self._soup.select("div#inner p:nth-of-type(3)") + assert len(els) == 1 + assert els[0].string == "Another" + + # Try to select (non-existent!) fourth paragraph + els = self._soup.select("div#inner p:nth-of-type(4)") + assert len(els) == 0 + + # Zero will select no tags. + els = self._soup.select("div p:nth-of-type(0)") + assert len(els) == 0 + + def test_nth_of_type_direct_descendant(self): + els = self._soup.select("div#inner > p:nth-of-type(1)") + assert len(els) == 1 + assert els[0].string == "Some text" + + def test_id_child_selector_nth_of_type(self): + self.assert_css_selects("#inner > p:nth-of-type(2)", ["p1"]) + + def test_select_on_element(self): + # Other tests operate on the tree; this operates on an element + # within the tree. + inner = self._soup.find("div", id="main") + selected = inner.select("div") + # The
tag was selected. The