py2docfx 0.1.9.dev1897607__py3-none-any.whl → 0.1.9.dev1926139__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 (397) hide show
  1. py2docfx/__main__.py +77 -22
  2. py2docfx/convert_prepare/environment.py +59 -19
  3. py2docfx/convert_prepare/generate_document.py +12 -5
  4. py2docfx/convert_prepare/get_source.py +5 -1
  5. py2docfx/convert_prepare/git.py +24 -20
  6. py2docfx/convert_prepare/package_info.py +15 -9
  7. py2docfx/convert_prepare/pip_utils.py +29 -8
  8. py2docfx/convert_prepare/post_process/merge_toc.py +5 -1
  9. py2docfx/convert_prepare/sphinx_caller.py +31 -14
  10. py2docfx/convert_prepare/tests/test_generate_document.py +6 -4
  11. py2docfx/convert_prepare/tests/test_get_source.py +6 -6
  12. py2docfx/convert_prepare/tests/test_params.py +1 -1
  13. py2docfx/convert_prepare/tests/test_sphinx_caller.py +5 -3
  14. py2docfx/convert_prepare/tests/utils.py +11 -0
  15. py2docfx/docfx_yaml/build_finished.py +11 -3
  16. py2docfx/docfx_yaml/convert_class.py +4 -2
  17. py2docfx/docfx_yaml/convert_enum.py +4 -2
  18. py2docfx/docfx_yaml/convert_module.py +4 -2
  19. py2docfx/docfx_yaml/convert_package.py +4 -2
  20. py2docfx/docfx_yaml/logger.py +68 -0
  21. py2docfx/docfx_yaml/process_doctree.py +6 -4
  22. py2docfx/docfx_yaml/translator.py +5 -7
  23. py2docfx/docfx_yaml/writer.py +10 -4
  24. py2docfx/docfx_yaml/yaml_builder.py +0 -1
  25. py2docfx/venv/basevenv/Lib/site-packages/_distutils_hack/__init__.py +2 -3
  26. py2docfx/venv/basevenv/Lib/site-packages/packaging/__init__.py +2 -2
  27. py2docfx/venv/basevenv/Lib/site-packages/packaging/_elffile.py +4 -4
  28. py2docfx/venv/basevenv/Lib/site-packages/packaging/_manylinux.py +1 -0
  29. py2docfx/venv/basevenv/Lib/site-packages/packaging/licenses/__init__.py +145 -0
  30. py2docfx/venv/basevenv/Lib/site-packages/packaging/licenses/_spdx.py +759 -0
  31. py2docfx/venv/basevenv/Lib/site-packages/packaging/markers.py +15 -9
  32. py2docfx/venv/basevenv/Lib/site-packages/packaging/metadata.py +83 -24
  33. py2docfx/venv/basevenv/Lib/site-packages/packaging/specifiers.py +19 -8
  34. py2docfx/venv/basevenv/Lib/site-packages/packaging/tags.py +78 -29
  35. py2docfx/venv/basevenv/Lib/site-packages/packaging/utils.py +33 -44
  36. py2docfx/venv/basevenv/Lib/site-packages/packaging/version.py +26 -7
  37. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/__init__.py +27 -32
  38. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +4 -4
  39. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/tests/test_resources.py +7 -7
  40. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/tests/test_working_set.py +1 -1
  41. py2docfx/venv/basevenv/Lib/site-packages/setuptools/__init__.py +7 -9
  42. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compat/py38.py +1 -1
  43. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/dir_util.py +3 -8
  44. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +22 -0
  45. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_importlib.py +1 -4
  46. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_path.py +5 -8
  47. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_reqs.py +2 -1
  48. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_shutil.py +53 -0
  49. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +2 -2
  50. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +4 -4
  51. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +1 -0
  52. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/licenses/__init__.py +145 -0
  53. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/licenses/_spdx.py +759 -0
  54. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/markers.py +15 -9
  55. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +83 -24
  56. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +19 -8
  57. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/tags.py +78 -29
  58. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/utils.py +33 -44
  59. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/version.py +26 -7
  60. py2docfx/venv/basevenv/Lib/site-packages/setuptools/archive_util.py +6 -4
  61. py2docfx/venv/basevenv/Lib/site-packages/setuptools/build_meta.py +25 -19
  62. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/__init__.py +9 -1
  63. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/_requirestxt.py +4 -4
  64. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/alias.py +3 -4
  65. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_egg.py +27 -13
  66. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_rpm.py +1 -1
  67. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_wheel.py +43 -84
  68. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build.py +3 -3
  69. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_clib.py +2 -9
  70. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_ext.py +15 -14
  71. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_py.py +26 -30
  72. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/develop.py +4 -4
  73. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/dist_info.py +3 -7
  74. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/easy_install.py +57 -80
  75. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/editable_wheel.py +21 -23
  76. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/egg_info.py +32 -32
  77. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install.py +31 -13
  78. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_egg_info.py +4 -4
  79. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_lib.py +10 -7
  80. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_scripts.py +2 -2
  81. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/rotate.py +6 -6
  82. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/saveopts.py +2 -2
  83. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/sdist.py +11 -10
  84. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/setopt.py +3 -3
  85. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +19 -14
  86. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/expand.py +22 -16
  87. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/pyprojecttoml.py +12 -10
  88. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/setupcfg.py +39 -47
  89. py2docfx/venv/basevenv/Lib/site-packages/setuptools/depends.py +26 -7
  90. py2docfx/venv/basevenv/Lib/site-packages/setuptools/discovery.py +21 -14
  91. py2docfx/venv/basevenv/Lib/site-packages/setuptools/dist.py +51 -47
  92. py2docfx/venv/basevenv/Lib/site-packages/setuptools/errors.py +21 -26
  93. py2docfx/venv/basevenv/Lib/site-packages/setuptools/extension.py +18 -6
  94. py2docfx/venv/basevenv/Lib/site-packages/setuptools/glob.py +35 -15
  95. py2docfx/venv/basevenv/Lib/site-packages/setuptools/installer.py +6 -1
  96. py2docfx/venv/basevenv/Lib/site-packages/setuptools/launch.py +1 -1
  97. py2docfx/venv/basevenv/Lib/site-packages/setuptools/logging.py +2 -2
  98. py2docfx/venv/basevenv/Lib/site-packages/setuptools/modified.py +16 -6
  99. py2docfx/venv/basevenv/Lib/site-packages/setuptools/monkey.py +5 -5
  100. py2docfx/venv/basevenv/Lib/site-packages/setuptools/msvc.py +35 -24
  101. py2docfx/venv/basevenv/Lib/site-packages/setuptools/namespaces.py +2 -2
  102. py2docfx/venv/basevenv/Lib/site-packages/setuptools/package_index.py +42 -43
  103. py2docfx/venv/basevenv/Lib/site-packages/setuptools/sandbox.py +19 -12
  104. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +5 -3
  105. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +7 -6
  106. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_expand.py +3 -3
  107. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +2 -2
  108. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +21 -11
  109. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +12 -16
  110. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +10 -11
  111. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_egg.py +7 -3
  112. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +10 -33
  113. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_ext.py +2 -2
  114. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_meta.py +1 -1
  115. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_py.py +6 -6
  116. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_config_discovery.py +4 -4
  117. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_core_metadata.py +171 -76
  118. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist.py +11 -13
  119. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist_info.py +1 -1
  120. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +44 -5
  121. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_easy_install.py +32 -26
  122. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_editable_install.py +10 -6
  123. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_egg_info.py +15 -15
  124. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_glob.py +1 -1
  125. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_logging.py +1 -1
  126. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_manifest.py +2 -8
  127. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_packageindex.py +6 -17
  128. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_setuptools.py +4 -3
  129. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_shutil_wrapper.py +23 -0
  130. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_wheel.py +29 -20
  131. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -3
  132. py2docfx/venv/basevenv/Lib/site-packages/setuptools/unicode_utils.py +3 -3
  133. py2docfx/venv/basevenv/Lib/site-packages/setuptools/warnings.py +5 -2
  134. py2docfx/venv/basevenv/Lib/site-packages/setuptools/wheel.py +4 -4
  135. py2docfx/venv/basevenv/Lib/site-packages/wheel/__init__.py +1 -1
  136. py2docfx/venv/basevenv/Lib/site-packages/wheel/_bdist_wheel.py +9 -0
  137. py2docfx/venv/basevenv/Lib/site-packages/wheel/bdist_wheel.py +17 -2
  138. py2docfx/venv/basevenv/Lib/site-packages/wheel/cli/convert.py +279 -220
  139. py2docfx/venv/basevenv/Lib/site-packages/wheel/util.py +0 -9
  140. py2docfx/venv/venv1/Lib/site-packages/_distutils_hack/__init__.py +2 -3
  141. py2docfx/venv/venv1/Lib/site-packages/azure/core/_enum_meta.py +1 -1
  142. py2docfx/venv/venv1/Lib/site-packages/azure/core/_pipeline_client.py +2 -2
  143. py2docfx/venv/venv1/Lib/site-packages/azure/core/_pipeline_client_async.py +5 -3
  144. py2docfx/venv/venv1/Lib/site-packages/azure/core/_version.py +1 -1
  145. py2docfx/venv/venv1/Lib/site-packages/azure/core/credentials.py +6 -1
  146. py2docfx/venv/venv1/Lib/site-packages/azure/core/exceptions.py +13 -5
  147. py2docfx/venv/venv1/Lib/site-packages/azure/core/messaging.py +3 -3
  148. py2docfx/venv/venv1/Lib/site-packages/azure/core/paging.py +1 -1
  149. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/__init__.py +16 -5
  150. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base.py +15 -4
  151. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base_async.py +20 -10
  152. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_tools.py +3 -1
  153. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication.py +55 -19
  154. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication_async.py +46 -15
  155. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_custom_hook.py +8 -3
  156. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_distributed_tracing.py +9 -3
  157. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect.py +9 -2
  158. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect_async.py +4 -1
  159. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry.py +27 -8
  160. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry_async.py +6 -3
  161. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_sensitive_header_cleanup_policy.py +4 -1
  162. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_universal.py +6 -10
  163. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_utils.py +101 -1
  164. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/__init__.py +1 -1
  165. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_aiohttp.py +9 -2
  166. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base.py +1 -1
  167. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base_async.py +7 -5
  168. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_asyncio.py +0 -1
  169. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_basic.py +11 -3
  170. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_trio.py +11 -3
  171. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/_async_poller.py +5 -2
  172. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/_poller.py +4 -1
  173. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/async_base_polling.py +3 -1
  174. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/base_polling.py +47 -16
  175. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_helpers.py +3 -1
  176. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_http_response_impl.py +1 -1
  177. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_basic.py +3 -1
  178. py2docfx/venv/venv1/Lib/site-packages/azure/core/serialization.py +1 -1
  179. py2docfx/venv/venv1/Lib/site-packages/azure/core/settings.py +15 -3
  180. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/_abstract_span.py +15 -5
  181. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/common.py +1 -1
  182. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator.py +12 -1
  183. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator_async.py +24 -4
  184. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/__init__.py +119 -110
  185. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/_version.py +1 -1
  186. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared.py +3 -1
  187. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared_async.py +10 -1
  188. py2docfx/venv/venv1/Lib/site-packages/google/api/client_pb2.py +41 -39
  189. py2docfx/venv/venv1/Lib/site-packages/google/api/error_reason_pb2.py +2 -2
  190. py2docfx/venv/venv1/Lib/site-packages/google/api/httpbody_pb2.py +2 -2
  191. py2docfx/venv/venv1/Lib/site-packages/google/api/metric_pb2.py +17 -11
  192. py2docfx/venv/venv1/Lib/site-packages/google/api_core/client_options.py +17 -13
  193. py2docfx/venv/venv1/Lib/site-packages/google/api_core/protobuf_helpers.py +1 -3
  194. py2docfx/venv/venv1/Lib/site-packages/google/api_core/version.py +1 -1
  195. py2docfx/venv/venv1/Lib/site-packages/google/auth/_default.py +4 -0
  196. py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/_metadata.py +1 -1
  197. py2docfx/venv/venv1/Lib/site-packages/google/auth/iam.py +25 -8
  198. py2docfx/venv/venv1/Lib/site-packages/google/auth/impersonated_credentials.py +34 -16
  199. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_requests_base.py +2 -1
  200. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/requests.py +2 -3
  201. py2docfx/venv/venv1/Lib/site-packages/google/auth/version.py +1 -1
  202. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_client.py +10 -2
  203. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/service_account.py +1 -0
  204. py2docfx/venv/venv1/Lib/site-packages/jwt/__init__.py +3 -2
  205. py2docfx/venv/venv1/Lib/site-packages/jwt/algorithms.py +31 -16
  206. py2docfx/venv/venv1/Lib/site-packages/jwt/api_jws.py +19 -8
  207. py2docfx/venv/venv1/Lib/site-packages/jwt/api_jwt.py +75 -19
  208. py2docfx/venv/venv1/Lib/site-packages/jwt/exceptions.py +8 -0
  209. py2docfx/venv/venv1/Lib/site-packages/jwt/help.py +4 -1
  210. py2docfx/venv/venv1/Lib/site-packages/jwt/jwks_client.py +4 -2
  211. py2docfx/venv/venv1/Lib/site-packages/jwt/utils.py +7 -10
  212. py2docfx/venv/venv1/Lib/site-packages/msal/application.py +1 -1
  213. py2docfx/venv/venv1/Lib/site-packages/msal/managed_identity.py +5 -3
  214. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/__init__.py +27 -32
  215. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +4 -4
  216. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_resources.py +7 -7
  217. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_working_set.py +1 -1
  218. py2docfx/venv/venv1/Lib/site-packages/proto/enums.py +3 -1
  219. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/collections/repeated.py +7 -2
  220. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/compat.py +18 -21
  221. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/message.py +7 -3
  222. py2docfx/venv/venv1/Lib/site-packages/proto/message.py +6 -35
  223. py2docfx/venv/venv1/Lib/site-packages/proto/version.py +1 -1
  224. py2docfx/venv/venv1/Lib/site-packages/setuptools/__init__.py +7 -9
  225. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compat/py38.py +1 -1
  226. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/dir_util.py +3 -8
  227. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +22 -0
  228. py2docfx/venv/venv1/Lib/site-packages/setuptools/_importlib.py +1 -4
  229. py2docfx/venv/venv1/Lib/site-packages/setuptools/_path.py +5 -8
  230. py2docfx/venv/venv1/Lib/site-packages/setuptools/_reqs.py +2 -1
  231. py2docfx/venv/venv1/Lib/site-packages/setuptools/_shutil.py +53 -0
  232. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +2 -2
  233. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +4 -4
  234. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +1 -0
  235. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/licenses/__init__.py +145 -0
  236. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/licenses/_spdx.py +759 -0
  237. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/markers.py +15 -9
  238. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +83 -24
  239. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +19 -8
  240. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/tags.py +78 -29
  241. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/utils.py +33 -44
  242. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/version.py +26 -7
  243. py2docfx/venv/venv1/Lib/site-packages/setuptools/archive_util.py +6 -4
  244. py2docfx/venv/venv1/Lib/site-packages/setuptools/build_meta.py +25 -19
  245. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/__init__.py +9 -1
  246. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/_requirestxt.py +4 -4
  247. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/alias.py +3 -4
  248. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_egg.py +27 -13
  249. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_rpm.py +1 -1
  250. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +43 -84
  251. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build.py +3 -3
  252. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_clib.py +2 -9
  253. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_ext.py +15 -14
  254. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_py.py +26 -30
  255. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/develop.py +4 -4
  256. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/dist_info.py +3 -7
  257. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/easy_install.py +57 -80
  258. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/editable_wheel.py +21 -23
  259. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/egg_info.py +32 -32
  260. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install.py +31 -13
  261. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_egg_info.py +4 -4
  262. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_lib.py +10 -7
  263. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_scripts.py +2 -2
  264. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/rotate.py +6 -6
  265. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/saveopts.py +2 -2
  266. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/sdist.py +11 -10
  267. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/setopt.py +3 -3
  268. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +19 -14
  269. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/expand.py +22 -16
  270. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/pyprojecttoml.py +12 -10
  271. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/setupcfg.py +39 -47
  272. py2docfx/venv/venv1/Lib/site-packages/setuptools/depends.py +26 -7
  273. py2docfx/venv/venv1/Lib/site-packages/setuptools/discovery.py +21 -14
  274. py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +51 -47
  275. py2docfx/venv/venv1/Lib/site-packages/setuptools/errors.py +21 -26
  276. py2docfx/venv/venv1/Lib/site-packages/setuptools/extension.py +18 -6
  277. py2docfx/venv/venv1/Lib/site-packages/setuptools/glob.py +35 -15
  278. py2docfx/venv/venv1/Lib/site-packages/setuptools/installer.py +6 -1
  279. py2docfx/venv/venv1/Lib/site-packages/setuptools/launch.py +1 -1
  280. py2docfx/venv/venv1/Lib/site-packages/setuptools/logging.py +2 -2
  281. py2docfx/venv/venv1/Lib/site-packages/setuptools/modified.py +16 -6
  282. py2docfx/venv/venv1/Lib/site-packages/setuptools/monkey.py +5 -5
  283. py2docfx/venv/venv1/Lib/site-packages/setuptools/msvc.py +35 -24
  284. py2docfx/venv/venv1/Lib/site-packages/setuptools/namespaces.py +2 -2
  285. py2docfx/venv/venv1/Lib/site-packages/setuptools/package_index.py +42 -43
  286. py2docfx/venv/venv1/Lib/site-packages/setuptools/sandbox.py +19 -12
  287. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +5 -3
  288. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +7 -6
  289. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_expand.py +3 -3
  290. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +2 -2
  291. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +21 -11
  292. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +12 -16
  293. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +10 -11
  294. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_egg.py +7 -3
  295. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +10 -33
  296. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_ext.py +2 -2
  297. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_meta.py +1 -1
  298. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_py.py +6 -6
  299. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_config_discovery.py +4 -4
  300. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_core_metadata.py +171 -76
  301. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist.py +11 -13
  302. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist_info.py +1 -1
  303. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +44 -5
  304. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_easy_install.py +32 -26
  305. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_editable_install.py +10 -6
  306. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_egg_info.py +15 -15
  307. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_glob.py +1 -1
  308. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_logging.py +1 -1
  309. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_manifest.py +2 -8
  310. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_packageindex.py +6 -17
  311. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_setuptools.py +4 -3
  312. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_shutil_wrapper.py +23 -0
  313. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_wheel.py +29 -20
  314. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -3
  315. py2docfx/venv/venv1/Lib/site-packages/setuptools/unicode_utils.py +3 -3
  316. py2docfx/venv/venv1/Lib/site-packages/setuptools/warnings.py +5 -2
  317. py2docfx/venv/venv1/Lib/site-packages/setuptools/wheel.py +4 -4
  318. py2docfx/venv/venv1/Lib/site-packages/wheel/__init__.py +1 -1
  319. py2docfx/venv/venv1/Lib/site-packages/wheel/_bdist_wheel.py +9 -0
  320. py2docfx/venv/venv1/Lib/site-packages/wheel/bdist_wheel.py +17 -2
  321. py2docfx/venv/venv1/Lib/site-packages/wheel/cli/convert.py +279 -220
  322. py2docfx/venv/venv1/Lib/site-packages/wheel/util.py +0 -9
  323. {py2docfx-0.1.9.dev1897607.dist-info → py2docfx-0.1.9.dev1926139.dist-info}/METADATA +1 -1
  324. {py2docfx-0.1.9.dev1897607.dist-info → py2docfx-0.1.9.dev1926139.dist-info}/RECORD +327 -385
  325. {py2docfx-0.1.9.dev1897607.dist-info → py2docfx-0.1.9.dev1926139.dist-info}/WHEEL +1 -1
  326. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +0 -36
  327. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +0 -168
  328. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +0 -210
  329. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +0 -38
  330. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +0 -171
  331. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/__init__.py +0 -0
  332. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py38.py +0 -11
  333. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py39.py +0 -10
  334. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/functional.py +0 -81
  335. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/future/__init__.py +0 -0
  336. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/future/adapters.py +0 -95
  337. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +0 -194
  338. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +0 -106
  339. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/__init__.py +0 -0
  340. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/_path.py +0 -56
  341. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/__init__.py +0 -0
  342. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py312.py +0 -18
  343. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py39.py +0 -10
  344. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/__init__.py +0 -0
  345. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py +0 -0
  346. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/__init__.py +0 -0
  347. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py +0 -0
  348. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py +0 -0
  349. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py +0 -104
  350. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_contents.py +0 -43
  351. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_custom.py +0 -47
  352. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_files.py +0 -117
  353. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_functional.py +0 -242
  354. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_open.py +0 -89
  355. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_path.py +0 -65
  356. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_read.py +0 -97
  357. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_reader.py +0 -145
  358. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_resource.py +0 -241
  359. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/util.py +0 -164
  360. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/zip.py +0 -32
  361. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +0 -36
  362. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +0 -168
  363. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +0 -210
  364. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +0 -38
  365. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +0 -171
  366. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/__init__.py +0 -0
  367. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py38.py +0 -11
  368. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py39.py +0 -10
  369. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/functional.py +0 -81
  370. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/future/__init__.py +0 -0
  371. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/future/adapters.py +0 -95
  372. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +0 -194
  373. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +0 -106
  374. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/__init__.py +0 -0
  375. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/_path.py +0 -56
  376. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/__init__.py +0 -0
  377. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py312.py +0 -18
  378. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py39.py +0 -10
  379. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/__init__.py +0 -0
  380. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py +0 -0
  381. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/__init__.py +0 -0
  382. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py +0 -0
  383. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py +0 -0
  384. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py +0 -104
  385. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_contents.py +0 -43
  386. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_custom.py +0 -47
  387. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_files.py +0 -117
  388. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_functional.py +0 -242
  389. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_open.py +0 -89
  390. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_path.py +0 -65
  391. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_read.py +0 -97
  392. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_reader.py +0 -145
  393. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_resource.py +0 -241
  394. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/util.py +0 -164
  395. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/zip.py +0 -32
  396. /py2docfx/convert_prepare/conf_templates/{master_doc.rst_t → root_doc.rst_t} +0 -0
  397. {py2docfx-0.1.9.dev1897607.dist-info → py2docfx-0.1.9.dev1926139.dist-info}/top_level.txt +0 -0
