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
@@ -244,6 +244,69 @@ class TestUnixCCompiler(support.TempdirManager):
244
244
  sysconfig.customize_compiler(self.cc)
245
245
  assert self.cc.linker_so[0] == 'my_cc'
246
246
 
247
+ @pytest.mark.skipif('platform.system == "Windows"')
248
+ def test_cxx_commands_used_are_correct(self):
249
+ def gcv(v):
250
+ if v == 'LDSHARED':
251
+ return 'ccache gcc-4.2 -bundle -undefined dynamic_lookup'
252
+ elif v == 'LDCXXSHARED':
253
+ return 'ccache g++-4.2 -bundle -undefined dynamic_lookup'
254
+ elif v == 'CXX':
255
+ return 'ccache g++-4.2'
256
+ elif v == 'CC':
257
+ return 'ccache gcc-4.2'
258
+ return ''
259
+
260
+ def gcvs(*args, _orig=sysconfig.get_config_vars):
261
+ if args:
262
+ return list(map(sysconfig.get_config_var, args))
263
+ return _orig() # pragma: no cover
264
+
265
+ sysconfig.get_config_var = gcv
266
+ sysconfig.get_config_vars = gcvs
267
+ with (
268
+ mock.patch.object(self.cc, 'spawn', return_value=None) as mock_spawn,
269
+ mock.patch.object(self.cc, '_need_link', return_value=True),
270
+ mock.patch.object(self.cc, 'mkpath', return_value=None),
271
+ EnvironmentVarGuard() as env,
272
+ ):
273
+ # override environment overrides in case they're specified by CI
274
+ del env['CXX']
275
+ del env['LDCXXSHARED']
276
+
277
+ sysconfig.customize_compiler(self.cc)
278
+ assert self.cc.linker_so_cxx[0:2] == ['ccache', 'g++-4.2']
279
+ assert self.cc.linker_exe_cxx[0:2] == ['ccache', 'g++-4.2']
280
+ self.cc.link(None, [], 'a.out', target_lang='c++')
281
+ call_args = mock_spawn.call_args[0][0]
282
+ expected = ['ccache', 'g++-4.2', '-bundle', '-undefined', 'dynamic_lookup']
283
+ assert call_args[:5] == expected
284
+
285
+ self.cc.link_executable([], 'a.out', target_lang='c++')
286
+ call_args = mock_spawn.call_args[0][0]
287
+ expected = ['ccache', 'g++-4.2', '-o', self.cc.executable_filename('a.out')]
288
+ assert call_args[:4] == expected
289
+
290
+ env['LDCXXSHARED'] = 'wrapper g++-4.2 -bundle -undefined dynamic_lookup'
291
+ env['CXX'] = 'wrapper g++-4.2'
292
+ sysconfig.customize_compiler(self.cc)
293
+ assert self.cc.linker_so_cxx[0:2] == ['wrapper', 'g++-4.2']
294
+ assert self.cc.linker_exe_cxx[0:2] == ['wrapper', 'g++-4.2']
295
+ self.cc.link(None, [], 'a.out', target_lang='c++')
296
+ call_args = mock_spawn.call_args[0][0]
297
+ expected = ['wrapper', 'g++-4.2', '-bundle', '-undefined', 'dynamic_lookup']
298
+ assert call_args[:5] == expected
299
+
300
+ self.cc.link_executable([], 'a.out', target_lang='c++')
301
+ call_args = mock_spawn.call_args[0][0]
302
+ expected = [
303
+ 'wrapper',
304
+ 'g++-4.2',
305
+ '-o',
306
+ self.cc.executable_filename('a.out'),
307
+ ]
308
+ assert call_args[:4] == expected
309
+
247
310
  @pytest.mark.skipif('platform.system == "Windows"')
248
311
  @pytest.mark.usefixtures('disable_macos_customization')
249
312
  def test_cc_overrides_ldshared_for_cxx_correctly(self):
@@ -286,19 +286,18 @@ class Compiler(base.Compiler):
286
286
  # building an executable or linker_so (with shared options)
287
287
  # when building a shared library.
