py2docfx 0.1.9.dev1897607__py3-none-any.whl → 0.1.9.dev1926139__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. py2docfx/__main__.py +77 -22
  2. py2docfx/convert_prepare/environment.py +59 -19
  3. py2docfx/convert_prepare/generate_document.py +12 -5
  4. py2docfx/convert_prepare/get_source.py +5 -1
  5. py2docfx/convert_prepare/git.py +24 -20
  6. py2docfx/convert_prepare/package_info.py +15 -9
  7. py2docfx/convert_prepare/pip_utils.py +29 -8
  8. py2docfx/convert_prepare/post_process/merge_toc.py +5 -1
  9. py2docfx/convert_prepare/sphinx_caller.py +31 -14
  10. py2docfx/convert_prepare/tests/test_generate_document.py +6 -4
  11. py2docfx/convert_prepare/tests/test_get_source.py +6 -6
  12. py2docfx/convert_prepare/tests/test_params.py +1 -1
  13. py2docfx/convert_prepare/tests/test_sphinx_caller.py +5 -3
  14. py2docfx/convert_prepare/tests/utils.py +11 -0
  15. py2docfx/docfx_yaml/build_finished.py +11 -3
  16. py2docfx/docfx_yaml/convert_class.py +4 -2
  17. py2docfx/docfx_yaml/convert_enum.py +4 -2
  18. py2docfx/docfx_yaml/convert_module.py +4 -2
  19. py2docfx/docfx_yaml/convert_package.py +4 -2
  20. py2docfx/docfx_yaml/logger.py +68 -0
  21. py2docfx/docfx_yaml/process_doctree.py +6 -4
  22. py2docfx/docfx_yaml/translator.py +5 -7
  23. py2docfx/docfx_yaml/writer.py +10 -4
  24. py2docfx/docfx_yaml/yaml_builder.py +0 -1
  25. py2docfx/venv/basevenv/Lib/site-packages/_distutils_hack/__init__.py +2 -3
  26. py2docfx/venv/basevenv/Lib/site-packages/packaging/__init__.py +2 -2
  27. py2docfx/venv/basevenv/Lib/site-packages/packaging/_elffile.py +4 -4
  28. py2docfx/venv/basevenv/Lib/site-packages/packaging/_manylinux.py +1 -0
  29. py2docfx/venv/basevenv/Lib/site-packages/packaging/licenses/__init__.py +145 -0
  30. py2docfx/venv/basevenv/Lib/site-packages/packaging/licenses/_spdx.py +759 -0
  31. py2docfx/venv/basevenv/Lib/site-packages/packaging/markers.py +15 -9
  32. py2docfx/venv/basevenv/Lib/site-packages/packaging/metadata.py +83 -24
  33. py2docfx/venv/basevenv/Lib/site-packages/packaging/specifiers.py +19 -8
  34. py2docfx/venv/basevenv/Lib/site-packages/packaging/tags.py +78 -29
  35. py2docfx/venv/basevenv/Lib/site-packages/packaging/utils.py +33 -44
  36. py2docfx/venv/basevenv/Lib/site-packages/packaging/version.py +26 -7
  37. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/__init__.py +27 -32
  38. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +4 -4
  39. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/tests/test_resources.py +7 -7
  40. py2docfx/venv/basevenv/Lib/site-packages/pkg_resources/tests/test_working_set.py +1 -1
  41. py2docfx/venv/basevenv/Lib/site-packages/setuptools/__init__.py +7 -9
  42. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compat/py38.py +1 -1
  43. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/dir_util.py +3 -8
  44. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +22 -0
  45. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_importlib.py +1 -4
  46. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_path.py +5 -8
  47. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_reqs.py +2 -1
  48. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_shutil.py +53 -0
  49. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +2 -2
  50. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +4 -4
  51. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +1 -0
  52. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/licenses/__init__.py +145 -0
  53. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/licenses/_spdx.py +759 -0
  54. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/markers.py +15 -9
  55. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +83 -24
  56. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +19 -8
  57. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/tags.py +78 -29
  58. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/utils.py +33 -44
  59. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/packaging/version.py +26 -7
  60. py2docfx/venv/basevenv/Lib/site-packages/setuptools/archive_util.py +6 -4
  61. py2docfx/venv/basevenv/Lib/site-packages/setuptools/build_meta.py +25 -19
  62. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/__init__.py +9 -1
  63. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/_requirestxt.py +4 -4
  64. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/alias.py +3 -4
  65. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_egg.py +27 -13
  66. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_rpm.py +1 -1
  67. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_wheel.py +43 -84
  68. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build.py +3 -3
  69. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_clib.py +2 -9
  70. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_ext.py +15 -14
  71. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/build_py.py +26 -30
  72. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/develop.py +4 -4
  73. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/dist_info.py +3 -7
  74. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/easy_install.py +57 -80
  75. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/editable_wheel.py +21 -23
  76. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/egg_info.py +32 -32
  77. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install.py +31 -13
  78. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_egg_info.py +4 -4
  79. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_lib.py +10 -7
  80. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install_scripts.py +2 -2
  81. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/rotate.py +6 -6
  82. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/saveopts.py +2 -2
  83. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/sdist.py +11 -10
  84. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/setopt.py +3 -3
  85. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +19 -14
  86. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/expand.py +22 -16
  87. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/pyprojecttoml.py +12 -10
  88. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/setupcfg.py +39 -47
  89. py2docfx/venv/basevenv/Lib/site-packages/setuptools/depends.py +26 -7
  90. py2docfx/venv/basevenv/Lib/site-packages/setuptools/discovery.py +21 -14
  91. py2docfx/venv/basevenv/Lib/site-packages/setuptools/dist.py +51 -47
  92. py2docfx/venv/basevenv/Lib/site-packages/setuptools/errors.py +21 -26
  93. py2docfx/venv/basevenv/Lib/site-packages/setuptools/extension.py +18 -6
  94. py2docfx/venv/basevenv/Lib/site-packages/setuptools/glob.py +35 -15
  95. py2docfx/venv/basevenv/Lib/site-packages/setuptools/installer.py +6 -1
  96. py2docfx/venv/basevenv/Lib/site-packages/setuptools/launch.py +1 -1
  97. py2docfx/venv/basevenv/Lib/site-packages/setuptools/logging.py +2 -2
  98. py2docfx/venv/basevenv/Lib/site-packages/setuptools/modified.py +16 -6
  99. py2docfx/venv/basevenv/Lib/site-packages/setuptools/monkey.py +5 -5
  100. py2docfx/venv/basevenv/Lib/site-packages/setuptools/msvc.py +35 -24
  101. py2docfx/venv/basevenv/Lib/site-packages/setuptools/namespaces.py +2 -2
  102. py2docfx/venv/basevenv/Lib/site-packages/setuptools/package_index.py +42 -43
  103. py2docfx/venv/basevenv/Lib/site-packages/setuptools/sandbox.py +19 -12
  104. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +5 -3
  105. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +7 -6
  106. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_expand.py +3 -3
  107. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +2 -2
  108. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +21 -11
  109. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +12 -16
  110. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +10 -11
  111. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_egg.py +7 -3
  112. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +10 -33
  113. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_ext.py +2 -2
  114. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_meta.py +1 -1
  115. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_py.py +6 -6
  116. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_config_discovery.py +4 -4
  117. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_core_metadata.py +171 -76
  118. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist.py +11 -13
  119. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist_info.py +1 -1
  120. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +44 -5
  121. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_easy_install.py +32 -26
  122. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_editable_install.py +10 -6
  123. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_egg_info.py +15 -15
  124. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_glob.py +1 -1
  125. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_logging.py +1 -1
  126. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_manifest.py +2 -8
  127. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_packageindex.py +6 -17
  128. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_setuptools.py +4 -3
  129. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_shutil_wrapper.py +23 -0
  130. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_wheel.py +29 -20
  131. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -3
  132. py2docfx/venv/basevenv/Lib/site-packages/setuptools/unicode_utils.py +3 -3
  133. py2docfx/venv/basevenv/Lib/site-packages/setuptools/warnings.py +5 -2
  134. py2docfx/venv/basevenv/Lib/site-packages/setuptools/wheel.py +4 -4
  135. py2docfx/venv/basevenv/Lib/site-packages/wheel/__init__.py +1 -1
  136. py2docfx/venv/basevenv/Lib/site-packages/wheel/_bdist_wheel.py +9 -0
  137. py2docfx/venv/basevenv/Lib/site-packages/wheel/bdist_wheel.py +17 -2
  138. py2docfx/venv/basevenv/Lib/site-packages/wheel/cli/convert.py +279 -220
  139. py2docfx/venv/basevenv/Lib/site-packages/wheel/util.py +0 -9
  140. py2docfx/venv/venv1/Lib/site-packages/_distutils_hack/__init__.py +2 -3
  141. py2docfx/venv/venv1/Lib/site-packages/azure/core/_enum_meta.py +1 -1
  142. py2docfx/venv/venv1/Lib/site-packages/azure/core/_pipeline_client.py +2 -2
  143. py2docfx/venv/venv1/Lib/site-packages/azure/core/_pipeline_client_async.py +5 -3
  144. py2docfx/venv/venv1/Lib/site-packages/azure/core/_version.py +1 -1
  145. py2docfx/venv/venv1/Lib/site-packages/azure/core/credentials.py +6 -1
  146. py2docfx/venv/venv1/Lib/site-packages/azure/core/exceptions.py +13 -5
  147. py2docfx/venv/venv1/Lib/site-packages/azure/core/messaging.py +3 -3
  148. py2docfx/venv/venv1/Lib/site-packages/azure/core/paging.py +1 -1
  149. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/__init__.py +16 -5
  150. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base.py +15 -4
  151. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base_async.py +20 -10
  152. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_tools.py +3 -1
  153. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication.py +55 -19
  154. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication_async.py +46 -15
  155. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_custom_hook.py +8 -3
  156. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_distributed_tracing.py +9 -3
  157. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect.py +9 -2
  158. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect_async.py +4 -1
  159. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry.py +27 -8
  160. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry_async.py +6 -3
  161. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_sensitive_header_cleanup_policy.py +4 -1
  162. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_universal.py +6 -10
  163. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_utils.py +101 -1
  164. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/__init__.py +1 -1
  165. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_aiohttp.py +9 -2
  166. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base.py +1 -1
  167. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base_async.py +7 -5
  168. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_asyncio.py +0 -1
  169. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_basic.py +11 -3
  170. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_trio.py +11 -3
  171. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/_async_poller.py +5 -2
  172. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/_poller.py +4 -1
  173. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/async_base_polling.py +3 -1
  174. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/base_polling.py +47 -16
  175. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_helpers.py +3 -1
  176. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_http_response_impl.py +1 -1
  177. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_basic.py +3 -1
  178. py2docfx/venv/venv1/Lib/site-packages/azure/core/serialization.py +1 -1
  179. py2docfx/venv/venv1/Lib/site-packages/azure/core/settings.py +15 -3
  180. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/_abstract_span.py +15 -5
  181. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/common.py +1 -1
  182. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator.py +12 -1
  183. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator_async.py +24 -4
  184. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/__init__.py +119 -110
  185. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/_version.py +1 -1
  186. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared.py +3 -1
  187. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared_async.py +10 -1
  188. py2docfx/venv/venv1/Lib/site-packages/google/api/client_pb2.py +41 -39
  189. py2docfx/venv/venv1/Lib/site-packages/google/api/error_reason_pb2.py +2 -2
  190. py2docfx/venv/venv1/Lib/site-packages/google/api/httpbody_pb2.py +2 -2
  191. py2docfx/venv/venv1/Lib/site-packages/google/api/metric_pb2.py +17 -11
  192. py2docfx/venv/venv1/Lib/site-packages/google/api_core/client_options.py +17 -13
  193. py2docfx/venv/venv1/Lib/site-packages/google/api_core/protobuf_helpers.py +1 -3
  194. py2docfx/venv/venv1/Lib/site-packages/google/api_core/version.py +1 -1
  195. py2docfx/venv/venv1/Lib/site-packages/google/auth/_default.py +4 -0
  196. py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/_metadata.py +1 -1
  197. py2docfx/venv/venv1/Lib/site-packages/google/auth/iam.py +25 -8
  198. py2docfx/venv/venv1/Lib/site-packages/google/auth/impersonated_credentials.py +34 -16
  199. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_requests_base.py +2 -1
  200. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/requests.py +2 -3
  201. py2docfx/venv/venv1/Lib/site-packages/google/auth/version.py +1 -1
  202. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_client.py +10 -2
  203. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/service_account.py +1 -0
  204. py2docfx/venv/venv1/Lib/site-packages/jwt/__init__.py +3 -2
  205. py2docfx/venv/venv1/Lib/site-packages/jwt/algorithms.py +31 -16
  206. py2docfx/venv/venv1/Lib/site-packages/jwt/api_jws.py +19 -8
  207. py2docfx/venv/venv1/Lib/site-packages/jwt/api_jwt.py +75 -19
  208. py2docfx/venv/venv1/Lib/site-packages/jwt/exceptions.py +8 -0
  209. py2docfx/venv/venv1/Lib/site-packages/jwt/help.py +4 -1
  210. py2docfx/venv/venv1/Lib/site-packages/jwt/jwks_client.py +4 -2
  211. py2docfx/venv/venv1/Lib/site-packages/jwt/utils.py +7 -10
  212. py2docfx/venv/venv1/Lib/site-packages/msal/application.py +1 -1
  213. py2docfx/venv/venv1/Lib/site-packages/msal/managed_identity.py +5 -3
  214. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/__init__.py +27 -32
  215. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +4 -4
  216. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_resources.py +7 -7
  217. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_working_set.py +1 -1
  218. py2docfx/venv/venv1/Lib/site-packages/proto/enums.py +3 -1
  219. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/collections/repeated.py +7 -2
  220. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/compat.py +18 -21
  221. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/message.py +7 -3
  222. py2docfx/venv/venv1/Lib/site-packages/proto/message.py +6 -35
  223. py2docfx/venv/venv1/Lib/site-packages/proto/version.py +1 -1
  224. py2docfx/venv/venv1/Lib/site-packages/setuptools/__init__.py +7 -9
  225. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compat/py38.py +1 -1
  226. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/dir_util.py +3 -8
  227. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +22 -0
  228. py2docfx/venv/venv1/Lib/site-packages/setuptools/_importlib.py +1 -4
  229. py2docfx/venv/venv1/Lib/site-packages/setuptools/_path.py +5 -8
  230. py2docfx/venv/venv1/Lib/site-packages/setuptools/_reqs.py +2 -1
  231. py2docfx/venv/venv1/Lib/site-packages/setuptools/_shutil.py +53 -0
  232. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +2 -2
  233. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +4 -4
  234. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +1 -0
  235. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/licenses/__init__.py +145 -0
  236. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/licenses/_spdx.py +759 -0
  237. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/markers.py +15 -9
  238. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +83 -24
  239. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +19 -8
  240. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/tags.py +78 -29
  241. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/utils.py +33 -44
  242. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/version.py +26 -7
  243. py2docfx/venv/venv1/Lib/site-packages/setuptools/archive_util.py +6 -4
  244. py2docfx/venv/venv1/Lib/site-packages/setuptools/build_meta.py +25 -19
  245. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/__init__.py +9 -1
  246. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/_requirestxt.py +4 -4
  247. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/alias.py +3 -4
  248. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_egg.py +27 -13
  249. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_rpm.py +1 -1
  250. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +43 -84
  251. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build.py +3 -3
  252. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_clib.py +2 -9
  253. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_ext.py +15 -14
  254. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_py.py +26 -30
  255. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/develop.py +4 -4
  256. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/dist_info.py +3 -7
  257. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/easy_install.py +57 -80
  258. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/editable_wheel.py +21 -23
  259. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/egg_info.py +32 -32
  260. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install.py +31 -13
  261. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_egg_info.py +4 -4
  262. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_lib.py +10 -7
  263. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_scripts.py +2 -2
  264. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/rotate.py +6 -6
  265. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/saveopts.py +2 -2
  266. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/sdist.py +11 -10
  267. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/setopt.py +3 -3
  268. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +19 -14
  269. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/expand.py +22 -16
  270. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/pyprojecttoml.py +12 -10
  271. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/setupcfg.py +39 -47
  272. py2docfx/venv/venv1/Lib/site-packages/setuptools/depends.py +26 -7
  273. py2docfx/venv/venv1/Lib/site-packages/setuptools/discovery.py +21 -14
  274. py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +51 -47
  275. py2docfx/venv/venv1/Lib/site-packages/setuptools/errors.py +21 -26
  276. py2docfx/venv/venv1/Lib/site-packages/setuptools/extension.py +18 -6
  277. py2docfx/venv/venv1/Lib/site-packages/setuptools/glob.py +35 -15
  278. py2docfx/venv/venv1/Lib/site-packages/setuptools/installer.py +6 -1
  279. py2docfx/venv/venv1/Lib/site-packages/setuptools/launch.py +1 -1
  280. py2docfx/venv/venv1/Lib/site-packages/setuptools/logging.py +2 -2
  281. py2docfx/venv/venv1/Lib/site-packages/setuptools/modified.py +16 -6
  282. py2docfx/venv/venv1/Lib/site-packages/setuptools/monkey.py +5 -5
  283. py2docfx/venv/venv1/Lib/site-packages/setuptools/msvc.py +35 -24
  284. py2docfx/venv/venv1/Lib/site-packages/setuptools/namespaces.py +2 -2
  285. py2docfx/venv/venv1/Lib/site-packages/setuptools/package_index.py +42 -43
  286. py2docfx/venv/venv1/Lib/site-packages/setuptools/sandbox.py +19 -12
  287. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +5 -3
  288. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +7 -6
  289. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_expand.py +3 -3
  290. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +2 -2
  291. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +21 -11
  292. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +12 -16
  293. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +10 -11
  294. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_egg.py +7 -3
  295. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +10 -33
  296. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_ext.py +2 -2
  297. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_meta.py +1 -1
  298. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_py.py +6 -6
  299. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_config_discovery.py +4 -4
  300. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_core_metadata.py +171 -76
  301. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist.py +11 -13
  302. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist_info.py +1 -1
  303. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +44 -5
  304. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_easy_install.py +32 -26
  305. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_editable_install.py +10 -6
  306. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_egg_info.py +15 -15
  307. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_glob.py +1 -1
  308. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_logging.py +1 -1
  309. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_manifest.py +2 -8
  310. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_packageindex.py +6 -17
  311. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_setuptools.py +4 -3
  312. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_shutil_wrapper.py +23 -0
  313. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_wheel.py +29 -20
  314. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -3
  315. py2docfx/venv/venv1/Lib/site-packages/setuptools/unicode_utils.py +3 -3
  316. py2docfx/venv/venv1/Lib/site-packages/setuptools/warnings.py +5 -2
  317. py2docfx/venv/venv1/Lib/site-packages/setuptools/wheel.py +4 -4
  318. py2docfx/venv/venv1/Lib/site-packages/wheel/__init__.py +1 -1
  319. py2docfx/venv/venv1/Lib/site-packages/wheel/_bdist_wheel.py +9 -0
  320. py2docfx/venv/venv1/Lib/site-packages/wheel/bdist_wheel.py +17 -2
  321. py2docfx/venv/venv1/Lib/site-packages/wheel/cli/convert.py +279 -220
  322. py2docfx/venv/venv1/Lib/site-packages/wheel/util.py +0 -9
  323. {py2docfx-0.1.9.dev1897607.dist-info → py2docfx-0.1.9.dev1926139.dist-info}/METADATA +1 -1
  324. {py2docfx-0.1.9.dev1897607.dist-info → py2docfx-0.1.9.dev1926139.dist-info}/RECORD +327 -385
  325. {py2docfx-0.1.9.dev1897607.dist-info → py2docfx-0.1.9.dev1926139.dist-info}/WHEEL +1 -1
  326. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +0 -36
  327. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +0 -168
  328. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +0 -210
  329. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +0 -38
  330. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +0 -171
  331. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/__init__.py +0 -0
  332. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py38.py +0 -11
  333. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py39.py +0 -10
  334. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/functional.py +0 -81
  335. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/future/__init__.py +0 -0
  336. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/future/adapters.py +0 -95
  337. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +0 -194
  338. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +0 -106
  339. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/__init__.py +0 -0
  340. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/_path.py +0 -56
  341. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/__init__.py +0 -0
  342. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py312.py +0 -18
  343. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py39.py +0 -10
  344. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/__init__.py +0 -0
  345. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py +0 -0
  346. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/__init__.py +0 -0
  347. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py +0 -0
  348. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py +0 -0
  349. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py +0 -104
  350. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_contents.py +0 -43
  351. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_custom.py +0 -47
  352. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_files.py +0 -117
  353. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_functional.py +0 -242
  354. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_open.py +0 -89
  355. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_path.py +0 -65
  356. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_read.py +0 -97
  357. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_reader.py +0 -145
  358. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_resource.py +0 -241
  359. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/util.py +0 -164
  360. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/zip.py +0 -32
  361. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +0 -36
  362. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +0 -168
  363. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +0 -210
  364. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +0 -38
  365. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +0 -171
  366. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/__init__.py +0 -0
  367. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py38.py +0 -11
  368. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py39.py +0 -10
  369. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/functional.py +0 -81
  370. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/future/__init__.py +0 -0
  371. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/future/adapters.py +0 -95
  372. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +0 -194
  373. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +0 -106
  374. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/__init__.py +0 -0
  375. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/_path.py +0 -56
  376. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/__init__.py +0 -0
  377. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py312.py +0 -18
  378. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py39.py +0 -10
  379. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/__init__.py +0 -0
  380. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py +0 -0
  381. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/__init__.py +0 -0
  382. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py +0 -0
  383. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py +0 -0
  384. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py +0 -104
  385. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_contents.py +0 -43
  386. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_custom.py +0 -47
  387. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_files.py +0 -117
  388. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_functional.py +0 -242
  389. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_open.py +0 -89
  390. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_path.py +0 -65
  391. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_read.py +0 -97
  392. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_reader.py +0 -145
  393. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_resource.py +0 -241
  394. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/util.py +0 -164
  395. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/zip.py +0 -32
  396. /py2docfx/convert_prepare/conf_templates/{master_doc.rst_t → root_doc.rst_t} +0 -0
  397. {py2docfx-0.1.9.dev1897607.dist-info → py2docfx-0.1.9.dev1926139.dist-info}/top_level.txt +0 -0