@@ -34,7 +34,7 @@ import zipimport
34
34
  from collections.abc import Iterable
35
35
  from glob import glob
36
36
  from sysconfig import get_path
37
- from typing import TYPE_CHECKING, Callable, TypeVar
37
+ from typing import TYPE_CHECKING, NoReturn, TypedDict
38
38
 
39
39
  from jaraco.text import yield_lines
40
40
 
@@ -63,7 +63,8 @@ from setuptools.warnings import SetuptoolsDeprecationWarning, SetuptoolsWarning
63
63
  from setuptools.wheel import Wheel
64
64
 
65
65
  from .._path import ensure_directory
66
- from ..compat import py39, py311, py312
66
+ from .._shutil import attempt_chmod_verbose as chmod, rmtree as _rmtree
67
+ from ..compat import py39, py312
67
68
 
68
69
  from distutils import dir_util, log
69
70
  from distutils.command import install
@@ -89,8 +90,6 @@ __all__ = [
89
90
  'get_exe_prefixes',
90
91
  ]
91
92
 
92
- _T = TypeVar("_T")
93
-
94
93
 
95
94
  def is_64bit():
96
95
  return struct.calcsize("P") == 8
@@ -212,7 +211,7 @@ class easy_install(Command):
212
211
  self, self.distribution.get_option_dict('easy_install')