288
288
  building_exe = target_desc == base.Compiler.EXECUTABLE
289
+ target_cxx = target_lang == "c++"
289
290
  linker = (
290
- self.linker_exe
291
+ (self.linker_exe_cxx if target_cxx else self.linker_exe)
291
292
  if building_exe
292
- else (
293
- self.linker_so_cxx if target_lang == "c++" else self.linker_so
294
- )
293
+ else (self.linker_so_cxx if target_cxx else self.linker_so)
295
294
  )[:]
296
295
 
297
- if target_lang == "c++" and self.compiler_cxx:
296
+ if target_cxx and self.compiler_cxx:
298
297
  env, linker_ne = _split_env(linker)
299
298
  aix, linker_na = _split_aix(linker_ne)
300
299
  _, compiler_cxx_ne = _split_env(self.compiler_cxx)
301
- _, linker_exe_ne = _split_env(self.linker_exe)
300
+ _, linker_exe_ne = _split_env(self.linker_exe_cxx)
302
301
 
303
302
  params = _linker_params(linker_na, linker_exe_ne)
304
303
  linker = env + aix + compiler_cxx_ne + params
@@ -15,6 +15,10 @@ def ensure_valid(ep):
15
15
  """
16
16
  Exercise one of the dynamic properties to trigger
17
17
  the pattern match.
18
+
19
+ This function is deprecated in favor of importlib_metadata 8.7 and
20
+ Python 3.14 importlib.metadata, which validates entry points on
21
+ construction.
18
22
  """
19
23
  try:
20
24
  ep.extras
@@ -36,7 +36,6 @@ def safe_name(component: str) -> str:
36
36
  >>> safe_name("hello_world")
37
37
  'hello_world'
38
38
  """
39
- # See pkg_resources.safe_name
40
39
  return _UNSAFE_NAME_CHARS.sub("-", component)
41
40
 
42
41
 
@@ -81,7 +80,6 @@ def best_effort_version(version: str) -> str:
81
80
  >>> best_effort_version("42.+?1")
82
81
  '42.dev0+sanitized.1'
83
82
  """
84
- # See pkg_resources._forgiving_version
85
83
  try:
86
84
  return safe_version(version)
87
85
  except packaging.version.InvalidVersion:
@@ -39,11 +39,20 @@ def same_path(p1: StrPath, p2: StrPath) -> bool:
39
39
  return normpath(p1) == normpath(p2)
40
40
 
41
41
 
42
+ def _cygwin_patch(filename: StrPath): # pragma: nocover
43
+ """
44
+ Contrary to POSIX 2008, on Cygwin, getcwd (3) contains
45
+ symlink components. Using
46
+ os.path.abspath() works around this limitation. A fix in os.getcwd()
47
+ would probably better, in Cygwin even more so, except
48
+ that this seems to be by design...
49
+ """
50
+ return os.path.abspath(filename) if sys.platform == 'cygwin' else filename
51
+
52
+
42
53
  def normpath(filename: StrPath) -> str:
43
54
  """Normalize a file/dir name for comparison purposes."""
44
- # See pkg_resources.normalize_path for notes about cygwin
45
- file = os.path.abspath(filename) if sys.platform == 'cygwin' else filename
46
- return os.path.normcase(os.path.realpath(os.path.normpath(file)))
55
+ return os.path.normcase(os.path.realpath(os.path.normpath(_cygwin_patch(filename))))
47
56
 
48
57
 
49
58
  @contextlib.contextmanager
@@ -37,6 +37,6 @@ def parse(strs: _StrOrIter) -> Iterator[Requirement]: ...
37
37
  def parse(strs: _StrOrIter, parser: Callable[[str], _T]) -> Iterator[_T]: ...
38
38
  def parse(strs: _StrOrIter, parser: Callable[[str], _T] = parse_req) -> Iterator[_T]: # type: ignore[assignment]
39
39
  """
40
- Replacement for ``pkg_resources.parse_requirements`` that uses ``packaging``.
40
+ Parse requirements.
41
41
  """
42
42
  return map(parser, parse_strings(strs))