@@ -21,8 +21,8 @@ from __future__ import annotations
21
21
 
22
22
  import sys
23
23
 
24
- if sys.version_info < (3, 8): # noqa: UP036 # Check for unsupported versions
25
- raise RuntimeError("Python 3.8 or later is required")
24
+ if sys.version_info < (3, 9): # noqa: UP036 # Check for unsupported versions
25
+ raise RuntimeError("Python 3.9 or later is required")
26
26
 
27
27
  import _imp
28
28
  import collections
@@ -50,22 +50,17 @@ import types
50
50
  import warnings
51
51
  import zipfile
52
52
  import zipimport
53
+ from collections.abc import Iterable, Iterator, Mapping, MutableSequence
53
54
  from pkgutil import get_importer
54
55
  from typing import (
55
56
  TYPE_CHECKING,
56
57
  Any,
57
58
  BinaryIO,
58
59
  Callable,
59
- Dict,
60
- Iterable,
61
- Iterator,
62
60
  Literal,
63
- Mapping,
64
- MutableSequence,
65
61
  NamedTuple,
66
62
  NoReturn,
67
63
  Protocol,
68
- Tuple,
69
64
  TypeVar,
70
65
  Union,
71
66
  overload,
@@ -172,7 +167,7 @@ def _sget_dict(val):
172
167
  return val.copy()
173
168
 
174
169
 
175
- def _sset_dict(key, ob, state):
170
+ def _sset_dict(key, ob, state) -> None:
176
171
  ob.clear()
177
172
  ob.update(state)
178
173
 
@@ -181,7 +176,7 @@ def _sget_object(val):
181
176
  return val.__getstate__()
182
177
 
183
178
 
184
- def _sset_object(key, ob, state):
179
+ def _sset_object(key, ob, state) -> None:
185
180
  ob.__setstate__(state)
186
181
 
187
182
 
@@ -387,7 +382,7 @@ class UnknownExtra(ResolutionError):
387
382
 
388
383
  _provider_factories: dict[type[_ModuleLike], _ProviderFactoryType] = {}
389
384
 
390
- PY_MAJOR = '{}.{}'.format(*sys.version_info)
385
+ PY_MAJOR = f'{sys.version_info.major}.{sys.version_info.minor}'
391
386
  EGG_DIST = 3
392
387
  BINARY_DIST = 2
393
388
  SOURCE_DIST = 1
@@ -424,7 +419,7 @@ def get_provider(moduleOrReq: str | Requirement) -> IResourceProvider | Distribu
424
419
  return _find_adapter(_provider_factories, loader)(module)
425
420
 
426
421
 
427
- @functools.lru_cache(maxsize=None)
422
+ @functools.cache
428
423
  def _macos_vers():
429
424
  version = platform.mac_ver()[0]
430
425
  # fallback for MacPorts
@@ -1090,7 +1085,7 @@ class WorkingSet:
1090
1085
  for dist in self:
1091
1086
  callback(dist)
1092
1087
 
1093
- def _added_new(self, dist):
1088
+ def _added_new(self, dist) -> None:
1094
1089
  for callback in self.callbacks:
1095
1090
  callback(dist)
1096
1091
 
@@ -1120,7 +1115,7 @@ class WorkingSet:
1120
1115
  self.callbacks = callbacks[:]
1121
1116
 
1122
1117
 
1123
- class _ReqExtras(Dict["Requirement", Tuple[str, ...]]):
1118
+ class _ReqExtras(dict["Requirement", tuple[str, ...]]):
1124
1119
  """
1125
1120
  Map each requirement to the extras that demanded it.
1126
1121
  """
@@ -1463,7 +1458,7 @@ class ResourceManager:
1463
1458
  return target_path
1464
1459
 
1465
1460
  @staticmethod
1466
- def _warn_unsafe_extraction_path(path):
1461
+ def _warn_unsafe_extraction_path(path) -> None:
1467
1462
  """
1468
1463
  If the default extraction path is overridden and set to an insecure
1469
1464
  location, such as /tmp, it opens up an opportunity for an attacker to
@@ -1577,7 +1572,7 @@ def safe_version(version: str) -> str:
1577
1572
  return re.sub('[^A-Za-z0-9.]+', '-', version)
1578
1573
 
1579
1574
 
1580
- def _forgiving_version(version):
1575
+ def _forgiving_version(version) -> str:
1581
1576
  """Fallback when ``safe_version`` is not safe enough
1582
1577
  >>> parse_version(_forgiving_version('0.23ubuntu1'))
1583
1578
  <Version('0.23.dev0+sanitized.ubuntu1')>
@@ -1779,7 +1774,7 @@ class NullProvider:
1779
1774
  return base
1780
1775
 
1781
1776
  @staticmethod
1782
- def _validate_resource_path(path):
1777
+ def _validate_resource_path(path) -> None:
1783
1778
  """
1784
1779
  Validate the resource paths according to the docs.
1785
1780
  https://setuptools.pypa.io/en/latest/pkg_resources.html#basic-resource-access
@@ -1890,7 +1885,7 @@ class EggProvider(NullProvider):
1890
1885
  egg = next(eggs, None)
1891
1886
  egg and self._set_egg(egg)
1892
1887
 
1893
- def _set_egg(self, path: str):
1888
+ def _set_egg(self, path: str) -> None:
1894
1889
  self.egg_name = os.path.basename(path)
1895
1890
  self.egg_info = os.path.join(path, 'EGG-INFO')
1896
1891
  self.egg_root = path
@@ -1918,7 +1913,7 @@ class DefaultProvider(EggProvider):
1918
1913
  return stream.read()
1919
1914
 
1920
1915
  @classmethod
1921
- def _register(cls):
1916
+ def _register(cls) -> None:
1922
1917
  loader_names = (
1923
1918
  'SourceFileLoader',
1924
1919
  'SourcelessFileLoader',
@@ -1952,7 +1947,7 @@ class EmptyProvider(NullProvider):
1952
1947
  empty_provider = EmptyProvider()
1953
1948
 
1954
1949
 
1955
- class ZipManifests(Dict[str, "MemoizedZipManifests.manifest_mod"]):
1950
+ class ZipManifests(dict[str, "MemoizedZipManifests.manifest_mod"]):
1956
1951
  """
1957
1952
  zip manifest builder
1958
1953
  """
@@ -2069,7 +2064,7 @@ class ZipProvider(EggProvider):
2069
2064
  # return the extracted directory name
2070
2065
  return os.path.dirname(last)
2071
2066
 
2072
- timestamp, size = self._get_date_and_size(self.zipinfo[zip_path])
2067
+ timestamp, _size = self._get_date_and_size(self.zipinfo[zip_path])
2073
2068
 
2074
2069
  if not WRITE_SUPPORT:
2075
2070
  raise OSError(
@@ -2208,7 +2203,7 @@ class FileMetadata(EmptyProvider):
2208
2203
  self._warn_on_replacement(metadata)
2209
2204
  return metadata
2210
2205
 
2211
- def _warn_on_replacement(self, metadata):
2206
+ def _warn_on_replacement(self, metadata) -> None:
2212
2207
  replacement_char = '�'
2213
2208
  if replacement_char in metadata:
2214
2209
  tmpl = "{self.path} could not be properly decoded in UTF-8"
@@ -2505,7 +2500,7 @@ def _handle_ns(packageName, path_item):
2505
2500
  return subpath
2506
2501
 
2507
2502
 
2508
- def _rebuild_mod_path(orig_path, package_name, module: types.ModuleType):
2503
+ def _rebuild_mod_path(orig_path, package_name, module: types.ModuleType) -> None:
2509
2504
  """
2510
2505
  Rebuild module.__path__ ensuring that all entries are ordered
2511
2506
  corresponding to their sys.path order
@@ -2624,7 +2619,7 @@ def null_ns_handler(
2624
2619
  path_item: str | None,
2625
2620
  packageName: str | None,
2626
2621
  module: _ModuleLike | None,
2627
- ):
2622
+ ) -> None:
2628
2623
  return None
