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
@@ -126,9 +126,7 @@ async def prepare_base_venv(required_package_list: list[PackageInfo], github_tok
126
126
  async def prepare_venv(venv_num: int, package_info: PackageInfo, package_number: int, github_token: str, ado_token: str):
127
127
  py2docfx_logger = get_logger(__name__)
128
128
  await create_environment(get_venv_path(venv_num))
129
- if package_info.install_type != package_info.InstallType.SOURCE_CODE or package_info.skip_install != True:
130
- # Skip build if the package is source code and skip_install is set to True
131
- await install_venv_requirements(venv_num)
129
+ await install_venv_requirements(venv_num)
132
130
  await get_source(get_venv_exe(venv_num), package_info, package_number, vststoken=ado_token, githubtoken=github_token)
133
131
  package_name, options = package_info.get_install_command()
134
132
  await pip_utils.install_in_exe_async(get_venv_exe(venv_num), package_name, options)
@@ -42,8 +42,7 @@ def update_package_info(executable: str, pkg: PackageInfo, source_folder: str):
42
42
  setattr(pkg, attr, attr_val)
43
43
  else:
44
44
  folder = next(
45
- (f for f in all_files if path.isdir(f) and f.endswith(".dist-info")),
46
- None # Default to None if no match is found
45
+ f for f in all_files if path.isdir(f) and f.endswith(".dist-info")
47
46
  )
48
47
  if folder:
49
48
  if path.exists(path.join(folder, "METADATA")):
@@ -66,10 +65,6 @@ def update_package_info(executable: str, pkg: PackageInfo, source_folder: str):
66
65
  ".dist-info", "").split("-")
67
66
  pkg.name = "-".join(package_info[0:-1]).strip()
68
67
  pkg.version = package_info[-1].strip()
69
- else:
70
- # Handle the case where no .dist-info folder is found
71
- pkg.name = "unknown"
72
- pkg.version = "unknown"
73
68
 
74
69
  # update package path
75
70
  os.chdir(cur_path) # TODO: replace it
@@ -58,7 +58,7 @@ class PackageInfo:
58
58
  package_info.url = package_info_dict.get("url", None)
59
59
  package_info.branch = package_info_dict.get("branch", None)
60
60
  package_info.folder = package_info_dict.get("folder", None)
61
- package_info.skip_install = package_info_dict.get("skip_install", False)
61
+
62
62
  if not package_info.url:
63
63
  py2docfx_logger = get_logger(__name__)
64
64
  if not package_info.folder:
@@ -29,7 +29,7 @@ def missing_reference(app, env, node, contnode):
29
29
  else:
30
30
  fields = (module, node['py:class'], reftarget)
31
31
 
32
- if not is_built_in_type(reftarget):
32
+ if not is_built_in_type(reftarget , node):
33
33
  reftarget = '.'.join(
34
34
  field for field in fields if field is not None)
35
35
 
@@ -111,14 +111,66 @@ def resolve_xref_type(reference):
111
111
 
112
112
  return xref
113
113
 
