py2docfx 0.1.16.dev2064350__py3-none-any.whl → 0.1.17__py3-none-any.whl

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 (388) hide show
  1. py2docfx/convert_prepare/environment.py +1 -3
  2. py2docfx/convert_prepare/get_source.py +1 -6
  3. py2docfx/convert_prepare/package_info.py +1 -1
  4. py2docfx/docfx_yaml/miss_reference.py +1 -1
  5. py2docfx/docfx_yaml/parameter_utils.py +58 -6
  6. py2docfx/docfx_yaml/tests/roots/test-translator-typing/code_with_typing.py +14 -0
  7. py2docfx/docfx_yaml/tests/roots/test-translator-typing/conf.py +18 -0
  8. py2docfx/docfx_yaml/tests/test_translator_typing.py +39 -0
  9. py2docfx/docfx_yaml/utils.py +2 -2
  10. py2docfx/venv/basevenv/Lib/site-packages/certifi/__init__.py +1 -1
  11. py2docfx/venv/basevenv/Lib/site-packages/certifi/core.py +1 -32
  12. py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/cli/__main__.py +62 -2
  13. py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/constant.py +17 -0
  14. py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/legacy.py +1 -3
  15. py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/md.py +19 -14
  16. py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/utils.py +6 -0
  17. py2docfx/venv/basevenv/Lib/site-packages/charset_normalizer/version.py +1 -1
  18. py2docfx/venv/basevenv/Lib/site-packages/packaging/__init__.py +1 -1
  19. py2docfx/venv/basevenv/Lib/site-packages/packaging/_elffile.py +1 -2
  20. py2docfx/venv/basevenv/Lib/site-packages/packaging/_manylinux.py +1 -2
  21. py2docfx/venv/basevenv/Lib/site-packages/packaging/_parser.py +1 -2
  22. py2docfx/venv/basevenv/Lib/site-packages/packaging/_tokenizer.py +5 -4
  23. py2docfx/venv/basevenv/Lib/site-packages/packaging/licenses/__init__.py +1 -1
  24. py2docfx/venv/basevenv/Lib/site-packages/packaging/markers.py +53 -22
  25. py2docfx/venv/basevenv/Lib/site-packages/packaging/metadata.py +1 -2
  26. py2docfx/venv/basevenv/Lib/site-packages/packaging/specifiers.py +1 -2
  27. py2docfx/venv/basevenv/Lib/site-packages/packaging/tags.py +39 -0
  28. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/__init__.py +6 -7
  29. py2docfx/venv/basevenv/Lib/site-packages/pygments/__init__.py +1 -1
  30. py2docfx/venv/basevenv/Lib/site-packages/pygments/lexers/_sql_builtins.py +106 -0
  31. py2docfx/venv/basevenv/Lib/site-packages/pygments/lexers/scripting.py +5 -3
  32. py2docfx/venv/basevenv/Lib/site-packages/pygments/lexers/sql.py +24 -118
  33. py2docfx/venv/basevenv/Lib/site-packages/requests/__version__.py +2 -2
  34. py2docfx/venv/basevenv/Lib/site-packages/requests/compat.py +12 -0
  35. py2docfx/venv/basevenv/Lib/site-packages/requests/models.py +3 -1
  36. py2docfx/venv/basevenv/Lib/site-packages/requests/utils.py +6 -16
  37. py2docfx/venv/basevenv/Lib/site-packages/setuptools/__init__.py +0 -38
  38. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_discovery.py +33 -0
  39. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +1 -1
  40. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
  41. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_unix.py +63 -0
  42. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +5 -6
  43. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_entry_points.py +4 -0
  44. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_normalization.py +0 -2
  45. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_path.py +12 -3
  46. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_reqs.py +1 -1
  47. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_scripts.py +361 -0
  48. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_shutil.py +6 -0
  49. py2docfx/venv/basevenv/Lib/site-packages/setuptools/build_meta.py +25 -37
  50. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_egg.py +9 -11
  51. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_wheel.py +1 -1
  52. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_ext.py +29 -28
  53. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/develop.py +39 -179
  54. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/easy_install.py +17 -2352
  55. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/editable_wheel.py +14 -31
  56. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/egg_info.py +0 -2
  57. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install.py +3 -55
  58. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_scripts.py +5 -11
  59. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/sdist.py +1 -1
  60. py2docfx/venv/basevenv/Lib/site-packages/setuptools/compat/py310.py +11 -0
  61. py2docfx/venv/basevenv/Lib/site-packages/setuptools/dist.py +10 -12
  62. py2docfx/venv/basevenv/Lib/site-packages/setuptools/installer.py +34 -29
  63. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/contexts.py +0 -14
  64. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/fixtures.py +235 -0
  65. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/integration/test_pbr.py +20 -0
  66. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_meta.py +0 -24
  67. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_develop.py +1 -64
  68. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist.py +2 -2
  69. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist_info.py +0 -63
  70. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_editable_install.py +15 -41
  71. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_egg_info.py +3 -2
  72. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_scripts.py +12 -0
  73. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_wheel.py +12 -36
  74. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -4
  75. py2docfx/venv/basevenv/Lib/site-packages/setuptools/wheel.py +49 -24
  76. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/__init__.py +6 -0
  77. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/arabic_stemmer.py +798 -797
  78. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/armenian_stemmer.py +212 -213
  79. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/basestemmer.py +20 -54
  80. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/basque_stemmer.py +202 -228
  81. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/catalan_stemmer.py +370 -375
  82. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/danish_stemmer.py +63 -61
  83. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/dutch_porter_stemmer.py +466 -0
  84. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/dutch_stemmer.py +1217 -343
  85. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/english_stemmer.py +295 -264
  86. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/esperanto_stemmer.py +588 -0
  87. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/estonian_stemmer.py +850 -0
  88. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/finnish_stemmer.py +144 -143
  89. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/french_stemmer.py +308 -246
  90. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/german_stemmer.py +224 -167
  91. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/greek_stemmer.py +1314 -1313
  92. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/hindi_stemmer.py +39 -38
  93. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/hungarian_stemmer.py +231 -256
  94. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/indonesian_stemmer.py +61 -64
  95. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/irish_stemmer.py +101 -106
  96. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/italian_stemmer.py +272 -272
  97. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/lithuanian_stemmer.py +233 -240
  98. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/nepali_stemmer.py +108 -134
  99. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/norwegian_stemmer.py +108 -63
  100. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/porter_stemmer.py +101 -108
  101. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/portuguese_stemmer.py +241 -250
  102. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/romanian_stemmer.py +332 -296
  103. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/russian_stemmer.py +178 -179
  104. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/serbian_stemmer.py +2331 -2332
  105. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/spanish_stemmer.py +254 -259
  106. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/swedish_stemmer.py +143 -70
  107. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/tamil_stemmer.py +638 -1491
  108. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/turkish_stemmer.py +326 -292
  109. py2docfx/venv/basevenv/Lib/site-packages/snowballstemmer/yiddish_stemmer.py +245 -246
  110. py2docfx/venv/basevenv/Lib/site-packages/urllib3/_version.py +2 -2
  111. py2docfx/venv/basevenv/Lib/site-packages/urllib3/connection.py +87 -38
  112. py2docfx/venv/basevenv/Lib/site-packages/urllib3/contrib/emscripten/fetch.py +20 -0
  113. py2docfx/venv/basevenv/Lib/site-packages/urllib3/poolmanager.py +17 -1
  114. py2docfx/venv/basevenv/Lib/site-packages/urllib3/response.py +53 -24
  115. py2docfx/venv/basevenv/Lib/site-packages/urllib3/util/request.py +12 -4
  116. py2docfx/venv/basevenv/Lib/site-packages/urllib3/util/ssl_.py +1 -1
  117. py2docfx/venv/venv1/Lib/site-packages/azure/core/_version.py +1 -1
  118. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base_async.py +1 -1
  119. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_aiohttp.py +1 -1
  120. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base_async.py +2 -1
  121. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_asyncio.py +1 -1
  122. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_aiohttp.py +2 -2
  123. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_asyncio.py +1 -1
  124. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/opentelemetry.py +13 -1
  125. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared_async.py +2 -1
  126. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_utils.py +1 -1
  127. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_constants.py +1 -0
  128. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/default.py +23 -2
  129. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/environment.py +12 -16
  130. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/service_fabric.py +22 -1
  131. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/user_password.py +10 -6
  132. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/vscode.py +13 -4
  133. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/auth_code_redirect_handler.py +3 -5
  134. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/msal_client.py +2 -1
  135. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_persistent_cache.py +3 -2
  136. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_version.py +1 -1
  137. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azd_cli.py +1 -1
  138. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_cli.py +1 -1
  139. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_powershell.py +1 -1
  140. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/chained.py +1 -1
  141. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/default.py +22 -2
  142. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/environment.py +2 -2
  143. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/service_fabric.py +17 -1
  144. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/vscode.py +4 -4
  145. py2docfx/venv/venv1/Lib/site-packages/certifi/__init__.py +1 -1
  146. py2docfx/venv/venv1/Lib/site-packages/certifi/core.py +1 -32
  147. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/cli/__main__.py +62 -2
  148. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/constant.py +17 -0
  149. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/legacy.py +1 -3
  150. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/md.py +19 -14
  151. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/utils.py +6 -0
  152. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/version.py +1 -1
  153. py2docfx/venv/venv1/Lib/site-packages/cryptography/__about__.py +2 -2
  154. py2docfx/venv/venv1/Lib/site-packages/cryptography/__init__.py +2 -2
  155. py2docfx/venv/venv1/Lib/site-packages/cryptography/fernet.py +2 -1
  156. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/_oid.py +35 -2
  157. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/openssl/backend.py +33 -10
  158. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi +14 -5
  159. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi +2 -2
  160. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi +3 -0
  161. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi +49 -45
  162. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi +2 -2
  163. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi +2 -1
  164. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi +2 -1
  165. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi +10 -1
  166. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi +3 -2
  167. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi +8 -2
  168. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi +3 -2
  169. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi +6 -4
  170. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi +2 -1
  171. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi +2 -1
  172. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi +9 -3
  173. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi +7 -6
  174. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi +2 -1
  175. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi +79 -12
  176. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py +9 -1
  177. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/binding.py +2 -1
  178. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py +5 -0
  179. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py +4 -2
  180. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/_serialization.py +1 -2
  181. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py +12 -0
  182. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py +16 -3
  183. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py +47 -3
  184. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py +16 -3
  185. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py +16 -3
  186. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py +14 -0
  187. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py +14 -1
  188. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py +14 -1
  189. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py +6 -6
  190. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/base.py +5 -4
  191. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/modes.py +18 -18
  192. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/hashes.py +5 -1
  193. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py +5 -4
  194. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py +4 -4
  195. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py +7 -4
  196. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py +1 -1
  197. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py +1 -1
  198. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/padding.py +7 -121
  199. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/__init__.py +2 -0
  200. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py +21 -1
  201. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py +48 -6
  202. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/ssh.py +68 -18
  203. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py +3 -2
  204. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/totp.py +2 -1
  205. py2docfx/venv/venv1/Lib/site-packages/cryptography/utils.py +15 -3
  206. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/__init__.py +3 -0
  207. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/base.py +39 -6
  208. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/extensions.py +100 -49
  209. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/name.py +27 -15
  210. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/ocsp.py +60 -25
  211. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/oid.py +2 -0
  212. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/verification.py +6 -0
  213. py2docfx/venv/venv1/Lib/site-packages/google/api_core/bidi.py +17 -4
  214. py2docfx/venv/venv1/Lib/site-packages/google/api_core/client_info.py +6 -0
  215. py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/client_info.py +1 -0
  216. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_base.py +13 -4
  217. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming.py +7 -6
  218. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming_async.py +8 -5
  219. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_unary.py +7 -6
  220. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_unary_async.py +7 -6
  221. py2docfx/venv/venv1/Lib/site-packages/google/api_core/version.py +1 -1
  222. py2docfx/venv/venv1/Lib/site-packages/google/auth/_default.py +2 -36
  223. py2docfx/venv/venv1/Lib/site-packages/google/auth/_helpers.py +240 -0
  224. py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/_helpers.py +62 -0
  225. py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/transport/aiohttp.py +6 -0
  226. py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/_metadata.py +5 -1
  227. py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/credentials.py +2 -1
  228. py2docfx/venv/venv1/Lib/site-packages/google/auth/identity_pool.py +91 -2
  229. py2docfx/venv/venv1/Lib/site-packages/google/auth/impersonated_credentials.py +75 -0
  230. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/__init__.py +1 -0
  231. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_aiohttp_requests.py +8 -1
  232. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_http_client.py +3 -1
  233. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/requests.py +4 -1
  234. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/urllib3.py +15 -5
  235. py2docfx/venv/venv1/Lib/site-packages/google/auth/version.py +1 -1
  236. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/id_token.py +12 -0
  237. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/webauthn_types.py +1 -1
  238. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/__init__.py +1 -1
  239. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any.py +15 -1
  240. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any_pb2.py +3 -3
  241. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/api_pb2.py +3 -3
  242. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/compiler/plugin_pb2.py +3 -3
  243. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor.py +15 -2
  244. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pb2.py +258 -113
  245. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pool.py +22 -8
  246. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/duration_pb2.py +3 -3
  247. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/empty_pb2.py +3 -3
  248. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/field_mask_pb2.py +3 -3
  249. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/decoder.py +106 -23
  250. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/field_mask.py +3 -1
  251. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_edition_defaults.py +1 -1
  252. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_message.py +21 -18
  253. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/testing_refleaks.py +8 -2
  254. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/well_known_types.py +60 -43
  255. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/json_format.py +4 -5
  256. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message_factory.py +16 -0
  257. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/runtime_version.py +2 -2
  258. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/source_context_pb2.py +3 -3
  259. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/struct_pb2.py +3 -3
  260. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/text_format.py +11 -7
  261. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/timestamp_pb2.py +3 -3
  262. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/type_pb2.py +3 -3
  263. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/wrappers_pb2.py +3 -3
  264. py2docfx/venv/venv1/Lib/site-packages/google/rpc/error_details_pb2.py +29 -23
  265. py2docfx/venv/venv1/Lib/site-packages/google/rpc/error_details_pb2.pyi +41 -2
  266. py2docfx/venv/venv1/Lib/site-packages/msal/application.py +1 -0
  267. py2docfx/venv/venv1/Lib/site-packages/msal/individual_cache.py +9 -5
  268. py2docfx/venv/venv1/Lib/site-packages/msal/managed_identity.py +4 -5
  269. py2docfx/venv/venv1/Lib/site-packages/msal/sku.py +1 -1
  270. py2docfx/venv/venv1/Lib/site-packages/msal/throttled_http_client.py +58 -30
  271. py2docfx/venv/venv1/Lib/site-packages/opencensus/__init__.py +1 -1
  272. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/__init__.py +1 -1
  273. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/__init__.py +1 -1
  274. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/__init__.py +138 -138
  275. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/exporter.py +93 -93
  276. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/processor.py +63 -63
  277. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/protocol.py +206 -206
  278. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/storage.py +205 -205
  279. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/transport.py +355 -355
  280. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/utils.py +79 -79
  281. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/version.py +15 -15
  282. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/log_exporter/__init__.py +314 -314
  283. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/__init__.py +190 -190
  284. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/__init__.py +62 -62
  285. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/cpu.py +50 -50
  286. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/http_requests.py +176 -176
  287. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/memory.py +42 -42
  288. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/process.py +87 -87
  289. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/__init__.py +1 -1
  290. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/state.py +50 -50
  291. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/statsbeat.py +100 -100
  292. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/statsbeat_metrics.py +480 -480
  293. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/trace_exporter/__init__.py +236 -236
  294. py2docfx/venv/venv1/Lib/site-packages/packaging/__init__.py +1 -1
  295. py2docfx/venv/venv1/Lib/site-packages/packaging/_elffile.py +1 -2
  296. py2docfx/venv/venv1/Lib/site-packages/packaging/_manylinux.py +1 -2
  297. py2docfx/venv/venv1/Lib/site-packages/packaging/_parser.py +1 -2
  298. py2docfx/venv/venv1/Lib/site-packages/packaging/_tokenizer.py +5 -4
  299. py2docfx/venv/venv1/Lib/site-packages/packaging/licenses/__init__.py +1 -1
  300. py2docfx/venv/venv1/Lib/site-packages/packaging/markers.py +53 -22
  301. py2docfx/venv/venv1/Lib/site-packages/packaging/metadata.py +1 -2
  302. py2docfx/venv/venv1/Lib/site-packages/packaging/specifiers.py +1 -2
  303. py2docfx/venv/venv1/Lib/site-packages/packaging/tags.py +39 -0
  304. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/__init__.py +6 -7
  305. py2docfx/venv/venv1/Lib/site-packages/requests/__version__.py +2 -2
  306. py2docfx/venv/venv1/Lib/site-packages/requests/compat.py +12 -0
  307. py2docfx/venv/venv1/Lib/site-packages/requests/models.py +3 -1
  308. py2docfx/venv/venv1/Lib/site-packages/requests/utils.py +6 -16
  309. py2docfx/venv/venv1/Lib/site-packages/rsa/__init__.py +2 -2
  310. py2docfx/venv/venv1/Lib/site-packages/rsa/asn1.py +52 -52
  311. py2docfx/venv/venv1/Lib/site-packages/rsa/cli.py +321 -321
  312. py2docfx/venv/venv1/Lib/site-packages/rsa/common.py +184 -184
  313. py2docfx/venv/venv1/Lib/site-packages/rsa/core.py +53 -53
  314. py2docfx/venv/venv1/Lib/site-packages/rsa/key.py +858 -858
  315. py2docfx/venv/venv1/Lib/site-packages/rsa/parallel.py +96 -96
  316. py2docfx/venv/venv1/Lib/site-packages/rsa/pem.py +134 -134
  317. py2docfx/venv/venv1/Lib/site-packages/rsa/pkcs1.py +485 -485
  318. py2docfx/venv/venv1/Lib/site-packages/rsa/pkcs1_v2.py +100 -100
  319. py2docfx/venv/venv1/Lib/site-packages/rsa/prime.py +198 -198
  320. py2docfx/venv/venv1/Lib/site-packages/rsa/py.typed +1 -1
  321. py2docfx/venv/venv1/Lib/site-packages/rsa/randnum.py +95 -95
  322. py2docfx/venv/venv1/Lib/site-packages/rsa/transform.py +72 -72
  323. py2docfx/venv/venv1/Lib/site-packages/rsa/util.py +97 -97
  324. py2docfx/venv/venv1/Lib/site-packages/setuptools/__init__.py +0 -38
  325. py2docfx/venv/venv1/Lib/site-packages/setuptools/_discovery.py +33 -0
  326. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +1 -1
  327. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
  328. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_unix.py +63 -0
  329. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +5 -6
  330. py2docfx/venv/venv1/Lib/site-packages/setuptools/_entry_points.py +4 -0
  331. py2docfx/venv/venv1/Lib/site-packages/setuptools/_normalization.py +0 -2
  332. py2docfx/venv/venv1/Lib/site-packages/setuptools/_path.py +12 -3
  333. py2docfx/venv/venv1/Lib/site-packages/setuptools/_reqs.py +1 -1
  334. py2docfx/venv/venv1/Lib/site-packages/setuptools/_scripts.py +361 -0
  335. py2docfx/venv/venv1/Lib/site-packages/setuptools/_shutil.py +6 -0
  336. py2docfx/venv/venv1/Lib/site-packages/setuptools/build_meta.py +25 -37
  337. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_egg.py +9 -11
  338. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +1 -1
  339. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_ext.py +29 -28
  340. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/develop.py +39 -179
  341. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/easy_install.py +17 -2352
  342. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/editable_wheel.py +14 -31
  343. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/egg_info.py +0 -2
  344. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install.py +3 -55
  345. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_scripts.py +5 -11
  346. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/sdist.py +1 -1
  347. py2docfx/venv/venv1/Lib/site-packages/setuptools/compat/py310.py +11 -0
  348. py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +10 -12
  349. py2docfx/venv/venv1/Lib/site-packages/setuptools/installer.py +34 -29
  350. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/contexts.py +0 -14
  351. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/fixtures.py +235 -0
  352. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/integration/test_pbr.py +20 -0
  353. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_meta.py +0 -24
  354. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_develop.py +1 -64
  355. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist.py +2 -2
  356. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist_info.py +0 -63
  357. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_editable_install.py +15 -41
  358. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_egg_info.py +3 -2
  359. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_scripts.py +12 -0
  360. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_wheel.py +12 -36
  361. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -4
  362. py2docfx/venv/venv1/Lib/site-packages/setuptools/wheel.py +49 -24
  363. py2docfx/venv/venv1/Lib/site-packages/typing_extensions.py +357 -703
  364. py2docfx/venv/venv1/Lib/site-packages/urllib3/_version.py +2 -2
  365. py2docfx/venv/venv1/Lib/site-packages/urllib3/connection.py +87 -38
  366. py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/fetch.py +20 -0
  367. py2docfx/venv/venv1/Lib/site-packages/urllib3/poolmanager.py +17 -1
  368. py2docfx/venv/venv1/Lib/site-packages/urllib3/response.py +53 -24
  369. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/request.py +12 -4
  370. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssl_.py +1 -1
  371. {py2docfx-0.1.16.dev2064350.dist-info → py2docfx-0.1.17.dist-info}/METADATA +1 -1
  372. {py2docfx-0.1.16.dev2064350.dist-info → py2docfx-0.1.17.dist-info}/RECORD +374 -372
  373. {py2docfx-0.1.16.dev2064350.dist-info → py2docfx-0.1.17.dist-info}/WHEEL +1 -1
  374. py2docfx/venv/basevenv/Lib/site-packages/setuptools/package_index.py +0 -1137
  375. py2docfx/venv/basevenv/Lib/site-packages/setuptools/sandbox.py +0 -536
  376. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/server.py +0 -86
  377. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_easy_install.py +0 -1476
  378. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_packageindex.py +0 -267
  379. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_sandbox.py +0 -134
  380. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/application.py +0 -119
  381. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/application.py +0 -121
  382. py2docfx/venv/venv1/Lib/site-packages/setuptools/package_index.py +0 -1137
  383. py2docfx/venv/venv1/Lib/site-packages/setuptools/sandbox.py +0 -536
  384. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/server.py +0 -86
  385. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_easy_install.py +0 -1476
  386. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_packageindex.py +0 -267
  387. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_sandbox.py +0 -134
  388. {py2docfx-0.1.16.dev2064350.dist-info → py2docfx-0.1.17.dist-info}/top_level.txt +0 -0
