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
@@ -5,7 +5,7 @@
5
5
  from __future__ import annotations
6
6
 
7
7
  import datetime
8
- import typing
8
+ from collections.abc import Iterable
9
9
 
10
10
  from cryptography import utils, x509
11
11
  from cryptography.hazmat.bindings._rust import ocsp
@@ -13,11 +13,7 @@ from cryptography.hazmat.primitives import hashes
13
13
  from cryptography.hazmat.primitives.asymmetric.types import (
14
14
  CertificateIssuerPrivateKeyTypes,
15
15
  )
16
- from cryptography.x509.base import (
17
- _EARLIEST_UTC_TIME,
18
- _convert_to_naive_utc_time,
19
- _reject_duplicate_extension,
20
- )
16
+ from cryptography.x509.base import _reject_duplicate_extension
21
17
 
22
18
 
23
19
  class OCSPResponderEncoding(utils.Enum):
@@ -59,8 +55,8 @@ class OCSPCertStatus(utils.Enum):
59
55
  class _SingleResponse:
60
56
  def __init__(
61
57
  self,
62
- cert: x509.Certificate,
63
- issuer: x509.Certificate,
58
+ resp: tuple[x509.Certificate, x509.Certificate] | None,
59
+ resp_hash: tuple[bytes, bytes, int] | None,
64
60
  algorithm: hashes.HashAlgorithm,
65
61
  cert_status: OCSPCertStatus,
66
62
  this_update: datetime.datetime,
@@ -68,11 +64,6 @@ class _SingleResponse:
68
64
  revocation_time: datetime.datetime | None,
69
65
  revocation_reason: x509.ReasonFlags | None,
70
66
  ):
71
- if not isinstance(cert, x509.Certificate) or not isinstance(
72
- issuer, x509.Certificate
73
- ):
74
- raise TypeError("cert and issuer must be a Certificate")
75
-
76
67
  _verify_algorithm(algorithm)
77
68
  if not isinstance(this_update, datetime.datetime):
78
69
  raise TypeError("this_update must be a datetime object")
@@ -81,8 +72,8 @@ class _SingleResponse:
81
72
  ):
82
73
  raise TypeError("next_update must be a datetime object or None")
83
74
 
84
- self._cert = cert
85
- self._issuer = issuer
75
+ self._resp = resp
76
+ self._resp_hash = resp_hash
86
77
  self._algorithm = algorithm
87
78
  self._this_update = this_update
88
79
  self._next_update = next_update
@@ -106,13 +97,6 @@ class _SingleResponse:
106
97
  if not isinstance(revocation_time, datetime.datetime):
107
98
  raise TypeError("revocation_time must be a datetime object")
108
99
 
109
- revocation_time = _convert_to_naive_utc_time(revocation_time)
110
- if revocation_time < _EARLIEST_UTC_TIME:
111
- raise ValueError(
112
- "The revocation_time must be on or after"
113
- " 1950 January 1."
114
- )
115
-
116
100
  if revocation_reason is not None and not isinstance(
117
101
  revocation_reason, x509.ReasonFlags
118
102
  ):
@@ -243,9 +227,60 @@ class OCSPResponseBuilder:
243
227
  if self._response is not None:
244
228
  raise ValueError("Only one response per OCSPResponse.")
245
229
 