@@ -0,0 +1,361 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+ import re
5
+ import shlex
6
+ import shutil
7
+ import struct
8
+ import subprocess
9
+ import sys
10
+ import textwrap
11
+ from collections.abc import Iterable
12
+ from typing import TYPE_CHECKING, TypedDict
13
+
14
+ from ._importlib import metadata, resources
15
+
16
+ if TYPE_CHECKING:
17
+ from typing_extensions import Self
18
+
19
+ from .warnings import SetuptoolsWarning
20
+
21
+ from distutils.command.build_scripts import first_line_re
22
+ from distutils.util import get_platform
23
+
24
+
25
+ class _SplitArgs(TypedDict, total=False):
26
+ comments: bool
27
+ posix: bool
28
+
29
+
30
+ class CommandSpec(list):
31
+ """
32
+ A command spec for a #! header, specified as a list of arguments akin to
33
+ those passed to Popen.
34
+ """
35
+
36
+ options: list[str] = []
37
+ split_args = _SplitArgs()
38
+
39
+ @classmethod
40
+ def best(cls):
41
+ """
42
+ Choose the best CommandSpec class based on environmental conditions.
43
+ """
44
+ return cls
45
+
46
+ @classmethod
47
+ def _sys_executable(cls):
48
+ _default = os.path.normpath(sys.executable)
49
+ return os.environ.get('__PYVENV_LAUNCHER__', _default)
50
+
51
+ @classmethod
52
+ def from_param(cls, param: Self | str | Iterable[str] | None) -> Self:
53
+ """
54
+ Construct a CommandSpec from a parameter to build_scripts, which may
55
+ be None.
56
+ """
57
+ if isinstance(param, cls):
58
+ return param
59
+ if isinstance(param, str):
60
+ return cls.from_string(param)
61
+ if isinstance(param, Iterable):
62
+ return cls(param)
63
+ if param is None:
64
+ return cls.from_environment()
65
+ raise TypeError(f"Argument has an unsupported type {type(param)}")
66
+
67
+ @classmethod
68
+ def from_environment(cls):
69
+ return cls([cls._sys_executable()])
70
+
71
+ @classmethod
72
+ def from_string(cls, string: str) -> Self:
73
+ """
74
+ Construct a command spec from a simple string representing a command
75
+ line parseable by shlex.split.
76
+ """
77
+ items = shlex.split(string, **cls.split_args)
78
+ return cls(items)
79
+
80
+ def install_options(self, script_text: str):
81
+ self.options = shlex.split(self._extract_options(script_text))
82
+ cmdline = subprocess.list2cmdline(self)
83
+ if not isascii(cmdline):
84
+ self.options[:0] = ['-x']
85
+
86
+ @staticmethod
87
+ def _extract_options(orig_script):
88
+ """
89
+ Extract any options from the first line of the script.
90
+ """
91
+ first = (orig_script + '\n').splitlines()[0]
92
+ match = _first_line_re().match(first)
93
+ options = match.group(1) or '' if match else ''
94
+ return options.strip()
95
+
96
+ def as_header(self):
97
+ return self._render(self + list(self.options))
98
+
99
+ @staticmethod
100
+ def _strip_quotes(item):
101
+ _QUOTES = '"\''
102
+ for q in _QUOTES:
103
+ if item.startswith(q) and item.endswith(q):
104
+ return item[1:-1]
105
+ return item
106
+
107
+ @staticmethod
108
+ def _render(items):
109
+ cmdline = subprocess.list2cmdline(
110
+ CommandSpec._strip_quotes(item.strip()) for item in items
111
+ )
112
+ return '#!' + cmdline + '\n'
113
+
114
+
115
+ class WindowsCommandSpec(CommandSpec):
116
+ split_args = _SplitArgs(posix=False)
117
+
118
+
119
+ class ScriptWriter:
120
+ """
121
+ Encapsulates behavior around writing entry point scripts for console and
122
+ gui apps.
123
+ """
124
+
125
+ template = textwrap.dedent(
126
+ r"""
127
+ # EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r
128
+ import re
129
+ import sys
130
+
131
+ # for compatibility with easy_install; see #2198
132
+ __requires__ = %(spec)r
133
+
134
+ try:
135
+ from importlib.metadata import distribution
136
+ except ImportError:
137
+ try:
138
+ from importlib_metadata import distribution
139
+ except ImportError:
140
+ from pkg_resources import load_entry_point
141
+
142
+
143
+ def importlib_load_entry_point(spec, group, name):
144
+ dist_name, _, _ = spec.partition('==')
145
+ matches = (
146
+ entry_point
147
+ for entry_point in distribution(dist_name).entry_points
148
+ if entry_point.group == group and entry_point.name == name
149
+ )
150
+ return next(matches).load()
151
+
152
+
153
+ globals().setdefault('load_entry_point', importlib_load_entry_point)
154
+
155
+
156
+ if __name__ == '__main__':
157
+ sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
158
+ sys.exit(load_entry_point(%(spec)r, %(group)r, %(name)r)())
159
+ """
160
+ ).lstrip()
161
+
162
+ command_spec_class = CommandSpec
163
+
164
+ @classmethod
165
+ def get_args(cls, dist, header=None):
166
+ """
167
+ Yield write_script() argument tuples for a distribution's
168
+ console_scripts and gui_scripts entry points.
169
+ """
170
+
171
+ # If distribution is not an importlib.metadata.Distribution, assume
172
+ # it's a pkg_resources.Distribution and transform it.
173
+ if not hasattr(dist, 'entry_points'):
174
+ SetuptoolsWarning.emit("Unsupported distribution encountered.")
175
+ dist = metadata.Distribution.at(dist.egg_info)
176
+
177
+ if header is None:
178
+ header = cls.get_header()
179
+ spec = f'{dist.name}=={dist.version}'
180
+ for type_ in 'console', 'gui':
181
+ group = f'{type_}_scripts'
182
+ for ep in dist.entry_points.select(group=group):
183
+ name = ep.name
184
+ cls._ensure_safe_name(ep.name)
185
+ script_text = cls.template % locals()
186
+ args = cls._get_script_args(type_, ep.name, header, script_text)
187
+ yield from args
188
+
189
+ @staticmethod
190
+ def _ensure_safe_name(name):
191
+ """
192
+ Prevent paths in *_scripts entry point names.
193
+ """
194
+ has_path_sep = re.search(r'[\\/]', name)
195
+ if has_path_sep:
196
+ raise ValueError("Path separators not allowed in script names")
197
+
198
+ @classmethod
199
+ def best(cls):
200
+ """
201
+ Select the best ScriptWriter for this environment.
202
+ """
203
+ if sys.platform == 'win32' or (os.name == 'java' and os._name == 'nt'):
204
+ return WindowsScriptWriter.best()
205
+ else:
206
+ return cls
207
+
208
+ @classmethod
209
+ def _get_script_args(cls, type_, name, header, script_text):
210
+ # Simply write the stub with no extension.
211
+ yield (name, header + script_text)
212
+
213
+ @classmethod
214
+ def get_header(
215
+ cls,
216
+ script_text: str = "",
217
+ executable: str | CommandSpec | Iterable[str] | None = None,
218
+ ) -> str:
219
+ """Create a #! line, getting options (if any) from script_text"""
220
+ cmd = cls.command_spec_class.best().from_param(executable)
221
+ cmd.install_options(script_text)
222
+ return cmd.as_header()
223
+
224
+
225
+ class WindowsScriptWriter(ScriptWriter):
226
+ command_spec_class = WindowsCommandSpec
227
+
228
+ @classmethod
229
+ def best(cls):
230
+ """
231
+ Select the best ScriptWriter suitable for Windows
232
+ """
233
+ writer_lookup = dict(
234
+ executable=WindowsExecutableLauncherWriter,
235
+ natural=cls,
236
+ )
237
+ # for compatibility, use the executable launcher by default
238
+ launcher = os.environ.get('SETUPTOOLS_LAUNCHER', 'executable')
239
+ return writer_lookup[launcher]
240
+
241
+ @classmethod
242
+ def _get_script_args(cls, type_, name, header, script_text):
243
+ "For Windows, add a .py extension"
244
+ ext = dict(console='.pya', gui='.pyw')[type_]
245
+ if ext not in os.environ['PATHEXT'].lower().split(';'):
246
+ msg = (
247
+ "{ext} not listed in PATHEXT; scripts will not be "
248
+ "recognized as executables."
249
+ ).format(**locals())
250
+ SetuptoolsWarning.emit(msg)
251
+ old = ['.pya', '.py', '-script.py', '.pyc', '.pyo', '.pyw', '.exe']
252
+ old.remove(ext)
253
+ header = cls._adjust_header(type_, header)
254
+ blockers = [name + x for x in old]
255
+ yield name + ext, header + script_text, 't', blockers
256
+
257
+ @classmethod
258
+ def _adjust_header(cls, type_, orig_header):
259
+ """
260
+ Make sure 'pythonw' is used for gui and 'python' is used for
261
+ console (regardless of what sys.executable is).
262
+ """
263
+ pattern = 'pythonw.exe'
264
+ repl = 'python.exe'
265
+ if type_ == 'gui':
266
+ pattern, repl = repl, pattern
267
+ pattern_ob = re.compile(re.escape(pattern), re.IGNORECASE)
268
+ new_header = pattern_ob.sub(string=orig_header, repl=repl)
269
+ return new_header if cls._use_header(new_header) else orig_header
270
+
271
+ @staticmethod
272
+ def _use_header(new_header):
273
+ """
274
+ Should _adjust_header use the replaced header?
275
+
276
+ On non-windows systems, always use. On
277
+ Windows systems, only use the replaced header if it resolves
278
+ to an executable on the system.
279
+ """
280
+ clean_header = new_header[2:-1].strip('"')
281
+ return sys.platform != 'win32' or shutil.which(clean_header)
282
+
283
+
284
+ class WindowsExecutableLauncherWriter(WindowsScriptWriter):
285
+ @classmethod
286
+ def _get_script_args(cls, type_, name, header, script_text):
287
+ """
288
+ For Windows, add a .py extension and an .exe launcher
289
+ """
290
+ if type_ == 'gui':
291
+ launcher_type = 'gui'
292
+ ext = '-script.pyw'
293
+ old = ['.pyw']
294
+ else:
295
+ launcher_type = 'cli'
296
+ ext = '-script.py'
297
+ old = ['.py', '.pyc', '.pyo']
298
+ hdr = cls._adjust_header(type_, header)
299
+ blockers = [name + x for x in old]
300
+ yield (name + ext, hdr + script_text, 't', blockers)
301
+ yield (
302
+ name + '.exe',
303
+ get_win_launcher(launcher_type),
304
+ 'b', # write in binary mode
305
+ )
306
+ if not is_64bit():
307
+ # install a manifest for the launcher to prevent Windows
308
+ # from detecting it as an installer (which it will for
309
+ # launchers like easy_install.exe). Consider only
310
+ # adding a manifest for launchers detected as installers.
311
+ # See Distribute #143 for details.
312
+ m_name = name + '.exe.manifest'
313
+ yield (m_name, load_launcher_manifest(name), 't')
314
+
315
+
316
+ def get_win_launcher(type):
317
+ """
318
+ Load the Windows launcher (executable) suitable for launching a script.
319
+
320
+ `type` should be either 'cli' or 'gui'
321
+
322
+ Returns the executable as a byte string.
323
+ """
324
+ launcher_fn = f'{type}.exe'
325
+ if is_64bit():
326
+ if get_platform() == "win-arm64":
327
+ launcher_fn = launcher_fn.replace(".", "-arm64.")
328
+ else:
329
+ launcher_fn = launcher_fn.replace(".", "-64.")
330
+ else:
331
+ launcher_fn = launcher_fn.replace(".", "-32.")
332
+ return resources.files('setuptools').joinpath(launcher_fn).read_bytes()
333
+
334
+
335
+ def load_launcher_manifest(name):
336
+ res = resources.files(__name__).joinpath('launcher manifest.xml')
337
+ return res.read_text(encoding='utf-8') % vars()
338
+
339
+
340
+ def _first_line_re():
341
+ """
342
+ Return a regular expression based on first_line_re suitable for matching
343
+ strings.
344
+ """
345
+ if isinstance(first_line_re.pattern, str):
346
+ return first_line_re
347
+
348
+ # first_line_re in Python >=3.1.4 and >=3.2.1 is a bytes pattern.
349
+ return re.compile(first_line_re.pattern.decode())
350
+
351
+
352
+ def is_64bit():
353
+ return struct.calcsize("P") == 8
354
+
355
+
356
+ def isascii(s):
357
+ try:
358
+ s.encode('ascii')
359
+ except UnicodeError:
360
+ return False
361
+ return True
@@ -51,3 +51,9 @@ def rmtree(path, ignore_errors=False, onexc=_auto_chmod):
51
51
  def rmdir(path, **opts):