2629
2624
 
2630
2625
 
@@ -2635,7 +2630,7 @@ register_namespace_handler(object, null_ns_handler)
2635
2630
  def normalize_path(filename: StrPath) -> str: ...
2636
2631
  @overload
2637
2632
  def normalize_path(filename: BytesPath) -> bytes: ...
2638
- def normalize_path(filename: StrOrBytesPath):
2633
+ def normalize_path(filename: StrOrBytesPath) -> str | bytes:
2639
2634
  """Normalize a file/dir name for comparison purposes"""
2640
2635
  return os.path.normcase(os.path.realpath(os.path.normpath(_cygwin_patch(filename))))
2641
2636
 
@@ -2662,7 +2657,7 @@ if TYPE_CHECKING:
2662
2657
 
2663
2658
  else:
2664
2659
 
2665
- @functools.lru_cache(maxsize=None)
2660
+ @functools.cache
2666
2661
  def _normalize_cached(filename):
2667
2662
  return normalize_path(filename)
2668
2663
 
@@ -2691,7 +2686,7 @@ def _is_unpacked_egg(path):
2691
2686
  )
2692
2687
 
2693
2688
 
2694
- def _set_parent_ns(packageName):
2689
+ def _set_parent_ns(packageName) -> None:
2695
2690
  parts = packageName.split('.')