114
- def is_typing(s: str) -> bool:
115
- if s.startswith('typing.'):
116
- s = s.split('.', 1)[1]
117
- return s in typing.__all__
114
+ def check_shorten_type_name(type_name: str) -> bool:
115
+ type_name_elements = type_name.split('.')
116
+ if len(type_name_elements) == 1:
117
+ return True
118
+ else:
119
+ return False
120
+
121
+ def check_is_complex_type(type_name: str) -> bool:
122
+ # check if the type_name contains any of the complex type characters
123
+ complex_type_chars = ['[', ']', '(', ')', ',']
124
+ for char in complex_type_chars:
125
+ if char in type_name:
126
+ return True
127
+ return False
128
+
129
+ def is_typing(node_text: str, node) -> bool:
130
+ is_in_typing_module_list = False
131
+ is_shorten_type_name = False
132
+ has_typing_in_node_attributes = False
133
+
134
+ # check if the node_text is in typing module list
135
+ check_str = node_text.split('.', 1)[-1]
136
+ is_in_typing_module_list = check_str in typing.__all__
137
+
138
+ # check if the node_text is a simple type name or has form of 'typing.TypeName'
139
+ typing_prefix = 'typing.'
140
+ check_typing_str = typing_prefix + node_text.strip()
141
+
142
+ def check_shorten_name_and_typing_str(node, attr_str):
143
+ is_shorten_type_name = check_shorten_type_name(node[attr_str])
144
+ temp_str = node[attr_str]
145
+ has_typing_in_node_attributes = check_typing_str == temp_str.strip()
146
+ return is_shorten_type_name, has_typing_in_node_attributes
147
+
148
+ if 'refid' in node.attributes:
149
+ is_shorten_type_name, has_typing_in_node_attributes = check_shorten_name_and_typing_str(node, 'refid')
150
+ elif 'refuri' in node.attributes:
151
+ is_shorten_type_name, has_typing_in_node_attributes = check_shorten_name_and_typing_str(node, 'refuri')
152
+ elif 'reftarget' in node.attributes:
153
+ is_shorten_type_name, has_typing_in_node_attributes = check_shorten_name_and_typing_str(node, 'reftarget')
154
+ else:
155
+ has_typing_in_node_attributes = False
156
+
157
+ # 1. The type has to be in typing module list to be a typing type.
158
+ # 2. The node['refid'] or node['refuri'] is an abbreviated type name or has typing prefix in its attributes, it is a typing type
159
+ if is_in_typing_module_list and (is_shorten_type_name or has_typing_in_node_attributes):
160
+ return True
161
+ else:
162
+ return False
118
163
 
119
164
  def is_system_type(name: str) -> bool:
120
165
  return isclass(getattr(builtins, name, None))
121
166
 
167
+ def is_complex_type(node_text: str) -> bool:
168
+ complex_type_chars = ['[', ']', '(', ')']
169
+ for char in complex_type_chars:
170
+ if char in node_text:
171
+ return True
172
+ return False
173
+
122
174
  def process_complex_type(type_string: str) -> str:
123
175
  # replace "or" with ","
124
176
  type_string = type_string.replace(" or ", ",")
@@ -167,12 +219,12 @@ def extract_types(ret_data, skip_index_set = [], description_index = None):
167
219
  if node.tagname == 'reference':
168
220
  if is_system_type(node_text):
169
221
  type_str += f'<xref:{node_text}>'
170
- elif is_typing(node_text):
222
+ elif is_typing(node_text, node):
171
223
  if "typing." not in node_text:
172
224
  type_str += f'<xref:typing.{node_text}>'
173
225
  else:
174
226
  type_str += f'<xref:{node_text}>'
175
- elif ('[' in node_text) or (']' in node_text) or ('(' in node_text) or (')' in node_text):
227
+ elif is_complex_type(node_text):
176
228
  type_str += process_complex_type(node_text)
177
229
  else:
178
230
  if 'refid' in node.attributes:
@@ -0,0 +1,14 @@
1
+ class TestClass:
2
+ def test_method_with_typing(param):
3
+ """
4
+ :param param: Test Param
5
+ :type param: list[typing.Container]
6
+ """
7
+ pass
8
+
9
+ def test_method_without_typing(param):
10
+ """
11
+ :param param: Test Param
12
+ :type param: list[~foo.boo.dummy.Container]
13
+ """
14
+ pass
@@ -0,0 +1,18 @@
1
+ import os
2
+ import sys
3
+
4
+ sys.path.insert(0, os.path.abspath('.'))
5
+
6
+ extensions = ['sphinx.ext.autodoc', 'yaml_builder']
7
+
8
+ class includeTest:
9
+ pass
10
+
11
+ # The suffix of source filenames.
12
+ source_suffix = '.rst'
13
+
14
+ autodoc_mock_imports = [
15
+ 'dummy'
16
+ ]
17
+
18
+ nitpicky = True
@@ -0,0 +1,39 @@
1
+ import pytest
2
+
3
+ from translator import translator
4
+
5
+ from .utils.test_utils import prepare_app_envs,load_rst_transform_to_doctree
6
+
7
+ @pytest.mark.sphinx('yaml', testroot='translator-typing')
8
+ def test_with_typing(app):
9
+ # Test data definition
10
+ objectToGenXml = 'code_with_typing.TestClass.test_method_with_typing'
11
+ objectToGenXmlType = 'function'
12
+
13
+ # Arrange
14
+ prepare_app_envs(app, objectToGenXml)
15
+ doctree = load_rst_transform_to_doctree(app, objectToGenXmlType, objectToGenXml)
16
+
17
+ # Act
18
+ translator(app, '', doctree)
19
+
20
+ # Assert
21
+ parameterDetail = app.env.docfx_info_field_data[objectToGenXml]['parameters'][0]
22
+ assert (parameterDetail["type"] == ['<xref:list>[<xref:typing.Container>]'])
23
+
24
+ @pytest.mark.sphinx('yaml', testroot='translator-typing')
25
+ def test_without_typing(app):
26
+ # Test data definition
27
+ objectToGenXml = 'code_with_typing.TestClass.test_method_without_typing'
28
+ objectToGenXmlType = 'function'
29
+
30
+ # Arrange
31
+ prepare_app_envs(app, objectToGenXml)
32
+ doctree = load_rst_transform_to_doctree(app, objectToGenXmlType, objectToGenXml)
33
+
34
+ # Act
35
+ translator(app, '', doctree)
36
+
37
+ # Assert
38
+ parameterDetail = app.env.docfx_info_field_data[objectToGenXml]['parameters'][0]
39
+ assert (parameterDetail["type"] == ['<xref:list>[<xref:foo.boo.dummy.Container>]'])
@@ -47,5 +47,5 @@ def transform_node(app, node):
47
47
  writer.write(doc, destination)