@@ -74,7 +74,7 @@ port_by_scheme = {"http": 80, "https": 443}
74
74
 
75
75
  # When it comes time to update this value as a part of regular maintenance
76
76
  # (ie test_recent_date is failing) update it to ~6 months before the current date.
77
- RECENT_DATE = datetime.date(2023, 6, 1)
77
+ RECENT_DATE = datetime.date(2025, 1, 1)
78
78
 
79
79
  _CONTAINS_CONTROL_CHAR_RE = re.compile(r"[^-!#$%&'*+.^_`|~0-9a-zA-Z]")
80
80
 
@@ -232,45 +232,94 @@ class HTTPConnection(_HTTPConnection):
232
232
  super().set_tunnel(host, port=port, headers=headers)
233
233
  self._tunnel_scheme = scheme
234
234
 
235
- if sys.version_info < (3, 11, 4):
236
-
237
- def _tunnel(self) -> None:
238
- _MAXLINE = http.client._MAXLINE # type: ignore[attr-defined]
239
- connect = b"CONNECT %s:%d HTTP/1.0\r\n" % ( # type: ignore[str-format]
240
- self._tunnel_host.encode("ascii"), # type: ignore[union-attr]
241
- self._tunnel_port,
242
- )
243
- headers = [connect]
244
- for header, value in self._tunnel_headers.items(): # type: ignore[attr-defined]
245
- headers.append(f"{header}: {value}\r\n".encode("latin-1"))
246
- headers.append(b"\r\n")
247
- # Making a single send() call instead of one per line encourages
248
- # the host OS to use a more optimal packet size instead of
249
- # potentially emitting a series of small packets.
250
- self.send(b"".join(headers))
251
- del headers
252
-
253
- response = self.response_class(self.sock, method=self._method) # type: ignore[attr-defined]
254
- try:
255
- (version, code, message) = response._read_status() # type: ignore[attr-defined]
256
-
257
- if code != http.HTTPStatus.OK:
258
- self.close()
259
- raise OSError(f"Tunnel connection failed: {code} {message.strip()}")
260
- while True:
261
- line = response.fp.readline(_MAXLINE + 1)
262
- if len(line) > _MAXLINE:
263
- raise http.client.LineTooLong("header line")
264
- if not line:
265
- # for sites which EOF without sending a trailer
266
- break
267
- if line in (b"\r\n", b"\n", b""):
268
- break
235
+ if sys.version_info < (3, 11, 9) or ((3, 12) <= sys.version_info < (3, 12, 3)):
236
+ # Taken from python/cpython#100986 which was backported in 3.11.9 and 3.12.3.
237
+ # When using connection_from_host, host will come without brackets.
238
+ def _wrap_ipv6(self, ip: bytes) -> bytes:
239
+ if b":" in ip and ip[0] != b"["[0]:
240
+ return b"[" + ip + b"]"
241
+ return ip
242
+
243
+ if sys.version_info < (3, 11, 9):
244
+ # `_tunnel` copied from 3.11.13 backporting
245
+ # https://github.com/python/cpython/commit/0d4026432591d43185568dd31cef6a034c4b9261
246
+ # and https://github.com/python/cpython/commit/6fbc61070fda2ffb8889e77e3b24bca4249ab4d1
247
+ def _tunnel(self) -> None:
248
+ _MAXLINE = http.client._MAXLINE # type: ignore[attr-defined]
249
+ connect = b"CONNECT %s:%d HTTP/1.0\r\n" % ( # type: ignore[str-format]
250
+ self._wrap_ipv6(self._tunnel_host.encode("ascii")), # type: ignore[union-attr]
251
+ self._tunnel_port,
252
+ )
253
+ headers = [connect]
254
+ for header, value in self._tunnel_headers.items(): # type: ignore[attr-defined]
255
+ headers.append(f"{header}: {value}\r\n".encode("latin-1"))
256
+ headers.append(b"\r\n")
257
+ # Making a single send() call instead of one per line encourages
258
+ # the host OS to use a more optimal packet size instead of
259
+ # potentially emitting a series of small packets.
260
+ self.send(b"".join(headers))
261
+ del headers
262
+
263
+ response = self.response_class(self.sock, method=self._method) # type: ignore[attr-defined]
264
+ try:
265
+ (version, code, message) = response._read_status() # type: ignore[attr-defined]
266
+
267
+ if code != http.HTTPStatus.OK:
268
+ self.close()
269
+ raise OSError(
270
+ f"Tunnel connection failed: {code} {message.strip()}"
271
+ )
272
+ while True:
273
+ line = response.fp.readline(_MAXLINE + 1)
274
+ if len(line) > _MAXLINE:
275
+ raise http.client.LineTooLong("header line")
276
+ if not line:
277
+ # for sites which EOF without sending a trailer
278
+ break
279
+ if line in (b"\r\n", b"\n", b""):
280
+ break
281
+
282
+ if self.debuglevel > 0:
283
+ print("header:", line.decode())
284
+ finally:
285
+ response.close()
286
+
287
+ elif (3, 12) <= sys.version_info < (3, 12, 3):
288
+ # `_tunnel` copied from 3.12.11 backporting
289
+ # https://github.com/python/cpython/commit/23aef575c7629abcd4aaf028ebd226fb41a4b3c8
290
+ def _tunnel(self) -> None: # noqa: F811
291
+ connect = b"CONNECT %s:%d HTTP/1.1\r\n" % ( # type: ignore[str-format]
292
+ self._wrap_ipv6(self._tunnel_host.encode("idna")), # type: ignore[union-attr]
293
+ self._tunnel_port,
294
+ )
295
+ headers = [connect]
296
+ for header, value in self._tunnel_headers.items(): # type: ignore[attr-defined]
297
+ headers.append(f"{header}: {value}\r\n".encode("latin-1"))
298
+ headers.append(b"\r\n")
299
+ # Making a single send() call instead of one per line encourages
300
+ # the host OS to use a more optimal packet size instead of
301
+ # potentially emitting a series of small packets.
302
+ self.send(b"".join(headers))
303
+ del headers
304
+
305
+ response = self.response_class(self.sock, method=self._method) # type: ignore[attr-defined]
306
+ try:
307
+ (version, code, message) = response._read_status() # type: ignore[attr-defined]
308
+
309
+ self._raw_proxy_headers = http.client._read_headers(response.fp) # type: ignore[attr-defined]
269
310
 