213
212
  )
214
213
 
215
- def delete_blockers(self, blockers):
214
+ def delete_blockers(self, blockers) -> None:
216
215
  extant_blockers = (
217
216
  filename
218
217
  for filename in blockers
@@ -234,13 +233,12 @@ class easy_install(Command):
234
233
  """
235
234
  Render the Setuptools version and installation details, then exit.
236
235
  """
237
- ver = '{}.{}'.format(*sys.version_info)
236
+ ver = f'{sys.version_info.major}.{sys.version_info.minor}'
238
237
  dist = get_distribution('setuptools')
239
- tmpl = 'setuptools {dist.version} from {dist.location} (Python {ver})'
240
- print(tmpl.format(**locals()))
238
+ print(f'setuptools {dist.version} from {dist.location} (Python {ver})')
241
239
  raise SystemExit
242
240
 
243
- def finalize_options(self): # noqa: C901 # is too complex (25) # FIXME
241
+ def finalize_options(self) -> None: # noqa: C901 # is too complex (25) # FIXME
244
242
  self.version and self._render_version()
245
243
 
246
244
  py_version = sys.version.split()[0]
@@ -356,7 +354,7 @@ class easy_install(Command):
356
354
  "No urls, filenames, or requirements specified (see --help)"
357
355
  )
