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
@@ -13,12 +13,15 @@ import json
13
13
  import os
14
14
  import os.path
15
15
  import platform
16
- from typing import TYPE_CHECKING
16
+ from typing import TYPE_CHECKING, TypedDict
17
17
 
18
18
  from more_itertools import unique_everseen
19
19
 
20
20
  import distutils.errors
21
21
 
22
+ if TYPE_CHECKING:
23
+ from typing_extensions import LiteralString, NotRequired
24
+
22
25
  # https://github.com/python/mypy/issues/8166
23
26
  if not TYPE_CHECKING and platform.system() == 'Windows':
24
27
  import winreg
@@ -47,7 +50,7 @@ class PlatformInfo:
47
50
 
48
51
  current_cpu = environ.get('processor_architecture', '').lower()
49
52
 
50
- def __init__(self, arch):
53
+ def __init__(self, arch) -> None:
51
54
  self.arch = arch.lower().replace('x64', 'amd64')
52
55
 
53
56
  @property
@@ -84,7 +87,7 @@ class PlatformInfo:
84
87
  """
85
88
  return self.current_cpu == 'x86'
86
89
 
87
- def current_dir(self, hidex86=False, x64=False):
90
+ def current_dir(self, hidex86=False, x64=False) -> str:
88
91
  """
89
92
  Current platform specific subfolder.
90
93
 
@@ -108,7 +111,7 @@ class PlatformInfo:
108
111
  else r'\%s' % self.current_cpu
109
112
  )
110
113
 
111
- def target_dir(self, hidex86=False, x64=False):
114
+ def target_dir(self, hidex86=False, x64=False) -> str:
112
115
  r"""
113
116
  Target platform specific subfolder.
114
117
 
@@ -173,11 +176,11 @@ class RegistryInfo:
173
176
  winreg.HKEY_CLASSES_ROOT,
174
177
  )
175
178
 
176
- def __init__(self, platform_info):
179
+ def __init__(self, platform_info) -> None:
177
180
  self.pi = platform_info
178
181
 
179
182
  @property
180
- def visualstudio(self):
183
+ def visualstudio(self) -> str:
181
184
  """
182
185
  Microsoft Visual Studio root registry key.
183
186
 
@@ -225,7 +228,7 @@ class RegistryInfo:
225
228
  return os.path.join(self.sxs, 'VS7')
226
229
 
227
230
  @property
228
- def vc_for_python(self):
231
+ def vc_for_python(self) -> str:
229
232
  """
230
233
  Microsoft Visual C++ for Python registry key.
231
234
 
@@ -237,7 +240,7 @@ class RegistryInfo:
237
240
  return r'DevDiv\VCForPython'
238
241
 
239
242
  @property
240
- def microsoft_sdk(self):
243
+ def microsoft_sdk(self) -> str:
241
244
  """
242
245
  Microsoft SDK registry key.
243
246
 
@@ -273,7 +276,7 @@ class RegistryInfo:
273
276
  return os.path.join(self.microsoft_sdk, 'NETFXSDK')
274
277
 
275
278
  @property
276
- def windows_kits_roots(self):
279
+ def windows_kits_roots(self) -> str:
277
280
  """
278
281
  Microsoft Windows Kits Roots registry key.
279
282
 
@@ -363,7 +366,7 @@ class SystemInfo:
363
366
  ProgramFiles = environ.get('ProgramFiles', '')
364
367
  ProgramFilesx86 = environ.get('ProgramFiles(x86)', ProgramFiles)
365
368
 
366
- def __init__(self, registry_info, vc_ver=None):
369
+ def __init__(self, registry_info, vc_ver=None) -> None:
367
370
  self.ri = registry_info
368
371
  self.pi = self.ri.pi
369
372
 
@@ -423,7 +426,7 @@ class SystemInfo:
423
426
  vs_vers.append(ver)
424
427
  return sorted(vs_vers)
425
428
 
426
- def find_programdata_vs_vers(self):
429
+ def find_programdata_vs_vers(self) -> dict[float, str]:
427
430
  r"""
428
431
  Find Visual studio 2017+ versions from information in
429
432
  "C:\ProgramData\Microsoft\VisualStudio\Packages\_Instances".
@@ -433,7 +436,7 @@ class SystemInfo:
433
436
  dict