230
+ if not isinstance(cert, x509.Certificate) or not isinstance(
231
+ issuer, x509.Certificate
232
+ ):
233
+ raise TypeError("cert and issuer must be a Certificate")
234
+
235
+ singleresp = _SingleResponse(
236
+ (cert, issuer),
237
+ None,
238
+ algorithm,
239
+ cert_status,
240
+ this_update,
241
+ next_update,
242
+ revocation_time,
243
+ revocation_reason,
244
+ )
245
+ return OCSPResponseBuilder(
246
+ singleresp,
247
+ self._responder_id,
248
+ self._certs,
249
+ self._extensions,
250
+ )
251
+
252
+ def add_response_by_hash(
253
+ self,
254
+ issuer_name_hash: bytes,
255
+ issuer_key_hash: bytes,
256
+ serial_number: int,
257
+ algorithm: hashes.HashAlgorithm,
258
+ cert_status: OCSPCertStatus,
259
+ this_update: datetime.datetime,
260
+ next_update: datetime.datetime | None,
261
+ revocation_time: datetime.datetime | None,
262
+ revocation_reason: x509.ReasonFlags | None,
263
+ ) -> OCSPResponseBuilder:
264
+ if self._response is not None:
265
+ raise ValueError("Only one response per OCSPResponse.")
266
+
267
+ if not isinstance(serial_number, int):
268
+ raise TypeError("serial_number must be an integer")
269
+
270
+ utils._check_bytes("issuer_name_hash", issuer_name_hash)
271
+ utils._check_bytes("issuer_key_hash", issuer_key_hash)
272
+ _verify_algorithm(algorithm)
273
+ if algorithm.digest_size != len(
274
+ issuer_name_hash
275
+ ) or algorithm.digest_size != len(issuer_key_hash):
276
+ raise ValueError(
277
+ "issuer_name_hash and issuer_key_hash must be the same length "
278
+ "as the digest size of the algorithm"
279
+ )
280
+
246
281
  singleresp = _SingleResponse(
247
- cert,
248
- issuer,
282
+ None,
283
+ (issuer_name_hash, issuer_key_hash, serial_number),
249
284
  algorithm,
250
285
  cert_status,
251
286
  this_update,
@@ -280,7 +315,7 @@ class OCSPResponseBuilder:
280
315
  )
281
316
 
282
317
  def certificates(
283
- self, certs: typing.Iterable[x509.Certificate]
318
+ self, certs: Iterable[x509.Certificate]
284
319
  ) -> OCSPResponseBuilder:
285
320
  if self._certs is not None:
286
321
  raise ValueError("certificates may only be set once")
