@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,1652 @@
1
+ import asyncio
2
+ import functools
3
+ import random
4
+ import socket
5
+ import sys
6
+ import traceback
7
+ import warnings
8
+ from collections import OrderedDict, defaultdict, deque
9
+ from contextlib import suppress
10
+ from http import HTTPStatus
11
+ from itertools import chain, cycle, islice
12
+ from time import monotonic
13
+ from types import TracebackType
14
+ from typing import (
15
+ TYPE_CHECKING,
16
+ Any,
17
+ Awaitable,
18
+ Callable,
19
+ DefaultDict,
20
+ Deque,
21
+ Dict,
22
+ Iterator,
23
+ List,
24
+ Literal,
25
+ Optional,
26
+ Sequence,
27
+ Set,
28
+ Tuple,
29
+ Type,
30
+ Union,
31
+ cast,
32
+ )
33
+
34
+ import aiohappyeyeballs
35
+
36
+ from . import hdrs, helpers
37
+ from .abc import AbstractResolver, ResolveResult
38
+ from .client_exceptions import (
39
+ ClientConnectionError,
40
+ ClientConnectorCertificateError,
41
+ ClientConnectorDNSError,
42
+ ClientConnectorError,
43
+ ClientConnectorSSLError,
44
+ ClientHttpProxyError,
45
+ ClientProxyConnectionError,
46
+ ServerFingerprintMismatch,
47
+ UnixClientConnectorError,
48
+ cert_errors,
49
+ ssl_errors,
50
+ )
51
+ from .client_proto import ResponseHandler
52
+ from .client_reqrep import ClientRequest, Fingerprint, _merge_ssl_params
53
+ from .helpers import (
54
+ ceil_timeout,
55
+ is_ip_address,
56
+ noop,
57
+ sentinel,
58
+ set_exception,
59
+ set_result,
60
+ )
61
+ from .resolver import DefaultResolver
62
+
63
+ if TYPE_CHECKING:
64
+ import ssl
65
+
66
+ SSLContext = ssl.SSLContext
67
+ else:
68
+ try:
69
+ import ssl
70
+
71
+ SSLContext = ssl.SSLContext
72
+ except ImportError: # pragma: no cover
73
+ ssl = None # type: ignore[assignment]
74
+ SSLContext = object # type: ignore[misc,assignment]
75
+
76
+ EMPTY_SCHEMA_SET = frozenset({""})
77
+ HTTP_SCHEMA_SET = frozenset({"http", "https"})
78
+ WS_SCHEMA_SET = frozenset({"ws", "wss"})
79
+
80
+ HTTP_AND_EMPTY_SCHEMA_SET = HTTP_SCHEMA_SET | EMPTY_SCHEMA_SET
81
+ HIGH_LEVEL_SCHEMA_SET = HTTP_AND_EMPTY_SCHEMA_SET | WS_SCHEMA_SET
82
+
83
+ NEEDS_CLEANUP_CLOSED = (3, 13, 0) <= sys.version_info < (
84
+ 3,
85
+ 13,
86
+ 1,
87
+ ) or sys.version_info < (3, 12, 7)
88
+ # Cleanup closed is no longer needed after https://github.com/python/cpython/pull/118960
89
+ # which first appeared in Python 3.12.7 and 3.13.1
90
+
91
+
92
+ __all__ = ("BaseConnector", "TCPConnector", "UnixConnector", "NamedPipeConnector")
93
+
94
+
95
+ if TYPE_CHECKING:
96
+ from .client import ClientTimeout
97
+ from .client_reqrep import ConnectionKey
98
+ from .tracing import Trace
99
+
100
+
101
+ class _DeprecationWaiter:
102
+ __slots__ = ("_awaitable", "_awaited")
103
+
104
+ def __init__(self, awaitable: Awaitable[Any]) -> None:
105
+ self._awaitable = awaitable
106
+ self._awaited = False
107
+
108
+ def __await__(self) -> Any:
109
+ self._awaited = True
110
+ return self._awaitable.__await__()
111
+
112
+ def __del__(self) -> None:
113
+ if not self._awaited:
114
+ warnings.warn(
115
+ "Connector.close() is a coroutine, "
116
+ "please use await connector.close()",
117
+ DeprecationWarning,
118
+ )
119
+
120
+
121
+ class Connection:
122
+
123
+ _source_traceback = None
124
+
125
+ def __init__(
126
+ self,
127
+ connector: "BaseConnector",
128
+ key: "ConnectionKey",
129
+ protocol: ResponseHandler,
130
+ loop: asyncio.AbstractEventLoop,
131
+ ) -> None:
132
+ self._key = key
133
+ self._connector = connector
134
+ self._loop = loop
135
+ self._protocol: Optional[ResponseHandler] = protocol
136
+ self._callbacks: List[Callable[[], None]] = []
137
+
138
+ if loop.get_debug():
139
+ self._source_traceback = traceback.extract_stack(sys._getframe(1))
140
+
141
+ def __repr__(self) -> str:
142
+ return f"Connection<{self._key}>"
143
+
144
+ def __del__(self, _warnings: Any = warnings) -> None:
145
+ if self._protocol is not None:
146
+ kwargs = {"source": self}
147
+ _warnings.warn(f"Unclosed connection {self!r}", ResourceWarning, **kwargs)
148
+ if self._loop.is_closed():
149
+ return
150
+
151
+ self._connector._release(self._key, self._protocol, should_close=True)
152
+
153
+ context = {"client_connection": self, "message": "Unclosed connection"}
154
+ if self._source_traceback is not None:
155
+ context["source_traceback"] = self._source_traceback
156
+ self._loop.call_exception_handler(context)
157
+
158
+ def __bool__(self) -> Literal[True]:
159
+ """Force subclasses to not be falsy, to make checks simpler."""
160
+ return True
161
+
162
+ @property
163
+ def loop(self) -> asyncio.AbstractEventLoop:
164
+ warnings.warn(
165
+ "connector.loop property is deprecated", DeprecationWarning, stacklevel=2
166
+ )
167
+ return self._loop
168
+
169
+ @property
170
+ def transport(self) -> Optional[asyncio.Transport]:
171
+ if self._protocol is None:
172
+ return None
173
+ return self._protocol.transport
174
+
175
+ @property
176
+ def protocol(self) -> Optional[ResponseHandler]:
177
+ return self._protocol
178
+
179
+ def add_callback(self, callback: Callable[[], None]) -> None:
180
+ if callback is not None:
181
+ self._callbacks.append(callback)
182
+
183
+ def _notify_release(self) -> None:
184
+ callbacks, self._callbacks = self._callbacks[:], []
185
+
186
+ for cb in callbacks:
187
+ with suppress(Exception):
188
+ cb()
189
+
190
+ def close(self) -> None:
191
+ self._notify_release()
192
+
193
+ if self._protocol is not None:
194
+ self._connector._release(self._key, self._protocol, should_close=True)
195
+ self._protocol = None
196
+
197
+ def release(self) -> None:
198
+ self._notify_release()
199
+
200
+ if self._protocol is not None:
201
+ self._connector._release(self._key, self._protocol)
202
+ self._protocol = None
203
+
204
+ @property
205
+ def closed(self) -> bool:
206
+ return self._protocol is None or not self._protocol.is_connected()
207
+
208
+
209
+ class _TransportPlaceholder:
210
+ """placeholder for BaseConnector.connect function"""
211
+
212
+ __slots__ = ()
213
+
214
+ def close(self) -> None:
215
+ """Close the placeholder transport."""
216
+
217
+
218
+ class BaseConnector:
219
+ """Base connector class.
220
+
221
+ keepalive_timeout - (optional) Keep-alive timeout.
222
+ force_close - Set to True to force close and do reconnect
223
+ after each request (and between redirects).
224
+ limit - The total number of simultaneous connections.
225
+ limit_per_host - Number of simultaneous connections to one host.
226
+ enable_cleanup_closed - Enables clean-up closed ssl transports.
227
+ Disabled by default.
228
+ timeout_ceil_threshold - Trigger ceiling of timeout values when
229
+ it's above timeout_ceil_threshold.
230
+ loop - Optional event loop.
231
+ """
232
+
233
+ _closed = True # prevent AttributeError in __del__ if ctor was failed
234
+ _source_traceback = None
235
+
236
+ # abort transport after 2 seconds (cleanup broken connections)
237
+ _cleanup_closed_period = 2.0
238
+
239
+ allowed_protocol_schema_set = HIGH_LEVEL_SCHEMA_SET
240
+
241
+ def __init__(
242
+ self,
243
+ *,
244
+ keepalive_timeout: Union[object, None, float] = sentinel,
245
+ force_close: bool = False,
246
+ limit: int = 100,
247
+ limit_per_host: int = 0,
248
+ enable_cleanup_closed: bool = False,
249
+ loop: Optional[asyncio.AbstractEventLoop] = None,
250
+ timeout_ceil_threshold: float = 5,
251
+ ) -> None:
252
+
253
+ if force_close:
254
+ if keepalive_timeout is not None and keepalive_timeout is not sentinel:
255
+ raise ValueError(
256
+ "keepalive_timeout cannot be set if force_close is True"
257
+ )
258
+ else:
259
+ if keepalive_timeout is sentinel:
260
+ keepalive_timeout = 15.0
261
+
262
+ loop = loop or asyncio.get_running_loop()
263
+ self._timeout_ceil_threshold = timeout_ceil_threshold
264
+
265
+ self._closed = False
266
+ if loop.get_debug():
267
+ self._source_traceback = traceback.extract_stack(sys._getframe(1))
268
+
269
+ # Connection pool of reusable connections.
270
+ # We use a deque to store connections because it has O(1) popleft()
271
+ # and O(1) append() operations to implement a FIFO queue.
272
+ self._conns: DefaultDict[
273
+ ConnectionKey, Deque[Tuple[ResponseHandler, float]]
274
+ ] = defaultdict(deque)
275
+ self._limit = limit
276
+ self._limit_per_host = limit_per_host
277
+ self._acquired: Set[ResponseHandler] = set()
278
+ self._acquired_per_host: DefaultDict[ConnectionKey, Set[ResponseHandler]] = (
279
+ defaultdict(set)
280
+ )
281
+ self._keepalive_timeout = cast(float, keepalive_timeout)
282
+ self._force_close = force_close
283
+
284
+ # {host_key: FIFO list of waiters}
285
+ # The FIFO is implemented with an OrderedDict with None keys because
286
+ # python does not have an ordered set.
287
+ self._waiters: DefaultDict[
288
+ ConnectionKey, OrderedDict[asyncio.Future[None], None]
289
+ ] = defaultdict(OrderedDict)
290
+
291
+ self._loop = loop
292
+ self._factory = functools.partial(ResponseHandler, loop=loop)
293
+
294
+ # start keep-alive connection cleanup task
295
+ self._cleanup_handle: Optional[asyncio.TimerHandle] = None
296
+
297
+ # start cleanup closed transports task
298
+ self._cleanup_closed_handle: Optional[asyncio.TimerHandle] = None
299
+
300
+ if enable_cleanup_closed and not NEEDS_CLEANUP_CLOSED:
301
+ warnings.warn(
302
+ "enable_cleanup_closed ignored because "
303
+ "https://github.com/python/cpython/pull/118960 is fixed "
304
+ f"in Python version {sys.version_info}",
305
+ DeprecationWarning,
306
+ stacklevel=2,
307
+ )
308
+ enable_cleanup_closed = False
309
+
310
+ self._cleanup_closed_disabled = not enable_cleanup_closed
311
+ self._cleanup_closed_transports: List[Optional[asyncio.Transport]] = []
312
+ self._cleanup_closed()
313
+
314
+ def __del__(self, _warnings: Any = warnings) -> None:
315
+ if self._closed:
316
+ return
317
+ if not self._conns:
318
+ return
319
+
320
+ conns = [repr(c) for c in self._conns.values()]
321
+
322
+ self._close()
323
+
324
+ kwargs = {"source": self}
325
+ _warnings.warn(f"Unclosed connector {self!r}", ResourceWarning, **kwargs)
326
+ context = {
327
+ "connector": self,
328
+ "connections": conns,
329
+ "message": "Unclosed connector",
330
+ }
331
+ if self._source_traceback is not None:
332
+ context["source_traceback"] = self._source_traceback
333
+ self._loop.call_exception_handler(context)
334
+
335
+ def __enter__(self) -> "BaseConnector":
336
+ warnings.warn(
337
+ '"with Connector():" is deprecated, '
338
+ 'use "async with Connector():" instead',
339
+ DeprecationWarning,
340
+ )
341
+ return self
342
+
343
+ def __exit__(self, *exc: Any) -> None:
344
+ self._close()
345
+
346
+ async def __aenter__(self) -> "BaseConnector":
347
+ return self
348
+
349
+ async def __aexit__(
350
+ self,
351
+ exc_type: Optional[Type[BaseException]] = None,
352
+ exc_value: Optional[BaseException] = None,
353
+ exc_traceback: Optional[TracebackType] = None,
354
+ ) -> None:
355
+ await self.close()
356
+
357
+ @property
358
+ def force_close(self) -> bool:
359
+ """Ultimately close connection on releasing if True."""
360
+ return self._force_close
361
+
362
+ @property
363
+ def limit(self) -> int:
364
+ """The total number for simultaneous connections.
365
+
366
+ If limit is 0 the connector has no limit.
367
+ The default limit size is 100.
368
+ """
369
+ return self._limit
370
+
371
+ @property
372
+ def limit_per_host(self) -> int:
373
+ """The limit for simultaneous connections to the same endpoint.
374
+
375
+ Endpoints are the same if they are have equal
376
+ (host, port, is_ssl) triple.
377
+ """
378
+ return self._limit_per_host
379
+
380
+ def _cleanup(self) -> None:
381
+ """Cleanup unused transports."""
382
+ if self._cleanup_handle:
383
+ self._cleanup_handle.cancel()
384
+ # _cleanup_handle should be unset, otherwise _release() will not
385
+ # recreate it ever!
386
+ self._cleanup_handle = None
387
+
388
+ now = monotonic()
389
+ timeout = self._keepalive_timeout
390
+
391
+ if self._conns:
392
+ connections = defaultdict(deque)
393
+ deadline = now - timeout
394
+ for key, conns in self._conns.items():
395
+ alive: Deque[Tuple[ResponseHandler, float]] = deque()
396
+ for proto, use_time in conns:
397
+ if proto.is_connected() and use_time - deadline >= 0:
398
+ alive.append((proto, use_time))
399
+ continue
400
+ transport = proto.transport
401
+ proto.close()
402
+ if not self._cleanup_closed_disabled and key.is_ssl:
403
+ self._cleanup_closed_transports.append(transport)
404
+
405
+ if alive:
406
+ connections[key] = alive
407
+
408
+ self._conns = connections
409
+
410
+ if self._conns:
411
+ self._cleanup_handle = helpers.weakref_handle(
412
+ self,
413
+ "_cleanup",
414
+ timeout,
415
+ self._loop,
416
+ timeout_ceil_threshold=self._timeout_ceil_threshold,
417
+ )
418
+
419
+ def _cleanup_closed(self) -> None:
420
+ """Double confirmation for transport close.
421
+
422
+ Some broken ssl servers may leave socket open without proper close.
423
+ """
424
+ if self._cleanup_closed_handle:
425
+ self._cleanup_closed_handle.cancel()
426
+
427
+ for transport in self._cleanup_closed_transports:
428
+ if transport is not None:
429
+ transport.abort()
430
+
431
+ self._cleanup_closed_transports = []
432
+
433
+ if not self._cleanup_closed_disabled:
434
+ self._cleanup_closed_handle = helpers.weakref_handle(
435
+ self,
436
+ "_cleanup_closed",
437
+ self._cleanup_closed_period,
438
+ self._loop,
439
+ timeout_ceil_threshold=self._timeout_ceil_threshold,
440
+ )
441
+
442
+ def close(self) -> Awaitable[None]:
443
+ """Close all opened transports."""
444
+ self._close()
445
+ return _DeprecationWaiter(noop())
446
+
447
+ def _close(self) -> None:
448
+ if self._closed:
449
+ return
450
+
451
+ self._closed = True
452
+
453
+ try:
454
+ if self._loop.is_closed():
455
+ return
456
+
457
+ # cancel cleanup task
458
+ if self._cleanup_handle:
459
+ self._cleanup_handle.cancel()
460
+
461
+ # cancel cleanup close task
462
+ if self._cleanup_closed_handle:
463
+ self._cleanup_closed_handle.cancel()
464
+
465
+ for data in self._conns.values():
466
+ for proto, t0 in data:
467
+ proto.close()
468
+
469
+ for proto in self._acquired:
470
+ proto.close()
471
+
472
+ for transport in self._cleanup_closed_transports:
473
+ if transport is not None:
474
+ transport.abort()
475
+
476
+ finally:
477
+ self._conns.clear()
478
+ self._acquired.clear()
479
+ for keyed_waiters in self._waiters.values():
480
+ for keyed_waiter in keyed_waiters:
481
+ keyed_waiter.cancel()
482
+ self._waiters.clear()
483
+ self._cleanup_handle = None
484
+ self._cleanup_closed_transports.clear()
485
+ self._cleanup_closed_handle = None
486
+
487
+ @property
488
+ def closed(self) -> bool:
489
+ """Is connector closed.
490
+
491
+ A readonly property.
492
+ """
493
+ return self._closed
494
+
495
+ def _available_connections(self, key: "ConnectionKey") -> int:
496
+ """
497
+ Return number of available connections.
498
+
499
+ The limit, limit_per_host and the connection key are taken into account.
500
+
501
+ If it returns less than 1 means that there are no connections
502
+ available.
503
+ """
504
+ # check total available connections
505
+ # If there are no limits, this will always return 1
506
+ total_remain = 1
507
+
508
+ if self._limit and (total_remain := self._limit - len(self._acquired)) <= 0:
509
+ return total_remain
510
+
511
+ # check limit per host
512
+ if host_remain := self._limit_per_host:
513
+ if acquired := self._acquired_per_host.get(key):
514
+ host_remain -= len(acquired)
515
+ if total_remain > host_remain:
516
+ return host_remain
517
+
518
+ return total_remain
519
+
520
+ async def connect(
521
+ self, req: ClientRequest, traces: List["Trace"], timeout: "ClientTimeout"
522
+ ) -> Connection:
523
+ """Get from pool or create new connection."""
524
+ key = req.connection_key
525
+ if (conn := await self._get(key, traces)) is not None:
526
+ # If we do not have to wait and we can get a connection from the pool
527
+ # we can avoid the timeout ceil logic and directly return the connection
528
+ return conn
529
+
530
+ async with ceil_timeout(timeout.connect, timeout.ceil_threshold):
531
+ if self._available_connections(key) <= 0:
532
+ await self._wait_for_available_connection(key, traces)
533
+ if (conn := await self._get(key, traces)) is not None:
534
+ return conn
535
+
536
+ placeholder = cast(ResponseHandler, _TransportPlaceholder())
537
+ self._acquired.add(placeholder)
538
+ if self._limit_per_host:
539
+ self._acquired_per_host[key].add(placeholder)
540
+
541
+ try:
542
+ # Traces are done inside the try block to ensure that the
543
+ # that the placeholder is still cleaned up if an exception
544
+ # is raised.
545
+ if traces:
546
+ for trace in traces:
547
+ await trace.send_connection_create_start()
548
+ proto = await self._create_connection(req, traces, timeout)
549
+ if traces:
550
+ for trace in traces:
551
+ await trace.send_connection_create_end()
552
+ except BaseException:
553
+ self._release_acquired(key, placeholder)
554
+ raise
555
+ else:
556
+ if self._closed:
557
+ proto.close()
558
+ raise ClientConnectionError("Connector is closed.")
559
+
560
+ # The connection was successfully created, drop the placeholder
561
+ # and add the real connection to the acquired set. There should
562
+ # be no awaits after the proto is added to the acquired set
563
+ # to ensure that the connection is not left in the acquired set
564
+ # on cancellation.
565
+ self._acquired.remove(placeholder)
566
+ self._acquired.add(proto)
567
+ if self._limit_per_host:
568
+ acquired_per_host = self._acquired_per_host[key]
569
+ acquired_per_host.remove(placeholder)
570
+ acquired_per_host.add(proto)
571
+ return Connection(self, key, proto, self._loop)
572
+
573
+ async def _wait_for_available_connection(
574
+ self, key: "ConnectionKey", traces: List["Trace"]
575
+ ) -> None:
576
+ """Wait for an available connection slot."""
577
+ # We loop here because there is a race between
578
+ # the connection limit check and the connection
579
+ # being acquired. If the connection is acquired
580
+ # between the check and the await statement, we
581
+ # need to loop again to check if the connection
582
+ # slot is still available.
583
+ attempts = 0
584
+ while True:
585
+ fut: asyncio.Future[None] = self._loop.create_future()
586
+ keyed_waiters = self._waiters[key]
587
+ keyed_waiters[fut] = None
588
+ if attempts:
589
+ # If we have waited before, we need to move the waiter
590
+ # to the front of the queue as otherwise we might get
591
+ # starved and hit the timeout.
592
+ keyed_waiters.move_to_end(fut, last=False)
593
+
594
+ try:
595
+ # Traces happen in the try block to ensure that the
596
+ # the waiter is still cleaned up if an exception is raised.
597
+ if traces:
598
+ for trace in traces:
599
+ await trace.send_connection_queued_start()
600
+ await fut
601
+ if traces:
602
+ for trace in traces:
603
+ await trace.send_connection_queued_end()
604
+ finally:
605
+ # pop the waiter from the queue if its still
606
+ # there and not already removed by _release_waiter
607
+ keyed_waiters.pop(fut, None)
608
+ if not self._waiters.get(key, True):
609
+ del self._waiters[key]
610
+
611
+ if self._available_connections(key) > 0:
612
+ break
613
+ attempts += 1
614
+
615
+ async def _get(
616
+ self, key: "ConnectionKey", traces: List["Trace"]
617
+ ) -> Optional[Connection]:
618
+ """Get next reusable connection for the key or None.
619
+
620
+ The connection will be marked as acquired.
621
+ """
622
+ if (conns := self._conns.get(key)) is None:
623
+ return None
624
+
625
+ t1 = monotonic()
626
+ while conns:
627
+ proto, t0 = conns.popleft()
628
+ # We will we reuse the connection if its connected and
629
+ # the keepalive timeout has not been exceeded
630
+ if proto.is_connected() and t1 - t0 <= self._keepalive_timeout:
631
+ if not conns:
632
+ # The very last connection was reclaimed: drop the key
633
+ del self._conns[key]
634
+ self._acquired.add(proto)
635
+ if self._limit_per_host:
636
+ self._acquired_per_host[key].add(proto)
637
+ if traces:
638
+ for trace in traces:
639
+ try:
640
+ await trace.send_connection_reuseconn()
641
+ except BaseException:
642
+ self._release_acquired(key, proto)
643
+ raise
644
+ return Connection(self, key, proto, self._loop)
645
+
646
+ # Connection cannot be reused, close it
647
+ transport = proto.transport
648
+ proto.close()
649
+ # only for SSL transports
650
+ if not self._cleanup_closed_disabled and key.is_ssl:
651
+ self._cleanup_closed_transports.append(transport)
652
+
653
+ # No more connections: drop the key
654
+ del self._conns[key]
655
+ return None
656
+
657
+ def _release_waiter(self) -> None:
658
+ """
659
+ Iterates over all waiters until one to be released is found.
660
+
661
+ The one to be released is not finished and
662
+ belongs to a host that has available connections.
663
+ """
664
+ if not self._waiters:
665
+ return
666
+
667
+ # Having the dict keys ordered this avoids to iterate
668
+ # at the same order at each call.
669
+ queues = list(self._waiters)
670
+ random.shuffle(queues)
671
+
672
+ for key in queues:
673
+ if self._available_connections(key) < 1:
674
+ continue
675
+
676
+ waiters = self._waiters[key]
677
+ while waiters:
678
+ waiter, _ = waiters.popitem(last=False)
679
+ if not waiter.done():
680
+ waiter.set_result(None)
681
+ return
682
+
683
+ def _release_acquired(self, key: "ConnectionKey", proto: ResponseHandler) -> None:
684
+ """Release acquired connection."""
685
+ if self._closed:
686
+ # acquired connection is already released on connector closing
687
+ return
688
+
689
+ self._acquired.discard(proto)
690
+ if self._limit_per_host and (conns := self._acquired_per_host.get(key)):
691
+ conns.discard(proto)
692
+ if not conns:
693
+ del self._acquired_per_host[key]
694
+ self._release_waiter()
695
+
696
+ def _release(
697
+ self,
698
+ key: "ConnectionKey",
699
+ protocol: ResponseHandler,
700
+ *,
701
+ should_close: bool = False,
702
+ ) -> None:
703
+ if self._closed:
704
+ # acquired connection is already released on connector closing
705
+ return
706
+
707
+ self._release_acquired(key, protocol)
708
+
709
+ if self._force_close or should_close or protocol.should_close:
710
+ transport = protocol.transport
711
+ protocol.close()
712
+
713
+ if key.is_ssl and not self._cleanup_closed_disabled:
714
+ self._cleanup_closed_transports.append(transport)
715
+ return
716
+
717
+ self._conns[key].append((protocol, monotonic()))
718
+
719
+ if self._cleanup_handle is None:
720
+ self._cleanup_handle = helpers.weakref_handle(
721
+ self,
722
+ "_cleanup",
723
+ self._keepalive_timeout,
724
+ self._loop,
725
+ timeout_ceil_threshold=self._timeout_ceil_threshold,
726
+ )
727
+
728
+ async def _create_connection(
729
+ self, req: ClientRequest, traces: List["Trace"], timeout: "ClientTimeout"
730
+ ) -> ResponseHandler:
731
+ raise NotImplementedError()
732
+
733
+
734
+ class _DNSCacheTable:
735
+ def __init__(self, ttl: Optional[float] = None) -> None:
736
+ self._addrs_rr: Dict[Tuple[str, int], Tuple[Iterator[ResolveResult], int]] = {}
737
+ self._timestamps: Dict[Tuple[str, int], float] = {}
738
+ self._ttl = ttl
739
+
740
+ def __contains__(self, host: object) -> bool:
741
+ return host in self._addrs_rr
742
+
743
+ def add(self, key: Tuple[str, int], addrs: List[ResolveResult]) -> None:
744
+ self._addrs_rr[key] = (cycle(addrs), len(addrs))
745
+
746
+ if self._ttl is not None:
747
+ self._timestamps[key] = monotonic()
748
+
749
+ def remove(self, key: Tuple[str, int]) -> None:
750
+ self._addrs_rr.pop(key, None)
751
+
752
+ if self._ttl is not None:
753
+ self._timestamps.pop(key, None)
754
+
755
+ def clear(self) -> None:
756
+ self._addrs_rr.clear()
757
+ self._timestamps.clear()
758
+
759
+ def next_addrs(self, key: Tuple[str, int]) -> List[ResolveResult]:
760
+ loop, length = self._addrs_rr[key]
761
+ addrs = list(islice(loop, length))
762
+ # Consume one more element to shift internal state of `cycle`
763
+ next(loop)
764
+ return addrs
765
+
766
+ def expired(self, key: Tuple[str, int]) -> bool:
767
+ if self._ttl is None:
768
+ return False
769
+
770
+ return self._timestamps[key] + self._ttl < monotonic()
771
+
772
+
773
+ def _make_ssl_context(verified: bool) -> SSLContext:
774
+ """Create SSL context.
775
+
776
+ This method is not async-friendly and should be called from a thread
777
+ because it will load certificates from disk and do other blocking I/O.
778
+ """
779
+ if ssl is None:
780
+ # No ssl support
781
+ return None
782
+ if verified:
783
+ sslcontext = ssl.create_default_context()
784
+ else:
785
+ sslcontext = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
786
+ sslcontext.options |= ssl.OP_NO_SSLv2
787
+ sslcontext.options |= ssl.OP_NO_SSLv3
788
+ sslcontext.check_hostname = False
789
+ sslcontext.verify_mode = ssl.CERT_NONE
790
+ sslcontext.options |= ssl.OP_NO_COMPRESSION
791
+ sslcontext.set_default_verify_paths()
792
+ sslcontext.set_alpn_protocols(("http/1.1",))
793
+ return sslcontext
794
+
795
+
796
+ # The default SSLContext objects are created at import time
797
+ # since they do blocking I/O to load certificates from disk,
798
+ # and imports should always be done before the event loop starts
799
+ # or in a thread.
800
+ _SSL_CONTEXT_VERIFIED = _make_ssl_context(True)
801
+ _SSL_CONTEXT_UNVERIFIED = _make_ssl_context(False)
802
+
803
+
804
+ class TCPConnector(BaseConnector):
805
+ """TCP connector.
806
+
807
+ verify_ssl - Set to True to check ssl certifications.
808
+ fingerprint - Pass the binary sha256
809
+ digest of the expected certificate in DER format to verify
810
+ that the certificate the server presents matches. See also
811
+ https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning
812
+ resolver - Enable DNS lookups and use this
813
+ resolver
814
+ use_dns_cache - Use memory cache for DNS lookups.
815
+ ttl_dns_cache - Max seconds having cached a DNS entry, None forever.
816
+ family - socket address family
817
+ local_addr - local tuple of (host, port) to bind socket to
818
+
819
+ keepalive_timeout - (optional) Keep-alive timeout.
820
+ force_close - Set to True to force close and do reconnect
821
+ after each request (and between redirects).
822
+ limit - The total number of simultaneous connections.
823
+ limit_per_host - Number of simultaneous connections to one host.
824
+ enable_cleanup_closed - Enables clean-up closed ssl transports.
825
+ Disabled by default.
826
+ happy_eyeballs_delay - This is the “Connection Attempt Delay”
827
+ as defined in RFC 8305. To disable
828
+ the happy eyeballs algorithm, set to None.
829
+ interleave - “First Address Family Count” as defined in RFC 8305
830
+ loop - Optional event loop.
831
+ """
832
+
833
+ allowed_protocol_schema_set = HIGH_LEVEL_SCHEMA_SET | frozenset({"tcp"})
834
+
835
+ def __init__(
836
+ self,
837
+ *,
838
+ verify_ssl: bool = True,
839
+ fingerprint: Optional[bytes] = None,
840
+ use_dns_cache: bool = True,
841
+ ttl_dns_cache: Optional[int] = 10,
842
+ family: socket.AddressFamily = socket.AddressFamily.AF_UNSPEC,
843
+ ssl_context: Optional[SSLContext] = None,
844
+ ssl: Union[bool, Fingerprint, SSLContext] = True,
845
+ local_addr: Optional[Tuple[str, int]] = None,
846
+ resolver: Optional[AbstractResolver] = None,
847
+ keepalive_timeout: Union[None, float, object] = sentinel,
848
+ force_close: bool = False,
849
+ limit: int = 100,
850
+ limit_per_host: int = 0,
851
+ enable_cleanup_closed: bool = False,
852
+ loop: Optional[asyncio.AbstractEventLoop] = None,
853
+ timeout_ceil_threshold: float = 5,
854
+ happy_eyeballs_delay: Optional[float] = 0.25,
855
+ interleave: Optional[int] = None,
856
+ ):
857
+ super().__init__(
858
+ keepalive_timeout=keepalive_timeout,
859
+ force_close=force_close,
860
+ limit=limit,
861
+ limit_per_host=limit_per_host,
862
+ enable_cleanup_closed=enable_cleanup_closed,
863
+ loop=loop,
864
+ timeout_ceil_threshold=timeout_ceil_threshold,
865
+ )
866
+
867
+ self._ssl = _merge_ssl_params(ssl, verify_ssl, ssl_context, fingerprint)
868
+ if resolver is None:
869
+ resolver = DefaultResolver(loop=self._loop)
870
+ self._resolver = resolver
871
+
872
+ self._use_dns_cache = use_dns_cache
873
+ self._cached_hosts = _DNSCacheTable(ttl=ttl_dns_cache)
874
+ self._throttle_dns_futures: Dict[
875
+ Tuple[str, int], Set["asyncio.Future[None]"]
876
+ ] = {}
877
+ self._family = family
878
+ self._local_addr_infos = aiohappyeyeballs.addr_to_addr_infos(local_addr)
879
+ self._happy_eyeballs_delay = happy_eyeballs_delay
880
+ self._interleave = interleave
881
+ self._resolve_host_tasks: Set["asyncio.Task[List[ResolveResult]]"] = set()
882
+
883
+ def close(self) -> Awaitable[None]:
884
+ """Close all ongoing DNS calls."""
885
+ for fut in chain.from_iterable(self._throttle_dns_futures.values()):
886
+ fut.cancel()
887
+
888
+ for t in self._resolve_host_tasks:
889
+ t.cancel()
890
+
891
+ return super().close()
892
+
893
+ @property
894
+ def family(self) -> int:
895
+ """Socket family like AF_INET."""
896
+ return self._family
897
+
898
+ @property
899
+ def use_dns_cache(self) -> bool:
900
+ """True if local DNS caching is enabled."""
901
+ return self._use_dns_cache
902
+
903
+ def clear_dns_cache(
904
+ self, host: Optional[str] = None, port: Optional[int] = None
905
+ ) -> None:
906
+ """Remove specified host/port or clear all dns local cache."""
907
+ if host is not None and port is not None:
908
+ self._cached_hosts.remove((host, port))
909
+ elif host is not None or port is not None:
910
+ raise ValueError("either both host and port or none of them are allowed")
911
+ else:
912
+ self._cached_hosts.clear()
913
+
914
+ async def _resolve_host(
915
+ self, host: str, port: int, traces: Optional[Sequence["Trace"]] = None
916
+ ) -> List[ResolveResult]:
917
+ """Resolve host and return list of addresses."""
918
+ if is_ip_address(host):
919
+ return [
920
+ {
921
+ "hostname": host,
922
+ "host": host,
923
+ "port": port,
924
+ "family": self._family,
925
+ "proto": 0,
926
+ "flags": 0,
927
+ }
928
+ ]
929
+
930
+ if not self._use_dns_cache:
931
+
932
+ if traces:
933
+ for trace in traces:
934
+ await trace.send_dns_resolvehost_start(host)
935
+
936
+ res = await self._resolver.resolve(host, port, family=self._family)
937
+
938
+ if traces:
939
+ for trace in traces:
940
+ await trace.send_dns_resolvehost_end(host)
941
+
942
+ return res
943
+
944
+ key = (host, port)
945
+ if key in self._cached_hosts and not self._cached_hosts.expired(key):
946
+ # get result early, before any await (#4014)
947
+ result = self._cached_hosts.next_addrs(key)
948
+
949
+ if traces:
950
+ for trace in traces:
951
+ await trace.send_dns_cache_hit(host)
952
+ return result
953
+
954
+ futures: Set["asyncio.Future[None]"]
955
+ #
956
+ # If multiple connectors are resolving the same host, we wait
957
+ # for the first one to resolve and then use the result for all of them.
958
+ # We use a throttle to ensure that we only resolve the host once
959
+ # and then use the result for all the waiters.
960
+ #
961
+ if key in self._throttle_dns_futures:
962
+ # get futures early, before any await (#4014)
963
+ futures = self._throttle_dns_futures[key]
964
+ future: asyncio.Future[None] = self._loop.create_future()
965
+ futures.add(future)
966
+ if traces:
967
+ for trace in traces:
968
+ await trace.send_dns_cache_hit(host)
969
+ try:
970
+ await future
971
+ finally:
972
+ futures.discard(future)
973
+ return self._cached_hosts.next_addrs(key)
974
+
975
+ # update dict early, before any await (#4014)
976
+ self._throttle_dns_futures[key] = futures = set()
977
+ # In this case we need to create a task to ensure that we can shield
978
+ # the task from cancellation as cancelling this lookup should not cancel
979
+ # the underlying lookup or else the cancel event will get broadcast to
980
+ # all the waiters across all connections.
981
+ #
982
+ coro = self._resolve_host_with_throttle(key, host, port, futures, traces)
983
+ loop = asyncio.get_running_loop()
984
+ if sys.version_info >= (3, 12):
985
+ # Optimization for Python 3.12, try to send immediately
986
+ resolved_host_task = asyncio.Task(coro, loop=loop, eager_start=True)
987
+ else:
988
+ resolved_host_task = loop.create_task(coro)
989
+
990
+ if not resolved_host_task.done():
991
+ self._resolve_host_tasks.add(resolved_host_task)
992
+ resolved_host_task.add_done_callback(self._resolve_host_tasks.discard)
993
+
994
+ try:
995
+ return await asyncio.shield(resolved_host_task)
996
+ except asyncio.CancelledError:
997
+
998
+ def drop_exception(fut: "asyncio.Future[List[ResolveResult]]") -> None:
999
+ with suppress(Exception, asyncio.CancelledError):
1000
+ fut.result()
1001
+
1002
+ resolved_host_task.add_done_callback(drop_exception)
1003
+ raise
1004
+
1005
+ async def _resolve_host_with_throttle(
1006
+ self,
1007
+ key: Tuple[str, int],
1008
+ host: str,
1009
+ port: int,
1010
+ futures: Set["asyncio.Future[None]"],
1011
+ traces: Optional[Sequence["Trace"]],
1012
+ ) -> List[ResolveResult]:
1013
+ """Resolve host and set result for all waiters.
1014
+
1015
+ This method must be run in a task and shielded from cancellation
1016
+ to avoid cancelling the underlying lookup.
1017
+ """
1018
+ if traces:
1019
+ for trace in traces:
1020
+ await trace.send_dns_cache_miss(host)
1021
+ try:
1022
+ if traces:
1023
+ for trace in traces:
1024
+ await trace.send_dns_resolvehost_start(host)
1025
+
1026
+ addrs = await self._resolver.resolve(host, port, family=self._family)
1027
+ if traces:
1028
+ for trace in traces:
1029
+ await trace.send_dns_resolvehost_end(host)
1030
+
1031
+ self._cached_hosts.add(key, addrs)
1032
+ for fut in futures:
1033
+ set_result(fut, None)
1034
+ except BaseException as e:
1035
+ # any DNS exception is set for the waiters to raise the same exception.
1036
+ # This coro is always run in task that is shielded from cancellation so
1037
+ # we should never be propagating cancellation here.
1038
+ for fut in futures:
1039
+ set_exception(fut, e)
1040
+ raise
1041
+ finally:
1042
+ self._throttle_dns_futures.pop(key)
1043
+
1044
+ return self._cached_hosts.next_addrs(key)
1045
+
1046
+ async def _create_connection(
1047
+ self, req: ClientRequest, traces: List["Trace"], timeout: "ClientTimeout"
1048
+ ) -> ResponseHandler:
1049
+ """Create connection.
1050
+
1051
+ Has same keyword arguments as BaseEventLoop.create_connection.
1052
+ """
1053
+ if req.proxy:
1054
+ _, proto = await self._create_proxy_connection(req, traces, timeout)
1055
+ else:
1056
+ _, proto = await self._create_direct_connection(req, traces, timeout)
1057
+
1058
+ return proto
1059
+
1060
+ def _get_ssl_context(self, req: ClientRequest) -> Optional[SSLContext]:
1061
+ """Logic to get the correct SSL context
1062
+
1063
+ 0. if req.ssl is false, return None
1064
+
1065
+ 1. if ssl_context is specified in req, use it
1066
+ 2. if _ssl_context is specified in self, use it
1067
+ 3. otherwise:
1068
+ 1. if verify_ssl is not specified in req, use self.ssl_context
1069
+ (will generate a default context according to self.verify_ssl)
1070
+ 2. if verify_ssl is True in req, generate a default SSL context
1071
+ 3. if verify_ssl is False in req, generate a SSL context that
1072
+ won't verify
1073
+ """
1074
+ if not req.is_ssl():
1075
+ return None
1076
+
1077
+ if ssl is None: # pragma: no cover
1078
+ raise RuntimeError("SSL is not supported.")
1079
+ sslcontext = req.ssl
1080
+ if isinstance(sslcontext, ssl.SSLContext):
1081
+ return sslcontext
1082
+ if sslcontext is not True:
1083
+ # not verified or fingerprinted
1084
+ return _SSL_CONTEXT_UNVERIFIED
1085
+ sslcontext = self._ssl
1086
+ if isinstance(sslcontext, ssl.SSLContext):
1087
+ return sslcontext
1088
+ if sslcontext is not True:
1089
+ # not verified or fingerprinted
1090
+ return _SSL_CONTEXT_UNVERIFIED
1091
+ return _SSL_CONTEXT_VERIFIED
1092
+
1093
+ def _get_fingerprint(self, req: ClientRequest) -> Optional["Fingerprint"]:
1094
+ ret = req.ssl
1095
+ if isinstance(ret, Fingerprint):
1096
+ return ret
1097
+ ret = self._ssl
1098
+ if isinstance(ret, Fingerprint):
1099
+ return ret
1100
+ return None
1101
+
1102
+ async def _wrap_create_connection(
1103
+ self,
1104
+ *args: Any,
1105
+ addr_infos: List[aiohappyeyeballs.AddrInfoType],
1106
+ req: ClientRequest,
1107
+ timeout: "ClientTimeout",
1108
+ client_error: Type[Exception] = ClientConnectorError,
1109
+ **kwargs: Any,
1110
+ ) -> Tuple[asyncio.Transport, ResponseHandler]:
1111
+ try:
1112
+ async with ceil_timeout(
1113
+ timeout.sock_connect, ceil_threshold=timeout.ceil_threshold
1114
+ ):
1115
+ sock = await aiohappyeyeballs.start_connection(
1116
+ addr_infos=addr_infos,
1117
+ local_addr_infos=self._local_addr_infos,
1118
+ happy_eyeballs_delay=self._happy_eyeballs_delay,
1119
+ interleave=self._interleave,
1120
+ loop=self._loop,
1121
+ )
1122
+ return await self._loop.create_connection(*args, **kwargs, sock=sock)
1123
+ except cert_errors as exc:
1124
+ raise ClientConnectorCertificateError(req.connection_key, exc) from exc
1125
+ except ssl_errors as exc:
1126
+ raise ClientConnectorSSLError(req.connection_key, exc) from exc
1127
+ except OSError as exc:
1128
+ if exc.errno is None and isinstance(exc, asyncio.TimeoutError):
1129
+ raise
1130
+ raise client_error(req.connection_key, exc) from exc
1131
+
1132
+ async def _wrap_existing_connection(
1133
+ self,
1134
+ *args: Any,
1135
+ req: ClientRequest,
1136
+ timeout: "ClientTimeout",
1137
+ client_error: Type[Exception] = ClientConnectorError,
1138
+ **kwargs: Any,
1139
+ ) -> Tuple[asyncio.Transport, ResponseHandler]:
1140
+ try:
1141
+ async with ceil_timeout(
1142
+ timeout.sock_connect, ceil_threshold=timeout.ceil_threshold
1143
+ ):
1144
+ return await self._loop.create_connection(*args, **kwargs)
1145
+ except cert_errors as exc:
1146
+ raise ClientConnectorCertificateError(req.connection_key, exc) from exc
1147
+ except ssl_errors as exc:
1148
+ raise ClientConnectorSSLError(req.connection_key, exc) from exc
1149
+ except OSError as exc:
1150
+ if exc.errno is None and isinstance(exc, asyncio.TimeoutError):
1151
+ raise
1152
+ raise client_error(req.connection_key, exc) from exc
1153
+
1154
+ def _fail_on_no_start_tls(self, req: "ClientRequest") -> None:
1155
+ """Raise a :py:exc:`RuntimeError` on missing ``start_tls()``.
1156
+
1157
+ It is necessary for TLS-in-TLS so that it is possible to
1158
+ send HTTPS queries through HTTPS proxies.
1159
+
1160
+ This doesn't affect regular HTTP requests, though.
1161
+ """
1162
+ if not req.is_ssl():
1163
+ return
1164
+
1165
+ proxy_url = req.proxy
1166
+ assert proxy_url is not None
1167
+ if proxy_url.scheme != "https":
1168
+ return
1169
+
1170
+ self._check_loop_for_start_tls()
1171
+
1172
+ def _check_loop_for_start_tls(self) -> None:
1173
+ try:
1174
+ self._loop.start_tls
1175
+ except AttributeError as attr_exc:
1176
+ raise RuntimeError(
1177
+ "An HTTPS request is being sent through an HTTPS proxy. "
1178
+ "This needs support for TLS in TLS but it is not implemented "
1179
+ "in your runtime for the stdlib asyncio.\n\n"
1180
+ "Please upgrade to Python 3.11 or higher. For more details, "
1181
+ "please see:\n"
1182
+ "* https://bugs.python.org/issue37179\n"
1183
+ "* https://github.com/python/cpython/pull/28073\n"
1184
+ "* https://docs.aiohttp.org/en/stable/"
1185
+ "client_advanced.html#proxy-support\n"
1186
+ "* https://github.com/aio-libs/aiohttp/discussions/6044\n",
1187
+ ) from attr_exc
1188
+
1189
+ def _loop_supports_start_tls(self) -> bool:
1190
+ try:
1191
+ self._check_loop_for_start_tls()
1192
+ except RuntimeError:
1193
+ return False
1194
+ else:
1195
+ return True
1196
+
1197
+ def _warn_about_tls_in_tls(
1198
+ self,
1199
+ underlying_transport: asyncio.Transport,
1200
+ req: ClientRequest,
1201
+ ) -> None:
1202
+ """Issue a warning if the requested URL has HTTPS scheme."""
1203
+ if req.request_info.url.scheme != "https":
1204
+ return
1205
+
1206
+ asyncio_supports_tls_in_tls = getattr(
1207
+ underlying_transport,
1208
+ "_start_tls_compatible",
1209
+ False,
1210
+ )
1211
+
1212
+ if asyncio_supports_tls_in_tls:
1213
+ return
1214
+
1215
+ warnings.warn(
1216
+ "An HTTPS request is being sent through an HTTPS proxy. "
1217
+ "This support for TLS in TLS is known to be disabled "
1218
+ "in the stdlib asyncio (Python <3.11). This is why you'll probably see "
1219
+ "an error in the log below.\n\n"
1220
+ "It is possible to enable it via monkeypatching. "
1221
+ "For more details, see:\n"
1222
+ "* https://bugs.python.org/issue37179\n"
1223
+ "* https://github.com/python/cpython/pull/28073\n\n"
1224
+ "You can temporarily patch this as follows:\n"
1225
+ "* https://docs.aiohttp.org/en/stable/client_advanced.html#proxy-support\n"
1226
+ "* https://github.com/aio-libs/aiohttp/discussions/6044\n",
1227
+ RuntimeWarning,
1228
+ source=self,
1229
+ # Why `4`? At least 3 of the calls in the stack originate
1230
+ # from the methods in this class.
1231
+ stacklevel=3,
1232
+ )
1233
+
1234
+ async def _start_tls_connection(
1235
+ self,
1236
+ underlying_transport: asyncio.Transport,
1237
+ req: ClientRequest,
1238
+ timeout: "ClientTimeout",
1239
+ client_error: Type[Exception] = ClientConnectorError,
1240
+ ) -> Tuple[asyncio.BaseTransport, ResponseHandler]:
1241
+ """Wrap the raw TCP transport with TLS."""
1242
+ tls_proto = self._factory() # Create a brand new proto for TLS
1243
+ sslcontext = self._get_ssl_context(req)
1244
+ if TYPE_CHECKING:
1245
+ # _start_tls_connection is unreachable in the current code path
1246
+ # if sslcontext is None.
1247
+ assert sslcontext is not None
1248
+
1249
+ try:
1250
+ async with ceil_timeout(
1251
+ timeout.sock_connect, ceil_threshold=timeout.ceil_threshold
1252
+ ):
1253
+ try:
1254
+ tls_transport = await self._loop.start_tls(
1255
+ underlying_transport,
1256
+ tls_proto,
1257
+ sslcontext,
1258
+ server_hostname=req.server_hostname or req.host,
1259
+ ssl_handshake_timeout=timeout.total,
1260
+ )
1261
+ except BaseException:
1262
+ # We need to close the underlying transport since
1263
+ # `start_tls()` probably failed before it had a
1264
+ # chance to do this:
1265
+ underlying_transport.close()
1266
+ raise
1267
+ if isinstance(tls_transport, asyncio.Transport):
1268
+ fingerprint = self._get_fingerprint(req)
1269
+ if fingerprint:
1270
+ try:
1271
+ fingerprint.check(tls_transport)
1272
+ except ServerFingerprintMismatch:
1273
+ tls_transport.close()
1274
+ if not self._cleanup_closed_disabled:
1275
+ self._cleanup_closed_transports.append(tls_transport)
1276
+ raise
1277
+ except cert_errors as exc:
1278
+ raise ClientConnectorCertificateError(req.connection_key, exc) from exc
1279
+ except ssl_errors as exc:
1280
+ raise ClientConnectorSSLError(req.connection_key, exc) from exc
1281
+ except OSError as exc:
1282
+ if exc.errno is None and isinstance(exc, asyncio.TimeoutError):
1283
+ raise
1284
+ raise client_error(req.connection_key, exc) from exc
1285
+ except TypeError as type_err:
1286
+ # Example cause looks like this:
1287
+ # TypeError: transport <asyncio.sslproto._SSLProtocolTransport
1288
+ # object at 0x7f760615e460> is not supported by start_tls()
1289
+
1290
+ raise ClientConnectionError(
1291
+ "Cannot initialize a TLS-in-TLS connection to host "
1292
+ f"{req.host!s}:{req.port:d} through an underlying connection "
1293
+ f"to an HTTPS proxy {req.proxy!s} ssl:{req.ssl or 'default'} "
1294
+ f"[{type_err!s}]"
1295
+ ) from type_err
1296
+ else:
1297
+ if tls_transport is None:
1298
+ msg = "Failed to start TLS (possibly caused by closing transport)"
1299
+ raise client_error(req.connection_key, OSError(msg))
1300
+ tls_proto.connection_made(
1301
+ tls_transport
1302
+ ) # Kick the state machine of the new TLS protocol
1303
+
1304
+ return tls_transport, tls_proto
1305
+
1306
+ def _convert_hosts_to_addr_infos(
1307
+ self, hosts: List[ResolveResult]
1308
+ ) -> List[aiohappyeyeballs.AddrInfoType]:
1309
+ """Converts the list of hosts to a list of addr_infos.
1310
+
1311
+ The list of hosts is the result of a DNS lookup. The list of
1312
+ addr_infos is the result of a call to `socket.getaddrinfo()`.
1313
+ """
1314
+ addr_infos: List[aiohappyeyeballs.AddrInfoType] = []
1315
+ for hinfo in hosts:
1316
+ host = hinfo["host"]
1317
+ is_ipv6 = ":" in host
1318
+ family = socket.AF_INET6 if is_ipv6 else socket.AF_INET
1319
+ if self._family and self._family != family:
1320
+ continue
1321
+ addr = (host, hinfo["port"], 0, 0) if is_ipv6 else (host, hinfo["port"])
1322
+ addr_infos.append(
1323
+ (family, socket.SOCK_STREAM, socket.IPPROTO_TCP, "", addr)
1324
+ )
1325
+ return addr_infos
1326
+
1327
+ async def _create_direct_connection(
1328
+ self,
1329
+ req: ClientRequest,
1330
+ traces: List["Trace"],
1331
+ timeout: "ClientTimeout",
1332
+ *,
1333
+ client_error: Type[Exception] = ClientConnectorError,
1334
+ ) -> Tuple[asyncio.Transport, ResponseHandler]:
1335
+ sslcontext = self._get_ssl_context(req)
1336
+ fingerprint = self._get_fingerprint(req)
1337
+
1338
+ host = req.url.raw_host
1339
+ assert host is not None
1340
+ # Replace multiple trailing dots with a single one.
1341
+ # A trailing dot is only present for fully-qualified domain names.
1342
+ # See https://github.com/aio-libs/aiohttp/pull/7364.
1343
+ if host.endswith(".."):
1344
+ host = host.rstrip(".") + "."
1345
+ port = req.port
1346
+ assert port is not None
1347
+ try:
1348
+ # Cancelling this lookup should not cancel the underlying lookup
1349
+ # or else the cancel event will get broadcast to all the waiters
1350
+ # across all connections.
1351
+ hosts = await self._resolve_host(host, port, traces=traces)
1352
+ except OSError as exc:
1353
+ if exc.errno is None and isinstance(exc, asyncio.TimeoutError):
1354
+ raise
1355
+ # in case of proxy it is not ClientProxyConnectionError
1356
+ # it is problem of resolving proxy ip itself
1357
+ raise ClientConnectorDNSError(req.connection_key, exc) from exc
1358
+
1359
+ last_exc: Optional[Exception] = None
1360
+ addr_infos = self._convert_hosts_to_addr_infos(hosts)
1361
+ while addr_infos:
1362
+ # Strip trailing dots, certificates contain FQDN without dots.
1363
+ # See https://github.com/aio-libs/aiohttp/issues/3636
1364
+ server_hostname = (
1365
+ (req.server_hostname or host).rstrip(".") if sslcontext else None
1366
+ )
1367
+
1368
+ try:
1369
+ transp, proto = await self._wrap_create_connection(
1370
+ self._factory,
1371
+ timeout=timeout,
1372
+ ssl=sslcontext,
1373
+ addr_infos=addr_infos,
1374
+ server_hostname=server_hostname,
1375
+ req=req,
1376
+ client_error=client_error,
1377
+ )
1378
+ except (ClientConnectorError, asyncio.TimeoutError) as exc:
1379
+ last_exc = exc
1380
+ aiohappyeyeballs.pop_addr_infos_interleave(addr_infos, self._interleave)
1381
+ continue
1382
+
1383
+ if req.is_ssl() and fingerprint:
1384
+ try:
1385
+ fingerprint.check(transp)
1386
+ except ServerFingerprintMismatch as exc:
1387
+ transp.close()
1388
+ if not self._cleanup_closed_disabled:
1389
+ self._cleanup_closed_transports.append(transp)
1390
+ last_exc = exc
1391
+ # Remove the bad peer from the list of addr_infos
1392
+ sock: socket.socket = transp.get_extra_info("socket")
1393
+ bad_peer = sock.getpeername()
1394
+ aiohappyeyeballs.remove_addr_infos(addr_infos, bad_peer)
1395
+ continue
1396
+
1397
+ return transp, proto
1398
+ else:
1399
+ assert last_exc is not None
1400
+ raise last_exc
1401
+
1402
+ async def _create_proxy_connection(
1403
+ self, req: ClientRequest, traces: List["Trace"], timeout: "ClientTimeout"
1404
+ ) -> Tuple[asyncio.BaseTransport, ResponseHandler]:
1405
+ self._fail_on_no_start_tls(req)
1406
+ runtime_has_start_tls = self._loop_supports_start_tls()
1407
+
1408
+ headers: Dict[str, str] = {}
1409
+ if req.proxy_headers is not None:
1410
+ headers = req.proxy_headers # type: ignore[assignment]
1411
+ headers[hdrs.HOST] = req.headers[hdrs.HOST]
1412
+
1413
+ url = req.proxy
1414
+ assert url is not None
1415
+ proxy_req = ClientRequest(
1416
+ hdrs.METH_GET,
1417
+ url,
1418
+ headers=headers,
1419
+ auth=req.proxy_auth,
1420
+ loop=self._loop,
1421
+ ssl=req.ssl,
1422
+ )
1423
+
1424
+ # create connection to proxy server
1425
+ transport, proto = await self._create_direct_connection(
1426
+ proxy_req, [], timeout, client_error=ClientProxyConnectionError
1427
+ )
1428
+
1429
+ auth = proxy_req.headers.pop(hdrs.AUTHORIZATION, None)
1430
+ if auth is not None:
1431
+ if not req.is_ssl():
1432
+ req.headers[hdrs.PROXY_AUTHORIZATION] = auth
1433
+ else:
1434
+ proxy_req.headers[hdrs.PROXY_AUTHORIZATION] = auth
1435
+
1436
+ if req.is_ssl():
1437
+ if runtime_has_start_tls:
1438
+ self._warn_about_tls_in_tls(transport, req)
1439
+
1440
+ # For HTTPS requests over HTTP proxy
1441
+ # we must notify proxy to tunnel connection
1442
+ # so we send CONNECT command:
1443
+ # CONNECT www.python.org:443 HTTP/1.1
1444
+ # Host: www.python.org
1445
+ #
1446
+ # next we must do TLS handshake and so on
1447
+ # to do this we must wrap raw socket into secure one
1448
+ # asyncio handles this perfectly
1449
+ proxy_req.method = hdrs.METH_CONNECT
1450
+ proxy_req.url = req.url
1451
+ key = req.connection_key._replace(
1452
+ proxy=None, proxy_auth=None, proxy_headers_hash=None
1453
+ )
1454
+ conn = Connection(self, key, proto, self._loop)
1455
+ proxy_resp = await proxy_req.send(conn)
1456
+ try:
1457
+ protocol = conn._protocol
1458
+ assert protocol is not None
1459
+
1460
+ # read_until_eof=True will ensure the connection isn't closed
1461
+ # once the response is received and processed allowing
1462
+ # START_TLS to work on the connection below.
1463
+ protocol.set_response_params(
1464
+ read_until_eof=runtime_has_start_tls,
1465
+ timeout_ceil_threshold=self._timeout_ceil_threshold,
1466
+ )
1467
+ resp = await proxy_resp.start(conn)
1468
+ except BaseException:
1469
+ proxy_resp.close()
1470
+ conn.close()
1471
+ raise
1472
+ else:
1473
+ conn._protocol = None
1474
+ try:
1475
+ if resp.status != 200:
1476
+ message = resp.reason
1477
+ if message is None:
1478
+ message = HTTPStatus(resp.status).phrase
1479
+ raise ClientHttpProxyError(
1480
+ proxy_resp.request_info,
1481
+ resp.history,
1482
+ status=resp.status,
1483
+ message=message,
1484
+ headers=resp.headers,
1485
+ )
1486
+ if not runtime_has_start_tls:
1487
+ rawsock = transport.get_extra_info("socket", default=None)
1488
+ if rawsock is None:
1489
+ raise RuntimeError(
1490
+ "Transport does not expose socket instance"
1491
+ )
1492
+ # Duplicate the socket, so now we can close proxy transport
1493
+ rawsock = rawsock.dup()
1494
+ except BaseException:
1495
+ # It shouldn't be closed in `finally` because it's fed to
1496
+ # `loop.start_tls()` and the docs say not to touch it after
1497
+ # passing there.
1498
+ transport.close()
1499
+ raise
1500
+ finally:
1501
+ if not runtime_has_start_tls:
1502
+ transport.close()
1503
+
1504
+ if not runtime_has_start_tls:
1505
+ # HTTP proxy with support for upgrade to HTTPS
1506
+ sslcontext = self._get_ssl_context(req)
1507
+ return await self._wrap_existing_connection(
1508
+ self._factory,
1509
+ timeout=timeout,
1510
+ ssl=sslcontext,
1511
+ sock=rawsock,
1512
+ server_hostname=req.host,
1513
+ req=req,
1514
+ )
1515
+
1516
+ return await self._start_tls_connection(
1517
+ # Access the old transport for the last time before it's
1518
+ # closed and forgotten forever:
1519
+ transport,
1520
+ req=req,
1521
+ timeout=timeout,
1522
+ )
1523
+ finally:
1524
+ proxy_resp.close()
1525
+
1526
+ return transport, proto
1527
+
1528
+
1529
+ class UnixConnector(BaseConnector):
1530
+ """Unix socket connector.
1531
+
1532
+ path - Unix socket path.
1533
+ keepalive_timeout - (optional) Keep-alive timeout.
1534
+ force_close - Set to True to force close and do reconnect
1535
+ after each request (and between redirects).
1536
+ limit - The total number of simultaneous connections.
1537
+ limit_per_host - Number of simultaneous connections to one host.
1538
+ loop - Optional event loop.
1539
+ """
1540
+
1541
+ allowed_protocol_schema_set = HIGH_LEVEL_SCHEMA_SET | frozenset({"unix"})
1542
+
1543
+ def __init__(
1544
+ self,
1545
+ path: str,
1546
+ force_close: bool = False,
1547
+ keepalive_timeout: Union[object, float, None] = sentinel,
1548
+ limit: int = 100,
1549
+ limit_per_host: int = 0,
1550
+ loop: Optional[asyncio.AbstractEventLoop] = None,
1551
+ ) -> None:
1552
+ super().__init__(
1553
+ force_close=force_close,
1554
+ keepalive_timeout=keepalive_timeout,
1555
+ limit=limit,
1556
+ limit_per_host=limit_per_host,
1557
+ loop=loop,
1558
+ )
1559
+ self._path = path
1560
+
1561
+ @property
1562
+ def path(self) -> str:
1563
+ """Path to unix socket."""
1564
+ return self._path
1565
+
1566
+ async def _create_connection(
1567
+ self, req: ClientRequest, traces: List["Trace"], timeout: "ClientTimeout"
1568
+ ) -> ResponseHandler:
1569
+ try:
1570
+ async with ceil_timeout(
1571
+ timeout.sock_connect, ceil_threshold=timeout.ceil_threshold
1572
+ ):
1573
+ _, proto = await self._loop.create_unix_connection(
1574
+ self._factory, self._path
1575
+ )
1576
+ except OSError as exc:
1577
+ if exc.errno is None and isinstance(exc, asyncio.TimeoutError):
1578
+ raise
1579
+ raise UnixClientConnectorError(self.path, req.connection_key, exc) from exc
1580
+
1581
+ return proto
1582
+
1583
+
1584
+ class NamedPipeConnector(BaseConnector):
1585
+ """Named pipe connector.
1586
+
1587
+ Only supported by the proactor event loop.
1588
+ See also: https://docs.python.org/3/library/asyncio-eventloop.html
1589
+
1590
+ path - Windows named pipe path.
1591
+ keepalive_timeout - (optional) Keep-alive timeout.
1592
+ force_close - Set to True to force close and do reconnect
1593
+ after each request (and between redirects).
1594
+ limit - The total number of simultaneous connections.
1595
+ limit_per_host - Number of simultaneous connections to one host.
1596
+ loop - Optional event loop.
1597
+ """
1598
+
1599
+ allowed_protocol_schema_set = HIGH_LEVEL_SCHEMA_SET | frozenset({"npipe"})
1600
+
1601
+ def __init__(
1602
+ self,
1603
+ path: str,
1604
+ force_close: bool = False,
1605
+ keepalive_timeout: Union[object, float, None] = sentinel,
1606
+ limit: int = 100,
1607
+ limit_per_host: int = 0,
1608
+ loop: Optional[asyncio.AbstractEventLoop] = None,
1609
+ ) -> None:
1610
+ super().__init__(
1611
+ force_close=force_close,
1612
+ keepalive_timeout=keepalive_timeout,
1613
+ limit=limit,
1614
+ limit_per_host=limit_per_host,
1615
+ loop=loop,
1616
+ )
1617
+ if not isinstance(
1618
+ self._loop, asyncio.ProactorEventLoop # type: ignore[attr-defined]
1619
+ ):
1620
+ raise RuntimeError(
1621
+ "Named Pipes only available in proactor loop under windows"
1622
+ )
1623
+ self._path = path
1624
+
1625
+ @property
1626
+ def path(self) -> str:
1627
+ """Path to the named pipe."""
1628
+ return self._path
1629
+
1630
+ async def _create_connection(
1631
+ self, req: ClientRequest, traces: List["Trace"], timeout: "ClientTimeout"
1632
+ ) -> ResponseHandler:
1633
+ try:
1634
+ async with ceil_timeout(
1635
+ timeout.sock_connect, ceil_threshold=timeout.ceil_threshold
1636
+ ):
1637
+ _, proto = await self._loop.create_pipe_connection( # type: ignore[attr-defined]
1638
+ self._factory, self._path
1639
+ )
1640
+ # the drain is required so that the connection_made is called
1641
+ # and transport is set otherwise it is not set before the
1642
+ # `assert conn.transport is not None`
1643
+ # in client.py's _request method
1644
+ await asyncio.sleep(0)
1645
+ # other option is to manually set transport like
1646
+ # `proto.transport = trans`
1647
+ except OSError as exc:
1648
+ if exc.errno is None and isinstance(exc, asyncio.TimeoutError):
1649
+ raise
1650
+ raise ClientConnectorError(req.connection_key, exc) from exc
1651
+
1652
+ return cast(ResponseHandler, proto)