434
437
  float version as key, path as value.
435
438
  """
436
- vs_versions = {}
439
+ vs_versions: dict[float, str] = {}
437
440
  instances_dir = r'C:\ProgramData\Microsoft\VisualStudio\Packages\_Instances'
438
441
 
439
442
  try:
@@ -570,7 +573,7 @@ class SystemInfo:
570
573
  return self.ri.lookup(self.ri.vc, '%0.1f' % self.vs_ver) or default_vc
571
574
 
572
575
  @property
573
- def WindowsSdkVersion(self):
576
+ def WindowsSdkVersion(self) -> tuple[LiteralString, ...]:
574
577
  """
575
578
  Microsoft Windows SDK versions for specified MSVC++ version.
576
579
 
@@ -589,7 +592,7 @@ class SystemInfo:
589
592
  return '8.1', '8.1a'
590
593
  elif self.vs_ver >= 14.0:
591
594
  return '10.0', '8.1'
592
- return None
595
+ return ()
593
596
 
594
597
  @property
595
598
  def WindowsSdkLastVersion(self):
@@ -604,7 +607,7 @@ class SystemInfo:
604
607
  return self._use_last_dir_name(os.path.join(self.WindowsSdkDir, 'lib'))
605
608
 
606
609
  @property
607
- def WindowsSdkDir(self): # noqa: C901 # is too complex (12) # FIXME
610
+ def WindowsSdkDir(self) -> str | None: # noqa: C901 # is too complex (12) # FIXME
608
611
  """
609
612
  Microsoft Windows SDK directory.
610
613
 
@@ -613,7 +616,7 @@ class SystemInfo:
613
616
  str
614
617
  path
615
618
  """
616
- sdkdir = ''
619
+ sdkdir: str | None = ''
617
620
  for ver in self.WindowsSdkVersion:
618
621
  # Try to get it from registry
619
622
  loc = os.path.join(self.ri.windows_sdk, 'v%s' % ver)
@@ -797,7 +800,7 @@ class SystemInfo:
797
800
  return self.ri.lookup(self.ri.vc, 'frameworkdir64') or guess_fw
798
801
 
799
802
  @property
800
- def FrameworkVersion32(self):
803
+ def FrameworkVersion32(self) -> tuple[str, ...]:
801
804
  """
802
805
  Microsoft .NET Framework 32bit versions.
803
806
 
@@ -809,7 +812,7 @@ class SystemInfo:
809
812
  return self._find_dot_net_versions(32)
810
813
 
811
814
  @property
812
- def FrameworkVersion64(self):
815
+ def FrameworkVersion64(self) -> tuple[str, ...]:
813
816
  """
814
817
  Microsoft .NET Framework 64bit versions.
815
818
 
@@ -820,7 +823,7 @@ class SystemInfo:
820
823
  """
821
824
  return self._find_dot_net_versions(64)
822
825
 
823
- def _find_dot_net_versions(self, bits):
826
+ def _find_dot_net_versions(self, bits) -> tuple[str, ...]:
824
827
  """
825
828
  Find Microsoft .NET Framework versions.
826
829
 
@@ -848,7 +851,7 @@ class SystemInfo:
848
851
  return 'v3.5', 'v2.0.50727'
849
852
  elif self.vs_ver == 8.0:
850
853
  return 'v3.0', 'v2.0.50727'
851
- return None
854
+ return ()
852
855
 
853
856
  @staticmethod
854
857
  def _use_last_dir_name(path, prefix=''):
@@ -876,6 +879,14 @@ class SystemInfo:
876
879
  return next(matching_dirs, None) or ''
877
880
 
878
881
 
882
+ class _EnvironmentDict(TypedDict):
883
+ include: str
884
+ lib: str
885
+ libpath: str
886
+ path: str
887
+ py_vcruntime_redist: NotRequired[str | None]
888
+
889
+
879
890
  class EnvironmentInfo:
880
891
  """
881
892
  Return environment variables for specified Microsoft Visual C++ version
@@ -900,7 +911,7 @@ class EnvironmentInfo:
900
911
  # Variables and properties in this class use originals CamelCase variables
901
912
  # names from Microsoft source files for more easy comparison.
902
913
 
903
- def __init__(self, arch, vc_ver=None, vc_min_ver=0):
914
+ def __init__(self, arch, vc_ver=None, vc_min_ver=0) -> None:
904
915
  self.pi = PlatformInfo(arch)
905
916
  self.ri = RegistryInfo(self.pi)
906
917
  self.si = SystemInfo(self.ri, vc_ver)
@@ -1418,9 +1429,9 @@ class EnvironmentInfo:
1418
1429
  os.path.join(prefix, arch_subdir, crt_dir, vcruntime)
1419
1430
  for (prefix, crt_dir) in itertools.product(prefixes, crt_dirs)
1420
1431
  )
1421
- return next(filter(os.path.isfile, candidate_paths), None)
1432
+ return next(filter(os.path.isfile, candidate_paths), None) # type: ignore[arg-type] #python/mypy#12682
1422
1433
 
1423
- def return_env(self, exists=True):
1434
+ def return_env(self, exists: bool = True) -> _EnvironmentDict:
1424
1435
  """
1425
1436
  Return environment dict.
1426
1437
 
@@ -1434,7 +1445,7 @@ class EnvironmentInfo:
1434
1445
  dict
1435
1446
  environment
