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,20 +5,19 @@
5
5
  from __future__ import annotations
6
6
 
7
7
  import abc
8
- import typing
9
8
 
10
9
  from cryptography import utils
11
- from cryptography.exceptions import AlreadyFinalized
12
10
  from cryptography.hazmat.bindings._rust import (
11
+ ANSIX923PaddingContext,
12
+ ANSIX923UnpaddingContext,
13
13
  PKCS7PaddingContext,
14
14
  PKCS7UnpaddingContext,
15
- check_ansix923_padding,
16
15
  )
17
16
 
18
17
 
19
18
  class PaddingContext(metaclass=abc.ABCMeta):
20
19
  @abc.abstractmethod
21
- def update(self, data: bytes) -> bytes:
20
+ def update(self, data: utils.Buffer) -> bytes:
22
21
  """
23
22
  Pads the provided bytes and returns any available data as bytes.
24
23
  """
@@ -38,74 +37,6 @@ def _byte_padding_check(block_size: int) -> None:
38
37
  raise ValueError("block_size must be a multiple of 8.")
39
38
 
40
39
 
41
- def _byte_padding_update(
42
- buffer_: bytes | None, data: bytes, block_size: int
43
- ) -> tuple[bytes, bytes]:
44
- if buffer_ is None:
45
- raise AlreadyFinalized("Context was already finalized.")
46
-
47
- utils._check_byteslike("data", data)
48
-
49
- buffer_ += bytes(data)
50
-
51
- finished_blocks = len(buffer_) // (block_size // 8)
52
-
53
- result = buffer_[: finished_blocks * (block_size // 8)]
54
- buffer_ = buffer_[finished_blocks * (block_size // 8) :]
55
-
56
- return buffer_, result
57
-
58
-
59
- def _byte_padding_pad(
60
- buffer_: bytes | None,
61
- block_size: int,
62
- paddingfn: typing.Callable[[int], bytes],
63
- ) -> bytes:
64
- if buffer_ is None:
65
- raise AlreadyFinalized("Context was already finalized.")
66
-
67
- pad_size = block_size // 8 - len(buffer_)
68
- return buffer_ + paddingfn(pad_size)
69
-
70
-
71
- def _byte_unpadding_update(
72
- buffer_: bytes | None, data: bytes, block_size: int
73
- ) -> tuple[bytes, bytes]:
74
- if buffer_ is None:
75
- raise AlreadyFinalized("Context was already finalized.")
76
-
77
- utils._check_byteslike("data", data)
78
-
79
- buffer_ += bytes(data)
80
-
81
- finished_blocks = max(len(buffer_) // (block_size // 8) - 1, 0)
82
-
83
- result = buffer_[: finished_blocks * (block_size // 8)]
84
- buffer_ = buffer_[finished_blocks * (block_size // 8) :]
85
-
86
- return buffer_, result
87
-
88
-
89
- def _byte_unpadding_check(
90
- buffer_: bytes | None,
91
- block_size: int,
92
- checkfn: typing.Callable[[bytes], int],
93
- ) -> bytes:
94
- if buffer_ is None:
95
- raise AlreadyFinalized("Context was already finalized.")
96
-
97
- if len(buffer_) != block_size // 8:
98
- raise ValueError("Invalid padding bytes.")
99
-
100
- valid = checkfn(buffer_)
101
-
102
- if not valid:
103
- raise ValueError("Invalid padding bytes.")
104
-
105
- pad_size = buffer_[-1]
106
- return buffer_[:-pad_size]
107
-
108
-
109
40
  class PKCS7:
110
41
  def __init__(self, block_size: int):
111
42
  _byte_padding_check(block_size)
@@ -128,56 +59,11 @@ class ANSIX923:
128
59
  self.block_size = block_size
129
60
 
130
61
  def padder(self) -> PaddingContext:
131
- return _ANSIX923PaddingContext(self.block_size)
62
+ return ANSIX923PaddingContext(self.block_size)
132
63
 
133
64
  def unpadder(self) -> PaddingContext:
134
- return _ANSIX923UnpaddingContext(self.block_size)
135
-
136
-
137
- class _ANSIX923PaddingContext(PaddingContext):
138
- _buffer: bytes | None
139
-
140
- def __init__(self, block_size: int):
141
- self.block_size = block_size
142
- # TODO: more copies than necessary, we should use zero-buffer (#193)
143
- self._buffer = b""
144
-
145
- def update(self, data: bytes) -> bytes:
146
- self._buffer, result = _byte_padding_update(
147
- self._buffer, data, self.block_size
148
- )
149
- return result
65
+ return ANSIX923UnpaddingContext(self.block_size)
150
66
 
151
- def _padding(self, size: int) -> bytes:
152
- return bytes([0]) * (size - 1) + bytes([size])
153
67
 
154
- def finalize(self) -> bytes:
155
- result = _byte_padding_pad(
156
- self._buffer, self.block_size, self._padding
157
- )
158
- self._buffer = None
159
- return result
160
-
161
-
162
- class _ANSIX923UnpaddingContext(PaddingContext):
163
- _buffer: bytes | None
164
-
165
- def __init__(self, block_size: int):
166
- self.block_size = block_size
167
- # TODO: more copies than necessary, we should use zero-buffer (#193)
168
- self._buffer = b""
169
-
170
- def update(self, data: bytes) -> bytes:
171
- self._buffer, result = _byte_unpadding_update(
172
- self._buffer, data, self.block_size
173
- )
174
- return result
175
-
176
- def finalize(self) -> bytes:
177
- result = _byte_unpadding_check(
178
- self._buffer,
179
- self.block_size,
180
- check_ansix923_padding,
181
- )
182
- self._buffer = None
183
- return result
68
+ PaddingContext.register(ANSIX923PaddingContext)
69
+ PaddingContext.register(ANSIX923UnpaddingContext)
@@ -33,6 +33,7 @@ from cryptography.hazmat.primitives.serialization.ssh import (
33
33
  load_ssh_private_key,
34
34
  load_ssh_public_identity,
35
35
  load_ssh_public_key,
36
+ ssh_key_fingerprint,
36
37
  )
37
38
 
38
39
  __all__ = [
@@ -60,4 +61,5 @@ __all__ = [
60
61
  "load_ssh_private_key",
61
62
  "load_ssh_public_identity",
62
63
  "load_ssh_public_key",
64
+ "ssh_key_fingerprint",
63
65
  ]
@@ -5,6 +5,7 @@
5
5
  from __future__ import annotations
6
6
 
7
7
  import typing
8
+ from collections.abc import Iterable
8
9
 
9
10
  from cryptography import x509
10
11
  from cryptography.hazmat.bindings._rust import pkcs12 as rust_pkcs12
@@ -26,6 +27,7 @@ __all__ = [
26
27
  "PKCS12PrivateKeyTypes",
27
28
  "load_key_and_certificates",
28
29
  "load_pkcs12",
30
+ "serialize_java_truststore",
29
31
  "serialize_key_and_certificates",
30
32
  ]
31
33
 
@@ -118,11 +120,29 @@ _PKCS12CATypes = typing.Union[
118
120
  ]
119
121
 
120
122
 
123
+ def serialize_java_truststore(
124
+ certs: Iterable[PKCS12Certificate],
125
+ encryption_algorithm: serialization.KeySerializationEncryption,
126
+ ) -> bytes:
127
+ if not certs:
128
+ raise ValueError("You must supply at least one cert")
129
+
130
+ if not isinstance(
131
+ encryption_algorithm, serialization.KeySerializationEncryption
132
+ ):
133
+ raise TypeError(
134
+ "Key encryption algorithm must be a "
135
+ "KeySerializationEncryption instance"
136
+ )
137
+
138
+ return rust_pkcs12.serialize_java_truststore(certs, encryption_algorithm)
139
+
140
+
121
141
  def serialize_key_and_certificates(
122
142
  name: bytes | None,
123
143
  key: PKCS12PrivateKeyTypes | None,
124
144
  cert: x509.Certificate | None,
125
- cas: typing.Iterable[_PKCS12CATypes] | None,
145
+ cas: Iterable[_PKCS12CATypes] | None,
126
146
  encryption_algorithm: serialization.KeySerializationEncryption,
127
147
  ) -> bytes:
128
148
  if key is not None and not isinstance(
@@ -10,12 +10,16 @@ import email.message
10
10
  import email.policy
11
11
  import io
12
12
  import typing
13
+ from collections.abc import Iterable
13
14
 
14
15
  from cryptography import utils, x509
15
16
  from cryptography.exceptions import UnsupportedAlgorithm, _Reasons
16
17
  from cryptography.hazmat.bindings._rust import pkcs7 as rust_pkcs7
17
18
  from cryptography.hazmat.primitives import hashes, serialization
18
19
  from cryptography.hazmat.primitives.asymmetric import ec, padding, rsa
20
+ from cryptography.hazmat.primitives.ciphers import (
21
+ algorithms,
22
+ )
19
23
  from cryptography.utils import _check_byteslike
20
24
 
21
25
  load_pem_pkcs7_certificates = rust_pkcs7.load_pem_pkcs7_certificates
@@ -35,6 +39,10 @@ PKCS7PrivateKeyTypes = typing.Union[
35
39
  rsa.RSAPrivateKey, ec.EllipticCurvePrivateKey
36
40
  ]
37
41
 
42
+ ContentEncryptionAlgorithm = typing.Union[
43
+ typing.Type[algorithms.AES128], typing.Type[algorithms.AES256]
44
+ ]
45
+
38
46
 
39
47
  class PKCS7Options(utils.Enum):
40
48
  Text = "Add text/plain MIME type"
@@ -48,7 +56,7 @@ class PKCS7Options(utils.Enum):
48
56
  class PKCS7SignatureBuilder:
49
57
  def __init__(
50
58
  self,
51
- data: bytes | None = None,
59
+ data: utils.Buffer | None = None,
52
60
  signers: list[
53
61
  tuple[
54
62
  x509.Certificate,
@@ -63,7 +71,7 @@ class PKCS7SignatureBuilder:
63
71
  self._signers = signers
64
72
  self._additional_certs = additional_certs
65
73
 
66
- def set_data(self, data: bytes) -> PKCS7SignatureBuilder:
74
+ def set_data(self, data: utils.Buffer) -> PKCS7SignatureBuilder:
67
75
  _check_byteslike("data", data)
68
76
  if self._data is not None:
69
77
  raise ValueError("data may only be set once")
@@ -126,7 +134,7 @@ class PKCS7SignatureBuilder:
126
134
  def sign(
127
135
  self,
128
136
  encoding: serialization.Encoding,
129
- options: typing.Iterable[PKCS7Options],
137
+ options: Iterable[PKCS7Options],
130
138
  backend: typing.Any = None,
131
139
  ) -> bytes:
132
140
  if len(self._signers) == 0:
@@ -184,6 +192,8 @@ class PKCS7EnvelopeBuilder:
184
192
  *,
185
193
  _data: bytes | None = None,
186
194
  _recipients: list[x509.Certificate] | None = None,
195
+ _content_encryption_algorithm: ContentEncryptionAlgorithm
196
+ | None = None,
187
197
  ):
188
198
  from cryptography.hazmat.backends.openssl.backend import (
189
199
  backend as ossl,
@@ -197,13 +207,18 @@ class PKCS7EnvelopeBuilder:
197
207
  )
198
208
  self._data = _data
199
209
  self._recipients = _recipients if _recipients is not None else []
210
+ self._content_encryption_algorithm = _content_encryption_algorithm
200
211
 
201
212
  def set_data(self, data: bytes) -> PKCS7EnvelopeBuilder:
202
213
  _check_byteslike("data", data)
203
214
  if self._data is not None:
204
215
  raise ValueError("data may only be set once")
205
216
 
206
- return PKCS7EnvelopeBuilder(_data=data, _recipients=self._recipients)
217
+ return PKCS7EnvelopeBuilder(
218
+ _data=data,
219
+ _recipients=self._recipients,
220
+ _content_encryption_algorithm=self._content_encryption_algorithm,
221
+ )
207
222
 
208
223
  def add_recipient(
209
224
  self,
@@ -221,17 +236,42 @@ class PKCS7EnvelopeBuilder:
221
236
  *self._recipients,
222
237
  certificate,
223
238
  ],
239
+ _content_encryption_algorithm=self._content_encryption_algorithm,
240
+ )
241
+
242
+ def set_content_encryption_algorithm(
243
+ self, content_encryption_algorithm: ContentEncryptionAlgorithm
244
+ ) -> PKCS7EnvelopeBuilder:
245
+ if self._content_encryption_algorithm is not None:
246
+ raise ValueError("Content encryption algo may only be set once")
247
+ if content_encryption_algorithm not in {
248
+ algorithms.AES128,
249
+ algorithms.AES256,
250
+ }:
251
+ raise TypeError("Only AES128 and AES256 are supported")
252
+
253
+ return PKCS7EnvelopeBuilder(
254
+ _data=self._data,
255
+ _recipients=self._recipients,
256
+ _content_encryption_algorithm=content_encryption_algorithm,
224
257
  )
225
258
 
226
259
  def encrypt(
227
260
  self,
228
261
  encoding: serialization.Encoding,
229
- options: typing.Iterable[PKCS7Options],
262
+ options: Iterable[PKCS7Options],
230
263
  ) -> bytes:
231
264
  if len(self._recipients) == 0:
232
265
  raise ValueError("Must have at least one recipient")
233
266
  if self._data is None:
234
267
  raise ValueError("You must add data to encrypt")
268
+
269
+ # The default content encryption algorithm is AES-128, which the S/MIME
270
+ # v3.2 RFC specifies as MUST support (https://datatracker.ietf.org/doc/html/rfc5751#section-2.7)
271
+ content_encryption_algorithm = (
272
+ self._content_encryption_algorithm or algorithms.AES128
273
+ )
274
+
235
275
  options = list(options)
236
276
  if not all(isinstance(x, PKCS7Options) for x in options):
237
277
  raise ValueError("options must be from the PKCS7Options enum")
@@ -260,7 +300,9 @@ class PKCS7EnvelopeBuilder:
260
300
  "Cannot use Binary and Text options at the same time"
261
301
  )
262
302
 
263
- return rust_pkcs7.encrypt_and_serialize(self, encoding, options)
303
+ return rust_pkcs7.encrypt_and_serialize(
304
+ self, content_encryption_algorithm, encoding, options
305
+ )
264
306
 
265
307
 
266
308
  pkcs7_decrypt_der = rust_pkcs7.decrypt_der
@@ -169,20 +169,20 @@ def _ecdsa_key_type(public_key: ec.EllipticCurvePublicKey) -> bytes:
169
169
 
170
170
 
171
171
  def _ssh_pem_encode(
172
- data: bytes,
172
+ data: utils.Buffer,
173
173
  prefix: bytes = _SK_START + b"\n",
174
174
  suffix: bytes = _SK_END + b"\n",
175
175
  ) -> bytes:
176
176
  return b"".join([prefix, _base64_encode(data), suffix])
177
177
 
178
178
 
179
- def _check_block_size(data: bytes, block_len: int) -> None:
179
+ def _check_block_size(data: utils.Buffer, block_len: int) -> None:
180
180
  """Require data to be full blocks"""
181
181
  if not data or len(data) % block_len != 0:
182
182
  raise ValueError("Corrupt data: missing padding")
183
183
 
184
184
 
185
- def _check_empty(data: bytes) -> None:
185
+ def _check_empty(data: utils.Buffer) -> None:
186
186
  """All data should have been parsed."""
187
187
  if data:
188
188
  raise ValueError("Corrupt data: unparsed data")
@@ -196,7 +196,9 @@ def _init_cipher(
196
196
  ) -> Cipher[modes.CBC | modes.CTR | modes.GCM]:
197
197
  """Generate key + iv and return cipher."""
198
198
  if not password:
199
- raise ValueError("Key is password-protected.")
199
+ raise TypeError(
200
+ "Key is password-protected, but password was not provided."
201
+ )
200
202
 
201
203
  ciph = _SSH_CIPHERS[ciphername]
202
204
  seed = _bcrypt_kdf(
@@ -251,14 +253,14 @@ def _to_mpint(val: int) -> bytes:
251
253
  class _FragList:
252
254
  """Build recursive structure without data copy."""
253
255
 
254
- flist: list[bytes]
256
+ flist: list[utils.Buffer]
255
257
 
256
- def __init__(self, init: list[bytes] | None = None) -> None:
258
+ def __init__(self, init: list[utils.Buffer] | None = None) -> None:
257
259
  self.flist = []
258
260
  if init:
259
261
  self.flist.extend(init)
260
262
 
261
- def put_raw(self, val: bytes) -> None:
263
+ def put_raw(self, val: utils.Buffer) -> None:
262
264
  """Add plain bytes"""
263
265
  self.flist.append(val)
264
266
 
@@ -329,7 +331,7 @@ class _SSHFormatRSA:
329
331
  return public_key, data
330
332
 
331
333
  def load_private(
332
- self, data: memoryview, pubfields
334
+ self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool
333
335
  ) -> tuple[rsa.RSAPrivateKey, memoryview]:
334
336
  """Make RSA private key from data."""
335
337
  n, data = _get_mpint(data)
@@ -347,7 +349,9 @@ class _SSHFormatRSA:
347
349
  private_numbers = rsa.RSAPrivateNumbers(
348
350
  p, q, d, dmp1, dmq1, iqmp, public_numbers
349
351
  )
350
- private_key = private_numbers.private_key()
352
+ private_key = private_numbers.private_key(
353
+ unsafe_skip_rsa_key_validation=unsafe_skip_rsa_key_validation
354
+ )
351
355
  return private_key, data
352
356
 
353
357
  def encode_public(
@@ -403,7 +407,7 @@ class _SSHFormatDSA:
403
407
  return public_key, data
404
408
 
405
409
  def load_private(
406
- self, data: memoryview, pubfields
410
+ self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool
407
411
  ) -> tuple[dsa.DSAPrivateKey, memoryview]:
408
412
  """Make DSA private key from data."""
409
413
  (p, q, g, y), data = self.get_public(data)
@@ -483,7 +487,7 @@ class _SSHFormatECDSA:
483
487
  return public_key, data
484
488
 
485
489
  def load_private(
486
- self, data: memoryview, pubfields
490
+ self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool
487
491
  ) -> tuple[ec.EllipticCurvePrivateKey, memoryview]:
488
492
  """Make ECDSA private key from data."""
489
493
  (curve_name, point), data = self.get_public(data)
@@ -543,7 +547,7 @@ class _SSHFormatEd25519:
543
547
  return public_key, data
544
548
 
545
549
  def load_private(
546
- self, data: memoryview, pubfields
550
+ self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool
547
551
  ) -> tuple[ed25519.Ed25519PrivateKey, memoryview]:
548
552
  """Make Ed25519 private key from data."""
549
553
  (point,), data = self.get_public(data)
@@ -612,6 +616,13 @@ class _SSHFormatSKEd25519:
612
616
  _, data = load_application(data)
613
617
  return public_key, data
614
618
 
619
+ def get_public(self, data: memoryview) -> typing.NoReturn:
620
+ # Confusingly `get_public` is an entry point used by private key
621
+ # loading.
622
+ raise UnsupportedAlgorithm(
623
+ "sk-ssh-ed25519 private keys cannot be loaded"
624
+ )
625
+
615
626
 
616
627
  class _SSHFormatSKECDSA:
617
628
  """
@@ -631,6 +642,13 @@ class _SSHFormatSKECDSA:
631
642
  _, data = load_application(data)
632
643
  return public_key, data
633
644
 
645
+ def get_public(self, data: memoryview) -> typing.NoReturn:
646
+ # Confusingly `get_public` is an entry point used by private key
647
+ # loading.
648
+ raise UnsupportedAlgorithm(
649
+ "sk-ecdsa-sha2-nistp256 private keys cannot be loaded"
650
+ )
651
+
634
652
 
635
653
  _KEY_FORMATS = {
636
654
  _SSH_RSA: _SSHFormatRSA(),
@@ -644,7 +662,7 @@ _KEY_FORMATS = {
644
662
  }
645
663
 
646
664
 
647
- def _lookup_kformat(key_type: bytes):
665
+ def _lookup_kformat(key_type: utils.Buffer):
648
666
  """Return valid format or throw error"""
649
667
  if not isinstance(key_type, bytes):
650
668
  key_type = memoryview(key_type).tobytes()
@@ -662,9 +680,11 @@ SSHPrivateKeyTypes = typing.Union[
662
680
 
663
681
 
664
682
  def load_ssh_private_key(
665
- data: bytes,
683
+ data: utils.Buffer,
666
684
  password: bytes | None,
667
685
  backend: typing.Any = None,
686
+ *,
687
+ unsafe_skip_rsa_key_validation: bool = False,
668
688
  ) -> SSHPrivateKeyTypes:
669
689
  """Load private key from OpenSSH custom encoding."""
670
690
  utils._check_byteslike("data", data)
@@ -696,7 +716,7 @@ def load_ssh_private_key(
696
716
  pubfields, pubdata = kformat.get_public(pubdata)
697
717
  _check_empty(pubdata)
698
718
 
699
- if (ciphername, kdfname) != (_NONE, _NONE):
719
+ if ciphername != _NONE or kdfname != _NONE:
700
720
  ciphername_bytes = ciphername.tobytes()
701
721
  if ciphername_bytes not in _SSH_CIPHERS:
702
722
  raise UnsupportedAlgorithm(
@@ -731,6 +751,10 @@ def load_ssh_private_key(
731
751
  # should be no output from finalize
732
752
  _check_empty(dec.finalize())
733
753
  else:
754
+ if password:
755
+ raise TypeError(
756
+ "Password was given but private key is not encrypted."
757
+ )
734
758
  # load secret data
735
759
  edata, data = _get_sshstr(data)
736
760
  _check_empty(data)
@@ -745,7 +769,11 @@ def load_ssh_private_key(
745
769
  key_type, edata = _get_sshstr(edata)
746
770
  if key_type != pub_key_type:
747
771
  raise ValueError("Corrupt data: key type mismatch")
748
- private_key, edata = kformat.load_private(edata, pubfields)
772
+ private_key, edata = kformat.load_private(
773
+ edata,
774
+ pubfields,
775
+ unsafe_skip_rsa_key_validation=unsafe_skip_rsa_key_validation,
776
+ )
749
777
  # We don't use the comment
750
778
  _, edata = _get_sshstr(edata)
751
779
 
@@ -1001,7 +1029,7 @@ def _get_ec_hash_alg(curve: ec.EllipticCurve) -> hashes.HashAlgorithm:
1001
1029
 
1002
1030
 
1003
1031
  def _load_ssh_public_identity(
1004
- data: bytes,
1032
+ data: utils.Buffer,
1005
1033
  _legacy_dsa_allowed=False,
1006
1034
  ) -> SSHCertificate | SSHPublicKeyTypes:
1007
1035
  utils._check_byteslike("data", data)
@@ -1121,8 +1149,30 @@ def _parse_exts_opts(exts_opts: memoryview) -> dict[bytes, bytes]:
1121
1149
  return result
1122
1150
 
1123
1151
 
1152
+ def ssh_key_fingerprint(
1153
+ key: SSHPublicKeyTypes,
1154
+ hash_algorithm: hashes.MD5 | hashes.SHA256,
1155
+ ) -> bytes:
1156
+ if not isinstance(hash_algorithm, (hashes.MD5, hashes.SHA256)):
1157
+ raise TypeError("hash_algorithm must be either MD5 or SHA256")
1158
+
1159
+ key_type = _get_ssh_key_type(key)
1160
+ kformat = _lookup_kformat(key_type)
1161
+
1162
+ f_pub = _FragList()
1163
+ f_pub.put_sshstr(key_type)
1164
+ kformat.encode_public(key, f_pub)
1165
+
1166
+ ssh_binary_data = f_pub.tobytes()
1167
+
1168
+ # Hash the binary data
1169
+ hash_obj = hashes.Hash(hash_algorithm)
1170
+ hash_obj.update(ssh_binary_data)
1171
+ return hash_obj.finalize()
1172
+
1173
+
1124
1174
  def load_ssh_public_key(
1125
- data: bytes, backend: typing.Any = None
1175
+ data: utils.Buffer, backend: typing.Any = None
1126
1176
  ) -> SSHPublicKeyTypes:
1127
1177
  cert_or_key = _load_ssh_public_identity(data, _legacy_dsa_allowed=True)
1128
1178
  public_key: SSHPublicKeyTypes
@@ -11,6 +11,7 @@ from urllib.parse import quote, urlencode
11
11
  from cryptography.hazmat.primitives import constant_time, hmac
12
12
  from cryptography.hazmat.primitives.hashes import SHA1, SHA256, SHA512
13
13
  from cryptography.hazmat.primitives.twofactor import InvalidToken
14
+ from cryptography.utils import Buffer
14
15
 
15
16
  HOTPHashTypes = typing.Union[SHA1, SHA256, SHA512]
16
17
 
@@ -44,7 +45,7 @@ def _generate_uri(
44
45
  class HOTP:
45
46
  def __init__(
46
47
  self,
47
- key: bytes,
48
+ key: Buffer,
48
49
  length: int,
49
50
  algorithm: HOTPHashTypes,
50
51
  backend: typing.Any = None,
@@ -84,7 +85,7 @@ class HOTP:
84
85
  try:
85
86
  ctx.update(counter.to_bytes(length=8, byteorder="big"))
86
87
  except OverflowError:
87
- raise ValueError(f"Counter must be between 0 and {2 ** 64 - 1}.")
88
+ raise ValueError(f"Counter must be between 0 and {2**64 - 1}.")
88
89
 
89
90
  hmac_value = ctx.finalize()
90
91
 
@@ -13,12 +13,13 @@ from cryptography.hazmat.primitives.twofactor.hotp import (
13
13
  HOTPHashTypes,
14
14
  _generate_uri,
15
15
  )
16
+ from cryptography.utils import Buffer
16
17
 
17
18
 
18
19
  class TOTP:
19
20
  def __init__(
20
21
  self,
21
- key: bytes,
22
+ key: Buffer,
22
23
  length: int,
23
24
  algorithm: HOTPHashTypes,
24
25
  time_step: int,
@@ -9,6 +9,7 @@ import sys
9
9
  import types
10
10
  import typing
11
11
  import warnings
12
+ from collections.abc import Callable, Sequence
12
13
 
13
14
 
14
15
  # We use a UserWarning subclass, instead of DeprecationWarning, because CPython
@@ -26,6 +27,17 @@ DeprecatedIn40 = CryptographyDeprecationWarning
26
27
  DeprecatedIn41 = CryptographyDeprecationWarning
27
28
  DeprecatedIn42 = CryptographyDeprecationWarning
28
29
  DeprecatedIn43 = CryptographyDeprecationWarning
30
+ DeprecatedIn45 = CryptographyDeprecationWarning
31
+
32
+
33
+ # If you're wondering why we don't use `Buffer`, it's because `Buffer` would
34
+ # be more accurately named: Bufferable. It means something which has an
35
+ # `__buffer__`. Which means you can't actually treat the result as a buffer
36
+ # (and do things like take a `len()`).
37
+ if sys.version_info >= (3, 9):
38
+ Buffer = typing.Union[bytes, bytearray, memoryview]
39
+ else:
40
+ Buffer = typing.ByteString
29
41
 
30
42
 
31
43
  def _check_bytes(name: str, value: bytes) -> None:
@@ -33,7 +45,7 @@ def _check_bytes(name: str, value: bytes) -> None:
33
45
  raise TypeError(f"{name} must be bytes")
34
46
 
35
47
 
36
- def _check_byteslike(name: str, value: bytes) -> None:
48
+ def _check_byteslike(name: str, value: Buffer) -> None:
37
49
  try:
38
50
  memoryview(value)
39
51
  except TypeError:
@@ -81,7 +93,7 @@ class _ModuleWithDeprecations(types.ModuleType):
81
93
 
82
94
  delattr(self._module, attr)
83
95
 
84
- def __dir__(self) -> typing.Sequence[str]:
96
+ def __dir__(self) -> Sequence[str]:
85
97
  return ["_module", *dir(self._module)]
86
98
 
87
99
 
@@ -102,7 +114,7 @@ def deprecated(
102
114
  return dv
103
115
 
104
116
 
105
- def cached_property(func: typing.Callable) -> property:
117
+ def cached_property(func: Callable) -> property:
106
118
  cached_name = f"_cached_{func}"
107
119
  sentinel = object()
108
120
 
@@ -66,6 +66,7 @@ from cryptography.x509.extensions import (
66
66
  PolicyInformation,
67
67
  PrecertificateSignedCertificateTimestamps,
68
68
  PrecertPoison,
69
+ PrivateKeyUsagePeriod,
69
70
  ProfessionInfo,
70
71
  ReasonFlags,
71
72
  SignedCertificateTimestamps,
@@ -115,6 +116,7 @@ OID_FRESHEST_CRL = ExtensionOID.FRESHEST_CRL
115
116
  OID_INHIBIT_ANY_POLICY = ExtensionOID.INHIBIT_ANY_POLICY
116
117
  OID_ISSUER_ALTERNATIVE_NAME = ExtensionOID.ISSUER_ALTERNATIVE_NAME
117
118
  OID_KEY_USAGE = ExtensionOID.KEY_USAGE
119
+ OID_PRIVATE_KEY_USAGE_PERIOD = ExtensionOID.PRIVATE_KEY_USAGE_PERIOD
118
120
  OID_NAME_CONSTRAINTS = ExtensionOID.NAME_CONSTRAINTS
119
121
  OID_OCSP_NO_CHECK = ExtensionOID.OCSP_NO_CHECK
120
122
  OID_POLICY_CONSTRAINTS = ExtensionOID.POLICY_CONSTRAINTS
@@ -233,6 +235,7 @@ __all__ = [
233
235
  "PolicyInformation",
234
236
  "PrecertPoison",
235
237
  "PrecertificateSignedCertificateTimestamps",
238
+ "PrivateKeyUsagePeriod",
236
239
  "ProfessionInfo",
237
240
  "PublicKeyAlgorithmOID",
238
241
  "RFC822Name",