2696
2691
  name = parts.pop()
2697
2692
  if parts:
@@ -2777,7 +2772,7 @@ class EntryPoint:
2777
2772
  if require:
2778
2773
  # We could pass `env` and `installer` directly,
2779
2774
  # but keeping `*args` and `**kwargs` for backwards compatibility
2780
- self.require(*args, **kwargs) # type: ignore
2775
+ self.require(*args, **kwargs) # type: ignore[arg-type]
2781
2776
  return self.resolve()
2782
2777
 
2783
2778
  def resolve(self) -> _ResolvedEntryPoint:
@@ -3336,7 +3331,7 @@ class Distribution:
3336
3331
  " to sys.path" % (modname, fn, self.location),
3337
3332
  )
3338
3333
 
3339
- def has_version(self):
3334
+ def has_version(self) -> bool:
3340
3335
  try:
3341
3336
  self.version
3342
3337
  except ValueError:
@@ -3552,7 +3547,7 @@ def ensure_directory(path: StrOrBytesPath) -> None:
3552
3547
  os.makedirs(dirname, exist_ok=True)
3553
3548
 
3554
3549
 
3555
- def _bypass_ensure_directory(path):
3550
+ def _bypass_ensure_directory(path) -> None:
3556
3551
  """Sandbox-bypassing version of ensure_directory()"""