270
311
  if self.debuglevel > 0:
271
- print("header:", line.decode())
272
- finally:
273
- response.close()
312
+ for header in self._raw_proxy_headers:
313
+ print("header:", header.decode())
314
+
315
+ if code != http.HTTPStatus.OK:
316
+ self.close()
317
+ raise OSError(
318
+ f"Tunnel connection failed: {code} {message.strip()}"
319
+ )
320
+
321
+ finally:
322
+ response.close()
274
323
 
275
324
  def connect(self) -> None:
276
325
  self.sock = self._new_conn()
@@ -573,6 +573,11 @@ def send_jspi_request(
573
573
  "method": request.method,
574
574
  "signal": js_abort_controller.signal,
575
575
  }
576
+ # Node.js returns the whole response (unlike opaqueredirect in browsers),
577
+ # so urllib3 can set `redirect: manual` to control redirects itself.
578
+ # https://stackoverflow.com/a/78524615
579
+ if _is_node_js():
580
+ fetch_data["redirect"] = "manual"
576
581
  # Call JavaScript fetch (async api, returns a promise)
577
582
  fetcher_promise_js = js.fetch(request.url, _obj_from_dict(fetch_data))
578
583
  # Now suspend WebAssembly until we resolve that promise
@@ -693,6 +698,21 @@ def has_jspi() -> bool:
693
698
  return False
