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
@@ -9,6 +9,7 @@ import datetime
9
9
  import os
10
10
  import typing
11
11
  import warnings
12
+ from collections.abc import Iterable
12
13
 
13
14
  from cryptography import utils
14
15
  from cryptography.hazmat.bindings._rust import x509 as rust_x509
@@ -131,7 +132,7 @@ class Attribute:
131
132
  class Attributes:
132
133
  def __init__(
133
134
  self,
134
- attributes: typing.Iterable[Attribute],
135
+ attributes: Iterable[Attribute],
135
136
  ) -> None:
136
137
  self._attributes = list(attributes)
137
138
 
@@ -330,6 +331,7 @@ class CertificateSigningRequestBuilder:
330
331
  backend: typing.Any = None,
331
332
  *,
332
333
  rsa_padding: padding.PSS | padding.PKCS1v15 | None = None,
334
+ ecdsa_deterministic: bool | None = None,
333
335
  ) -> CertificateSigningRequest:
334
336
  """
335
337
  Signs the request using the requestor's private key.
@@ -343,8 +345,18 @@ class CertificateSigningRequestBuilder:
343
345
  if not isinstance(private_key, rsa.RSAPrivateKey):
344
346
  raise TypeError("Padding is only supported for RSA keys")
345
347
 
348
+ if ecdsa_deterministic is not None:
349
+ if not isinstance(private_key, ec.EllipticCurvePrivateKey):
350
+ raise TypeError(
351
+ "Deterministic ECDSA is only supported for EC keys"
352
+ )
353
+
346
354
  return rust_x509.create_x509_csr(
347
- self, private_key, algorithm, rsa_padding
355
+ self,
356
+ private_key,
357
+ algorithm,
358
+ rsa_padding,
359
+ ecdsa_deterministic,
348
360
  )
349
361
 
350
362
 
@@ -510,8 +522,7 @@ class CertificateBuilder:
510
522
  time = _convert_to_naive_utc_time(time)
511
523
  if time < _EARLIEST_UTC_TIME:
512
524
  raise ValueError(
513
- "The not valid after date must be on or after"
514
- " 1950 January 1."
525
+ "The not valid after date must be on or after 1950 January 1."
515
526
  )
516
527
  if (
517
528
  self._not_valid_before is not None
@@ -560,6 +571,7 @@ class CertificateBuilder:
560
571
  backend: typing.Any = None,
561
572
  *,
562
573
  rsa_padding: padding.PSS | padding.PKCS1v15 | None = None,
574
+ ecdsa_deterministic: bool | None = None,
563
575
  ) -> Certificate:
564
576
  """
565
577
  Signs the certificate using the CA's private key.
@@ -588,8 +600,18 @@ class CertificateBuilder:
588
600
  if not isinstance(private_key, rsa.RSAPrivateKey):
589
601
  raise TypeError("Padding is only supported for RSA keys")
590
602
 
603
+ if ecdsa_deterministic is not None:
604
+ if not isinstance(private_key, ec.EllipticCurvePrivateKey):
605
+ raise TypeError(
606
+ "Deterministic ECDSA is only supported for EC keys"
607
+ )
608
+
591
609
  return rust_x509.create_x509_certificate(
592
- self, private_key, algorithm, rsa_padding
610
+ self,
611
+ private_key,
612
+ algorithm,
613
+ rsa_padding,
614
+ ecdsa_deterministic,
593
615
  )
594
616
 
595
617
 
@@ -717,6 +739,7 @@ class CertificateRevocationListBuilder:
717
739
  backend: typing.Any = None,
718
740
  *,
719
741
  rsa_padding: padding.PSS | padding.PKCS1v15 | None = None,
742
+ ecdsa_deterministic: bool | None = None,
720
743
  ) -> CertificateRevocationList:
721
744
  if self._issuer_name is None:
722
745
  raise ValueError("A CRL must have an issuer name")
@@ -733,8 +756,18 @@ class CertificateRevocationListBuilder:
733
756
  if not isinstance(private_key, rsa.RSAPrivateKey):