358
356
 
359
- self.outputs = []
357
+ self.outputs: list[str] = []
360
358
 
361
359
  @staticmethod
362
360
  def _process_site_dirs(site_dirs):
@@ -408,12 +406,12 @@ class easy_install(Command):
408
406
  val = subst_vars(val, self.config_vars)
409
407
  setattr(self, attr, val)
410
408
 
411
- def expand_basedirs(self):
409
+ def expand_basedirs(self) -> None:
412
410
  """Calls `os.path.expanduser` on install_base, install_platbase and
413
411
  root."""
414
412
  self._expand_attrs(['install_base', 'install_platbase', 'root'])
415
413
 
416
- def expand_dirs(self):
414
+ def expand_dirs(self) -> None:
417
415
  """Calls `os.path.expanduser` on install dirs."""
418
416
  dirs = [
419
417
  'install_purelib',
@@ -425,7 +423,7 @@ class easy_install(Command):
425
423
  ]
426
424
  self._expand_attrs(dirs)
427
425
 
428
- def run(self, show_deprecation=True):
426
+ def run(self, show_deprecation: bool = True) -> None:
429
427
  if show_deprecation:
430
428
  self.announce(
431
429
  "WARNING: The easy_install command is deprecated "
@@ -465,10 +463,10 @@ class easy_install(Command):
465
463
  pid = random.randint(0, sys.maxsize)
466
464
  return os.path.join(self.install_dir, "test-easy-install-%s" % pid)
467
465
 
468
- def warn_deprecated_options(self):
466
+ def warn_deprecated_options(self) -> None:
469
467
  pass
470
468
 
471
- def check_site_dir(self): # is too complex (12) # FIXME
469
+ def check_site_dir(self) -> None: # is too complex (12) # FIXME
472
470
  """Verify that self.install_dir is .pth-capable dir, if needed"""
473
471
 
474
472
  instdir = normalize_path(self.install_dir)
@@ -555,7 +553,7 @@ class easy_install(Command):
555
553
  """
556
554
  ).lstrip()
557
555
 
558
- def cant_write_to_target(self):
556
+ def cant_write_to_target(self) -> NoReturn:
559
557
  msg = self.__cant_write_msg % (
560
558
  sys.exc_info()[1],
561
559
  self.install_dir,
@@ -627,7 +625,7 @@ class easy_install(Command):
627
625
  log.warn("TEST FAILED: %s does NOT support .pth files", instdir)
628
626
  return False
629
627
 
630
- def install_egg_scripts(self, dist):
628
+ def install_egg_scripts(self, dist) -> None:
631
629
  """Write all the scripts for `dist`, unless scripts are excluded"""
632
630
  if not self.exclude_scripts and dist.metadata_isdir('scripts'):
633
631
  for script_name in dist.metadata_listdir('scripts'):
@@ -640,7 +638,7 @@ class easy_install(Command):
640
638
  )
641
639
  self.install_wrapper_scripts(dist)
642
640
 
643
- def add_output(self, path):
641
+ def add_output(self, path) -> None:
644
642
  if os.path.isdir(path):
645
643
  for base, dirs, files in os.walk(path):
646
644
  for filename in files:
@@ -648,14 +646,14 @@ class easy_install(Command):
648
646
  else:
649
647
  self.outputs.append(path)
650
648
 
651
- def not_editable(self, spec):
649
+ def not_editable(self, spec) -> None:
652
650
  if self.editable:
653
651
  raise DistutilsArgError(
654
652
  "Invalid argument %r: you can't use filenames or URLs "
655
653
  "with --editable (except via the --find-links option)." % (spec,)
656
654
  )
657
655
 
658
- def check_editable(self, spec):
656
+ def check_editable(self, spec) -> None:
659
657
  if not self.editable:
660
658
  return
661
659
 
@@ -674,7 +672,7 @@ class easy_install(Command):
674
672
  finally:
675
673
  os.path.exists(tmpdir) and _rmtree(tmpdir)
676
674
 
677
- def easy_install(self, spec, deps=False):
675
+ def easy_install(self, spec, deps: bool = False) -> Distribution | None:
678
676
  with self._tmpdir() as tmpdir:
679
677
  if not isinstance(spec, Requirement):
680
678
  if URL_SCHEME(spec):
@@ -711,9 +709,11 @@ class easy_install(Command):
711
709
  else:
712
710
  return self.install_item(spec, dist.location, tmpdir, deps)
713
711
 
714
- def install_item(self, spec, download, tmpdir, deps, install_needed=False):
712
+ def install_item(
713
+ self, spec, download, tmpdir, deps, install_needed: bool = False
714
+ ) -> Distribution | None:
715
715
  # Installation is also needed if file in tmpdir or is not an egg
716
- install_needed = install_needed or self.always_copy
716
+ install_needed = install_needed or bool(self.always_copy)
717
717
  install_needed = install_needed or os.path.dirname(download) == tmpdir
718
718
  install_needed = install_needed or not download.endswith('.egg')
719
719
  install_needed = install_needed or (
@@ -759,9 +759,9 @@ class easy_install(Command):
759
759
  self,
760
760
  requirement,
761
761
  dist,
762
- deps=True,
762
+ deps: bool = True,
763
763
  *info,
764
- ):
764
+ ) -> None:
765
765
  self.update_pth(dist)
766
766
  self.package_index.add(dist)
767
767
  if dist in self.local_index[dist.key]:
@@ -799,7 +799,7 @@ class easy_install(Command):
799
799
  self.easy_install(dist.as_requirement())
800
800
  log.info("Finished processing dependencies for %s", requirement)
801
801
 
802
- def should_unzip(self, dist):
802
+ def should_unzip(self, dist) -> bool:
803
803
  if self.zip_ok is not None:
804
804
  return not self.zip_ok
805
805
  if dist.has_metadata('not-zip-safe'):
@@ -829,13 +829,13 @@ class easy_install(Command):
829
829
  shutil.move(setup_base, dst)
830
830
  return dst
831
831
 
832
- def install_wrapper_scripts(self, dist):
832
+ def install_wrapper_scripts(self, dist) -> None:
833
833
  if self.exclude_scripts:
834
834
  return
835
835
  for args in ScriptWriter.best().get_args(dist):
836
836
  self.write_script(*args)
837
837
 
838
- def install_script(self, dist, script_name, script_text, dev_path=None):
838
+ def install_script(self, dist, script_name, script_text, dev_path=None) -> None:
839
839
  """Generate a legacy script wrapper and install it"""
840
840
  spec = str(dist.as_requirement())
841
841
  is_script = is_python_script(script_text, script_name)
@@ -860,7 +860,7 @@ class easy_install(Command):
860
860
  raw_bytes = resource_string('setuptools', name)
861
861
  return raw_bytes.decode('utf-8')
862
862
 
863
- def write_script(self, script_name, contents, mode="t", blockers=()):
863
+ def write_script(self, script_name, contents, mode: str = "t", blockers=()) -> None:
864
864
  """Write an executable file to the scripts directory"""
865
865
  self.delete_blockers( # clean up old .py/.pyw w/o a script
866
866
  [os.path.join(self.script_dir, x) for x in blockers]
@@ -882,7 +882,7 @@ class easy_install(Command):
882
882
  f.write(contents)
883
883
  chmod(target, 0o777 - mask)
884
884
 
885
- def install_eggs(self, spec, dist_filename, tmpdir):
885
+ def install_eggs(self, spec, dist_filename, tmpdir) -> list[Distribution]:
886
886
  # .egg dirs or files are already built, so just return them
887
887
  installer_map = {
888
888
  '.egg': self.install_egg,
@@ -1043,7 +1043,7 @@ class easy_install(Command):
1043
1043
  return self.install_egg(egg_path, tmpdir)
1044
1044
 
1045
1045
  # FIXME: 'easy_install.exe_to_egg' is too complex (12)
1046
- def exe_to_egg(self, dist_filename, egg_tmp): # noqa: C901
1046
+ def exe_to_egg(self, dist_filename, egg_tmp) -> None: # noqa: C901
1047
1047
  """Extract a bdist_wininst to the directories an egg would use"""
1048
1048
  # Check for .pth file and set up prefix translations
1049
1049
  prefixes = get_exe_prefixes(dist_filename)
@@ -1143,7 +1143,7 @@ class easy_install(Command):
1143
1143
  """
1144
1144
  )