694
699
 
695
700
 
701
+ def _is_node_js() -> bool:
702
+ """
703
+ Check if we are in Node.js.
704
+
705
+ :return: True if we are in Node.js.
706
+ :rtype: bool
707
+ """
708
+ return (
709
+ hasattr(js, "process")
710
+ and hasattr(js.process, "release")
711
+ # According to the Node.js documentation, the release name is always "node".
712
+ and js.process.release.name == "node"
713
+ )
714
+
715
+
696
716
  def streaming_ready() -> bool | None:
697
717
  if _fetcher:
698
718
  return _fetcher.streaming_ready
@@ -203,6 +203,22 @@ class PoolManager(RequestMethods):
203
203
  **connection_pool_kw: typing.Any,
204
204
  ) -> None:
205
205
  super().__init__(headers)
206
+ if "retries" in connection_pool_kw:
207
+ retries = connection_pool_kw["retries"]
208
+ if not isinstance(retries, Retry):
209
+ # When Retry is initialized, raise_on_redirect is based
210
+ # on a redirect boolean value.
211
+ # But requests made via a pool manager always set
212
+ # redirect to False, and raise_on_redirect always ends
213
+ # up being False consequently.
214
+ # Here we fix the issue by setting raise_on_redirect to
215
+ # a value needed by the pool manager without considering
216
+ # the redirect boolean.
217
+ raise_on_redirect = retries is not False
218
+ retries = Retry.from_int(retries, redirect=False)
219
+ retries.raise_on_redirect = raise_on_redirect
220
+ connection_pool_kw = connection_pool_kw.copy()
221
+ connection_pool_kw["retries"] = retries
206
222
  self.connection_pool_kw = connection_pool_kw
