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
@@ -4,11 +4,12 @@
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
+ import functools
7
8
  import re
8
9
  from typing import NewType, Tuple, Union, cast
9
10
 
10
11
  from .tags import Tag, parse_tag
11
- from .version import InvalidVersion, Version
12
+ from .version import InvalidVersion, Version, _TrimmedRelease
12
13
 
13
14
  BuildTag = Union[Tuple[()], Tuple[int, str]]
14
15
  NormalizedName = NewType("NormalizedName", str)
@@ -54,52 +55,40 @@ def is_normalized_name(name: str) -> bool:
54
55
  return _normalized_regex.match(name) is not None
55
56
 
56
57
 
58
+ @functools.singledispatch
57
59
  def canonicalize_version(
58
60
  version: Version | str, *, strip_trailing_zero: bool = True
59
61
  ) -> str:
60
62
  """
61
- This is very similar to Version.__str__, but has one subtle difference
62
- with the way it handles the release segment.
63
- """
64
- if isinstance(version, str):
65
- try:
66
- parsed = Version(version)
67
- except InvalidVersion:
68
- # Legacy versions cannot be normalized
69
- return version
70
- else:
71
- parsed = version
72
-
73
- parts = []
63
+ Return a canonical form of a version as a string.
74
64
 
75
- # Epoch
76
- if parsed.epoch != 0:
77
- parts.append(f"{parsed.epoch}!")
65
+ >>> canonicalize_version('1.0.1')
66
+ '1.0.1'
78
67
 
79
- # Release segment
80
- release_segment = ".".join(str(x) for x in parsed.release)
81
- if strip_trailing_zero:
82
- # NB: This strips trailing '.0's to normalize
83
- release_segment = re.sub(r"(\.0)+$", "", release_segment)
84
- parts.append(release_segment)
68
+ Per PEP 625, versions may have multiple canonical forms, differing
69
+ only by trailing zeros.
85
70
 
86
- # Pre-release
87
- if parsed.pre is not None:
88
- parts.append("".join(str(x) for x in parsed.pre))
71
+ >>> canonicalize_version('1.0.0')
72
+ '1'
73
+ >>> canonicalize_version('1.0.0', strip_trailing_zero=False)
74
+ '1.0.0'
89
75
 
90
- # Post-release
91
- if parsed.post is not None:
92
- parts.append(f".post{parsed.post}")
76
+ Invalid versions are returned unaltered.
93
77
 
