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
@@ -1,321 +1,321 @@
1
- # Copyright 2011 Sybren A. Stüvel <sybren@stuvel.eu>
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # https://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- """Commandline scripts.
16
-
17
- These scripts are called by the executables defined in setup.py.
18
- """
19
-
20
- import abc
21
- import sys
22
- import typing
23
- import optparse
24
-
25
- import rsa
26
- import rsa.key
27
- import rsa.pkcs1
28
-
29
- HASH_METHODS = sorted(rsa.pkcs1.HASH_METHODS.keys())
30
- Indexable = typing.Union[typing.Tuple, typing.List[str]]
31
-
32
-
33
- def keygen() -> None:
34
- """Key generator."""
35
-
36
- # Parse the CLI options
37
- parser = optparse.OptionParser(
38
- usage="usage: %prog [options] keysize",
39
- description='Generates a new RSA key pair of "keysize" bits.',
40
- )
41
-
42
- parser.add_option(
43
- "--pubout",
44
- type="string",
45
- help="Output filename for the public key. The public key is "
46
- "not saved if this option is not present. You can use "
47
- "pyrsa-priv2pub to create the public key file later.",
48
- )
49
-
50
- parser.add_option(
51
- "-o",
52
- "--out",
53
- type="string",
54
- help="Output filename for the private key. The key is "
55
- "written to stdout if this option is not present.",
56
- )
57
-
58
- parser.add_option(
59
- "--form",
60
- help="key format of the private and public keys - default PEM",
61
- choices=("PEM", "DER"),
62
- default="PEM",
63
- )
64
-
65
- (cli, cli_args) = parser.parse_args(sys.argv[1:])
66
-
67
- if len(cli_args) != 1:
68
- parser.print_help()
69
- raise SystemExit(1)
70
-
71
- try:
72
- keysize = int(cli_args[0])
73
- except ValueError as ex:
74
- parser.print_help()
75
- print("Not a valid number: %s" % cli_args[0], file=sys.stderr)
76
- raise SystemExit(1) from ex
77
-
78
- print("Generating %i-bit key" % keysize, file=sys.stderr)
79
- (pub_key, priv_key) = rsa.newkeys(keysize)
80
-
81
- # Save public key
82
- if cli.pubout:
83
- print("Writing public key to %s" % cli.pubout, file=sys.stderr)
84
- data = pub_key.save_pkcs1(format=cli.form)
85
- with open(cli.pubout, "wb") as outfile:
86
- outfile.write(data)
87
-
88
- # Save private key
89
- data = priv_key.save_pkcs1(format=cli.form)
90
-
91
- if cli.out:
92
- print("Writing private key to %s" % cli.out, file=sys.stderr)
93
- with open(cli.out, "wb") as outfile:
94
- outfile.write(data)
95
- else:
96
- print("Writing private key to stdout", file=sys.stderr)
97
- sys.stdout.buffer.write(data)
98
-
99
-
100
- class CryptoOperation(metaclass=abc.ABCMeta):
101
- """CLI callable that operates with input, output, and a key."""
102
-
103
- keyname = "public" # or 'private'
104
- usage = "usage: %%prog [options] %(keyname)s_key"
105
- description = ""
106
- operation = "decrypt"
107
- operation_past = "decrypted"
108
- operation_progressive = "decrypting"
109
- input_help = "Name of the file to %(operation)s. Reads from stdin if " "not specified."
110
- output_help = (
111
- "Name of the file to write the %(operation_past)s file "
112
- "to. Written to stdout if this option is not present."
113
- )
114
- expected_cli_args = 1
115
- has_output = True
116
-
117
- key_class = rsa.PublicKey # type: typing.Type[rsa.key.AbstractKey]
118
-
119
- def __init__(self) -> None:
120
- self.usage = self.usage % self.__class__.__dict__
121
- self.input_help = self.input_help % self.__class__.__dict__
122
- self.output_help = self.output_help % self.__class__.__dict__
123
-
124
- @abc.abstractmethod
125
- def perform_operation(
126
- self, indata: bytes, key: rsa.key.AbstractKey, cli_args: Indexable
127
- ) -> typing.Any:
128
- """Performs the program's operation.
129
-
130
- Implement in a subclass.
131
-
132
- :returns: the data to write to the output.
133
- """
134
-
135
- def __call__(self) -> None:
136
- """Runs the program."""
137
-
138
- (cli, cli_args) = self.parse_cli()
139
-
140
- key = self.read_key(cli_args[0], cli.keyform)
141
-
142
- indata = self.read_infile(cli.input)
143
-
144
- print(self.operation_progressive.title(), file=sys.stderr)
145
- outdata = self.perform_operation(indata, key, cli_args)
146
-
147
- if self.has_output:
148
- self.write_outfile(outdata, cli.output)
149
-
150
- def parse_cli(self) -> typing.Tuple[optparse.Values, typing.List[str]]:
151
- """Parse the CLI options
152
-
153
- :returns: (cli_opts, cli_args)
154
- """
155
-
156
- parser = optparse.OptionParser(usage=self.usage, description=self.description)
157
-
158
- parser.add_option("-i", "--input", type="string", help=self.input_help)
159
-
160
- if self.has_output:
161
- parser.add_option("-o", "--output", type="string", help=self.output_help)
162
-
163
- parser.add_option(
164
- "--keyform",
165
- help="Key format of the %s key - default PEM" % self.keyname,
166
- choices=("PEM", "DER"),
167
- default="PEM",
168
- )
169
-
170
- (cli, cli_args) = parser.parse_args(sys.argv[1:])
171
-
172
- if len(cli_args) != self.expected_cli_args:
173
- parser.print_help()
174
- raise SystemExit(1)
175
-
176
- return cli, cli_args
177
-
178
- def read_key(self, filename: str, keyform: str) -> rsa.key.AbstractKey:
179
- """Reads a public or private key."""
180
-
181
- print("Reading %s key from %s" % (self.keyname, filename), file=sys.stderr)
182
- with open(filename, "rb") as keyfile:
183
- keydata = keyfile.read()
184
-
185
- return self.key_class.load_pkcs1(keydata, keyform)
186
-
187
- def read_infile(self, inname: str) -> bytes:
188
- """Read the input file"""
189
-
190
- if inname:
191
- print("Reading input from %s" % inname, file=sys.stderr)
192
- with open(inname, "rb") as infile:
193
- return infile.read()
194
-
195
- print("Reading input from stdin", file=sys.stderr)
196
- return sys.stdin.buffer.read()
197
-
198
- def write_outfile(self, outdata: bytes, outname: str) -> None:
199
- """Write the output file"""
200
-
201
- if outname:
202
- print("Writing output to %s" % outname, file=sys.stderr)
203
- with open(outname, "wb") as outfile:
204
- outfile.write(outdata)
205
- else:
206
- print("Writing output to stdout", file=sys.stderr)
207
- sys.stdout.buffer.write(outdata)
208
-
209
-
210
- class EncryptOperation(CryptoOperation):
211
- """Encrypts a file."""
212
-
213
- keyname = "public"
214
- description = (
215
- "Encrypts a file. The file must be shorter than the key " "length in order to be encrypted."
216
- )
217
- operation = "encrypt"
218
- operation_past = "encrypted"
219
- operation_progressive = "encrypting"
220
-
221
- def perform_operation(
222
- self, indata: bytes, pub_key: rsa.key.AbstractKey, cli_args: Indexable = ()
223
- ) -> bytes:
224
- """Encrypts files."""
225
- assert isinstance(pub_key, rsa.key.PublicKey)
226
- return rsa.encrypt(indata, pub_key)
227
-
228
-
229
- class DecryptOperation(CryptoOperation):
230
- """Decrypts a file."""
231
-
232
- keyname = "private"
233
- description = (
234
- "Decrypts a file. The original file must be shorter than "
235
- "the key length in order to have been encrypted."
236
- )
237
- operation = "decrypt"
238
- operation_past = "decrypted"
239
- operation_progressive = "decrypting"
240
- key_class = rsa.PrivateKey
241
-
242
- def perform_operation(
243
- self, indata: bytes, priv_key: rsa.key.AbstractKey, cli_args: Indexable = ()
244
- ) -> bytes:
245
- """Decrypts files."""
246
- assert isinstance(priv_key, rsa.key.PrivateKey)
247
- return rsa.decrypt(indata, priv_key)
248
-
249
-
250
- class SignOperation(CryptoOperation):
251
- """Signs a file."""
252
-
253
- keyname = "private"
254
- usage = "usage: %%prog [options] private_key hash_method"
255
- description = (
256
- "Signs a file, outputs the signature. Choose the hash "
257
- "method from %s" % ", ".join(HASH_METHODS)
258
- )
259
- operation = "sign"
260
- operation_past = "signature"
261
- operation_progressive = "Signing"
262
- key_class = rsa.PrivateKey
263
- expected_cli_args = 2
264
-
265
- output_help = (
266
- "Name of the file to write the signature to. Written "
267
- "to stdout if this option is not present."
268
- )
269
-
270
- def perform_operation(
271
- self, indata: bytes, priv_key: rsa.key.AbstractKey, cli_args: Indexable
272
- ) -> bytes:
273
- """Signs files."""
274
- assert isinstance(priv_key, rsa.key.PrivateKey)
275
-
276
- hash_method = cli_args[1]
277
- if hash_method not in HASH_METHODS:
278
- raise SystemExit("Invalid hash method, choose one of %s" % ", ".join(HASH_METHODS))
279
-
280
- return rsa.sign(indata, priv_key, hash_method)
281
-
282
-
283
- class VerifyOperation(CryptoOperation):
284
- """Verify a signature."""
285
-
286
- keyname = "public"
287
- usage = "usage: %%prog [options] public_key signature_file"
288
- description = (
289
- "Verifies a signature, exits with status 0 upon success, "
290
- "prints an error message and exits with status 1 upon error."
291
- )
292
- operation = "verify"
293
- operation_past = "verified"
294
- operation_progressive = "Verifying"
295
- key_class = rsa.PublicKey
296
- expected_cli_args = 2
297
- has_output = False
298
-
299
- def perform_operation(
300
- self, indata: bytes, pub_key: rsa.key.AbstractKey, cli_args: Indexable
301
- ) -> None:
302
- """Verifies files."""
303
- assert isinstance(pub_key, rsa.key.PublicKey)
304
-
305
- signature_file = cli_args[1]
306
-
307
- with open(signature_file, "rb") as sigfile:
308
- signature = sigfile.read()
309
-
310
- try:
311
- rsa.verify(indata, signature, pub_key)
312
- except rsa.VerificationError as ex:
313
- raise SystemExit("Verification failed.") from ex
314
-
315
- print("Verification OK", file=sys.stderr)
316
-
317
-
318
- encrypt = EncryptOperation()
319
- decrypt = DecryptOperation()
320
- sign = SignOperation()
321
- verify = VerifyOperation()
1
+ # Copyright 2011 Sybren A. Stüvel <sybren@stuvel.eu>
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ """Commandline scripts.
16
+
17
+ These scripts are called by the executables defined in setup.py.
18
+ """
19
+
20
+ import abc
21
+ import sys
22
+ import typing
23
+ import optparse
24
+
25
+ import rsa
26
+ import rsa.key
27
+ import rsa.pkcs1
28
+
29
+ HASH_METHODS = sorted(rsa.pkcs1.HASH_METHODS.keys())
30
+ Indexable = typing.Union[typing.Tuple, typing.List[str]]
31
+
32
+
33
+ def keygen() -> None:
34
+ """Key generator."""
35
+
36
+ # Parse the CLI options
37
+ parser = optparse.OptionParser(
38
+ usage="usage: %prog [options] keysize",
39
+ description='Generates a new RSA key pair of "keysize" bits.',
40
+ )
41
+
42
+ parser.add_option(
43
+ "--pubout",
44
+ type="string",
45
+ help="Output filename for the public key. The public key is "
46
+ "not saved if this option is not present. You can use "
47
+ "pyrsa-priv2pub to create the public key file later.",
48
+ )
49
+
50
+ parser.add_option(
51
+ "-o",
52
+ "--out",
53
+ type="string",
54
+ help="Output filename for the private key. The key is "
55
+ "written to stdout if this option is not present.",
56
+ )
57
+
58
+ parser.add_option(
59
+ "--form",
60
+ help="key format of the private and public keys - default PEM",
61
+ choices=("PEM", "DER"),
62
+ default="PEM",
63
+ )
64
+
65
+ (cli, cli_args) = parser.parse_args(sys.argv[1:])
66
+
67
+ if len(cli_args) != 1:
68
+ parser.print_help()
69
+ raise SystemExit(1)
70
+
71
+ try:
72
+ keysize = int(cli_args[0])
73
+ except ValueError as ex:
74
+ parser.print_help()
75
+ print("Not a valid number: %s" % cli_args[0], file=sys.stderr)
76
+ raise SystemExit(1) from ex
77
+
78
+ print("Generating %i-bit key" % keysize, file=sys.stderr)
79
+ (pub_key, priv_key) = rsa.newkeys(keysize)
80
+
81
+ # Save public key
82
+ if cli.pubout:
83
+ print("Writing public key to %s" % cli.pubout, file=sys.stderr)
84
+ data = pub_key.save_pkcs1(format=cli.form)
85
+ with open(cli.pubout, "wb") as outfile:
86
+ outfile.write(data)
87
+
88
+ # Save private key
89
+ data = priv_key.save_pkcs1(format=cli.form)
90
+
91
+ if cli.out:
92
+ print("Writing private key to %s" % cli.out, file=sys.stderr)
93
+ with open(cli.out, "wb") as outfile:
94
+ outfile.write(data)
95
+ else:
96
+ print("Writing private key to stdout", file=sys.stderr)
97
+ sys.stdout.buffer.write(data)
98
+
99
+
100
+ class CryptoOperation(metaclass=abc.ABCMeta):
101
+ """CLI callable that operates with input, output, and a key."""
102
+
103
+ keyname = "public" # or 'private'
104
+ usage = "usage: %%prog [options] %(keyname)s_key"
105
+ description = ""
106
+ operation = "decrypt"
107
+ operation_past = "decrypted"
108
+ operation_progressive = "decrypting"
109
+ input_help = "Name of the file to %(operation)s. Reads from stdin if " "not specified."
110
+ output_help = (
111
+ "Name of the file to write the %(operation_past)s file "
112
+ "to. Written to stdout if this option is not present."
113
+ )
114
+ expected_cli_args = 1
115
+ has_output = True
116
+
117
+ key_class = rsa.PublicKey # type: typing.Type[rsa.key.AbstractKey]
118
+
119
+ def __init__(self) -> None:
120
+ self.usage = self.usage % self.__class__.__dict__
121
+ self.input_help = self.input_help % self.__class__.__dict__
122
+ self.output_help = self.output_help % self.__class__.__dict__
123
+
124
+ @abc.abstractmethod
125
+ def perform_operation(
126
+ self, indata: bytes, key: rsa.key.AbstractKey, cli_args: Indexable
127
+ ) -> typing.Any:
128
+ """Performs the program's operation.
129
+
130
+ Implement in a subclass.
131
+
132
+ :returns: the data to write to the output.
133
+ """
134
+
135
+ def __call__(self) -> None:
136
+ """Runs the program."""
137
+
138
+ (cli, cli_args) = self.parse_cli()
139
+
140
+ key = self.read_key(cli_args[0], cli.keyform)
141
+
142
+ indata = self.read_infile(cli.input)
143
+
144
+ print(self.operation_progressive.title(), file=sys.stderr)
145
+ outdata = self.perform_operation(indata, key, cli_args)
146
+
147
+ if self.has_output:
148
+ self.write_outfile(outdata, cli.output)
149
+
150
+ def parse_cli(self) -> typing.Tuple[optparse.Values, typing.List[str]]:
151
+ """Parse the CLI options
152
+
153
+ :returns: (cli_opts, cli_args)
154
+ """
155
+
156
+ parser = optparse.OptionParser(usage=self.usage, description=self.description)
157
+
158
+ parser.add_option("-i", "--input", type="string", help=self.input_help)
159
+
160
+ if self.has_output:
161
+ parser.add_option("-o", "--output", type="string", help=self.output_help)
162
+
163
+ parser.add_option(
164
+ "--keyform",
165
+ help="Key format of the %s key - default PEM" % self.keyname,
166
+ choices=("PEM", "DER"),
167
+ default="PEM",
168
+ )
169
+
170
+ (cli, cli_args) = parser.parse_args(sys.argv[1:])
171
+
172
+ if len(cli_args) != self.expected_cli_args:
173
+ parser.print_help()
174
+ raise SystemExit(1)
175
+
176
+ return cli, cli_args
177
+
178
+ def read_key(self, filename: str, keyform: str) -> rsa.key.AbstractKey:
179
+ """Reads a public or private key."""
180
+
181
+ print("Reading %s key from %s" % (self.keyname, filename), file=sys.stderr)
182
+ with open(filename, "rb") as keyfile:
183
+ keydata = keyfile.read()
184
+
185
+ return self.key_class.load_pkcs1(keydata, keyform)
186
+
187
+ def read_infile(self, inname: str) -> bytes:
188
+ """Read the input file"""
189
+
190
+ if inname:
191
+ print("Reading input from %s" % inname, file=sys.stderr)
192
+ with open(inname, "rb") as infile:
193
+ return infile.read()
194
+
195
+ print("Reading input from stdin", file=sys.stderr)
196
+ return sys.stdin.buffer.read()
197
+
198
+ def write_outfile(self, outdata: bytes, outname: str) -> None:
199
+ """Write the output file"""
200
+
201
+ if outname:
202
+ print("Writing output to %s" % outname, file=sys.stderr)
203
+ with open(outname, "wb") as outfile:
204
+ outfile.write(outdata)
205
+ else:
206
+ print("Writing output to stdout", file=sys.stderr)
207
+ sys.stdout.buffer.write(outdata)
208
+
209
+
210
+ class EncryptOperation(CryptoOperation):
211
+ """Encrypts a file."""
212
+
213
+ keyname = "public"
214
+ description = (
215
+ "Encrypts a file. The file must be shorter than the key " "length in order to be encrypted."
216
+ )
217
+ operation = "encrypt"
218
+ operation_past = "encrypted"
219
+ operation_progressive = "encrypting"
220
+
221
+ def perform_operation(
222
+ self, indata: bytes, pub_key: rsa.key.AbstractKey, cli_args: Indexable = ()
223
+ ) -> bytes:
224
+ """Encrypts files."""
225
+ assert isinstance(pub_key, rsa.key.PublicKey)
226
+ return rsa.encrypt(indata, pub_key)
227
+
228
+
229
+ class DecryptOperation(CryptoOperation):
230
+ """Decrypts a file."""
231
+
232
+ keyname = "private"
233
+ description = (
234
+ "Decrypts a file. The original file must be shorter than "
235
+ "the key length in order to have been encrypted."
236
+ )
237
+ operation = "decrypt"
238
+ operation_past = "decrypted"
239
+ operation_progressive = "decrypting"
240
+ key_class = rsa.PrivateKey
241
+
242
+ def perform_operation(
243
+ self, indata: bytes, priv_key: rsa.key.AbstractKey, cli_args: Indexable = ()
244
+ ) -> bytes:
245
+ """Decrypts files."""
246
+ assert isinstance(priv_key, rsa.key.PrivateKey)
247
+ return rsa.decrypt(indata, priv_key)
248
+
249
+
250
+ class SignOperation(CryptoOperation):
251
+ """Signs a file."""
252
+
253
+ keyname = "private"
254
+ usage = "usage: %%prog [options] private_key hash_method"
255
+ description = (
256
+ "Signs a file, outputs the signature. Choose the hash "
257
+ "method from %s" % ", ".join(HASH_METHODS)
258
+ )
259
+ operation = "sign"
260
+ operation_past = "signature"
261
+ operation_progressive = "Signing"
262
+ key_class = rsa.PrivateKey
263
+ expected_cli_args = 2
264
+
265
+ output_help = (
266
+ "Name of the file to write the signature to. Written "
267
+ "to stdout if this option is not present."
268
+ )
269
+
270
+ def perform_operation(
271
+ self, indata: bytes, priv_key: rsa.key.AbstractKey, cli_args: Indexable
272
+ ) -> bytes:
273
+ """Signs files."""
274
+ assert isinstance(priv_key, rsa.key.PrivateKey)
275
+
276
+ hash_method = cli_args[1]
277
+ if hash_method not in HASH_METHODS:
278
+ raise SystemExit("Invalid hash method, choose one of %s" % ", ".join(HASH_METHODS))
279
+
280
+ return rsa.sign(indata, priv_key, hash_method)
281
+
282
+
283
+ class VerifyOperation(CryptoOperation):
284
+ """Verify a signature."""
285
+
286
+ keyname = "public"
287
+ usage = "usage: %%prog [options] public_key signature_file"
288
+ description = (
289
+ "Verifies a signature, exits with status 0 upon success, "
290
+ "prints an error message and exits with status 1 upon error."
291
+ )
292
+ operation = "verify"
293
+ operation_past = "verified"
294
+ operation_progressive = "Verifying"
295
+ key_class = rsa.PublicKey
296
+ expected_cli_args = 2
297
+ has_output = False
298
+
299
+ def perform_operation(
300
+ self, indata: bytes, pub_key: rsa.key.AbstractKey, cli_args: Indexable
301
+ ) -> None:
302
+ """Verifies files."""
303
+ assert isinstance(pub_key, rsa.key.PublicKey)
304
+
305
+ signature_file = cli_args[1]
306
+
307
+ with open(signature_file, "rb") as sigfile:
308
+ signature = sigfile.read()
309
+
310
+ try:
311
+ rsa.verify(indata, signature, pub_key)
312
+ except rsa.VerificationError as ex:
313
+ raise SystemExit("Verification failed.") from ex
314
+
315
+ print("Verification OK", file=sys.stderr)
316
+
317
+
318
+ encrypt = EncryptOperation()
319
+ decrypt = DecryptOperation()
320
+ sign = SignOperation()
321
+ verify = VerifyOperation()