1436
1447
  """
1437
- env = dict(
1448
+ env = _EnvironmentDict(
1438
1449
  include=self._build_paths(
1439
1450
  'include',
1440
1451
  [
@@ -11,7 +11,7 @@ flatten = itertools.chain.from_iterable
11
11
  class Installer:
12
12
  nspkg_ext = '-nspkg.pth'
13
13
 
14
- def install_namespaces(self):
14
+ def install_namespaces(self) -> None:
15
15
  nsp = self._get_all_ns_packages()
16
16
  if not nsp:
17
17
  return
@@ -30,7 +30,7 @@ class Installer:
30
30
  # See: python/cpython#77102
31
31
  f.writelines(lines)
32
32
 
33
- def uninstall_namespaces(self):
33
+ def uninstall_namespaces(self) -> None:
34
34
  filename = self._get_nspkg_file()
35
35
  if not os.path.exists(filename):
36
36
  return
@@ -1,5 +1,7 @@
1
1
  """PyPI and direct package downloading."""
2
2
 
3
+ from __future__ import annotations
4
+
3
5
  import base64
4
6
  import configparser
5
7
  import hashlib
@@ -64,10 +66,7 @@ __all__ = [
64
66
 
65
67
  _SOCKET_TIMEOUT = 15
66
68
 
67
- _tmpl = "setuptools/{setuptools.__version__} Python-urllib/{py_major}"
68
- user_agent = _tmpl.format(
69
- py_major='{}.{}'.format(*sys.version_info), setuptools=setuptools
70
- )
69
+ user_agent = f"setuptools/{setuptools.__version__} Python-urllib/{sys.version_info.major}.{sys.version_info.minor}"
71
70
 
72
71
 
73
72
  def parse_requirement_arg(spec):
@@ -105,7 +104,7 @@ def parse_bdist_wininst(name):
105
104
 
106
105
  def egg_info_for_url(url):
107
106
  parts = urllib.parse.urlparse(url)
108
- scheme, server, path, parameters, query, fragment = parts
107
+ _scheme, server, path, _parameters, _query, fragment = parts
109
108
  base = urllib.parse.unquote(path.split('/')[-1])
110
109
  if server == 'sourceforge.net' and base == 'download': # XXX Yuck
111
110
  base = urllib.parse.unquote(path.split('/')[-2])
@@ -271,7 +270,7 @@ class HashChecker(ContentChecker):
271
270
  r'(?P<expected>[a-f0-9]+)'
272
271
  )
273
272
 
274
- def __init__(self, hash_name, expected):
273
+ def __init__(self, hash_name, expected) -> None:
275
274
  self.hash_name = hash_name
276
275
  self.hash = hashlib.new(hash_name)
277
276
  self.expected = expected
@@ -303,20 +302,20 @@ class PackageIndex(Environment):
303
302
 
304
303
  def __init__(
305
304
  self,
306
- index_url="https://pypi.org/simple/",
305
+ index_url: str = "https://pypi.org/simple/",
307
306
  hosts=('*',),
308
307
  ca_bundle=None,
309
- verify_ssl=True,
308
+ verify_ssl: bool = True,
310
309
  *args,
311
310
  **kw,
312
- ):
311
+ ) -> None:
313
312
  super().__init__(*args, **kw)
314
313
  self.index_url = index_url + "/"[: not index_url.endswith('/')]
315
- self.scanned_urls = {}
316
- self.fetched_urls = {}
317
- self.package_pages = {}
314
+ self.scanned_urls: dict = {}
315
+ self.fetched_urls: dict = {}
316
+ self.package_pages: dict = {}
318
317
  self.allows = re.compile('|'.join(map(translate, hosts))).match
319
- self.to_scan = []
318
+ self.to_scan: list = []
320
319
  self.opener = urllib.request.urlopen
321
320
 
322
321
  def add(self, dist):
@@ -328,7 +327,7 @@ class PackageIndex(Environment):
328
327
  return super().add(dist)
329
328
 
330
329
  # FIXME: 'PackageIndex.process_url' is too complex (14)
331
- def process_url(self, url, retrieve=False): # noqa: C901
330
+ def process_url(self, url, retrieve: bool = False) -> None: # noqa: C901
332
331
  """Evaluate a URL as a possible download, and maybe retrieve it"""
333
332
  if url in self.scanned_urls and not retrieve:
334
333
  return
@@ -381,7 +380,7 @@ class PackageIndex(Environment):
381
380
  if url.startswith(self.index_url) and getattr(f, 'code', None) != 404:
382
381
  page = self.process_index(url, page)
383
382
 
384
- def process_filename(self, fn, nested=False):
383
+ def process_filename(self, fn, nested: bool = False) -> None:
385
384
  # process filenames or directories
386
385
  if not os.path.exists(fn):
387
386
  self.warn("Not found: %s", fn)
@@ -397,7 +396,7 @@ class PackageIndex(Environment):
397
396
  self.debug("Found: %s", fn)
398
397
  list(map(self.add, dists))
399
398
 
400
- def url_ok(self, url, fatal=False):
399
+ def url_ok(self, url, fatal: bool = False) -> bool:
401
400
  s = URL_SCHEME(url)
402
401
  is_file = s and s.group(1).lower() == 'file'
403
402
  if is_file or self.allows(urllib.parse.urlparse(url)[1]):
@@ -413,7 +412,7 @@ class PackageIndex(Environment):
413
412
  self.warn(msg, url)
414
413
  return False
415
414
 
416
- def scan_egg_links(self, search_path):
415
+ def scan_egg_links(self, search_path) -> None:
417
416
  dirs = filter(os.path.isdir, search_path)
418
417
  egg_links = (
419
418
  (path, entry)
@@ -423,7 +422,7 @@ class PackageIndex(Environment):
423
422
  )
424
423
  list(itertools.starmap(self.scan_egg_link, egg_links))
425
424
 
426
- def scan_egg_link(self, path, entry):
425
+ def scan_egg_link(self, path, entry) -> None:
427
426
  content = _read_utf8_with_fallback(os.path.join(path, entry))
428
427
  # filter non-empty lines
429
428
  lines = list(filter(None, map(str.strip, content.splitlines())))
@@ -432,7 +431,7 @@ class PackageIndex(Environment):
432
431
  # format is not recognized; punt
433
432
  return
434
433
 
435
- egg_path, setup_path = lines
434
+ egg_path, _setup_path = lines
436
435
 
437
436
  for dist in find_distributions(os.path.join(path, egg_path)):
438
437
  dist.location = os.path.join(path, *lines)
@@ -484,21 +483,21 @@ class PackageIndex(Environment):
484
483
  lambda m: '<a href="%s#md5=%s">%s</a>' % m.group(1, 3, 2), page
485
484
  )
486
485
 
487
- def need_version_info(self, url):
486
+ def need_version_info(self, url) -> None:
488
487
  self.scan_all(
489
488
  "Page at %s links to .py file(s) without version info; an index "
490
489
  "scan is required.",
491
490
  url,
492
491
  )
493
492
 
494
- def scan_all(self, msg=None, *args):
493
+ def scan_all(self, msg=None, *args) -> None:
495
494
  if self.index_url not in self.fetched_urls:
496
495
  if msg:
497
496
  self.warn(msg, *args)
498
497
  self.info("Scanning index of all packages (this may take a while)")
499
498
  self.scan_url(self.index_url)
500
499
 
501
- def find_packages(self, requirement):
500
+ def find_packages(self, requirement) -> None:
502
501
  self.scan_url(self.index_url + requirement.unsafe_name + '/')
503
502
 
504
503
  if not self.package_pages.get(requirement.key):
@@ -522,7 +521,7 @@ class PackageIndex(Environment):
522
521
  self.debug("%s does not match %s", requirement, dist)
523
522
  return super().obtain(requirement, installer)
524
523
 
525
- def check_hash(self, checker, filename, tfp):
524
+ def check_hash(self, checker, filename, tfp) -> None:
526
525
  """