@@ -14,6 +14,7 @@ from cryptography.hazmat._oid import (
14
14
  NameOID,
15
15
  ObjectIdentifier,
16
16
  OCSPExtensionOID,
17
+ OtherNameFormOID,
17
18
  PublicKeyAlgorithmOID,
18
19
  SignatureAlgorithmOID,
19
20
  SubjectInformationAccessOID,
@@ -29,6 +30,7 @@ __all__ = [
29
30
  "NameOID",
30
31
  "OCSPExtensionOID",
31
32
  "ObjectIdentifier",
33
+ "OtherNameFormOID",
32
34
  "PublicKeyAlgorithmOID",
33
35
  "SignatureAlgorithmOID",
34
36
  "SubjectInformationAccessOID",
@@ -11,6 +11,9 @@ from cryptography.x509.general_name import DNSName, IPAddress
11
11
 
12
12
  __all__ = [
13
13
  "ClientVerifier",
14
+ "Criticality",
15
+ "ExtensionPolicy",
16
+ "Policy",
14
17
  "PolicyBuilder",
15
18
  "ServerVerifier",
16
19
  "Store",
@@ -25,4 +28,7 @@ VerifiedClient = rust_x509.VerifiedClient
25
28
  ClientVerifier = rust_x509.ClientVerifier
26
29
  ServerVerifier = rust_x509.ServerVerifier
27
30
  PolicyBuilder = rust_x509.PolicyBuilder
31
+ Policy = rust_x509.Policy
32
+ ExtensionPolicy = rust_x509.ExtensionPolicy
33
+ Criticality = rust_x509.Criticality
28
34
  VerificationError = rust_x509.VerificationError
@@ -624,12 +624,15 @@ class BackgroundConsumer(object):
624
624
  ``open()``ed yet.
625
625
  on_response (Callable[[protobuf.Message], None]): The callback to
626
626
  be called for every response on the stream.
627
+ on_fatal_exception (Callable[[Exception], None]): The callback to
628
+ be called on fatal errors during consumption. Default None.
627
629
  """
628
630
 
629
- def __init__(self, bidi_rpc, on_response):
631
+ def __init__(self, bidi_rpc, on_response, on_fatal_exception=None):
630
632
  self._bidi_rpc = bidi_rpc
631
633
  self._on_response = on_response
632
634
  self._paused = False
635
+ self._on_fatal_exception = on_fatal_exception
633
636
  self._wake = threading.Condition()
634
637
  self._thread = None
635
638
  self._operational_lock = threading.Lock()
@@ -664,7 +667,8 @@ class BackgroundConsumer(object):
664
667
  _LOGGER.debug("waiting for recv.")
665
668
  response = self._bidi_rpc.recv()
666
669
  _LOGGER.debug("recved response.")
667
- self._on_response(response)
670
+ if self._on_response is not None:
671
+ self._on_response(response)
668
672
 
669
673
  except exceptions.GoogleAPICallError as exc:
670
674
  _LOGGER.debug(
@@ -675,6 +679,8 @@ class BackgroundConsumer(object):
675
679
  exc,
676
680
  exc_info=True,
677
681
  )
682
+ if self._on_fatal_exception is not None:
683
+ self._on_fatal_exception(exc)
678
684
 
679
685
  except Exception as exc:
680
686
  _LOGGER.exception(
@@ -682,6 +688,8 @@ class BackgroundConsumer(object):
682
688
  _BIDIRECTIONAL_CONSUMER_NAME,
683
689
  exc,
684
690
  )
691
+ if self._on_fatal_exception is not None:
692
+ self._on_fatal_exception(exc)
685
693
 
686
694
  _LOGGER.info("%s exiting", _BIDIRECTIONAL_CONSUMER_NAME)
687
695
 
@@ -693,8 +701,8 @@ class BackgroundConsumer(object):
693
701
  name=_BIDIRECTIONAL_CONSUMER_NAME,
694
702
  target=self._thread_main,
695
703
  args=(ready,),
704
+ daemon=True,
696
705
  )
697
- thread.daemon = True
698
706
  thread.start()
699
707
  # Other parts of the code rely on `thread.is_alive` which
700
708
  # isn't sufficient to know if a thread is active, just that it may
@@ -705,7 +713,11 @@ class BackgroundConsumer(object):
705
713
  _LOGGER.debug("Started helper thread %s", thread.name)
706
714
 
707
715
  def stop(self):
708
- """Stop consuming the stream and shutdown the background thread."""
716
+ """Stop consuming the stream and shutdown the background thread.
717
+
718
+ NOTE: Cannot be called within `_thread_main`, since it is not
719
+ possible to join a thread to itself.
720
+ """
709
721
  with self._operational_lock:
710
722
  self._bidi_rpc.close()
711
723
 
@@ -720,6 +732,7 @@ class BackgroundConsumer(object):
720
732
 
721
733
  self._thread = None
722
734
  self._on_response = None
735
+ self._on_fatal_exception = None
723
736
 
724
737
  @property
725
738
  def is_active(self):
@@ -59,6 +59,7 @@ class ClientInfo(object):
59
59
  Recommended format: ``application-or-tool-ID/major.minor.version``.
60
60
  rest_version (Optional[str]): A string with labeled versions of the
61
61
  dependencies used for REST transport.
62
+ protobuf_runtime_version (Optional[str]): The protobuf runtime version.
62
63
  """
63
64
 
64
65
  def __init__(
@@ -70,6 +71,7 @@ class ClientInfo(object):
70
71
  client_library_version=None,
71
72
  user_agent=None,
72
73
  rest_version=None,
74
+ protobuf_runtime_version=None,
73
75
  ):
74
76
  self.python_version = python_version
75
77
  self.grpc_version = grpc_version
@@ -78,6 +80,7 @@ class ClientInfo(object):
78
80
  self.client_library_version = client_library_version
79
81
  self.user_agent = user_agent
80
82
  self.rest_version = rest_version
83
+ self.protobuf_runtime_version = protobuf_runtime_version
81
84
 
82
85
  def to_user_agent(self):
83
86
  """Returns the user-agent string for this client info."""
@@ -105,4 +108,7 @@ class ClientInfo(object):
105
108
  if self.client_library_version is not None:
106
109
  ua += "gccl/{client_library_version} "
107
110
 
111
+ if self.protobuf_runtime_version is not None:
112
+ ua += "pb/{protobuf_runtime_version} "
113
+
108
114
  return ua.format(**self.__dict__).strip()
@@ -47,6 +47,7 @@ class ClientInfo(client_info.ClientInfo):
47
47
  Recommended format: ``application-or-tool-ID/major.minor.version``.
48
48
  rest_version (Optional[str]): A string with labeled versions of the
49
49
  dependencies used for REST transport.
50
+ protobuf_runtime_version (Optional[str]): The protobuf runtime version.
50
51
  """
51
52
 
52
53
  def to_grpc_metadata(self):
@@ -25,7 +25,7 @@ import random
25
25
  import time
26
26
 
27
27
  from enum import Enum
28
- from typing import Any, Callable, Optional, TYPE_CHECKING
28
+ from typing import Any, Callable, Optional, Iterator, TYPE_CHECKING
29
29
 
30
30
  import requests.exceptions
31
31
 
@@ -174,7 +174,7 @@ def build_retry_error(
174
174
  def _retry_error_helper(
175
175
  exc: Exception,
176
176
  deadline: float | None,
177
- next_sleep: float,
177
+ sleep_iterator: Iterator[float],
178
178
  error_list: list[Exception],
179
179
  predicate_fn: Callable[[Exception], bool],
180
180
  on_error_fn: Callable[[Exception], None] | None,
@@ -183,7 +183,7 @@ def _retry_error_helper(
183
183
  tuple[Exception, Exception | None],
184
184
  ],
185
185
  original_timeout: float | None,
186
- ):
186
+ ) -> float:
187
187
  """
188
188
  Shared logic for handling an error for all retry implementations
189
189
 
@@ -194,13 +194,15 @@ def _retry_error_helper(
194
194
  Args:
195
195
  - exc: the exception that was raised
196
196
  - deadline: the deadline for the retry, calculated as a diff from time.monotonic()
197
- - next_sleep: the next sleep interval
197
+ - sleep_iterator: iterator to draw the next backoff value from
198
198
  - error_list: the list of exceptions that have been raised so far
199
199
  - predicate_fn: takes `exc` and returns true if the operation should be retried
200
200
  - on_error_fn: callback to execute when a retryable error occurs
201
201
  - exc_factory_fn: callback used to build the exception to be raised on terminal failure
202
202
  - original_timeout_val: the original timeout value for the retry (in seconds),
203
203
  to be passed to the exception factory for building an error message
204
+ Returns:
205
+ - the sleep value chosen before the next attempt
204
206
  """
205
207
  error_list.append(exc)
206
208
  if not predicate_fn(exc):
@@ -212,6 +214,12 @@ def _retry_error_helper(
212
214
  raise final_exc from source_exc
213
215
  if on_error_fn is not None:
214
216
  on_error_fn(exc)
217
+ # next_sleep is fetched after the on_error callback, to allow clients
218
+ # to update sleep_iterator values dynamically in response to errors
219
+ try:
220
+ next_sleep = next(sleep_iterator)
221
+ except StopIteration:
222
+ raise ValueError("Sleep generator stopped yielding sleep values.") from exc
215
223
  if deadline is not None and time.monotonic() + next_sleep > deadline:
216
224
  final_exc, source_exc = exc_factory_fn(
217
225
  error_list,
@@ -222,6 +230,7 @@ def _retry_error_helper(
222
230
  _LOGGER.debug(
223
231
  "Retrying due to {}, sleeping {:.1f}s ...".format(error_list[-1], next_sleep)
224
232
  )
233
+ return next_sleep
225
234
 
226
235
 
227
236
  class _BaseRetry(object):
@@ -107,8 +107,11 @@ def retry_target_stream(
107
107
  time.monotonic() + timeout if timeout is not None else None
108
108
  )
109
109
  error_list: list[Exception] = []
110
+ sleep_iter = iter(sleep_generator)
110
111
 
111
- for sleep in sleep_generator:
112
+ # continue trying until an attempt completes, or a terminal exception is raised in _retry_error_helper
113
+ # TODO: support max_attempts argument: https://github.com/googleapis/python-api-core/issues/535
114
+ while True:
112
115
  # Start a new retry loop
113
116
  try:
114
117
  # Note: in the future, we can add a ResumptionStrategy object
@@ -121,10 +124,10 @@ def retry_target_stream(
121
124
  # This function explicitly must deal with broad exceptions.
122
125
  except Exception as exc:
123
126
  # defer to shared logic for handling errors
124
- _retry_error_helper(
127
+ next_sleep = _retry_error_helper(
125
128
  exc,
126
129
  deadline,
127
- sleep,
130
+ sleep_iter,
128
131
  error_list,
129
132
  predicate,
130
133
  on_error,
@@ -132,9 +135,7 @@ def retry_target_stream(
132
135
  timeout,
133
136
  )
134
137
  # if exception not raised, sleep before next attempt
135
- time.sleep(sleep)
136
-
137
- raise ValueError("Sleep generator stopped yielding sleep values.")
138
+ time.sleep(next_sleep)
138
139
 
139
140
 
140
141
  class StreamingRetry(_BaseRetry):
@@ -109,9 +109,12 @@ async def retry_target_stream(
109
109
  deadline = time.monotonic() + timeout if timeout else None
110
110
  # keep track of retryable exceptions we encounter to pass in to exception_factory
111
111
  error_list: list[Exception] = []
112
+ sleep_iter = iter(sleep_generator)
112
113
  target_is_generator: bool | None = None
113
114
 
114
- for sleep in sleep_generator:
115
+ # continue trying until an attempt completes, or a terminal exception is raised in _retry_error_helper
116
+ # TODO: support max_attempts argument: https://github.com/googleapis/python-api-core/issues/535
117
+ while True:
115
118
  # Start a new retry loop
116
119
  try:
117
120
  # Note: in the future, we can add a ResumptionStrategy object
@@ -174,10 +177,10 @@ async def retry_target_stream(
174
177
  # This function explicitly must deal with broad exceptions.
175
178
  except Exception as exc:
176
179
  # defer to shared logic for handling errors
177
- _retry_error_helper(
180
+ next_sleep = _retry_error_helper(
178
181
  exc,
179
182
  deadline,
180
- sleep,
183
+ sleep_iter,
181
184
  error_list,
182
185
  predicate,
183
186
  on_error,
@@ -185,11 +188,11 @@ async def retry_target_stream(
185
188
  timeout,
186
189
  )
187
190
  # if exception not raised, sleep before next attempt
188
- await asyncio.sleep(sleep)
191
+ await asyncio.sleep(next_sleep)
192
+
189
193
  finally:
190
194
  if target_is_generator and target_iterator is not None:
191
195
  await cast(AsyncGenerator["_Y", None], target_iterator).aclose()
192
- raise ValueError("Sleep generator stopped yielding sleep values.")
193
196
 
194
197
 
195
198
  class AsyncStreamingRetry(_BaseRetry):
@@ -138,8 +138,11 @@ def retry_target(
138
138
 
139
139
  deadline = time.monotonic() + timeout if timeout is not None else None
140
140
  error_list: list[Exception] = []
141
+ sleep_iter = iter(sleep_generator)
141
142
 
142
- for sleep in sleep_generator:
143
+ # continue trying until an attempt completes, or a terminal exception is raised in _retry_error_helper
144
+ # TODO: support max_attempts argument: https://github.com/googleapis/python-api-core/issues/535
145
+ while True:
143
146
  try:
144
147
  result = target()
145
148
  if inspect.isawaitable(result):
@@ -150,10 +153,10 @@ def retry_target(
150
153
  # This function explicitly must deal with broad exceptions.
151
154
  except Exception as exc:
152
155
  # defer to shared logic for handling errors
153
- _retry_error_helper(
156
+ next_sleep = _retry_error_helper(
154
157
  exc,
155
158
  deadline,
156
- sleep,
159
+ sleep_iter,
157
160
  error_list,
158
161
  predicate,
159
162
  on_error,
@@ -161,9 +164,7 @@ def retry_target(
161
164
  timeout,
162
165
  )
163
166
  # if exception not raised, sleep before next attempt
164
- time.sleep(sleep)
165
-
166
- raise ValueError("Sleep generator stopped yielding sleep values.")
167
+ time.sleep(next_sleep)
167
168
 
168
169
 
169
170
  class Retry(_BaseRetry):
@@ -149,18 +149,21 @@ async def retry_target(
149
149
 
150
150
  deadline = time.monotonic() + timeout if timeout is not None else None
151
151
  error_list: list[Exception] = []
152
+ sleep_iter = iter(sleep_generator)
152
153
 
153
- for sleep in sleep_generator:
154
+ # continue trying until an attempt completes, or a terminal exception is raised in _retry_error_helper
155
+ # TODO: support max_attempts argument: https://github.com/googleapis/python-api-core/issues/535
156
+ while True:
154
157
  try:
155
158
  return await target()
156
159
  # pylint: disable=broad-except
157
160
  # This function explicitly must deal with broad exceptions.
158
161
  except Exception as exc:
159
162
  # defer to shared logic for handling errors
160
- _retry_error_helper(
163
+ next_sleep = _retry_error_helper(
161
164
  exc,
162
165
  deadline,
163
- sleep,
166
+ sleep_iter,
164
167
  error_list,
165
168
  predicate,
166
169
  on_error,
@@ -168,9 +171,7 @@ async def retry_target(
168
171
  timeout,
169
172
  )
170
173
  # if exception not raised, sleep before next attempt
171
- await asyncio.sleep(sleep)
172
-
173
- raise ValueError("Sleep generator stopped yielding sleep values.")
174
+ await asyncio.sleep(next_sleep)
174
175
 
175
176
 
176
177
  class AsyncRetry(_BaseRetry):
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- __version__ = "2.24.2"
15
+ __version__ = "2.25.1"
@@ -484,42 +484,8 @@ def _get_impersonated_service_account_credentials(filename, info, scopes):
484
484
  from google.auth import impersonated_credentials
485
485
 
486
486
  try:
487
- source_credentials_info = info.get("source_credentials")
488
- source_credentials_type = source_credentials_info.get("type")
489
- if source_credentials_type == _AUTHORIZED_USER_TYPE:
490
- source_credentials, _ = _get_authorized_user_credentials(
491
- filename, source_credentials_info
492
- )
493
- elif source_credentials_type == _SERVICE_ACCOUNT_TYPE:
494
- source_credentials, _ = _get_service_account_credentials(
495
- filename, source_credentials_info
496
- )
497
- elif source_credentials_type == _EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE:
498
- source_credentials, _ = _get_external_account_authorized_user_credentials(
499
- filename, source_credentials_info
500
- )
501
- else:
502
- raise exceptions.InvalidType(
503
- "source credential of type {} is not supported.".format(
504
- source_credentials_type
505
- )
506
- )
507
- impersonation_url = info.get("service_account_impersonation_url")
508
- start_index = impersonation_url.rfind("/")
509
- end_index = impersonation_url.find(":generateAccessToken")
510
- if start_index == -1 or end_index == -1 or start_index > end_index:
511
- raise exceptions.InvalidValue(
512
- "Cannot extract target principal from {}".format(impersonation_url)
513
- )
514
- target_principal = impersonation_url[start_index + 1 : end_index]
515
- delegates = info.get("delegates")
516
- quota_project_id = info.get("quota_project_id")
517
- credentials = impersonated_credentials.Credentials(
518
- source_credentials,
519
- target_principal,
520
- scopes,
521
- delegates,
522
- quota_project_id=quota_project_id,
487
+ credentials = impersonated_credentials.Credentials.from_impersonated_service_account_info(
488
+ info, scopes=scopes
523
489
  )
524
490
  except ValueError as caught_exc:
525
491
  msg = "Failed to load impersonated service account credentials from {}".format(