52
52
  if os.path.isdir(path):
53
53
  rmtree(path, **opts)
54
+
55
+
56
+ def current_umask():
57
+ tmp = os.umask(0o022)
58
+ os.umask(tmp)
59
+ return tmp
@@ -67,9 +67,6 @@ __all__ = [
67
67
  'SetupRequirementsError',
68
68
  ]
69
69
 
70
- SETUPTOOLS_ENABLE_FEATURES = os.getenv("SETUPTOOLS_ENABLE_FEATURES", "").lower()
71
- LEGACY_EDITABLE = "legacy-editable" in SETUPTOOLS_ENABLE_FEATURES.replace("_", "-")
72
-
73
70
 
74
71
  class SetupRequirementsError(BaseException):
75
72
  def __init__(self, specifiers) -> None:
@@ -457,37 +454,30 @@ class _BuildMetaBackend(_ConfigSettingsTranslator):
457
454
  assert len(dist_info_candidates) <= 1
458
455
  return str(dist_info_candidates[0]) if dist_info_candidates else None
459
456
 
460
- if not LEGACY_EDITABLE:
461
- # PEP660 hooks:
462
- # build_editable
463
- # get_requires_for_build_editable
464
- # prepare_metadata_for_build_editable
465
- def build_editable(
466
- self,
467
- wheel_directory: StrPath,
468
- config_settings: _ConfigSettings = None,
469
- metadata_directory: StrPath | None = None,
470
- ):
471
- # XXX can or should we hide our editable_wheel command normally?
472
- info_dir = self._get_dist_info_dir(metadata_directory)
473
- opts = ["--dist-info-dir", info_dir] if info_dir else []
474
- cmd = ["editable_wheel", *opts, *self._editable_args(config_settings)]
475
- with suppress_known_deprecation():
476
- return self._build_with_temp_dir(
477
- cmd, ".whl", wheel_directory, config_settings
478
- )
457
+ def build_editable(
458
+ self,
459
+ wheel_directory: StrPath,
460
+ config_settings: _ConfigSettings = None,
461
+ metadata_directory: StrPath | None = None,
462
+ ):
463
+ # XXX can or should we hide our editable_wheel command normally?
464
+ info_dir = self._get_dist_info_dir(metadata_directory)
465
+ opts = ["--dist-info-dir", info_dir] if info_dir else []
466
+ cmd = ["editable_wheel", *opts, *self._editable_args(config_settings)]
467
+ with suppress_known_deprecation():
468
+ return self._build_with_temp_dir(
469
+ cmd, ".whl", wheel_directory, config_settings
470
+ )
479
471
 