48
48
  return destination.destination.decode('utf-8')
49
49
 
50
- def is_built_in_type(name: str) -> bool:
51
- return parameter_utils.is_system_type(name) or parameter_utils.is_typing(name)
50
+ def is_built_in_type(name: str, node) -> bool:
51
+ return parameter_utils.is_system_type(name) or parameter_utils.is_typing(name, node)
@@ -1,4 +1,4 @@
1
1
  from .core import contents, where
2
2
 
3
3
  __all__ = ["contents", "where"]
4
- __version__ = "2025.01.31"
4
+ __version__ = "2025.06.15"
@@ -46,7 +46,7 @@ if sys.version_info >= (3, 11):
46
46
  def contents() -> str:
47
47
  return files("certifi").joinpath("cacert.pem").read_text(encoding="ascii")
48
48
 
49
- elif sys.version_info >= (3, 7):
49
+ else:
50
50
 
51
51
  from importlib.resources import path as get_path, read_text
52
52
 
@@ -81,34 +81,3 @@ elif sys.version_info >= (3, 7):
81
81
 
82
82
  def contents() -> str:
83
83
  return read_text("certifi", "cacert.pem", encoding="ascii")
84
-
85
- else:
86
- import os
87
- import types
88
- from typing import Union
89
-
90
- Package = Union[types.ModuleType, str]
91
- Resource = Union[str, "os.PathLike"]
92
-
93
- # This fallback will work for Python versions prior to 3.7 that lack the
94
- # importlib.resources module but relies on the existing `where` function
95
- # so won't address issues with environments like PyOxidizer that don't set
96
- # __file__ on modules.
97
- def read_text(
98
- package: Package,
99
- resource: Resource,
100
- encoding: str = 'utf-8',
101
- errors: str = 'strict'
102
- ) -> str:
103
- with open(where(), encoding=encoding) as data:
104
- return data.read()
105
-
106
- # If we don't have importlib.resources, then we will just do the old logic
107
- # of assuming we're on the filesystem and munge the path directly.
108
- def where() -> str:
109
- f = os.path.dirname(__file__)
110
-
111
- return os.path.join(f, "cacert.pem")
112
-
113
- def contents() -> str:
114
- return read_text("certifi", "cacert.pem", encoding="ascii")
@@ -2,6 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import argparse
4
4
  import sys
5
+ import typing
5
6
  from json import dumps
6
7
  from os.path import abspath, basename, dirname, join, realpath
7
8
  from platform import python_version
@@ -43,7 +44,66 @@ def query_yes_no(question: str, default: str = "yes") -> bool:
43
44
  elif choice in valid:
44
45
  return valid[choice]
45
46
  else:
46
- sys.stdout.write("Please respond with 'yes' or 'no' " "(or 'y' or 'n').\n")
47
+ sys.stdout.write("Please respond with 'yes' or 'no' (or 'y' or 'n').\n")
48
+
49
+
50
+ class FileType:
51
+ """Factory for creating file object types
52
+
53
+ Instances of FileType are typically passed as type= arguments to the
54
+ ArgumentParser add_argument() method.
55
+
56
+ Keyword Arguments:
57
+ - mode -- A string indicating how the file is to be opened. Accepts the
58
+ same values as the builtin open() function.
59
+ - bufsize -- The file's desired buffer size. Accepts the same values as
60
+ the builtin open() function.
61
+ - encoding -- The file's encoding. Accepts the same values as the
62
+ builtin open() function.
63
+ - errors -- A string indicating how encoding and decoding errors are to
64
+ be handled. Accepts the same value as the builtin open() function.
65
+
66
+ Backported from CPython 3.12
67
+ """
68
+
69
+ def __init__(
70
+ self,
71
+ mode: str = "r",
72
+ bufsize: int = -1,
73
+ encoding: str | None = None,
74
+ errors: str | None = None,
75
+ ):
76
+ self._mode = mode
77
+ self._bufsize = bufsize
78
+ self._encoding = encoding
79
+ self._errors = errors
80
+
81
+ def __call__(self, string: str) -> typing.IO: # type: ignore[type-arg]
82
+ # the special argument "-" means sys.std{in,out}
83
+ if string == "-":
84
+ if "r" in self._mode:
85
+ return sys.stdin.buffer if "b" in self._mode else sys.stdin
86
+ elif any(c in self._mode for c in "wax"):
87
+ return sys.stdout.buffer if "b" in self._mode else sys.stdout
88
+ else:
89
+ msg = f'argument "-" with mode {self._mode}'
90
+ raise ValueError(msg)
91
+
92
+ # all other arguments are used as file names
93
+ try:
94
+ return open(string, self._mode, self._bufsize, self._encoding, self._errors)
95
+ except OSError as e:
96
+ message = f"can't open '{string}': {e}"
97
+ raise argparse.ArgumentTypeError(message)
98
+
99
+ def __repr__(self) -> str:
100
+ args = self._mode, self._bufsize
101
+ kwargs = [("encoding", self._encoding), ("errors", self._errors)]
102
+ args_str = ", ".join(
103
+ [repr(arg) for arg in args if arg != -1]
104
+ + [f"{kw}={arg!r}" for kw, arg in kwargs if arg is not None]
105
+ )
106
+ return f"{type(self).__name__}({args_str})"
47
107
 
48
108
 
49
109
  def cli_detect(argv: list[str] | None = None) -> int:
@@ -59,7 +119,7 @@ def cli_detect(argv: list[str] | None = None) -> int:
59
119
  )
60
120
 
61
121
  parser.add_argument(
62
- "files", type=argparse.FileType("rb"), nargs="+", help="File(s) to be analysed"
122
+ "files", type=FileType("rb"), nargs="+", help="File(s) to be analysed"
63
123
  )