527
526
  checker is a ContentChecker
528
527
  """
@@ -536,7 +535,7 @@ class PackageIndex(Environment):
536
535
  % (checker.hash.name, os.path.basename(filename))
537
536
  )
538
537
 
539
- def add_find_links(self, urls):
538
+ def add_find_links(self, urls) -> None:
540
539
  """Add `urls` to the list that will be prescanned for searches"""
541
540
  for url in urls:
542
541
  if (
@@ -557,14 +556,11 @@ class PackageIndex(Environment):
557
556
  list(map(self.scan_url, self.to_scan))
558
557
  self.to_scan = None # from now on, go ahead and process immediately
559
558
 
560
- def not_found_in_index(self, requirement):
559
+ def not_found_in_index(self, requirement) -> None:
561
560
  if self[requirement.key]: # we've seen at least one distro
562
561
  meth, msg = self.info, "Couldn't retrieve index page for %r"
563
562
  else: # no distros seen for this name, might be misspelled
564
- meth, msg = (
565
- self.warn,
566
- "Couldn't find index page for %r (maybe misspelled?)",
567
- )
563
+ meth, msg = self.warn, "Couldn't find index page for %r (maybe misspelled?)"
568
564
  meth(msg, requirement.unsafe_name)
569
565
  self.scan_all()
570
566
 
@@ -606,11 +602,11 @@ class PackageIndex(Environment):
606
602
  self,
607
603
  requirement,
608
604
  tmpdir,
609
- force_scan=False,
610
- source=False,
611
- develop_ok=False,
605
+ force_scan: bool = False,
606
+ source: bool = False,
607
+ develop_ok: bool = False,
612
608
  local_index=None,
613
- ):
609
+ ) -> Distribution | None:
614
610
  """Obtain a distribution suitable for fulfilling `requirement`
615
611
 
616
612
  `requirement` must be a ``pkg_resources.Requirement`` instance.
@@ -632,7 +628,7 @@ class PackageIndex(Environment):
632
628
  skipped = set()
633
629
  dist = None
634
630
 
635
- def find(req, env=None):
631
+ def find(req, env: Environment | None = None):
636
632
  if env is None:
637
633
  env = self
638
634
  # Find a matching distribution; may be called more than once
@@ -684,7 +680,9 @@ class PackageIndex(Environment):
684
680
  self.info("Best match: %s", dist)
685
681
  return dist.clone(location=dist.download_location)
686
682
 
687
- def fetch(self, requirement, tmpdir, force_scan=False, source=False):
683
+ def fetch(
684
+ self, requirement, tmpdir, force_scan: bool = False, source: bool = False
685
+ ) -> str | None:
688
686
  """Obtain a file suitable for fulfilling `requirement`
689
687
 
690
688
  DEPRECATED; use the ``fetch_distribution()`` method now instead. For
@@ -781,7 +779,7 @@ class PackageIndex(Environment):
781
779
  if fp:
782
780
  fp.close()
783
781
 
784
- def reporthook(self, url, filename, blocknum, blksize, size):
782
+ def reporthook(self, url, filename, blocknum, blksize, size) -> None:
785
783
  pass # no-op
786
784
 
787
785
  # FIXME:
@@ -822,7 +820,7 @@ class PackageIndex(Environment):
822
820
  def _download_url(self, url, tmpdir):
823
821
  # Determine download filename
824
822
  #
825
- name, fragment = egg_info_for_url(url)
823
+ name, _fragment = egg_info_for_url(url)
826
824
  if name:
827
825
  while '..' in name:
828
826
  name = name.replace('..', '.').replace('\\', '_')
@@ -850,7 +848,7 @@ class PackageIndex(Environment):
850
848
  >>> rvcs('http://foo/bar')
851
849
  """
