py2docfx 0.1.9.dev1897607__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 (363) 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/pkg_resources/__init__.py +27 -32
  184. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +4 -4
  185. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_resources.py +7 -7
  186. py2docfx/venv/venv1/Lib/site-packages/pkg_resources/tests/test_working_set.py +1 -1
  187. py2docfx/venv/venv1/Lib/site-packages/proto/enums.py +3 -1
  188. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/collections/repeated.py +7 -2
  189. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/compat.py +18 -21
  190. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/message.py +7 -3
  191. py2docfx/venv/venv1/Lib/site-packages/proto/message.py +6 -35
  192. py2docfx/venv/venv1/Lib/site-packages/proto/version.py +1 -1
  193. py2docfx/venv/venv1/Lib/site-packages/setuptools/__init__.py +7 -9
  194. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compat/py38.py +1 -1
  195. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/dir_util.py +3 -8
  196. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +22 -0
  197. py2docfx/venv/venv1/Lib/site-packages/setuptools/_importlib.py +1 -4
  198. py2docfx/venv/venv1/Lib/site-packages/setuptools/_path.py +5 -8
  199. py2docfx/venv/venv1/Lib/site-packages/setuptools/_reqs.py +2 -1
  200. py2docfx/venv/venv1/Lib/site-packages/setuptools/_shutil.py +53 -0
  201. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +2 -2
  202. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +4 -4
  203. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +1 -0
  204. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/licenses/__init__.py +145 -0
  205. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/licenses/_spdx.py +759 -0
  206. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/markers.py +15 -9
  207. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +83 -24
  208. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +19 -8
  209. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/tags.py +78 -29
  210. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/utils.py +33 -44
  211. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/packaging/version.py +26 -7
  212. py2docfx/venv/venv1/Lib/site-packages/setuptools/archive_util.py +6 -4
  213. py2docfx/venv/venv1/Lib/site-packages/setuptools/build_meta.py +23 -17
  214. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/__init__.py +9 -1
  215. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/_requirestxt.py +4 -4
  216. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/alias.py +3 -4
  217. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_egg.py +27 -13
  218. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_rpm.py +1 -1
  219. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +18 -45
  220. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build.py +3 -3
  221. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_clib.py +2 -9
  222. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_ext.py +13 -12
  223. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/build_py.py +17 -16
  224. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/develop.py +4 -4
  225. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/dist_info.py +3 -7
  226. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/easy_install.py +55 -78
  227. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/editable_wheel.py +19 -21
  228. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/egg_info.py +29 -30
  229. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install.py +31 -13
  230. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_egg_info.py +2 -2
  231. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_lib.py +10 -7
  232. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install_scripts.py +2 -2
  233. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/rotate.py +6 -6
  234. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/sdist.py +9 -8
  235. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/setopt.py +2 -2
  236. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +19 -14
  237. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/expand.py +22 -16
  238. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/pyprojecttoml.py +25 -10
  239. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/setupcfg.py +39 -47
  240. py2docfx/venv/venv1/Lib/site-packages/setuptools/depends.py +26 -7
  241. py2docfx/venv/venv1/Lib/site-packages/setuptools/discovery.py +21 -14
  242. py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +48 -45
  243. py2docfx/venv/venv1/Lib/site-packages/setuptools/errors.py +21 -26
  244. py2docfx/venv/venv1/Lib/site-packages/setuptools/extension.py +18 -6
  245. py2docfx/venv/venv1/Lib/site-packages/setuptools/glob.py +35 -15
  246. py2docfx/venv/venv1/Lib/site-packages/setuptools/installer.py +6 -1
  247. py2docfx/venv/venv1/Lib/site-packages/setuptools/launch.py +1 -1
  248. py2docfx/venv/venv1/Lib/site-packages/setuptools/logging.py +2 -2
  249. py2docfx/venv/venv1/Lib/site-packages/setuptools/modified.py +16 -6
  250. py2docfx/venv/venv1/Lib/site-packages/setuptools/monkey.py +2 -2
  251. py2docfx/venv/venv1/Lib/site-packages/setuptools/msvc.py +25 -14
  252. py2docfx/venv/venv1/Lib/site-packages/setuptools/namespaces.py +2 -2
  253. py2docfx/venv/venv1/Lib/site-packages/setuptools/package_index.py +42 -43
  254. py2docfx/venv/venv1/Lib/site-packages/setuptools/sandbox.py +19 -12
  255. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +5 -3
  256. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +7 -6
  257. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_expand.py +3 -3
  258. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +9 -2
  259. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +21 -11
  260. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +12 -16
  261. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +10 -11
  262. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_egg.py +7 -3
  263. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +10 -33
  264. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_ext.py +2 -2
  265. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_meta.py +1 -1
  266. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_py.py +6 -6
  267. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_config_discovery.py +4 -4
  268. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_core_metadata.py +3 -4
  269. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist.py +11 -13
  270. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist_info.py +1 -1
  271. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +44 -5
  272. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_easy_install.py +32 -26
  273. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_editable_install.py +10 -6
  274. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_egg_info.py +15 -15
  275. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_glob.py +1 -1
  276. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_logging.py +1 -1
  277. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_manifest.py +2 -8
  278. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_packageindex.py +6 -17
  279. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_setuptools.py +4 -3
  280. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_shutil_wrapper.py +23 -0
  281. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_wheel.py +29 -20
  282. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -3
  283. py2docfx/venv/venv1/Lib/site-packages/setuptools/warnings.py +5 -2
  284. py2docfx/venv/venv1/Lib/site-packages/setuptools/wheel.py +4 -4
  285. py2docfx/venv/venv1/Lib/site-packages/wheel/__init__.py +1 -1
  286. py2docfx/venv/venv1/Lib/site-packages/wheel/_bdist_wheel.py +9 -0
  287. py2docfx/venv/venv1/Lib/site-packages/wheel/bdist_wheel.py +17 -2
  288. py2docfx/venv/venv1/Lib/site-packages/wheel/cli/convert.py +280 -220
  289. py2docfx/venv/venv1/Lib/site-packages/wheel/util.py +0 -9
  290. {py2docfx-0.1.9.dev1897607.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/METADATA +1 -1
  291. {py2docfx-0.1.9.dev1897607.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/RECORD +293 -353
  292. {py2docfx-0.1.9.dev1897607.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/WHEEL +1 -1
  293. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +0 -36
  294. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +0 -168
  295. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +0 -210
  296. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +0 -38
  297. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +0 -171
  298. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/__init__.py +0 -0
  299. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py38.py +0 -11
  300. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py39.py +0 -10
  301. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/functional.py +0 -81
  302. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/future/__init__.py +0 -0
  303. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/future/adapters.py +0 -95
  304. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +0 -194
  305. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +0 -106
  306. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/__init__.py +0 -0
  307. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/_path.py +0 -56
  308. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/__init__.py +0 -0
  309. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py312.py +0 -18
  310. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py39.py +0 -10
  311. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/__init__.py +0 -0
  312. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py +0 -0
  313. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/__init__.py +0 -0
  314. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py +0 -0
  315. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py +0 -0
  316. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py +0 -104
  317. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_contents.py +0 -43
  318. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_custom.py +0 -47
  319. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_files.py +0 -117
  320. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_functional.py +0 -242
  321. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_open.py +0 -89
  322. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_path.py +0 -65
  323. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_read.py +0 -97
  324. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_reader.py +0 -145
  325. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_resource.py +0 -241
  326. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/util.py +0 -164
  327. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/zip.py +0 -32
  328. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +0 -36
  329. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +0 -168
  330. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +0 -210
  331. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +0 -38
  332. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +0 -171
  333. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/__init__.py +0 -0
  334. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py38.py +0 -11
  335. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py39.py +0 -10
  336. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/functional.py +0 -81
  337. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/future/__init__.py +0 -0
  338. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/future/adapters.py +0 -95
  339. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +0 -194
  340. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +0 -106
  341. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/__init__.py +0 -0
  342. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/_path.py +0 -56
  343. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/__init__.py +0 -0
  344. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py312.py +0 -18
  345. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py39.py +0 -10
  346. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/__init__.py +0 -0
  347. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py +0 -0
  348. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/__init__.py +0 -0
  349. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py +0 -0
  350. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py +0 -0
  351. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py +0 -104
  352. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_contents.py +0 -43
  353. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_custom.py +0 -47
  354. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_files.py +0 -117
  355. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_functional.py +0 -242
  356. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_open.py +0 -89
  357. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_path.py +0 -65
  358. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_read.py +0 -97
  359. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_reader.py +0 -145
  360. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_resource.py +0 -241
  361. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/util.py +0 -164
  362. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/zip.py +0 -32
  363. {py2docfx-0.1.9.dev1897607.dist-info → py2docfx-0.1.9.dev1917798.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,6 @@
1
+ from typing import TYPE_CHECKING
1
2
  from warnings import warn
2
3
 
3
- from ._bdist_wheel import bdist_wheel as bdist_wheel
4
-
5
4
  warn(
6
5
  "The 'wheel' package is no longer the canonical location of the 'bdist_wheel' "
7
6
  "command, and will be removed in a future release. Please update to setuptools "
@@ -9,3 +8,19 @@ warn(
9
8
  DeprecationWarning,
10
9
  stacklevel=1,
11
10
  )
11
+
12
+ if TYPE_CHECKING:
13
+ from ._bdist_wheel import bdist_wheel as bdist_wheel
14
+ else:
15
+ try:
16
+ # Better integration/compatibility with setuptools:
17
+ # in the case new fixes or PEPs are implemented in setuptools
18
+ # there is no need to backport them to the deprecated code base.
19
+ # This is useful in the case of old packages in the ecosystem
20
+ # that are still used but have low maintenance.
21
+ from setuptools.command.bdist_wheel import bdist_wheel
22
+ except ImportError:
23
+ # Only used in the case of old setuptools versions.
24
+ # If the user wants to get the latest fixes/PEPs,
25
+ # they are encouraged to address the deprecation warning.
26
+ from ._bdist_wheel import bdist_wheel as bdist_wheel
@@ -2,21 +2,23 @@ from __future__ import annotations
2
2
 
3
3
  import os.path
4
4
  import re
5
- import shutil
6
- import tempfile
7
- import zipfile
5
+ from abc import ABCMeta, abstractmethod
6
+ from collections import defaultdict
7
+ from collections.abc import Iterator
8
+ from email.message import Message
9
+ from email.parser import Parser
10
+ from email.policy import EmailPolicy
8
11
  from glob import iglob
12
+ from pathlib import Path
13
+ from textwrap import dedent
14
+ from zipfile import ZipFile
9
15
 
10
- from .._bdist_wheel import bdist_wheel
16
+ from .. import __version__
17
+ from ..metadata import generate_requirements
18
+ from ..vendored.packaging.tags import parse_tag
11
19
  from ..wheelfile import WheelFile
12
- from . import WheelError
13
20
 
14
- try:
15
- from setuptools import Distribution
16
- except ImportError:
17
- from distutils.dist import Distribution
18
-
19
- egg_info_re = re.compile(
21
+ egg_filename_re = re.compile(
20
22
  r"""
21
23
  (?P<name>.+?)-(?P<ver>.+?)
22
24
  (-(?P<pyver>py\d\.\d+)
@@ -24,84 +26,168 @@ egg_info_re = re.compile(
24
26
  )?.egg$""",
25
27
  re.VERBOSE,
26
28
  )
27
-
28
-
29
- class _bdist_wheel_tag(bdist_wheel):
30
- # allow the client to override the default generated wheel tag
31
- # The default bdist_wheel implementation uses python and abi tags
32
- # of the running python process. This is not suitable for
33
- # generating/repackaging prebuild binaries.
34
-
35
- full_tag_supplied = False
36
- full_tag = None # None or a (pytag, soabitag, plattag) triple
37
-
38
- def get_tag(self):
39
- if self.full_tag_supplied and self.full_tag is not None:
40
- return self.full_tag
29
+ egg_info_re = re.compile(
30
+ r"""
31
+ ^(?P<name>.+?)-(?P<ver>.+?)
32
+ (-(?P<pyver>py\d\.\d+)
33
+ )?.egg-info/""",
34
+ re.VERBOSE,
35
+ )
36
+ wininst_re = re.compile(
37
+ r"\.(?P<platform>win32|win-amd64)(?:-(?P<pyver>py\d\.\d))?\.exe$"
38
+ )
39
+ pyd_re = re.compile(r"\.(?P<abi>[a-z0-9]+)-(?P<platform>win32|win_amd64)\.pyd$")
40
+ serialization_policy = EmailPolicy(
41
+ utf8=True,
42
+ mangle_from_=False,
43
+ max_line_length=0,
44
+ )
45
+ GENERATOR = f"wheel {__version__}"
46
+
47
+
48
+ def convert_requires(requires: str, metadata: Message) -> None:
49
+ extra: str | None = None
50
+ requirements: dict[str | None, list[str]] = defaultdict(list)
51
+ for line in requires.splitlines():
52
+ line = line.strip()
53
+ if not line:
54
+ continue
55
+
56
+ if line.startswith("[") and line.endswith("]"):
57
+ extra = line[1:-1]
58
+ continue
59
+
60
+ requirements[extra].append(line)
61
+
62
+ for key, value in generate_requirements(requirements):
63
+ metadata.add_header(key, value)
64
+
65
+
66
+ def convert_pkg_info(pkginfo: str, metadata: Message):
67
+ parsed_message = Parser().parsestr(pkginfo)
68
+ for key, value in parsed_message.items():
69
+ key_lower = key.lower()
70
+ if value == "UNKNOWN":
71
+ continue
72
+
73
+ if key_lower == "description":
74
+ description_lines = value.splitlines()
75
+ value = "\n".join(
76
+ (
77
+ description_lines[0].lstrip(),
78
+ dedent("\n".join(description_lines[1:])),
79
+ "\n",
80
+ )
81
+ )
82
+ metadata.set_payload(value)
83
+ elif key_lower == "home-page":
84
+ metadata.add_header("Project-URL", f"Homepage, {value}")
85
+ elif key_lower == "download-url":
86
+ metadata.add_header("Project-URL", f"Download, {value}")
41
87
  else:
42
- return bdist_wheel.get_tag(self)
43
-
44
-
45
- def egg2wheel(egg_path: str, dest_dir: str) -> None:
46
- filename = os.path.basename(egg_path)
47
- match = egg_info_re.match(filename)
48
- if not match:
49
- raise WheelError(f"Invalid egg file name: {filename}")
50
-
51
- egg_info = match.groupdict()
52
- dir = tempfile.mkdtemp(suffix="_e2w")
53
- if os.path.isfile(egg_path):
54
- # assume we have a bdist_egg otherwise
55
- with zipfile.ZipFile(egg_path) as egg:
56
- egg.extractall(dir)
57
- else:
58
- # support buildout-style installed eggs directories
59
- for pth in os.listdir(egg_path):
60
- src = os.path.join(egg_path, pth)
61
- if os.path.isfile(src):
62
- shutil.copy2(src, dir)
63
- else:
64
- shutil.copytree(src, os.path.join(dir, pth))
65
-
66
- pyver = egg_info["pyver"]
67
- if pyver:
68
- pyver = egg_info["pyver"] = pyver.replace(".", "")
69
-
70
- arch = (egg_info["arch"] or "any").replace(".", "_").replace("-", "_")
71
-
72
- # assume all binary eggs are for CPython
73
- abi = "cp" + pyver[2:] if arch != "any" else "none"
74
-
75
- root_is_purelib = egg_info["arch"] is None
76
- if root_is_purelib:
77
- bw = bdist_wheel(Distribution())
78
- else:
79
- bw = _bdist_wheel_tag(Distribution())
80
-
81
- bw.root_is_pure = root_is_purelib
82
- bw.python_tag = pyver
83
- bw.plat_name_supplied = True
84
- bw.plat_name = egg_info["arch"] or "any"
85
- if not root_is_purelib:
86
- bw.full_tag_supplied = True
87
- bw.full_tag = (pyver, abi, arch)
88
-
89
- dist_info_dir = os.path.join(dir, "{name}-{ver}.dist-info".format(**egg_info))
90
- bw.egg2dist(os.path.join(dir, "EGG-INFO"), dist_info_dir)
91
- bw.write_wheelfile(dist_info_dir, generator="egg2wheel")
92
- wheel_name = "{name}-{ver}-{pyver}-{}-{}.whl".format(abi, arch, **egg_info)
93
- with WheelFile(os.path.join(dest_dir, wheel_name), "w") as wf:
94
- wf.write_files(dir)
95
-
96
- shutil.rmtree(dir)
97
-
98
-
99
- def parse_wininst_info(wininfo_name: str, egginfo_name: str | None):
100
- """Extract metadata from filenames.
101
-
102
- Extracts the 4 metadataitems needed (name, version, pyversion, arch) from
103
- the installer filename and the name of the egg-info directory embedded in
104
- the zipfile (if any).
88
+ metadata.add_header(key, value)
89
+
90
+ metadata.replace_header("Metadata-Version", "2.4")
91
+
92
+
93
+ def normalize(name: str) -> str:
94
+ return re.sub(r"[-_.]+", "-", name).lower().replace("-", "_")
95
+
96
+
97
+ class ConvertSource(metaclass=ABCMeta):
98
+ name: str
99
+ version: str
100
+ pyver: str = "py2.py3"
101
+ abi: str = "none"
102
+ platform: str = "any"
103
+ metadata: Message
104
+
105
+ @property
106
+ def dist_info_dir(self) -> str:
107
+ return f"{self.name}-{self.version}.dist-info"
108
+
109
+ @abstractmethod
110
+ def generate_contents(self) -> Iterator[tuple[str, bytes]]:
111
+ pass
112
+
113
+
114
+ class EggFileSource(ConvertSource):
115
+ def __init__(self, path: Path):
116
+ if not (match := egg_filename_re.match(path.name)):
117
+ raise ValueError(f"Invalid egg file name: {path.name}")
118
+
119
+ # Binary wheels are assumed to be for CPython
120
+ self.path = path
121
+ self.name = normalize(match.group("name"))
122
+ self.version = match.group("ver")
123
+ if pyver := match.group("pyver"):
124
+ self.pyver = pyver.replace(".", "")
125
+ self.abi = self.pyver.replace("py", "cp")
126
+ if arch := match.group("arch"):
127
+ self.platform = normalize(arch)
128
+
129
+ self.metadata = Message()
130
+
131
+ def generate_contents(self) -> Iterator[tuple[str, bytes]]:
132
+ with ZipFile(self.path, "r") as zip_file:
133
+ for filename in sorted(zip_file.namelist()):
134
+ # Skip pure directory entries
135
+ if filename.endswith("/"):
136
+ continue
137
+
138
+ # Handle files in the egg-info directory specially, selectively moving
139
+ # them to the dist-info directory while converting as needed
140
+ if filename.startswith("EGG-INFO/"):
141
+ if filename == "EGG-INFO/requires.txt":
142
+ requires = zip_file.read(filename).decode("utf-8")
143
+ convert_requires(requires, self.metadata)
144
+ elif filename == "EGG-INFO/PKG-INFO":
145
+ pkginfo = zip_file.read(filename).decode("utf-8")
146
+ convert_pkg_info(pkginfo, self.metadata)
147
+ elif filename == "EGG-INFO/entry_points.txt":
148
+ yield (
149
+ f"{self.dist_info_dir}/entry_points.txt",
150
+ zip_file.read(filename),
151
+ )
152
+
153
+ continue
154
+
155
+ # For any other file, just pass it through
156
+ yield filename, zip_file.read(filename)
157
+
158
+
159
+ class EggDirectorySource(EggFileSource):
160
+ def generate_contents(self) -> Iterator[tuple[str, bytes]]:
161
+ for dirpath, _, filenames in os.walk(self.path):
162
+ for filename in sorted(filenames):
163
+ path = Path(dirpath, filename)
164
+ if path.parent.name == "EGG-INFO":
165
+ if path.name == "requires.txt":
166
+ requires = path.read_text("utf-8")
167
+ convert_requires(requires, self.metadata)
168
+ elif path.name == "PKG-INFO":
169
+ pkginfo = path.read_text("utf-8")
170
+ convert_pkg_info(pkginfo, self.metadata)
171
+ if name := self.metadata.get("Name"):
172
+ self.name = normalize(name)
173
+
174
+ if version := self.metadata.get("Version"):
175
+ self.version = version
176
+ elif path.name == "entry_points.txt":
177
+ yield (
178
+ f"{self.dist_info_dir}/entry_points.txt",
179
+ path.read_bytes(),
180
+ )
181
+
182
+ continue
183
+
184
+ # For any other file, just pass it through
185
+ yield str(path.relative_to(self.path)), path.read_bytes()
186
+
187
+
188
+ class WininstFileSource(ConvertSource):
189
+ """
190
+ Handles distributions created with ``bdist_wininst``.
105
191
 
106
192
  The egginfo filename has the format::
107
193
 
@@ -129,145 +215,119 @@ def parse_wininst_info(wininfo_name: str, egginfo_name: str | None):
129
215
  should therefore ignore the architecture if the content is pure-python.
130
216
  """
131
217
 
132
- egginfo = None
133
- if egginfo_name:
134
- egginfo = egg_info_re.search(egginfo_name)
135
- if not egginfo:
136
- raise ValueError(f"Egg info filename {egginfo_name} is not valid")
137
-
138
- # Parse the wininst filename
139
- # 1. Distribution name (up to the first '-')
140
- w_name, sep, rest = wininfo_name.partition("-")
141
- if not sep:
142
- raise ValueError(f"Installer filename {wininfo_name} is not valid")
143
-
144
- # Strip '.exe'
145
- rest = rest[:-4]
146
- # 2. Python version (from the last '-', must start with 'py')
147
- rest2, sep, w_pyver = rest.rpartition("-")
148
- if sep and w_pyver.startswith("py"):
149
- rest = rest2
150
- w_pyver = w_pyver.replace(".", "")
151
- else:
152
- # Not version specific - use py2.py3. While it is possible that
153
- # pure-Python code is not compatible with both Python 2 and 3, there
154
- # is no way of knowing from the wininst format, so we assume the best
155
- # here (the user can always manually rename the wheel to be more
156
- # restrictive if needed).
157
- w_pyver = "py2.py3"
158
- # 3. Version and architecture
159
- w_ver, sep, w_arch = rest.rpartition(".")
160
- if not sep:
161
- raise ValueError(f"Installer filename {wininfo_name} is not valid")
162
-
163
- if egginfo:
164
- w_name = egginfo.group("name")
165
- w_ver = egginfo.group("ver")
166
-
167
- return {"name": w_name, "ver": w_ver, "arch": w_arch, "pyver": w_pyver}
168
-
169
-
170
- def wininst2wheel(path: str, dest_dir: str) -> None:
171
- with zipfile.ZipFile(path) as bdw:
172
- # Search for egg-info in the archive
173
- egginfo_name = None
174
- for filename in bdw.namelist():
175
- if ".egg-info" in filename:
176
- egginfo_name = filename
177
- break
178
-
179
- info = parse_wininst_info(os.path.basename(path), egginfo_name)
180
-
181
- root_is_purelib = True
182
- for zipinfo in bdw.infolist():
183
- if zipinfo.filename.startswith("PLATLIB"):
184
- root_is_purelib = False
185
- break
186
- if root_is_purelib:
187
- paths = {"purelib": ""}
188
- else:
189
- paths = {"platlib": ""}
190
-
191
- dist_info = "{name}-{ver}".format(**info)
192
- datadir = f"{dist_info}.data/"
193
-
194
- # rewrite paths to trick ZipFile into extracting an egg
195
- # XXX grab wininst .ini - between .exe, padding, and first zip file.
196
- members: list[str] = []
197
- egginfo_name = ""
198
- for zipinfo in bdw.infolist():
199
- key, basename = zipinfo.filename.split("/", 1)
200
- key = key.lower()
201
- basepath = paths.get(key, None)
202
- if basepath is None:
203
- basepath = datadir + key.lower() + "/"
204
- oldname = zipinfo.filename
205
- newname = basepath + basename
206
- zipinfo.filename = newname
207
- del bdw.NameToInfo[oldname]
208
- bdw.NameToInfo[newname] = zipinfo
209
- # Collect member names, but omit '' (from an entry like "PLATLIB/"
210
- if newname:
211
- members.append(newname)
212
- # Remember egg-info name for the egg2dist call below
213
- if not egginfo_name:
214
- if newname.endswith(".egg-info"):
215
- egginfo_name = newname
216
- elif ".egg-info/" in newname:
217
- egginfo_name, sep, _ = newname.rpartition("/")
218
- dir = tempfile.mkdtemp(suffix="_b2w")
219
- bdw.extractall(dir, members)
220
-
221
- # egg2wheel
222
- abi = "none"
223
- pyver = info["pyver"]
224
- arch = (info["arch"] or "any").replace(".", "_").replace("-", "_")
225
- # Wininst installers always have arch even if they are not
226
- # architecture-specific (because the format itself is).
227
- # So, assume the content is architecture-neutral if root is purelib.
228
- if root_is_purelib:
229
- arch = "any"
230
- # If the installer is architecture-specific, it's almost certainly also
231
- # CPython-specific.
232
- if arch != "any":
233
- pyver = pyver.replace("py", "cp")
234
- wheel_name = "-".join((dist_info, pyver, abi, arch))
235
- if root_is_purelib:
236
- bw = bdist_wheel(Distribution())
237
- else:
238
- bw = _bdist_wheel_tag(Distribution())
239
-
240
- bw.root_is_pure = root_is_purelib
241
- bw.python_tag = pyver
242
- bw.plat_name_supplied = True
243
- bw.plat_name = info["arch"] or "any"
244
-
245
- if not root_is_purelib:
246
- bw.full_tag_supplied = True
247
- bw.full_tag = (pyver, abi, arch)
248
-
249
- dist_info_dir = os.path.join(dir, f"{dist_info}.dist-info")
250
- bw.egg2dist(os.path.join(dir, egginfo_name), dist_info_dir)
251
- bw.write_wheelfile(dist_info_dir, generator="wininst2wheel")
252
-
253
- wheel_path = os.path.join(dest_dir, wheel_name)
254
- with WheelFile(wheel_path, "w") as wf:
255
- wf.write_files(dir)
256
-
257
- shutil.rmtree(dir)
218
+ def __init__(self, path: Path):
219
+ self.path = path
220
+ self.metadata = Message()
221
+
222
+ # Determine the initial architecture and Python version from the file name
223
+ # (if possible)
224
+ if match := wininst_re.search(path.name):
225
+ self.platform = normalize(match.group("platform"))
226
+ if pyver := match.group("pyver"):
227
+ self.pyver = pyver.replace(".", "")
228
+ self.abi = pyver.replace("py", "cp")
229
+
230
+ # Look for an .egg-info directory and any .pyd files for more precise info
231
+ egg_info_found = pyd_found = False
232
+ with ZipFile(self.path) as zip_file:
233
+ for filename in zip_file.namelist():
234
+ prefix, filename = filename.split("/", 1)
235
+ if not egg_info_found and (match := egg_info_re.match(filename)):
236
+ egg_info_found = True
237
+ self.name = normalize(match.group("name"))
238
+ self.version = match.group("ver")
239
+ if pyver := match.group("pyver"):
240
+ self.pyver = pyver.replace(".", "")
241
+ elif not pyd_found and (match := pyd_re.search(filename)):
242
+ pyd_found = True
243
+ self.abi = match.group("abi")
244
+ self.platform = match.group("platform")
245
+
246
+ if egg_info_found and pyd_found:
247
+ break
248
+
249
+ def generate_contents(self) -> Iterator[tuple[str, bytes]]:
250
+ dist_info_dir = f"{self.name}-{self.version}.dist-info"
251
+ data_dir = f"{self.name}-{self.version}.data"
252
+ with ZipFile(self.path, "r") as zip_file:
253
+ for filename in sorted(zip_file.namelist()):
254
+ # Skip pure directory entries
255
+ if filename.endswith("/"):
256
+ continue
257
+
258
+ # Handle files in the egg-info directory specially, selectively moving
259
+ # them to the dist-info directory while converting as needed
260
+ prefix, target_filename = filename.split("/", 1)
261
+ if egg_info_re.search(target_filename):
262
+ basename = target_filename.rsplit("/", 1)[-1]
263
+ if basename == "requires.txt":
264
+ requires = zip_file.read(filename).decode("utf-8")
265
+ convert_requires(requires, self.metadata)
266
+ elif basename == "PKG-INFO":
267
+ pkginfo = zip_file.read(filename).decode("utf-8")
268
+ convert_pkg_info(pkginfo, self.metadata)
269
+ elif basename == "entry_points.txt":
270
+ yield (
271
+ f"{dist_info_dir}/entry_points.txt",
272
+ zip_file.read(filename),
273
+ )
274
+
275
+ continue
276
+ elif prefix == "SCRIPTS":
277
+ target_filename = f"{data_dir}/scripts/{target_filename}"
278
+
279
+ # For any other file, just pass it through
280
+ yield target_filename, zip_file.read(filename)
258
281
 
259
282
 
260
283
  def convert(files: list[str], dest_dir: str, verbose: bool) -> None:
261
284
  for pat in files:
262
- for installer in iglob(pat):
263
- if os.path.splitext(installer)[1] == ".egg":
264
- conv = egg2wheel
285
+ for archive in iglob(pat):
286
+ path = Path(archive)
287
+ if path.suffix == ".egg":
288
+ if path.is_dir():
289
+ source: ConvertSource = EggDirectorySource(path)
290
+ else:
291
+ source = EggFileSource(path)
265
292
  else:
266
- conv = wininst2wheel
293
+ source = WininstFileSource(path)
267
294
 
268
295
  if verbose:
269
- print(f"{installer}... ", flush=True)
296
+ print(f"{archive}...", flush=True, end="")
297
+
298
+ dest_path = Path(dest_dir) / (
299
+ f"{source.name}-{source.version}-{source.pyver}-{source.abi}"
300
+ f"-{source.platform}.whl"
301
+ )
302
+ with WheelFile(dest_path, "w") as wheelfile:
303
+ for name_or_zinfo, contents in source.generate_contents():
304
+ wheelfile.writestr(name_or_zinfo, contents)
305
+
306
+ # Write the METADATA file
307
+ wheelfile.writestr(
308
+ f"{source.dist_info_dir}/METADATA",
309
+ source.metadata.as_string(policy=serialization_policy).encode(
310
+ "utf-8"
311
+ ),
312
+ )
313
+
314
+ # Write the WHEEL file
315
+ wheel_message = Message()
316
+ wheel_message.add_header("Wheel-Version", "1.0")
317
+ wheel_message.add_header("Generator", GENERATOR)
318
+ wheel_message.add_header(
319
+ "Root-Is-Purelib", str(source.platform == "any").lower()
320
+ )
321
+ tags = parse_tag(f"{source.pyver}-{source.abi}-{source.platform}")
322
+ for tag in sorted(tags, key=lambda tag: tag.interpreter):
323
+ wheel_message.add_header("Tag", str(tag))
324
+
325
+ wheelfile.writestr(
326
+ f"{source.dist_info_dir}/WHEEL",
327
+ wheel_message.as_string(policy=serialization_policy).encode(
328
+ "utf-8"
329
+ ),
330
+ )
270
331
 
271
- conv(installer, dest_dir)
272
332
  if verbose:
273
333
  print("OK")
@@ -5,15 +5,6 @@ import logging
5
5
 
6
6
  log = logging.getLogger("wheel")
7
7
 
8
- # ensure Python logging is configured
9
- try:
10
- __import__("setuptools.logging")
11
- except ImportError:
12
- # setuptools < ??
13
- from . import _setuptools_logging
14
-
15
- _setuptools_logging.configure()
16
-
17
8
 
18
9
  def urlsafe_b64encode(data: bytes) -> bytes:
19
10
  """urlsafe_b64encode without padding"""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py2docfx
3
- Version: 0.1.9.dev1897607
3
+ Version: 0.1.9.dev1917798
4
4
  Summary: A package built based on Sphinx which download source code package and generate yaml files supported by docfx.
5
5
  Author: Microsoft Corporation
6
6
  License: MIT License