64
124
  parser.add_argument(
65
125
  "-v",
@@ -549,6 +549,23 @@ COMMON_SAFE_ASCII_CHARACTERS: set[str] = {
549
549
  ")",
550
550
  }
551
551
 
552
+ # Sample character sets — replace with full lists if needed
553
+ COMMON_CHINESE_CHARACTERS = "的一是在不了有和人这中大为上个国我以要他时来用们生到作地于出就分对成会可主发年动同工也能下过子说产种面而方后多定行学法所民得经十三之进着等部度家电力里如水化高自二理起小物现实加量都两体制机当使点从业本去把性好应开它合还因由其些然前外天政四日那社义事平形相全表间样与关各重新线内数正心反你明看原又么利比或但质气第向道命此变条只没结解问意建月公无系军很情者最立代想已通并提直题党程展五果料象员革位入常文总次品式活设及管特件长求老头基资边流路级少图山统接知较将组见计别她手角期根论运农指几九区强放决西被干做必战先回则任取据处队南给色光门即保治北造百规热领七海口东导器压志世金增争济阶油思术极交受联什认六共权收证改清己美再采转更单风切打白教速花带安场身车例真务具万每目至达走积示议声报斗完类八离华名确才科张信马节话米整空元况今集温传土许步群广石记需段研界拉林律叫且究观越织装影算低持音众书布复容儿须际商非验连断深难近矿千周委素技备半办青省列习响约支般史感劳便团往酸历市克何除消构府太准精值号率族维划选标写存候毛亲快效斯院查江型眼王按格养易置派层片始却专状育厂京识适属圆包火住调满县局照参红细引听该铁价严龙飞"
554
+
555
+ COMMON_JAPANESE_CHARACTERS = "日一国年大十二本中長出三時行見月分後前生五間上東四今金九入学高円子外八六下来気小七山話女北午百書先名川千水半男西電校語土木聞食車何南万毎白天母火右読友左休父雨"
556
+
557
+ COMMON_KOREAN_CHARACTERS = "一二三四五六七八九十百千萬上下左右中人女子大小山川日月火水木金土父母天地國名年時文校學生"
558
+
559
+ # Combine all into a set
560
+ COMMON_CJK_CHARACTERS = set(
561
+ "".join(
562
+ [
563
+ COMMON_CHINESE_CHARACTERS,
564
+ COMMON_JAPANESE_CHARACTERS,
565
+ COMMON_KOREAN_CHARACTERS,
566
+ ]
567
+ )
568
+ )
552
569
 
553
570
  KO_NAMES: set[str] = {"johab", "cp949", "euc_kr"}
554
571
  ZH_NAMES: set[str] = {"big5", "cp950", "big5hkscs", "hz"}
@@ -37,9 +37,7 @@ def detect(
37
37
 
38
38
  if not isinstance(byte_str, (bytearray, bytes)):
39
39
  raise TypeError( # pragma: nocover
40
- "Expected object of type bytes or bytearray, got: " "{}".format(
41
- type(byte_str)
42
- )
40
+ f"Expected object of type bytes or bytearray, got: {type(byte_str)}"
43
41
  )
44
42
 
45
43
  if isinstance(byte_str, bytearray):
@@ -26,6 +26,7 @@ from .utils import (
26
26
  is_unprintable,
27
27
  remove_accent,
28
28
  unicode_range,
29
+ is_cjk_uncommon,
29
30
  )
30
31
 
31
32
 
@@ -365,35 +366,39 @@ class SuperWeirdWordPlugin(MessDetectorPlugin):
365
366
  return self._bad_character_count / self._character_count
366
367
 
367
368
 
368
- class CjkInvalidStopPlugin(MessDetectorPlugin):
369
+ class CjkUncommonPlugin(MessDetectorPlugin):
369
370
  """
370
- GB(Chinese) based encoding often render the stop incorrectly when the content does not fit and
371
- can be easily detected. Searching for the overuse of '丅' and '丄'.
371
+ Detect messy CJK text that probably means nothing.
372
372
  """
373
373
 
374
374
  def __init__(self) -> None:
375
- self._wrong_stop_count: int = 0
376
- self._cjk_character_count: int = 0
375
+ self._character_count: int = 0
376
+ self._uncommon_count: int = 0
377
377
 
378
378
  def eligible(self, character: str) -> bool:
379
- return True
379
+ return is_cjk(character)
380
380
 
381
381
  def feed(self, character: str) -> None:
382
- if character in {"丅", "丄"}:
383
- self._wrong_stop_count += 1
382
+ self._character_count += 1
383
+
384
+ if is_cjk_uncommon(character):
385
+ self._uncommon_count += 1
384
386
  return
385
- if is_cjk(character):
386
- self._cjk_character_count += 1
387
387
 
388
388
  def reset(self) -> None: # Abstract
389
- self._wrong_stop_count = 0
390
- self._cjk_character_count = 0
389
+ self._character_count = 0
390
+ self._uncommon_count = 0
391
391
 
392
392
  @property
393
393
  def ratio(self) -> float:
394
- if self._cjk_character_count < 16:
394
+ if self._character_count < 8:
395
395
  return 0.0
396
- return self._wrong_stop_count / self._cjk_character_count
396
+
397
+ uncommon_form_usage: float = self._uncommon_count / self._character_count
398
+
399
+ # we can be pretty sure it's garbage when uncommon characters are widely
400
+ # used. otherwise it could just be traditional chinese for example.
401
+ return uncommon_form_usage / 10 if uncommon_form_usage > 0.5 else 0.0
397
402
 
398
403
 
399
404
  class ArchaicUpperLowerPlugin(MessDetectorPlugin):
@@ -20,6 +20,7 @@ from .constant import (
20
20
  UNICODE_RANGES_COMBINED,
21
21
  UNICODE_SECONDARY_RANGE_KEYWORD,
22
22
  UTF8_MAXIMAL_ALLOCATION,
23
+ COMMON_CJK_CHARACTERS,
23
24
  )
24
25
 
25
26
 
@@ -200,6 +201,11 @@ def is_arabic_isolated_form(character: str) -> bool:
200
201
  return "ARABIC" in character_name and "ISOLATED FORM" in character_name
201
202
 
202
203
 
204
+ @lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION)
205
+ def is_cjk_uncommon(character: str) -> bool:
206
+ return character not in COMMON_CJK_CHARACTERS
207
+
208
+
203
209
  @lru_cache(maxsize=len(UNICODE_RANGES_COMBINED))
204
210
  def is_unicode_range_secondary(range_name: str) -> bool:
205
211
  return any(keyword in range_name for keyword in UNICODE_SECONDARY_RANGE_KEYWORD)
@@ -4,5 +4,5 @@ Expose version
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
- __version__ = "3.4.1"
7
+ __version__ = "3.4.2"
8
8
  VERSION = __version__.split(".")
@@ -6,7 +6,7 @@ __title__ = "packaging"
6
6
  __summary__ = "Core utilities for Python packages"
7
7
  __uri__ = "https://github.com/pypa/packaging"
8
8
 
9
- __version__ = "24.2"
9
+ __version__ = "25.0"
10
10
 
11
11
  __author__ = "Donald Stufft and individual contributors"
12
12
  __email__ = "donald@stufft.io"
@@ -69,8 +69,7 @@ class ELFFile:
69
69
  }[(self.capacity, self.encoding)]