852
850
  scheme = urllib.parse.urlsplit(url).scheme
853
- pre, sep, post = scheme.partition('+')
851
+ pre, sep, _post = scheme.partition('+')
854
852
  # svn and git have their own protocol; hg does not
855
853
  allowed = set(['svn', 'git'] + ['hg'] * bool(sep))
856
854
  return next(iter({pre} & allowed), None)
@@ -888,7 +886,7 @@ class PackageIndex(Environment):
888
886
  self.url_ok(url, True)
889
887
  return self._attempt_download(url, filename)
890
888
 
891
- def scan_url(self, url):
889
+ def scan_url(self, url) -> None:
892
890
  self.process_url(url, True)
893
891
 
894
892
  def _attempt_download(self, url, filename):
@@ -934,13 +932,13 @@ class PackageIndex(Environment):
934
932
 
935
933
  return resolved, rev
936
934
 
937
- def debug(self, msg, *args):
935
+ def debug(self, msg, *args) -> None:
938
936
  log.debug(msg, *args)
939
937
 
940
- def info(self, msg, *args):
938
+ def info(self, msg, *args) -> None:
941
939
  log.info(msg, *args)
942
940
 
943
- def warn(self, msg, *args):
941
+ def warn(self, msg, *args) -> None:
944
942
  log.warn(msg, *args)
945
943
 
946
944
 
@@ -1105,6 +1103,7 @@ def open_with_auth(url, opener=urllib.request.urlopen):
1105
1103
 
1106
1104
 
1107
1105
  # copy of urllib.parse._splituser from Python 3.8
1106
+ # See https://github.com/python/cpython/issues/80072.
1108
1107
  def _splituser(host):
1109
1108
  """splituser('user[:passwd]@host[:port]')
1110
1109
  --> 'user[:passwd]', 'host[:port]'."""
@@ -1122,7 +1121,7 @@ def fix_sf_url(url):
1122
1121
 
1123
1122
  def local_open(url):
1124
1123
  """Read a local path, with special support for directories"""
1125
- scheme, server, path, param, query, frag = urllib.parse.urlparse(url)
1124
+ _scheme, _server, path, _param, _query, _frag = urllib.parse.urlparse(url)
1126
1125
  filename = urllib.request.url2pathname(path)
1127
1126
  if os.path.isfile(filename):
1128
1127
  return urllib.request.urlopen(url)
@@ -12,14 +12,16 @@ import sys
12
12
  import tempfile
13
13
  import textwrap
14
14
  from types import TracebackType
15
- from typing import TYPE_CHECKING
15
+ from typing import TYPE_CHECKING, Any, ClassVar
16
16
 
17
17
  import pkg_resources
18
18
  from pkg_resources import working_set
19
19
 
20
20
  from distutils.errors import DistutilsError
21
21
 
22
- if sys.platform.startswith('java'):
22
+ if TYPE_CHECKING:
23
+ import os as _os
24
+ elif sys.platform.startswith('java'):
23
25
  import org.python.modules.posix.PosixModule as _os # pyright: ignore[reportMissingImports]
24
26
  else:
25
27
  _os = sys.modules[os.name]
@@ -148,7 +150,7 @@ class ExceptionSaver:
148
150
  if '_saved' not in vars(self):
149
151
  return
150
152
 
151
- type, exc = map(pickle.loads, self._saved)
153
+ _type, exc = map(pickle.loads, self._saved)
152
154
  raise exc.with_traceback(self._tb)
153
155
 
154
156
 
@@ -277,7 +279,7 @@ class AbstractSandbox:
277
279
 
278
280
  _active = False
279
281
 
280
- def __init__(self):
282
+ def __init__(self) -> None:
281
283
  self._attrs = [
282
284
  name
283
285
  for name in dir(_os)
@@ -295,10 +297,10 @@ class AbstractSandbox:
295
297
 
296
298
  def __exit__(
297
299
  self,
298
- exc_type: object,
299
- exc_value: object,
300
- traceback: object,
301
- ) -> None:
300
+ exc_type: type[BaseException] | None,
301
+ exc_value: BaseException | None,
302
+ traceback: TracebackType | None,
303
+ ):
302
304
  self._active = False