94
- # Development release
95
- if parsed.dev is not None:
96
- parts.append(f".dev{parsed.dev}")
78
+ >>> canonicalize_version('foo bar baz')
79
+ 'foo bar baz'
80
+ """
81
+ return str(_TrimmedRelease(str(version)) if strip_trailing_zero else version)
97
82
 
98
- # Local version segment
99
- if parsed.local is not None:
100
- parts.append(f"+{parsed.local}")
101
83
 
102
- return "".join(parts)
84
+ @canonicalize_version.register
85
+ def _(version: str, *, strip_trailing_zero: bool = True) -> str:
86
+ try:
87
+ parsed = Version(version)
88
+ except InvalidVersion:
89
+ # Legacy versions cannot be normalized
90
+ return version
91
+ return canonicalize_version(parsed, strip_trailing_zero=strip_trailing_zero)
103
92
 
104
93
 
105
94
  def parse_wheel_filename(
@@ -107,28 +96,28 @@ def parse_wheel_filename(
107
96
  ) -> tuple[NormalizedName, Version, BuildTag, frozenset[Tag]]:
108
97
  if not filename.endswith(".whl"):
109
98
  raise InvalidWheelFilename(
110
- f"Invalid wheel filename (extension must be '.whl'): {filename}"
99
+ f"Invalid wheel filename (extension must be '.whl'): {filename!r}"
111
100
  )
112
101
 
113
102
  filename = filename[:-4]
114
103
  dashes = filename.count("-")
115
104
  if dashes not in (4, 5):
116
105
  raise InvalidWheelFilename(
117
- f"Invalid wheel filename (wrong number of parts): {filename}"
106
+ f"Invalid wheel filename (wrong number of parts): {filename!r}"
118
107
  )
119
108
 
120
109
  parts = filename.split("-", dashes - 2)
121
110
  name_part = parts[0]
122
111
  # See PEP 427 for the rules on escaping the project name.
123
112
  if "__" in name_part or re.match(r"^[\w\d._]*$", name_part, re.UNICODE) is None:
124
- raise InvalidWheelFilename(f"Invalid project name: {filename}")
113
+ raise InvalidWheelFilename(f"Invalid project name: {filename!r}")
125
114
  name = canonicalize_name(name_part)
126
115
 
127
116
  try:
128
117
  version = Version(parts[1])
129
118
  except InvalidVersion as e:
130
119
  raise InvalidWheelFilename(
131
- f"Invalid wheel filename (invalid version): {filename}"
120
+ f"Invalid wheel filename (invalid version): {filename!r}"
132
121
  ) from e
133
122
 
134
123
  if dashes == 5:
@@ -136,7 +125,7 @@ def parse_wheel_filename(
136
125
  build_match = _build_tag_regex.match(build_part)
137
126
  if build_match is None:
138
127
  raise InvalidWheelFilename(
139
- f"Invalid build number: {build_part} in '{filename}'"
128
+ f"Invalid build number: {build_part} in {filename!r}"
140
129
  )
141
130
  build = cast(BuildTag, (int(build_match.group(1)), build_match.group(2)))
142
131
  else:
@@ -153,14 +142,14 @@ def parse_sdist_filename(filename: str) -> tuple[NormalizedName, Version]:
153
142
  else:
154
143
  raise InvalidSdistFilename(
155
144
  f"Invalid sdist filename (extension must be '.tar.gz' or '.zip'):"
156
- f" {filename}"
145
+ f" {filename!r}"
157
146
  )
158
147
 
159
148
  # We are requiring a PEP 440 version, which cannot contain dashes,
160
149
  # so we split on the last dash.
161
150
  name_part, sep, version_part = file_stem.rpartition("-")
162
151
  if not sep:
163
- raise InvalidSdistFilename(f"Invalid sdist filename: {filename}")
152
+ raise InvalidSdistFilename(f"Invalid sdist filename: {filename!r}")
164
153
 
165
154
  name = canonicalize_name(name_part)
166
155
 
@@ -168,7 +157,7 @@ def parse_sdist_filename(filename: str) -> tuple[NormalizedName, Version]:
168
157
  version = Version(version_part)
169
158
  except InvalidVersion as e:
170
159
  raise InvalidSdistFilename(
171
- f"Invalid sdist filename (invalid version): {filename}"
160
+ f"Invalid sdist filename (invalid version): {filename!r}"
172
161
  ) from e
173
162
 
174
163
  return (name, version)
@@ -15,7 +15,7 @@ from typing import Any, Callable, NamedTuple, SupportsInt, Tuple, Union
15
15
 
16
16
  from ._structures import Infinity, InfinityType, NegativeInfinity, NegativeInfinityType
17
17
 
18
- __all__ = ["VERSION_PATTERN", "parse", "Version", "InvalidVersion"]
18
+ __all__ = ["VERSION_PATTERN", "InvalidVersion", "Version", "parse"]
19
19
 
20
20
  LocalType = Tuple[Union[int, str], ...]
21
21
 
@@ -199,7 +199,7 @@ class Version(_BaseVersion):
199
199
  # Validate the version and parse it into pieces
200
200
  match = self._regex.search(version)
201
201
  if not match:
202
- raise InvalidVersion(f"Invalid version: '{version}'")
202
+ raise InvalidVersion(f"Invalid version: {version!r}")
203
203
 
204
204
  # Store the parsed out pieces of the version
205
205
  self._version = _Version(
@@ -232,7 +232,7 @@ class Version(_BaseVersion):
232
232
  return f"<Version('{self}')>"
233
233
 
234
234
  def __str__(self) -> str:
235
- """A string representation of the version that can be rounded-tripped.
235
+ """A string representation of the version that can be round-tripped.
236
236
 
237
237
  >>> str(Version("1.0a5"))
238
238
  '1.0a5'
@@ -350,8 +350,8 @@ class Version(_BaseVersion):
350
350
  '1.2.3'
351
351
  >>> Version("1.2.3+abc").public
352
352
  '1.2.3'
353
- >>> Version("1.2.3+abc.dev1").public
354
- '1.2.3'
353
+ >>> Version("1!1.2.3dev1+abc").public
354
+ '1!1.2.3.dev1'
355
355
  """