480
- def get_requires_for_build_editable(
481
- self, config_settings: _ConfigSettings = None
482
- ):
483
- return self.get_requires_for_build_wheel(config_settings)
472
+ def get_requires_for_build_editable(self, config_settings: _ConfigSettings = None):
473
+ return self.get_requires_for_build_wheel(config_settings)
484
474
 
485
- def prepare_metadata_for_build_editable(
486
- self, metadata_directory: StrPath, config_settings: _ConfigSettings = None
487
- ):
488
- return self.prepare_metadata_for_build_wheel(
489
- metadata_directory, config_settings
490
- )
475
+ def prepare_metadata_for_build_editable(
476
+ self, metadata_directory: StrPath, config_settings: _ConfigSettings = None
477
+ ):
478
+ return self.prepare_metadata_for_build_wheel(
479
+ metadata_directory, config_settings
480
+ )
491
481
 
492
482
 
493
483
  class _BuildMetaLegacyBackend(_BuildMetaBackend):
@@ -549,11 +539,9 @@ get_requires_for_build_sdist = _BACKEND.get_requires_for_build_sdist
549
539
  prepare_metadata_for_build_wheel = _BACKEND.prepare_metadata_for_build_wheel
550
540
  build_wheel = _BACKEND.build_wheel
551
541
  build_sdist = _BACKEND.build_sdist