3557
3552
  if not WRITE_SUPPORT:
3558
3553
  raise OSError('"os.mkdir" not supported on this platform.')
@@ -3658,7 +3653,7 @@ def _call_aside(f, *args, **kwargs):
3658
3653
 
3659
3654
 
3660
3655
  @_call_aside
3661
- def _initialize(g=globals()):
3656
+ def _initialize(g=globals()) -> None:
3662
3657
  "Set up global resource manager (deliberately not state-saved)"
3663
3658
  manager = ResourceManager()
3664
3659
  g['_manager'] = manager
@@ -3670,7 +3665,7 @@ def _initialize(g=globals()):
3670
3665
 
3671
3666
 
3672
3667
  @_call_aside
3673
- def _initialize_master_working_set():
3668
+ def _initialize_master_working_set() -> None:
3674
3669
  """
3675
3670
  Prepare the master working set and make the ``require()``
3676
3671
  API available.
@@ -236,7 +236,7 @@ def make_distribution_no_version(tmpdir, basename):
236
236
 
237
237
 
238
238
  @pytest.mark.parametrize(
239
- 'suffix, expected_filename, expected_dist_type',
239
+ ("suffix", "expected_filename", "expected_dist_type"),
240
240
  [
241
241
  ('egg-info', 'PKG-INFO', EggInfoDistribution),
242
242
  ('dist-info', 'METADATA', DistInfoDistribution),
@@ -376,7 +376,7 @@ class TestDeepVersionLookupDistutils:
376
376
  assert dist.version == version
377
377
 
378
378
  @pytest.mark.parametrize(
379
- 'unnormalized, normalized',
379
+ ("unnormalized", "normalized"),
380
380
  [
381
381
  ('foo', 'foo'),
382
382
  ('foo/', 'foo'),
@@ -398,7 +398,7 @@ class TestDeepVersionLookupDistutils:
398
398
  reason='Testing case-insensitive filesystems.',
399
399
  )
400
400
  @pytest.mark.parametrize(
401
- 'unnormalized, normalized',
401
+ ("unnormalized", "normalized"),
402
402
  [
403
403
  ('MiXeD/CasE', 'mixed/case'),
404
404
  ],
@@ -414,7 +414,7 @@ class TestDeepVersionLookupDistutils:
414
414
  reason='Testing systems using backslashes as path separators.',
415
415
  )
416
416
  @pytest.mark.parametrize(
417
- 'unnormalized, expected',
417
+ ("unnormalized", "expected"),
418
418
  [
419
419
  ('forward/slash', 'forward\\slash'),
420
420
  ('forward/slash/', 'forward\\slash'),
@@ -32,7 +32,7 @@ def pairwise(iterable):
32
32
  class Metadata(pkg_resources.EmptyProvider):
33
33
  """Mock object to return metadata as if from an on-disk distribution"""
34
34
 
35
- def __init__(self, *pairs):
35
+ def __init__(self, *pairs) -> None:
36
36
  self.metadata = dict(pairs)
37
37
 
38
38
  def has_metadata(self, name) -> bool:
@@ -119,7 +119,7 @@ class TestDistro:
119
119
  self.checkFooPkg(d)
120
120
 
121
121
  d = Distribution("/some/path")
122
- assert d.py_version == '{}.{}'.format(*sys.version_info)
122
+ assert d.py_version == f'{sys.version_info.major}.{sys.version_info.minor}'
123
123
  assert d.platform is None
124
124
 
125
125
  def testDistroParse(self):
@@ -693,14 +693,14 @@ class TestParsing:
693
693
  ) != Requirement.parse("name[foo,bar]==1.0;python_version=='3.6'")
694
694
 
695
695
  def test_local_version(self):
696
- (req,) = parse_requirements('foo==1.0+org1')
696
+ parse_requirements('foo==1.0+org1')
697
697
 
698
698
  def test_spaces_between_multiple_versions(self):
699
- (req,) = parse_requirements('foo>=1.0, <3')
700
- (req,) = parse_requirements('foo >= 1.0, < 3')
699
+ parse_requirements('foo>=1.0, <3')
700
+ parse_requirements('foo >= 1.0, < 3')
701
701
 
702
702
  @pytest.mark.parametrize(
703
- ['lower', 'upper'],
703
+ ("lower", "upper"),
704
704
  [
705
705
  ('1.2-rc1', '1.2rc1'),
706
706
  ('0.4', '0.4.0'),
@@ -724,7 +724,7 @@ class TestParsing:
724
724
  """