207
223
 
208
224
  self.pools: RecentlyUsedContainer[PoolKey, HTTPConnectionPool]
@@ -456,7 +472,7 @@ class PoolManager(RequestMethods):
456
472
  kw["body"] = None
457
473
  kw["headers"] = HTTPHeaderDict(kw["headers"])._prepare_for_method_change()
458
474
 
459
- retries = kw.get("retries")
475
+ retries = kw.get("retries", response.retries)
460
476
  if not isinstance(retries, Retry):
461
477
  retries = Retry.from_int(retries, redirect=redirect)
462
478
 
@@ -26,23 +26,6 @@ try:
26
26
  except ImportError:
27
27
  brotli = None
28
28
 
29
- try:
30
- import zstandard as zstd
31
- except (AttributeError, ImportError, ValueError): # Defensive:
32
- HAS_ZSTD = False
33
- else:
34
- # The package 'zstandard' added the 'eof' property starting
35
- # in v0.18.0 which we require to ensure a complete and
36
- # valid zstd stream was fed into the ZstdDecoder.
37
- # See: https://github.com/urllib3/urllib3/pull/2624
38
- _zstd_version = tuple(
39
- map(int, re.search(r"^([0-9]+)\.([0-9]+)", zstd.__version__).groups()) # type: ignore[union-attr]
40
- )
41
- if _zstd_version < (0, 18): # Defensive:
42
- HAS_ZSTD = False
43
- else:
44
- HAS_ZSTD = True
45
-
46
29
  from . import util