303
305
  builtins.open = _open
304
306
  self._copy(_os)
@@ -406,6 +408,11 @@ class AbstractSandbox:
406
408
  self._remap_input(operation + '-to', dst, *args, **kw),
407
409
  )
408
410
 
411
+ if TYPE_CHECKING:
412
+ # This is a catch-all for all the dynamically created attributes.
413
+ # This isn't public API anyway
414
+ def __getattribute__(self, name: str) -> Any: ...
415
+
409
416
 
410
417
  if hasattr(os, 'devnull'):
411
418
  _EXCEPTIONS = [os.devnull]
@@ -416,7 +423,7 @@ else:
416
423
  class DirectorySandbox(AbstractSandbox):
417
424
  """Restrict operations to a single subdirectory - pseudo-chroot"""
418
425
 
419
- write_ops = dict.fromkeys([
426
+ write_ops: ClassVar[dict[str, None]] = dict.fromkeys([
420
427
  "open",
421
428
  "chmod",
422
429
  "chown",
@@ -435,7 +442,7 @@ class DirectorySandbox(AbstractSandbox):
435
442
  _exception_patterns: list[str | re.Pattern] = []
436
443
  "exempt writing to paths that match the pattern"
437
444
 
438
- def __init__(self, sandbox, exceptions=_EXCEPTIONS):
445
+ def __init__(self, sandbox, exceptions=_EXCEPTIONS) -> None:
439
446
  self._sandbox = os.path.normcase(os.path.realpath(sandbox))
440
447
  self._prefix = os.path.join(self._sandbox, '')
441
448
  self._exceptions = [
@@ -453,7 +460,7 @@ class DirectorySandbox(AbstractSandbox):
453
460
  self._violation("open", path, mode, *args, **kw)
454
461
  return _open(path, mode, *args, **kw)
455
462
 
456
- def tmpnam(self):
463
+ def tmpnam(self) -> None:
457
464
  self._violation("tmpnam")
458
465
 
459
466
  def _ok(self, path):
@@ -491,7 +498,7 @@ class DirectorySandbox(AbstractSandbox):
491
498
  self._violation(operation, src, dst, *args, **kw)
492
499
  return (src, dst)
493
500
 
494
- def open(self, file, flags, mode=0o777, *args, **kw):
501
+ def open(self, file, flags, mode: int = 0o777, *args, **kw) -> int:
495
502
  """Called for low-level os.open()"""
496
503
  if flags & WRITE_FLAGS and not self._ok(file):
497
504
  self._violation("os.open", file, flags, mode, *args, **kw)
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  import re
2
4
  import time
3
5
  from pathlib import Path
@@ -16,14 +18,14 @@ DOWNLOAD_DIR = Path(__file__).parent
16
18
  # ----------------------------------------------------------------------
17
19
 
18
20
 
19
- def output_file(url: str, download_dir: Path = DOWNLOAD_DIR):
21
+ def output_file(url: str, download_dir: Path = DOWNLOAD_DIR) -> Path:
20
22
  file_name = url.strip()
21
23
  for part in NAME_REMOVE:
22
24
  file_name = file_name.replace(part, '').strip().strip('/:').strip()
23
25
  return Path(download_dir, re.sub(r"[^\-_\.\w\d]+", "_", file_name))
24
26
 
25
27
 
26
- def retrieve_file(url: str, download_dir: Path = DOWNLOAD_DIR, wait: float = 5):
28
+ def retrieve_file(url: str, download_dir: Path = DOWNLOAD_DIR, wait: float = 5) -> Path:
27
29
  path = output_file(url, download_dir)
28
30
  if path.exists():
29
31
  print(f"Skipping {url} (already exists: {path})")
@@ -38,7 +40,7 @@ def retrieve_file(url: str, download_dir: Path = DOWNLOAD_DIR, wait: float = 5):
38
40
  return path
39
41
 
40
42
 
41
- def urls_from_file(list_file: Path):
43
+ def urls_from_file(list_file: Path) -> list[str]:
42
44
  """``list_file`` should be a text file where each line corresponds to a URL to
43
45
  download.
44
46
  """