70
70
  except KeyError as e:
71
71
  raise ELFInvalid(
72
- f"unrecognized capacity ({self.capacity}) or "
73
- f"encoding ({self.encoding})"
72
+ f"unrecognized capacity ({self.capacity}) or encoding ({self.encoding})"
74
73
  ) from e
75
74
 
76
75
  try:
@@ -161,8 +161,7 @@ def _parse_glibc_version(version_str: str) -> tuple[int, int]:
161
161
  m = re.match(r"(?P<major>[0-9]+)\.(?P<minor>[0-9]+)", version_str)
162
162
  if not m:
163
163
  warnings.warn(
164
- f"Expected glibc version with 2 components major.minor,"
165
- f" got: {version_str}",
164
+ f"Expected glibc version with 2 components major.minor, got: {version_str}",
166
165
  RuntimeWarning,
167
166
  stacklevel=2,
168
167
  )
@@ -349,6 +349,5 @@ def _parse_marker_op(tokenizer: Tokenizer) -> Op:
349
349
  return Op(tokenizer.read().text)
350
350
  else:
351
351
  return tokenizer.raise_syntax_error(
352
- "Expected marker operator, one of "
353
- "<=, <, !=, ==, >=, >, ~=, ===, in, not in"
352
+ "Expected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in"
354
353
  )
@@ -68,7 +68,8 @@ DEFAULT_RULES: dict[str, str | re.Pattern[str]] = {
68
68
  |platform[._](version|machine|python_implementation)
69
69
  |python_implementation
70
70
  |implementation_(name|version)
71
- |extra
71
+ |extras?
72
+ |dependency_groups
72
73
  )\b
73
74
  """,
74
75
  re.VERBOSE,
@@ -119,9 +120,9 @@ class Tokenizer:
119
120
  another check. If `peek` is set to `True`, the token is not loaded and
120
121
  would need to be checked again.
121
122
  """
122
- assert (
123
- self.next_token is None
124
- ), f"Cannot check for {name!r}, already have {self.next_token!r}"
123
+ assert self.next_token is None, (
124
+ f"Cannot check for {name!r}, already have {self.next_token!r}"
125
+ )
125
126
  assert name in self.rules, f"Unknown token name: {name!r}"
126
127
 
127
128
  expression = self.rules[name]
@@ -37,8 +37,8 @@ from typing import NewType, cast
37
37
  from packaging.licenses._spdx import EXCEPTIONS, LICENSES
38
38
 
39
39
  __all__ = [
40
- "NormalizedLicenseExpression",
41
40
  "InvalidLicenseExpression",
41
+ "NormalizedLicenseExpression",
42
42
  "canonicalize_license_expression",
43
43
  ]
44
44