552
-
553
- if not LEGACY_EDITABLE:
554
- get_requires_for_build_editable = _BACKEND.get_requires_for_build_editable
555
- prepare_metadata_for_build_editable = _BACKEND.prepare_metadata_for_build_editable
556
- build_editable = _BACKEND.build_editable
542
+ get_requires_for_build_editable = _BACKEND.get_requires_for_build_editable
543
+ prepare_metadata_for_build_editable = _BACKEND.prepare_metadata_for_build_editable
544
+ build_editable = _BACKEND.build_editable
557
545
 
558
546
 
559
547
  # The legacy backend
@@ -9,7 +9,7 @@ import os
9
9
  import re
10
10
  import sys
11
11
  import textwrap
12
- from sysconfig import get_path, get_python_version
12
+ from sysconfig import get_path, get_platform, get_python_version
13
13
  from types import CodeType
14
14
  from typing import TYPE_CHECKING, Literal
15
15
 
@@ -55,12 +55,12 @@ def write_stub(resource, pyfile) -> None:
55
55
  """
56
56
  def __bootstrap__():
57
57
  global __bootstrap__, __loader__, __file__
58
- import sys, pkg_resources, importlib.util
59
- __file__ = pkg_resources.resource_filename(__name__, %r)
60
- __loader__ = None; del __bootstrap__, __loader__
61
- spec = importlib.util.spec_from_file_location(__name__,__file__)
62
- mod = importlib.util.module_from_spec(spec)
63
- spec.loader.exec_module(mod)
58
+ import sys, importlib.resources as irs, importlib.util
59
+ with irs.as_file(irs.files(__name__).joinpath(%r)) as __file__:
60
+ __loader__ = None; del __bootstrap__, __loader__
61
+ spec = importlib.util.spec_from_file_location(__name__,__file__)
62
+ mod = importlib.util.module_from_spec(spec)
63
+ spec.loader.exec_module(mod)
64
64
  __bootstrap__()
65
65
  """