1145
1145
 
1146
- def installation_report(self, req, dist, what="Installed"):
1146
+ def installation_report(self, req, dist, what: str = "Installed") -> str:
1147
1147
  """Helpful installation message for display to package users"""
1148
1148
  msg = "\n%(what)s %(eggloc)s%(extras)s"
1149
1149
  if self.multi_version and not self.no_report:
@@ -1175,7 +1175,7 @@ class easy_install(Command):
1175
1175
  python = sys.executable
1176
1176
  return '\n' + self.__editable_msg % locals()
1177
1177
 
1178
- def run_setup(self, setup_script, setup_base, args):
1178
+ def run_setup(self, setup_script, setup_base, args) -> None:
1179
1179
  sys.modules.setdefault('distutils.command.bdist_egg', bdist_egg)
1180
1180
  sys.modules.setdefault('distutils.command.egg_info', egg_info)
1181
1181
 
@@ -1244,7 +1244,7 @@ class easy_install(Command):
1244
1244
  cfg_filename = os.path.join(base, 'setup.cfg')
1245
1245
  setopt.edit_config(cfg_filename, settings)
1246
1246
 
1247
- def update_pth(self, dist): # noqa: C901 # is too complex (11) # FIXME
1247
+ def update_pth(self, dist) -> None: # noqa: C901 # is too complex (11) # FIXME
1248
1248
  if self.pth_file is None:
1249
1249
  return
1250
1250
 
@@ -1293,7 +1293,7 @@ class easy_install(Command):
1293
1293
  log.debug("Unpacking %s to %s", src, dst)
1294
1294
  return dst # only unpack-and-compile skips files for dry run
1295
1295
 
1296
- def unpack_and_compile(self, egg_path, destination):
1296
+ def unpack_and_compile(self, egg_path, destination) -> None:
1297
1297
  to_compile = []
1298
1298
  to_chmod = []
1299
1299
 
@@ -1312,7 +1312,7 @@ class easy_install(Command):
1312
1312
  mode = ((os.stat(f)[stat.ST_MODE]) | 0o555) & 0o7755
1313
1313
  chmod(f, mode)
1314
1314
 
1315
- def byte_compile(self, to_compile):
1315
+ def byte_compile(self, to_compile) -> None:
1316
1316
  if sys.dont_write_bytecode:
1317
1317
  return
1318
1318
 
@@ -1367,7 +1367,7 @@ class easy_install(Command):
1367
1367
  """
1368
1368
  ).strip()
1369
1369
 
1370
- def create_home_path(self):
1370
+ def create_home_path(self) -> None:
1371
1371
  """Create directories under ~."""
1372
1372
  if not self.user:
1373
1373
  return
@@ -1441,7 +1441,7 @@ def get_site_dirs():
1441
1441
  os.path.join(
1442
1442
  prefix,
1443
1443
  "lib",
1444
- "python{}.{}".format(*sys.version_info),
1444
+ f"python{sys.version_info.major}.{sys.version_info.minor}",
1445
1445
  "site-packages",
1446
1446
  ),
1447
1447
  os.path.join(prefix, "lib", "site-python"),
@@ -1468,7 +1468,7 @@ def get_site_dirs():
1468
1468
  home,
1469
1469
  'Library',
1470
1470
  'Python',
1471
- '{}.{}'.format(*sys.version_info),
1471
+ f'{sys.version_info.major}.{sys.version_info.minor}',
1472
1472
  'site-packages',
1473
1473
  )
1474
1474
  sitedirs.append(home_sp)
@@ -1546,7 +1546,7 @@ def extract_wininst_cfg(dist_filename):
1546
1546
  return None
1547
1547
  f.seek(prepended - 12)
1548
1548
 
1549
- tag, cfglen, bmlen = struct.unpack("<iii", f.read(12))
1549
+ tag, cfglen, _bmlen = struct.unpack("<iii", f.read(12))
1550
1550
  if tag not in (0x1234567A, 0x1234567B):
1551
1551
  return None # not a valid tag
1552
1552
 
@@ -1611,7 +1611,7 @@ def get_exe_prefixes(exe_filename):
1611
1611
  class PthDistributions(Environment):
1612
1612
  """A .pth file with Distribution paths in it"""
1613
1613
 
1614
- def __init__(self, filename, sitedirs=()):
1614
+ def __init__(self, filename, sitedirs=()) -> None:
1615
1615
  self.filename = filename
1616
1616
  self.sitedirs = list(map(normalize_path, sitedirs))
1617
1617
  self.basedir = normalize_path(os.path.dirname(self.filename))
@@ -1657,7 +1657,7 @@ class PthDistributions(Environment):
1657
1657
  return self._load_raw()
1658
1658
  return [], False
1659
1659
 
1660
- def save(self):
1660
+ def save(self) -> None:
1661
1661
  """Write changed .pth file back to disk"""
1662
1662
  # first reload the file
1663
1663
  last_paths, last_dirty = self._load()
@@ -1711,7 +1711,7 @@ class PthDistributions(Environment):
1711
1711
  def _wrap_lines(lines):
1712
1712
  return lines
1713
1713
 
1714
- def add(self, dist):
1714
+ def add(self, dist) -> None:
1715
1715
  """Add `dist` to the distribution map"""
1716
1716
  new_path = dist.location not in self.paths and (
1717
1717
  dist.location not in self.sitedirs
@@ -1724,7 +1724,7 @@ class PthDistributions(Environment):
1724
1724
  self.dirty = True
1725
1725
  super().add(dist)
1726
1726
 
1727
- def remove(self, dist):
1727
+ def remove(self, dist) -> None:
1728
1728
  """Remove `dist` from the distribution map"""
1729
1729
  while dist.location in self.paths:
1730
1730
  self.paths.remove(dist.location)
@@ -1788,16 +1788,6 @@ def _first_line_re():
1788
1788
  return re.compile(first_line_re.pattern.decode())
1789
1789
 
1790
1790
 
1791
- # Must match shutil._OnExcCallback
1792
- def auto_chmod(func: Callable[..., _T], arg: str, exc: BaseException) -> _T:
1793
- """shutils onexc callback to automatically call chmod for certain functions."""
1794
- # Only retry for scenarios known to have an issue
1795
- if func in [os.unlink, os.remove] and os.name == 'nt':
1796
- chmod(arg, stat.S_IWRITE)
1797
- return func(arg)
1798
- raise exc
1799
-
1800
-
1801
1791
  def update_dist_caches(dist_path, fix_zipimporter_caches):
1802
1792
  """