47
30
  from ._base_connection import _TYPE_BODY
48
31
  from ._collections import HTTPHeaderDict
@@ -163,11 +146,15 @@ if brotli is not None:
163
146
  return b""
164
147
 
165
148
 
166
- if HAS_ZSTD:
149
+ try:
150
+ # Python 3.14+
151
+ from compression import zstd # type: ignore[import-not-found] # noqa: F401
152
+
153
+ HAS_ZSTD = True
167
154
 
168
155
  class ZstdDecoder(ContentDecoder):
169
156
  def __init__(self) -> None:
170
- self._obj = zstd.ZstdDecompressor().decompressobj()
157
+ self._obj = zstd.ZstdDecompressor()
171
158
 
172
159
  def decompress(self, data: bytes) -> bytes:
173
160
  if not data:
@@ -175,15 +162,53 @@ if HAS_ZSTD:
175
162
  data_parts = [self._obj.decompress(data)]
176
163
  while self._obj.eof and self._obj.unused_data:
177
164
  unused_data = self._obj.unused_data
178
- self._obj = zstd.ZstdDecompressor().decompressobj()
165
+ self._obj = zstd.ZstdDecompressor()
179
166
  data_parts.append(self._obj.decompress(unused_data))
180
167
  return b"".join(data_parts)
181
168
 
182
169
  def flush(self) -> bytes:
183
- ret = self._obj.flush() # note: this is a no-op
184
170
  if not self._obj.eof:
185
171
  raise DecodeError("Zstandard data is incomplete")
186
- return ret
172
+ return b""
173
+
174
+ except ImportError:
175
+ try:
176
+ # Python 3.13 and earlier require the 'zstandard' module.
177
+ import zstandard as zstd
178
+
179
+ # The package 'zstandard' added the 'eof' property starting
180
+ # in v0.18.0 which we require to ensure a complete and
181
+ # valid zstd stream was fed into the ZstdDecoder.
182
+ # See: https://github.com/urllib3/urllib3/pull/2624
183
+ _zstd_version = tuple(
184
+ map(int, re.search(r"^([0-9]+)\.([0-9]+)", zstd.__version__).groups()) # type: ignore[union-attr]
185
+ )
186
+ if _zstd_version < (0, 18): # Defensive:
187
+ raise ImportError("zstandard module doesn't have eof")
188
+ except (AttributeError, ImportError, ValueError): # Defensive:
189
+ HAS_ZSTD = False
190
+ else:
191
+ HAS_ZSTD = True
192
+
193
+ class ZstdDecoder(ContentDecoder): # type: ignore[no-redef]
194
+ def __init__(self) -> None:
195
+ self._obj = zstd.ZstdDecompressor().decompressobj()
196
+
197
+ def decompress(self, data: bytes) -> bytes:
198
+ if not data:
199
+ return b""
200
+ data_parts = [self._obj.decompress(data)]
201
+ while self._obj.eof and self._obj.unused_data:
202
+ unused_data = self._obj.unused_data
203
+ self._obj = zstd.ZstdDecompressor().decompressobj()
204
+ data_parts.append(self._obj.decompress(unused_data))
205
+ return b"".join(data_parts)
206
+
207
+ def flush(self) -> bytes:
208
+ ret = self._obj.flush() # note: this is a no-op
209
+ if not self._obj.eof:
210
+ raise DecodeError("Zstandard data is incomplete")
211
+ return ret # type: ignore[no-any-return]
187
212
 
188
213
 
189
214
  class MultiDecoder(ContentDecoder):
@@ -518,7 +543,7 @@ class BaseHTTPResponse(io.IOBase):
518
543
  def getheaders(self) -> HTTPHeaderDict:
519
544
  warnings.warn(
520
545
  "HTTPResponse.getheaders() is deprecated and will be removed "
521
- "in urllib3 v2.1.0. Instead access HTTPResponse.headers directly.",
546
+ "in urllib3 v2.6.0. Instead access HTTPResponse.headers directly.",
522
547
  category=DeprecationWarning,
523
548
  stacklevel=2,
524
549
  )
@@ -527,7 +552,7 @@ class BaseHTTPResponse(io.IOBase):
527
552
  def getheader(self, name: str, default: str | None = None) -> str | None:
528
553
  warnings.warn(
529
554
  "HTTPResponse.getheader() is deprecated and will be removed "
530
- "in urllib3 v2.1.0. Instead use HTTPResponse.headers.get(name, default).",
555
+ "in urllib3 v2.6.0. Instead use HTTPResponse.headers.get(name, default).",
531
556
  category=DeprecationWarning,
532
557
  stacklevel=2,
533
558
  )
@@ -1075,6 +1100,10 @@ class HTTPResponse(BaseHTTPResponse):
1075
1100
  def shutdown(self) -> None:
1076
1101
  if not self._sock_shutdown:
1077
1102
  raise ValueError("Cannot shutdown socket as self._sock_shutdown is not set")
1103
+ if self._connection is None:
1104
+ raise RuntimeError(
1105
+ "Cannot shutdown as connection has already been released to the pool"
1106
+ )
1078
1107
  self._sock_shutdown(socket.SHUT_RD)
1079
1108
 
1080
1109
  def close(self) -> None:
@@ -28,12 +28,20 @@ except ImportError:
28
28
  pass
29
29
  else:
30
30
  ACCEPT_ENCODING += ",br"
31
+
31
32
  try:
32
- import zstandard as _unused_module_zstd # noqa: F401
33
- except ImportError:
34
- pass
35
- else:
33
+ from compression import ( # type: ignore[import-not-found] # noqa: F401
34
+ zstd as _unused_module_zstd,
35
+ )
36
+
36
37
  ACCEPT_ENCODING += ",zstd"
38
+ except ImportError:
39
+ try:
40
+ import zstandard as _unused_module_zstd # noqa: F401
41
+
42
+ ACCEPT_ENCODING += ",zstd"
43
+ except ImportError:
44
+ pass
37
45
 
38
46
 
39
47
  class _TYPE_FAILEDTELL(Enum):
