@scrypted/arlo 0.11.24 → 0.11.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/plugin.zip +0 -0
- package/package.json +9 -1
- package/venv/bin/Activate.ps1 +247 -0
- package/venv/bin/activate +69 -0
- package/venv/bin/activate.csh +26 -0
- package/venv/bin/activate.fish +69 -0
- package/venv/bin/normalizer +8 -0
- package/venv/bin/pip +8 -0
- package/venv/bin/pip3 +8 -0
- package/venv/bin/pip3.10 +8 -0
- package/venv/lib/python3.10/site-packages/_cffi_backend.cpython-310-x86_64-linux-gnu.so +0 -0
- package/venv/lib/python3.10/site-packages/_distutils_hack/__init__.py +132 -0
- package/venv/lib/python3.10/site-packages/_distutils_hack/override.py +1 -0
- package/venv/lib/python3.10/site-packages/aiohappyeyeballs/__init__.py +13 -0
- package/venv/lib/python3.10/site-packages/aiohappyeyeballs/_staggered.py +202 -0
- package/venv/lib/python3.10/site-packages/aiohappyeyeballs/impl.py +210 -0
- package/venv/lib/python3.10/site-packages/aiohappyeyeballs/py.typed +0 -0
- package/venv/lib/python3.10/site-packages/aiohappyeyeballs/types.py +12 -0
- package/venv/lib/python3.10/site-packages/aiohappyeyeballs/utils.py +97 -0
- package/venv/lib/python3.10/site-packages/aiohappyeyeballs-2.4.6.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/aiohappyeyeballs-2.4.6.dist-info/LICENSE +279 -0
- package/venv/lib/python3.10/site-packages/aiohappyeyeballs-2.4.6.dist-info/METADATA +123 -0
- package/venv/lib/python3.10/site-packages/aiohappyeyeballs-2.4.6.dist-info/RECORD +16 -0
- package/venv/lib/python3.10/site-packages/aiohappyeyeballs-2.4.6.dist-info/WHEEL +4 -0
- package/venv/lib/python3.10/site-packages/aiohttp/.hash/_cparser.pxd.hash +1 -0
- package/venv/lib/python3.10/site-packages/aiohttp/.hash/_find_header.pxd.hash +1 -0
- package/venv/lib/python3.10/site-packages/aiohttp/.hash/_http_parser.pyx.hash +1 -0
- package/venv/lib/python3.10/site-packages/aiohttp/.hash/_http_writer.pyx.hash +1 -0
- package/venv/lib/python3.10/site-packages/aiohttp/.hash/hdrs.py.hash +1 -0
- package/venv/lib/python3.10/site-packages/aiohttp/__init__.py +264 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_cparser.pxd +158 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_find_header.pxd +2 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_headers.pxi +83 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_http_parser.cpython-310-x86_64-linux-gnu.so +0 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_http_parser.pyx +837 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_http_writer.cpython-310-x86_64-linux-gnu.so +0 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_http_writer.pyx +162 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/.hash/mask.pxd.hash +1 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/.hash/mask.pyx.hash +1 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/.hash/reader_c.pxd.hash +1 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/__init__.py +1 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/helpers.py +147 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/mask.cpython-310-x86_64-linux-gnu.so +0 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/mask.pxd +3 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/mask.pyx +48 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/models.py +84 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/reader.py +31 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/reader_c.cpython-310-x86_64-linux-gnu.so +0 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/reader_c.pxd +102 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/reader_c.py +468 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/reader_py.py +468 -0
- package/venv/lib/python3.10/site-packages/aiohttp/_websocket/writer.py +177 -0
- package/venv/lib/python3.10/site-packages/aiohttp/abc.py +253 -0
- package/venv/lib/python3.10/site-packages/aiohttp/base_protocol.py +100 -0
- package/venv/lib/python3.10/site-packages/aiohttp/client.py +1550 -0
- package/venv/lib/python3.10/site-packages/aiohttp/client_exceptions.py +421 -0
- package/venv/lib/python3.10/site-packages/aiohttp/client_proto.py +307 -0
- package/venv/lib/python3.10/site-packages/aiohttp/client_reqrep.py +1315 -0
- package/venv/lib/python3.10/site-packages/aiohttp/client_ws.py +426 -0
- package/venv/lib/python3.10/site-packages/aiohttp/compression_utils.py +173 -0
- package/venv/lib/python3.10/site-packages/aiohttp/connector.py +1652 -0
- package/venv/lib/python3.10/site-packages/aiohttp/cookiejar.py +495 -0
- package/venv/lib/python3.10/site-packages/aiohttp/formdata.py +182 -0
- package/venv/lib/python3.10/site-packages/aiohttp/hdrs.py +121 -0
- package/venv/lib/python3.10/site-packages/aiohttp/helpers.py +944 -0
- package/venv/lib/python3.10/site-packages/aiohttp/http.py +72 -0
- package/venv/lib/python3.10/site-packages/aiohttp/http_exceptions.py +112 -0
- package/venv/lib/python3.10/site-packages/aiohttp/http_parser.py +1046 -0
- package/venv/lib/python3.10/site-packages/aiohttp/http_websocket.py +36 -0
- package/venv/lib/python3.10/site-packages/aiohttp/http_writer.py +249 -0
- package/venv/lib/python3.10/site-packages/aiohttp/log.py +8 -0
- package/venv/lib/python3.10/site-packages/aiohttp/multipart.py +1071 -0
- package/venv/lib/python3.10/site-packages/aiohttp/payload.py +519 -0
- package/venv/lib/python3.10/site-packages/aiohttp/payload_streamer.py +78 -0
- package/venv/lib/python3.10/site-packages/aiohttp/py.typed +1 -0
- package/venv/lib/python3.10/site-packages/aiohttp/pytest_plugin.py +436 -0
- package/venv/lib/python3.10/site-packages/aiohttp/resolver.py +187 -0
- package/venv/lib/python3.10/site-packages/aiohttp/streams.py +727 -0
- package/venv/lib/python3.10/site-packages/aiohttp/tcp_helpers.py +37 -0
- package/venv/lib/python3.10/site-packages/aiohttp/test_utils.py +770 -0
- package/venv/lib/python3.10/site-packages/aiohttp/tracing.py +470 -0
- package/venv/lib/python3.10/site-packages/aiohttp/typedefs.py +69 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web.py +605 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web_app.py +620 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web_exceptions.py +452 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web_fileresponse.py +418 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web_log.py +216 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web_middlewares.py +121 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web_protocol.py +750 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web_request.py +916 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web_response.py +840 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web_routedef.py +214 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web_runner.py +399 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web_server.py +84 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web_urldispatcher.py +1301 -0
- package/venv/lib/python3.10/site-packages/aiohttp/web_ws.py +622 -0
- package/venv/lib/python3.10/site-packages/aiohttp/worker.py +252 -0
- package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/LICENSE.txt +13 -0
- package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/METADATA +250 -0
- package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/RECORD +132 -0
- package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/REQUESTED +0 -0
- package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/WHEEL +6 -0
- package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/aiosignal/__init__.py +36 -0
- package/venv/lib/python3.10/site-packages/aiosignal/__init__.pyi +12 -0
- package/venv/lib/python3.10/site-packages/aiosignal/py.typed +0 -0
- package/venv/lib/python3.10/site-packages/aiosignal-1.3.2.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/aiosignal-1.3.2.dist-info/LICENSE +201 -0
- package/venv/lib/python3.10/site-packages/aiosignal-1.3.2.dist-info/METADATA +123 -0
- package/venv/lib/python3.10/site-packages/aiosignal-1.3.2.dist-info/RECORD +10 -0
- package/venv/lib/python3.10/site-packages/aiosignal-1.3.2.dist-info/WHEEL +6 -0
- package/venv/lib/python3.10/site-packages/aiosignal-1.3.2.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/async_timeout/__init__.py +276 -0
- package/venv/lib/python3.10/site-packages/async_timeout/py.typed +1 -0
- package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/LICENSE +13 -0
- package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/METADATA +163 -0
- package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/RECORD +11 -0
- package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/REQUESTED +0 -0
- package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/WHEEL +5 -0
- package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/zip-safe +1 -0
- package/venv/lib/python3.10/site-packages/attr/__init__.py +104 -0
- package/venv/lib/python3.10/site-packages/attr/__init__.pyi +389 -0
- package/venv/lib/python3.10/site-packages/attr/_cmp.py +160 -0
- package/venv/lib/python3.10/site-packages/attr/_cmp.pyi +13 -0
- package/venv/lib/python3.10/site-packages/attr/_compat.py +94 -0
- package/venv/lib/python3.10/site-packages/attr/_config.py +31 -0
- package/venv/lib/python3.10/site-packages/attr/_funcs.py +468 -0
- package/venv/lib/python3.10/site-packages/attr/_make.py +3055 -0
- package/venv/lib/python3.10/site-packages/attr/_next_gen.py +623 -0
- package/venv/lib/python3.10/site-packages/attr/_typing_compat.pyi +15 -0
- package/venv/lib/python3.10/site-packages/attr/_version_info.py +86 -0
- package/venv/lib/python3.10/site-packages/attr/_version_info.pyi +9 -0
- package/venv/lib/python3.10/site-packages/attr/converters.py +162 -0
- package/venv/lib/python3.10/site-packages/attr/converters.pyi +19 -0
- package/venv/lib/python3.10/site-packages/attr/exceptions.py +95 -0
- package/venv/lib/python3.10/site-packages/attr/exceptions.pyi +17 -0
- package/venv/lib/python3.10/site-packages/attr/filters.py +72 -0
- package/venv/lib/python3.10/site-packages/attr/filters.pyi +6 -0
- package/venv/lib/python3.10/site-packages/attr/py.typed +0 -0
- package/venv/lib/python3.10/site-packages/attr/setters.py +79 -0
- package/venv/lib/python3.10/site-packages/attr/setters.pyi +20 -0
- package/venv/lib/python3.10/site-packages/attr/validators.py +710 -0
- package/venv/lib/python3.10/site-packages/attr/validators.pyi +86 -0
- package/venv/lib/python3.10/site-packages/attrs/__init__.py +69 -0
- package/venv/lib/python3.10/site-packages/attrs/__init__.pyi +263 -0
- package/venv/lib/python3.10/site-packages/attrs/converters.py +3 -0
- package/venv/lib/python3.10/site-packages/attrs/exceptions.py +3 -0
- package/venv/lib/python3.10/site-packages/attrs/filters.py +3 -0
- package/venv/lib/python3.10/site-packages/attrs/py.typed +0 -0
- package/venv/lib/python3.10/site-packages/attrs/setters.py +3 -0
- package/venv/lib/python3.10/site-packages/attrs/validators.py +3 -0
- package/venv/lib/python3.10/site-packages/attrs-25.1.0.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/attrs-25.1.0.dist-info/METADATA +232 -0
- package/venv/lib/python3.10/site-packages/attrs-25.1.0.dist-info/RECORD +55 -0
- package/venv/lib/python3.10/site-packages/attrs-25.1.0.dist-info/WHEEL +4 -0
- package/venv/lib/python3.10/site-packages/attrs-25.1.0.dist-info/licenses/LICENSE +21 -0
- package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/METADATA +123 -0
- package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/RECORD +90 -0
- package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/REQUESTED +0 -0
- package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/WHEEL +4 -0
- package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/AUTHORS +49 -0
- package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/LICENSE +31 -0
- package/venv/lib/python3.10/site-packages/bs4/__init__.py +1170 -0
- package/venv/lib/python3.10/site-packages/bs4/_deprecation.py +80 -0
- package/venv/lib/python3.10/site-packages/bs4/_typing.py +196 -0
- package/venv/lib/python3.10/site-packages/bs4/_warnings.py +98 -0
- package/venv/lib/python3.10/site-packages/bs4/builder/__init__.py +848 -0
- package/venv/lib/python3.10/site-packages/bs4/builder/_html5lib.py +594 -0
- package/venv/lib/python3.10/site-packages/bs4/builder/_htmlparser.py +474 -0
- package/venv/lib/python3.10/site-packages/bs4/builder/_lxml.py +490 -0
- package/venv/lib/python3.10/site-packages/bs4/css.py +338 -0
- package/venv/lib/python3.10/site-packages/bs4/dammit.py +1408 -0
- package/venv/lib/python3.10/site-packages/bs4/diagnose.py +268 -0
- package/venv/lib/python3.10/site-packages/bs4/element.py +2886 -0
- package/venv/lib/python3.10/site-packages/bs4/exceptions.py +28 -0
- package/venv/lib/python3.10/site-packages/bs4/filter.py +755 -0
- package/venv/lib/python3.10/site-packages/bs4/formatter.py +276 -0
- package/venv/lib/python3.10/site-packages/bs4/py.typed +0 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/__init__.py +1305 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase +1 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase +1 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase +1 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase +0 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase +0 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase +0 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase +1 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase +0 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase +2 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase +1 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase +0 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase +1 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase +1 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6306874195312640.testcase +1 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase +0 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase +0 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase +0 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase +0 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_builder.py +28 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_builder_registry.py +139 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_css.py +536 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_dammit.py +433 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_element.py +138 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_filter.py +674 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_formatter.py +170 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_fuzz.py +181 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_html5lib.py +264 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_htmlparser.py +161 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_lxml.py +196 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_navigablestring.py +144 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_pageelement.py +437 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_soup.py +602 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_tag.py +241 -0
- package/venv/lib/python3.10/site-packages/bs4/tests/test_tree.py +1452 -0
- package/venv/lib/python3.10/site-packages/cachetools/__init__.py +859 -0
- package/venv/lib/python3.10/site-packages/cachetools/func.py +121 -0
- package/venv/lib/python3.10/site-packages/cachetools/keys.py +62 -0
- package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/LICENSE +20 -0
- package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/METADATA +151 -0
- package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/RECORD +13 -0
- package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/REQUESTED +0 -0
- package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/WHEEL +5 -0
- package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/certifi/__init__.py +4 -0
- package/venv/lib/python3.10/site-packages/certifi/__main__.py +12 -0
- package/venv/lib/python3.10/site-packages/certifi/cacert.pem +4897 -0
- package/venv/lib/python3.10/site-packages/certifi/core.py +114 -0
- package/venv/lib/python3.10/site-packages/certifi/py.typed +0 -0
- package/venv/lib/python3.10/site-packages/certifi-2025.1.31.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/certifi-2025.1.31.dist-info/LICENSE +20 -0
- package/venv/lib/python3.10/site-packages/certifi-2025.1.31.dist-info/METADATA +77 -0
- package/venv/lib/python3.10/site-packages/certifi-2025.1.31.dist-info/RECORD +14 -0
- package/venv/lib/python3.10/site-packages/certifi-2025.1.31.dist-info/WHEEL +5 -0
- package/venv/lib/python3.10/site-packages/certifi-2025.1.31.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/cffi/__init__.py +14 -0
- package/venv/lib/python3.10/site-packages/cffi/_cffi_errors.h +149 -0
- package/venv/lib/python3.10/site-packages/cffi/_cffi_include.h +389 -0
- package/venv/lib/python3.10/site-packages/cffi/_embedding.h +550 -0
- package/venv/lib/python3.10/site-packages/cffi/_imp_emulation.py +83 -0
- package/venv/lib/python3.10/site-packages/cffi/_shimmed_dist_utils.py +45 -0
- package/venv/lib/python3.10/site-packages/cffi/api.py +967 -0
- package/venv/lib/python3.10/site-packages/cffi/backend_ctypes.py +1121 -0
- package/venv/lib/python3.10/site-packages/cffi/cffi_opcode.py +187 -0
- package/venv/lib/python3.10/site-packages/cffi/commontypes.py +82 -0
- package/venv/lib/python3.10/site-packages/cffi/cparser.py +1015 -0
- package/venv/lib/python3.10/site-packages/cffi/error.py +31 -0
- package/venv/lib/python3.10/site-packages/cffi/ffiplatform.py +113 -0
- package/venv/lib/python3.10/site-packages/cffi/lock.py +30 -0
- package/venv/lib/python3.10/site-packages/cffi/model.py +618 -0
- package/venv/lib/python3.10/site-packages/cffi/parse_c_type.h +181 -0
- package/venv/lib/python3.10/site-packages/cffi/pkgconfig.py +121 -0
- package/venv/lib/python3.10/site-packages/cffi/recompiler.py +1598 -0
- package/venv/lib/python3.10/site-packages/cffi/setuptools_ext.py +216 -0
- package/venv/lib/python3.10/site-packages/cffi/vengine_cpy.py +1084 -0
- package/venv/lib/python3.10/site-packages/cffi/vengine_gen.py +679 -0
- package/venv/lib/python3.10/site-packages/cffi/verifier.py +306 -0
- package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/LICENSE +26 -0
- package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/METADATA +40 -0
- package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/RECORD +48 -0
- package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/WHEEL +6 -0
- package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/entry_points.txt +2 -0
- package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/top_level.txt +2 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/__init__.py +48 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/__main__.py +6 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/api.py +668 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/cd.py +395 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/cli/__init__.py +8 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/cli/__main__.py +321 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/constant.py +1998 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/legacy.py +66 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/md.cpython-310-x86_64-linux-gnu.so +0 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/md.py +630 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/md__mypyc.cpython-310-x86_64-linux-gnu.so +0 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/models.py +360 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/py.typed +0 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/utils.py +408 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer/version.py +8 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/LICENSE +21 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/METADATA +721 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/RECORD +35 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/WHEEL +6 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/entry_points.txt +2 -0
- package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/__init__.py +407 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/captcha/2captcha.py +258 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/captcha/9kw.py +214 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/captcha/__init__.py +47 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/captcha/anticaptcha.py +199 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/captcha/capmonster.py +199 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/captcha/capsolver.py +188 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/captcha/deathbycaptcha.py +276 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/cloudflare.py +490 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/exceptions.py +111 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/help.py +72 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/__init__.py +56 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/chakracore.py +103 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/encapsulated.py +62 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/js2py.py +44 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/jsunfuck.py +97 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/native.py +233 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/nodejs.py +49 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/v8.py +33 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/user_agent/__init__.py +124 -0
- package/venv/lib/python3.10/site-packages/cloudscraper/user_agent/browsers.json +7913 -0
- package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/LICENSE +22 -0
- package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/METADATA +674 -0
- package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/RECORD +48 -0
- package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/REQUESTED +0 -0
- package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/WHEEL +6 -0
- package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/__init__.py +37 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/__version__.py +8 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/_asyncio_selector.py +344 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/_wrapper.abi3.so +0 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/aio.py +257 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/const.py +581 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/curl.py +548 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/py.typed +1 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/requests/__init__.py +146 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/requests/cookies.py +355 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/requests/errors.py +7 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/requests/exceptions.py +219 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/requests/headers.py +348 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/requests/impersonate.py +360 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/requests/models.py +292 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/requests/session.py +1021 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/requests/utils.py +663 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/requests/websockets.py +711 -0
- package/venv/lib/python3.10/site-packages/curl_cffi/utils.py +13 -0
- package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/LICENSE +21 -0
- package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/METADATA +333 -0
- package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/RECORD +43 -0
- package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/REQUESTED +0 -0
- package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/WHEEL +6 -0
- package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/distutils-precedence.pth +1 -0
- package/venv/lib/python3.10/site-packages/frozenlist/__init__.py +98 -0
- package/venv/lib/python3.10/site-packages/frozenlist/__init__.pyi +47 -0
- package/venv/lib/python3.10/site-packages/frozenlist/_frozenlist.cpython-310-x86_64-linux-gnu.so +0 -0
- package/venv/lib/python3.10/site-packages/frozenlist/_frozenlist.pyx +123 -0
- package/venv/lib/python3.10/site-packages/frozenlist/py.typed +1 -0
- package/venv/lib/python3.10/site-packages/frozenlist-1.5.0.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/frozenlist-1.5.0.dist-info/LICENSE +201 -0
- package/venv/lib/python3.10/site-packages/frozenlist-1.5.0.dist-info/METADATA +477 -0
- package/venv/lib/python3.10/site-packages/frozenlist-1.5.0.dist-info/RECORD +12 -0
- package/venv/lib/python3.10/site-packages/frozenlist-1.5.0.dist-info/WHEEL +8 -0
- package/venv/lib/python3.10/site-packages/frozenlist-1.5.0.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/idna/__init__.py +45 -0
- package/venv/lib/python3.10/site-packages/idna/codec.py +122 -0
- package/venv/lib/python3.10/site-packages/idna/compat.py +15 -0
- package/venv/lib/python3.10/site-packages/idna/core.py +437 -0
- package/venv/lib/python3.10/site-packages/idna/idnadata.py +4243 -0
- package/venv/lib/python3.10/site-packages/idna/intranges.py +57 -0
- package/venv/lib/python3.10/site-packages/idna/package_data.py +1 -0
- package/venv/lib/python3.10/site-packages/idna/py.typed +0 -0
- package/venv/lib/python3.10/site-packages/idna/uts46data.py +8681 -0
- package/venv/lib/python3.10/site-packages/idna-3.10.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/idna-3.10.dist-info/LICENSE.md +31 -0
- package/venv/lib/python3.10/site-packages/idna-3.10.dist-info/METADATA +250 -0
- package/venv/lib/python3.10/site-packages/idna-3.10.dist-info/RECORD +22 -0
- package/venv/lib/python3.10/site-packages/idna-3.10.dist-info/WHEEL +4 -0
- package/venv/lib/python3.10/site-packages/multidict/__init__.py +48 -0
- package/venv/lib/python3.10/site-packages/multidict/__init__.pyi +152 -0
- package/venv/lib/python3.10/site-packages/multidict/_abc.py +48 -0
- package/venv/lib/python3.10/site-packages/multidict/_compat.py +14 -0
- package/venv/lib/python3.10/site-packages/multidict/_multidict.cpython-310-x86_64-linux-gnu.so +0 -0
- package/venv/lib/python3.10/site-packages/multidict/_multidict_base.py +152 -0
- package/venv/lib/python3.10/site-packages/multidict/_multidict_py.py +527 -0
- package/venv/lib/python3.10/site-packages/multidict/py.typed +1 -0
- package/venv/lib/python3.10/site-packages/multidict-6.1.0.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/multidict-6.1.0.dist-info/LICENSE +13 -0
- package/venv/lib/python3.10/site-packages/multidict-6.1.0.dist-info/METADATA +140 -0
- package/venv/lib/python3.10/site-packages/multidict-6.1.0.dist-info/RECORD +19 -0
- package/venv/lib/python3.10/site-packages/multidict-6.1.0.dist-info/WHEEL +6 -0
- package/venv/lib/python3.10/site-packages/multidict-6.1.0.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/paho/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/paho/mqtt/__init__.py +5 -0
- package/venv/lib/python3.10/site-packages/paho/mqtt/client.py +5004 -0
- package/venv/lib/python3.10/site-packages/paho/mqtt/enums.py +113 -0
- package/venv/lib/python3.10/site-packages/paho/mqtt/matcher.py +78 -0
- package/venv/lib/python3.10/site-packages/paho/mqtt/packettypes.py +43 -0
- package/venv/lib/python3.10/site-packages/paho/mqtt/properties.py +421 -0
- package/venv/lib/python3.10/site-packages/paho/mqtt/publish.py +306 -0
- package/venv/lib/python3.10/site-packages/paho/mqtt/py.typed +0 -0
- package/venv/lib/python3.10/site-packages/paho/mqtt/reasoncodes.py +223 -0
- package/venv/lib/python3.10/site-packages/paho/mqtt/subscribe.py +281 -0
- package/venv/lib/python3.10/site-packages/paho/mqtt/subscribeoptions.py +113 -0
- package/venv/lib/python3.10/site-packages/paho_mqtt-2.1.0.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/paho_mqtt-2.1.0.dist-info/METADATA +635 -0
- package/venv/lib/python3.10/site-packages/paho_mqtt-2.1.0.dist-info/RECORD +29 -0
- package/venv/lib/python3.10/site-packages/paho_mqtt-2.1.0.dist-info/REQUESTED +0 -0
- package/venv/lib/python3.10/site-packages/paho_mqtt-2.1.0.dist-info/WHEEL +4 -0
- package/venv/lib/python3.10/site-packages/paho_mqtt-2.1.0.dist-info/licenses/LICENSE.txt +3 -0
- package/venv/lib/python3.10/site-packages/pip/__init__.py +13 -0
- package/venv/lib/python3.10/site-packages/pip/__main__.py +31 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/__init__.py +19 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/build_env.py +296 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/cache.py +264 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/cli/__init__.py +4 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/cli/autocompletion.py +171 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/cli/base_command.py +220 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/cli/cmdoptions.py +1018 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/cli/command_context.py +27 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/cli/main.py +70 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/cli/main_parser.py +87 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/cli/parser.py +292 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/cli/progress_bars.py +321 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/cli/req_command.py +506 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/cli/spinners.py +157 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/cli/status_codes.py +6 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/__init__.py +127 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/cache.py +223 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/check.py +53 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/completion.py +96 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/configuration.py +266 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/debug.py +202 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/download.py +140 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/freeze.py +97 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/hash.py +59 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/help.py +41 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/index.py +139 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/install.py +771 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/list.py +363 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/search.py +174 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/show.py +178 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/uninstall.py +105 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/commands/wheel.py +178 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/configuration.py +366 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/distributions/__init__.py +21 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/distributions/base.py +36 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/distributions/installed.py +20 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/distributions/sdist.py +127 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/distributions/wheel.py +31 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/exceptions.py +658 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/index/__init__.py +2 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/index/collector.py +648 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/index/package_finder.py +1004 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/index/sources.py +224 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/locations/__init__.py +520 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/locations/_distutils.py +169 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/locations/_sysconfig.py +219 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/locations/base.py +52 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/main.py +12 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/metadata/__init__.py +62 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/metadata/base.py +546 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/metadata/pkg_resources.py +256 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/models/__init__.py +2 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/models/candidate.py +34 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/models/direct_url.py +220 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/models/format_control.py +80 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/models/index.py +28 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/models/link.py +288 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/models/scheme.py +31 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/models/search_scope.py +129 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/models/selection_prefs.py +51 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/models/target_python.py +110 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/models/wheel.py +89 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/network/__init__.py +2 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/network/auth.py +323 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/network/cache.py +69 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/network/download.py +185 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/network/lazy_wheel.py +210 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/network/session.py +454 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/network/utils.py +96 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/network/xmlrpc.py +60 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata.py +39 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_editable.py +41 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_legacy.py +74 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel.py +37 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_editable.py +46 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_legacy.py +102 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/check.py +149 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/freeze.py +254 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/install/__init__.py +2 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/install/editable_legacy.py +47 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/install/legacy.py +120 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/install/wheel.py +738 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/operations/prepare.py +642 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/pyproject.py +168 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/req/__init__.py +94 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/req/constructors.py +490 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/req/req_file.py +536 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/req/req_install.py +858 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/req/req_set.py +189 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/req/req_tracker.py +124 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/req/req_uninstall.py +633 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/resolution/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/resolution/base.py +20 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/resolver.py +467 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/base.py +141 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py +547 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py +739 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +155 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/provider.py +248 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/reporter.py +68 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/requirements.py +166 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py +292 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/self_outdated_check.py +189 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/_log.py +38 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/appdirs.py +52 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/compat.py +63 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/compatibility_tags.py +165 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/datetime.py +11 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/deprecation.py +120 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/direct_url_helpers.py +87 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/distutils_args.py +42 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/egg_link.py +75 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/encoding.py +36 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/entrypoints.py +27 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/filesystem.py +182 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/filetypes.py +27 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/glibc.py +88 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/hashes.py +144 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/inject_securetransport.py +35 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/logging.py +343 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/misc.py +653 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/models.py +39 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/packaging.py +57 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/setuptools_build.py +195 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/subprocess.py +260 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/temp_dir.py +246 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/unpacking.py +258 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/urls.py +62 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/virtualenv.py +104 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/utils/wheel.py +136 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/vcs/__init__.py +15 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/vcs/bazaar.py +101 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/vcs/git.py +526 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/vcs/mercurial.py +163 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/vcs/subversion.py +324 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/vcs/versioncontrol.py +705 -0
- package/venv/lib/python3.10/site-packages/pip/_internal/wheel_builder.py +377 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/__init__.py +111 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__init__.py +18 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/_cmd.py +61 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/adapter.py +137 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/cache.py +43 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +6 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +150 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +37 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/compat.py +32 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/controller.py +415 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/filewrapper.py +111 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/heuristics.py +139 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/serialize.py +186 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/wrapper.py +33 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__init__.py +3 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__main__.py +12 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/certifi/cacert.pem +4362 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/certifi/core.py +76 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__init__.py +83 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/big5freq.py +386 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/big5prober.py +47 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/chardistribution.py +233 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetgroupprober.py +107 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetprober.py +145 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__init__.py +1 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/chardetect.py +84 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachine.py +88 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/compat.py +36 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cp949prober.py +49 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/enums.py +76 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/escprober.py +101 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/escsm.py +246 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/eucjpprober.py +92 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrfreq.py +195 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrprober.py +47 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwfreq.py +387 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwprober.py +46 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312freq.py +283 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312prober.py +46 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/hebrewprober.py +292 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/jisfreq.py +325 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/jpcntx.py +233 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langbulgarianmodel.py +4650 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langgreekmodel.py +4398 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhebrewmodel.py +4383 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhungarianmodel.py +4650 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langrussianmodel.py +5718 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langthaimodel.py +4383 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langturkishmodel.py +4383 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/latin1prober.py +145 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcharsetprober.py +91 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcsgroupprober.py +54 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcssm.py +572 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/languages.py +310 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcharsetprober.py +145 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcsgroupprober.py +83 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sjisprober.py +92 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/universaldetector.py +286 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf8prober.py +82 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/version.py +9 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/colorama/__init__.py +6 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansi.py +102 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansitowin32.py +258 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/colorama/initialise.py +80 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/colorama/win32.py +152 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/colorama/winterm.py +169 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__init__.py +23 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/compat.py +1116 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/database.py +1345 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/index.py +509 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/locators.py +1300 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/manifest.py +393 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/markers.py +152 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/metadata.py +1058 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/resources.py +358 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/scripts.py +429 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/util.py +1932 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/version.py +739 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/wheel.py +1053 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/distro.py +1386 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/__init__.py +35 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_ihatexml.py +289 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_inputstream.py +918 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_tokenizer.py +1735 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_trie/__init__.py +5 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_trie/_base.py +40 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_trie/py.py +67 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_utils.py +159 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/constants.py +2946 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py +29 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/base.py +12 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py +73 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/lint.py +93 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/optionaltags.py +207 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/sanitizer.py +916 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/whitespace.py +38 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/html5parser.py +2795 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/serializer.py +409 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py +30 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py +54 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treeadapters/sax.py +50 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py +88 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/base.py +417 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/dom.py +239 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/etree.py +343 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py +392 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py +154 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treewalkers/base.py +252 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treewalkers/dom.py +43 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treewalkers/etree.py +131 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py +215 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py +69 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/idna/__init__.py +44 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/idna/codec.py +112 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/idna/compat.py +13 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/idna/core.py +397 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/idna/idnadata.py +2137 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/idna/intranges.py +54 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/idna/package_data.py +2 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/idna/uts46data.py +8512 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__init__.py +54 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/_version.py +1 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/ext.py +193 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/fallback.py +1012 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__about__.py +26 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__init__.py +25 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_manylinux.py +301 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_musllinux.py +136 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_structures.py +61 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/markers.py +304 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/requirements.py +146 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/specifiers.py +802 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/tags.py +487 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/utils.py +136 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/version.py +504 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/__init__.py +6 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/build.py +127 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/check.py +207 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/colorlog.py +115 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/compat.py +51 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/dirtools.py +44 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/envbuild.py +171 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/__init__.py +17 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py +363 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/meta.py +92 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/wrappers.py +375 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__init__.py +3296 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/py31compat.py +23 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__init__.py +331 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__main__.py +46 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/android.py +119 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/api.py +156 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/macos.py +64 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/unix.py +181 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/version.py +4 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/windows.py +182 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/progress/__init__.py +189 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/progress/bar.py +93 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/progress/colors.py +79 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/progress/counter.py +47 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/progress/spinner.py +45 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__init__.py +83 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__main__.py +17 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/cmdline.py +663 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/console.py +70 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/filter.py +71 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__init__.py +937 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatter.py +94 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__init__.py +153 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/_mapping.py +84 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/bbcode.py +108 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/groff.py +168 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/html.py +983 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/img.py +641 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/irc.py +179 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/latex.py +511 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/other.py +161 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py +83 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/rtf.py +146 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/svg.py +188 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal.py +127 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal256.py +338 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexer.py +879 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__init__.py +341 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/_mapping.py +580 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/python.py +1188 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/modeline.py +43 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/plugin.py +69 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/regexopt.py +91 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/scanner.py +104 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/sphinxext.py +155 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/style.py +197 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__init__.py +93 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/token.py +212 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/unistring.py +153 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/util.py +308 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__init__.py +328 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/actions.py +207 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/common.py +424 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/core.py +5789 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/diagram/__init__.py +593 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/exceptions.py +267 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/helpers.py +1069 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/results.py +760 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/testing.py +331 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/unicode.py +332 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/util.py +235 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/__init__.py +154 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/__version__.py +14 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/_internal_utils.py +42 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/adapters.py +538 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/api.py +159 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/auth.py +305 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/certs.py +18 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/compat.py +77 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/cookies.py +549 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/exceptions.py +133 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/help.py +132 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/hooks.py +34 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/models.py +973 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/packages.py +16 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/sessions.py +771 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/status_codes.py +123 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/structures.py +105 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/requests/utils.py +1060 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__init__.py +26 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py +6 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/providers.py +133 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/reporters.py +43 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py +482 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/structs.py +165 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/__init__.py +172 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/__main__.py +280 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_cell_widths.py +451 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_emoji_codes.py +3610 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_emoji_replace.py +32 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_extension.py +10 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_inspect.py +210 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_log_render.py +94 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_loop.py +43 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_lru_cache.py +34 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_palettes.py +309 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_pick.py +17 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_ratio.py +160 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_spinners.py +848 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_stack.py +16 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_timer.py +19 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows.py +72 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_wrap.py +55 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/abc.py +33 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/align.py +312 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/ansi.py +228 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/bar.py +94 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/box.py +483 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/cells.py +147 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/color.py +581 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/color_triplet.py +38 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/columns.py +187 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/console.py +2211 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/constrain.py +37 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/containers.py +167 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/control.py +175 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/default_styles.py +183 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/diagnose.py +6 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/emoji.py +96 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/errors.py +34 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/file_proxy.py +54 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/filesize.py +89 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/highlighter.py +147 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/json.py +140 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/jupyter.py +92 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/layout.py +444 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/live.py +365 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/live_render.py +113 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/logging.py +268 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/markup.py +244 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/measure.py +149 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/padding.py +141 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/pager.py +34 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/palette.py +100 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/panel.py +250 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/pretty.py +903 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/progress.py +1036 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/progress_bar.py +216 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/prompt.py +376 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/protocol.py +42 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/region.py +10 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/repr.py +151 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/rule.py +115 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/scope.py +86 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/screen.py +54 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/segment.py +720 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/spinner.py +134 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/status.py +132 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/style.py +785 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/styled.py +42 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/syntax.py +735 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/table.py +968 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/tabulate.py +51 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/terminal_theme.py +55 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/text.py +1282 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/theme.py +112 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/themes.py +5 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/traceback.py +678 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/rich/tree.py +249 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/six.py +998 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__init__.py +517 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/_asyncio.py +92 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/_utils.py +68 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/after.py +46 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/before.py +41 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/before_sleep.py +58 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/nap.py +43 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/retry.py +213 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/stop.py +96 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/tornadoweb.py +59 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/wait.py +191 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tomli/__init__.py +6 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tomli/_parser.py +703 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/tomli/_re.py +83 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/typing_extensions.py +2296 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__init__.py +85 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/_collections.py +355 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/_version.py +2 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/connection.py +569 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/connectionpool.py +1113 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +397 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +130 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +511 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +922 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/exceptions.py +323 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/fields.py +274 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/six.py +1077 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/poolmanager.py +539 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/request.py +170 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/response.py +821 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/connection.py +149 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/proxy.py +57 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/request.py +143 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/retry.py +622 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssl_.py +495 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +161 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/timeout.py +268 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/url.py +432 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/wait.py +153 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/vendor.txt +25 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__init__.py +342 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/webencodings/labels.py +231 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/webencodings/mklabels.py +59 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/webencodings/tests.py +153 -0
- package/venv/lib/python3.10/site-packages/pip/_vendor/webencodings/x_user_defined.py +325 -0
- package/venv/lib/python3.10/site-packages/pip/py.typed +4 -0
- package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/LICENSE.txt +20 -0
- package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/METADATA +92 -0
- package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/RECORD +1037 -0
- package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/REQUESTED +0 -0
- package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/WHEEL +5 -0
- package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/entry_points.txt +5 -0
- package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/__init__.py +3303 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/appdirs.py +608 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__about__.py +26 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__init__.py +25 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_manylinux.py +301 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_musllinux.py +136 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_structures.py +67 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/markers.py +304 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/requirements.py +146 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/specifiers.py +828 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/tags.py +484 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/utils.py +136 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/version.py +504 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing.py +5742 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/extern/__init__.py +73 -0
- package/venv/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py +6 -0
- package/venv/lib/python3.10/site-packages/propcache/__init__.py +32 -0
- package/venv/lib/python3.10/site-packages/propcache/_helpers.py +39 -0
- package/venv/lib/python3.10/site-packages/propcache/_helpers_c.cpython-310-x86_64-linux-gnu.so +0 -0
- package/venv/lib/python3.10/site-packages/propcache/_helpers_c.pyx +84 -0
- package/venv/lib/python3.10/site-packages/propcache/_helpers_py.py +56 -0
- package/venv/lib/python3.10/site-packages/propcache/api.py +8 -0
- package/venv/lib/python3.10/site-packages/propcache/py.typed +1 -0
- package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/LICENSE +202 -0
- package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/METADATA +275 -0
- package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/NOTICE +13 -0
- package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/RECORD +18 -0
- package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/WHEEL +6 -0
- package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/pycparser/__init__.py +93 -0
- package/venv/lib/python3.10/site-packages/pycparser/_ast_gen.py +336 -0
- package/venv/lib/python3.10/site-packages/pycparser/_build_tables.py +40 -0
- package/venv/lib/python3.10/site-packages/pycparser/_c_ast.cfg +195 -0
- package/venv/lib/python3.10/site-packages/pycparser/ast_transforms.py +164 -0
- package/venv/lib/python3.10/site-packages/pycparser/c_ast.py +1125 -0
- package/venv/lib/python3.10/site-packages/pycparser/c_generator.py +502 -0
- package/venv/lib/python3.10/site-packages/pycparser/c_lexer.py +555 -0
- package/venv/lib/python3.10/site-packages/pycparser/c_parser.py +1950 -0
- package/venv/lib/python3.10/site-packages/pycparser/lextab.py +10 -0
- package/venv/lib/python3.10/site-packages/pycparser/ply/__init__.py +5 -0
- package/venv/lib/python3.10/site-packages/pycparser/ply/cpp.py +905 -0
- package/venv/lib/python3.10/site-packages/pycparser/ply/ctokens.py +133 -0
- package/venv/lib/python3.10/site-packages/pycparser/ply/lex.py +1099 -0
- package/venv/lib/python3.10/site-packages/pycparser/ply/yacc.py +3494 -0
- package/venv/lib/python3.10/site-packages/pycparser/ply/ygen.py +74 -0
- package/venv/lib/python3.10/site-packages/pycparser/plyparser.py +133 -0
- package/venv/lib/python3.10/site-packages/pycparser/yacctab.py +369 -0
- package/venv/lib/python3.10/site-packages/pycparser-2.22.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/pycparser-2.22.dist-info/LICENSE +27 -0
- package/venv/lib/python3.10/site-packages/pycparser-2.22.dist-info/METADATA +28 -0
- package/venv/lib/python3.10/site-packages/pycparser-2.22.dist-info/RECORD +41 -0
- package/venv/lib/python3.10/site-packages/pycparser-2.22.dist-info/WHEEL +5 -0
- package/venv/lib/python3.10/site-packages/pycparser-2.22.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/pyparsing/__init__.py +326 -0
- package/venv/lib/python3.10/site-packages/pyparsing/actions.py +219 -0
- package/venv/lib/python3.10/site-packages/pyparsing/common.py +434 -0
- package/venv/lib/python3.10/site-packages/pyparsing/core.py +6226 -0
- package/venv/lib/python3.10/site-packages/pyparsing/diagram/__init__.py +744 -0
- package/venv/lib/python3.10/site-packages/pyparsing/exceptions.py +314 -0
- package/venv/lib/python3.10/site-packages/pyparsing/helpers.py +1102 -0
- package/venv/lib/python3.10/site-packages/pyparsing/py.typed +0 -0
- package/venv/lib/python3.10/site-packages/pyparsing/results.py +816 -0
- package/venv/lib/python3.10/site-packages/pyparsing/testing.py +362 -0
- package/venv/lib/python3.10/site-packages/pyparsing/unicode.py +356 -0
- package/venv/lib/python3.10/site-packages/pyparsing/util.py +398 -0
- package/venv/lib/python3.10/site-packages/pyparsing-3.2.1.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/pyparsing-3.2.1.dist-info/LICENSE +18 -0
- package/venv/lib/python3.10/site-packages/pyparsing-3.2.1.dist-info/METADATA +124 -0
- package/venv/lib/python3.10/site-packages/pyparsing-3.2.1.dist-info/RECORD +28 -0
- package/venv/lib/python3.10/site-packages/pyparsing-3.2.1.dist-info/WHEEL +4 -0
- package/venv/lib/python3.10/site-packages/requests/__init__.py +184 -0
- package/venv/lib/python3.10/site-packages/requests/__version__.py +14 -0
- package/venv/lib/python3.10/site-packages/requests/_internal_utils.py +50 -0
- package/venv/lib/python3.10/site-packages/requests/adapters.py +719 -0
- package/venv/lib/python3.10/site-packages/requests/api.py +157 -0
- package/venv/lib/python3.10/site-packages/requests/auth.py +314 -0
- package/venv/lib/python3.10/site-packages/requests/certs.py +17 -0
- package/venv/lib/python3.10/site-packages/requests/compat.py +94 -0
- package/venv/lib/python3.10/site-packages/requests/cookies.py +561 -0
- package/venv/lib/python3.10/site-packages/requests/exceptions.py +151 -0
- package/venv/lib/python3.10/site-packages/requests/help.py +134 -0
- package/venv/lib/python3.10/site-packages/requests/hooks.py +33 -0
- package/venv/lib/python3.10/site-packages/requests/models.py +1037 -0
- package/venv/lib/python3.10/site-packages/requests/packages.py +23 -0
- package/venv/lib/python3.10/site-packages/requests/sessions.py +831 -0
- package/venv/lib/python3.10/site-packages/requests/status_codes.py +128 -0
- package/venv/lib/python3.10/site-packages/requests/structures.py +99 -0
- package/venv/lib/python3.10/site-packages/requests/utils.py +1096 -0
- package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/LICENSE +175 -0
- package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/METADATA +119 -0
- package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/RECORD +43 -0
- package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/REQUESTED +0 -0
- package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/WHEEL +5 -0
- package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/__init__.py +34 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/_compat.py +302 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/__init__.py +15 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/appengine.py +206 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/fingerprint.py +48 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/host_header_ssl.py +43 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/socket_options.py +129 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/source.py +67 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/ssl.py +66 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/x509.py +196 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/auth/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/auth/_digest_auth_compat.py +29 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/auth/guess.py +146 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/auth/handler.py +142 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/auth/http_proxy_digest.py +103 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/cookies/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/cookies/forgetful.py +7 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/downloadutils/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/downloadutils/stream.py +176 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/downloadutils/tee.py +123 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/exceptions.py +25 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/multipart/__init__.py +31 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/multipart/decoder.py +156 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/multipart/encoder.py +655 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/sessions.py +89 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/streaming_iterator.py +116 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/threaded/__init__.py +97 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/threaded/pool.py +211 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/threaded/thread.py +53 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/utils/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/utils/deprecated.py +91 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/utils/dump.py +198 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/utils/formdata.py +108 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt/utils/user_agent.py +143 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/AUTHORS.rst +57 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/LICENSE +13 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/METADATA +521 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/RECORD +75 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/WHEEL +6 -0
- package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go/__init__.py +1 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go/_scrypted_arlo_go.cpython-310-x86_64-linux-gnu.h +555 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go/_scrypted_arlo_go.cpython-310-x86_64-linux-gnu.so +0 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go/build.py +344 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go/go.py +2215 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go/scrypted_arlo_go.c +6019 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go/scrypted_arlo_go.go +3612 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go/scrypted_arlo_go.py +1910 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go/scrypted_arlo_go_go.h +555 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go-0.7.6.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go-0.7.6.dist-info/METADATA +11 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go-0.7.6.dist-info/RECORD +19 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go-0.7.6.dist-info/REQUESTED +0 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go-0.7.6.dist-info/WHEEL +8 -0
- package/venv/lib/python3.10/site-packages/scrypted_arlo_go-0.7.6.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/setuptools/__init__.py +242 -0
- package/venv/lib/python3.10/site-packages/setuptools/_deprecation_warning.py +7 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/__init__.py +24 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/_msvccompiler.py +561 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/archive_util.py +256 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/bcppcompiler.py +393 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/ccompiler.py +1123 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/cmd.py +403 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/__init__.py +31 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist.py +143 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_dumb.py +123 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_msi.py +749 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_rpm.py +579 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_wininst.py +377 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build.py +157 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_clib.py +209 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py +755 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_py.py +392 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_scripts.py +152 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/check.py +148 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/clean.py +76 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/config.py +344 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install.py +721 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_data.py +79 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_egg_info.py +84 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_headers.py +47 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_lib.py +217 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_scripts.py +60 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/py37compat.py +30 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/register.py +304 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py +494 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/upload.py +214 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/config.py +130 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/core.py +249 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/cygwinccompiler.py +425 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/debug.py +5 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/dep_util.py +92 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/dir_util.py +210 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/dist.py +1257 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/errors.py +97 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/extension.py +240 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/fancy_getopt.py +457 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/file_util.py +238 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/filelist.py +355 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/log.py +77 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/msvc9compiler.py +788 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/msvccompiler.py +643 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/py35compat.py +19 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/py38compat.py +7 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/spawn.py +106 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/sysconfig.py +601 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/text_file.py +286 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/unixccompiler.py +325 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/util.py +548 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/version.py +363 -0
- package/venv/lib/python3.10/site-packages/setuptools/_distutils/versionpredicate.py +169 -0
- package/venv/lib/python3.10/site-packages/setuptools/_imp.py +82 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__init__.py +4 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/more.py +3825 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/recipes.py +620 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/ordered_set.py +488 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__about__.py +26 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__init__.py +25 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_manylinux.py +301 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_musllinux.py +136 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_structures.py +67 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/markers.py +304 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/requirements.py +146 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/specifiers.py +828 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/tags.py +484 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/utils.py +136 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/version.py +504 -0
- package/venv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing.py +5742 -0
- package/venv/lib/python3.10/site-packages/setuptools/archive_util.py +205 -0
- package/venv/lib/python3.10/site-packages/setuptools/build_meta.py +290 -0
- package/venv/lib/python3.10/site-packages/setuptools/cli-32.exe +0 -0
- package/venv/lib/python3.10/site-packages/setuptools/cli-64.exe +0 -0
- package/venv/lib/python3.10/site-packages/setuptools/cli-arm64.exe +0 -0
- package/venv/lib/python3.10/site-packages/setuptools/cli.exe +0 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/__init__.py +8 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/alias.py +78 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/bdist_egg.py +456 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/bdist_rpm.py +40 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/build_clib.py +101 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/build_ext.py +328 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/build_py.py +242 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/develop.py +193 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/dist_info.py +36 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/easy_install.py +2354 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/egg_info.py +755 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/install.py +132 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/install_egg_info.py +82 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/install_lib.py +148 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/install_scripts.py +69 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/launcher manifest.xml +15 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/py36compat.py +134 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/register.py +18 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/rotate.py +64 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/saveopts.py +22 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/sdist.py +196 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/setopt.py +149 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/test.py +252 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/upload.py +17 -0
- package/venv/lib/python3.10/site-packages/setuptools/command/upload_docs.py +202 -0
- package/venv/lib/python3.10/site-packages/setuptools/config.py +751 -0
- package/venv/lib/python3.10/site-packages/setuptools/dep_util.py +25 -0
- package/venv/lib/python3.10/site-packages/setuptools/depends.py +176 -0
- package/venv/lib/python3.10/site-packages/setuptools/dist.py +1156 -0
- package/venv/lib/python3.10/site-packages/setuptools/errors.py +40 -0
- package/venv/lib/python3.10/site-packages/setuptools/extension.py +55 -0
- package/venv/lib/python3.10/site-packages/setuptools/extern/__init__.py +73 -0
- package/venv/lib/python3.10/site-packages/setuptools/glob.py +167 -0
- package/venv/lib/python3.10/site-packages/setuptools/gui-32.exe +0 -0
- package/venv/lib/python3.10/site-packages/setuptools/gui-64.exe +0 -0
- package/venv/lib/python3.10/site-packages/setuptools/gui-arm64.exe +0 -0
- package/venv/lib/python3.10/site-packages/setuptools/gui.exe +0 -0
- package/venv/lib/python3.10/site-packages/setuptools/installer.py +104 -0
- package/venv/lib/python3.10/site-packages/setuptools/launch.py +36 -0
- package/venv/lib/python3.10/site-packages/setuptools/monkey.py +177 -0
- package/venv/lib/python3.10/site-packages/setuptools/msvc.py +1805 -0
- package/venv/lib/python3.10/site-packages/setuptools/namespaces.py +107 -0
- package/venv/lib/python3.10/site-packages/setuptools/package_index.py +1150 -0
- package/venv/lib/python3.10/site-packages/setuptools/py34compat.py +13 -0
- package/venv/lib/python3.10/site-packages/setuptools/sandbox.py +530 -0
- package/venv/lib/python3.10/site-packages/setuptools/script (dev).tmpl +6 -0
- package/venv/lib/python3.10/site-packages/setuptools/script.tmpl +3 -0
- package/venv/lib/python3.10/site-packages/setuptools/unicode_utils.py +42 -0
- package/venv/lib/python3.10/site-packages/setuptools/version.py +6 -0
- package/venv/lib/python3.10/site-packages/setuptools/wheel.py +213 -0
- package/venv/lib/python3.10/site-packages/setuptools/windows_support.py +29 -0
- package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/LICENSE +19 -0
- package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/METADATA +125 -0
- package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/RECORD +298 -0
- package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/REQUESTED +0 -0
- package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/WHEEL +5 -0
- package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/entry_points.txt +56 -0
- package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/top_level.txt +4 -0
- package/venv/lib/python3.10/site-packages/six-1.17.0.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/six-1.17.0.dist-info/LICENSE +18 -0
- package/venv/lib/python3.10/site-packages/six-1.17.0.dist-info/METADATA +43 -0
- package/venv/lib/python3.10/site-packages/six-1.17.0.dist-info/RECORD +8 -0
- package/venv/lib/python3.10/site-packages/six-1.17.0.dist-info/WHEEL +6 -0
- package/venv/lib/python3.10/site-packages/six-1.17.0.dist-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/six.py +1003 -0
- package/venv/lib/python3.10/site-packages/soupsieve/__init__.py +168 -0
- package/venv/lib/python3.10/site-packages/soupsieve/__meta__.py +197 -0
- package/venv/lib/python3.10/site-packages/soupsieve/css_match.py +1582 -0
- package/venv/lib/python3.10/site-packages/soupsieve/css_parser.py +1289 -0
- package/venv/lib/python3.10/site-packages/soupsieve/css_types.py +407 -0
- package/venv/lib/python3.10/site-packages/soupsieve/pretty.py +139 -0
- package/venv/lib/python3.10/site-packages/soupsieve/py.typed +0 -0
- package/venv/lib/python3.10/site-packages/soupsieve/util.py +117 -0
- package/venv/lib/python3.10/site-packages/soupsieve-2.6.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/soupsieve-2.6.dist-info/METADATA +114 -0
- package/venv/lib/python3.10/site-packages/soupsieve-2.6.dist-info/RECORD +20 -0
- package/venv/lib/python3.10/site-packages/soupsieve-2.6.dist-info/WHEEL +4 -0
- package/venv/lib/python3.10/site-packages/soupsieve-2.6.dist-info/licenses/LICENSE.md +21 -0
- package/venv/lib/python3.10/site-packages/sseclient-0.0.22.egg-info/PKG-INFO +98 -0
- package/venv/lib/python3.10/site-packages/sseclient-0.0.22.egg-info/SOURCES.txt +12 -0
- package/venv/lib/python3.10/site-packages/sseclient-0.0.22.egg-info/dependency_links.txt +1 -0
- package/venv/lib/python3.10/site-packages/sseclient-0.0.22.egg-info/installed-files.txt +7 -0
- package/venv/lib/python3.10/site-packages/sseclient-0.0.22.egg-info/requires.txt +2 -0
- package/venv/lib/python3.10/site-packages/sseclient-0.0.22.egg-info/top_level.txt +1 -0
- package/venv/lib/python3.10/site-packages/sseclient.py +165 -0
- package/venv/lib/python3.10/site-packages/typing_extensions-4.12.2.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/typing_extensions-4.12.2.dist-info/LICENSE +279 -0
- package/venv/lib/python3.10/site-packages/typing_extensions-4.12.2.dist-info/METADATA +67 -0
- package/venv/lib/python3.10/site-packages/typing_extensions-4.12.2.dist-info/RECORD +7 -0
- package/venv/lib/python3.10/site-packages/typing_extensions-4.12.2.dist-info/WHEEL +4 -0
- package/venv/lib/python3.10/site-packages/typing_extensions.py +3641 -0
- package/venv/lib/python3.10/site-packages/urllib3/__init__.py +211 -0
- package/venv/lib/python3.10/site-packages/urllib3/_base_connection.py +165 -0
- package/venv/lib/python3.10/site-packages/urllib3/_collections.py +479 -0
- package/venv/lib/python3.10/site-packages/urllib3/_request_methods.py +278 -0
- package/venv/lib/python3.10/site-packages/urllib3/_version.py +16 -0
- package/venv/lib/python3.10/site-packages/urllib3/connection.py +1044 -0
- package/venv/lib/python3.10/site-packages/urllib3/connectionpool.py +1178 -0
- package/venv/lib/python3.10/site-packages/urllib3/contrib/__init__.py +0 -0
- package/venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/__init__.py +16 -0
- package/venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/connection.py +255 -0
- package/venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js +110 -0
- package/venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/fetch.py +708 -0
- package/venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/request.py +22 -0
- package/venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/response.py +285 -0
- package/venv/lib/python3.10/site-packages/urllib3/contrib/pyopenssl.py +554 -0
- package/venv/lib/python3.10/site-packages/urllib3/contrib/socks.py +228 -0
- package/venv/lib/python3.10/site-packages/urllib3/exceptions.py +327 -0
- package/venv/lib/python3.10/site-packages/urllib3/fields.py +341 -0
- package/venv/lib/python3.10/site-packages/urllib3/filepost.py +89 -0
- package/venv/lib/python3.10/site-packages/urllib3/http2/__init__.py +53 -0
- package/venv/lib/python3.10/site-packages/urllib3/http2/connection.py +356 -0
- package/venv/lib/python3.10/site-packages/urllib3/http2/probe.py +87 -0
- package/venv/lib/python3.10/site-packages/urllib3/poolmanager.py +637 -0
- package/venv/lib/python3.10/site-packages/urllib3/py.typed +2 -0
- package/venv/lib/python3.10/site-packages/urllib3/response.py +1278 -0
- package/venv/lib/python3.10/site-packages/urllib3/util/__init__.py +42 -0
- package/venv/lib/python3.10/site-packages/urllib3/util/connection.py +137 -0
- package/venv/lib/python3.10/site-packages/urllib3/util/proxy.py +43 -0
- package/venv/lib/python3.10/site-packages/urllib3/util/request.py +258 -0
- package/venv/lib/python3.10/site-packages/urllib3/util/response.py +101 -0
- package/venv/lib/python3.10/site-packages/urllib3/util/retry.py +533 -0
- package/venv/lib/python3.10/site-packages/urllib3/util/ssl_.py +504 -0
- package/venv/lib/python3.10/site-packages/urllib3/util/ssl_match_hostname.py +159 -0
- package/venv/lib/python3.10/site-packages/urllib3/util/ssltransport.py +271 -0
- package/venv/lib/python3.10/site-packages/urllib3/util/timeout.py +275 -0
- package/venv/lib/python3.10/site-packages/urllib3/util/url.py +469 -0
- package/venv/lib/python3.10/site-packages/urllib3/util/util.py +42 -0
- package/venv/lib/python3.10/site-packages/urllib3/util/wait.py +124 -0
- package/venv/lib/python3.10/site-packages/urllib3-2.3.0.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/urllib3-2.3.0.dist-info/METADATA +154 -0
- package/venv/lib/python3.10/site-packages/urllib3-2.3.0.dist-info/RECORD +80 -0
- package/venv/lib/python3.10/site-packages/urllib3-2.3.0.dist-info/REQUESTED +0 -0
- package/venv/lib/python3.10/site-packages/urllib3-2.3.0.dist-info/WHEEL +4 -0
- package/venv/lib/python3.10/site-packages/urllib3-2.3.0.dist-info/licenses/LICENSE.txt +21 -0
- package/venv/lib/python3.10/site-packages/yarl/__init__.py +14 -0
- package/venv/lib/python3.10/site-packages/yarl/_parse.py +189 -0
- package/venv/lib/python3.10/site-packages/yarl/_path.py +41 -0
- package/venv/lib/python3.10/site-packages/yarl/_query.py +118 -0
- package/venv/lib/python3.10/site-packages/yarl/_quoters.py +32 -0
- package/venv/lib/python3.10/site-packages/yarl/_quoting.py +18 -0
- package/venv/lib/python3.10/site-packages/yarl/_quoting_c.cpython-310-x86_64-linux-gnu.so +0 -0
- package/venv/lib/python3.10/site-packages/yarl/_quoting_c.pyi +16 -0
- package/venv/lib/python3.10/site-packages/yarl/_quoting_c.pyx +423 -0
- package/venv/lib/python3.10/site-packages/yarl/_quoting_py.py +197 -0
- package/venv/lib/python3.10/site-packages/yarl/_url.py +1584 -0
- package/venv/lib/python3.10/site-packages/yarl/py.typed +1 -0
- package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/INSTALLER +1 -0
- package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/LICENSE +202 -0
- package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/METADATA +2279 -0
- package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/NOTICE +13 -0
- package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/RECORD +27 -0
- package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/WHEEL +6 -0
- package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/top_level.txt +1 -0
- package/venv/pyvenv.cfg +3 -0
|
@@ -0,0 +1,1408 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""Beautiful Soup bonus library: Unicode, Dammit
|
|
3
|
+
|
|
4
|
+
This library converts a bytestream to Unicode through any means
|
|
5
|
+
necessary. It is heavily based on code from Mark Pilgrim's `Universal
|
|
6
|
+
Feed Parser <https://pypi.org/project/feedparser/>`_, now maintained
|
|
7
|
+
by Kurt McKee. It does not rewrite the body of an XML or HTML document
|
|
8
|
+
to reflect a new encoding; that's the job of `TreeBuilder`.
|
|
9
|
+
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
# Use of this source code is governed by the MIT license.
|
|
13
|
+
__license__ = "MIT"
|
|
14
|
+
|
|
15
|
+
from html.entities import codepoint2name
|
|
16
|
+
from collections import defaultdict
|
|
17
|
+
import codecs
|
|
18
|
+
from html.entities import html5
|
|
19
|
+
import re
|
|
20
|
+
from logging import Logger, getLogger
|
|
21
|
+
from types import ModuleType
|
|
22
|
+
from typing import (
|
|
23
|
+
Dict,
|
|
24
|
+
Iterator,
|
|
25
|
+
List,
|
|
26
|
+
Optional,
|
|
27
|
+
Pattern,
|
|
28
|
+
Set,
|
|
29
|
+
Tuple,
|
|
30
|
+
Type,
|
|
31
|
+
Union,
|
|
32
|
+
cast,
|
|
33
|
+
)
|
|
34
|
+
from typing_extensions import Literal
|
|
35
|
+
from bs4._typing import (
|
|
36
|
+
_Encoding,
|
|
37
|
+
_Encodings,
|
|
38
|
+
)
|
|
39
|
+
import warnings
|
|
40
|
+
|
|
41
|
+
# Import a library to autodetect character encodings. We'll support
|
|
42
|
+
# any of a number of libraries that all support the same API:
|
|
43
|
+
#
|
|
44
|
+
# * cchardet
|
|
45
|
+
# * chardet
|
|
46
|
+
# * charset-normalizer
|
|
47
|
+
chardet_module: Optional[ModuleType] = None
|
|
48
|
+
try:
|
|
49
|
+
# PyPI package: cchardet
|
|
50
|
+
import cchardet
|
|
51
|
+
|
|
52
|
+
chardet_module = cchardet
|
|
53
|
+
except ImportError:
|
|
54
|
+
try:
|
|
55
|
+
# Debian package: python-chardet
|
|
56
|
+
# PyPI package: chardet
|
|
57
|
+
import chardet
|
|
58
|
+
|
|
59
|
+
chardet_module = chardet
|
|
60
|
+
except ImportError:
|
|
61
|
+
try:
|
|
62
|
+
# PyPI package: charset-normalizer
|
|
63
|
+
import charset_normalizer
|
|
64
|
+
|
|
65
|
+
chardet_module = charset_normalizer
|
|
66
|
+
except ImportError:
|
|
67
|
+
# No chardet available.
|
|
68
|
+
pass
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _chardet_dammit(s: bytes) -> Optional[str]:
|
|
72
|
+
"""Try as hard as possible to detect the encoding of a bytestring."""
|
|
73
|
+
if chardet_module is None or isinstance(s, str):
|
|
74
|
+
return None
|
|
75
|
+
module = chardet_module
|
|
76
|
+
return module.detect(s)["encoding"]
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
# Build bytestring and Unicode versions of regular expressions for finding
|
|
80
|
+
# a declared encoding inside an XML or HTML document.
|
|
81
|
+
xml_encoding: str = "^\\s*<\\?.*encoding=['\"](.*?)['\"].*\\?>" #: :meta private:
|
|
82
|
+
html_meta: str = (
|
|
83
|
+
"<\\s*meta[^>]+charset\\s*=\\s*[\"']?([^>]*?)[ /;'\">]" #: :meta private:
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
# TODO-TYPING: The Pattern type here could use more refinement, but it's tricky.
|
|
87
|
+
encoding_res: Dict[Type, Dict[str, Pattern]] = dict()
|
|
88
|
+
encoding_res[bytes] = {
|
|
89
|
+
"html": re.compile(html_meta.encode("ascii"), re.I),
|
|
90
|
+
"xml": re.compile(xml_encoding.encode("ascii"), re.I),
|
|
91
|
+
}
|
|
92
|
+
encoding_res[str] = {
|
|
93
|
+
"html": re.compile(html_meta, re.I),
|
|
94
|
+
"xml": re.compile(xml_encoding, re.I),
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
class EntitySubstitution(object):
|
|
99
|
+
"""The ability to substitute XML or HTML entities for certain characters."""
|
|
100
|
+
|
|
101
|
+
#: A map of named HTML entities to the corresponding Unicode string.
|
|
102
|
+
#:
|
|
103
|
+
#: :meta hide-value:
|
|
104
|
+
HTML_ENTITY_TO_CHARACTER: Dict[str, str]
|
|
105
|
+
|
|
106
|
+
#: A map of Unicode strings to the corresponding named HTML entities;
|
|
107
|
+
#: the inverse of HTML_ENTITY_TO_CHARACTER.
|
|
108
|
+
#:
|
|
109
|
+
#: :meta hide-value:
|
|
110
|
+
CHARACTER_TO_HTML_ENTITY: Dict[str, str]
|
|
111
|
+
|
|
112
|
+
#: A regular expression that matches any character (or, in rare
|
|
113
|
+
#: cases, pair of characters) that can be replaced with a named
|
|
114
|
+
#: HTML entity.
|
|
115
|
+
#:
|
|
116
|
+
#: :meta hide-value:
|
|
117
|
+
CHARACTER_TO_HTML_ENTITY_RE: Pattern[str]
|
|
118
|
+
|
|
119
|
+
#: A very similar regular expression to
|
|
120
|
+
#: CHARACTER_TO_HTML_ENTITY_RE, but which also matches unescaped
|
|
121
|
+
#: ampersands. This is used by the 'html' formatted to provide
|
|
122
|
+
#: backwards-compatibility, even though the HTML5 spec allows most
|
|
123
|
+
#: ampersands to go unescaped.
|
|
124
|
+
#:
|
|
125
|
+
#: :meta hide-value:
|
|
126
|
+
CHARACTER_TO_HTML_ENTITY_WITH_AMPERSAND_RE: Pattern[str]
|
|
127
|
+
|
|
128
|
+
@classmethod
|
|
129
|
+
def _populate_class_variables(cls) -> None:
|
|
130
|
+
"""Initialize variables used by this class to manage the plethora of
|
|
131
|
+
HTML5 named entities.
|
|
132
|
+
|
|
133
|
+
This function sets the following class variables:
|
|
134
|
+
|
|
135
|
+
CHARACTER_TO_HTML_ENTITY - A mapping of Unicode strings like "⦨" to
|
|
136
|
+
entity names like "angmsdaa". When a single Unicode string has
|
|
137
|
+
multiple entity names, we try to choose the most commonly-used
|
|
138
|
+
name.
|
|
139
|
+
|
|
140
|
+
HTML_ENTITY_TO_CHARACTER: A mapping of entity names like "angmsdaa" to
|
|
141
|
+
Unicode strings like "⦨".
|
|
142
|
+
|
|
143
|
+
CHARACTER_TO_HTML_ENTITY_RE: A regular expression matching (almost) any
|
|
144
|
+
Unicode string that corresponds to an HTML5 named entity.
|
|
145
|
+
|
|
146
|
+
CHARACTER_TO_HTML_ENTITY_WITH_AMPERSAND_RE: A very similar
|
|
147
|
+
regular expression to CHARACTER_TO_HTML_ENTITY_RE, but which
|
|
148
|
+
also matches unescaped ampersands. This is used by the 'html'
|
|
149
|
+
formatted to provide backwards-compatibility, even though the HTML5
|
|
150
|
+
spec allows most ampersands to go unescaped.
|
|
151
|
+
"""
|
|
152
|
+
unicode_to_name = {}
|
|
153
|
+
name_to_unicode = {}
|
|
154
|
+
|
|
155
|
+
short_entities = set()
|
|
156
|
+
long_entities_by_first_character = defaultdict(set)
|
|
157
|
+
|
|
158
|
+
for name_with_semicolon, character in sorted(html5.items()):
|
|
159
|
+
# "It is intentional, for legacy compatibility, that many
|
|
160
|
+
# code points have multiple character reference names. For
|
|
161
|
+
# example, some appear both with and without the trailing
|
|
162
|
+
# semicolon, or with different capitalizations."
|
|
163
|
+
# - https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references
|
|
164
|
+
#
|
|
165
|
+
# The parsers are in charge of handling (or not) character
|
|
166
|
+
# references with no trailing semicolon, so we remove the
|
|
167
|
+
# semicolon whenever it appears.
|
|
168
|
+
if name_with_semicolon.endswith(";"):
|
|
169
|
+
name = name_with_semicolon[:-1]
|
|
170
|
+
else:
|
|
171
|
+
name = name_with_semicolon
|
|
172
|
+
|
|
173
|
+
# When parsing HTML, we want to recognize any known named
|
|
174
|
+
# entity and convert it to a sequence of Unicode
|
|
175
|
+
# characters.
|
|
176
|
+
if name not in name_to_unicode:
|
|
177
|
+
name_to_unicode[name] = character
|
|
178
|
+
|
|
179
|
+
# When _generating_ HTML, we want to recognize special
|
|
180
|
+
# character sequences that _could_ be converted to named
|
|
181
|
+
# entities.
|
|
182
|
+
unicode_to_name[character] = name
|
|
183
|
+
|
|
184
|
+
# We also need to build a regular expression that lets us
|
|
185
|
+
# _find_ those characters in output strings so we can
|
|
186
|
+
# replace them.
|
|
187
|
+
#
|
|
188
|
+
# This is tricky, for two reasons.
|
|
189
|
+
|
|
190
|
+
if len(character) == 1 and ord(character) < 128 and character not in "<>":
|
|
191
|
+
# First, it would be annoying to turn single ASCII
|
|
192
|
+
# characters like | into named entities like
|
|
193
|
+
# |. The exceptions are <>, which we _must_
|
|
194
|
+
# turn into named entities to produce valid HTML.
|
|
195
|
+
continue
|
|
196
|
+
|
|
197
|
+
if len(character) > 1 and all(ord(x) < 128 for x in character):
|
|
198
|
+
# We also do not want to turn _combinations_ of ASCII
|
|
199
|
+
# characters like 'fj' into named entities like 'fj',
|
|
200
|
+
# though that's more debateable.
|
|
201
|
+
continue
|
|
202
|
+
|
|
203
|
+
# Second, some named entities have a Unicode value that's
|
|
204
|
+
# a subset of the Unicode value for some _other_ named
|
|
205
|
+
# entity. As an example, \u2267' is ≧,
|
|
206
|
+
# but '\u2267\u0338' is ≧̸. Our regular
|
|
207
|
+
# expression needs to match the first two characters of
|
|
208
|
+
# "\u2267\u0338foo", but only the first character of
|
|
209
|
+
# "\u2267foo".
|
|
210
|
+
#
|
|
211
|
+
# In this step, we build two sets of characters that
|
|
212
|
+
# _eventually_ need to go into the regular expression. But
|
|
213
|
+
# we won't know exactly what the regular expression needs
|
|
214
|
+
# to look like until we've gone through the entire list of
|
|
215
|
+
# named entities.
|
|
216
|
+
if len(character) == 1 and character != "&":
|
|
217
|
+
short_entities.add(character)
|
|
218
|
+
else:
|
|
219
|
+
long_entities_by_first_character[character[0]].add(character)
|
|
220
|
+
|
|
221
|
+
# Now that we've been through the entire list of entities, we
|
|
222
|
+
# can create a regular expression that matches any of them.
|
|
223
|
+
particles = set()
|
|
224
|
+
for short in short_entities:
|
|
225
|
+
long_versions = long_entities_by_first_character[short]
|
|
226
|
+
if not long_versions:
|
|
227
|
+
particles.add(short)
|
|
228
|
+
else:
|
|
229
|
+
ignore = "".join([x[1] for x in long_versions])
|
|
230
|
+
# This finds, e.g. \u2267 but only if it is _not_
|
|
231
|
+
# followed by \u0338.
|
|
232
|
+
particles.add("%s(?![%s])" % (short, ignore))
|
|
233
|
+
|
|
234
|
+
for long_entities in list(long_entities_by_first_character.values()):
|
|
235
|
+
for long_entity in long_entities:
|
|
236
|
+
particles.add(long_entity)
|
|
237
|
+
|
|
238
|
+
re_definition = "(%s)" % "|".join(particles)
|
|
239
|
+
|
|
240
|
+
particles.add("&")
|
|
241
|
+
re_definition_with_ampersand = "(%s)" % "|".join(particles)
|
|
242
|
+
|
|
243
|
+
# If an entity shows up in both html5 and codepoint2name, it's
|
|
244
|
+
# likely that HTML5 gives it several different names, such as
|
|
245
|
+
# 'rsquo' and 'rsquor'. When converting Unicode characters to
|
|
246
|
+
# named entities, the codepoint2name name should take
|
|
247
|
+
# precedence where possible, since that's the more easily
|
|
248
|
+
# recognizable one.
|
|
249
|
+
for codepoint, name in list(codepoint2name.items()):
|
|
250
|
+
character = chr(codepoint)
|
|
251
|
+
unicode_to_name[character] = name
|
|
252
|
+
|
|
253
|
+
cls.CHARACTER_TO_HTML_ENTITY = unicode_to_name
|
|
254
|
+
cls.HTML_ENTITY_TO_CHARACTER = name_to_unicode
|
|
255
|
+
cls.CHARACTER_TO_HTML_ENTITY_RE = re.compile(re_definition)
|
|
256
|
+
cls.CHARACTER_TO_HTML_ENTITY_WITH_AMPERSAND_RE = re.compile(
|
|
257
|
+
re_definition_with_ampersand
|
|
258
|
+
)
|
|
259
|
+
|
|
260
|
+
#: A map of Unicode strings to the corresponding named XML entities.
|
|
261
|
+
#:
|
|
262
|
+
#: :meta hide-value:
|
|
263
|
+
CHARACTER_TO_XML_ENTITY: Dict[str, str] = {
|
|
264
|
+
"'": "apos",
|
|
265
|
+
'"': "quot",
|
|
266
|
+
"&": "amp",
|
|
267
|
+
"<": "lt",
|
|
268
|
+
">": "gt",
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
# Matches any named or numeric HTML entity.
|
|
272
|
+
ANY_ENTITY_RE = re.compile("&(#\\d+|#x[0-9a-fA-F]+|\\w+);", re.I)
|
|
273
|
+
|
|
274
|
+
#: A regular expression matching an angle bracket or an ampersand that
|
|
275
|
+
#: is not part of an XML or HTML entity.
|
|
276
|
+
#:
|
|
277
|
+
#: :meta hide-value:
|
|
278
|
+
BARE_AMPERSAND_OR_BRACKET: Pattern[str] = re.compile(
|
|
279
|
+
"([<>]|" "&(?!#\\d+;|#x[0-9a-fA-F]+;|\\w+;)" ")"
|
|
280
|
+
)
|
|
281
|
+
|
|
282
|
+
#: A regular expression matching an angle bracket or an ampersand.
|
|
283
|
+
#:
|
|
284
|
+
#: :meta hide-value:
|
|
285
|
+
AMPERSAND_OR_BRACKET: Pattern[str] = re.compile("([<>&])")
|
|
286
|
+
|
|
287
|
+
@classmethod
|
|
288
|
+
def _substitute_html_entity(cls, matchobj: re.Match) -> str:
|
|
289
|
+
"""Used with a regular expression to substitute the
|
|
290
|
+
appropriate HTML entity for a special character string."""
|
|
291
|
+
original_entity = matchobj.group(0)
|
|
292
|
+
entity = cls.CHARACTER_TO_HTML_ENTITY.get(original_entity)
|
|
293
|
+
if entity is None:
|
|
294
|
+
return "&%s;" % original_entity
|
|
295
|
+
return "&%s;" % entity
|
|
296
|
+
|
|
297
|
+
@classmethod
|
|
298
|
+
def _substitute_xml_entity(cls, matchobj: re.Match) -> str:
|
|
299
|
+
"""Used with a regular expression to substitute the
|
|
300
|
+
appropriate XML entity for a special character string."""
|
|
301
|
+
entity = cls.CHARACTER_TO_XML_ENTITY[matchobj.group(0)]
|
|
302
|
+
return "&%s;" % entity
|
|
303
|
+
|
|
304
|
+
@classmethod
|
|
305
|
+
def _escape_entity_name(cls, matchobj: re.Match) -> str:
|
|
306
|
+
return "&%s;" % matchobj.group(1)
|
|
307
|
+
|
|
308
|
+
@classmethod
|
|
309
|
+
def _escape_unrecognized_entity_name(cls, matchobj: re.Match) -> str:
|
|
310
|
+
possible_entity = matchobj.group(1)
|
|
311
|
+
if possible_entity in cls.HTML_ENTITY_TO_CHARACTER:
|
|
312
|
+
return "&%s;" % possible_entity
|
|
313
|
+
return "&%s;" % possible_entity
|
|
314
|
+
|
|
315
|
+
@classmethod
|
|
316
|
+
def quoted_attribute_value(cls, value: str) -> str:
|
|
317
|
+
"""Make a value into a quoted XML attribute, possibly escaping it.
|
|
318
|
+
|
|
319
|
+
Most strings will be quoted using double quotes.
|
|
320
|
+
|
|
321
|
+
Bob's Bar -> "Bob's Bar"
|
|
322
|
+
|
|
323
|
+
If a string contains double quotes, it will be quoted using
|
|
324
|
+
single quotes.
|
|
325
|
+
|
|
326
|
+
Welcome to "my bar" -> 'Welcome to "my bar"'
|
|
327
|
+
|
|
328
|
+
If a string contains both single and double quotes, the
|
|
329
|
+
double quotes will be escaped, and the string will be quoted
|
|
330
|
+
using double quotes.
|
|
331
|
+
|
|
332
|
+
Welcome to "Bob's Bar" -> Welcome to "Bob's bar"
|
|
333
|
+
|
|
334
|
+
:param value: The XML attribute value to quote
|
|
335
|
+
:return: The quoted value
|
|
336
|
+
"""
|
|
337
|
+
quote_with = '"'
|
|
338
|
+
if '"' in value:
|
|
339
|
+
if "'" in value:
|
|
340
|
+
# The string contains both single and double
|
|
341
|
+
# quotes. Turn the double quotes into
|
|
342
|
+
# entities. We quote the double quotes rather than
|
|
343
|
+
# the single quotes because the entity name is
|
|
344
|
+
# """ whether this is HTML or XML. If we
|
|
345
|
+
# quoted the single quotes, we'd have to decide
|
|
346
|
+
# between ' and &squot;.
|
|
347
|
+
replace_with = """
|
|
348
|
+
value = value.replace('"', replace_with)
|
|
349
|
+
else:
|
|
350
|
+
# There are double quotes but no single quotes.
|
|
351
|
+
# We can use single quotes to quote the attribute.
|
|
352
|
+
quote_with = "'"
|
|
353
|
+
return quote_with + value + quote_with
|
|
354
|
+
|
|
355
|
+
@classmethod
|
|
356
|
+
def substitute_xml(cls, value: str, make_quoted_attribute: bool = False) -> str:
|
|
357
|
+
"""Replace special XML characters with named XML entities.
|
|
358
|
+
|
|
359
|
+
The less-than sign will become <, the greater-than sign
|
|
360
|
+
will become >, and any ampersands will become &. If you
|
|
361
|
+
want ampersands that seem to be part of an entity definition
|
|
362
|
+
to be left alone, use `substitute_xml_containing_entities`
|
|
363
|
+
instead.
|
|
364
|
+
|
|
365
|
+
:param value: A string to be substituted.
|
|
366
|
+
|
|
367
|
+
:param make_quoted_attribute: If True, then the string will be
|
|
368
|
+
quoted, as befits an attribute value.
|
|
369
|
+
|
|
370
|
+
:return: A version of ``value`` with special characters replaced
|
|
371
|
+
with named entities.
|
|
372
|
+
"""
|
|
373
|
+
# Escape angle brackets and ampersands.
|
|
374
|
+
value = cls.AMPERSAND_OR_BRACKET.sub(cls._substitute_xml_entity, value)
|
|
375
|
+
|
|
376
|
+
if make_quoted_attribute:
|
|
377
|
+
value = cls.quoted_attribute_value(value)
|
|
378
|
+
return value
|
|
379
|
+
|
|
380
|
+
@classmethod
|
|
381
|
+
def substitute_xml_containing_entities(
|
|
382
|
+
cls, value: str, make_quoted_attribute: bool = False
|
|
383
|
+
) -> str:
|
|
384
|
+
"""Substitute XML entities for special XML characters.
|
|
385
|
+
|
|
386
|
+
:param value: A string to be substituted. The less-than sign will
|
|
387
|
+
become <, the greater-than sign will become >, and any
|
|
388
|
+
ampersands that are not part of an entity defition will
|
|
389
|
+
become &.
|
|
390
|
+
|
|
391
|
+
:param make_quoted_attribute: If True, then the string will be
|
|
392
|
+
quoted, as befits an attribute value.
|
|
393
|
+
"""
|
|
394
|
+
# Escape angle brackets, and ampersands that aren't part of
|
|
395
|
+
# entities.
|
|
396
|
+
value = cls.BARE_AMPERSAND_OR_BRACKET.sub(cls._substitute_xml_entity, value)
|
|
397
|
+
|
|
398
|
+
if make_quoted_attribute:
|
|
399
|
+
value = cls.quoted_attribute_value(value)
|
|
400
|
+
return value
|
|
401
|
+
|
|
402
|
+
@classmethod
|
|
403
|
+
def substitute_html(cls, s: str) -> str:
|
|
404
|
+
"""Replace certain Unicode characters with named HTML entities.
|
|
405
|
+
|
|
406
|
+
This differs from ``data.encode(encoding, 'xmlcharrefreplace')``
|
|
407
|
+
in that the goal is to make the result more readable (to those
|
|
408
|
+
with ASCII displays) rather than to recover from
|
|
409
|
+
errors. There's absolutely nothing wrong with a UTF-8 string
|
|
410
|
+
containg a LATIN SMALL LETTER E WITH ACUTE, but replacing that
|
|
411
|
+
character with "é" will make it more readable to some
|
|
412
|
+
people.
|
|
413
|
+
|
|
414
|
+
:param s: The string to be modified.
|
|
415
|
+
:return: The string with some Unicode characters replaced with
|
|
416
|
+
HTML entities.
|
|
417
|
+
"""
|
|
418
|
+
# Convert any appropriate characters to HTML entities.
|
|
419
|
+
return cls.CHARACTER_TO_HTML_ENTITY_WITH_AMPERSAND_RE.sub(
|
|
420
|
+
cls._substitute_html_entity, s
|
|
421
|
+
)
|
|
422
|
+
|
|
423
|
+
@classmethod
|
|
424
|
+
def substitute_html5(cls, s: str) -> str:
|
|
425
|
+
"""Replace certain Unicode characters with named HTML entities
|
|
426
|
+
using HTML5 rules.
|
|
427
|
+
|
|
428
|
+
Specifically, this method is much less aggressive about
|
|
429
|
+
escaping ampersands than substitute_html. Only ambiguous
|
|
430
|
+
ampersands are escaped, per the HTML5 standard:
|
|
431
|
+
|
|
432
|
+
"An ambiguous ampersand is a U+0026 AMPERSAND character (&)
|
|
433
|
+
that is followed by one or more ASCII alphanumerics, followed
|
|
434
|
+
by a U+003B SEMICOLON character (;), where these characters do
|
|
435
|
+
not match any of the names given in the named character
|
|
436
|
+
references section."
|
|
437
|
+
|
|
438
|
+
Unlike substitute_html5_raw, this method assumes HTML entities
|
|
439
|
+
were converted to Unicode characters on the way in, as
|
|
440
|
+
Beautiful Soup does. By the time Beautiful Soup does its work,
|
|
441
|
+
the only ambiguous ampersands that need to be escaped are the
|
|
442
|
+
ones that were escaped in the original markup when mentioning
|
|
443
|
+
HTML entities.
|
|
444
|
+
|
|
445
|
+
:param s: The string to be modified.
|
|
446
|
+
:return: The string with some Unicode characters replaced with
|
|
447
|
+
HTML entities.
|
|
448
|
+
"""
|
|
449
|
+
# First, escape any HTML entities found in the markup.
|
|
450
|
+
s = cls.ANY_ENTITY_RE.sub(cls._escape_entity_name, s)
|
|
451
|
+
|
|
452
|
+
# Next, convert any appropriate characters to unescaped HTML entities.
|
|
453
|
+
s = cls.CHARACTER_TO_HTML_ENTITY_RE.sub(cls._substitute_html_entity, s)
|
|
454
|
+
|
|
455
|
+
return s
|
|
456
|
+
|
|
457
|
+
@classmethod
|
|
458
|
+
def substitute_html5_raw(cls, s: str) -> str:
|
|
459
|
+
"""Replace certain Unicode characters with named HTML entities
|
|
460
|
+
using HTML5 rules.
|
|
461
|
+
|
|
462
|
+
substitute_html5_raw is similar to substitute_html5 but it is
|
|
463
|
+
designed for standalone use (whereas substitute_html5 is
|
|
464
|
+
designed for use with Beautiful Soup).
|
|
465
|
+
|
|
466
|
+
:param s: The string to be modified.
|
|
467
|
+
:return: The string with some Unicode characters replaced with
|
|
468
|
+
HTML entities.
|
|
469
|
+
"""
|
|
470
|
+
# First, escape the ampersand for anything that looks like an
|
|
471
|
+
# entity but isn't in the list of recognized entities. All other
|
|
472
|
+
# ampersands can be left alone.
|
|
473
|
+
s = cls.ANY_ENTITY_RE.sub(cls._escape_unrecognized_entity_name, s)
|
|
474
|
+
|
|
475
|
+
# Then, convert a range of Unicode characters to unescaped
|
|
476
|
+
# HTML entities.
|
|
477
|
+
s = cls.CHARACTER_TO_HTML_ENTITY_RE.sub(cls._substitute_html_entity, s)
|
|
478
|
+
|
|
479
|
+
return s
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
EntitySubstitution._populate_class_variables()
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
class EncodingDetector:
|
|
486
|
+
"""This class is capable of guessing a number of possible encodings
|
|
487
|
+
for a bytestring.
|
|
488
|
+
|
|
489
|
+
Order of precedence:
|
|
490
|
+
|
|
491
|
+
1. Encodings you specifically tell EncodingDetector to try first
|
|
492
|
+
(the ``known_definite_encodings`` argument to the constructor).
|
|
493
|
+
|
|
494
|
+
2. An encoding determined by sniffing the document's byte-order mark.
|
|
495
|
+
|
|
496
|
+
3. Encodings you specifically tell EncodingDetector to try if
|
|
497
|
+
byte-order mark sniffing fails (the ``user_encodings`` argument to the
|
|
498
|
+
constructor).
|
|
499
|
+
|
|
500
|
+
4. An encoding declared within the bytestring itself, either in an
|
|
501
|
+
XML declaration (if the bytestring is to be interpreted as an XML
|
|
502
|
+
document), or in a <meta> tag (if the bytestring is to be
|
|
503
|
+
interpreted as an HTML document.)
|
|
504
|
+
|
|
505
|
+
5. An encoding detected through textual analysis by chardet,
|
|
506
|
+
cchardet, or a similar external library.
|
|
507
|
+
|
|
508
|
+
6. UTF-8.
|
|
509
|
+
|
|
510
|
+
7. Windows-1252.
|
|
511
|
+
|
|
512
|
+
:param markup: Some markup in an unknown encoding.
|
|
513
|
+
|
|
514
|
+
:param known_definite_encodings: When determining the encoding
|
|
515
|
+
of ``markup``, these encodings will be tried first, in
|
|
516
|
+
order. In HTML terms, this corresponds to the "known
|
|
517
|
+
definite encoding" step defined in `section 13.2.3.1 of the HTML standard <https://html.spec.whatwg.org/multipage/parsing.html#parsing-with-a-known-character-encoding>`_.
|
|
518
|
+
|
|
519
|
+
:param user_encodings: These encodings will be tried after the
|
|
520
|
+
``known_definite_encodings`` have been tried and failed, and
|
|
521
|
+
after an attempt to sniff the encoding by looking at a
|
|
522
|
+
byte order mark has failed. In HTML terms, this
|
|
523
|
+
corresponds to the step "user has explicitly instructed
|
|
524
|
+
the user agent to override the document's character
|
|
525
|
+
encoding", defined in `section 13.2.3.2 of the HTML standard <https://html.spec.whatwg.org/multipage/parsing.html#determining-the-character-encoding>`_.
|
|
526
|
+
|
|
527
|
+
:param override_encodings: A **deprecated** alias for
|
|
528
|
+
``known_definite_encodings``. Any encodings here will be tried
|
|
529
|
+
immediately after the encodings in
|
|
530
|
+
``known_definite_encodings``.
|
|
531
|
+
|
|
532
|
+
:param is_html: If True, this markup is considered to be
|
|
533
|
+
HTML. Otherwise it's assumed to be XML.
|
|
534
|
+
|
|
535
|
+
:param exclude_encodings: These encodings will not be tried,
|
|
536
|
+
even if they otherwise would be.
|
|
537
|
+
|
|
538
|
+
"""
|
|
539
|
+
|
|
540
|
+
def __init__(
|
|
541
|
+
self,
|
|
542
|
+
markup: bytes,
|
|
543
|
+
known_definite_encodings: Optional[_Encodings] = None,
|
|
544
|
+
is_html: Optional[bool] = False,
|
|
545
|
+
exclude_encodings: Optional[_Encodings] = None,
|
|
546
|
+
user_encodings: Optional[_Encodings] = None,
|
|
547
|
+
override_encodings: Optional[_Encodings] = None,
|
|
548
|
+
):
|
|
549
|
+
self.known_definite_encodings = list(known_definite_encodings or [])
|
|
550
|
+
if override_encodings:
|
|
551
|
+
warnings.warn(
|
|
552
|
+
"The 'override_encodings' argument was deprecated in 4.10.0. Use 'known_definite_encodings' instead.",
|
|
553
|
+
DeprecationWarning,
|
|
554
|
+
stacklevel=3,
|
|
555
|
+
)
|
|
556
|
+
self.known_definite_encodings += override_encodings
|
|
557
|
+
self.user_encodings = user_encodings or []
|
|
558
|
+
exclude_encodings = exclude_encodings or []
|
|
559
|
+
self.exclude_encodings = set([x.lower() for x in exclude_encodings])
|
|
560
|
+
self.chardet_encoding = None
|
|
561
|
+
self.is_html = False if is_html is None else is_html
|
|
562
|
+
self.declared_encoding: Optional[str] = None
|
|
563
|
+
|
|
564
|
+
# First order of business: strip a byte-order mark.
|
|
565
|
+
self.markup, self.sniffed_encoding = self.strip_byte_order_mark(markup)
|
|
566
|
+
|
|
567
|
+
known_definite_encodings: _Encodings
|
|
568
|
+
user_encodings: _Encodings
|
|
569
|
+
exclude_encodings: _Encodings
|
|
570
|
+
chardet_encoding: Optional[_Encoding]
|
|
571
|
+
is_html: bool
|
|
572
|
+
declared_encoding: Optional[_Encoding]
|
|
573
|
+
markup: bytes
|
|
574
|
+
sniffed_encoding: Optional[_Encoding]
|
|
575
|
+
|
|
576
|
+
def _usable(self, encoding: Optional[_Encoding], tried: Set[_Encoding]) -> bool:
|
|
577
|
+
"""Should we even bother to try this encoding?
|
|
578
|
+
|
|
579
|
+
:param encoding: Name of an encoding.
|
|
580
|
+
:param tried: Encodings that have already been tried. This
|
|
581
|
+
will be modified as a side effect.
|
|
582
|
+
"""
|
|
583
|
+
if encoding is None:
|
|
584
|
+
return False
|
|
585
|
+
encoding = encoding.lower()
|
|
586
|
+
if encoding in self.exclude_encodings:
|
|
587
|
+
return False
|
|
588
|
+
if encoding not in tried:
|
|
589
|
+
tried.add(encoding)
|
|
590
|
+
return True
|
|
591
|
+
return False
|
|
592
|
+
|
|
593
|
+
@property
|
|
594
|
+
def encodings(self) -> Iterator[_Encoding]:
|
|
595
|
+
"""Yield a number of encodings that might work for this markup.
|
|
596
|
+
|
|
597
|
+
:yield: A sequence of strings. Each is the name of an encoding
|
|
598
|
+
that *might* work to convert a bytestring into Unicode.
|
|
599
|
+
"""
|
|
600
|
+
tried: Set[_Encoding] = set()
|
|
601
|
+
|
|
602
|
+
# First, try the known definite encodings
|
|
603
|
+
for e in self.known_definite_encodings:
|
|
604
|
+
if self._usable(e, tried):
|
|
605
|
+
yield e
|
|
606
|
+
|
|
607
|
+
# Did the document originally start with a byte-order mark
|
|
608
|
+
# that indicated its encoding?
|
|
609
|
+
if self.sniffed_encoding is not None and self._usable(
|
|
610
|
+
self.sniffed_encoding, tried
|
|
611
|
+
):
|
|
612
|
+
yield self.sniffed_encoding
|
|
613
|
+
|
|
614
|
+
# Sniffing the byte-order mark did nothing; try the user
|
|
615
|
+
# encodings.
|
|
616
|
+
for e in self.user_encodings:
|
|
617
|
+
if self._usable(e, tried):
|
|
618
|
+
yield e
|
|
619
|
+
|
|
620
|
+
# Look within the document for an XML or HTML encoding
|
|
621
|
+
# declaration.
|
|
622
|
+
if self.declared_encoding is None:
|
|
623
|
+
self.declared_encoding = self.find_declared_encoding(
|
|
624
|
+
self.markup, self.is_html
|
|
625
|
+
)
|
|
626
|
+
if self.declared_encoding is not None and self._usable(
|
|
627
|
+
self.declared_encoding, tried
|
|
628
|
+
):
|
|
629
|
+
yield self.declared_encoding
|
|
630
|
+
|
|
631
|
+
# Use third-party character set detection to guess at the
|
|
632
|
+
# encoding.
|
|
633
|
+
if self.chardet_encoding is None:
|
|
634
|
+
self.chardet_encoding = _chardet_dammit(self.markup)
|
|
635
|
+
if self.chardet_encoding is not None and self._usable(
|
|
636
|
+
self.chardet_encoding, tried
|
|
637
|
+
):
|
|
638
|
+
yield self.chardet_encoding
|
|
639
|
+
|
|
640
|
+
# As a last-ditch effort, try utf-8 and windows-1252.
|
|
641
|
+
for e in ("utf-8", "windows-1252"):
|
|
642
|
+
if self._usable(e, tried):
|
|
643
|
+
yield e
|
|
644
|
+
|
|
645
|
+
@classmethod
|
|
646
|
+
def strip_byte_order_mark(cls, data: bytes) -> Tuple[bytes, Optional[_Encoding]]:
|
|
647
|
+
"""If a byte-order mark is present, strip it and return the encoding it implies.
|
|
648
|
+
|
|
649
|
+
:param data: A bytestring that may or may not begin with a
|
|
650
|
+
byte-order mark.
|
|
651
|
+
|
|
652
|
+
:return: A 2-tuple (data stripped of byte-order mark, encoding implied by byte-order mark)
|
|
653
|
+
"""
|
|
654
|
+
encoding = None
|
|
655
|
+
if isinstance(data, str):
|
|
656
|
+
# Unicode data cannot have a byte-order mark.
|
|
657
|
+
return data, encoding
|
|
658
|
+
if (
|
|
659
|
+
(len(data) >= 4)
|
|
660
|
+
and (data[:2] == b"\xfe\xff")
|
|
661
|
+
and (data[2:4] != b"\x00\x00")
|
|
662
|
+
):
|
|
663
|
+
encoding = "utf-16be"
|
|
664
|
+
data = data[2:]
|
|
665
|
+
elif (
|
|
666
|
+
(len(data) >= 4)
|
|
667
|
+
and (data[:2] == b"\xff\xfe")
|
|
668
|
+
and (data[2:4] != b"\x00\x00")
|
|
669
|
+
):
|
|
670
|
+
encoding = "utf-16le"
|
|
671
|
+
data = data[2:]
|
|
672
|
+
elif data[:3] == b"\xef\xbb\xbf":
|
|
673
|
+
encoding = "utf-8"
|
|
674
|
+
data = data[3:]
|
|
675
|
+
elif data[:4] == b"\x00\x00\xfe\xff":
|
|
676
|
+
encoding = "utf-32be"
|
|
677
|
+
data = data[4:]
|
|
678
|
+
elif data[:4] == b"\xff\xfe\x00\x00":
|
|
679
|
+
encoding = "utf-32le"
|
|
680
|
+
data = data[4:]
|
|
681
|
+
return data, encoding
|
|
682
|
+
|
|
683
|
+
@classmethod
|
|
684
|
+
def find_declared_encoding(
|
|
685
|
+
cls,
|
|
686
|
+
markup: Union[bytes, str],
|
|
687
|
+
is_html: bool = False,
|
|
688
|
+
search_entire_document: bool = False,
|
|
689
|
+
) -> Optional[_Encoding]:
|
|
690
|
+
"""Given a document, tries to find an encoding declared within the
|
|
691
|
+
text of the document itself.
|
|
692
|
+
|
|
693
|
+
An XML encoding is declared at the beginning of the document.
|
|
694
|
+
|
|
695
|
+
An HTML encoding is declared in a <meta> tag, hopefully near the
|
|
696
|
+
beginning of the document.
|
|
697
|
+
|
|
698
|
+
:param markup: Some markup.
|
|
699
|
+
:param is_html: If True, this markup is considered to be HTML. Otherwise
|
|
700
|
+
it's assumed to be XML.
|
|
701
|
+
:param search_entire_document: Since an encoding is supposed
|
|
702
|
+
to declared near the beginning of the document, most of
|
|
703
|
+
the time it's only necessary to search a few kilobytes of
|
|
704
|
+
data. Set this to True to force this method to search the
|
|
705
|
+
entire document.
|
|
706
|
+
:return: The declared encoding, if one is found.
|
|
707
|
+
"""
|
|
708
|
+
if search_entire_document:
|
|
709
|
+
xml_endpos = html_endpos = len(markup)
|
|
710
|
+
else:
|
|
711
|
+
xml_endpos = 1024
|
|
712
|
+
html_endpos = max(2048, int(len(markup) * 0.05))
|
|
713
|
+
|
|
714
|
+
if isinstance(markup, bytes):
|
|
715
|
+
res = encoding_res[bytes]
|
|
716
|
+
else:
|
|
717
|
+
res = encoding_res[str]
|
|
718
|
+
|
|
719
|
+
xml_re = res["xml"]
|
|
720
|
+
html_re = res["html"]
|
|
721
|
+
declared_encoding: Optional[_Encoding] = None
|
|
722
|
+
declared_encoding_match = xml_re.search(markup, endpos=xml_endpos)
|
|
723
|
+
if not declared_encoding_match and is_html:
|
|
724
|
+
declared_encoding_match = html_re.search(markup, endpos=html_endpos)
|
|
725
|
+
if declared_encoding_match is not None:
|
|
726
|
+
declared_encoding = declared_encoding_match.groups()[0]
|
|
727
|
+
if declared_encoding:
|
|
728
|
+
if isinstance(declared_encoding, bytes):
|
|
729
|
+
declared_encoding = declared_encoding.decode("ascii", "replace")
|
|
730
|
+
return declared_encoding.lower()
|
|
731
|
+
return None
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
class UnicodeDammit:
|
|
735
|
+
"""A class for detecting the encoding of a bytestring containing an
|
|
736
|
+
HTML or XML document, and decoding it to Unicode. If the source
|
|
737
|
+
encoding is windows-1252, `UnicodeDammit` can also replace
|
|
738
|
+
Microsoft smart quotes with their HTML or XML equivalents.
|
|
739
|
+
|
|
740
|
+
:param markup: HTML or XML markup in an unknown encoding.
|
|
741
|
+
|
|
742
|
+
:param known_definite_encodings: When determining the encoding
|
|
743
|
+
of ``markup``, these encodings will be tried first, in
|
|
744
|
+
order. In HTML terms, this corresponds to the "known
|
|
745
|
+
definite encoding" step defined in `section 13.2.3.1 of the HTML standard <https://html.spec.whatwg.org/multipage/parsing.html#parsing-with-a-known-character-encoding>`_.
|
|
746
|
+
|
|
747
|
+
:param user_encodings: These encodings will be tried after the
|
|
748
|
+
``known_definite_encodings`` have been tried and failed, and
|
|
749
|
+
after an attempt to sniff the encoding by looking at a
|
|
750
|
+
byte order mark has failed. In HTML terms, this
|
|
751
|
+
corresponds to the step "user has explicitly instructed
|
|
752
|
+
the user agent to override the document's character
|
|
753
|
+
encoding", defined in `section 13.2.3.2 of the HTML standard <https://html.spec.whatwg.org/multipage/parsing.html#determining-the-character-encoding>`_.
|
|
754
|
+
|
|
755
|
+
:param override_encodings: A **deprecated** alias for
|
|
756
|
+
``known_definite_encodings``. Any encodings here will be tried
|
|
757
|
+
immediately after the encodings in
|
|
758
|
+
``known_definite_encodings``.
|
|
759
|
+
|
|
760
|
+
:param smart_quotes_to: By default, Microsoft smart quotes will,
|
|
761
|
+
like all other characters, be converted to Unicode
|
|
762
|
+
characters. Setting this to ``ascii`` will convert them to ASCII
|
|
763
|
+
quotes instead. Setting it to ``xml`` will convert them to XML
|
|
764
|
+
entity references, and setting it to ``html`` will convert them
|
|
765
|
+
to HTML entity references.
|
|
766
|
+
|
|
767
|
+
:param is_html: If True, ``markup`` is treated as an HTML
|
|
768
|
+
document. Otherwise it's treated as an XML document.
|
|
769
|
+
|
|
770
|
+
:param exclude_encodings: These encodings will not be considered,
|
|
771
|
+
even if the sniffing code thinks they might make sense.
|
|
772
|
+
|
|
773
|
+
"""
|
|
774
|
+
|
|
775
|
+
def __init__(
|
|
776
|
+
self,
|
|
777
|
+
markup: bytes,
|
|
778
|
+
known_definite_encodings: Optional[_Encodings] = [],
|
|
779
|
+
smart_quotes_to: Optional[Literal["ascii", "xml", "html"]] = None,
|
|
780
|
+
is_html: bool = False,
|
|
781
|
+
exclude_encodings: Optional[_Encodings] = [],
|
|
782
|
+
user_encodings: Optional[_Encodings] = None,
|
|
783
|
+
override_encodings: Optional[_Encodings] = None,
|
|
784
|
+
):
|
|
785
|
+
self.smart_quotes_to = smart_quotes_to
|
|
786
|
+
self.tried_encodings = []
|
|
787
|
+
self.contains_replacement_characters = False
|
|
788
|
+
self.is_html = is_html
|
|
789
|
+
self.log = getLogger(__name__)
|
|
790
|
+
self.detector = EncodingDetector(
|
|
791
|
+
markup,
|
|
792
|
+
known_definite_encodings,
|
|
793
|
+
is_html,
|
|
794
|
+
exclude_encodings,
|
|
795
|
+
user_encodings,
|
|
796
|
+
override_encodings,
|
|
797
|
+
)
|
|
798
|
+
|
|
799
|
+
# Short-circuit if the data is in Unicode to begin with.
|
|
800
|
+
if isinstance(markup, str) or markup == b"":
|
|
801
|
+
self.markup = markup
|
|
802
|
+
self.unicode_markup = str(markup)
|
|
803
|
+
self.original_encoding = None
|
|
804
|
+
return
|
|
805
|
+
|
|
806
|
+
# The encoding detector may have stripped a byte-order mark.
|
|
807
|
+
# Use the stripped markup from this point on.
|
|
808
|
+
self.markup = self.detector.markup
|
|
809
|
+
|
|
810
|
+
u = None
|
|
811
|
+
for encoding in self.detector.encodings:
|
|
812
|
+
markup = self.detector.markup
|
|
813
|
+
u = self._convert_from(encoding)
|
|
814
|
+
if u is not None:
|
|
815
|
+
break
|
|
816
|
+
|
|
817
|
+
if not u:
|
|
818
|
+
# None of the encodings worked. As an absolute last resort,
|
|
819
|
+
# try them again with character replacement.
|
|
820
|
+
|
|
821
|
+
for encoding in self.detector.encodings:
|
|
822
|
+
if encoding != "ascii":
|
|
823
|
+
u = self._convert_from(encoding, "replace")
|
|
824
|
+
if u is not None:
|
|
825
|
+
self.log.warning(
|
|
826
|
+
"Some characters could not be decoded, and were "
|
|
827
|
+
"replaced with REPLACEMENT CHARACTER."
|
|
828
|
+
)
|
|
829
|
+
|
|
830
|
+
self.contains_replacement_characters = True
|
|
831
|
+
break
|
|
832
|
+
|
|
833
|
+
# If none of that worked, we could at this point force it to
|
|
834
|
+
# ASCII, but that would destroy so much data that I think
|
|
835
|
+
# giving up is better.
|
|
836
|
+
#
|
|
837
|
+
# Note that this is extremely unlikely, probably impossible,
|
|
838
|
+
# because the "replace" strategy is so powerful. Even running
|
|
839
|
+
# the Python binary through Unicode, Dammit gives you Unicode,
|
|
840
|
+
# albeit Unicode riddled with REPLACEMENT CHARACTER.
|
|
841
|
+
if u is None:
|
|
842
|
+
self.original_encoding = None
|
|
843
|
+
self.unicode_markup = None
|
|
844
|
+
else:
|
|
845
|
+
self.unicode_markup = u
|
|
846
|
+
|
|
847
|
+
#: The original markup, before it was converted to Unicode.
|
|
848
|
+
#: This is not necessarily the same as what was passed in to the
|
|
849
|
+
#: constructor, since any byte-order mark will be stripped.
|
|
850
|
+
markup: bytes
|
|
851
|
+
|
|
852
|
+
#: The Unicode version of the markup, following conversion. This
|
|
853
|
+
#: is set to None if there was simply no way to convert the
|
|
854
|
+
#: bytestring to Unicode (as with binary data).
|
|
855
|
+
unicode_markup: Optional[str]
|
|
856
|
+
|
|
857
|
+
#: This is True if `UnicodeDammit.unicode_markup` contains
|
|
858
|
+
#: U+FFFD REPLACEMENT_CHARACTER characters which were not present
|
|
859
|
+
#: in `UnicodeDammit.markup`. These mark character sequences that
|
|
860
|
+
#: could not be represented in Unicode.
|
|
861
|
+
contains_replacement_characters: bool
|
|
862
|
+
|
|
863
|
+
#: Unicode, Dammit's best guess as to the original character
|
|
864
|
+
#: encoding of `UnicodeDammit.markup`.
|
|
865
|
+
original_encoding: Optional[_Encoding]
|
|
866
|
+
|
|
867
|
+
#: The strategy used to handle Microsoft smart quotes.
|
|
868
|
+
smart_quotes_to: Optional[str]
|
|
869
|
+
|
|
870
|
+
#: The (encoding, error handling strategy) 2-tuples that were used to
|
|
871
|
+
#: try and convert the markup to Unicode.
|
|
872
|
+
tried_encodings: List[Tuple[_Encoding, str]]
|
|
873
|
+
|
|
874
|
+
log: Logger #: :meta private:
|
|
875
|
+
|
|
876
|
+
def _sub_ms_char(self, match: re.Match) -> bytes:
|
|
877
|
+
"""Changes a MS smart quote character to an XML or HTML
|
|
878
|
+
entity, or an ASCII character.
|
|
879
|
+
|
|
880
|
+
TODO: Since this is only used to convert smart quotes, it
|
|
881
|
+
could be simplified, and MS_CHARS_TO_ASCII made much less
|
|
882
|
+
parochial.
|
|
883
|
+
"""
|
|
884
|
+
orig: bytes = match.group(1)
|
|
885
|
+
sub: bytes
|
|
886
|
+
if self.smart_quotes_to == "ascii":
|
|
887
|
+
if orig in self.MS_CHARS_TO_ASCII:
|
|
888
|
+
sub = self.MS_CHARS_TO_ASCII[orig].encode()
|
|
889
|
+
else:
|
|
890
|
+
# Shouldn't happen; substitute the character
|
|
891
|
+
# with itself.
|
|
892
|
+
sub = orig
|
|
893
|
+
else:
|
|
894
|
+
if orig in self.MS_CHARS:
|
|
895
|
+
substitutions = self.MS_CHARS[orig]
|
|
896
|
+
if type(substitutions) is tuple:
|
|
897
|
+
if self.smart_quotes_to == "xml":
|
|
898
|
+
sub = b"&#x" + substitutions[1].encode() + b";"
|
|
899
|
+
else:
|
|
900
|
+
sub = b"&" + substitutions[0].encode() + b";"
|
|
901
|
+
else:
|
|
902
|
+
substitutions = cast(str, substitutions)
|
|
903
|
+
sub = substitutions.encode()
|
|
904
|
+
else:
|
|
905
|
+
# Shouldn't happen; substitute the character
|
|
906
|
+
# for itself.
|
|
907
|
+
sub = orig
|
|
908
|
+
return sub
|
|
909
|
+
|
|
910
|
+
#: This dictionary maps commonly seen values for "charset" in HTML
|
|
911
|
+
#: meta tags to the corresponding Python codec names. It only covers
|
|
912
|
+
#: values that aren't in Python's aliases and can't be determined
|
|
913
|
+
#: by the heuristics in `find_codec`.
|
|
914
|
+
#:
|
|
915
|
+
#: :meta hide-value:
|
|
916
|
+
CHARSET_ALIASES: Dict[str, _Encoding] = {
|
|
917
|
+
"macintosh": "mac-roman",
|
|
918
|
+
"x-sjis": "shift-jis",
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
#: A list of encodings that tend to contain Microsoft smart quotes.
|
|
922
|
+
#:
|
|
923
|
+
#: :meta hide-value:
|
|
924
|
+
ENCODINGS_WITH_SMART_QUOTES: _Encodings = [
|
|
925
|
+
"windows-1252",
|
|
926
|
+
"iso-8859-1",
|
|
927
|
+
"iso-8859-2",
|
|
928
|
+
]
|
|
929
|
+
|
|
930
|
+
def _convert_from(
|
|
931
|
+
self, proposed: _Encoding, errors: str = "strict"
|
|
932
|
+
) -> Optional[str]:
|
|
933
|
+
"""Attempt to convert the markup to the proposed encoding.
|
|
934
|
+
|
|
935
|
+
:param proposed: The name of a character encoding.
|
|
936
|
+
:param errors: An error handling strategy, used when calling `str`.
|
|
937
|
+
:return: The converted markup, or `None` if the proposed
|
|
938
|
+
encoding/error handling strategy didn't work.
|
|
939
|
+
"""
|
|
940
|
+
lookup_result = self.find_codec(proposed)
|
|
941
|
+
if lookup_result is None or (lookup_result, errors) in self.tried_encodings:
|
|
942
|
+
return None
|
|
943
|
+
proposed = lookup_result
|
|
944
|
+
self.tried_encodings.append((proposed, errors))
|
|
945
|
+
markup = self.markup
|
|
946
|
+
# Convert smart quotes to HTML if coming from an encoding
|
|
947
|
+
# that might have them.
|
|
948
|
+
if (
|
|
949
|
+
self.smart_quotes_to is not None
|
|
950
|
+
and proposed in self.ENCODINGS_WITH_SMART_QUOTES
|
|
951
|
+
):
|
|
952
|
+
smart_quotes_re = b"([\x80-\x9f])"
|
|
953
|
+
smart_quotes_compiled = re.compile(smart_quotes_re)
|
|
954
|
+
markup = smart_quotes_compiled.sub(self._sub_ms_char, markup)
|
|
955
|
+
|
|
956
|
+
try:
|
|
957
|
+
# print("Trying to convert document to %s (errors=%s)" % (
|
|
958
|
+
# proposed, errors))
|
|
959
|
+
u = self._to_unicode(markup, proposed, errors)
|
|
960
|
+
self.unicode_markup = u
|
|
961
|
+
self.original_encoding = proposed
|
|
962
|
+
except Exception:
|
|
963
|
+
# print("That didn't work!")
|
|
964
|
+
# print(e)
|
|
965
|
+
return None
|
|
966
|
+
# print("Correct encoding: %s" % proposed)
|
|
967
|
+
return self.unicode_markup
|
|
968
|
+
|
|
969
|
+
def _to_unicode(
|
|
970
|
+
self, data: bytes, encoding: _Encoding, errors: str = "strict"
|
|
971
|
+
) -> str:
|
|
972
|
+
"""Given a bytestring and its encoding, decodes the string into Unicode.
|
|
973
|
+
|
|
974
|
+
:param encoding: The name of an encoding.
|
|
975
|
+
:param errors: An error handling strategy, used when calling `str`.
|
|
976
|
+
"""
|
|
977
|
+
return str(data, encoding, errors)
|
|
978
|
+
|
|
979
|
+
@property
|
|
980
|
+
def declared_html_encoding(self) -> Optional[_Encoding]:
|
|
981
|
+
"""If the markup is an HTML document, returns the encoding, if any,
|
|
982
|
+
declared *inside* the document.
|
|
983
|
+
"""
|
|
984
|
+
if not self.is_html:
|
|
985
|
+
return None
|
|
986
|
+
return self.detector.declared_encoding
|
|
987
|
+
|
|
988
|
+
def find_codec(self, charset: _Encoding) -> Optional[str]:
|
|
989
|
+
"""Look up the Python codec corresponding to a given character set.
|
|
990
|
+
|
|
991
|
+
:param charset: The name of a character set.
|
|
992
|
+
:return: The name of a Python codec.
|
|
993
|
+
"""
|
|
994
|
+
value = (
|
|
995
|
+
self._codec(self.CHARSET_ALIASES.get(charset, charset))
|
|
996
|
+
or (charset and self._codec(charset.replace("-", "")))
|
|
997
|
+
or (charset and self._codec(charset.replace("-", "_")))
|
|
998
|
+
or (charset and charset.lower())
|
|
999
|
+
or charset
|
|
1000
|
+
)
|
|
1001
|
+
if value:
|
|
1002
|
+
return value.lower()
|
|
1003
|
+
return None
|
|
1004
|
+
|
|
1005
|
+
def _codec(self, charset: _Encoding) -> Optional[str]:
|
|
1006
|
+
if not charset:
|
|
1007
|
+
return charset
|
|
1008
|
+
codec = None
|
|
1009
|
+
try:
|
|
1010
|
+
codecs.lookup(charset)
|
|
1011
|
+
codec = charset
|
|
1012
|
+
except (LookupError, ValueError):
|
|
1013
|
+
pass
|
|
1014
|
+
return codec
|
|
1015
|
+
|
|
1016
|
+
#: A partial mapping of ISO-Latin-1 to HTML entities/XML numeric entities.
|
|
1017
|
+
#:
|
|
1018
|
+
#: :meta hide-value:
|
|
1019
|
+
MS_CHARS: Dict[bytes, Union[str, Tuple[str, str]]] = {
|
|
1020
|
+
b"\x80": ("euro", "20AC"),
|
|
1021
|
+
b"\x81": " ",
|
|
1022
|
+
b"\x82": ("sbquo", "201A"),
|
|
1023
|
+
b"\x83": ("fnof", "192"),
|
|
1024
|
+
b"\x84": ("bdquo", "201E"),
|
|
1025
|
+
b"\x85": ("hellip", "2026"),
|
|
1026
|
+
b"\x86": ("dagger", "2020"),
|
|
1027
|
+
b"\x87": ("Dagger", "2021"),
|
|
1028
|
+
b"\x88": ("circ", "2C6"),
|
|
1029
|
+
b"\x89": ("permil", "2030"),
|
|
1030
|
+
b"\x8a": ("Scaron", "160"),
|
|
1031
|
+
b"\x8b": ("lsaquo", "2039"),
|
|
1032
|
+
b"\x8c": ("OElig", "152"),
|
|
1033
|
+
b"\x8d": "?",
|
|
1034
|
+
b"\x8e": ("#x17D", "17D"),
|
|
1035
|
+
b"\x8f": "?",
|
|
1036
|
+
b"\x90": "?",
|
|
1037
|
+
b"\x91": ("lsquo", "2018"),
|
|
1038
|
+
b"\x92": ("rsquo", "2019"),
|
|
1039
|
+
b"\x93": ("ldquo", "201C"),
|
|
1040
|
+
b"\x94": ("rdquo", "201D"),
|
|
1041
|
+
b"\x95": ("bull", "2022"),
|
|
1042
|
+
b"\x96": ("ndash", "2013"),
|
|
1043
|
+
b"\x97": ("mdash", "2014"),
|
|
1044
|
+
b"\x98": ("tilde", "2DC"),
|
|
1045
|
+
b"\x99": ("trade", "2122"),
|
|
1046
|
+
b"\x9a": ("scaron", "161"),
|
|
1047
|
+
b"\x9b": ("rsaquo", "203A"),
|
|
1048
|
+
b"\x9c": ("oelig", "153"),
|
|
1049
|
+
b"\x9d": "?",
|
|
1050
|
+
b"\x9e": ("#x17E", "17E"),
|
|
1051
|
+
b"\x9f": ("Yuml", ""),
|
|
1052
|
+
}
|
|
1053
|
+
|
|
1054
|
+
#: A parochial partial mapping of ISO-Latin-1 to ASCII. Contains
|
|
1055
|
+
#: horrors like stripping diacritical marks to turn á into a, but also
|
|
1056
|
+
#: contains non-horrors like turning “ into ".
|
|
1057
|
+
#:
|
|
1058
|
+
#: Seriously, don't use this for anything other than removing smart
|
|
1059
|
+
#: quotes.
|
|
1060
|
+
#:
|
|
1061
|
+
#: :meta private:
|
|
1062
|
+
MS_CHARS_TO_ASCII: Dict[bytes, str] = {
|
|
1063
|
+
b"\x80": "EUR",
|
|
1064
|
+
b"\x81": " ",
|
|
1065
|
+
b"\x82": ",",
|
|
1066
|
+
b"\x83": "f",
|
|
1067
|
+
b"\x84": ",,",
|
|
1068
|
+
b"\x85": "...",
|
|
1069
|
+
b"\x86": "+",
|
|
1070
|
+
b"\x87": "++",
|
|
1071
|
+
b"\x88": "^",
|
|
1072
|
+
b"\x89": "%",
|
|
1073
|
+
b"\x8a": "S",
|
|
1074
|
+
b"\x8b": "<",
|
|
1075
|
+
b"\x8c": "OE",
|
|
1076
|
+
b"\x8d": "?",
|
|
1077
|
+
b"\x8e": "Z",
|
|
1078
|
+
b"\x8f": "?",
|
|
1079
|
+
b"\x90": "?",
|
|
1080
|
+
b"\x91": "'",
|
|
1081
|
+
b"\x92": "'",
|
|
1082
|
+
b"\x93": '"',
|
|
1083
|
+
b"\x94": '"',
|
|
1084
|
+
b"\x95": "*",
|
|
1085
|
+
b"\x96": "-",
|
|
1086
|
+
b"\x97": "--",
|
|
1087
|
+
b"\x98": "~",
|
|
1088
|
+
b"\x99": "(TM)",
|
|
1089
|
+
b"\x9a": "s",
|
|
1090
|
+
b"\x9b": ">",
|
|
1091
|
+
b"\x9c": "oe",
|
|
1092
|
+
b"\x9d": "?",
|
|
1093
|
+
b"\x9e": "z",
|
|
1094
|
+
b"\x9f": "Y",
|
|
1095
|
+
b"\xa0": " ",
|
|
1096
|
+
b"\xa1": "!",
|
|
1097
|
+
b"\xa2": "c",
|
|
1098
|
+
b"\xa3": "GBP",
|
|
1099
|
+
b"\xa4": "$", # This approximation is especially parochial--this is the
|
|
1100
|
+
# generic currency symbol.
|
|
1101
|
+
b"\xa5": "YEN",
|
|
1102
|
+
b"\xa6": "|",
|
|
1103
|
+
b"\xa7": "S",
|
|
1104
|
+
b"\xa8": "..",
|
|
1105
|
+
b"\xa9": "",
|
|
1106
|
+
b"\xaa": "(th)",
|
|
1107
|
+
b"\xab": "<<",
|
|
1108
|
+
b"\xac": "!",
|
|
1109
|
+
b"\xad": " ",
|
|
1110
|
+
b"\xae": "(R)",
|
|
1111
|
+
b"\xaf": "-",
|
|
1112
|
+
b"\xb0": "o",
|
|
1113
|
+
b"\xb1": "+-",
|
|
1114
|
+
b"\xb2": "2",
|
|
1115
|
+
b"\xb3": "3",
|
|
1116
|
+
b"\xb4": "'",
|
|
1117
|
+
b"\xb5": "u",
|
|
1118
|
+
b"\xb6": "P",
|
|
1119
|
+
b"\xb7": "*",
|
|
1120
|
+
b"\xb8": ",",
|
|
1121
|
+
b"\xb9": "1",
|
|
1122
|
+
b"\xba": "(th)",
|
|
1123
|
+
b"\xbb": ">>",
|
|
1124
|
+
b"\xbc": "1/4",
|
|
1125
|
+
b"\xbd": "1/2",
|
|
1126
|
+
b"\xbe": "3/4",
|
|
1127
|
+
b"\xbf": "?",
|
|
1128
|
+
b"\xc0": "A",
|
|
1129
|
+
b"\xc1": "A",
|
|
1130
|
+
b"\xc2": "A",
|
|
1131
|
+
b"\xc3": "A",
|
|
1132
|
+
b"\xc4": "A",
|
|
1133
|
+
b"\xc5": "A",
|
|
1134
|
+
b"\xc6": "AE",
|
|
1135
|
+
b"\xc7": "C",
|
|
1136
|
+
b"\xc8": "E",
|
|
1137
|
+
b"\xc9": "E",
|
|
1138
|
+
b"\xca": "E",
|
|
1139
|
+
b"\xcb": "E",
|
|
1140
|
+
b"\xcc": "I",
|
|
1141
|
+
b"\xcd": "I",
|
|
1142
|
+
b"\xce": "I",
|
|
1143
|
+
b"\xcf": "I",
|
|
1144
|
+
b"\xd0": "D",
|
|
1145
|
+
b"\xd1": "N",
|
|
1146
|
+
b"\xd2": "O",
|
|
1147
|
+
b"\xd3": "O",
|
|
1148
|
+
b"\xd4": "O",
|
|
1149
|
+
b"\xd5": "O",
|
|
1150
|
+
b"\xd6": "O",
|
|
1151
|
+
b"\xd7": "*",
|
|
1152
|
+
b"\xd8": "O",
|
|
1153
|
+
b"\xd9": "U",
|
|
1154
|
+
b"\xda": "U",
|
|
1155
|
+
b"\xdb": "U",
|
|
1156
|
+
b"\xdc": "U",
|
|
1157
|
+
b"\xdd": "Y",
|
|
1158
|
+
b"\xde": "b",
|
|
1159
|
+
b"\xdf": "B",
|
|
1160
|
+
b"\xe0": "a",
|
|
1161
|
+
b"\xe1": "a",
|
|
1162
|
+
b"\xe2": "a",
|
|
1163
|
+
b"\xe3": "a",
|
|
1164
|
+
b"\xe4": "a",
|
|
1165
|
+
b"\xe5": "a",
|
|
1166
|
+
b"\xe6": "ae",
|
|
1167
|
+
b"\xe7": "c",
|
|
1168
|
+
b"\xe8": "e",
|
|
1169
|
+
b"\xe9": "e",
|
|
1170
|
+
b"\xea": "e",
|
|
1171
|
+
b"\xeb": "e",
|
|
1172
|
+
b"\xec": "i",
|
|
1173
|
+
b"\xed": "i",
|
|
1174
|
+
b"\xee": "i",
|
|
1175
|
+
b"\xef": "i",
|
|
1176
|
+
b"\xf0": "o",
|
|
1177
|
+
b"\xf1": "n",
|
|
1178
|
+
b"\xf2": "o",
|
|
1179
|
+
b"\xf3": "o",
|
|
1180
|
+
b"\xf4": "o",
|
|
1181
|
+
b"\xf5": "o",
|
|
1182
|
+
b"\xf6": "o",
|
|
1183
|
+
b"\xf7": "/",
|
|
1184
|
+
b"\xf8": "o",
|
|
1185
|
+
b"\xf9": "u",
|
|
1186
|
+
b"\xfa": "u",
|
|
1187
|
+
b"\xfb": "u",
|
|
1188
|
+
b"\xfc": "u",
|
|
1189
|
+
b"\xfd": "y",
|
|
1190
|
+
b"\xfe": "b",
|
|
1191
|
+
b"\xff": "y",
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
#: A map used when removing rogue Windows-1252/ISO-8859-1
|
|
1195
|
+
#: characters in otherwise UTF-8 documents.
|
|
1196
|
+
#:
|
|
1197
|
+
#: Note that \\x81, \\x8d, \\x8f, \\x90, and \\x9d are undefined in
|
|
1198
|
+
#: Windows-1252.
|
|
1199
|
+
#:
|
|
1200
|
+
#: :meta hide-value:
|
|
1201
|
+
WINDOWS_1252_TO_UTF8: Dict[int, bytes] = {
|
|
1202
|
+
0x80: b"\xe2\x82\xac", # €
|
|
1203
|
+
0x82: b"\xe2\x80\x9a", # ‚
|
|
1204
|
+
0x83: b"\xc6\x92", # ƒ
|
|
1205
|
+
0x84: b"\xe2\x80\x9e", # „
|
|
1206
|
+
0x85: b"\xe2\x80\xa6", # …
|
|
1207
|
+
0x86: b"\xe2\x80\xa0", # †
|
|
1208
|
+
0x87: b"\xe2\x80\xa1", # ‡
|
|
1209
|
+
0x88: b"\xcb\x86", # ˆ
|
|
1210
|
+
0x89: b"\xe2\x80\xb0", # ‰
|
|
1211
|
+
0x8A: b"\xc5\xa0", # Š
|
|
1212
|
+
0x8B: b"\xe2\x80\xb9", # ‹
|
|
1213
|
+
0x8C: b"\xc5\x92", # Œ
|
|
1214
|
+
0x8E: b"\xc5\xbd", # Ž
|
|
1215
|
+
0x91: b"\xe2\x80\x98", # ‘
|
|
1216
|
+
0x92: b"\xe2\x80\x99", # ’
|
|
1217
|
+
0x93: b"\xe2\x80\x9c", # “
|
|
1218
|
+
0x94: b"\xe2\x80\x9d", # ”
|
|
1219
|
+
0x95: b"\xe2\x80\xa2", # •
|
|
1220
|
+
0x96: b"\xe2\x80\x93", # –
|
|
1221
|
+
0x97: b"\xe2\x80\x94", # —
|
|
1222
|
+
0x98: b"\xcb\x9c", # ˜
|
|
1223
|
+
0x99: b"\xe2\x84\xa2", # ™
|
|
1224
|
+
0x9A: b"\xc5\xa1", # š
|
|
1225
|
+
0x9B: b"\xe2\x80\xba", # ›
|
|
1226
|
+
0x9C: b"\xc5\x93", # œ
|
|
1227
|
+
0x9E: b"\xc5\xbe", # ž
|
|
1228
|
+
0x9F: b"\xc5\xb8", # Ÿ
|
|
1229
|
+
0xA0: b"\xc2\xa0", #
|
|
1230
|
+
0xA1: b"\xc2\xa1", # ¡
|
|
1231
|
+
0xA2: b"\xc2\xa2", # ¢
|
|
1232
|
+
0xA3: b"\xc2\xa3", # £
|
|
1233
|
+
0xA4: b"\xc2\xa4", # ¤
|
|
1234
|
+
0xA5: b"\xc2\xa5", # ¥
|
|
1235
|
+
0xA6: b"\xc2\xa6", # ¦
|
|
1236
|
+
0xA7: b"\xc2\xa7", # §
|
|
1237
|
+
0xA8: b"\xc2\xa8", # ¨
|
|
1238
|
+
0xA9: b"\xc2\xa9", # ©
|
|
1239
|
+
0xAA: b"\xc2\xaa", # ª
|
|
1240
|
+
0xAB: b"\xc2\xab", # «
|
|
1241
|
+
0xAC: b"\xc2\xac", # ¬
|
|
1242
|
+
0xAD: b"\xc2\xad", #
|
|
1243
|
+
0xAE: b"\xc2\xae", # ®
|
|
1244
|
+
0xAF: b"\xc2\xaf", # ¯
|
|
1245
|
+
0xB0: b"\xc2\xb0", # °
|
|
1246
|
+
0xB1: b"\xc2\xb1", # ±
|
|
1247
|
+
0xB2: b"\xc2\xb2", # ²
|
|
1248
|
+
0xB3: b"\xc2\xb3", # ³
|
|
1249
|
+
0xB4: b"\xc2\xb4", # ´
|
|
1250
|
+
0xB5: b"\xc2\xb5", # µ
|
|
1251
|
+
0xB6: b"\xc2\xb6", # ¶
|
|
1252
|
+
0xB7: b"\xc2\xb7", # ·
|
|
1253
|
+
0xB8: b"\xc2\xb8", # ¸
|
|
1254
|
+
0xB9: b"\xc2\xb9", # ¹
|
|
1255
|
+
0xBA: b"\xc2\xba", # º
|
|
1256
|
+
0xBB: b"\xc2\xbb", # »
|
|
1257
|
+
0xBC: b"\xc2\xbc", # ¼
|
|
1258
|
+
0xBD: b"\xc2\xbd", # ½
|
|
1259
|
+
0xBE: b"\xc2\xbe", # ¾
|
|
1260
|
+
0xBF: b"\xc2\xbf", # ¿
|
|
1261
|
+
0xC0: b"\xc3\x80", # À
|
|
1262
|
+
0xC1: b"\xc3\x81", # Á
|
|
1263
|
+
0xC2: b"\xc3\x82", # Â
|
|
1264
|
+
0xC3: b"\xc3\x83", # Ã
|
|
1265
|
+
0xC4: b"\xc3\x84", # Ä
|
|
1266
|
+
0xC5: b"\xc3\x85", # Å
|
|
1267
|
+
0xC6: b"\xc3\x86", # Æ
|
|
1268
|
+
0xC7: b"\xc3\x87", # Ç
|
|
1269
|
+
0xC8: b"\xc3\x88", # È
|
|
1270
|
+
0xC9: b"\xc3\x89", # É
|
|
1271
|
+
0xCA: b"\xc3\x8a", # Ê
|
|
1272
|
+
0xCB: b"\xc3\x8b", # Ë
|
|
1273
|
+
0xCC: b"\xc3\x8c", # Ì
|
|
1274
|
+
0xCD: b"\xc3\x8d", # Í
|
|
1275
|
+
0xCE: b"\xc3\x8e", # Î
|
|
1276
|
+
0xCF: b"\xc3\x8f", # Ï
|
|
1277
|
+
0xD0: b"\xc3\x90", # Ð
|
|
1278
|
+
0xD1: b"\xc3\x91", # Ñ
|
|
1279
|
+
0xD2: b"\xc3\x92", # Ò
|
|
1280
|
+
0xD3: b"\xc3\x93", # Ó
|
|
1281
|
+
0xD4: b"\xc3\x94", # Ô
|
|
1282
|
+
0xD5: b"\xc3\x95", # Õ
|
|
1283
|
+
0xD6: b"\xc3\x96", # Ö
|
|
1284
|
+
0xD7: b"\xc3\x97", # ×
|
|
1285
|
+
0xD8: b"\xc3\x98", # Ø
|
|
1286
|
+
0xD9: b"\xc3\x99", # Ù
|
|
1287
|
+
0xDA: b"\xc3\x9a", # Ú
|
|
1288
|
+
0xDB: b"\xc3\x9b", # Û
|
|
1289
|
+
0xDC: b"\xc3\x9c", # Ü
|
|
1290
|
+
0xDD: b"\xc3\x9d", # Ý
|
|
1291
|
+
0xDE: b"\xc3\x9e", # Þ
|
|
1292
|
+
0xDF: b"\xc3\x9f", # ß
|
|
1293
|
+
0xE0: b"\xc3\xa0", # à
|
|
1294
|
+
0xE1: b"\xa1", # á
|
|
1295
|
+
0xE2: b"\xc3\xa2", # â
|
|
1296
|
+
0xE3: b"\xc3\xa3", # ã
|
|
1297
|
+
0xE4: b"\xc3\xa4", # ä
|
|
1298
|
+
0xE5: b"\xc3\xa5", # å
|
|
1299
|
+
0xE6: b"\xc3\xa6", # æ
|
|
1300
|
+
0xE7: b"\xc3\xa7", # ç
|
|
1301
|
+
0xE8: b"\xc3\xa8", # è
|
|
1302
|
+
0xE9: b"\xc3\xa9", # é
|
|
1303
|
+
0xEA: b"\xc3\xaa", # ê
|
|
1304
|
+
0xEB: b"\xc3\xab", # ë
|
|
1305
|
+
0xEC: b"\xc3\xac", # ì
|
|
1306
|
+
0xED: b"\xc3\xad", # í
|
|
1307
|
+
0xEE: b"\xc3\xae", # î
|
|
1308
|
+
0xEF: b"\xc3\xaf", # ï
|
|
1309
|
+
0xF0: b"\xc3\xb0", # ð
|
|
1310
|
+
0xF1: b"\xc3\xb1", # ñ
|
|
1311
|
+
0xF2: b"\xc3\xb2", # ò
|
|
1312
|
+
0xF3: b"\xc3\xb3", # ó
|
|
1313
|
+
0xF4: b"\xc3\xb4", # ô
|
|
1314
|
+
0xF5: b"\xc3\xb5", # õ
|
|
1315
|
+
0xF6: b"\xc3\xb6", # ö
|
|
1316
|
+
0xF7: b"\xc3\xb7", # ÷
|
|
1317
|
+
0xF8: b"\xc3\xb8", # ø
|
|
1318
|
+
0xF9: b"\xc3\xb9", # ù
|
|
1319
|
+
0xFA: b"\xc3\xba", # ú
|
|
1320
|
+
0xFB: b"\xc3\xbb", # û
|
|
1321
|
+
0xFC: b"\xc3\xbc", # ü
|
|
1322
|
+
0xFD: b"\xc3\xbd", # ý
|
|
1323
|
+
0xFE: b"\xc3\xbe", # þ
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1326
|
+
#: :meta private:
|
|
1327
|
+
MULTIBYTE_MARKERS_AND_SIZES: List[Tuple[int, int, int]] = [
|
|
1328
|
+
(0xC2, 0xDF, 2), # 2-byte characters start with a byte C2-DF
|
|
1329
|
+
(0xE0, 0xEF, 3), # 3-byte characters start with E0-EF
|
|
1330
|
+
(0xF0, 0xF4, 4), # 4-byte characters start with F0-F4
|
|
1331
|
+
]
|
|
1332
|
+
|
|
1333
|
+
#: :meta private:
|
|
1334
|
+
FIRST_MULTIBYTE_MARKER: int = MULTIBYTE_MARKERS_AND_SIZES[0][0]
|
|
1335
|
+
|
|
1336
|
+
#: :meta private:
|
|
1337
|
+
LAST_MULTIBYTE_MARKER: int = MULTIBYTE_MARKERS_AND_SIZES[-1][1]
|
|
1338
|
+
|
|
1339
|
+
@classmethod
|
|
1340
|
+
def detwingle(
|
|
1341
|
+
cls,
|
|
1342
|
+
in_bytes: bytes,
|
|
1343
|
+
main_encoding: _Encoding = "utf8",
|
|
1344
|
+
embedded_encoding: _Encoding = "windows-1252",
|
|
1345
|
+
) -> bytes:
|
|
1346
|
+
"""Fix characters from one encoding embedded in some other encoding.
|
|
1347
|
+
|
|
1348
|
+
Currently the only situation supported is Windows-1252 (or its
|
|
1349
|
+
subset ISO-8859-1), embedded in UTF-8.
|
|
1350
|
+
|
|
1351
|
+
:param in_bytes: A bytestring that you suspect contains
|
|
1352
|
+
characters from multiple encodings. Note that this *must*
|
|
1353
|
+
be a bytestring. If you've already converted the document
|
|
1354
|
+
to Unicode, you're too late.
|
|
1355
|
+
:param main_encoding: The primary encoding of ``in_bytes``.
|
|
1356
|
+
:param embedded_encoding: The encoding that was used to embed characters
|
|
1357
|
+
in the main document.
|
|
1358
|
+
:return: A bytestring similar to ``in_bytes``, in which
|
|
1359
|
+
``embedded_encoding`` characters have been converted to
|
|
1360
|
+
their ``main_encoding`` equivalents.
|
|
1361
|
+
"""
|
|
1362
|
+
if embedded_encoding.replace("_", "-").lower() not in (
|
|
1363
|
+
"windows-1252",
|
|
1364
|
+
"windows_1252",
|
|
1365
|
+
):
|
|
1366
|
+
raise NotImplementedError(
|
|
1367
|
+
"Windows-1252 and ISO-8859-1 are the only currently supported "
|
|
1368
|
+
"embedded encodings."
|
|
1369
|
+
)
|
|
1370
|
+
|
|
1371
|
+
if main_encoding.lower() not in ("utf8", "utf-8"):
|
|
1372
|
+
raise NotImplementedError(
|
|
1373
|
+
"UTF-8 is the only currently supported main encoding."
|
|
1374
|
+
)
|
|
1375
|
+
|
|
1376
|
+
byte_chunks = []
|
|
1377
|
+
|
|
1378
|
+
chunk_start = 0
|
|
1379
|
+
pos = 0
|
|
1380
|
+
while pos < len(in_bytes):
|
|
1381
|
+
byte = in_bytes[pos]
|
|
1382
|
+
if byte >= cls.FIRST_MULTIBYTE_MARKER and byte <= cls.LAST_MULTIBYTE_MARKER:
|
|
1383
|
+
# This is the start of a UTF-8 multibyte character. Skip
|
|
1384
|
+
# to the end.
|
|
1385
|
+
for start, end, size in cls.MULTIBYTE_MARKERS_AND_SIZES:
|
|
1386
|
+
if byte >= start and byte <= end:
|
|
1387
|
+
pos += size
|
|
1388
|
+
break
|
|
1389
|
+
elif byte >= 0x80 and byte in cls.WINDOWS_1252_TO_UTF8:
|
|
1390
|
+
# We found a Windows-1252 character!
|
|
1391
|
+
# Save the string up to this point as a chunk.
|
|
1392
|
+
byte_chunks.append(in_bytes[chunk_start:pos])
|
|
1393
|
+
|
|
1394
|
+
# Now translate the Windows-1252 character into UTF-8
|
|
1395
|
+
# and add it as another, one-byte chunk.
|
|
1396
|
+
byte_chunks.append(cls.WINDOWS_1252_TO_UTF8[byte])
|
|
1397
|
+
pos += 1
|
|
1398
|
+
chunk_start = pos
|
|
1399
|
+
else:
|
|
1400
|
+
# Go on to the next character.
|
|
1401
|
+
pos += 1
|
|
1402
|
+
if chunk_start == 0:
|
|
1403
|
+
# The string is unchanged.
|
|
1404
|
+
return in_bytes
|
|
1405
|
+
else:
|
|
1406
|
+
# Store the final chunk.
|
|
1407
|
+
byte_chunks.append(in_bytes[chunk_start:])
|
|
1408
|
+
return b"".join(byte_chunks)
|