725
725
 
726
726
  @pytest.mark.parametrize(
727
- ['lower', 'upper'],
727
+ ("lower", "upper"),
728
728
  [
729
729
  ('2.1', '2.1.1'),
730
730
  ('2a1', '2b0'),
@@ -56,7 +56,7 @@ def parse_distributions(s):
56
56
 
57
57
 
58
58
  class FakeInstaller:
59
- def __init__(self, installable_dists):
59
+ def __init__(self, installable_dists) -> None:
60
60
  self._installable_dists = installable_dists
61
61
 
62
62
  def __call__(self, req):
@@ -73,8 +73,10 @@ class ProtoEnumMeta(enum.EnumMeta):
73
73
  (
74
74
  descriptor_pb2.EnumValueDescriptorProto(name=name, number=number)
75
75
  # Minor hack to get all the enum variants out.
76
+ # Use the `_member_names` property to get only the enum members
77
+ # See https://github.com/googleapis/proto-plus-python/issues/490
76
78
  for name, number in attrs.items()
77
- if isinstance(number, int)
79
+ if name in attrs._member_names and isinstance(number, int)
78
80
  ),
79
81
  key=lambda v: v.number,
80
82
  ),
@@ -14,6 +14,7 @@
14
14
 
15
15
  import collections
16
16
  import copy
17
+ from typing import Iterable
17
18
 
18
19
  from proto.utils import cached_property
19
20
 
@@ -48,7 +49,7 @@ class Repeated(collections.abc.MutableSequence):
48
49
  def __eq__(self, other):
49
50
  if hasattr(other, "pb"):
50
51
  return tuple(self.pb) == tuple(other.pb)
51
- return tuple(self.pb) == tuple(other)
52
+ return tuple(self.pb) == tuple(other) if isinstance(other, Iterable) else False
52
53
 
53
54
  def __getitem__(self, key):
54
55
  """Return the given item."""
@@ -119,7 +120,11 @@ class RepeatedComposite(Repeated):
119
120
  def __eq__(self, other):
120
121
  if super().__eq__(other):
121
122
  return True
122
- return tuple([i for i in self]) == tuple(other)
123
+ return (
124
+ tuple([i for i in self]) == tuple(other)
125
+ if isinstance(other, Iterable)
126
+ else False
127
+ )
123
128
 
124
129
  def __getitem__(self, key):
125
130
  return self._marshal.to_python(self._pb_type, self.pb[key])
@@ -19,22 +19,20 @@
19
19
  # not be included.
20
20
 
21
21
  from google.protobuf.internal import containers
22
- import google.protobuf
23
22
 
24
- PROTOBUF_VERSION = google.protobuf.__version__
23
+ # Import all message types to ensure that pyext types are recognized
24
+ # when upb types exist. Conda's protobuf defaults to pyext despite upb existing.
25
+ # See https://github.com/googleapis/proto-plus-python/issues/470
26
+ try:
27
+ from google._upb import _message as _message_upb
28
+ except ImportError:
29
+ _message_upb = None
25
30
 
26
- # Import protobuf 4.xx first and fallback to earlier version
27
- # if not present.
28
31
  try:
29
- from google._upb import _message
32
+ from google.protobuf.pyext import _message as _message_pyext
30
33
  except ImportError:
31
- _message = None
34
+ _message_pyext = None
32
35
 
33
- if not _message:
34
- try:
35
- from google.protobuf.pyext import _message
36
- except ImportError:
37
- _message = None
38
36
 
39
37
  repeated_composite_types = (containers.RepeatedCompositeFieldContainer,)
40
38
  repeated_scalar_types = (containers.RepeatedScalarFieldContainer,)
@@ -47,17 +45,16 @@ map_composite_types = (containers.MessageMap,)
47
45
  # See https://github.com/protocolbuffers/protobuf/issues/16596
48
46
  map_composite_type_names = ("MessageMapContainer",)
49
47
 
50
- if _message:
51
- repeated_composite_types += (_message.RepeatedCompositeContainer,)
52
- repeated_scalar_types += (_message.RepeatedScalarContainer,)
48
+ for message in [_message_upb, _message_pyext]:
49
+ if message:
50
+ repeated_composite_types += (message.RepeatedCompositeContainer,)
51
+ repeated_scalar_types += (message.RepeatedScalarContainer,)
53
52
 
54
- # In `proto/marshal.py`, for compatibility with protobuf 5.x,
55
- # we'll use `map_composite_type_names` to check whether
56
- # the name of the class of a protobuf type is
57
- # `MessageMapContainer`, and, if `True`, return a MapComposite.
58
- # See https://github.com/protocolbuffers/protobuf/issues/16596
59
- if PROTOBUF_VERSION[0:2] in ["3.", "4."]:
60
- map_composite_types += (_message.MessageMapContainer,)
53
+ try:
54
+ map_composite_types += (message.MessageMapContainer,)
55
+ except AttributeError:
56
+ # The `MessageMapContainer` attribute is not available in Protobuf 5.x+
57
+ pass
61
58
 
62
59
  __all__ = (
63
60
  "repeated_composite_types",
@@ -34,10 +34,14 @@ class MessageRule:
34
34
  try:
35
35
  # Try the fast path first.
36
36
  return self._descriptor(**value)
37
- except TypeError as ex:
38
- # If we have a type error,
37
+ except (TypeError, ValueError) as ex:
38
+ # If we have a TypeError or Valueerror,
39
39
  # try the slow path in case the error
40
- # was an int64/string issue
40
+ # was:
41
+ # - an int64/string issue.
42
+ # - a missing key issue in case a key only exists with a `_` suffix.
43
+ # See related issue: https://github.com/googleapis/python-api-core/issues/227.
44
+ # - a missing key issue due to nested struct. See: b/321905145.
41
45
  return self._wrapper(value)._pb
42
46
  return value
43
47
 
@@ -481,7 +481,7 @@ class MessageMeta(type):
481
481
  `always_print_fields_with_no_presence` instead. An option that
482
482
  determines whether the default field values should be included in the results.
483
483
  This value must match `always_print_fields_with_no_presence`,
484
- if both arguments are explictly set.
484
+ if both arguments are explicitly set.
485
485
  preserving_proto_field_name (Optional(bool)): An option that
486
486
  determines whether field name representations preserve
487
487
  proto case (snake_case) or use lowerCamelCase. Default is False.
@@ -497,7 +497,7 @@ class MessageMeta(type):
497
497
  always be serialized. Any field that supports presence is not affected by
498
498
  this option (including singular message fields and oneof fields).
499
499
  This value must match `including_default_value_fields`,
500
- if both arguments are explictly set.
500
+ if both arguments are explicitly set.
501
501
  Returns:
502
502
  str: The json string representation of the protocol buffer.
503
503
  """
@@ -537,7 +537,7 @@ class MessageMeta(type):
537
537
  parse it into a message.
538
538
 
539
539
  Args:
540
- paylod: A json string representing a message.
540
+ payload: A json string representing a message.
541
541
  ignore_unknown_fields (Optional(bool)): If True, do not raise errors
542
542
  for unknown fields.
543
543
 
@@ -574,14 +574,14 @@ class MessageMeta(type):
574
574
  `always_print_fields_with_no_presence` instead. An option that
575
575
  determines whether the default field values should be included in the results.
576
576
  This value must match `always_print_fields_with_no_presence`,
577
- if both arguments are explictly set.
577
+ if both arguments are explicitly set.
578
578
  float_precision (Optional(int)): If set, use this to specify float field valid digits.
579
579
  Default is None.
580
580
  always_print_fields_with_no_presence (Optional(bool)): If True, fields without
581
581
  presence (implicit presence scalars, repeated fields, and map fields) will
582
582
  always be serialized. Any field that supports presence is not affected by
583
583
  this option (including singular message fields and oneof fields). This value
584
- must match `including_default_value_fields`, if both arguments are explictly set.
584
+ must match `including_default_value_fields`, if both arguments are explicitly set.
585
585
 
586
586
  Returns:
587
587
  dict: A representation of the protocol buffer using pythonic data structures.
@@ -725,36 +725,7 @@ class Message(metaclass=MessageMeta):
725
725
  "Unknown field for {}: {}".format(self.__class__.__name__, key)
726
726
  )
727
727
 
728
- try:
729
- pb_value = marshal.to_proto(pb_type, value)
730
- except ValueError:
731
- # Underscores may be appended to field names
732
- # that collide with python or proto-plus keywords.
733
- # In case a key only exists with a `_` suffix, coerce the key
734
- # to include the `_` suffix. It's not possible to
735
- # natively define the same field with a trailing underscore in protobuf.
736
- # See related issue
737
- # https://github.com/googleapis/python-api-core/issues/227
738
- if isinstance(value, dict):
739
- if _upb:
740
- # In UPB, pb_type is MessageMeta which doesn't expose attrs like it used to in Python/CPP.
741
- keys_to_update = [
742
- item
743
- for item in value
744
- if item not in pb_type.DESCRIPTOR.fields_by_name
745
- and f"{item}_" in pb_type.DESCRIPTOR.fields_by_name
746
- ]
747
- else:
748
- keys_to_update = [
749
- item
750
- for item in value
751
- if not hasattr(pb_type, item)
752
- and hasattr(pb_type, f"{item}_")
753
- ]
754
- for item in keys_to_update:
755
- value[f"{item}_"] = value.pop(item)
756
-
757
- pb_value = marshal.to_proto(pb_type, value)
728
+ pb_value = marshal.to_proto(pb_type, value)
758
729
 
759
730
  if pb_value is not None:
760
731
  params[key] = pb_value
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  #
15
- __version__ = "1.24.0"
15
+ __version__ = "1.25.0"
@@ -60,7 +60,7 @@ def _install_setup_requires(attrs):
60
60
  fetch_build_eggs interface.
61
61
  """
62
62
 
63
- def __init__(self, attrs: Mapping[str, object]):
63
+ def __init__(self, attrs: Mapping[str, object]) -> None:
64
64
  _incl = 'dependency_links', 'setup_requires'
65
65
  filtered = {k: attrs[k] for k in set(_incl) & set(attrs)}
66
66
  super().__init__(filtered)
@@ -70,7 +70,7 @@ def _install_setup_requires(attrs):
70
70
  def _get_project_config_files(self, filenames=None):
71
71
  """Ignore ``pyproject.toml``, they are not related to setup_requires"""
72
72
  try:
73
- cfg, toml = super()._split_standard_project_metadata(filenames)
73
+ cfg, _toml = super()._split_standard_project_metadata(filenames)
74
74
  except Exception:
75
75
  return filenames, ()
76
76
  return cfg, ()
@@ -89,7 +89,7 @@ def _install_setup_requires(attrs):
89
89
  _fetch_build_eggs(dist)
90
90
 
91
91
 
92
- def _fetch_build_eggs(dist):
92
+ def _fetch_build_eggs(dist: Distribution):
93
93
  try:
94
94
  dist.fetch_build_eggs(dist.setup_requires)
95
95
  except Exception as ex:
@@ -120,10 +120,8 @@ def setup(**attrs):
120
120
  setup.__doc__ = distutils.core.setup.__doc__
121
121
 
122
122
  if TYPE_CHECKING:
123
- from typing_extensions import TypeAlias
124
-
125
123
  # Work around a mypy issue where type[T] can't be used as a base: https://github.com/python/mypy/issues/10962
126
- _Command: TypeAlias = distutils.core.Command
124
+ from distutils.core import Command as _Command
127
125
  else:
128
126
  _Command = monkey.get_unpatched(distutils.core.Command)
129
127
 
@@ -169,7 +167,7 @@ class Command(_Command):
169
167
  command_consumes_arguments = False
170
168
  distribution: Distribution # override distutils.dist.Distribution with setuptools.dist.Distribution
171
169
 
172
- def __init__(self, dist: Distribution, **kw):
170
+ def __init__(self, dist: Distribution, **kw) -> None:
173
171
  """
174
172
  Construct the command for dist, updating
175
173
  vars(self) with any keyword parameters.
@@ -188,7 +186,7 @@ class Command(_Command):
188
186
  )
189
187
  return val
190
188
 
191
- def ensure_string_list(self, option):
189
+ def ensure_string_list(self, option: str) -> None:
192
190
  r"""Ensure that 'option' is a list of strings. If 'option' is
193
191
  currently a string, we split it either on /,\s*/ or /\s+/, so
194
192
  "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become
@@ -228,7 +226,7 @@ class Command(_Command):
228
226
  ) -> _Command:
229
227
  cmd = _Command.reinitialize_command(self, command, reinit_subcommands)
230
228
  vars(cmd).update(kw)
231
- return cmd
229
+ return cmd # pyright: ignore[reportReturnType] # pypa/distutils#307
232
230
 
233
231
  @abstractmethod
234
232
  def initialize_options(self) -> None:
@@ -26,7 +26,7 @@ else:
26
26
 
27
27
  def aix_platform(osname, version, release):
28
28
  try:
29
- import _aix_support # type: ignore
29
+ import _aix_support
30
30
 
31
31
  return _aix_support.aix_platform()
32
32
  except ImportError:
@@ -32,8 +32,9 @@ class SkipRepeatAbsolutePaths(set):
32
32
  def wrapper(path, *args, **kwargs):
33
33
  if path.absolute() in self:
34
34
  return
35
+ result = func(path, *args, **kwargs)
35
36
  self.add(path.absolute())
36
- return func(path, *args, **kwargs)
37
+ return result
37
38
 
38
39
  return wrapper
39
40
 
@@ -44,7 +45,7 @@ wrapper = SkipRepeatAbsolutePaths().wrap
44
45
 
45
46
  @functools.singledispatch
46
47
  @wrapper
47
- def mkpath(name: pathlib.Path, mode=0o777, verbose=True, dry_run=False):
48
+ def mkpath(name: pathlib.Path, mode=0o777, verbose=True, dry_run=False) -> None:
48
49
  """Create a directory and any missing ancestor directories.
49
50
 
50
51
  If the directory already exists (or if 'name' is the empty string, which
@@ -52,21 +53,15 @@ def mkpath(name: pathlib.Path, mode=0o777, verbose=True, dry_run=False):
52
53
  Raise DistutilsFileError if unable to create some directory along the way
53
54
  (eg. some sub-path exists, but is a file rather than a directory).
54
55
  If 'verbose' is true, log the directory created.
55
- Return the list of directories actually created.
56
56
  """
57
57
  if verbose and not name.is_dir():
58
58
  log.info("creating %s", name)
59
59
 
60
- ancestry = itertools.chain((name,), name.parents)
61
- missing = (path for path in ancestry if not path.is_dir())
62
-
63
60
  try:
64
61
  dry_run or name.mkdir(mode=mode, parents=True, exist_ok=True)
65
62
  except OSError as exc:
66
63
  raise DistutilsFileError(f"could not create '{name}': {exc.args[-1]}")
67
64
 
68
- return list(map(str, missing))
69
-
70
65
 
71
66
  @mkpath.register
72
67
  def _(name: str, *args, **kwargs):