@@ -289,7 +289,7 @@ def create_urllib3_context(
289
289
  # keep the maximum version to be it's default value: 'TLSVersion.MAXIMUM_SUPPORTED'
290
290
  warnings.warn(
291
291
  "'ssl_version' option is deprecated and will be "
292
- "removed in urllib3 v2.1.0. Instead use 'ssl_minimum_version'",
292
+ "removed in urllib3 v2.6.0. Instead use 'ssl_minimum_version'",
293
293
  category=DeprecationWarning,
294
294
  stacklevel=2,
295
295
  )
@@ -9,4 +9,4 @@
9
9
  # regenerated.
10
10
  # --------------------------------------------------------------------------
11
11
 
12
- VERSION = "1.33.0"
12
+ VERSION = "1.34.0"
@@ -200,7 +200,7 @@ class AsyncPipeline(
200
200
 
201
201
  # Not happy to make this code asyncio specific, but that's multipart only for now
202
202
  # If we need trio and multipart, let's reinvesitgate that later
203
- import asyncio
203
+ import asyncio # pylint: disable=do-not-import-asyncio
204
204
 
205
205
  await asyncio.gather(*[prepare_requests(req) for req in requests])
206
206
 
@@ -40,7 +40,7 @@ from types import TracebackType
40
40
  from collections.abc import AsyncIterator
41
41
 
42
42
  import logging
43
- import asyncio
43
+ import asyncio # pylint: disable=do-not-import-asyncio
44
44
  import codecs
45
45
  import aiohttp
46
46
  import aiohttp.client_exceptions
@@ -24,7 +24,6 @@
24
24
  #
25
25
  # --------------------------------------------------------------------------
26
26
  from __future__ import annotations
27
- import asyncio
28
27
  import abc
29
28
  from collections.abc import AsyncIterator
30
29
  from typing import (
@@ -168,4 +167,6 @@ class AsyncHttpTransport(
168
167
 
169
168
  :param float duration: The number of seconds to sleep.
170
169
  """
170
+ import asyncio # pylint: disable=do-not-import-asyncio
171
+
171
172
  await asyncio.sleep(duration)
@@ -23,7 +23,7 @@
23
23
  # IN THE SOFTWARE.
24
24
  #
25
25
  # --------------------------------------------------------------------------
26
- import asyncio
26
+ import asyncio # pylint: disable=do-not-import-asyncio
27
27
  from collections.abc import AsyncIterator
28
28
  import functools
29
29
  import logging
@@ -24,7 +24,7 @@
24
24
  #
25
25
  # --------------------------------------------------------------------------
26
26
  import collections.abc
27
- import asyncio
27
+ import asyncio # pylint: disable=do-not-import-asyncio
28
28
  from itertools import groupby
29
29
  from typing import Iterator, cast
30
30
  from multidict import CIMultiDict
@@ -132,7 +132,7 @@ class _CIMultiDict(CIMultiDict):
132
132
  def __getitem__(self, key: str) -> str:
133
133
  return ", ".join(self.getall(key, []))
134
134
 
135
- def get(self, key, default=None):
135
+ def get(self, key, /, default=None):
136
136
  values = self.getall(key, None)
137
137
  if values:
138
138
  values = ", ".join(values)
@@ -23,7 +23,7 @@
23
23
  # IN THE SOFTWARE.
24
24
  #
25
25
  # --------------------------------------------------------------------------
26
- import asyncio
26
+ import asyncio # pylint: disable=do-not-import-asyncio
27
27
  from ._http_response_impl_async import AsyncHttpResponseImpl
28
28
  from ._requests_basic import _RestRequestsTransportResponseBase
29
29
  from ..pipeline.transport._requests_asyncio import AsyncioStreamDownloadGenerator
@@ -12,6 +12,7 @@ from opentelemetry.trace import (
12
12
  Span,
13
13
  SpanKind as OpenTelemetrySpanKind,
14
14
  Link as OpenTelemetryLink,
15
+ StatusCode,
15
16
  )
16
17
  from opentelemetry.trace.propagation import get_current_span as get_current_span_otel
17
18
  from opentelemetry.propagate import extract, inject
@@ -92,7 +93,7 @@ class OpenTelemetryTracer:
92
93
  :keyword links: Links to add to the span.
93
94
  :paramtype links: list[~azure.core.tracing.Link]
94
95
  :return: The span that was started
95
- :rtype: ~azure.core.tracing.Span
96
+ :rtype: ~opentelemetry.trace.Span
96
97
  """
97
98
  otel_kind = _KIND_MAPPINGS.get(kind, OpenTelemetrySpanKind.INTERNAL)
98
99
  otel_links = self._parse_links(links)
@@ -161,6 +162,17 @@ class OpenTelemetryTracer:
161
162
  ) as active_span:
162
163
  yield active_span
163
164
 
165
+ @staticmethod
166
+ def set_span_error_status(span: Span, description: Optional[str] = None) -> None:
167
+ """Set the status of a span to ERROR with the provided description, if any.
168
+
169
+ :param span: The span to set the ERROR status on.
170
+ :type span: ~opentelemetry.trace.Span
171
+ :param description: An optional description of the error.
172
+ :type description: str
173
+ """
174
+ span.set_status(StatusCode.ERROR, description=description)
175
+
164
176
  def _parse_links(self, links: Optional[Sequence[Link]]) -> Optional[Sequence[OpenTelemetryLink]]:
165
177
  if not links:
166
178
  return None
@@ -4,7 +4,6 @@
4
4
  # Licensed under the MIT License. See License.txt in the project root for
5
5
  # license information.
6
6
  # --------------------------------------------------------------------------
7
- import asyncio
8
7
  from typing import (
9
8
  TYPE_CHECKING,
10
9
  List,
@@ -57,6 +56,8 @@ class _PartGenerator(AsyncIterator[HttpResponseType], Generic[HttpResponseType])
57
56
 
58
57
  # Not happy to make this code asyncio specific, but that's multipart only for now
59
58
  # If we need trio and multipart, let's reinvesitgate that later
59
+ import asyncio # pylint: disable=do-not-import-asyncio
60
+
60
61
  await asyncio.gather(*[parse_responses(res) for res in responses])
61
62
 
62
63
  return responses
@@ -174,7 +174,7 @@ def get_running_async_lock() -> AsyncContextManager:
174
174
  """
175
175
 
176
176
  try:
177
- import asyncio
177
+ import asyncio # pylint: disable=do-not-import-asyncio
178
178
 
179
179
  # Check if we are running in an asyncio event loop.
180
180
  asyncio.get_running_loop()
@@ -64,4 +64,5 @@ class EnvironmentVariables:
64
64
  AZURE_REGIONAL_AUTHORITY_NAME = "AZURE_REGIONAL_AUTHORITY_NAME"
65
65
 
66
66
  AZURE_FEDERATED_TOKEN_FILE = "AZURE_FEDERATED_TOKEN_FILE"
67
+ AZURE_TOKEN_CREDENTIALS = "AZURE_TOKEN_CREDENTIALS"
67
68
  WORKLOAD_IDENTITY_VARS = (AZURE_AUTHORITY_HOST, AZURE_TENANT_ID, AZURE_FEDERATED_TOKEN_FILE)
@@ -133,6 +133,7 @@ class DefaultAzureCredential(ChainedTokenCredential):
133
133
 
134
134
  process_timeout = kwargs.pop("process_timeout", 10)
135
135
 
136
+ token_credentials_env = os.environ.get(EnvironmentVariables.AZURE_TOKEN_CREDENTIALS, "").strip().lower()
136
137
  exclude_workload_identity_credential = kwargs.pop("exclude_workload_identity_credential", False)
137
138
  exclude_environment_credential = kwargs.pop("exclude_environment_credential", False)
138
139
  exclude_managed_identity_credential = kwargs.pop("exclude_managed_identity_credential", False)
@@ -143,6 +144,26 @@ class DefaultAzureCredential(ChainedTokenCredential):
143
144
  exclude_interactive_browser_credential = kwargs.pop("exclude_interactive_browser_credential", True)
144
145
  exclude_powershell_credential = kwargs.pop("exclude_powershell_credential", False)
145
146
 
147
+ if token_credentials_env == "dev":
148
+ # In dev mode, use only developer credentials
149
+ exclude_environment_credential = True
150
+ exclude_managed_identity_credential = True
151
+ exclude_workload_identity_credential = True
152
+ elif token_credentials_env == "prod":
153
+ # In prod mode, use only production credentials
154
+ exclude_shared_token_cache_credential = True
155
+ exclude_visual_studio_code_credential = True
156
+ exclude_cli_credential = True
157
+ exclude_developer_cli_credential = True
158
+ exclude_powershell_credential = True
159
+ exclude_interactive_browser_credential = True
160
+ elif token_credentials_env != "":
161
+ # If the environment variable is set to something other than dev or prod, raise an error
162
+ raise ValueError(
163
+ f"Invalid value for {EnvironmentVariables.AZURE_TOKEN_CREDENTIALS}: {token_credentials_env}. "
164
+ "Valid values are 'dev' or 'prod'."
165
+ )
166
+
146
167
  credentials: List[SupportsTokenInfo] = []
147
168
  within_dac.set(True)
148
169
  if not exclude_environment_credential:
@@ -155,7 +176,7 @@ class DefaultAzureCredential(ChainedTokenCredential):
155
176
  client_id=cast(str, client_id),
156
177
  tenant_id=workload_identity_tenant_id,
157
178
  token_file_path=os.environ[EnvironmentVariables.AZURE_FEDERATED_TOKEN_FILE],
158
- **kwargs
179
+ **kwargs,
159
180
  )
160
181
  )
161
182
  if not exclude_managed_identity_credential:
@@ -163,7 +184,7 @@ class DefaultAzureCredential(ChainedTokenCredential):
163
184
  ManagedIdentityCredential(
164
185
  client_id=managed_identity_client_id,
165
186
  _exclude_workload_identity_credential=exclude_workload_identity_credential,
166
- **kwargs
187
+ **kwargs,
167
188
  )
168
189
  )
169
190
  if not exclude_shared_token_cache_credential and SharedTokenCacheCredential.supported():
@@ -5,10 +5,12 @@
5
5
  import logging
6
6
  import os
7
7
  from typing import Optional, Union, Any, cast
8
+ import warnings
8
9
  from azure.core.credentials import AccessToken, AccessTokenInfo, TokenRequestOptions, SupportsTokenInfo
9
10
 
10
11
  from .. import CredentialUnavailableError
11
12
  from .._constants import EnvironmentVariables
13
+ from .._internal import within_dac
12
14
  from .._internal.decorators import log_get_token
13
15
  from .certificate import CertificateCredential
14
16
  from .client_secret import ClientSecretCredential
@@ -22,8 +24,8 @@ _LOGGER = logging.getLogger(__name__)
22
24
  class EnvironmentCredential:
23
25
  """A credential configured by environment variables.
24
26
 
25
- This credential is capable of authenticating as a service principal using a client secret or a certificate, or as
26
- a user with a username and password. Configuration is attempted in this order, using these environment variables:
27
+ This credential is capable of authenticating as a service principal using a client secret or a certificate.
28
+ Configuration is attempted in this order, using these environment variables:
27
29
 
28
30
  Service principal with secret:
29
31
  - **AZURE_TENANT_ID**: ID of the service principal's tenant. Also called its 'directory' ID.
@@ -45,20 +47,6 @@ class EnvironmentCredential:
45
47
  "login.microsoftonline.com", the authority for Azure Public Cloud, which is the default
46
48
  when no value is given.
47
49
 
48
- User with username and password:
49
- **Deprecated**: Username and password authentication doesn't support multifactor authentication (MFA).
50
- For more details on Microsoft Entra MFA enforcement, see https://aka.ms/azsdk/identity/mfa.
51
-
52
- - **AZURE_CLIENT_ID**: the application's client ID
53
- - **AZURE_USERNAME**: a username (usually an email address)
54
- - **AZURE_PASSWORD**: that user's password
55
- - **AZURE_TENANT_ID**: (optional) ID of the service principal's tenant. Also called its 'directory' ID.
56
- If not provided, defaults to the 'organizations' tenant, which supports only Microsoft Entra work or
57
- school accounts.
58
- - **AZURE_AUTHORITY_HOST**: authority of a Microsoft Entra endpoint, for example
59
- "login.microsoftonline.com", the authority for Azure Public Cloud, which is the default
60
- when no value is given.
61
-
62
50
  .. admonition:: Example:
63
51
 
64
52
  .. literalinclude:: ../samples/credential_creation_code_snippets.py
@@ -96,8 +84,16 @@ class EnvironmentCredential:
96
84
  username=os.environ[EnvironmentVariables.AZURE_USERNAME],
97
85
  password=os.environ[EnvironmentVariables.AZURE_PASSWORD],
98
86
  tenant_id=os.environ.get(EnvironmentVariables.AZURE_TENANT_ID), # optional for username/password auth
87
+ _silence_deprecation_warning=True, # avoid duplicate warning
99
88
  **kwargs
100
89
  )
90
+ warnings.warn(
91
+ "Environment is configured to use username and password authentication. "
92
+ "This authentication method is deprecated, as it doesn't support multifactor authentication (MFA). "
93
+ "For more details, see https://aka.ms/azsdk/identity/mfa.",
94
+ DeprecationWarning,
95
+ stacklevel=3 if within_dac.get() else 2,
96
+ )
101
97
 
102
98
  if self._credential:
103
99
  _LOGGER.info("Environment is configured for %s", self._credential.__class__.__name__)