py2docfx 0.1.9.dev1897554__py3-none-any.whl → 0.1.9.dev1917798__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 (377) hide show
  1. py2docfx/convert_prepare/environment.py +25 -6
  2. py2docfx/convert_prepare/tests/test_generate_document.py +4 -4
  3. py2docfx/convert_prepare/tests/test_get_source.py +6 -6
  4. py2docfx/convert_prepare/tests/test_params.py +1 -1
  5. py2docfx/convert_prepare/tests/test_sphinx_caller.py +3 -3
  6. py2docfx/venv/basevenv/Lib/site-packages/_distutils_hack/__init__.py +2 -3
  7. py2docfx/venv/basevenv/Lib/site-packages/packaging/__init__.py +2 -2
  8. py2docfx/venv/basevenv/Lib/site-packages/packaging/_elffile.py +4 -4
  9. py2docfx/venv/basevenv/Lib/site-packages/packaging/_manylinux.py +1 -0
  10. py2docfx/venv/basevenv/Lib/site-packages/packaging/licenses/__init__.py +145 -0
  11. py2docfx/venv/basevenv/Lib/site-packages/packaging/licenses/_spdx.py +759 -0
  12. py2docfx/venv/basevenv/Lib/site-packages/packaging/markers.py +15 -9
  13. py2docfx/venv/basevenv/Lib/site-packages/packaging/metadata.py +83 -24
  14. py2docfx/venv/basevenv/Lib/site-packages/packaging/specifiers.py +19 -8
  15. py2docfx/venv/basevenv/Lib/site-packages/packaging/tags.py +78 -29
  16. py2docfx/venv/basevenv/Lib/site-packages/packaging/utils.py +33 -44
  17. py2docfx/venv/basevenv/Lib/site-packages/packaging/version.py +26 -7
  18. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/__init__.py +27 -32
  19. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +4 -4
  20. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/tests/test_resources.py +7 -7
  21. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/tests/test_working_set.py +1 -1
  22. py2docfx/venv/basevenv/Lib/site-packages/setuptools/__init__.py +7 -9
  23. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compat/py38.py +1 -1
  24. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/dir_util.py +3 -8
  25. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +22 -0
  26. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_importlib.py +1 -4
  27. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_path.py +5 -8
  28. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_reqs.py +2 -1
  29. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_shutil.py +53 -0
  30. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +2 -2
  31. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +4 -4
  32. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +1 -0
  33. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/licenses/__init__.py +145 -0
  34. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/licenses/_spdx.py +759 -0
  35. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/markers.py +15 -9
  36. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +83 -24
  37. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +19 -8
  38. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/tags.py +78 -29
  39. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/utils.py +33 -44
  40. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/version.py +26 -7
  41. py2docfx/venv/basevenv/Lib/site-packages/setuptools/archive_util.py +6 -4
  42. py2docfx/venv/basevenv/Lib/site-packages/setuptools/build_meta.py +23 -17
  43. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/__init__.py +9 -1
  44. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/_requirestxt.py +4 -4
  45. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/alias.py +3 -4
  46. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_egg.py +27 -13
  47. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_rpm.py +1 -1
  48. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_wheel.py +18 -45
  49. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build.py +3 -3
  50. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_clib.py +2 -9
  51. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_ext.py +13 -12
  52. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_py.py +17 -16
  53. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/develop.py +4 -4
  54. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/dist_info.py +3 -7
  55. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/easy_install.py +55 -78
  56. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/editable_wheel.py +19 -21
  57. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/egg_info.py +29 -30
  58. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install.py +31 -13
  59. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_egg_info.py +2 -2
  60. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_lib.py +10 -7
  61. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_scripts.py +2 -2
  62. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/rotate.py +6 -6
  63. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/sdist.py +9 -8
  64. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/setopt.py +2 -2
  65. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +19 -14
  66. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/expand.py +22 -16
  67. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/pyprojecttoml.py +25 -10
  68. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/setupcfg.py +39 -47
  69. py2docfx/venv/basevenv/Lib/site-packages/setuptools/depends.py +26 -7
  70. py2docfx/venv/basevenv/Lib/site-packages/setuptools/discovery.py +21 -14
  71. py2docfx/venv/basevenv/Lib/site-packages/setuptools/dist.py +48 -45
  72. py2docfx/venv/basevenv/Lib/site-packages/setuptools/errors.py +21 -26
  73. py2docfx/venv/basevenv/Lib/site-packages/setuptools/extension.py +18 -6
  74. py2docfx/venv/basevenv/Lib/site-packages/setuptools/glob.py +35 -15
  75. py2docfx/venv/basevenv/Lib/site-packages/setuptools/installer.py +6 -1
  76. py2docfx/venv/basevenv/Lib/site-packages/setuptools/launch.py +1 -1
  77. py2docfx/venv/basevenv/Lib/site-packages/setuptools/logging.py +2 -2
  78. py2docfx/venv/basevenv/Lib/site-packages/setuptools/modified.py +16 -6
  79. py2docfx/venv/basevenv/Lib/site-packages/setuptools/monkey.py +2 -2
  80. py2docfx/venv/basevenv/Lib/site-packages/setuptools/msvc.py +25 -14
  81. py2docfx/venv/basevenv/Lib/site-packages/setuptools/namespaces.py +2 -2
  82. py2docfx/venv/basevenv/Lib/site-packages/setuptools/package_index.py +42 -43
  83. py2docfx/venv/basevenv/Lib/site-packages/setuptools/sandbox.py +19 -12
  84. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +5 -3
  85. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +7 -6
  86. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_expand.py +3 -3
  87. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +9 -2
  88. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +21 -11
  89. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +12 -16
  90. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +10 -11
  91. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_egg.py +7 -3
  92. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +10 -33
  93. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_ext.py +2 -2
  94. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_meta.py +1 -1
  95. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_py.py +6 -6
  96. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_config_discovery.py +4 -4
  97. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_core_metadata.py +3 -4
  98. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist.py +11 -13
  99. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist_info.py +1 -1
  100. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +44 -5
  101. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_easy_install.py +32 -26
  102. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_editable_install.py +10 -6
  103. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_egg_info.py +15 -15
  104. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_glob.py +1 -1
  105. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_logging.py +1 -1
  106. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_manifest.py +2 -8
  107. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_packageindex.py +6 -17
  108. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_setuptools.py +4 -3
  109. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_shutil_wrapper.py +23 -0
  110. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_wheel.py +29 -20
  111. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -3
  112. py2docfx/venv/basevenv/Lib/site-packages/setuptools/warnings.py +5 -2
  113. py2docfx/venv/basevenv/Lib/site-packages/setuptools/wheel.py +4 -4
  114. py2docfx/venv/basevenv/Lib/site-packages/wheel/__init__.py +1 -1
  115. py2docfx/venv/basevenv/Lib/site-packages/wheel/_bdist_wheel.py +9 -0
  116. py2docfx/venv/basevenv/Lib/site-packages/wheel/bdist_wheel.py +17 -2
  117. py2docfx/venv/basevenv/Lib/site-packages/wheel/cli/convert.py +280 -220
  118. py2docfx/venv/basevenv/Lib/site-packages/wheel/util.py +0 -9
  119. py2docfx/venv/venv1/Lib/site-packages/_distutils_hack/__init__.py +2 -3
  120. py2docfx/venv/venv1/Lib/site-packages/azure/core/_enum_meta.py +1 -1
  121. py2docfx/venv/venv1/Lib/site-packages/azure/core/_pipeline_client.py +2 -2
  122. py2docfx/venv/venv1/Lib/site-packages/azure/core/_pipeline_client_async.py +5 -3
  123. py2docfx/venv/venv1/Lib/site-packages/azure/core/_version.py +1 -1
  124. py2docfx/venv/venv1/Lib/site-packages/azure/core/credentials.py +6 -1
  125. py2docfx/venv/venv1/Lib/site-packages/azure/core/exceptions.py +13 -5
  126. py2docfx/venv/venv1/Lib/site-packages/azure/core/messaging.py +3 -3
  127. py2docfx/venv/venv1/Lib/site-packages/azure/core/paging.py +1 -1
  128. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/__init__.py +16 -5
  129. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base.py +15 -4
  130. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base_async.py +20 -10
  131. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_tools.py +3 -1
  132. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication.py +55 -19
  133. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication_async.py +46 -15
  134. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_custom_hook.py +8 -3
  135. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_distributed_tracing.py +9 -3
  136. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect.py +9 -2
  137. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect_async.py +4 -1
  138. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry.py +27 -8
  139. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry_async.py +6 -3
  140. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_sensitive_header_cleanup_policy.py +4 -1
  141. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_universal.py +6 -10
  142. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_utils.py +101 -1
  143. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/__init__.py +1 -1
  144. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_aiohttp.py +9 -2
  145. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base.py +1 -1
  146. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base_async.py +7 -5
  147. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_asyncio.py +0 -1
  148. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_basic.py +11 -3
  149. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_trio.py +11 -3
  150. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/_async_poller.py +5 -2
  151. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/_poller.py +4 -1
  152. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/async_base_polling.py +3 -1
  153. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/base_polling.py +47 -16
  154. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_helpers.py +3 -1
  155. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_http_response_impl.py +1 -1
  156. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_basic.py +3 -1
  157. py2docfx/venv/venv1/Lib/site-packages/azure/core/serialization.py +1 -1
  158. py2docfx/venv/venv1/Lib/site-packages/azure/core/settings.py +15 -3
  159. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/_abstract_span.py +15 -5
  160. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/common.py +1 -1
  161. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator.py +12 -1
  162. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator_async.py +24 -4
  163. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/__init__.py +119 -110
  164. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/_version.py +1 -1
  165. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared.py +3 -1
  166. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared_async.py +10 -1
  167. py2docfx/venv/venv1/Lib/site-packages/google/api/client_pb2.py +41 -39
  168. py2docfx/venv/venv1/Lib/site-packages/google/api/error_reason_pb2.py +2 -2
  169. py2docfx/venv/venv1/Lib/site-packages/google/api/httpbody_pb2.py +2 -2
  170. py2docfx/venv/venv1/Lib/site-packages/google/api/metric_pb2.py +17 -11
  171. py2docfx/venv/venv1/Lib/site-packages/google/api_core/client_options.py +17 -13
  172. py2docfx/venv/venv1/Lib/site-packages/google/api_core/protobuf_helpers.py +1 -3
  173. py2docfx/venv/venv1/Lib/site-packages/google/api_core/version.py +1 -1
  174. py2docfx/venv/venv1/Lib/site-packages/google/auth/_default.py +4 -0
  175. py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/_metadata.py +1 -1
  176. py2docfx/venv/venv1/Lib/site-packages/google/auth/iam.py +25 -8
  177. py2docfx/venv/venv1/Lib/site-packages/google/auth/impersonated_credentials.py +34 -16
  178. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_requests_base.py +2 -1
  179. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/requests.py +2 -3
  180. py2docfx/venv/venv1/Lib/site-packages/google/auth/version.py +1 -1
  181. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_client.py +10 -2
  182. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/service_account.py +1 -0
  183. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/__init__.py +1 -1
  184. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any_pb2.py +2 -2
  185. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/api_pb2.py +2 -2
  186. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/compiler/plugin_pb2.py +2 -2
  187. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pb2.py +2 -2
  188. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/duration_pb2.py +2 -2
  189. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/empty_pb2.py +2 -2
  190. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/field_mask_pb2.py +2 -2
  191. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/runtime_version.py +1 -7
  192. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/source_context_pb2.py +2 -2
  193. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/struct_pb2.py +2 -2
  194. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/timestamp_pb2.py +2 -2
  195. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/type_pb2.py +2 -2
  196. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/wrappers_pb2.py +2 -2
  197. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/__init__.py +27 -32
  198. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +4 -4
  199. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_resources.py +7 -7
  200. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_working_set.py +1 -1
  201. py2docfx/venv/venv1/Lib/site-packages/proto/enums.py +3 -1
  202. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/collections/repeated.py +7 -2
  203. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/compat.py +18 -21
  204. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/message.py +7 -3
  205. py2docfx/venv/venv1/Lib/site-packages/proto/message.py +6 -35
  206. py2docfx/venv/venv1/Lib/site-packages/proto/version.py +1 -1
  207. py2docfx/venv/venv1/Lib/site-packages/setuptools/__init__.py +7 -9
  208. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compat/py38.py +1 -1
  209. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/dir_util.py +3 -8
  210. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +22 -0
  211. py2docfx/venv/venv1/Lib/site-packages/setuptools/_importlib.py +1 -4
  212. py2docfx/venv/venv1/Lib/site-packages/setuptools/_path.py +5 -8
  213. py2docfx/venv/venv1/Lib/site-packages/setuptools/_reqs.py +2 -1
  214. py2docfx/venv/venv1/Lib/site-packages/setuptools/_shutil.py +53 -0
  215. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +2 -2
  216. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +4 -4
  217. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +1 -0
  218. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/licenses/__init__.py +145 -0
  219. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/licenses/_spdx.py +759 -0
  220. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/markers.py +15 -9
  221. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +83 -24
  222. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +19 -8
  223. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/tags.py +78 -29
  224. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/utils.py +33 -44
  225. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/version.py +26 -7
  226. py2docfx/venv/venv1/Lib/site-packages/setuptools/archive_util.py +6 -4
  227. py2docfx/venv/venv1/Lib/site-packages/setuptools/build_meta.py +23 -17
  228. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/__init__.py +9 -1
  229. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/_requirestxt.py +4 -4
  230. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/alias.py +3 -4
  231. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_egg.py +27 -13
  232. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_rpm.py +1 -1
  233. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +18 -45
  234. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build.py +3 -3
  235. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_clib.py +2 -9
  236. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_ext.py +13 -12
  237. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_py.py +17 -16
  238. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/develop.py +4 -4
  239. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/dist_info.py +3 -7
  240. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/easy_install.py +55 -78
  241. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/editable_wheel.py +19 -21
  242. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/egg_info.py +29 -30
  243. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install.py +31 -13
  244. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_egg_info.py +2 -2
  245. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_lib.py +10 -7
  246. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_scripts.py +2 -2
  247. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/rotate.py +6 -6
  248. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/sdist.py +9 -8
  249. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/setopt.py +2 -2
  250. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +19 -14
  251. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/expand.py +22 -16
  252. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/pyprojecttoml.py +25 -10
  253. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/setupcfg.py +39 -47
  254. py2docfx/venv/venv1/Lib/site-packages/setuptools/depends.py +26 -7
  255. py2docfx/venv/venv1/Lib/site-packages/setuptools/discovery.py +21 -14
  256. py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +48 -45
  257. py2docfx/venv/venv1/Lib/site-packages/setuptools/errors.py +21 -26
  258. py2docfx/venv/venv1/Lib/site-packages/setuptools/extension.py +18 -6
  259. py2docfx/venv/venv1/Lib/site-packages/setuptools/glob.py +35 -15
  260. py2docfx/venv/venv1/Lib/site-packages/setuptools/installer.py +6 -1
  261. py2docfx/venv/venv1/Lib/site-packages/setuptools/launch.py +1 -1
  262. py2docfx/venv/venv1/Lib/site-packages/setuptools/logging.py +2 -2
  263. py2docfx/venv/venv1/Lib/site-packages/setuptools/modified.py +16 -6
  264. py2docfx/venv/venv1/Lib/site-packages/setuptools/monkey.py +2 -2
  265. py2docfx/venv/venv1/Lib/site-packages/setuptools/msvc.py +25 -14
  266. py2docfx/venv/venv1/Lib/site-packages/setuptools/namespaces.py +2 -2
  267. py2docfx/venv/venv1/Lib/site-packages/setuptools/package_index.py +42 -43
  268. py2docfx/venv/venv1/Lib/site-packages/setuptools/sandbox.py +19 -12
  269. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +5 -3
  270. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +7 -6
  271. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_expand.py +3 -3
  272. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +9 -2
  273. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +21 -11
  274. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +12 -16
  275. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +10 -11
  276. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_egg.py +7 -3
  277. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +10 -33
  278. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_ext.py +2 -2
  279. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_meta.py +1 -1
  280. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_py.py +6 -6
  281. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_config_discovery.py +4 -4
  282. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_core_metadata.py +3 -4
  283. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist.py +11 -13
  284. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist_info.py +1 -1
  285. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +44 -5
  286. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_easy_install.py +32 -26
  287. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_editable_install.py +10 -6
  288. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_egg_info.py +15 -15
  289. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_glob.py +1 -1
  290. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_logging.py +1 -1
  291. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_manifest.py +2 -8
  292. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_packageindex.py +6 -17
  293. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_setuptools.py +4 -3
  294. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_shutil_wrapper.py +23 -0
  295. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_wheel.py +29 -20
  296. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -3
  297. py2docfx/venv/venv1/Lib/site-packages/setuptools/warnings.py +5 -2
  298. py2docfx/venv/venv1/Lib/site-packages/setuptools/wheel.py +4 -4
  299. py2docfx/venv/venv1/Lib/site-packages/wheel/__init__.py +1 -1
  300. py2docfx/venv/venv1/Lib/site-packages/wheel/_bdist_wheel.py +9 -0
  301. py2docfx/venv/venv1/Lib/site-packages/wheel/bdist_wheel.py +17 -2
  302. py2docfx/venv/venv1/Lib/site-packages/wheel/cli/convert.py +280 -220
  303. py2docfx/venv/venv1/Lib/site-packages/wheel/util.py +0 -9
  304. {py2docfx-0.1.9.dev1897554.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/METADATA +1 -1
  305. {py2docfx-0.1.9.dev1897554.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/RECORD +307 -367
  306. {py2docfx-0.1.9.dev1897554.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/WHEEL +1 -1
  307. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +0 -36
  308. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +0 -168
  309. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +0 -210
  310. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +0 -38
  311. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +0 -171
  312. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/__init__.py +0 -0
  313. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py38.py +0 -11
  314. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py39.py +0 -10
  315. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/functional.py +0 -81
  316. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/future/__init__.py +0 -0
  317. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/future/adapters.py +0 -95
  318. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +0 -194
  319. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +0 -106
  320. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/__init__.py +0 -0
  321. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/_path.py +0 -56
  322. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/__init__.py +0 -0
  323. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py312.py +0 -18
  324. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py39.py +0 -10
  325. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/__init__.py +0 -0
  326. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py +0 -0
  327. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/__init__.py +0 -0
  328. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py +0 -0
  329. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py +0 -0
  330. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py +0 -104
  331. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_contents.py +0 -43
  332. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_custom.py +0 -47
  333. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_files.py +0 -117
  334. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_functional.py +0 -242
  335. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_open.py +0 -89
  336. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_path.py +0 -65
  337. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_read.py +0 -97
  338. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_reader.py +0 -145
  339. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_resource.py +0 -241
  340. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/util.py +0 -164
  341. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/zip.py +0 -32
  342. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +0 -36
  343. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +0 -168
  344. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +0 -210
  345. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +0 -38
  346. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +0 -171
  347. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/__init__.py +0 -0
  348. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py38.py +0 -11
  349. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py39.py +0 -10
  350. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/functional.py +0 -81
  351. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/future/__init__.py +0 -0
  352. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/future/adapters.py +0 -95
  353. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +0 -194
  354. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +0 -106
  355. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/__init__.py +0 -0
  356. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/_path.py +0 -56
  357. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/__init__.py +0 -0
  358. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py312.py +0 -18
  359. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py39.py +0 -10
  360. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/__init__.py +0 -0
  361. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py +0 -0
  362. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/__init__.py +0 -0
  363. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py +0 -0
  364. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py +0 -0
  365. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py +0 -104
  366. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_contents.py +0 -43
  367. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_custom.py +0 -47
  368. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_files.py +0 -117
  369. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_functional.py +0 -242
  370. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_open.py +0 -89
  371. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_path.py +0 -65
  372. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_read.py +0 -97
  373. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_reader.py +0 -145
  374. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_resource.py +0 -241
  375. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/util.py +0 -164
  376. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/zip.py +0 -32
  377. {py2docfx-0.1.9.dev1897554.dist-info → py2docfx-0.1.9.dev1917798.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 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
 
@@ -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
  """
@@ -17,7 +17,7 @@ import pytest
17
17
  from ini2toml.api import LiteTranslator
18
18
  from packaging.metadata import Metadata
19
19
 
20
- import setuptools # noqa ensure monkey patch to metadata
20
+ import setuptools # noqa: F401 # ensure monkey patch to metadata
21
21
  from setuptools.command.egg_info import write_requirements
22
22
  from setuptools.config import expand, pyprojecttoml, setupcfg
23
23
  from setuptools.config._apply_pyprojecttoml import _MissingDynamic, _some_attrgetter
@@ -183,7 +183,7 @@ def test_pep621_example(tmp_path):
183
183
 
184
184
 
185
185
  @pytest.mark.parametrize(
186
- "readme, ctype",
186
+ ("readme", "ctype"),
187
187
  [
188
188
  ("Readme.txt", "text/plain"),
189
189
  ("readme.md", "text/markdown"),
@@ -209,7 +209,7 @@ def test_no_explicit_content_type_for_missing_extension(tmp_path):
209
209
 
210
210
 
211
211
  @pytest.mark.parametrize(
212
- ('pyproject_text', 'expected_maintainers_meta_value'),
212
+ ("pyproject_text", "expected_maintainers_meta_value"),
213
213
  (
214
214
  pytest.param(
215
215
  PEP621_EXAMPLE,
@@ -370,7 +370,7 @@ class TestPresetField:
370
370
  return file
371
371
 
372
372
  @pytest.mark.parametrize(
373
- "attr, field, value",
373
+ ("attr", "field", "value"),
374
374
  [
375
375
  ("classifiers", "classifiers", ["Private :: Classifier"]),
376
376
  ("entry_points", "scripts", {"console_scripts": ["foobar=foobar:main"]}),
@@ -395,7 +395,7 @@ class TestPresetField:
395
395
  assert not dist_value
396
396
 
397
397
  @pytest.mark.parametrize(
398
- "attr, field, value",
398
+ ("attr", "field", "value"),
399
399
  [
400
400
  ("install_requires", "dependencies", []),
401
401
  ("extras_require", "optional-dependencies", {}),
@@ -442,7 +442,8 @@ class TestPresetField:
442
442
  assert ':python_version < "3.7"' in reqs
443
443
 
444
444
  @pytest.mark.parametrize(
445
- "field,group", [("scripts", "console_scripts"), ("gui-scripts", "gui_scripts")]
445
+ ("field", "group"),
446
+ [("scripts", "console_scripts"), ("gui-scripts", "gui_scripts")],
446
447
  )
447
448
  @pytest.mark.filterwarnings("error")
448
449
  def test_scripts_dont_require_dynamic_entry_points(self, tmp_path, field, group):
@@ -141,7 +141,7 @@ class TestReadAttr:
141
141
 
142
142
 
143
143
  @pytest.mark.parametrize(
144
- 'package_dir, file, module, return_value',
144
+ ("package_dir", "file", "module", "return_value"),
145
145
  [
146
146
  ({"": "src"}, "src/pkg/main.py", "pkg.main", 42),
147
147
  ({"pkg": "lib"}, "lib/main.py", "pkg.main", 13),
@@ -158,7 +158,7 @@ def test_resolve_class(monkeypatch, tmp_path, package_dir, file, module, return_
158
158
 
159
159
 
160
160
  @pytest.mark.parametrize(
161
- 'args, pkgs',
161
+ ("args", "pkgs"),
162
162
  [
163
163
  ({"where": ["."], "namespaces": False}, {"pkg", "other"}),
164
164
  ({"where": [".", "dir1"], "namespaces": False}, {"pkg", "other", "dir2"}),
@@ -192,7 +192,7 @@ def test_find_packages(tmp_path, args, pkgs):
192
192
 
193
193
 
194
194
  @pytest.mark.parametrize(
195
- "files, where, expected_package_dir",
195
+ ("files", "where", "expected_package_dir"),
196
196
  [
197
197
  (["pkg1/__init__.py", "pkg1/other.py"], ["."], {}),
198
198
  (["pkg1/__init__.py", "pkg2/__init__.py"], ["."], {}),
@@ -17,6 +17,7 @@ from setuptools.config.pyprojecttoml import (
17
17
  )
18
18
  from setuptools.dist import Distribution
19
19
  from setuptools.errors import OptionError
20
+ from setuptools.warnings import SetuptoolsWarning
20
21
 
21
22
  import distutils.core
22
23
 
@@ -149,7 +150,7 @@ def test_read_configuration(tmp_path):
149
150
 
150
151
 
151
152
  @pytest.mark.parametrize(
152
- "pkg_root, opts",
153
+ ("pkg_root", "opts"),
153
154
  [
154
155
  (".", {}),
155
156
  ("src", {}),
@@ -308,7 +309,7 @@ def test_ignore_unrelated_config(tmp_path, example):
308
309
 
309
310
 
310
311
  @pytest.mark.parametrize(
311
- "example, error_msg",
312
+ ("example", "error_msg"),
312
313
  [
313
314
  (
314
315
  """
@@ -394,3 +395,9 @@ def test_warn_tools_typo(tmp_path):
394
395
 
395
396
  with pytest.warns(_ToolsTypoInMetadata):
396
397
  read_configuration(pyproject)
398
+
399
+
400
+ def test_warn_skipping_validation(monkeypatch):
401
+ monkeypatch.setenv("SETUPTOOLS_DANGEROUSLY_SKIP_PYPROJECT_VALIDATION", "true")
402
+ with pytest.warns(SetuptoolsWarning, match="Skipping the validation"):
403
+ assert validate({"completely-wrong": "data"}, "pyproject.toml") is True