66
66
  ).lstrip()
@@ -77,7 +77,7 @@ class bdist_egg(Command):
77
77
  'plat-name=',
78
78
  'p',
79
79
  "platform name to embed in generated filenames "
80
- "(by default uses `pkg_resources.get_build_platform()`)",
80
+ "(by default uses `sysconfig.get_platform()`)",
81
81
  ),
82
82
  ('exclude-source-files', None, "remove all .py files from the generated egg"),
83
83
  (
@@ -110,9 +110,7 @@ class bdist_egg(Command):
110
110
  self.bdist_dir = os.path.join(bdist_base, 'egg')
111
111
 
112
112
  if self.plat_name is None:
113
- from pkg_resources import get_build_platform
114
-
115
- self.plat_name = get_build_platform()
113
+ self.plat_name = get_platform()
116
114
 
117
115
  self.set_undefined_options('bdist', ('dist_dir', 'dist_dir'))
118
116
 
@@ -285,7 +285,7 @@ class bdist_wheel(Command):
285
285
  raise ValueError(
286
286
  f"`py_limited_api={self.py_limited_api!r}` not supported. "
287
287
  "`Py_LIMITED_API` is currently incompatible with "
288
- "`Py_GIL_DISABLED`."
288
+ "`Py_GIL_DISABLED`. "
289
289
  "See https://github.com/python/cpython/issues/111506."
290
290
  )
291
291