734
757
  raise TypeError("Padding is only supported for RSA keys")
735
758
 
759
+ if ecdsa_deterministic is not None:
760
+ if not isinstance(private_key, ec.EllipticCurvePrivateKey):
761
+ raise TypeError(
762
+ "Deterministic ECDSA is only supported for EC keys"
763
+ )
764
+
736
765
  return rust_x509.create_x509_crl(
737
- self, private_key, algorithm, rsa_padding
766
+ self,
767
+ private_key,
768
+ algorithm,
769
+ rsa_padding,
770
+ ecdsa_deterministic,
738
771
  )
739
772
 
740
773
 
@@ -9,6 +9,7 @@ import datetime
9
9
  import hashlib
10
10
  import ipaddress
11
11
  import typing
12
+ from collections.abc import Iterable, Iterator
12
13
 
13
14
  from cryptography import utils
14
15
  from cryptography.hazmat.bindings._rust import asn1
@@ -109,9 +110,7 @@ class ExtensionType(metaclass=abc.ABCMeta):
109
110
 
110
111
 
111
112
  class Extensions:
112
- def __init__(
113
- self, extensions: typing.Iterable[Extension[ExtensionType]]
114
- ) -> None:
113
+ def __init__(self, extensions: Iterable[Extension[ExtensionType]]) -> None:
115
114
  self._extensions = list(extensions)
116
115
 