1803
1793
  Fix any globally cached `dist_path` related data
@@ -2020,22 +2010,9 @@ def is_python_script(script_text, filename):
2020
2010
  return False # Not any Python I can recognize
2021
2011
 
2022
2012
 
2023
- try:
2024
- from os import (
2025
- chmod as _chmod, # pyright: ignore[reportAssignmentType] # Losing type-safety w/ pyright, but that's ok
2026
- )
2027
- except ImportError:
2028
- # Jython compatibility
2029
- def _chmod(*args: object, **kwargs: object) -> None: # type: ignore[misc] # Mypy reuses the imported definition anyway
2030
- pass
2031
-
2032
-
2033
- def chmod(path, mode):
2034
- log.debug("changing mode of %s to %o", path, mode)
2035
- try:
2036
- _chmod(path, mode)
2037
- except OSError as e:
2038
- log.debug("chmod failed: %s", e)
2013
+ class _SplitArgs(TypedDict, total=False):
2014
+ comments: bool
2015
+ posix: bool
2039
2016
 
2040
2017
 
2041
2018
  class CommandSpec(list):
@@ -2045,7 +2022,7 @@ class CommandSpec(list):
2045
2022
  """
2046
2023
 
2047
2024
  options: list[str] = []
2048
- split_args: dict[str, bool] = dict()
2025
+ split_args = _SplitArgs()
2049
2026
 
2050
2027
  @classmethod
2051
2028
  def best(cls):
@@ -2080,7 +2057,7 @@ class CommandSpec(list):
2080
2057
  return cls([cls._sys_executable()])
2081
2058
 
2082
2059
  @classmethod
2083
- def from_string(cls, string):
2060
+ def from_string(cls, string: str) -> Self:
2084
2061
  """
2085
2062
  Construct a command spec from a simple string representing a command
2086
2063
  line parseable by shlex.split.
@@ -2088,7 +2065,7 @@ class CommandSpec(list):
2088
2065
  items = shlex.split(string, **cls.split_args)
2089
2066
  return cls(items)
2090
2067
 
2091
- def install_options(self, script_text):
2068
+ def install_options(self, script_text: str):
2092
2069
  self.options = shlex.split(self._extract_options(script_text))
2093
2070
  cmdline = subprocess.list2cmdline(self)
2094
2071
  if not isascii(cmdline):
@@ -2128,7 +2105,7 @@ sys_executable = CommandSpec._sys_executable()
2128
2105
 
2129
2106
 
2130
2107
  class WindowsCommandSpec(CommandSpec):
2131
- split_args = dict(posix=False)
2108
+ split_args = _SplitArgs(posix=False)
2132
2109
 
2133
2110
 
2134
2111
  class ScriptWriter:
@@ -2187,7 +2164,7 @@ class ScriptWriter:
2187
2164
  spec = str(dist.as_requirement())
2188
2165
  for type_ in 'console', 'gui':
2189
2166
  group = type_ + '_scripts'
2190
- for name, ep in dist.get_entry_map(group).items():
2167
+ for name in dist.get_entry_map(group).keys():
2191
2168
  cls._ensure_safe_name(name)
2192
2169
  script_text = cls.template % locals()
2193
2170
  args = cls._get_script_args(type_, name, header, script_text)
@@ -2218,7 +2195,11 @@ class ScriptWriter:
2218
2195
  yield (name, header + script_text)
2219
2196
 
2220
2197
  @classmethod
2221
- def get_header(cls, script_text="", executable=None):
2198
+ def get_header(
2199
+ cls,
2200
+ script_text: str = "",
2201
+ executable: str | CommandSpec | Iterable[str] | None = None,
2202
+ ) -> str:
2222
2203
  """Create a #! line, getting options (if any) from script_text"""
2223
2204
  cmd = cls.command_spec_class.best().from_param(executable)
2224
2205
  cmd.install_options(script_text)
@@ -2340,10 +2321,6 @@ def load_launcher_manifest(name):
2340
2321
  return manifest.decode('utf-8') % vars()
2341
2322
 
2342
2323
 
2343
- def _rmtree(path, ignore_errors=False, onexc=auto_chmod):
2344
- return py311.shutil_rmtree(path, ignore_errors, onexc)
2345
-
2346
-
2347
2324
  def current_umask():
2348
2325
  tmp = os.umask(0o022)
2349
2326
  os.umask(tmp)
@@ -17,6 +17,7 @@ import logging
17
17
  import os
18
18
  import shutil
19
19
  import traceback
20
+ from collections.abc import Iterable, Iterator, Mapping
20
21
  from contextlib import suppress
21
22
  from enum import Enum
22
23
  from inspect import cleandoc
@@ -24,9 +25,9 @@ from itertools import chain, starmap
24
25
  from pathlib import Path
25
26
  from tempfile import TemporaryDirectory
26
27
  from types import TracebackType
27
- from typing import TYPE_CHECKING, Iterable, Iterator, Mapping, Protocol, TypeVar, cast
28
+ from typing import TYPE_CHECKING, Protocol, TypeVar, cast
28
29
 
29
- from .. import Command, _normalization, _path, errors, namespaces
30
+ from .. import Command, _normalization, _path, _shutil, errors, namespaces
30
31
  from .._path import StrPath
31
32
  from ..compat import py312
32
33
  from ..discovery import find_package_path
@@ -119,13 +120,13 @@ class editable_wheel(Command):
119
120
  self.project_dir = None