356
356
  return str(self).split("+", 1)[0]
357
357
 
@@ -363,7 +363,7 @@ class Version(_BaseVersion):
363
363
  '1.2.3'
364
364
  >>> Version("1.2.3+abc").base_version
365
365
  '1.2.3'
366
- >>> Version("1!1.2.3+abc.dev1").base_version
366
+ >>> Version("1!1.2.3dev1+abc").base_version
367
367
  '1!1.2.3'
368
368
 
369
369
  The "base version" is the public version of the project without any pre or post
@@ -451,6 +451,23 @@ class Version(_BaseVersion):
451
451
  return self.release[2] if len(self.release) >= 3 else 0
452
452
 
453
453
 
454
+ class _TrimmedRelease(Version):
455
+ @property
456
+ def release(self) -> tuple[int, ...]:
457
+ """
458
+ Release segment without any trailing zeros.
459
+
460
+ >>> _TrimmedRelease('1.0.0').release
461
+ (1,)
462
+ >>> _TrimmedRelease('0.0').release
463
+ (0,)
464
+ """
465
+ rel = super().release
466
+ nonzeros = (index for index, val in enumerate(rel) if val)
467
+ last_nonzero = max(nonzeros, default=0)
468
+ return rel[: last_nonzero + 1]
469
+
470
+
454
471
  def _parse_letter_version(
455
472
  letter: str | None, number: str | bytes | SupportsInt | None
456
473
  ) -> tuple[str, int] | None:
@@ -476,7 +493,9 @@ def _parse_letter_version(
476
493
  letter = "post"
477
494
 
478
495
  return letter, int(number)
479
- if not letter and number:
496
+
497
+ assert not letter
498
+ if number:
480
499
  # We assume if we are given a number, but we are not given a letter
481
500
  # then this is using the implicit post release syntax (e.g. 1.0-1)
482
501
  letter = "post"
@@ -31,7 +31,9 @@ def default_filter(src, dst):
31
31
  return dst
32
32
 
33
33
 
34
- def unpack_archive(filename, extract_dir, progress_filter=default_filter, drivers=None):
34
+ def unpack_archive(
35
+ filename, extract_dir, progress_filter=default_filter, drivers=None
36
+ ) -> None:
35
37
  """Unpack `filename` to `extract_dir`, or raise ``UnrecognizedFormat``
36
38
 
37
39
  `progress_filter` is a function taking two arguments: a source path
@@ -63,7 +65,7 @@ def unpack_archive(filename, extract_dir, progress_filter=default_filter, driver
63
65
  raise UnrecognizedFormat("Not a recognized archive type: %s" % filename)
64
66
 
65
67
 
66
- def unpack_directory(filename, extract_dir, progress_filter=default_filter):
68
+ def unpack_directory(filename, extract_dir, progress_filter=default_filter) -> None:
67
69
  """ "Unpack" a directory, using the same interface as for archives
68
70
 
69
71
  Raises ``UnrecognizedFormat`` if `filename` is not a directory
@@ -90,7 +92,7 @@ def unpack_directory(filename, extract_dir, progress_filter=default_filter):
90
92
  shutil.copystat(f, target)
91
93
 
92
94
 
93
- def unpack_zipfile(filename, extract_dir, progress_filter=default_filter):
95
+ def unpack_zipfile(filename, extract_dir, progress_filter=default_filter) -> None:
94
96
  """Unpack zip `filename` to `extract_dir`
95
97
 
96
98
  Raises ``UnrecognizedFormat`` if `filename` is not a zipfile (as determined
@@ -185,7 +187,7 @@ def _iter_open_tar(tar_obj, extract_dir, progress_filter):
185
187
  yield member, final_dst
186
188
 
187
189
 
188
- def unpack_tarfile(filename, extract_dir, progress_filter=default_filter):
190
+ def unpack_tarfile(filename, extract_dir, progress_filter=default_filter) -> bool:
189
191
  """Unpack tar/tar.gz/tar.bz2 `filename` to `extract_dir`
190
192
 
191
193
  Raises ``UnrecognizedFormat`` if `filename` is not a tarfile (as determined
@@ -37,8 +37,9 @@ import sys
37
37
  import tempfile
38
38
  import tokenize
39
39
  import warnings
40
+ from collections.abc import Iterable, Iterator, Mapping
40
41
  from pathlib import Path
41
- from typing import TYPE_CHECKING, Dict, Iterable, Iterator, List, Union
42
+ from typing import TYPE_CHECKING, Union
42
43
 
43
44
  import setuptools
44
45
 
@@ -53,7 +54,6 @@ from distutils.util import strtobool
53
54
  if TYPE_CHECKING:
54
55
  from typing_extensions import TypeAlias
55
56
 
56
-
57
57
  __all__ = [
58
58
  'get_requires_for_build_sdist',
59
59
  'get_requires_for_build_wheel',
@@ -72,7 +72,7 @@ LEGACY_EDITABLE = "legacy-editable" in SETUPTOOLS_ENABLE_FEATURES.replace("_", "
72
72
 
73
73
 
74
74
  class SetupRequirementsError(BaseException):
75
- def __init__(self, specifiers):
75
+ def __init__(self, specifiers) -> None:
76
76
  self.specifiers = specifiers
77
77
 
78
78
 
@@ -147,7 +147,7 @@ def suppress_known_deprecation():
147
147
  yield
148
148
 
149
149
 
150
- _ConfigSettings: TypeAlias = Union[Dict[str, Union[str, List[str], None]], None]
150
+ _ConfigSettings: TypeAlias = Union[Mapping[str, Union[str, list[str], None]], None]
151
151
  """
152
152
  Currently the user can run::
153
153
 
@@ -291,7 +291,9 @@ class _ConfigSettingsTranslator:
291
291
 
292
292
 
293
293
  class _BuildMetaBackend(_ConfigSettingsTranslator):
294
- def _get_build_requires(self, config_settings, requirements):
294
+ def _get_build_requires(
295
+ self, config_settings: _ConfigSettings, requirements: list[str]
296
+ ):
295
297
  sys.argv = [
296
298
  *sys.argv[:1],
297
299
  *self._global_args(config_settings),
@@ -305,7 +307,7 @@ class _BuildMetaBackend(_ConfigSettingsTranslator):
305
307
 
306
308
  return requirements
307
309
 
308
- def run_setup(self, setup_script='setup.py'):
310
+ def run_setup(self, setup_script: str = 'setup.py'):
309
311
  # Note that we can reuse our build directory between calls
310
312
  # Correctness comes first, then optimization later
311
313
  __file__ = os.path.abspath(setup_script)
@@ -328,13 +330,15 @@ class _BuildMetaBackend(_ConfigSettingsTranslator):
328
330
  "setup-py-deprecated.html",
329
331
  )
330
332
 
331
- def get_requires_for_build_wheel(self, config_settings=None):
333
+ def get_requires_for_build_wheel(self, config_settings: _ConfigSettings = None):
332
334
  return self._get_build_requires(config_settings, requirements=[])
333
335
 
334
- def get_requires_for_build_sdist(self, config_settings=None):
336
+ def get_requires_for_build_sdist(self, config_settings: _ConfigSettings = None):
335
337
  return self._get_build_requires(config_settings, requirements=[])
336
338
 
337
- def _bubble_up_info_directory(self, metadata_directory: str, suffix: str) -> str:
339
+ def _bubble_up_info_directory(
340
+ self, metadata_directory: StrPath, suffix: str
341
+ ) -> str:
338
342
  """
339
343
  PEP 517 requires that the .dist-info directory be placed in the
340
344
  metadata_directory. To comply, we MUST copy the directory to the root.
@@ -347,7 +351,7 @@ class _BuildMetaBackend(_ConfigSettingsTranslator):
347
351
  # PEP 517 allow other files and dirs to exist in metadata_directory
348
352
  return info_dir.name
349
353
 
350
- def _find_info_directory(self, metadata_directory: str, suffix: str) -> Path:
354
+ def _find_info_directory(self, metadata_directory: StrPath, suffix: str) -> Path:
351
355
  for parent, dirs, _ in os.walk(metadata_directory):
352
356
  candidates = [f for f in dirs if f.endswith(suffix)]
353
357
 
@@ -359,14 +363,14 @@ class _BuildMetaBackend(_ConfigSettingsTranslator):
359
363
  raise errors.InternalError(msg)
360
364
 
361
365
  def prepare_metadata_for_build_wheel(
362
- self, metadata_directory, config_settings=None
366
+ self, metadata_directory: StrPath, config_settings: _ConfigSettings = None
363
367
  ):
364
368
  sys.argv = [
365
369
  *sys.argv[:1],
366
370
  *self._global_args(config_settings),
367
371
  "dist_info",
368
372
  "--output-dir",
369
- metadata_directory,
373
+ str(metadata_directory),
370
374
  "--keep-egg-info",
371
375
  ]
372
376
  with no_install_setup_requires():
@@ -431,7 +435,7 @@ class _BuildMetaBackend(_ConfigSettingsTranslator):
431
435
  return _build(['bdist_wheel'])
432
436
 
433
437
  try:
434
- return _build(['bdist_wheel', '--dist-info-dir', metadata_directory])
438
+ return _build(['bdist_wheel', '--dist-info-dir', str(metadata_directory)])
435
439
  except SystemExit as ex: # pragma: nocover
436
440
  # pypa/setuptools#4683
437
441
  if "--dist-info-dir not recognized" not in str(ex):
@@ -462,7 +466,7 @@ class _BuildMetaBackend(_ConfigSettingsTranslator):
462
466
  self,
463
467
  wheel_directory: StrPath,
464
468
  config_settings: _ConfigSettings = None,
465
- metadata_directory: str | None = None,
469
+ metadata_directory: StrPath | None = None,
466
470
  ):
467
471
  # XXX can or should we hide our editable_wheel command normally?
468
472
  info_dir = self._get_dist_info_dir(metadata_directory)
@@ -473,11 +477,13 @@ class _BuildMetaBackend(_ConfigSettingsTranslator):
473
477
  cmd, ".whl", wheel_directory, config_settings
474
478
  )
475
479
 
476
- def get_requires_for_build_editable(self, config_settings=None):
480
+ def get_requires_for_build_editable(
481
+ self, config_settings: _ConfigSettings = None
482
+ ):
477
483
  return self.get_requires_for_build_wheel(config_settings)
478
484
 
479
485
  def prepare_metadata_for_build_editable(
480
- self, metadata_directory, config_settings=None
486
+ self, metadata_directory: StrPath, config_settings: _ConfigSettings = None
481
487
  ):
482
488
  return self.prepare_metadata_for_build_wheel(
483
489
  metadata_directory, config_settings
@@ -496,7 +502,7 @@ class _BuildMetaLegacyBackend(_BuildMetaBackend):
496
502
  and will eventually be removed.
497
503
  """
498
504
 
499
- def run_setup(self, setup_script='setup.py'):
505
+ def run_setup(self, setup_script: str = 'setup.py'):
500
506
  # In order to maintain compatibility with scripts assuming that
501
507
  # the setup.py script is in a directory on the PYTHONPATH, inject
502
508
  # '' into sys.path. (pypa/setuptools#1642)
@@ -1,12 +1,20 @@
1
+ # mypy: disable_error_code=call-overload
2
+ # pyright: reportCallIssue=false, reportArgumentType=false
3
+ # Can't disable on the exact line because distutils doesn't exists on Python 3.12
4
+ # and type-checkers aren't aware of distutils_hack,
5
+ # causing distutils.command.bdist.bdist.format_commands to be Any.
6
+
1
7
  import sys
2
8
 
3
9
  from distutils.command.bdist import bdist
4
10
 
5
11
  if 'egg' not in bdist.format_commands:
6
12
  try:
13
+ # format_commands is a dict in vendored distutils
14
+ # It used to be a list in older (stdlib) distutils
15
+ # We support both for backwards compatibility
7
16
  bdist.format_commands['egg'] = ('bdist_egg', "Python .egg file")
8
17
  except TypeError:
9
- # For backward compatibility with older distutils (stdlib)
10
18
  bdist.format_command['egg'] = ('bdist_egg', "Python .egg file")
11
19
  bdist.format_commands.append('egg')
12
20
 
@@ -11,19 +11,19 @@ from __future__ import annotations
11
11
 
12
12
  import io
13
13
  from collections import defaultdict
14
+ from collections.abc import Mapping
14
15
  from itertools import filterfalse
15
- from typing import Dict, Mapping, TypeVar
16
+ from typing import TypeVar
16
17
 
17
18
  from jaraco.text import yield_lines
18
19
  from packaging.requirements import Requirement
19
20
 
20
21
  from .. import _reqs
22
+ from .._reqs import _StrOrIter
21
23
 
22
24
  # dict can work as an ordered set
23
25
  _T = TypeVar("_T")
24
- _Ordered = Dict[_T, None]
25
- _ordered = dict
26
- _StrOrIter = _reqs._StrOrIter
26
+ _Ordered = dict[_T, None]
27
27
 
28
28
 
29
29
  def _prepare(
@@ -30,15 +30,14 @@ class alias(option_base):
30
30
  self.args = None
31
31
  self.remove = None
32
32
 
33
- def finalize_options(self):
33
+ def finalize_options(self) -> None:
34
34
  option_base.finalize_options(self)
35
35
  if self.remove and len(self.args) != 1:
36
36
  raise DistutilsOptionError(
37
- "Must specify exactly one argument (the alias name) when "
38
- "using --remove"
37
+ "Must specify exactly one argument (the alias name) when using --remove"
39
38
  )
40
39
 
41
- def run(self):
40
+ def run(self) -> None:
42
41
  aliases = self.distribution.get_option_dict('aliases')
43
42
 
44
43
  if not self.args:
@@ -2,6 +2,8 @@
2
2
 
3
3
  Build .egg distributions"""
4
4
 
5
+ from __future__ import annotations
6
+
5
7
  import marshal
6
8
  import os
7
9
  import re
@@ -9,15 +11,22 @@ import sys
9
11
  import textwrap
10
12
  from sysconfig import get_path, get_python_version
11
13
  from types import CodeType
14
+ from typing import TYPE_CHECKING, Literal
12
15
 
13
16
  from setuptools import Command
14
17
  from setuptools.extension import Library
15
18
 
16
- from .._path import ensure_directory
19
+ from .._path import StrPathT, ensure_directory
17
20
 
18
21
  from distutils import log
19
22
  from distutils.dir_util import mkpath, remove_tree
20
23
 
24
+ if TYPE_CHECKING:
25
+ from typing_extensions import TypeAlias
26
+
27
+ # Same as zipfile._ZipFileMode from typeshed
28
+ _ZipFileMode: TypeAlias = Literal["r", "w", "x", "a"]
29
+
21
30
 
22
31
  def _get_purelib():
23
32
  return get_path("purelib")
@@ -41,7 +50,7 @@ def sorted_walk(dir):
41
50
  yield base, dirs, files
42
51
 
43
52
 
44
- def write_stub(resource, pyfile):
53
+ def write_stub(resource, pyfile) -> None:
45
54
  _stub_template = textwrap.dedent(
46
55
  """
47
56
  def __bootstrap__():
@@ -92,7 +101,7 @@ class bdist_egg(Command):
92
101
  self.egg_output = None
93
102
  self.exclude_source_files = None
94
103
 
95
- def finalize_options(self):
104
+ def finalize_options(self) -> None:
96
105
  ei_cmd = self.ei_cmd = self.get_finalized_command("egg_info")
97
106
  self.egg_info = ei_cmd.egg_info
98
107
 
@@ -116,7 +125,7 @@ class bdist_egg(Command):
116
125
 
117
126
  self.egg_output = os.path.join(self.dist_dir, basename + '.egg')
118
127
 
119
- def do_install_data(self):
128
+ def do_install_data(self) -> None:
120
129
  # Hack for packages that install data to install's --install-lib
121
130
  self.get_finalized_command('install').install_lib = self.bdist_dir
122
131
 
@@ -172,7 +181,7 @@ class bdist_egg(Command):
172
181
  self.stubs = []
173
182
  to_compile = []
174
183
  for p, ext_name in enumerate(ext_outputs):
175
- filename, ext = os.path.splitext(ext_name)
184
+ filename, _ext = os.path.splitext(ext_name)
176
185
  pyfile = os.path.join(self.bdist_dir, strip_module(filename) + '.py')
177
186
  self.stubs.append(pyfile)
178
187
  log.info("creating stub loader for %s", ext_name)
@@ -268,10 +277,10 @@ class bdist_egg(Command):
268
277
  log.warn("zip_safe flag not set; analyzing archive contents...")
269
278
  return analyze_egg(self.bdist_dir, self.stubs)
270
279
 
271
- def gen_header(self):
280
+ def gen_header(self) -> str:
272
281
  return 'w'
273
282
 
274
- def copy_metadata_to(self, target_dir):
283
+ def copy_metadata_to(self, target_dir) -> None:
275
284
  "Copy metadata (egg info) to the target_dir"
276
285
  # normalize the path (so that a forward-slash in egg_info will
277
286
  # match using startswith below)
@@ -313,7 +322,7 @@ class bdist_egg(Command):
313
322
  return all_outputs, ext_outputs
314
323
 
315
324
 
316
- NATIVE_EXTENSIONS = dict.fromkeys('.dll .so .dylib .pyd'.split())
325
+ NATIVE_EXTENSIONS: dict[str, None] = dict.fromkeys('.dll .so .dylib .pyd'.split())
317
326
 
318
327
 
319
328
  def walk_egg(egg_dir):
@@ -344,7 +353,7 @@ def analyze_egg(egg_dir, stubs):
344
353
  return safe
345
354
 
346
355
 
347
- def write_safety_flag(egg_dir, safe):
356
+ def write_safety_flag(egg_dir, safe) -> None:
348
357
  # Write or remove zip safety flag file(s)
349
358
  for flag, fn in safety_flags.items():
350
359
  fn = os.path.join(egg_dir, fn)
@@ -412,7 +421,7 @@ def iter_symbols(code):
412
421
  yield from iter_symbols(const)
413
422
 
414
423
 
415
- def can_scan():
424
+ def can_scan() -> bool:
416
425
  if not sys.platform.startswith('java') and sys.platform != 'cli':
417
426
  # CPython, PyPy, etc.
418
427
  return True
@@ -431,8 +440,13 @@ INSTALL_DIRECTORY_ATTRS = ['install_lib', 'install_dir', 'install_data', 'instal
431
440
 
432
441
 
433
442
  def make_zipfile(
434
- zip_filename, base_dir, verbose=False, dry_run=False, compress=True, mode='w'
435
- ):
443
+ zip_filename: StrPathT,
444
+ base_dir,
445
+ verbose: bool = False,
446
+ dry_run: bool = False,
447
+ compress=True,
448
+ mode: _ZipFileMode = 'w',
449
+ ) -> StrPathT:
436
450
  """Create a zip file from all the files under 'base_dir'. The output
437
451
  zip file will be named 'base_dir' + ".zip". Uses either the "zipfile"
438
452
  Python module (if available) or the InfoZIP "zip" utility (if installed
@@ -441,7 +455,7 @@ def make_zipfile(
441
455
  """
442
456
  import zipfile
443
457
 
444
- mkpath(os.path.dirname(zip_filename), dry_run=dry_run)
458
+ mkpath(os.path.dirname(zip_filename), dry_run=dry_run) # type: ignore[arg-type] # python/mypy#18075
445
459
  log.info("creating '%s' and adding '%s' to it", zip_filename, base_dir)
446
460
 
447
461
  def visit(z, dirname, names):
@@ -15,7 +15,7 @@ class bdist_rpm(orig.bdist_rpm):
15
15
 
16
16
  distribution: Distribution # override distutils.dist.Distribution with setuptools.dist.Distribution
17
17
 
18
- def run(self):
18
+ def run(self) -> None:
19
19
  SetuptoolsDeprecationWarning.emit(
20
20
  "Deprecated command",
21
21
  """