117
116
  def get_extension_for_oid(
@@ -182,7 +181,7 @@ class AuthorityKeyIdentifier(ExtensionType):
182
181
  def __init__(
183
182
  self,
184
183
  key_identifier: bytes | None,
185
- authority_cert_issuer: typing.Iterable[GeneralName] | None,
184
+ authority_cert_issuer: Iterable[GeneralName] | None,
186
185
  authority_cert_serial_number: int | None,
187
186
  ) -> None:
188
187
  if (authority_cert_issuer is None) != (
@@ -323,9 +322,7 @@ class SubjectKeyIdentifier(ExtensionType):
323
322
  class AuthorityInformationAccess(ExtensionType):
324
323
  oid = ExtensionOID.AUTHORITY_INFORMATION_ACCESS
325
324
 
326
- def __init__(
327
- self, descriptions: typing.Iterable[AccessDescription]
328
- ) -> None:
325
+ def __init__(self, descriptions: Iterable[AccessDescription]) -> None:
329
326
  descriptions = list(descriptions)
330
327
  if not all(isinstance(x, AccessDescription) for x in descriptions):
331
328
  raise TypeError(
@@ -356,9 +353,7 @@ class AuthorityInformationAccess(ExtensionType):
356
353
  class SubjectInformationAccess(ExtensionType):
357
354
  oid = ExtensionOID.SUBJECT_INFORMATION_ACCESS
358
355
 
359
- def __init__(
360
- self, descriptions: typing.Iterable[AccessDescription]
361
- ) -> None:
356
+ def __init__(self, descriptions: Iterable[AccessDescription]) -> None:
362
357
  descriptions = list(descriptions)
363
358
  if not all(isinstance(x, AccessDescription) for x in descriptions):
364
359
  raise TypeError(
@@ -456,8 +451,7 @@ class BasicConstraints(ExtensionType):
456
451
 
457
452
  def __repr__(self) -> str:
458
453
  return (
459
- f"<BasicConstraints(ca={self.ca}, "
460
- f"path_length={self.path_length})>"
454
+ f"<BasicConstraints(ca={self.ca}, path_length={self.path_length})>"
461
455
  )
462
456
 
463
457
  def __eq__(self, other: object) -> bool:
@@ -506,7 +500,7 @@ class CRLDistributionPoints(ExtensionType):
506
500
  oid = ExtensionOID.CRL_DISTRIBUTION_POINTS
507
501
 
508
502
  def __init__(
509
- self, distribution_points: typing.Iterable[DistributionPoint]
503
+ self, distribution_points: Iterable[DistributionPoint]
510
504
  ) -> None:
511
505
  distribution_points = list(distribution_points)
512
506
  if not all(
@@ -543,7 +537,7 @@ class FreshestCRL(ExtensionType):
543
537
  oid = ExtensionOID.FRESHEST_CRL
544
538
 
545
539
  def __init__(
546
- self, distribution_points: typing.Iterable[DistributionPoint]
540
+ self, distribution_points: Iterable[DistributionPoint]
547
541
  ) -> None:
548
542
  distribution_points = list(distribution_points)
549
543
  if not all(
@@ -579,10 +573,10 @@ class FreshestCRL(ExtensionType):
579
573
  class DistributionPoint:
580
574
  def __init__(
581
575
  self,
582
- full_name: typing.Iterable[GeneralName] | None,
576
+ full_name: Iterable[GeneralName] | None,
583
577
  relative_name: RelativeDistinguishedName | None,
584
578
  reasons: frozenset[ReasonFlags] | None,
585
- crl_issuer: typing.Iterable[GeneralName] | None,
579
+ crl_issuer: Iterable[GeneralName] | None,
586
580
  ) -> None:
587
581
  if full_name and relative_name:
588
582
  raise ValueError(
@@ -824,12 +818,11 @@ class PolicyConstraints(ExtensionType):
824
818
  class CertificatePolicies(ExtensionType):
825
819
  oid = ExtensionOID.CERTIFICATE_POLICIES
826
820
 
827
- def __init__(self, policies: typing.Iterable[PolicyInformation]) -> None:
821
+ def __init__(self, policies: Iterable[PolicyInformation]) -> None:
828
822
  policies = list(policies)
829
823
  if not all(isinstance(x, PolicyInformation) for x in policies):
830
824
  raise TypeError(
831
- "Every item in the policies list must be a "
832
- "PolicyInformation"
825
+ "Every item in the policies list must be a PolicyInformation"
833
826
  )
834
827
 
835
828
  self._policies = policies
@@ -856,7 +849,7 @@ class PolicyInformation:
856
849
  def __init__(
857
850
  self,
858
851
  policy_identifier: ObjectIdentifier,
859
- policy_qualifiers: typing.Iterable[str | UserNotice] | None,
852
+ policy_qualifiers: Iterable[str | UserNotice] | None,
860
853
  ) -> None:
861
854
  if not isinstance(policy_identifier, ObjectIdentifier):
862
855
  raise TypeError("policy_identifier must be an ObjectIdentifier")
@@ -956,7 +949,7 @@ class NoticeReference:
956
949
  def __init__(
957
950
  self,
958
951
  organization: str | None,
959
- notice_numbers: typing.Iterable[int],
952
+ notice_numbers: Iterable[int],
960
953
  ) -> None:
961
954
  self._organization = organization
962
955
  notice_numbers = list(notice_numbers)
@@ -995,7 +988,7 @@ class NoticeReference:
995
988
  class ExtendedKeyUsage(ExtensionType):
996
989
  oid = ExtensionOID.EXTENDED_KEY_USAGE
997
990
 
998
- def __init__(self, usages: typing.Iterable[ObjectIdentifier]) -> None:
991
+ def __init__(self, usages: Iterable[ObjectIdentifier]) -> None:
999
992
  usages = list(usages)
1000
993
  if not all(isinstance(x, ObjectIdentifier) for x in usages):
1001
994
  raise TypeError(
@@ -1063,7 +1056,7 @@ class PrecertPoison(ExtensionType):
1063
1056
  class TLSFeature(ExtensionType):
1064
1057
  oid = ExtensionOID.TLS_FEATURE
1065
1058
 
1066
- def __init__(self, features: typing.Iterable[TLSFeatureType]) -> None:
1059
+ def __init__(self, features: Iterable[TLSFeatureType]) -> None:
1067
1060
  features = list(features)
1068
1061
  if (
1069
1062
  not all(isinstance(x, TLSFeatureType) for x in features)
@@ -1273,13 +1266,78 @@ class KeyUsage(ExtensionType):
1273
1266
  return rust_x509.encode_extension_value(self)
1274
1267
 
1275
1268
 
1269
+ class PrivateKeyUsagePeriod(ExtensionType):
1270
+ oid = ExtensionOID.PRIVATE_KEY_USAGE_PERIOD
1271
+
1272
+ def __init__(
1273
+ self,
1274
+ not_before: datetime.datetime | None,
1275
+ not_after: datetime.datetime | None,
1276
+ ) -> None:
1277
+ if (
1278
+ not isinstance(not_before, datetime.datetime)
1279
+ and not_before is not None
1280
+ ):
1281
+ raise TypeError("not_before must be a datetime.datetime or None")
1282
+
1283
+ if (
1284
+ not isinstance(not_after, datetime.datetime)
1285
+ and not_after is not None
1286
+ ):
1287
+ raise TypeError("not_after must be a datetime.datetime or None")
1288
+
1289
+ if not_before is None and not_after is None:
1290
+ raise ValueError(
1291
+ "At least one of not_before and not_after must not be None"
1292
+ )
1293
+
1294
+ if (
1295
+ not_before is not None
1296
+ and not_after is not None
1297
+ and not_before > not_after
1298
+ ):
1299
+ raise ValueError("not_before must be before not_after")
1300
+
1301
+ self._not_before = not_before
1302
+ self._not_after = not_after
1303
+
1304
+ @property
1305
+ def not_before(self) -> datetime.datetime | None:
1306
+ return self._not_before
1307
+
1308
+ @property
1309
+ def not_after(self) -> datetime.datetime | None:
1310
+ return self._not_after
1311
+
1312
+ def __repr__(self) -> str:
1313
+ return (
1314
+ f"<PrivateKeyUsagePeriod(not_before={self.not_before}, "
1315
+ f"not_after={self.not_after})>"
1316
+ )
1317
+
1318
+ def __eq__(self, other: object) -> bool:
1319
+ if not isinstance(other, PrivateKeyUsagePeriod):
1320
+ return NotImplemented
1321
+
1322
+ return (
1323
+ self.not_before == other.not_before
1324
+ and self.not_after == other.not_after
1325
+ )
1326
+
1327
+ def __hash__(self) -> int:
1328
+ return hash((self.not_before, self.not_after))
1329
+
1330
+ def public_bytes(self) -> bytes:
1331
+ return rust_x509.encode_extension_value(self)
1332
+
1333
+
1276
1334
  class NameConstraints(ExtensionType):
1277
1335
  oid = ExtensionOID.NAME_CONSTRAINTS
1278
1336
 
1279
1337
  def __init__(
1280
1338
  self,
1281
- permitted_subtrees: typing.Iterable[GeneralName] | None,
1282
- excluded_subtrees: typing.Iterable[GeneralName] | None,
1339
+ permitted_subtrees: Iterable[GeneralName] | None,
1340
+ excluded_subtrees: Iterable[GeneralName] | None,
1283
1341
  ) -> None:
1284
1342
  if permitted_subtrees is not None:
1285
1343
  permitted_subtrees = list(permitted_subtrees)
@@ -1327,11 +1385,11 @@ class NameConstraints(ExtensionType):
1327
1385
  and self.permitted_subtrees == other.permitted_subtrees
1328
1386
  )
1329
1387
 
1330
- def _validate_tree(self, tree: typing.Iterable[GeneralName]) -> None:
1388
+ def _validate_tree(self, tree: Iterable[GeneralName]) -> None:
1331
1389
  self._validate_ip_name(tree)
1332
1390
  self._validate_dns_name(tree)
1333
1391
 
1334
- def _validate_ip_name(self, tree: typing.Iterable[GeneralName]) -> None:
1392
+ def _validate_ip_name(self, tree: Iterable[GeneralName]) -> None:
1335
1393
  if any(
1336
1394
  isinstance(name, IPAddress)
1337
1395
  and not isinstance(
@@ -1344,7 +1402,7 @@ class NameConstraints(ExtensionType):
1344
1402
  " IPv6Network object"
1345
1403
  )
1346
1404
 
1347
- def _validate_dns_name(self, tree: typing.Iterable[GeneralName]) -> None:
1405
+ def _validate_dns_name(self, tree: Iterable[GeneralName]) -> None:
1348
1406
  if any(
1349
1407
  isinstance(name, DNSName) and "*" in name.value for name in tree
1350
1408
  ):
@@ -1437,7 +1495,7 @@ class Extension(typing.Generic[ExtensionTypeVar]):
1437
1495
 
1438
1496
 
1439
1497
  class GeneralNames:
1440
- def __init__(self, general_names: typing.Iterable[GeneralName]) -> None:
1498
+ def __init__(self, general_names: Iterable[GeneralName]) -> None:
1441
1499
  general_names = list(general_names)
1442
1500
  if not all(isinstance(x, GeneralName) for x in general_names):
1443
1501
  raise TypeError(
@@ -1519,7 +1577,7 @@ class GeneralNames:
1519
1577
  class SubjectAlternativeName(ExtensionType):
1520
1578
  oid = ExtensionOID.SUBJECT_ALTERNATIVE_NAME
1521
1579
 
1522
- def __init__(self, general_names: typing.Iterable[GeneralName]) -> None:
1580
+ def __init__(self, general_names: Iterable[GeneralName]) -> None:
1523
1581
  self._general_names = GeneralNames(general_names)
1524
1582
 
1525
1583
  __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names")
@@ -1591,7 +1649,7 @@ class SubjectAlternativeName(ExtensionType):
1591
1649
  class IssuerAlternativeName(ExtensionType):
1592
1650
  oid = ExtensionOID.ISSUER_ALTERNATIVE_NAME
1593
1651
 
1594
- def __init__(self, general_names: typing.Iterable[GeneralName]) -> None:
1652
+ def __init__(self, general_names: Iterable[GeneralName]) -> None:
1595
1653
  self._general_names = GeneralNames(general_names)
1596
1654
 
1597
1655
  __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names")
@@ -1663,7 +1721,7 @@ class IssuerAlternativeName(ExtensionType):
1663
1721
  class CertificateIssuer(ExtensionType):
1664
1722
  oid = CRLEntryExtensionOID.CERTIFICATE_ISSUER
1665
1723
 
1666
- def __init__(self, general_names: typing.Iterable[GeneralName]) -> None:
1724
+ def __init__(self, general_names: Iterable[GeneralName]) -> None:
1667
1725
  self._general_names = GeneralNames(general_names)
1668
1726
 
1669
1727
  __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names")
@@ -1802,9 +1860,7 @@ class PrecertificateSignedCertificateTimestamps(ExtensionType):
1802
1860
 
1803
1861
  def __init__(
1804
1862
  self,
1805
- signed_certificate_timestamps: typing.Iterable[
1806
- SignedCertificateTimestamp
1807
- ],
1863
+ signed_certificate_timestamps: Iterable[SignedCertificateTimestamp],
1808
1864
  ) -> None:
1809
1865
  signed_certificate_timestamps = list(signed_certificate_timestamps)
1810
1866
  if not all(
@@ -1845,9 +1901,7 @@ class SignedCertificateTimestamps(ExtensionType):
1845
1901
 
1846
1902
  def __init__(
1847
1903
  self,
1848
- signed_certificate_timestamps: typing.Iterable[
1849
- SignedCertificateTimestamp
1850
- ],
1904
+ signed_certificate_timestamps: Iterable[SignedCertificateTimestamp],
1851
1905
  ) -> None:
1852
1906
  signed_certificate_timestamps = list(signed_certificate_timestamps)
1853
1907
  if not all(
@@ -1915,7 +1969,7 @@ class OCSPNonce(ExtensionType):
1915
1969
  class OCSPAcceptableResponses(ExtensionType):
1916
1970
  oid = OCSPExtensionOID.ACCEPTABLE_RESPONSES
1917
1971
 
1918
- def __init__(self, responses: typing.Iterable[ObjectIdentifier]) -> None:
1972
+ def __init__(self, responses: Iterable[ObjectIdentifier]) -> None:
1919
1973
  responses = list(responses)
1920
1974
  if any(not isinstance(r, ObjectIdentifier) for r in responses):
1921
1975
  raise TypeError("All responses must be ObjectIdentifiers")
@@ -1934,7 +1988,7 @@ class OCSPAcceptableResponses(ExtensionType):
1934
1988
  def __repr__(self) -> str:
1935
1989
  return f"<OCSPAcceptableResponses(responses={self._responses})>"
1936
1990
 
1937
- def __iter__(self) -> typing.Iterator[ObjectIdentifier]:
1991
+ def __iter__(self) -> Iterator[ObjectIdentifier]:
1938
1992
  return iter(self._responses)
1939
1993
 
1940
1994
  def public_bytes(self) -> bytes:
@@ -1946,7 +2000,7 @@ class IssuingDistributionPoint(ExtensionType):
1946
2000
 
1947
2001
  def __init__(
1948
2002
  self,
1949
- full_name: typing.Iterable[GeneralName] | None,
2003
+ full_name: Iterable[GeneralName] | None,
1950
2004
  relative_name: RelativeDistinguishedName | None,
1951
2005
  only_contains_user_certs: bool,
1952
2006
  only_contains_ca_certs: bool,
@@ -2224,8 +2278,8 @@ class ProfessionInfo:
2224
2278
  def __init__(
2225
2279
  self,
2226
2280
  naming_authority: NamingAuthority | None,
2227
- profession_items: typing.Iterable[str],
2228
- profession_oids: typing.Iterable[ObjectIdentifier] | None,
2281
+ profession_items: Iterable[str],
2282
+ profession_oids: Iterable[ObjectIdentifier] | None,
2229
2283
  registration_number: str | None,
2230
2284
  add_profession_info: bytes | None,
2231
2285
  ) -> None:
@@ -2328,7 +2382,7 @@ class Admission:
2328
2382
  self,
2329
2383
  admission_authority: GeneralName | None,
2330
2384
  naming_authority: NamingAuthority | None,
2331
- profession_infos: typing.Iterable[ProfessionInfo],
2385
+ profession_infos: Iterable[ProfessionInfo],
2332
2386
  ) -> None:
2333
2387
  if admission_authority is not None and not isinstance(
2334
2388
  admission_authority, GeneralName
@@ -2398,7 +2452,7 @@ class Admissions(ExtensionType):
2398
2452
  def __init__(
2399
2453
  self,
2400
2454
  authority: GeneralName | None,
2401
- admissions: typing.Iterable[Admission],
2455
+ admissions: Iterable[Admission],
2402
2456
  ) -> None:
2403
2457
  if authority is not None and not isinstance(authority, GeneralName):
2404
2458
  raise TypeError("authority must be a GeneralName")
@@ -2459,10 +2513,7 @@ class UnrecognizedExtension(ExtensionType):
2459
2513
  return self._value
2460
2514
 
2461
2515
  def __repr__(self) -> str:
2462
- return (
2463
- f"<UnrecognizedExtension(oid={self.oid}, "
2464
- f"value={self.value!r})>"
2465
- )
2516
+ return f"<UnrecognizedExtension(oid={self.oid}, value={self.value!r})>"
2466
2517
 
2467
2518
  def __eq__(self, other: object) -> bool:
2468
2519
  if not isinstance(other, UnrecognizedExtension):
@@ -9,6 +9,7 @@ import re
9
9
  import sys
10
10
  import typing
11
11
  import warnings
12
+ from collections.abc import Iterable, Iterator
12
13
 
13
14
  from cryptography import utils
14
15
  from cryptography.hazmat.bindings._rust import x509 as rust_x509
@@ -114,11 +115,20 @@ def _unescape_dn_value(val: str) -> str:
114
115
  return _RFC4514NameParser._PAIR_RE.sub(sub, val)
115
116
 
116
117
 
117
- class NameAttribute:
118
+ NameAttributeValueType = typing.TypeVar(
119
+ "NameAttributeValueType",
120
+ typing.Union[str, bytes],
121
+ str,
122
+ bytes,
123
+ covariant=True,
124
+ )
125
+
126
+
127
+ class NameAttribute(typing.Generic[NameAttributeValueType]):
118
128
  def __init__(
119
129
  self,
120
130
  oid: ObjectIdentifier,
121
- value: str | bytes,
131
+ value: NameAttributeValueType,
122
132
  _type: _ASN1Type | None = None,
123
133
  *,
124
134
  _validate: bool = True,
@@ -166,15 +176,15 @@ class NameAttribute:
166
176
  raise TypeError("_type must be from the _ASN1Type enum")
167
177
 
168
178
  self._oid = oid
169
- self._value = value
170
- self._type = _type
179
+ self._value: NameAttributeValueType = value
180
+ self._type: _ASN1Type = _type
171
181
 
172
182
  @property
173
183
  def oid(self) -> ObjectIdentifier:
174
184
  return self._oid
175
185
 
176
186
  @property
177
- def value(self) -> str | bytes:
187
+ def value(self) -> NameAttributeValueType:
178
188
  return self._value
179
189
 
180
190
  @property
@@ -216,7 +226,7 @@ class NameAttribute:
216
226
 
217
227
 
218
228
  class RelativeDistinguishedName:
219
- def __init__(self, attributes: typing.Iterable[NameAttribute]):
229
+ def __init__(self, attributes: Iterable[NameAttribute]):
220
230
  attributes = list(attributes)
221
231
  if not attributes:
222
232
  raise ValueError("a relative distinguished name cannot be empty")
@@ -231,8 +241,9 @@ class RelativeDistinguishedName:
231
241
  raise ValueError("duplicate attributes are not allowed")
232
242
 
233
243
  def get_attributes_for_oid(
234
- self, oid: ObjectIdentifier
235
- ) -> list[NameAttribute]:
244
+ self,
245
+ oid: ObjectIdentifier,
246
+ ) -> list[NameAttribute[str | bytes]]:
236
247
  return [i for i in self if i.oid == oid]
237
248
 
238
249
  def rfc4514_string(
@@ -258,7 +269,7 @@ class RelativeDistinguishedName:
258
269
  def __hash__(self) -> int:
259
270
  return hash(self._attribute_set)
260
271
 
261
- def __iter__(self) -> typing.Iterator[NameAttribute]:
272
+ def __iter__(self) -> Iterator[NameAttribute]:
262
273
  return iter(self._attributes)
263
274
 
264
275
  def __len__(self) -> int:
@@ -270,16 +281,16 @@ class RelativeDistinguishedName:
270
281
 
271
282
  class Name:
272
283
  @typing.overload
273
- def __init__(self, attributes: typing.Iterable[NameAttribute]) -> None: ...
284
+ def __init__(self, attributes: Iterable[NameAttribute]) -> None: ...
274
285
 
275
286
  @typing.overload
276
287
  def __init__(
277
- self, attributes: typing.Iterable[RelativeDistinguishedName]
288
+ self, attributes: Iterable[RelativeDistinguishedName]
278
289
  ) -> None: ...
279
290
 
280
291
  def __init__(
281
292
  self,
282
- attributes: typing.Iterable[NameAttribute | RelativeDistinguishedName],
293
+ attributes: Iterable[NameAttribute | RelativeDistinguishedName],
283
294
  ) -> None:
284
295
  attributes = list(attributes)
285
296
  if all(isinstance(x, NameAttribute) for x in attributes):
@@ -324,8 +335,9 @@ class Name:
324
335
  )
325
336
 
326
337
  def get_attributes_for_oid(
327
- self, oid: ObjectIdentifier
328
- ) -> list[NameAttribute]:
338
+ self,
339
+ oid: ObjectIdentifier,
340
+ ) -> list[NameAttribute[str | bytes]]:
329
341
  return [i for i in self if i.oid == oid]
330
342
 
331
343
  @property
@@ -346,7 +358,7 @@ class Name:
346
358
  # for you, consider optimizing!
347
359
  return hash(tuple(self._attributes))
348
360
 
349
- def __iter__(self) -> typing.Iterator[NameAttribute]:
361
+ def __iter__(self) -> Iterator[NameAttribute]:
350
362
  for rdn in self._attributes:
351
363
  yield from rdn
352
364