120
121
  self.mode = None
121
122
 
122
- def finalize_options(self):
123
+ def finalize_options(self) -> None:
123
124
  dist = self.distribution
124
125
  self.project_dir = dist.src_root or os.curdir
125
126
  self.package_dir = dist.package_dir or {}
126
127
  self.dist_dir = Path(self.dist_dir or os.path.join(self.project_dir, "dist"))
127
128
 
128
- def run(self):
129
+ def run(self) -> None:
129
130
  try:
130
131
  self.dist_dir.mkdir(exist_ok=True)
131
132
  self._ensure_dist_info()
@@ -138,7 +139,6 @@ class editable_wheel(Command):
138
139
  self._create_wheel_file(bdist_wheel)
139
140
  except Exception:
140
141
  traceback.print_exc()
141
- # TODO: Fix false-positive [attr-defined] in typeshed
142
142
  project = self.distribution.name or self.distribution.get_name()
143
143
  _DebuggingTips.emit(project=project)
144
144
  raise
@@ -231,7 +231,6 @@ class editable_wheel(Command):
231
231
  """Set the ``editable_mode`` flag in the build sub-commands"""
232
232
  dist = self.distribution
233
233
  build = dist.get_command_obj("build")
234
- # TODO: Update typeshed distutils stubs to overload non-None return type by default
235
234
  for cmd_name in build.get_sub_commands():
236
235
  cmd = dist.get_command_obj(cmd_name)
237
236
  if hasattr(cmd, "editable_mode"):
@@ -380,26 +379,25 @@ class editable_wheel(Command):
380
379
 
381
380
 
382
381
  class EditableStrategy(Protocol):
383
- def __call__(self, wheel: WheelFile, files: list[str], mapping: dict[str, str]): ...
384
-
382
+ def __call__(
383
+ self, wheel: WheelFile, files: list[str], mapping: Mapping[str, str]
384
+ ) -> object: ...
385
385
  def __enter__(self) -> Self: ...
386
-
387
386
  def __exit__(
388
387
  self,
389
- exc_type: type[BaseException] | None,
390
- exc_value: BaseException | None,
391
- traceback: TracebackType | None,
392
- /,
388
+ _exc_type: type[BaseException] | None,
389
+ _exc_value: BaseException | None,
390
+ _traceback: TracebackType | None,
393
391
  ) -> object: ...
394
392
 
395
393
 
396
394
  class _StaticPth:
397
- def __init__(self, dist: Distribution, name: str, path_entries: list[Path]):
395
+ def __init__(self, dist: Distribution, name: str, path_entries: list[Path]) -> None:
398
396
  self.dist = dist
399
397
  self.name = name
400
398
  self.path_entries = path_entries
401
399
 
402
- def __call__(self, wheel: WheelFile, files: list[str], mapping: dict[str, str]):
400
+ def __call__(self, wheel: WheelFile, files: list[str], mapping: Mapping[str, str]):
403
401
  entries = "\n".join(str(p.resolve()) for p in self.path_entries)
404
402
  contents = _encode_pth(f"{entries}\n")
405
403
  wheel.writestr(f"__editable__.{self.name}.pth", contents)
@@ -438,13 +436,13 @@ class _LinkTree(_StaticPth):
438
436
  name: str,
439
437
  auxiliary_dir: StrPath,
440
438
  build_lib: StrPath,
441
- ):
439
+ ) -> None:
442
440
  self.auxiliary_dir = Path(auxiliary_dir)
443
441
  self.build_lib = Path(build_lib).resolve()
444
442
  self._file = dist.get_command_obj("build_py").copy_file
445
443
  super().__init__(dist, name, [self.auxiliary_dir])
446
444
 
447
- def __call__(self, wheel: WheelFile, files: list[str], mapping: dict[str, str]):
445
+ def __call__(self, wheel: WheelFile, files: list[str], mapping: Mapping[str, str]):
448
446
  self._create_links(files, mapping)
449
447
  super().__call__(wheel, files, mapping)
450
448
 
@@ -461,7 +459,7 @@ class _LinkTree(_StaticPth):
461
459
  dest.parent.mkdir(parents=True)
462
460
  self._file(src_file, dest, link=link)
463
461
 
464
- def _create_links(self, outputs, output_mapping):
462
+ def _create_links(self, outputs, output_mapping: Mapping[str, str]):
465
463
  self.auxiliary_dir.mkdir(parents=True, exist_ok=True)
466
464
  link_type = "sym" if _can_symlink_files(self.auxiliary_dir) else "hard"
467
465
  normalised = ((self._normalize_output(k), v) for k, v in output_mapping.items())
@@ -498,7 +496,7 @@ class _LinkTree(_StaticPth):
498
496
 
499
497
 
500
498
  class _TopLevelFinder:
501
- def __init__(self, dist: Distribution, name: str):
499
+ def __init__(self, dist: Distribution, name: str) -> None:
502
500
  self.dist = dist
503
501
  self.name = name
504
502
 
@@ -538,7 +536,7 @@ class _TopLevelFinder:
538
536
  content = _encode_pth(f"import {finder}; {finder}.install()")
539
537
  yield (f"__editable__.{self.name}.pth", content)
540
538
 
541
- def __call__(self, wheel: WheelFile, files: list[str], mapping: dict[str, str]):
539
+ def __call__(self, wheel: WheelFile, files: list[str], mapping: Mapping[str, str]):
542
540
  for file, content in self.get_implementation():
543
541
  wheel.writestr(file, content)
544
542
 
@@ -775,18 +773,18 @@ def _is_nested(pkg: str, pkg_path: str, parent: str, parent_path: str) -> bool:
775
773
 
776
774
  def _empty_dir(dir_: _P) -> _P:
777
775
  """Create a directory ensured to be empty. Existing files may be removed."""
778
- shutil.rmtree(dir_, ignore_errors=True)
776
+ _shutil.rmtree(dir_, ignore_errors=True)
779
777
  os.makedirs(dir_)
780
778
  return dir_
781
779
 
782
780
 
783
781
  class _NamespaceInstaller(namespaces.Installer):
784
- def __init__(self, distribution, installation_dir, editable_name, src_root):
782
+ def __init__(self, distribution, installation_dir, editable_name, src_root) -> None:
785
783
  self.distribution = distribution
786
784
  self.src_root = src_root
787
785
  self.installation_dir = installation_dir
788
786
  self.editable_name = editable_name
789
- self.outputs = []
787
+ self.outputs: list[str] = []
790
788
  self.dry_run = False
791
789
 
792
790
  def _get_nspkg_file(self):