@scrypted/arlo 0.11.25 → 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.
Files changed (1313) hide show
  1. package/README.md +0 -2
  2. package/dist/plugin.zip +0 -0
  3. package/package.json +9 -1
  4. package/venv/bin/Activate.ps1 +247 -0
  5. package/venv/bin/activate +69 -0
  6. package/venv/bin/activate.csh +26 -0
  7. package/venv/bin/activate.fish +69 -0
  8. package/venv/bin/normalizer +8 -0
  9. package/venv/bin/pip +8 -0
  10. package/venv/bin/pip3 +8 -0
  11. package/venv/bin/pip3.10 +8 -0
  12. package/venv/lib/python3.10/site-packages/_cffi_backend.cpython-310-x86_64-linux-gnu.so +0 -0
  13. package/venv/lib/python3.10/site-packages/_distutils_hack/__init__.py +132 -0
  14. package/venv/lib/python3.10/site-packages/_distutils_hack/override.py +1 -0
  15. package/venv/lib/python3.10/site-packages/aiohappyeyeballs/__init__.py +13 -0
  16. package/venv/lib/python3.10/site-packages/aiohappyeyeballs/_staggered.py +202 -0
  17. package/venv/lib/python3.10/site-packages/aiohappyeyeballs/impl.py +210 -0
  18. package/venv/lib/python3.10/site-packages/aiohappyeyeballs/py.typed +0 -0
  19. package/venv/lib/python3.10/site-packages/aiohappyeyeballs/types.py +12 -0
  20. package/venv/lib/python3.10/site-packages/aiohappyeyeballs/utils.py +97 -0
  21. package/venv/lib/python3.10/site-packages/aiohappyeyeballs-2.4.6.dist-info/INSTALLER +1 -0
  22. package/venv/lib/python3.10/site-packages/aiohappyeyeballs-2.4.6.dist-info/LICENSE +279 -0
  23. package/venv/lib/python3.10/site-packages/aiohappyeyeballs-2.4.6.dist-info/METADATA +123 -0
  24. package/venv/lib/python3.10/site-packages/aiohappyeyeballs-2.4.6.dist-info/RECORD +16 -0
  25. package/venv/lib/python3.10/site-packages/aiohappyeyeballs-2.4.6.dist-info/WHEEL +4 -0
  26. package/venv/lib/python3.10/site-packages/aiohttp/.hash/_cparser.pxd.hash +1 -0
  27. package/venv/lib/python3.10/site-packages/aiohttp/.hash/_find_header.pxd.hash +1 -0
  28. package/venv/lib/python3.10/site-packages/aiohttp/.hash/_http_parser.pyx.hash +1 -0
  29. package/venv/lib/python3.10/site-packages/aiohttp/.hash/_http_writer.pyx.hash +1 -0
  30. package/venv/lib/python3.10/site-packages/aiohttp/.hash/hdrs.py.hash +1 -0
  31. package/venv/lib/python3.10/site-packages/aiohttp/__init__.py +264 -0
  32. package/venv/lib/python3.10/site-packages/aiohttp/_cparser.pxd +158 -0
  33. package/venv/lib/python3.10/site-packages/aiohttp/_find_header.pxd +2 -0
  34. package/venv/lib/python3.10/site-packages/aiohttp/_headers.pxi +83 -0
  35. package/venv/lib/python3.10/site-packages/aiohttp/_http_parser.cpython-310-x86_64-linux-gnu.so +0 -0
  36. package/venv/lib/python3.10/site-packages/aiohttp/_http_parser.pyx +837 -0
  37. package/venv/lib/python3.10/site-packages/aiohttp/_http_writer.cpython-310-x86_64-linux-gnu.so +0 -0
  38. package/venv/lib/python3.10/site-packages/aiohttp/_http_writer.pyx +162 -0
  39. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/.hash/mask.pxd.hash +1 -0
  40. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/.hash/mask.pyx.hash +1 -0
  41. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/.hash/reader_c.pxd.hash +1 -0
  42. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/__init__.py +1 -0
  43. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/helpers.py +147 -0
  44. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/mask.cpython-310-x86_64-linux-gnu.so +0 -0
  45. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/mask.pxd +3 -0
  46. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/mask.pyx +48 -0
  47. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/models.py +84 -0
  48. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/reader.py +31 -0
  49. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/reader_c.cpython-310-x86_64-linux-gnu.so +0 -0
  50. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/reader_c.pxd +102 -0
  51. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/reader_c.py +468 -0
  52. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/reader_py.py +468 -0
  53. package/venv/lib/python3.10/site-packages/aiohttp/_websocket/writer.py +177 -0
  54. package/venv/lib/python3.10/site-packages/aiohttp/abc.py +253 -0
  55. package/venv/lib/python3.10/site-packages/aiohttp/base_protocol.py +100 -0
  56. package/venv/lib/python3.10/site-packages/aiohttp/client.py +1550 -0
  57. package/venv/lib/python3.10/site-packages/aiohttp/client_exceptions.py +421 -0
  58. package/venv/lib/python3.10/site-packages/aiohttp/client_proto.py +307 -0
  59. package/venv/lib/python3.10/site-packages/aiohttp/client_reqrep.py +1315 -0
  60. package/venv/lib/python3.10/site-packages/aiohttp/client_ws.py +426 -0
  61. package/venv/lib/python3.10/site-packages/aiohttp/compression_utils.py +173 -0
  62. package/venv/lib/python3.10/site-packages/aiohttp/connector.py +1652 -0
  63. package/venv/lib/python3.10/site-packages/aiohttp/cookiejar.py +495 -0
  64. package/venv/lib/python3.10/site-packages/aiohttp/formdata.py +182 -0
  65. package/venv/lib/python3.10/site-packages/aiohttp/hdrs.py +121 -0
  66. package/venv/lib/python3.10/site-packages/aiohttp/helpers.py +944 -0
  67. package/venv/lib/python3.10/site-packages/aiohttp/http.py +72 -0
  68. package/venv/lib/python3.10/site-packages/aiohttp/http_exceptions.py +112 -0
  69. package/venv/lib/python3.10/site-packages/aiohttp/http_parser.py +1046 -0
  70. package/venv/lib/python3.10/site-packages/aiohttp/http_websocket.py +36 -0
  71. package/venv/lib/python3.10/site-packages/aiohttp/http_writer.py +249 -0
  72. package/venv/lib/python3.10/site-packages/aiohttp/log.py +8 -0
  73. package/venv/lib/python3.10/site-packages/aiohttp/multipart.py +1071 -0
  74. package/venv/lib/python3.10/site-packages/aiohttp/payload.py +519 -0
  75. package/venv/lib/python3.10/site-packages/aiohttp/payload_streamer.py +78 -0
  76. package/venv/lib/python3.10/site-packages/aiohttp/py.typed +1 -0
  77. package/venv/lib/python3.10/site-packages/aiohttp/pytest_plugin.py +436 -0
  78. package/venv/lib/python3.10/site-packages/aiohttp/resolver.py +187 -0
  79. package/venv/lib/python3.10/site-packages/aiohttp/streams.py +727 -0
  80. package/venv/lib/python3.10/site-packages/aiohttp/tcp_helpers.py +37 -0
  81. package/venv/lib/python3.10/site-packages/aiohttp/test_utils.py +770 -0
  82. package/venv/lib/python3.10/site-packages/aiohttp/tracing.py +470 -0
  83. package/venv/lib/python3.10/site-packages/aiohttp/typedefs.py +69 -0
  84. package/venv/lib/python3.10/site-packages/aiohttp/web.py +605 -0
  85. package/venv/lib/python3.10/site-packages/aiohttp/web_app.py +620 -0
  86. package/venv/lib/python3.10/site-packages/aiohttp/web_exceptions.py +452 -0
  87. package/venv/lib/python3.10/site-packages/aiohttp/web_fileresponse.py +418 -0
  88. package/venv/lib/python3.10/site-packages/aiohttp/web_log.py +216 -0
  89. package/venv/lib/python3.10/site-packages/aiohttp/web_middlewares.py +121 -0
  90. package/venv/lib/python3.10/site-packages/aiohttp/web_protocol.py +750 -0
  91. package/venv/lib/python3.10/site-packages/aiohttp/web_request.py +916 -0
  92. package/venv/lib/python3.10/site-packages/aiohttp/web_response.py +840 -0
  93. package/venv/lib/python3.10/site-packages/aiohttp/web_routedef.py +214 -0
  94. package/venv/lib/python3.10/site-packages/aiohttp/web_runner.py +399 -0
  95. package/venv/lib/python3.10/site-packages/aiohttp/web_server.py +84 -0
  96. package/venv/lib/python3.10/site-packages/aiohttp/web_urldispatcher.py +1301 -0
  97. package/venv/lib/python3.10/site-packages/aiohttp/web_ws.py +622 -0
  98. package/venv/lib/python3.10/site-packages/aiohttp/worker.py +252 -0
  99. package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/INSTALLER +1 -0
  100. package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/LICENSE.txt +13 -0
  101. package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/METADATA +250 -0
  102. package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/RECORD +132 -0
  103. package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/REQUESTED +0 -0
  104. package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/WHEEL +6 -0
  105. package/venv/lib/python3.10/site-packages/aiohttp-3.11.12.dist-info/top_level.txt +1 -0
  106. package/venv/lib/python3.10/site-packages/aiosignal/__init__.py +36 -0
  107. package/venv/lib/python3.10/site-packages/aiosignal/__init__.pyi +12 -0
  108. package/venv/lib/python3.10/site-packages/aiosignal/py.typed +0 -0
  109. package/venv/lib/python3.10/site-packages/aiosignal-1.3.2.dist-info/INSTALLER +1 -0
  110. package/venv/lib/python3.10/site-packages/aiosignal-1.3.2.dist-info/LICENSE +201 -0
  111. package/venv/lib/python3.10/site-packages/aiosignal-1.3.2.dist-info/METADATA +123 -0
  112. package/venv/lib/python3.10/site-packages/aiosignal-1.3.2.dist-info/RECORD +10 -0
  113. package/venv/lib/python3.10/site-packages/aiosignal-1.3.2.dist-info/WHEEL +6 -0
  114. package/venv/lib/python3.10/site-packages/aiosignal-1.3.2.dist-info/top_level.txt +1 -0
  115. package/venv/lib/python3.10/site-packages/async_timeout/__init__.py +276 -0
  116. package/venv/lib/python3.10/site-packages/async_timeout/py.typed +1 -0
  117. package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/INSTALLER +1 -0
  118. package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/LICENSE +13 -0
  119. package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/METADATA +163 -0
  120. package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/RECORD +11 -0
  121. package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/REQUESTED +0 -0
  122. package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/WHEEL +5 -0
  123. package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/top_level.txt +1 -0
  124. package/venv/lib/python3.10/site-packages/async_timeout-5.0.1.dist-info/zip-safe +1 -0
  125. package/venv/lib/python3.10/site-packages/attr/__init__.py +104 -0
  126. package/venv/lib/python3.10/site-packages/attr/__init__.pyi +389 -0
  127. package/venv/lib/python3.10/site-packages/attr/_cmp.py +160 -0
  128. package/venv/lib/python3.10/site-packages/attr/_cmp.pyi +13 -0
  129. package/venv/lib/python3.10/site-packages/attr/_compat.py +94 -0
  130. package/venv/lib/python3.10/site-packages/attr/_config.py +31 -0
  131. package/venv/lib/python3.10/site-packages/attr/_funcs.py +468 -0
  132. package/venv/lib/python3.10/site-packages/attr/_make.py +3055 -0
  133. package/venv/lib/python3.10/site-packages/attr/_next_gen.py +623 -0
  134. package/venv/lib/python3.10/site-packages/attr/_typing_compat.pyi +15 -0
  135. package/venv/lib/python3.10/site-packages/attr/_version_info.py +86 -0
  136. package/venv/lib/python3.10/site-packages/attr/_version_info.pyi +9 -0
  137. package/venv/lib/python3.10/site-packages/attr/converters.py +162 -0
  138. package/venv/lib/python3.10/site-packages/attr/converters.pyi +19 -0
  139. package/venv/lib/python3.10/site-packages/attr/exceptions.py +95 -0
  140. package/venv/lib/python3.10/site-packages/attr/exceptions.pyi +17 -0
  141. package/venv/lib/python3.10/site-packages/attr/filters.py +72 -0
  142. package/venv/lib/python3.10/site-packages/attr/filters.pyi +6 -0
  143. package/venv/lib/python3.10/site-packages/attr/py.typed +0 -0
  144. package/venv/lib/python3.10/site-packages/attr/setters.py +79 -0
  145. package/venv/lib/python3.10/site-packages/attr/setters.pyi +20 -0
  146. package/venv/lib/python3.10/site-packages/attr/validators.py +710 -0
  147. package/venv/lib/python3.10/site-packages/attr/validators.pyi +86 -0
  148. package/venv/lib/python3.10/site-packages/attrs/__init__.py +69 -0
  149. package/venv/lib/python3.10/site-packages/attrs/__init__.pyi +263 -0
  150. package/venv/lib/python3.10/site-packages/attrs/converters.py +3 -0
  151. package/venv/lib/python3.10/site-packages/attrs/exceptions.py +3 -0
  152. package/venv/lib/python3.10/site-packages/attrs/filters.py +3 -0
  153. package/venv/lib/python3.10/site-packages/attrs/py.typed +0 -0
  154. package/venv/lib/python3.10/site-packages/attrs/setters.py +3 -0
  155. package/venv/lib/python3.10/site-packages/attrs/validators.py +3 -0
  156. package/venv/lib/python3.10/site-packages/attrs-25.1.0.dist-info/INSTALLER +1 -0
  157. package/venv/lib/python3.10/site-packages/attrs-25.1.0.dist-info/METADATA +232 -0
  158. package/venv/lib/python3.10/site-packages/attrs-25.1.0.dist-info/RECORD +55 -0
  159. package/venv/lib/python3.10/site-packages/attrs-25.1.0.dist-info/WHEEL +4 -0
  160. package/venv/lib/python3.10/site-packages/attrs-25.1.0.dist-info/licenses/LICENSE +21 -0
  161. package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/INSTALLER +1 -0
  162. package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/METADATA +123 -0
  163. package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/RECORD +90 -0
  164. package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/REQUESTED +0 -0
  165. package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/WHEEL +4 -0
  166. package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/AUTHORS +49 -0
  167. package/venv/lib/python3.10/site-packages/beautifulsoup4-4.13.3.dist-info/licenses/LICENSE +31 -0
  168. package/venv/lib/python3.10/site-packages/bs4/__init__.py +1170 -0
  169. package/venv/lib/python3.10/site-packages/bs4/_deprecation.py +80 -0
  170. package/venv/lib/python3.10/site-packages/bs4/_typing.py +196 -0
  171. package/venv/lib/python3.10/site-packages/bs4/_warnings.py +98 -0
  172. package/venv/lib/python3.10/site-packages/bs4/builder/__init__.py +848 -0
  173. package/venv/lib/python3.10/site-packages/bs4/builder/_html5lib.py +594 -0
  174. package/venv/lib/python3.10/site-packages/bs4/builder/_htmlparser.py +474 -0
  175. package/venv/lib/python3.10/site-packages/bs4/builder/_lxml.py +490 -0
  176. package/venv/lib/python3.10/site-packages/bs4/css.py +338 -0
  177. package/venv/lib/python3.10/site-packages/bs4/dammit.py +1408 -0
  178. package/venv/lib/python3.10/site-packages/bs4/diagnose.py +268 -0
  179. package/venv/lib/python3.10/site-packages/bs4/element.py +2886 -0
  180. package/venv/lib/python3.10/site-packages/bs4/exceptions.py +28 -0
  181. package/venv/lib/python3.10/site-packages/bs4/filter.py +755 -0
  182. package/venv/lib/python3.10/site-packages/bs4/formatter.py +276 -0
  183. package/venv/lib/python3.10/site-packages/bs4/py.typed +0 -0
  184. package/venv/lib/python3.10/site-packages/bs4/tests/__init__.py +1305 -0
  185. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase +1 -0
  186. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase +1 -0
  187. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase +1 -0
  188. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase +0 -0
  189. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase +0 -0
  190. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase +0 -0
  191. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase +1 -0
  192. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase +0 -0
  193. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase +2 -0
  194. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase +1 -0
  195. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase +0 -0
  196. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase +1 -0
  197. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase +1 -0
  198. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6306874195312640.testcase +1 -0
  199. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase +0 -0
  200. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase +0 -0
  201. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase +0 -0
  202. package/venv/lib/python3.10/site-packages/bs4/tests/fuzz/crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase +0 -0
  203. package/venv/lib/python3.10/site-packages/bs4/tests/test_builder.py +28 -0
  204. package/venv/lib/python3.10/site-packages/bs4/tests/test_builder_registry.py +139 -0
  205. package/venv/lib/python3.10/site-packages/bs4/tests/test_css.py +536 -0
  206. package/venv/lib/python3.10/site-packages/bs4/tests/test_dammit.py +433 -0
  207. package/venv/lib/python3.10/site-packages/bs4/tests/test_element.py +138 -0
  208. package/venv/lib/python3.10/site-packages/bs4/tests/test_filter.py +674 -0
  209. package/venv/lib/python3.10/site-packages/bs4/tests/test_formatter.py +170 -0
  210. package/venv/lib/python3.10/site-packages/bs4/tests/test_fuzz.py +181 -0
  211. package/venv/lib/python3.10/site-packages/bs4/tests/test_html5lib.py +264 -0
  212. package/venv/lib/python3.10/site-packages/bs4/tests/test_htmlparser.py +161 -0
  213. package/venv/lib/python3.10/site-packages/bs4/tests/test_lxml.py +196 -0
  214. package/venv/lib/python3.10/site-packages/bs4/tests/test_navigablestring.py +144 -0
  215. package/venv/lib/python3.10/site-packages/bs4/tests/test_pageelement.py +437 -0
  216. package/venv/lib/python3.10/site-packages/bs4/tests/test_soup.py +602 -0
  217. package/venv/lib/python3.10/site-packages/bs4/tests/test_tag.py +241 -0
  218. package/venv/lib/python3.10/site-packages/bs4/tests/test_tree.py +1452 -0
  219. package/venv/lib/python3.10/site-packages/cachetools/__init__.py +859 -0
  220. package/venv/lib/python3.10/site-packages/cachetools/func.py +121 -0
  221. package/venv/lib/python3.10/site-packages/cachetools/keys.py +62 -0
  222. package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/INSTALLER +1 -0
  223. package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/LICENSE +20 -0
  224. package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/METADATA +151 -0
  225. package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/RECORD +13 -0
  226. package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/REQUESTED +0 -0
  227. package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/WHEEL +5 -0
  228. package/venv/lib/python3.10/site-packages/cachetools-5.5.1.dist-info/top_level.txt +1 -0
  229. package/venv/lib/python3.10/site-packages/certifi/__init__.py +4 -0
  230. package/venv/lib/python3.10/site-packages/certifi/__main__.py +12 -0
  231. package/venv/lib/python3.10/site-packages/certifi/cacert.pem +4897 -0
  232. package/venv/lib/python3.10/site-packages/certifi/core.py +114 -0
  233. package/venv/lib/python3.10/site-packages/certifi/py.typed +0 -0
  234. package/venv/lib/python3.10/site-packages/certifi-2025.1.31.dist-info/INSTALLER +1 -0
  235. package/venv/lib/python3.10/site-packages/certifi-2025.1.31.dist-info/LICENSE +20 -0
  236. package/venv/lib/python3.10/site-packages/certifi-2025.1.31.dist-info/METADATA +77 -0
  237. package/venv/lib/python3.10/site-packages/certifi-2025.1.31.dist-info/RECORD +14 -0
  238. package/venv/lib/python3.10/site-packages/certifi-2025.1.31.dist-info/WHEEL +5 -0
  239. package/venv/lib/python3.10/site-packages/certifi-2025.1.31.dist-info/top_level.txt +1 -0
  240. package/venv/lib/python3.10/site-packages/cffi/__init__.py +14 -0
  241. package/venv/lib/python3.10/site-packages/cffi/_cffi_errors.h +149 -0
  242. package/venv/lib/python3.10/site-packages/cffi/_cffi_include.h +389 -0
  243. package/venv/lib/python3.10/site-packages/cffi/_embedding.h +550 -0
  244. package/venv/lib/python3.10/site-packages/cffi/_imp_emulation.py +83 -0
  245. package/venv/lib/python3.10/site-packages/cffi/_shimmed_dist_utils.py +45 -0
  246. package/venv/lib/python3.10/site-packages/cffi/api.py +967 -0
  247. package/venv/lib/python3.10/site-packages/cffi/backend_ctypes.py +1121 -0
  248. package/venv/lib/python3.10/site-packages/cffi/cffi_opcode.py +187 -0
  249. package/venv/lib/python3.10/site-packages/cffi/commontypes.py +82 -0
  250. package/venv/lib/python3.10/site-packages/cffi/cparser.py +1015 -0
  251. package/venv/lib/python3.10/site-packages/cffi/error.py +31 -0
  252. package/venv/lib/python3.10/site-packages/cffi/ffiplatform.py +113 -0
  253. package/venv/lib/python3.10/site-packages/cffi/lock.py +30 -0
  254. package/venv/lib/python3.10/site-packages/cffi/model.py +618 -0
  255. package/venv/lib/python3.10/site-packages/cffi/parse_c_type.h +181 -0
  256. package/venv/lib/python3.10/site-packages/cffi/pkgconfig.py +121 -0
  257. package/venv/lib/python3.10/site-packages/cffi/recompiler.py +1598 -0
  258. package/venv/lib/python3.10/site-packages/cffi/setuptools_ext.py +216 -0
  259. package/venv/lib/python3.10/site-packages/cffi/vengine_cpy.py +1084 -0
  260. package/venv/lib/python3.10/site-packages/cffi/vengine_gen.py +679 -0
  261. package/venv/lib/python3.10/site-packages/cffi/verifier.py +306 -0
  262. package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/INSTALLER +1 -0
  263. package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/LICENSE +26 -0
  264. package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/METADATA +40 -0
  265. package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/RECORD +48 -0
  266. package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/WHEEL +6 -0
  267. package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/entry_points.txt +2 -0
  268. package/venv/lib/python3.10/site-packages/cffi-1.17.1.dist-info/top_level.txt +2 -0
  269. package/venv/lib/python3.10/site-packages/charset_normalizer/__init__.py +48 -0
  270. package/venv/lib/python3.10/site-packages/charset_normalizer/__main__.py +6 -0
  271. package/venv/lib/python3.10/site-packages/charset_normalizer/api.py +668 -0
  272. package/venv/lib/python3.10/site-packages/charset_normalizer/cd.py +395 -0
  273. package/venv/lib/python3.10/site-packages/charset_normalizer/cli/__init__.py +8 -0
  274. package/venv/lib/python3.10/site-packages/charset_normalizer/cli/__main__.py +321 -0
  275. package/venv/lib/python3.10/site-packages/charset_normalizer/constant.py +1998 -0
  276. package/venv/lib/python3.10/site-packages/charset_normalizer/legacy.py +66 -0
  277. package/venv/lib/python3.10/site-packages/charset_normalizer/md.cpython-310-x86_64-linux-gnu.so +0 -0
  278. package/venv/lib/python3.10/site-packages/charset_normalizer/md.py +630 -0
  279. package/venv/lib/python3.10/site-packages/charset_normalizer/md__mypyc.cpython-310-x86_64-linux-gnu.so +0 -0
  280. package/venv/lib/python3.10/site-packages/charset_normalizer/models.py +360 -0
  281. package/venv/lib/python3.10/site-packages/charset_normalizer/py.typed +0 -0
  282. package/venv/lib/python3.10/site-packages/charset_normalizer/utils.py +408 -0
  283. package/venv/lib/python3.10/site-packages/charset_normalizer/version.py +8 -0
  284. package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/INSTALLER +1 -0
  285. package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/LICENSE +21 -0
  286. package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/METADATA +721 -0
  287. package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/RECORD +35 -0
  288. package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/WHEEL +6 -0
  289. package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/entry_points.txt +2 -0
  290. package/venv/lib/python3.10/site-packages/charset_normalizer-3.4.1.dist-info/top_level.txt +1 -0
  291. package/venv/lib/python3.10/site-packages/cloudscraper/__init__.py +407 -0
  292. package/venv/lib/python3.10/site-packages/cloudscraper/captcha/2captcha.py +258 -0
  293. package/venv/lib/python3.10/site-packages/cloudscraper/captcha/9kw.py +214 -0
  294. package/venv/lib/python3.10/site-packages/cloudscraper/captcha/__init__.py +47 -0
  295. package/venv/lib/python3.10/site-packages/cloudscraper/captcha/anticaptcha.py +199 -0
  296. package/venv/lib/python3.10/site-packages/cloudscraper/captcha/capmonster.py +199 -0
  297. package/venv/lib/python3.10/site-packages/cloudscraper/captcha/capsolver.py +188 -0
  298. package/venv/lib/python3.10/site-packages/cloudscraper/captcha/deathbycaptcha.py +276 -0
  299. package/venv/lib/python3.10/site-packages/cloudscraper/cloudflare.py +490 -0
  300. package/venv/lib/python3.10/site-packages/cloudscraper/exceptions.py +111 -0
  301. package/venv/lib/python3.10/site-packages/cloudscraper/help.py +72 -0
  302. package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/__init__.py +56 -0
  303. package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/chakracore.py +103 -0
  304. package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/encapsulated.py +62 -0
  305. package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/js2py.py +44 -0
  306. package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/jsunfuck.py +97 -0
  307. package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/native.py +233 -0
  308. package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/nodejs.py +49 -0
  309. package/venv/lib/python3.10/site-packages/cloudscraper/interpreters/v8.py +33 -0
  310. package/venv/lib/python3.10/site-packages/cloudscraper/user_agent/__init__.py +124 -0
  311. package/venv/lib/python3.10/site-packages/cloudscraper/user_agent/browsers.json +7913 -0
  312. package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/INSTALLER +1 -0
  313. package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/LICENSE +22 -0
  314. package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/METADATA +674 -0
  315. package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/RECORD +48 -0
  316. package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/REQUESTED +0 -0
  317. package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/WHEEL +6 -0
  318. package/venv/lib/python3.10/site-packages/cloudscraper-1.2.71.dist-info/top_level.txt +1 -0
  319. package/venv/lib/python3.10/site-packages/curl_cffi/__init__.py +37 -0
  320. package/venv/lib/python3.10/site-packages/curl_cffi/__version__.py +8 -0
  321. package/venv/lib/python3.10/site-packages/curl_cffi/_asyncio_selector.py +344 -0
  322. package/venv/lib/python3.10/site-packages/curl_cffi/_wrapper.abi3.so +0 -0
  323. package/venv/lib/python3.10/site-packages/curl_cffi/aio.py +257 -0
  324. package/venv/lib/python3.10/site-packages/curl_cffi/const.py +581 -0
  325. package/venv/lib/python3.10/site-packages/curl_cffi/curl.py +548 -0
  326. package/venv/lib/python3.10/site-packages/curl_cffi/py.typed +1 -0
  327. package/venv/lib/python3.10/site-packages/curl_cffi/requests/__init__.py +146 -0
  328. package/venv/lib/python3.10/site-packages/curl_cffi/requests/cookies.py +355 -0
  329. package/venv/lib/python3.10/site-packages/curl_cffi/requests/errors.py +7 -0
  330. package/venv/lib/python3.10/site-packages/curl_cffi/requests/exceptions.py +219 -0
  331. package/venv/lib/python3.10/site-packages/curl_cffi/requests/headers.py +348 -0
  332. package/venv/lib/python3.10/site-packages/curl_cffi/requests/impersonate.py +360 -0
  333. package/venv/lib/python3.10/site-packages/curl_cffi/requests/models.py +292 -0
  334. package/venv/lib/python3.10/site-packages/curl_cffi/requests/session.py +1021 -0
  335. package/venv/lib/python3.10/site-packages/curl_cffi/requests/utils.py +663 -0
  336. package/venv/lib/python3.10/site-packages/curl_cffi/requests/websockets.py +711 -0
  337. package/venv/lib/python3.10/site-packages/curl_cffi/utils.py +13 -0
  338. package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/INSTALLER +1 -0
  339. package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/LICENSE +21 -0
  340. package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/METADATA +333 -0
  341. package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/RECORD +43 -0
  342. package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/REQUESTED +0 -0
  343. package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/WHEEL +6 -0
  344. package/venv/lib/python3.10/site-packages/curl_cffi-0.9.0.dist-info/top_level.txt +1 -0
  345. package/venv/lib/python3.10/site-packages/distutils-precedence.pth +1 -0
  346. package/venv/lib/python3.10/site-packages/frozenlist/__init__.py +98 -0
  347. package/venv/lib/python3.10/site-packages/frozenlist/__init__.pyi +47 -0
  348. package/venv/lib/python3.10/site-packages/frozenlist/_frozenlist.cpython-310-x86_64-linux-gnu.so +0 -0
  349. package/venv/lib/python3.10/site-packages/frozenlist/_frozenlist.pyx +123 -0
  350. package/venv/lib/python3.10/site-packages/frozenlist/py.typed +1 -0
  351. package/venv/lib/python3.10/site-packages/frozenlist-1.5.0.dist-info/INSTALLER +1 -0
  352. package/venv/lib/python3.10/site-packages/frozenlist-1.5.0.dist-info/LICENSE +201 -0
  353. package/venv/lib/python3.10/site-packages/frozenlist-1.5.0.dist-info/METADATA +477 -0
  354. package/venv/lib/python3.10/site-packages/frozenlist-1.5.0.dist-info/RECORD +12 -0
  355. package/venv/lib/python3.10/site-packages/frozenlist-1.5.0.dist-info/WHEEL +8 -0
  356. package/venv/lib/python3.10/site-packages/frozenlist-1.5.0.dist-info/top_level.txt +1 -0
  357. package/venv/lib/python3.10/site-packages/idna/__init__.py +45 -0
  358. package/venv/lib/python3.10/site-packages/idna/codec.py +122 -0
  359. package/venv/lib/python3.10/site-packages/idna/compat.py +15 -0
  360. package/venv/lib/python3.10/site-packages/idna/core.py +437 -0
  361. package/venv/lib/python3.10/site-packages/idna/idnadata.py +4243 -0
  362. package/venv/lib/python3.10/site-packages/idna/intranges.py +57 -0
  363. package/venv/lib/python3.10/site-packages/idna/package_data.py +1 -0
  364. package/venv/lib/python3.10/site-packages/idna/py.typed +0 -0
  365. package/venv/lib/python3.10/site-packages/idna/uts46data.py +8681 -0
  366. package/venv/lib/python3.10/site-packages/idna-3.10.dist-info/INSTALLER +1 -0
  367. package/venv/lib/python3.10/site-packages/idna-3.10.dist-info/LICENSE.md +31 -0
  368. package/venv/lib/python3.10/site-packages/idna-3.10.dist-info/METADATA +250 -0
  369. package/venv/lib/python3.10/site-packages/idna-3.10.dist-info/RECORD +22 -0
  370. package/venv/lib/python3.10/site-packages/idna-3.10.dist-info/WHEEL +4 -0
  371. package/venv/lib/python3.10/site-packages/multidict/__init__.py +48 -0
  372. package/venv/lib/python3.10/site-packages/multidict/__init__.pyi +152 -0
  373. package/venv/lib/python3.10/site-packages/multidict/_abc.py +48 -0
  374. package/venv/lib/python3.10/site-packages/multidict/_compat.py +14 -0
  375. package/venv/lib/python3.10/site-packages/multidict/_multidict.cpython-310-x86_64-linux-gnu.so +0 -0
  376. package/venv/lib/python3.10/site-packages/multidict/_multidict_base.py +152 -0
  377. package/venv/lib/python3.10/site-packages/multidict/_multidict_py.py +527 -0
  378. package/venv/lib/python3.10/site-packages/multidict/py.typed +1 -0
  379. package/venv/lib/python3.10/site-packages/multidict-6.1.0.dist-info/INSTALLER +1 -0
  380. package/venv/lib/python3.10/site-packages/multidict-6.1.0.dist-info/LICENSE +13 -0
  381. package/venv/lib/python3.10/site-packages/multidict-6.1.0.dist-info/METADATA +140 -0
  382. package/venv/lib/python3.10/site-packages/multidict-6.1.0.dist-info/RECORD +19 -0
  383. package/venv/lib/python3.10/site-packages/multidict-6.1.0.dist-info/WHEEL +6 -0
  384. package/venv/lib/python3.10/site-packages/multidict-6.1.0.dist-info/top_level.txt +1 -0
  385. package/venv/lib/python3.10/site-packages/paho/__init__.py +0 -0
  386. package/venv/lib/python3.10/site-packages/paho/mqtt/__init__.py +5 -0
  387. package/venv/lib/python3.10/site-packages/paho/mqtt/client.py +5004 -0
  388. package/venv/lib/python3.10/site-packages/paho/mqtt/enums.py +113 -0
  389. package/venv/lib/python3.10/site-packages/paho/mqtt/matcher.py +78 -0
  390. package/venv/lib/python3.10/site-packages/paho/mqtt/packettypes.py +43 -0
  391. package/venv/lib/python3.10/site-packages/paho/mqtt/properties.py +421 -0
  392. package/venv/lib/python3.10/site-packages/paho/mqtt/publish.py +306 -0
  393. package/venv/lib/python3.10/site-packages/paho/mqtt/py.typed +0 -0
  394. package/venv/lib/python3.10/site-packages/paho/mqtt/reasoncodes.py +223 -0
  395. package/venv/lib/python3.10/site-packages/paho/mqtt/subscribe.py +281 -0
  396. package/venv/lib/python3.10/site-packages/paho/mqtt/subscribeoptions.py +113 -0
  397. package/venv/lib/python3.10/site-packages/paho_mqtt-2.1.0.dist-info/INSTALLER +1 -0
  398. package/venv/lib/python3.10/site-packages/paho_mqtt-2.1.0.dist-info/METADATA +635 -0
  399. package/venv/lib/python3.10/site-packages/paho_mqtt-2.1.0.dist-info/RECORD +29 -0
  400. package/venv/lib/python3.10/site-packages/paho_mqtt-2.1.0.dist-info/REQUESTED +0 -0
  401. package/venv/lib/python3.10/site-packages/paho_mqtt-2.1.0.dist-info/WHEEL +4 -0
  402. package/venv/lib/python3.10/site-packages/paho_mqtt-2.1.0.dist-info/licenses/LICENSE.txt +3 -0
  403. package/venv/lib/python3.10/site-packages/pip/__init__.py +13 -0
  404. package/venv/lib/python3.10/site-packages/pip/__main__.py +31 -0
  405. package/venv/lib/python3.10/site-packages/pip/_internal/__init__.py +19 -0
  406. package/venv/lib/python3.10/site-packages/pip/_internal/build_env.py +296 -0
  407. package/venv/lib/python3.10/site-packages/pip/_internal/cache.py +264 -0
  408. package/venv/lib/python3.10/site-packages/pip/_internal/cli/__init__.py +4 -0
  409. package/venv/lib/python3.10/site-packages/pip/_internal/cli/autocompletion.py +171 -0
  410. package/venv/lib/python3.10/site-packages/pip/_internal/cli/base_command.py +220 -0
  411. package/venv/lib/python3.10/site-packages/pip/_internal/cli/cmdoptions.py +1018 -0
  412. package/venv/lib/python3.10/site-packages/pip/_internal/cli/command_context.py +27 -0
  413. package/venv/lib/python3.10/site-packages/pip/_internal/cli/main.py +70 -0
  414. package/venv/lib/python3.10/site-packages/pip/_internal/cli/main_parser.py +87 -0
  415. package/venv/lib/python3.10/site-packages/pip/_internal/cli/parser.py +292 -0
  416. package/venv/lib/python3.10/site-packages/pip/_internal/cli/progress_bars.py +321 -0
  417. package/venv/lib/python3.10/site-packages/pip/_internal/cli/req_command.py +506 -0
  418. package/venv/lib/python3.10/site-packages/pip/_internal/cli/spinners.py +157 -0
  419. package/venv/lib/python3.10/site-packages/pip/_internal/cli/status_codes.py +6 -0
  420. package/venv/lib/python3.10/site-packages/pip/_internal/commands/__init__.py +127 -0
  421. package/venv/lib/python3.10/site-packages/pip/_internal/commands/cache.py +223 -0
  422. package/venv/lib/python3.10/site-packages/pip/_internal/commands/check.py +53 -0
  423. package/venv/lib/python3.10/site-packages/pip/_internal/commands/completion.py +96 -0
  424. package/venv/lib/python3.10/site-packages/pip/_internal/commands/configuration.py +266 -0
  425. package/venv/lib/python3.10/site-packages/pip/_internal/commands/debug.py +202 -0
  426. package/venv/lib/python3.10/site-packages/pip/_internal/commands/download.py +140 -0
  427. package/venv/lib/python3.10/site-packages/pip/_internal/commands/freeze.py +97 -0
  428. package/venv/lib/python3.10/site-packages/pip/_internal/commands/hash.py +59 -0
  429. package/venv/lib/python3.10/site-packages/pip/_internal/commands/help.py +41 -0
  430. package/venv/lib/python3.10/site-packages/pip/_internal/commands/index.py +139 -0
  431. package/venv/lib/python3.10/site-packages/pip/_internal/commands/install.py +771 -0
  432. package/venv/lib/python3.10/site-packages/pip/_internal/commands/list.py +363 -0
  433. package/venv/lib/python3.10/site-packages/pip/_internal/commands/search.py +174 -0
  434. package/venv/lib/python3.10/site-packages/pip/_internal/commands/show.py +178 -0
  435. package/venv/lib/python3.10/site-packages/pip/_internal/commands/uninstall.py +105 -0
  436. package/venv/lib/python3.10/site-packages/pip/_internal/commands/wheel.py +178 -0
  437. package/venv/lib/python3.10/site-packages/pip/_internal/configuration.py +366 -0
  438. package/venv/lib/python3.10/site-packages/pip/_internal/distributions/__init__.py +21 -0
  439. package/venv/lib/python3.10/site-packages/pip/_internal/distributions/base.py +36 -0
  440. package/venv/lib/python3.10/site-packages/pip/_internal/distributions/installed.py +20 -0
  441. package/venv/lib/python3.10/site-packages/pip/_internal/distributions/sdist.py +127 -0
  442. package/venv/lib/python3.10/site-packages/pip/_internal/distributions/wheel.py +31 -0
  443. package/venv/lib/python3.10/site-packages/pip/_internal/exceptions.py +658 -0
  444. package/venv/lib/python3.10/site-packages/pip/_internal/index/__init__.py +2 -0
  445. package/venv/lib/python3.10/site-packages/pip/_internal/index/collector.py +648 -0
  446. package/venv/lib/python3.10/site-packages/pip/_internal/index/package_finder.py +1004 -0
  447. package/venv/lib/python3.10/site-packages/pip/_internal/index/sources.py +224 -0
  448. package/venv/lib/python3.10/site-packages/pip/_internal/locations/__init__.py +520 -0
  449. package/venv/lib/python3.10/site-packages/pip/_internal/locations/_distutils.py +169 -0
  450. package/venv/lib/python3.10/site-packages/pip/_internal/locations/_sysconfig.py +219 -0
  451. package/venv/lib/python3.10/site-packages/pip/_internal/locations/base.py +52 -0
  452. package/venv/lib/python3.10/site-packages/pip/_internal/main.py +12 -0
  453. package/venv/lib/python3.10/site-packages/pip/_internal/metadata/__init__.py +62 -0
  454. package/venv/lib/python3.10/site-packages/pip/_internal/metadata/base.py +546 -0
  455. package/venv/lib/python3.10/site-packages/pip/_internal/metadata/pkg_resources.py +256 -0
  456. package/venv/lib/python3.10/site-packages/pip/_internal/models/__init__.py +2 -0
  457. package/venv/lib/python3.10/site-packages/pip/_internal/models/candidate.py +34 -0
  458. package/venv/lib/python3.10/site-packages/pip/_internal/models/direct_url.py +220 -0
  459. package/venv/lib/python3.10/site-packages/pip/_internal/models/format_control.py +80 -0
  460. package/venv/lib/python3.10/site-packages/pip/_internal/models/index.py +28 -0
  461. package/venv/lib/python3.10/site-packages/pip/_internal/models/link.py +288 -0
  462. package/venv/lib/python3.10/site-packages/pip/_internal/models/scheme.py +31 -0
  463. package/venv/lib/python3.10/site-packages/pip/_internal/models/search_scope.py +129 -0
  464. package/venv/lib/python3.10/site-packages/pip/_internal/models/selection_prefs.py +51 -0
  465. package/venv/lib/python3.10/site-packages/pip/_internal/models/target_python.py +110 -0
  466. package/venv/lib/python3.10/site-packages/pip/_internal/models/wheel.py +89 -0
  467. package/venv/lib/python3.10/site-packages/pip/_internal/network/__init__.py +2 -0
  468. package/venv/lib/python3.10/site-packages/pip/_internal/network/auth.py +323 -0
  469. package/venv/lib/python3.10/site-packages/pip/_internal/network/cache.py +69 -0
  470. package/venv/lib/python3.10/site-packages/pip/_internal/network/download.py +185 -0
  471. package/venv/lib/python3.10/site-packages/pip/_internal/network/lazy_wheel.py +210 -0
  472. package/venv/lib/python3.10/site-packages/pip/_internal/network/session.py +454 -0
  473. package/venv/lib/python3.10/site-packages/pip/_internal/network/utils.py +96 -0
  474. package/venv/lib/python3.10/site-packages/pip/_internal/network/xmlrpc.py +60 -0
  475. package/venv/lib/python3.10/site-packages/pip/_internal/operations/__init__.py +0 -0
  476. package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  477. package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata.py +39 -0
  478. package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_editable.py +41 -0
  479. package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_legacy.py +74 -0
  480. package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel.py +37 -0
  481. package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_editable.py +46 -0
  482. package/venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_legacy.py +102 -0
  483. package/venv/lib/python3.10/site-packages/pip/_internal/operations/check.py +149 -0
  484. package/venv/lib/python3.10/site-packages/pip/_internal/operations/freeze.py +254 -0
  485. package/venv/lib/python3.10/site-packages/pip/_internal/operations/install/__init__.py +2 -0
  486. package/venv/lib/python3.10/site-packages/pip/_internal/operations/install/editable_legacy.py +47 -0
  487. package/venv/lib/python3.10/site-packages/pip/_internal/operations/install/legacy.py +120 -0
  488. package/venv/lib/python3.10/site-packages/pip/_internal/operations/install/wheel.py +738 -0
  489. package/venv/lib/python3.10/site-packages/pip/_internal/operations/prepare.py +642 -0
  490. package/venv/lib/python3.10/site-packages/pip/_internal/pyproject.py +168 -0
  491. package/venv/lib/python3.10/site-packages/pip/_internal/req/__init__.py +94 -0
  492. package/venv/lib/python3.10/site-packages/pip/_internal/req/constructors.py +490 -0
  493. package/venv/lib/python3.10/site-packages/pip/_internal/req/req_file.py +536 -0
  494. package/venv/lib/python3.10/site-packages/pip/_internal/req/req_install.py +858 -0
  495. package/venv/lib/python3.10/site-packages/pip/_internal/req/req_set.py +189 -0
  496. package/venv/lib/python3.10/site-packages/pip/_internal/req/req_tracker.py +124 -0
  497. package/venv/lib/python3.10/site-packages/pip/_internal/req/req_uninstall.py +633 -0
  498. package/venv/lib/python3.10/site-packages/pip/_internal/resolution/__init__.py +0 -0
  499. package/venv/lib/python3.10/site-packages/pip/_internal/resolution/base.py +20 -0
  500. package/venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  501. package/venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/resolver.py +467 -0
  502. package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  503. package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/base.py +141 -0
  504. package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py +547 -0
  505. package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py +739 -0
  506. package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +155 -0
  507. package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/provider.py +248 -0
  508. package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/reporter.py +68 -0
  509. package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/requirements.py +166 -0
  510. package/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py +292 -0
  511. package/venv/lib/python3.10/site-packages/pip/_internal/self_outdated_check.py +189 -0
  512. package/venv/lib/python3.10/site-packages/pip/_internal/utils/__init__.py +0 -0
  513. package/venv/lib/python3.10/site-packages/pip/_internal/utils/_log.py +38 -0
  514. package/venv/lib/python3.10/site-packages/pip/_internal/utils/appdirs.py +52 -0
  515. package/venv/lib/python3.10/site-packages/pip/_internal/utils/compat.py +63 -0
  516. package/venv/lib/python3.10/site-packages/pip/_internal/utils/compatibility_tags.py +165 -0
  517. package/venv/lib/python3.10/site-packages/pip/_internal/utils/datetime.py +11 -0
  518. package/venv/lib/python3.10/site-packages/pip/_internal/utils/deprecation.py +120 -0
  519. package/venv/lib/python3.10/site-packages/pip/_internal/utils/direct_url_helpers.py +87 -0
  520. package/venv/lib/python3.10/site-packages/pip/_internal/utils/distutils_args.py +42 -0
  521. package/venv/lib/python3.10/site-packages/pip/_internal/utils/egg_link.py +75 -0
  522. package/venv/lib/python3.10/site-packages/pip/_internal/utils/encoding.py +36 -0
  523. package/venv/lib/python3.10/site-packages/pip/_internal/utils/entrypoints.py +27 -0
  524. package/venv/lib/python3.10/site-packages/pip/_internal/utils/filesystem.py +182 -0
  525. package/venv/lib/python3.10/site-packages/pip/_internal/utils/filetypes.py +27 -0
  526. package/venv/lib/python3.10/site-packages/pip/_internal/utils/glibc.py +88 -0
  527. package/venv/lib/python3.10/site-packages/pip/_internal/utils/hashes.py +144 -0
  528. package/venv/lib/python3.10/site-packages/pip/_internal/utils/inject_securetransport.py +35 -0
  529. package/venv/lib/python3.10/site-packages/pip/_internal/utils/logging.py +343 -0
  530. package/venv/lib/python3.10/site-packages/pip/_internal/utils/misc.py +653 -0
  531. package/venv/lib/python3.10/site-packages/pip/_internal/utils/models.py +39 -0
  532. package/venv/lib/python3.10/site-packages/pip/_internal/utils/packaging.py +57 -0
  533. package/venv/lib/python3.10/site-packages/pip/_internal/utils/setuptools_build.py +195 -0
  534. package/venv/lib/python3.10/site-packages/pip/_internal/utils/subprocess.py +260 -0
  535. package/venv/lib/python3.10/site-packages/pip/_internal/utils/temp_dir.py +246 -0
  536. package/venv/lib/python3.10/site-packages/pip/_internal/utils/unpacking.py +258 -0
  537. package/venv/lib/python3.10/site-packages/pip/_internal/utils/urls.py +62 -0
  538. package/venv/lib/python3.10/site-packages/pip/_internal/utils/virtualenv.py +104 -0
  539. package/venv/lib/python3.10/site-packages/pip/_internal/utils/wheel.py +136 -0
  540. package/venv/lib/python3.10/site-packages/pip/_internal/vcs/__init__.py +15 -0
  541. package/venv/lib/python3.10/site-packages/pip/_internal/vcs/bazaar.py +101 -0
  542. package/venv/lib/python3.10/site-packages/pip/_internal/vcs/git.py +526 -0
  543. package/venv/lib/python3.10/site-packages/pip/_internal/vcs/mercurial.py +163 -0
  544. package/venv/lib/python3.10/site-packages/pip/_internal/vcs/subversion.py +324 -0
  545. package/venv/lib/python3.10/site-packages/pip/_internal/vcs/versioncontrol.py +705 -0
  546. package/venv/lib/python3.10/site-packages/pip/_internal/wheel_builder.py +377 -0
  547. package/venv/lib/python3.10/site-packages/pip/_vendor/__init__.py +111 -0
  548. package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__init__.py +18 -0
  549. package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/_cmd.py +61 -0
  550. package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/adapter.py +137 -0
  551. package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/cache.py +43 -0
  552. package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +6 -0
  553. package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +150 -0
  554. package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +37 -0
  555. package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/compat.py +32 -0
  556. package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/controller.py +415 -0
  557. package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/filewrapper.py +111 -0
  558. package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/heuristics.py +139 -0
  559. package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/serialize.py +186 -0
  560. package/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/wrapper.py +33 -0
  561. package/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__init__.py +3 -0
  562. package/venv/lib/python3.10/site-packages/pip/_vendor/certifi/__main__.py +12 -0
  563. package/venv/lib/python3.10/site-packages/pip/_vendor/certifi/cacert.pem +4362 -0
  564. package/venv/lib/python3.10/site-packages/pip/_vendor/certifi/core.py +76 -0
  565. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/__init__.py +83 -0
  566. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/big5freq.py +386 -0
  567. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/big5prober.py +47 -0
  568. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/chardistribution.py +233 -0
  569. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetgroupprober.py +107 -0
  570. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetprober.py +145 -0
  571. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__init__.py +1 -0
  572. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/chardetect.py +84 -0
  573. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachine.py +88 -0
  574. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/compat.py +36 -0
  575. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/cp949prober.py +49 -0
  576. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/enums.py +76 -0
  577. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/escprober.py +101 -0
  578. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/escsm.py +246 -0
  579. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/eucjpprober.py +92 -0
  580. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrfreq.py +195 -0
  581. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrprober.py +47 -0
  582. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwfreq.py +387 -0
  583. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwprober.py +46 -0
  584. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312freq.py +283 -0
  585. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312prober.py +46 -0
  586. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/hebrewprober.py +292 -0
  587. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/jisfreq.py +325 -0
  588. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/jpcntx.py +233 -0
  589. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langbulgarianmodel.py +4650 -0
  590. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langgreekmodel.py +4398 -0
  591. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhebrewmodel.py +4383 -0
  592. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhungarianmodel.py +4650 -0
  593. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langrussianmodel.py +5718 -0
  594. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langthaimodel.py +4383 -0
  595. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/langturkishmodel.py +4383 -0
  596. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/latin1prober.py +145 -0
  597. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcharsetprober.py +91 -0
  598. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcsgroupprober.py +54 -0
  599. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcssm.py +572 -0
  600. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__init__.py +0 -0
  601. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/languages.py +310 -0
  602. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcharsetprober.py +145 -0
  603. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcsgroupprober.py +83 -0
  604. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/sjisprober.py +92 -0
  605. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/universaldetector.py +286 -0
  606. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf8prober.py +82 -0
  607. package/venv/lib/python3.10/site-packages/pip/_vendor/chardet/version.py +9 -0
  608. package/venv/lib/python3.10/site-packages/pip/_vendor/colorama/__init__.py +6 -0
  609. package/venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansi.py +102 -0
  610. package/venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansitowin32.py +258 -0
  611. package/venv/lib/python3.10/site-packages/pip/_vendor/colorama/initialise.py +80 -0
  612. package/venv/lib/python3.10/site-packages/pip/_vendor/colorama/win32.py +152 -0
  613. package/venv/lib/python3.10/site-packages/pip/_vendor/colorama/winterm.py +169 -0
  614. package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/__init__.py +23 -0
  615. package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/compat.py +1116 -0
  616. package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/database.py +1345 -0
  617. package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/index.py +509 -0
  618. package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/locators.py +1300 -0
  619. package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/manifest.py +393 -0
  620. package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/markers.py +152 -0
  621. package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/metadata.py +1058 -0
  622. package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/resources.py +358 -0
  623. package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/scripts.py +429 -0
  624. package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/util.py +1932 -0
  625. package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/version.py +739 -0
  626. package/venv/lib/python3.10/site-packages/pip/_vendor/distlib/wheel.py +1053 -0
  627. package/venv/lib/python3.10/site-packages/pip/_vendor/distro.py +1386 -0
  628. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/__init__.py +35 -0
  629. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_ihatexml.py +289 -0
  630. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_inputstream.py +918 -0
  631. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_tokenizer.py +1735 -0
  632. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_trie/__init__.py +5 -0
  633. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_trie/_base.py +40 -0
  634. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_trie/py.py +67 -0
  635. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/_utils.py +159 -0
  636. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/constants.py +2946 -0
  637. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/__init__.py +0 -0
  638. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py +29 -0
  639. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/base.py +12 -0
  640. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py +73 -0
  641. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/lint.py +93 -0
  642. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/optionaltags.py +207 -0
  643. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/sanitizer.py +916 -0
  644. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/filters/whitespace.py +38 -0
  645. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/html5parser.py +2795 -0
  646. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/serializer.py +409 -0
  647. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py +30 -0
  648. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py +54 -0
  649. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treeadapters/sax.py +50 -0
  650. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py +88 -0
  651. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/base.py +417 -0
  652. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/dom.py +239 -0
  653. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/etree.py +343 -0
  654. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py +392 -0
  655. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py +154 -0
  656. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treewalkers/base.py +252 -0
  657. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treewalkers/dom.py +43 -0
  658. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treewalkers/etree.py +131 -0
  659. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py +215 -0
  660. package/venv/lib/python3.10/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py +69 -0
  661. package/venv/lib/python3.10/site-packages/pip/_vendor/idna/__init__.py +44 -0
  662. package/venv/lib/python3.10/site-packages/pip/_vendor/idna/codec.py +112 -0
  663. package/venv/lib/python3.10/site-packages/pip/_vendor/idna/compat.py +13 -0
  664. package/venv/lib/python3.10/site-packages/pip/_vendor/idna/core.py +397 -0
  665. package/venv/lib/python3.10/site-packages/pip/_vendor/idna/idnadata.py +2137 -0
  666. package/venv/lib/python3.10/site-packages/pip/_vendor/idna/intranges.py +54 -0
  667. package/venv/lib/python3.10/site-packages/pip/_vendor/idna/package_data.py +2 -0
  668. package/venv/lib/python3.10/site-packages/pip/_vendor/idna/uts46data.py +8512 -0
  669. package/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__init__.py +54 -0
  670. package/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/_version.py +1 -0
  671. package/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
  672. package/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/ext.py +193 -0
  673. package/venv/lib/python3.10/site-packages/pip/_vendor/msgpack/fallback.py +1012 -0
  674. package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__about__.py +26 -0
  675. package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/__init__.py +25 -0
  676. package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_manylinux.py +301 -0
  677. package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_musllinux.py +136 -0
  678. package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/_structures.py +61 -0
  679. package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/markers.py +304 -0
  680. package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/requirements.py +146 -0
  681. package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/specifiers.py +802 -0
  682. package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/tags.py +487 -0
  683. package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/utils.py +136 -0
  684. package/venv/lib/python3.10/site-packages/pip/_vendor/packaging/version.py +504 -0
  685. package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/__init__.py +6 -0
  686. package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/build.py +127 -0
  687. package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/check.py +207 -0
  688. package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/colorlog.py +115 -0
  689. package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/compat.py +51 -0
  690. package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/dirtools.py +44 -0
  691. package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/envbuild.py +171 -0
  692. package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/__init__.py +17 -0
  693. package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py +363 -0
  694. package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/meta.py +92 -0
  695. package/venv/lib/python3.10/site-packages/pip/_vendor/pep517/wrappers.py +375 -0
  696. package/venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__init__.py +3296 -0
  697. package/venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/py31compat.py +23 -0
  698. package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__init__.py +331 -0
  699. package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__main__.py +46 -0
  700. package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/android.py +119 -0
  701. package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/api.py +156 -0
  702. package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/macos.py +64 -0
  703. package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/unix.py +181 -0
  704. package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/version.py +4 -0
  705. package/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/windows.py +182 -0
  706. package/venv/lib/python3.10/site-packages/pip/_vendor/progress/__init__.py +189 -0
  707. package/venv/lib/python3.10/site-packages/pip/_vendor/progress/bar.py +93 -0
  708. package/venv/lib/python3.10/site-packages/pip/_vendor/progress/colors.py +79 -0
  709. package/venv/lib/python3.10/site-packages/pip/_vendor/progress/counter.py +47 -0
  710. package/venv/lib/python3.10/site-packages/pip/_vendor/progress/spinner.py +45 -0
  711. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__init__.py +83 -0
  712. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/__main__.py +17 -0
  713. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/cmdline.py +663 -0
  714. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/console.py +70 -0
  715. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/filter.py +71 -0
  716. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__init__.py +937 -0
  717. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatter.py +94 -0
  718. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__init__.py +153 -0
  719. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/_mapping.py +84 -0
  720. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/bbcode.py +108 -0
  721. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/groff.py +168 -0
  722. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/html.py +983 -0
  723. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/img.py +641 -0
  724. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/irc.py +179 -0
  725. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/latex.py +511 -0
  726. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/other.py +161 -0
  727. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py +83 -0
  728. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/rtf.py +146 -0
  729. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/svg.py +188 -0
  730. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal.py +127 -0
  731. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal256.py +338 -0
  732. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexer.py +879 -0
  733. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__init__.py +341 -0
  734. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/_mapping.py +580 -0
  735. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/python.py +1188 -0
  736. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/modeline.py +43 -0
  737. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/plugin.py +69 -0
  738. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/regexopt.py +91 -0
  739. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/scanner.py +104 -0
  740. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/sphinxext.py +155 -0
  741. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/style.py +197 -0
  742. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__init__.py +93 -0
  743. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/token.py +212 -0
  744. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/unistring.py +153 -0
  745. package/venv/lib/python3.10/site-packages/pip/_vendor/pygments/util.py +308 -0
  746. package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__init__.py +328 -0
  747. package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/actions.py +207 -0
  748. package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/common.py +424 -0
  749. package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/core.py +5789 -0
  750. package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/diagram/__init__.py +593 -0
  751. package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/exceptions.py +267 -0
  752. package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/helpers.py +1069 -0
  753. package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/results.py +760 -0
  754. package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/testing.py +331 -0
  755. package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/unicode.py +332 -0
  756. package/venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/util.py +235 -0
  757. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/__init__.py +154 -0
  758. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/__version__.py +14 -0
  759. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/_internal_utils.py +42 -0
  760. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/adapters.py +538 -0
  761. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/api.py +159 -0
  762. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/auth.py +305 -0
  763. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/certs.py +18 -0
  764. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/compat.py +77 -0
  765. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/cookies.py +549 -0
  766. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/exceptions.py +133 -0
  767. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/help.py +132 -0
  768. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/hooks.py +34 -0
  769. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/models.py +973 -0
  770. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/packages.py +16 -0
  771. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/sessions.py +771 -0
  772. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/status_codes.py +123 -0
  773. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/structures.py +105 -0
  774. package/venv/lib/python3.10/site-packages/pip/_vendor/requests/utils.py +1060 -0
  775. package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__init__.py +26 -0
  776. package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__init__.py +0 -0
  777. package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py +6 -0
  778. package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/providers.py +133 -0
  779. package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/reporters.py +43 -0
  780. package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py +482 -0
  781. package/venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/structs.py +165 -0
  782. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/__init__.py +172 -0
  783. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/__main__.py +280 -0
  784. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_cell_widths.py +451 -0
  785. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_emoji_codes.py +3610 -0
  786. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_emoji_replace.py +32 -0
  787. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_extension.py +10 -0
  788. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_inspect.py +210 -0
  789. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_log_render.py +94 -0
  790. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_loop.py +43 -0
  791. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_lru_cache.py +34 -0
  792. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_palettes.py +309 -0
  793. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_pick.py +17 -0
  794. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_ratio.py +160 -0
  795. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_spinners.py +848 -0
  796. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_stack.py +16 -0
  797. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_timer.py +19 -0
  798. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows.py +72 -0
  799. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/_wrap.py +55 -0
  800. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/abc.py +33 -0
  801. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/align.py +312 -0
  802. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/ansi.py +228 -0
  803. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/bar.py +94 -0
  804. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/box.py +483 -0
  805. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/cells.py +147 -0
  806. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/color.py +581 -0
  807. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/color_triplet.py +38 -0
  808. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/columns.py +187 -0
  809. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/console.py +2211 -0
  810. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/constrain.py +37 -0
  811. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/containers.py +167 -0
  812. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/control.py +175 -0
  813. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/default_styles.py +183 -0
  814. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/diagnose.py +6 -0
  815. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/emoji.py +96 -0
  816. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/errors.py +34 -0
  817. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/file_proxy.py +54 -0
  818. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/filesize.py +89 -0
  819. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/highlighter.py +147 -0
  820. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/json.py +140 -0
  821. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/jupyter.py +92 -0
  822. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/layout.py +444 -0
  823. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/live.py +365 -0
  824. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/live_render.py +113 -0
  825. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/logging.py +268 -0
  826. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/markup.py +244 -0
  827. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/measure.py +149 -0
  828. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/padding.py +141 -0
  829. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/pager.py +34 -0
  830. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/palette.py +100 -0
  831. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/panel.py +250 -0
  832. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/pretty.py +903 -0
  833. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/progress.py +1036 -0
  834. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/progress_bar.py +216 -0
  835. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/prompt.py +376 -0
  836. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/protocol.py +42 -0
  837. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/region.py +10 -0
  838. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/repr.py +151 -0
  839. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/rule.py +115 -0
  840. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/scope.py +86 -0
  841. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/screen.py +54 -0
  842. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/segment.py +720 -0
  843. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/spinner.py +134 -0
  844. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/status.py +132 -0
  845. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/style.py +785 -0
  846. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/styled.py +42 -0
  847. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/syntax.py +735 -0
  848. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/table.py +968 -0
  849. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/tabulate.py +51 -0
  850. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/terminal_theme.py +55 -0
  851. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/text.py +1282 -0
  852. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/theme.py +112 -0
  853. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/themes.py +5 -0
  854. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/traceback.py +678 -0
  855. package/venv/lib/python3.10/site-packages/pip/_vendor/rich/tree.py +249 -0
  856. package/venv/lib/python3.10/site-packages/pip/_vendor/six.py +998 -0
  857. package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__init__.py +517 -0
  858. package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/_asyncio.py +92 -0
  859. package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/_utils.py +68 -0
  860. package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/after.py +46 -0
  861. package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/before.py +41 -0
  862. package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/before_sleep.py +58 -0
  863. package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/nap.py +43 -0
  864. package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/retry.py +213 -0
  865. package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/stop.py +96 -0
  866. package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/tornadoweb.py +59 -0
  867. package/venv/lib/python3.10/site-packages/pip/_vendor/tenacity/wait.py +191 -0
  868. package/venv/lib/python3.10/site-packages/pip/_vendor/tomli/__init__.py +6 -0
  869. package/venv/lib/python3.10/site-packages/pip/_vendor/tomli/_parser.py +703 -0
  870. package/venv/lib/python3.10/site-packages/pip/_vendor/tomli/_re.py +83 -0
  871. package/venv/lib/python3.10/site-packages/pip/_vendor/typing_extensions.py +2296 -0
  872. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__init__.py +85 -0
  873. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/_collections.py +355 -0
  874. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/_version.py +2 -0
  875. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/connection.py +569 -0
  876. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/connectionpool.py +1113 -0
  877. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  878. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
  879. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  880. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
  881. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +397 -0
  882. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
  883. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +130 -0
  884. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +511 -0
  885. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +922 -0
  886. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
  887. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/exceptions.py +323 -0
  888. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/fields.py +274 -0
  889. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
  890. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
  891. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  892. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
  893. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/six.py +1077 -0
  894. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/poolmanager.py +539 -0
  895. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/request.py +170 -0
  896. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/response.py +821 -0
  897. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
  898. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/connection.py +149 -0
  899. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/proxy.py +57 -0
  900. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
  901. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/request.py +143 -0
  902. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
  903. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/retry.py +622 -0
  904. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssl_.py +495 -0
  905. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +161 -0
  906. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
  907. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/timeout.py +268 -0
  908. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/url.py +432 -0
  909. package/venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/wait.py +153 -0
  910. package/venv/lib/python3.10/site-packages/pip/_vendor/vendor.txt +25 -0
  911. package/venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__init__.py +342 -0
  912. package/venv/lib/python3.10/site-packages/pip/_vendor/webencodings/labels.py +231 -0
  913. package/venv/lib/python3.10/site-packages/pip/_vendor/webencodings/mklabels.py +59 -0
  914. package/venv/lib/python3.10/site-packages/pip/_vendor/webencodings/tests.py +153 -0
  915. package/venv/lib/python3.10/site-packages/pip/_vendor/webencodings/x_user_defined.py +325 -0
  916. package/venv/lib/python3.10/site-packages/pip/py.typed +4 -0
  917. package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/INSTALLER +1 -0
  918. package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/LICENSE.txt +20 -0
  919. package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/METADATA +92 -0
  920. package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/RECORD +1037 -0
  921. package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/REQUESTED +0 -0
  922. package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/WHEEL +5 -0
  923. package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/entry_points.txt +5 -0
  924. package/venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/top_level.txt +1 -0
  925. package/venv/lib/python3.10/site-packages/pkg_resources/__init__.py +3303 -0
  926. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/__init__.py +0 -0
  927. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/appdirs.py +608 -0
  928. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__about__.py +26 -0
  929. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__init__.py +25 -0
  930. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_manylinux.py +301 -0
  931. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_musllinux.py +136 -0
  932. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_structures.py +67 -0
  933. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/markers.py +304 -0
  934. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/requirements.py +146 -0
  935. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/specifiers.py +828 -0
  936. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/tags.py +484 -0
  937. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/utils.py +136 -0
  938. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/version.py +504 -0
  939. package/venv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing.py +5742 -0
  940. package/venv/lib/python3.10/site-packages/pkg_resources/extern/__init__.py +73 -0
  941. package/venv/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py +6 -0
  942. package/venv/lib/python3.10/site-packages/propcache/__init__.py +32 -0
  943. package/venv/lib/python3.10/site-packages/propcache/_helpers.py +39 -0
  944. package/venv/lib/python3.10/site-packages/propcache/_helpers_c.cpython-310-x86_64-linux-gnu.so +0 -0
  945. package/venv/lib/python3.10/site-packages/propcache/_helpers_c.pyx +84 -0
  946. package/venv/lib/python3.10/site-packages/propcache/_helpers_py.py +56 -0
  947. package/venv/lib/python3.10/site-packages/propcache/api.py +8 -0
  948. package/venv/lib/python3.10/site-packages/propcache/py.typed +1 -0
  949. package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/INSTALLER +1 -0
  950. package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/LICENSE +202 -0
  951. package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/METADATA +275 -0
  952. package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/NOTICE +13 -0
  953. package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/RECORD +18 -0
  954. package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/WHEEL +6 -0
  955. package/venv/lib/python3.10/site-packages/propcache-0.2.1.dist-info/top_level.txt +1 -0
  956. package/venv/lib/python3.10/site-packages/pycparser/__init__.py +93 -0
  957. package/venv/lib/python3.10/site-packages/pycparser/_ast_gen.py +336 -0
  958. package/venv/lib/python3.10/site-packages/pycparser/_build_tables.py +40 -0
  959. package/venv/lib/python3.10/site-packages/pycparser/_c_ast.cfg +195 -0
  960. package/venv/lib/python3.10/site-packages/pycparser/ast_transforms.py +164 -0
  961. package/venv/lib/python3.10/site-packages/pycparser/c_ast.py +1125 -0
  962. package/venv/lib/python3.10/site-packages/pycparser/c_generator.py +502 -0
  963. package/venv/lib/python3.10/site-packages/pycparser/c_lexer.py +555 -0
  964. package/venv/lib/python3.10/site-packages/pycparser/c_parser.py +1950 -0
  965. package/venv/lib/python3.10/site-packages/pycparser/lextab.py +10 -0
  966. package/venv/lib/python3.10/site-packages/pycparser/ply/__init__.py +5 -0
  967. package/venv/lib/python3.10/site-packages/pycparser/ply/cpp.py +905 -0
  968. package/venv/lib/python3.10/site-packages/pycparser/ply/ctokens.py +133 -0
  969. package/venv/lib/python3.10/site-packages/pycparser/ply/lex.py +1099 -0
  970. package/venv/lib/python3.10/site-packages/pycparser/ply/yacc.py +3494 -0
  971. package/venv/lib/python3.10/site-packages/pycparser/ply/ygen.py +74 -0
  972. package/venv/lib/python3.10/site-packages/pycparser/plyparser.py +133 -0
  973. package/venv/lib/python3.10/site-packages/pycparser/yacctab.py +369 -0
  974. package/venv/lib/python3.10/site-packages/pycparser-2.22.dist-info/INSTALLER +1 -0
  975. package/venv/lib/python3.10/site-packages/pycparser-2.22.dist-info/LICENSE +27 -0
  976. package/venv/lib/python3.10/site-packages/pycparser-2.22.dist-info/METADATA +28 -0
  977. package/venv/lib/python3.10/site-packages/pycparser-2.22.dist-info/RECORD +41 -0
  978. package/venv/lib/python3.10/site-packages/pycparser-2.22.dist-info/WHEEL +5 -0
  979. package/venv/lib/python3.10/site-packages/pycparser-2.22.dist-info/top_level.txt +1 -0
  980. package/venv/lib/python3.10/site-packages/pyparsing/__init__.py +326 -0
  981. package/venv/lib/python3.10/site-packages/pyparsing/actions.py +219 -0
  982. package/venv/lib/python3.10/site-packages/pyparsing/common.py +434 -0
  983. package/venv/lib/python3.10/site-packages/pyparsing/core.py +6226 -0
  984. package/venv/lib/python3.10/site-packages/pyparsing/diagram/__init__.py +744 -0
  985. package/venv/lib/python3.10/site-packages/pyparsing/exceptions.py +314 -0
  986. package/venv/lib/python3.10/site-packages/pyparsing/helpers.py +1102 -0
  987. package/venv/lib/python3.10/site-packages/pyparsing/py.typed +0 -0
  988. package/venv/lib/python3.10/site-packages/pyparsing/results.py +816 -0
  989. package/venv/lib/python3.10/site-packages/pyparsing/testing.py +362 -0
  990. package/venv/lib/python3.10/site-packages/pyparsing/unicode.py +356 -0
  991. package/venv/lib/python3.10/site-packages/pyparsing/util.py +398 -0
  992. package/venv/lib/python3.10/site-packages/pyparsing-3.2.1.dist-info/INSTALLER +1 -0
  993. package/venv/lib/python3.10/site-packages/pyparsing-3.2.1.dist-info/LICENSE +18 -0
  994. package/venv/lib/python3.10/site-packages/pyparsing-3.2.1.dist-info/METADATA +124 -0
  995. package/venv/lib/python3.10/site-packages/pyparsing-3.2.1.dist-info/RECORD +28 -0
  996. package/venv/lib/python3.10/site-packages/pyparsing-3.2.1.dist-info/WHEEL +4 -0
  997. package/venv/lib/python3.10/site-packages/requests/__init__.py +184 -0
  998. package/venv/lib/python3.10/site-packages/requests/__version__.py +14 -0
  999. package/venv/lib/python3.10/site-packages/requests/_internal_utils.py +50 -0
  1000. package/venv/lib/python3.10/site-packages/requests/adapters.py +719 -0
  1001. package/venv/lib/python3.10/site-packages/requests/api.py +157 -0
  1002. package/venv/lib/python3.10/site-packages/requests/auth.py +314 -0
  1003. package/venv/lib/python3.10/site-packages/requests/certs.py +17 -0
  1004. package/venv/lib/python3.10/site-packages/requests/compat.py +94 -0
  1005. package/venv/lib/python3.10/site-packages/requests/cookies.py +561 -0
  1006. package/venv/lib/python3.10/site-packages/requests/exceptions.py +151 -0
  1007. package/venv/lib/python3.10/site-packages/requests/help.py +134 -0
  1008. package/venv/lib/python3.10/site-packages/requests/hooks.py +33 -0
  1009. package/venv/lib/python3.10/site-packages/requests/models.py +1037 -0
  1010. package/venv/lib/python3.10/site-packages/requests/packages.py +23 -0
  1011. package/venv/lib/python3.10/site-packages/requests/sessions.py +831 -0
  1012. package/venv/lib/python3.10/site-packages/requests/status_codes.py +128 -0
  1013. package/venv/lib/python3.10/site-packages/requests/structures.py +99 -0
  1014. package/venv/lib/python3.10/site-packages/requests/utils.py +1096 -0
  1015. package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/INSTALLER +1 -0
  1016. package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/LICENSE +175 -0
  1017. package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/METADATA +119 -0
  1018. package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/RECORD +43 -0
  1019. package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/REQUESTED +0 -0
  1020. package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/WHEEL +5 -0
  1021. package/venv/lib/python3.10/site-packages/requests-2.32.3.dist-info/top_level.txt +1 -0
  1022. package/venv/lib/python3.10/site-packages/requests_toolbelt/__init__.py +34 -0
  1023. package/venv/lib/python3.10/site-packages/requests_toolbelt/_compat.py +302 -0
  1024. package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/__init__.py +15 -0
  1025. package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/appengine.py +206 -0
  1026. package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/fingerprint.py +48 -0
  1027. package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/host_header_ssl.py +43 -0
  1028. package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/socket_options.py +129 -0
  1029. package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/source.py +67 -0
  1030. package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/ssl.py +66 -0
  1031. package/venv/lib/python3.10/site-packages/requests_toolbelt/adapters/x509.py +196 -0
  1032. package/venv/lib/python3.10/site-packages/requests_toolbelt/auth/__init__.py +0 -0
  1033. package/venv/lib/python3.10/site-packages/requests_toolbelt/auth/_digest_auth_compat.py +29 -0
  1034. package/venv/lib/python3.10/site-packages/requests_toolbelt/auth/guess.py +146 -0
  1035. package/venv/lib/python3.10/site-packages/requests_toolbelt/auth/handler.py +142 -0
  1036. package/venv/lib/python3.10/site-packages/requests_toolbelt/auth/http_proxy_digest.py +103 -0
  1037. package/venv/lib/python3.10/site-packages/requests_toolbelt/cookies/__init__.py +0 -0
  1038. package/venv/lib/python3.10/site-packages/requests_toolbelt/cookies/forgetful.py +7 -0
  1039. package/venv/lib/python3.10/site-packages/requests_toolbelt/downloadutils/__init__.py +0 -0
  1040. package/venv/lib/python3.10/site-packages/requests_toolbelt/downloadutils/stream.py +176 -0
  1041. package/venv/lib/python3.10/site-packages/requests_toolbelt/downloadutils/tee.py +123 -0
  1042. package/venv/lib/python3.10/site-packages/requests_toolbelt/exceptions.py +25 -0
  1043. package/venv/lib/python3.10/site-packages/requests_toolbelt/multipart/__init__.py +31 -0
  1044. package/venv/lib/python3.10/site-packages/requests_toolbelt/multipart/decoder.py +156 -0
  1045. package/venv/lib/python3.10/site-packages/requests_toolbelt/multipart/encoder.py +655 -0
  1046. package/venv/lib/python3.10/site-packages/requests_toolbelt/sessions.py +89 -0
  1047. package/venv/lib/python3.10/site-packages/requests_toolbelt/streaming_iterator.py +116 -0
  1048. package/venv/lib/python3.10/site-packages/requests_toolbelt/threaded/__init__.py +97 -0
  1049. package/venv/lib/python3.10/site-packages/requests_toolbelt/threaded/pool.py +211 -0
  1050. package/venv/lib/python3.10/site-packages/requests_toolbelt/threaded/thread.py +53 -0
  1051. package/venv/lib/python3.10/site-packages/requests_toolbelt/utils/__init__.py +0 -0
  1052. package/venv/lib/python3.10/site-packages/requests_toolbelt/utils/deprecated.py +91 -0
  1053. package/venv/lib/python3.10/site-packages/requests_toolbelt/utils/dump.py +198 -0
  1054. package/venv/lib/python3.10/site-packages/requests_toolbelt/utils/formdata.py +108 -0
  1055. package/venv/lib/python3.10/site-packages/requests_toolbelt/utils/user_agent.py +143 -0
  1056. package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/AUTHORS.rst +57 -0
  1057. package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/INSTALLER +1 -0
  1058. package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/LICENSE +13 -0
  1059. package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/METADATA +521 -0
  1060. package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/RECORD +75 -0
  1061. package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/WHEEL +6 -0
  1062. package/venv/lib/python3.10/site-packages/requests_toolbelt-1.0.0.dist-info/top_level.txt +1 -0
  1063. package/venv/lib/python3.10/site-packages/scrypted_arlo_go/__init__.py +1 -0
  1064. package/venv/lib/python3.10/site-packages/scrypted_arlo_go/_scrypted_arlo_go.cpython-310-x86_64-linux-gnu.h +555 -0
  1065. package/venv/lib/python3.10/site-packages/scrypted_arlo_go/_scrypted_arlo_go.cpython-310-x86_64-linux-gnu.so +0 -0
  1066. package/venv/lib/python3.10/site-packages/scrypted_arlo_go/build.py +344 -0
  1067. package/venv/lib/python3.10/site-packages/scrypted_arlo_go/go.py +2215 -0
  1068. package/venv/lib/python3.10/site-packages/scrypted_arlo_go/scrypted_arlo_go.c +6019 -0
  1069. package/venv/lib/python3.10/site-packages/scrypted_arlo_go/scrypted_arlo_go.go +3612 -0
  1070. package/venv/lib/python3.10/site-packages/scrypted_arlo_go/scrypted_arlo_go.py +1910 -0
  1071. package/venv/lib/python3.10/site-packages/scrypted_arlo_go/scrypted_arlo_go_go.h +555 -0
  1072. package/venv/lib/python3.10/site-packages/scrypted_arlo_go-0.7.6.dist-info/INSTALLER +1 -0
  1073. package/venv/lib/python3.10/site-packages/scrypted_arlo_go-0.7.6.dist-info/METADATA +11 -0
  1074. package/venv/lib/python3.10/site-packages/scrypted_arlo_go-0.7.6.dist-info/RECORD +19 -0
  1075. package/venv/lib/python3.10/site-packages/scrypted_arlo_go-0.7.6.dist-info/REQUESTED +0 -0
  1076. package/venv/lib/python3.10/site-packages/scrypted_arlo_go-0.7.6.dist-info/WHEEL +8 -0
  1077. package/venv/lib/python3.10/site-packages/scrypted_arlo_go-0.7.6.dist-info/top_level.txt +1 -0
  1078. package/venv/lib/python3.10/site-packages/setuptools/__init__.py +242 -0
  1079. package/venv/lib/python3.10/site-packages/setuptools/_deprecation_warning.py +7 -0
  1080. package/venv/lib/python3.10/site-packages/setuptools/_distutils/__init__.py +24 -0
  1081. package/venv/lib/python3.10/site-packages/setuptools/_distutils/_msvccompiler.py +561 -0
  1082. package/venv/lib/python3.10/site-packages/setuptools/_distutils/archive_util.py +256 -0
  1083. package/venv/lib/python3.10/site-packages/setuptools/_distutils/bcppcompiler.py +393 -0
  1084. package/venv/lib/python3.10/site-packages/setuptools/_distutils/ccompiler.py +1123 -0
  1085. package/venv/lib/python3.10/site-packages/setuptools/_distutils/cmd.py +403 -0
  1086. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/__init__.py +31 -0
  1087. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist.py +143 -0
  1088. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_dumb.py +123 -0
  1089. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_msi.py +749 -0
  1090. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_rpm.py +579 -0
  1091. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_wininst.py +377 -0
  1092. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build.py +157 -0
  1093. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_clib.py +209 -0
  1094. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py +755 -0
  1095. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_py.py +392 -0
  1096. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_scripts.py +152 -0
  1097. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/check.py +148 -0
  1098. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/clean.py +76 -0
  1099. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/config.py +344 -0
  1100. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install.py +721 -0
  1101. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_data.py +79 -0
  1102. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_egg_info.py +84 -0
  1103. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_headers.py +47 -0
  1104. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_lib.py +217 -0
  1105. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_scripts.py +60 -0
  1106. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/py37compat.py +30 -0
  1107. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/register.py +304 -0
  1108. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py +494 -0
  1109. package/venv/lib/python3.10/site-packages/setuptools/_distutils/command/upload.py +214 -0
  1110. package/venv/lib/python3.10/site-packages/setuptools/_distutils/config.py +130 -0
  1111. package/venv/lib/python3.10/site-packages/setuptools/_distutils/core.py +249 -0
  1112. package/venv/lib/python3.10/site-packages/setuptools/_distutils/cygwinccompiler.py +425 -0
  1113. package/venv/lib/python3.10/site-packages/setuptools/_distutils/debug.py +5 -0
  1114. package/venv/lib/python3.10/site-packages/setuptools/_distutils/dep_util.py +92 -0
  1115. package/venv/lib/python3.10/site-packages/setuptools/_distutils/dir_util.py +210 -0
  1116. package/venv/lib/python3.10/site-packages/setuptools/_distutils/dist.py +1257 -0
  1117. package/venv/lib/python3.10/site-packages/setuptools/_distutils/errors.py +97 -0
  1118. package/venv/lib/python3.10/site-packages/setuptools/_distutils/extension.py +240 -0
  1119. package/venv/lib/python3.10/site-packages/setuptools/_distutils/fancy_getopt.py +457 -0
  1120. package/venv/lib/python3.10/site-packages/setuptools/_distutils/file_util.py +238 -0
  1121. package/venv/lib/python3.10/site-packages/setuptools/_distutils/filelist.py +355 -0
  1122. package/venv/lib/python3.10/site-packages/setuptools/_distutils/log.py +77 -0
  1123. package/venv/lib/python3.10/site-packages/setuptools/_distutils/msvc9compiler.py +788 -0
  1124. package/venv/lib/python3.10/site-packages/setuptools/_distutils/msvccompiler.py +643 -0
  1125. package/venv/lib/python3.10/site-packages/setuptools/_distutils/py35compat.py +19 -0
  1126. package/venv/lib/python3.10/site-packages/setuptools/_distutils/py38compat.py +7 -0
  1127. package/venv/lib/python3.10/site-packages/setuptools/_distutils/spawn.py +106 -0
  1128. package/venv/lib/python3.10/site-packages/setuptools/_distutils/sysconfig.py +601 -0
  1129. package/venv/lib/python3.10/site-packages/setuptools/_distutils/text_file.py +286 -0
  1130. package/venv/lib/python3.10/site-packages/setuptools/_distutils/unixccompiler.py +325 -0
  1131. package/venv/lib/python3.10/site-packages/setuptools/_distutils/util.py +548 -0
  1132. package/venv/lib/python3.10/site-packages/setuptools/_distutils/version.py +363 -0
  1133. package/venv/lib/python3.10/site-packages/setuptools/_distutils/versionpredicate.py +169 -0
  1134. package/venv/lib/python3.10/site-packages/setuptools/_imp.py +82 -0
  1135. package/venv/lib/python3.10/site-packages/setuptools/_vendor/__init__.py +0 -0
  1136. package/venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__init__.py +4 -0
  1137. package/venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/more.py +3825 -0
  1138. package/venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/recipes.py +620 -0
  1139. package/venv/lib/python3.10/site-packages/setuptools/_vendor/ordered_set.py +488 -0
  1140. package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__about__.py +26 -0
  1141. package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__init__.py +25 -0
  1142. package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_manylinux.py +301 -0
  1143. package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_musllinux.py +136 -0
  1144. package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_structures.py +67 -0
  1145. package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/markers.py +304 -0
  1146. package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/requirements.py +146 -0
  1147. package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/specifiers.py +828 -0
  1148. package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/tags.py +484 -0
  1149. package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/utils.py +136 -0
  1150. package/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/version.py +504 -0
  1151. package/venv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing.py +5742 -0
  1152. package/venv/lib/python3.10/site-packages/setuptools/archive_util.py +205 -0
  1153. package/venv/lib/python3.10/site-packages/setuptools/build_meta.py +290 -0
  1154. package/venv/lib/python3.10/site-packages/setuptools/cli-32.exe +0 -0
  1155. package/venv/lib/python3.10/site-packages/setuptools/cli-64.exe +0 -0
  1156. package/venv/lib/python3.10/site-packages/setuptools/cli-arm64.exe +0 -0
  1157. package/venv/lib/python3.10/site-packages/setuptools/cli.exe +0 -0
  1158. package/venv/lib/python3.10/site-packages/setuptools/command/__init__.py +8 -0
  1159. package/venv/lib/python3.10/site-packages/setuptools/command/alias.py +78 -0
  1160. package/venv/lib/python3.10/site-packages/setuptools/command/bdist_egg.py +456 -0
  1161. package/venv/lib/python3.10/site-packages/setuptools/command/bdist_rpm.py +40 -0
  1162. package/venv/lib/python3.10/site-packages/setuptools/command/build_clib.py +101 -0
  1163. package/venv/lib/python3.10/site-packages/setuptools/command/build_ext.py +328 -0
  1164. package/venv/lib/python3.10/site-packages/setuptools/command/build_py.py +242 -0
  1165. package/venv/lib/python3.10/site-packages/setuptools/command/develop.py +193 -0
  1166. package/venv/lib/python3.10/site-packages/setuptools/command/dist_info.py +36 -0
  1167. package/venv/lib/python3.10/site-packages/setuptools/command/easy_install.py +2354 -0
  1168. package/venv/lib/python3.10/site-packages/setuptools/command/egg_info.py +755 -0
  1169. package/venv/lib/python3.10/site-packages/setuptools/command/install.py +132 -0
  1170. package/venv/lib/python3.10/site-packages/setuptools/command/install_egg_info.py +82 -0
  1171. package/venv/lib/python3.10/site-packages/setuptools/command/install_lib.py +148 -0
  1172. package/venv/lib/python3.10/site-packages/setuptools/command/install_scripts.py +69 -0
  1173. package/venv/lib/python3.10/site-packages/setuptools/command/launcher manifest.xml +15 -0
  1174. package/venv/lib/python3.10/site-packages/setuptools/command/py36compat.py +134 -0
  1175. package/venv/lib/python3.10/site-packages/setuptools/command/register.py +18 -0
  1176. package/venv/lib/python3.10/site-packages/setuptools/command/rotate.py +64 -0
  1177. package/venv/lib/python3.10/site-packages/setuptools/command/saveopts.py +22 -0
  1178. package/venv/lib/python3.10/site-packages/setuptools/command/sdist.py +196 -0
  1179. package/venv/lib/python3.10/site-packages/setuptools/command/setopt.py +149 -0
  1180. package/venv/lib/python3.10/site-packages/setuptools/command/test.py +252 -0
  1181. package/venv/lib/python3.10/site-packages/setuptools/command/upload.py +17 -0
  1182. package/venv/lib/python3.10/site-packages/setuptools/command/upload_docs.py +202 -0
  1183. package/venv/lib/python3.10/site-packages/setuptools/config.py +751 -0
  1184. package/venv/lib/python3.10/site-packages/setuptools/dep_util.py +25 -0
  1185. package/venv/lib/python3.10/site-packages/setuptools/depends.py +176 -0
  1186. package/venv/lib/python3.10/site-packages/setuptools/dist.py +1156 -0
  1187. package/venv/lib/python3.10/site-packages/setuptools/errors.py +40 -0
  1188. package/venv/lib/python3.10/site-packages/setuptools/extension.py +55 -0
  1189. package/venv/lib/python3.10/site-packages/setuptools/extern/__init__.py +73 -0
  1190. package/venv/lib/python3.10/site-packages/setuptools/glob.py +167 -0
  1191. package/venv/lib/python3.10/site-packages/setuptools/gui-32.exe +0 -0
  1192. package/venv/lib/python3.10/site-packages/setuptools/gui-64.exe +0 -0
  1193. package/venv/lib/python3.10/site-packages/setuptools/gui-arm64.exe +0 -0
  1194. package/venv/lib/python3.10/site-packages/setuptools/gui.exe +0 -0
  1195. package/venv/lib/python3.10/site-packages/setuptools/installer.py +104 -0
  1196. package/venv/lib/python3.10/site-packages/setuptools/launch.py +36 -0
  1197. package/venv/lib/python3.10/site-packages/setuptools/monkey.py +177 -0
  1198. package/venv/lib/python3.10/site-packages/setuptools/msvc.py +1805 -0
  1199. package/venv/lib/python3.10/site-packages/setuptools/namespaces.py +107 -0
  1200. package/venv/lib/python3.10/site-packages/setuptools/package_index.py +1150 -0
  1201. package/venv/lib/python3.10/site-packages/setuptools/py34compat.py +13 -0
  1202. package/venv/lib/python3.10/site-packages/setuptools/sandbox.py +530 -0
  1203. package/venv/lib/python3.10/site-packages/setuptools/script (dev).tmpl +6 -0
  1204. package/venv/lib/python3.10/site-packages/setuptools/script.tmpl +3 -0
  1205. package/venv/lib/python3.10/site-packages/setuptools/unicode_utils.py +42 -0
  1206. package/venv/lib/python3.10/site-packages/setuptools/version.py +6 -0
  1207. package/venv/lib/python3.10/site-packages/setuptools/wheel.py +213 -0
  1208. package/venv/lib/python3.10/site-packages/setuptools/windows_support.py +29 -0
  1209. package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/INSTALLER +1 -0
  1210. package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/LICENSE +19 -0
  1211. package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/METADATA +125 -0
  1212. package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/RECORD +298 -0
  1213. package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/REQUESTED +0 -0
  1214. package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/WHEEL +5 -0
  1215. package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/entry_points.txt +56 -0
  1216. package/venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/top_level.txt +4 -0
  1217. package/venv/lib/python3.10/site-packages/six-1.17.0.dist-info/INSTALLER +1 -0
  1218. package/venv/lib/python3.10/site-packages/six-1.17.0.dist-info/LICENSE +18 -0
  1219. package/venv/lib/python3.10/site-packages/six-1.17.0.dist-info/METADATA +43 -0
  1220. package/venv/lib/python3.10/site-packages/six-1.17.0.dist-info/RECORD +8 -0
  1221. package/venv/lib/python3.10/site-packages/six-1.17.0.dist-info/WHEEL +6 -0
  1222. package/venv/lib/python3.10/site-packages/six-1.17.0.dist-info/top_level.txt +1 -0
  1223. package/venv/lib/python3.10/site-packages/six.py +1003 -0
  1224. package/venv/lib/python3.10/site-packages/soupsieve/__init__.py +168 -0
  1225. package/venv/lib/python3.10/site-packages/soupsieve/__meta__.py +197 -0
  1226. package/venv/lib/python3.10/site-packages/soupsieve/css_match.py +1582 -0
  1227. package/venv/lib/python3.10/site-packages/soupsieve/css_parser.py +1289 -0
  1228. package/venv/lib/python3.10/site-packages/soupsieve/css_types.py +407 -0
  1229. package/venv/lib/python3.10/site-packages/soupsieve/pretty.py +139 -0
  1230. package/venv/lib/python3.10/site-packages/soupsieve/py.typed +0 -0
  1231. package/venv/lib/python3.10/site-packages/soupsieve/util.py +117 -0
  1232. package/venv/lib/python3.10/site-packages/soupsieve-2.6.dist-info/INSTALLER +1 -0
  1233. package/venv/lib/python3.10/site-packages/soupsieve-2.6.dist-info/METADATA +114 -0
  1234. package/venv/lib/python3.10/site-packages/soupsieve-2.6.dist-info/RECORD +20 -0
  1235. package/venv/lib/python3.10/site-packages/soupsieve-2.6.dist-info/WHEEL +4 -0
  1236. package/venv/lib/python3.10/site-packages/soupsieve-2.6.dist-info/licenses/LICENSE.md +21 -0
  1237. package/venv/lib/python3.10/site-packages/sseclient-0.0.22.egg-info/PKG-INFO +98 -0
  1238. package/venv/lib/python3.10/site-packages/sseclient-0.0.22.egg-info/SOURCES.txt +12 -0
  1239. package/venv/lib/python3.10/site-packages/sseclient-0.0.22.egg-info/dependency_links.txt +1 -0
  1240. package/venv/lib/python3.10/site-packages/sseclient-0.0.22.egg-info/installed-files.txt +7 -0
  1241. package/venv/lib/python3.10/site-packages/sseclient-0.0.22.egg-info/requires.txt +2 -0
  1242. package/venv/lib/python3.10/site-packages/sseclient-0.0.22.egg-info/top_level.txt +1 -0
  1243. package/venv/lib/python3.10/site-packages/sseclient.py +165 -0
  1244. package/venv/lib/python3.10/site-packages/typing_extensions-4.12.2.dist-info/INSTALLER +1 -0
  1245. package/venv/lib/python3.10/site-packages/typing_extensions-4.12.2.dist-info/LICENSE +279 -0
  1246. package/venv/lib/python3.10/site-packages/typing_extensions-4.12.2.dist-info/METADATA +67 -0
  1247. package/venv/lib/python3.10/site-packages/typing_extensions-4.12.2.dist-info/RECORD +7 -0
  1248. package/venv/lib/python3.10/site-packages/typing_extensions-4.12.2.dist-info/WHEEL +4 -0
  1249. package/venv/lib/python3.10/site-packages/typing_extensions.py +3641 -0
  1250. package/venv/lib/python3.10/site-packages/urllib3/__init__.py +211 -0
  1251. package/venv/lib/python3.10/site-packages/urllib3/_base_connection.py +165 -0
  1252. package/venv/lib/python3.10/site-packages/urllib3/_collections.py +479 -0
  1253. package/venv/lib/python3.10/site-packages/urllib3/_request_methods.py +278 -0
  1254. package/venv/lib/python3.10/site-packages/urllib3/_version.py +16 -0
  1255. package/venv/lib/python3.10/site-packages/urllib3/connection.py +1044 -0
  1256. package/venv/lib/python3.10/site-packages/urllib3/connectionpool.py +1178 -0
  1257. package/venv/lib/python3.10/site-packages/urllib3/contrib/__init__.py +0 -0
  1258. package/venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/__init__.py +16 -0
  1259. package/venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/connection.py +255 -0
  1260. package/venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js +110 -0
  1261. package/venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/fetch.py +708 -0
  1262. package/venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/request.py +22 -0
  1263. package/venv/lib/python3.10/site-packages/urllib3/contrib/emscripten/response.py +285 -0
  1264. package/venv/lib/python3.10/site-packages/urllib3/contrib/pyopenssl.py +554 -0
  1265. package/venv/lib/python3.10/site-packages/urllib3/contrib/socks.py +228 -0
  1266. package/venv/lib/python3.10/site-packages/urllib3/exceptions.py +327 -0
  1267. package/venv/lib/python3.10/site-packages/urllib3/fields.py +341 -0
  1268. package/venv/lib/python3.10/site-packages/urllib3/filepost.py +89 -0
  1269. package/venv/lib/python3.10/site-packages/urllib3/http2/__init__.py +53 -0
  1270. package/venv/lib/python3.10/site-packages/urllib3/http2/connection.py +356 -0
  1271. package/venv/lib/python3.10/site-packages/urllib3/http2/probe.py +87 -0
  1272. package/venv/lib/python3.10/site-packages/urllib3/poolmanager.py +637 -0
  1273. package/venv/lib/python3.10/site-packages/urllib3/py.typed +2 -0
  1274. package/venv/lib/python3.10/site-packages/urllib3/response.py +1278 -0
  1275. package/venv/lib/python3.10/site-packages/urllib3/util/__init__.py +42 -0
  1276. package/venv/lib/python3.10/site-packages/urllib3/util/connection.py +137 -0
  1277. package/venv/lib/python3.10/site-packages/urllib3/util/proxy.py +43 -0
  1278. package/venv/lib/python3.10/site-packages/urllib3/util/request.py +258 -0
  1279. package/venv/lib/python3.10/site-packages/urllib3/util/response.py +101 -0
  1280. package/venv/lib/python3.10/site-packages/urllib3/util/retry.py +533 -0
  1281. package/venv/lib/python3.10/site-packages/urllib3/util/ssl_.py +504 -0
  1282. package/venv/lib/python3.10/site-packages/urllib3/util/ssl_match_hostname.py +159 -0
  1283. package/venv/lib/python3.10/site-packages/urllib3/util/ssltransport.py +271 -0
  1284. package/venv/lib/python3.10/site-packages/urllib3/util/timeout.py +275 -0
  1285. package/venv/lib/python3.10/site-packages/urllib3/util/url.py +469 -0
  1286. package/venv/lib/python3.10/site-packages/urllib3/util/util.py +42 -0
  1287. package/venv/lib/python3.10/site-packages/urllib3/util/wait.py +124 -0
  1288. package/venv/lib/python3.10/site-packages/urllib3-2.3.0.dist-info/INSTALLER +1 -0
  1289. package/venv/lib/python3.10/site-packages/urllib3-2.3.0.dist-info/METADATA +154 -0
  1290. package/venv/lib/python3.10/site-packages/urllib3-2.3.0.dist-info/RECORD +80 -0
  1291. package/venv/lib/python3.10/site-packages/urllib3-2.3.0.dist-info/REQUESTED +0 -0
  1292. package/venv/lib/python3.10/site-packages/urllib3-2.3.0.dist-info/WHEEL +4 -0
  1293. package/venv/lib/python3.10/site-packages/urllib3-2.3.0.dist-info/licenses/LICENSE.txt +21 -0
  1294. package/venv/lib/python3.10/site-packages/yarl/__init__.py +14 -0
  1295. package/venv/lib/python3.10/site-packages/yarl/_parse.py +189 -0
  1296. package/venv/lib/python3.10/site-packages/yarl/_path.py +41 -0
  1297. package/venv/lib/python3.10/site-packages/yarl/_query.py +118 -0
  1298. package/venv/lib/python3.10/site-packages/yarl/_quoters.py +32 -0
  1299. package/venv/lib/python3.10/site-packages/yarl/_quoting.py +18 -0
  1300. package/venv/lib/python3.10/site-packages/yarl/_quoting_c.cpython-310-x86_64-linux-gnu.so +0 -0
  1301. package/venv/lib/python3.10/site-packages/yarl/_quoting_c.pyi +16 -0
  1302. package/venv/lib/python3.10/site-packages/yarl/_quoting_c.pyx +423 -0
  1303. package/venv/lib/python3.10/site-packages/yarl/_quoting_py.py +197 -0
  1304. package/venv/lib/python3.10/site-packages/yarl/_url.py +1584 -0
  1305. package/venv/lib/python3.10/site-packages/yarl/py.typed +1 -0
  1306. package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/INSTALLER +1 -0
  1307. package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/LICENSE +202 -0
  1308. package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/METADATA +2279 -0
  1309. package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/NOTICE +13 -0
  1310. package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/RECORD +27 -0
  1311. package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/WHEEL +6 -0
  1312. package/venv/lib/python3.10/site-packages/yarl-1.18.3.dist-info/top_level.txt +1 -0
  1313. 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
+ # &verbar;. 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 '&fjlig;',
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 &GreaterFullEqual;,
206
+ # but '\u2267\u0338' is &NotGreaterFullEqual;. 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 "&amp;%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 "&amp;%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 "&amp;%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 &quot;Bob's bar&quot;
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
+ # "&quot;" whether this is HTML or XML. If we
345
+ # quoted the single quotes, we'd have to decide
346
+ # between &apos; and &squot;.
347
+ replace_with = "&quot;"
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 &lt;, the greater-than sign
360
+ will become &gt;, and any ampersands will become &amp;. 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 &lt;, the greater-than sign will become &gt;, and any
388
+ ampersands that are not part of an entity defition will
389
+ become &amp;.
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 "&eacute;" 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)