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
@@ -1,95 +0,0 @@
1
- import functools
2
- import pathlib
3
- from contextlib import suppress
4
- from types import SimpleNamespace
5
-
6
- from .. import readers, _adapters
7
-
8
-
9
- def _block_standard(reader_getter):
10
- """
11
- Wrap _adapters.TraversableResourcesLoader.get_resource_reader
12
- and intercept any standard library readers.
13
- """
14
-
15
- @functools.wraps(reader_getter)
16
- def wrapper(*args, **kwargs):
17
- """
18
- If the reader is from the standard library, return None to allow
19
- allow likely newer implementations in this library to take precedence.
20
- """
21
- try:
22
- reader = reader_getter(*args, **kwargs)
23
- except NotADirectoryError:
24
- # MultiplexedPath may fail on zip subdirectory
25
- return
26
- # Python 3.10+
27
- mod_name = reader.__class__.__module__
28
- if mod_name.startswith('importlib.') and mod_name.endswith('readers'):
29
- return
30
- # Python 3.8, 3.9
31
- if isinstance(reader, _adapters.CompatibilityFiles) and (
32
- reader.spec.loader.__class__.__module__.startswith('zipimport')
33
- or reader.spec.loader.__class__.__module__.startswith(
34
- '_frozen_importlib_external'
35
- )
36
- ):
37
- return
38
- return reader
39
-
40
- return wrapper
41
-
42
-
43
- def _skip_degenerate(reader):
44
- """
45
- Mask any degenerate reader. Ref #298.
46
- """
47
- is_degenerate = (
48
- isinstance(reader, _adapters.CompatibilityFiles) and not reader._reader
49
- )
50
- return reader if not is_degenerate else None
51
-
52
-
53
- class TraversableResourcesLoader(_adapters.TraversableResourcesLoader):
54
- """
55
- Adapt loaders to provide TraversableResources and other
56
- compatibility.
57
-
58
- Ensures the readers from importlib_resources are preferred
59
- over stdlib readers.
60
- """
61
-
62
- def get_resource_reader(self, name):
63
- return (
64
- _skip_degenerate(_block_standard(super().get_resource_reader)(name))
65
- or self._standard_reader()
66
- or super().get_resource_reader(name)
67
- )
68
-
69
- def _standard_reader(self):
70
- return self._zip_reader() or self._namespace_reader() or self._file_reader()
71
-
72
- def _zip_reader(self):
73
- with suppress(AttributeError):
74
- return readers.ZipReader(self.spec.loader, self.spec.name)
75
-
76
- def _namespace_reader(self):
77
- with suppress(AttributeError, ValueError):
78
- return readers.NamespaceReader(self.spec.submodule_search_locations)
79
-
80
- def _file_reader(self):
81
- try:
82
- path = pathlib.Path(self.spec.origin)
83
- except TypeError:
84
- return None
85
- if path.exists():
86
- return readers.FileReader(SimpleNamespace(path=path))
87
-
88
-
89
- def wrap_spec(package):
90
- """
91
- Override _adapters.wrap_spec to use TraversableResourcesLoader
92
- from above. Ensures that future behavior is always available on older
93
- Pythons.
94
- """
95
- return _adapters.SpecLoaderAdapter(package.__spec__, TraversableResourcesLoader)
@@ -1,194 +0,0 @@
1
- import collections
2
- import contextlib
3
- import itertools
4
- import pathlib
5
- import operator
6
- import re
7
- import warnings
8
-
9
- from . import abc
10
-
11
- from ._itertools import only
12
- from .compat.py39 import ZipPath
13
-
14
-
15
- def remove_duplicates(items):
16
- return iter(collections.OrderedDict.fromkeys(items))
17
-
18
-
19
- class FileReader(abc.TraversableResources):
20
- def __init__(self, loader):
21
- self.path = pathlib.Path(loader.path).parent
22
-
23
- def resource_path(self, resource):
24
- """
25
- Return the file system path to prevent
26
- `resources.path()` from creating a temporary
27
- copy.
28
- """
29
- return str(self.path.joinpath(resource))
30
-
31
- def files(self):
32
- return self.path
33
-
34
-
35
- class ZipReader(abc.TraversableResources):
36
- def __init__(self, loader, module):
37
- _, _, name = module.rpartition('.')
38
- self.prefix = loader.prefix.replace('\\', '/') + name + '/'
39
- self.archive = loader.archive
40
-
41
- def open_resource(self, resource):
42
- try:
43
- return super().open_resource(resource)
44
- except KeyError as exc:
45
- raise FileNotFoundError(exc.args[0])
46
-
47
- def is_resource(self, path):
48
- """
49
- Workaround for `zipfile.Path.is_file` returning true
50
- for non-existent paths.
51
- """
52
- target = self.files().joinpath(path)
53
- return target.is_file() and target.exists()
54
-
55
- def files(self):
56
- return ZipPath(self.archive, self.prefix)
57
-
58
-
59
- class MultiplexedPath(abc.Traversable):
60
- """
61
- Given a series of Traversable objects, implement a merged
62
- version of the interface across all objects. Useful for
63
- namespace packages which may be multihomed at a single
64
- name.
65
- """
66
-
67
- def __init__(self, *paths):
68
- self._paths = list(map(_ensure_traversable, remove_duplicates(paths)))
69
- if not self._paths:
70
- message = 'MultiplexedPath must contain at least one path'
71
- raise FileNotFoundError(message)
72
- if not all(path.is_dir() for path in self._paths):
73
- raise NotADirectoryError('MultiplexedPath only supports directories')
74
-
75
- def iterdir(self):
76
- children = (child for path in self._paths for child in path.iterdir())
77
- by_name = operator.attrgetter('name')
78
- groups = itertools.groupby(sorted(children, key=by_name), key=by_name)
79
- return map(self._follow, (locs for name, locs in groups))
80
-
81
- def read_bytes(self):
82
- raise FileNotFoundError(f'{self} is not a file')
83
-
84
- def read_text(self, *args, **kwargs):
85
- raise FileNotFoundError(f'{self} is not a file')
86
-
87
- def is_dir(self):
88
- return True
89
-
90
- def is_file(self):
91
- return False
92
-
93
- def joinpath(self, *descendants):
94
- try:
95
- return super().joinpath(*descendants)
96
- except abc.TraversalError:
97
- # One of the paths did not resolve (a directory does not exist).
98
- # Just return something that will not exist.
99
- return self._paths[0].joinpath(*descendants)
100
-
101
- @classmethod
102
- def _follow(cls, children):
103
- """
104
- Construct a MultiplexedPath if needed.
105
-
106
- If children contains a sole element, return it.
107
- Otherwise, return a MultiplexedPath of the items.
108
- Unless one of the items is not a Directory, then return the first.
109
- """
110
- subdirs, one_dir, one_file = itertools.tee(children, 3)
111
-
112
- try:
113
- return only(one_dir)
114
- except ValueError:
115
- try:
116
- return cls(*subdirs)
117
- except NotADirectoryError:
118
- return next(one_file)
119
-
120
- def open(self, *args, **kwargs):
121
- raise FileNotFoundError(f'{self} is not a file')
122
-
123
- @property
124
- def name(self):
125
- return self._paths[0].name
126
-
127
- def __repr__(self):
128
- paths = ', '.join(f"'{path}'" for path in self._paths)
129
- return f'MultiplexedPath({paths})'
130
-
131
-
132
- class NamespaceReader(abc.TraversableResources):
133
- def __init__(self, namespace_path):
134
- if 'NamespacePath' not in str(namespace_path):
135
- raise ValueError('Invalid path')
136
- self.path = MultiplexedPath(*map(self._resolve, namespace_path))
137
-
138
- @classmethod
139
- def _resolve(cls, path_str) -> abc.Traversable:
140
- r"""
141
- Given an item from a namespace path, resolve it to a Traversable.
142
-
143
- path_str might be a directory on the filesystem or a path to a
144
- zipfile plus the path within the zipfile, e.g. ``/foo/bar`` or
145
- ``/foo/baz.zip/inner_dir`` or ``foo\baz.zip\inner_dir\sub``.
146
- """
147
- (dir,) = (cand for cand in cls._candidate_paths(path_str) if cand.is_dir())
148
- return dir
149
-
150
- @classmethod
151
- def _candidate_paths(cls, path_str):
152
- yield pathlib.Path(path_str)
153
- yield from cls._resolve_zip_path(path_str)
154
-
155
- @staticmethod
156
- def _resolve_zip_path(path_str):
157
- for match in reversed(list(re.finditer(r'[\\/]', path_str))):
158
- with contextlib.suppress(
159
- FileNotFoundError,
160
- IsADirectoryError,
161
- NotADirectoryError,
162
- PermissionError,
163
- ):
164
- inner = path_str[match.end() :].replace('\\', '/') + '/'
165
- yield ZipPath(path_str[: match.start()], inner.lstrip('/'))
166
-
167
- def resource_path(self, resource):
168
- """
169
- Return the file system path to prevent
170
- `resources.path()` from creating a temporary
171
- copy.
172
- """
173
- return str(self.path.joinpath(resource))
174
-
175
- def files(self):
176
- return self.path
177
-
178
-
179
- def _ensure_traversable(path):
180
- """
181
- Convert deprecated string arguments to traversables (pathlib.Path).
182
-
183
- Remove with Python 3.15.
184
- """
185
- if not isinstance(path, str):
186
- return path
187
-
188
- warnings.warn(
189
- "String arguments are deprecated. Pass a Traversable instead.",
190
- DeprecationWarning,
191
- stacklevel=3,
192
- )
193
-
194
- return pathlib.Path(path)
@@ -1,106 +0,0 @@
1
- """
2
- Interface adapters for low-level readers.
3
- """
4
-
5
- import abc
6
- import io
7
- import itertools
8
- from typing import BinaryIO, List
9
-
10
- from .abc import Traversable, TraversableResources
11
-
12
-
13
- class SimpleReader(abc.ABC):
14
- """
15
- The minimum, low-level interface required from a resource
16
- provider.
17
- """
18
-
19
- @property
20
- @abc.abstractmethod
21
- def package(self) -> str:
22
- """
23
- The name of the package for which this reader loads resources.
24
- """
25
-
26
- @abc.abstractmethod
27
- def children(self) -> List['SimpleReader']:
28
- """
29
- Obtain an iterable of SimpleReader for available
30
- child containers (e.g. directories).
31
- """
32
-
33
- @abc.abstractmethod
34
- def resources(self) -> List[str]:
35
- """
36
- Obtain available named resources for this virtual package.
37
- """
38
-
39
- @abc.abstractmethod
40
- def open_binary(self, resource: str) -> BinaryIO:
41
- """
42
- Obtain a File-like for a named resource.
43
- """
44
-
45
- @property
46
- def name(self):
47
- return self.package.split('.')[-1]
48
-
49
-
50
- class ResourceContainer(Traversable):
51
- """
52
- Traversable container for a package's resources via its reader.
53
- """
54
-
55
- def __init__(self, reader: SimpleReader):
56
- self.reader = reader
57
-
58
- def is_dir(self):
59
- return True
60
-
61
- def is_file(self):
62
- return False
63
-
64
- def iterdir(self):
65
- files = (ResourceHandle(self, name) for name in self.reader.resources)
66
- dirs = map(ResourceContainer, self.reader.children())
67
- return itertools.chain(files, dirs)
68
-
69
- def open(self, *args, **kwargs):
70
- raise IsADirectoryError()
71
-
72
-
73
- class ResourceHandle(Traversable):
74
- """
75
- Handle to a named resource in a ResourceReader.
76
- """
77
-
78
- def __init__(self, parent: ResourceContainer, name: str):
79
- self.parent = parent
80
- self.name = name # type: ignore
81
-
82
- def is_file(self):
83
- return True
84
-
85
- def is_dir(self):
86
- return False
87
-
88
- def open(self, mode='r', *args, **kwargs):
89
- stream = self.parent.reader.open_binary(self.name)
90
- if 'b' not in mode:
91
- stream = io.TextIOWrapper(stream, *args, **kwargs)
92
- return stream
93
-
94
- def joinpath(self, name):
95
- raise RuntimeError("Cannot traverse into a resource")
96
-
97
-
98
- class TraversableReader(TraversableResources, SimpleReader):
99
- """
100
- A TraversableResources based on SimpleReader. Resource providers
101
- may derive from this class to provide the TraversableResources
102
- interface by supplying the SimpleReader interface.
103
- """
104
-
105
- def files(self):
106
- return ResourceContainer(self)
@@ -1,56 +0,0 @@
1
- import pathlib
2
- import functools
3
-
4
- from typing import Dict, Union
5
-
6
-
7
- ####
8
- # from jaraco.path 3.4.1
9
-
10
- FilesSpec = Dict[str, Union[str, bytes, 'FilesSpec']] # type: ignore
11
-
12
-
13
- def build(spec: FilesSpec, prefix=pathlib.Path()):
14
- """
15
- Build a set of files/directories, as described by the spec.
16
-
17
- Each key represents a pathname, and the value represents
18
- the content. Content may be a nested directory.
19
-
20
- >>> spec = {
21
- ... 'README.txt': "A README file",
22
- ... "foo": {
23
- ... "__init__.py": "",
24
- ... "bar": {
25
- ... "__init__.py": "",
26
- ... },
27
- ... "baz.py": "# Some code",
28
- ... }
29
- ... }
30
- >>> target = getfixture('tmp_path')
31
- >>> build(spec, target)
32
- >>> target.joinpath('foo/baz.py').read_text(encoding='utf-8')
33
- '# Some code'
34
- """
35
- for name, contents in spec.items():
36
- create(contents, pathlib.Path(prefix) / name)
37
-
38
-
39
- @functools.singledispatch
40
- def create(content: Union[str, bytes, FilesSpec], path):
41
- path.mkdir(exist_ok=True)
42
- build(content, prefix=path) # type: ignore
43
-
44
-
45
- @create.register
46
- def _(content: bytes, path):
47
- path.write_bytes(content)
48
-
49
-
50
- @create.register
51
- def _(content: str, path):
52
- path.write_text(content, encoding='utf-8')
53
-
54
-
55
- # end from jaraco.path
56
- ####
@@ -1,18 +0,0 @@
1
- import contextlib
2
-
3
- from .py39 import import_helper
4
-
5
-
6
- @contextlib.contextmanager
7
- def isolated_modules():
8
- """
9
- Save modules on entry and cleanup on exit.
10
- """
11
- (saved,) = import_helper.modules_setup()
12
- try:
13
- yield
14
- finally:
15
- import_helper.modules_cleanup(saved)
16
-
17
-
18
- vars(import_helper).setdefault('isolated_modules', isolated_modules)
@@ -1,10 +0,0 @@
1
- """
2
- Backward-compatability shims to support Python 3.9 and earlier.
3
- """
4
-
5
- from jaraco.test.cpython import from_test_support, try_import
6
-
7
- import_helper = try_import('import_helper') or from_test_support(
8
- 'modules_setup', 'modules_cleanup', 'DirsOnSysPath'
9
- )
10
- os_helper = try_import('os_helper') or from_test_support('temp_dir')
@@ -1,104 +0,0 @@
1
- import io
2
- import unittest
3
-
4
- import importlib_resources as resources
5
-
6
- from importlib_resources._adapters import (
7
- CompatibilityFiles,
8
- wrap_spec,
9
- )
10
-
11
- from . import util
12
-
13
-
14
- class CompatibilityFilesTests(unittest.TestCase):
15
- @property
16
- def package(self):
17
- bytes_data = io.BytesIO(b'Hello, world!')
18
- return util.create_package(
19
- file=bytes_data,
20
- path='some_path',
21
- contents=('a', 'b', 'c'),
22
- )
23
-
24
- @property
25
- def files(self):
26
- return resources.files(self.package)
27
-
28
- def test_spec_path_iter(self):
29
- self.assertEqual(
30
- sorted(path.name for path in self.files.iterdir()),
31
- ['a', 'b', 'c'],
32
- )
33
-
34
- def test_child_path_iter(self):
35
- self.assertEqual(list((self.files / 'a').iterdir()), [])
36
-
37
- def test_orphan_path_iter(self):
38
- self.assertEqual(list((self.files / 'a' / 'a').iterdir()), [])
39
- self.assertEqual(list((self.files / 'a' / 'a' / 'a').iterdir()), [])
40
-
41
- def test_spec_path_is(self):
42
- self.assertFalse(self.files.is_file())
43
- self.assertFalse(self.files.is_dir())
44
-
45
- def test_child_path_is(self):
46
- self.assertTrue((self.files / 'a').is_file())
47
- self.assertFalse((self.files / 'a').is_dir())
48
-
49
- def test_orphan_path_is(self):
50
- self.assertFalse((self.files / 'a' / 'a').is_file())
51
- self.assertFalse((self.files / 'a' / 'a').is_dir())
52
- self.assertFalse((self.files / 'a' / 'a' / 'a').is_file())
53
- self.assertFalse((self.files / 'a' / 'a' / 'a').is_dir())
54
-
55
- def test_spec_path_name(self):
56
- self.assertEqual(self.files.name, 'testingpackage')
57
-
58
- def test_child_path_name(self):
59
- self.assertEqual((self.files / 'a').name, 'a')
60
-
61
- def test_orphan_path_name(self):
62
- self.assertEqual((self.files / 'a' / 'b').name, 'b')
63
- self.assertEqual((self.files / 'a' / 'b' / 'c').name, 'c')
64
-
65
- def test_spec_path_open(self):
66
- self.assertEqual(self.files.read_bytes(), b'Hello, world!')
67
- self.assertEqual(self.files.read_text(encoding='utf-8'), 'Hello, world!')
68
-
69
- def test_child_path_open(self):
70
- self.assertEqual((self.files / 'a').read_bytes(), b'Hello, world!')
71
- self.assertEqual(
72
- (self.files / 'a').read_text(encoding='utf-8'), 'Hello, world!'
73
- )
74
-
75
- def test_orphan_path_open(self):
76
- with self.assertRaises(FileNotFoundError):
77
- (self.files / 'a' / 'b').read_bytes()
78
- with self.assertRaises(FileNotFoundError):
79
- (self.files / 'a' / 'b' / 'c').read_bytes()
80
-
81
- def test_open_invalid_mode(self):
82
- with self.assertRaises(ValueError):
83
- self.files.open('0')
84
-
85
- def test_orphan_path_invalid(self):
86
- with self.assertRaises(ValueError):
87
- CompatibilityFiles.OrphanPath()
88
-
89
- def test_wrap_spec(self):
90
- spec = wrap_spec(self.package)
91
- self.assertIsInstance(spec.loader.get_resource_reader(None), CompatibilityFiles)
92
-
93
-
94
- class CompatibilityFilesNoReaderTests(unittest.TestCase):
95
- @property
96
- def package(self):
97
- return util.create_package_from_loader(None)
98
-
99
- @property
100
- def files(self):
101
- return resources.files(self.package)
102
-
103
- def test_spec_path_joinpath(self):
104
- self.assertIsInstance(self.files / 'a', CompatibilityFiles.OrphanPath)
@@ -1,43 +0,0 @@
1
- import unittest
2
- import importlib_resources as resources
3
-
4
- from . import data01
5
- from . import util
6
-
7
-
8
- class ContentsTests:
9
- expected = {
10
- '__init__.py',
11
- 'binary.file',
12
- 'subdirectory',
13
- 'utf-16.file',
14
- 'utf-8.file',
15
- }
16
-
17
- def test_contents(self):
18
- contents = {path.name for path in resources.files(self.data).iterdir()}
19
- assert self.expected <= contents
20
-
21
-
22
- class ContentsDiskTests(ContentsTests, unittest.TestCase):
23
- def setUp(self):
24
- self.data = data01
25
-
26
-
27
- class ContentsZipTests(ContentsTests, util.ZipSetup, unittest.TestCase):
28
- pass
29
-
30
-
31
- class ContentsNamespaceTests(ContentsTests, unittest.TestCase):
32
- expected = {
33
- # no __init__ because of namespace design
34
- 'binary.file',
35
- 'subdirectory',
36
- 'utf-16.file',
37
- 'utf-8.file',
38
- }
39
-
40
- def setUp(self):
41
- from . import namespacedata01
42
-
43
- self.data = namespacedata01
@@ -1,47 +0,0 @@
1
- import unittest
2
- import contextlib
3
- import pathlib
4
-
5
- import importlib_resources as resources
6
- from .. import abc
7
- from ..abc import TraversableResources, ResourceReader
8
- from . import util
9
- from .compat.py39 import os_helper
10
-
11
-
12
- class SimpleLoader:
13
- """
14
- A simple loader that only implements a resource reader.
15
- """
16
-
17
- def __init__(self, reader: ResourceReader):
18
- self.reader = reader
19
-
20
- def get_resource_reader(self, package):
21
- return self.reader
22
-
23
-
24
- class MagicResources(TraversableResources):
25
- """
26
- Magically returns the resources at path.
27
- """
28
-
29
- def __init__(self, path: pathlib.Path):
30
- self.path = path
31
-
32
- def files(self):
33
- return self.path
34
-
35
-
36
- class CustomTraversableResourcesTests(unittest.TestCase):
37
- def setUp(self):
38
- self.fixtures = contextlib.ExitStack()
39
- self.addCleanup(self.fixtures.close)
40
-
41
- def test_custom_loader(self):
42
- temp_dir = pathlib.Path(self.fixtures.enter_context(os_helper.temp_dir()))
43
- loader = SimpleLoader(MagicResources(temp_dir))
44
- pkg = util.create_package_from_loader(loader)
45
- files = resources.files(pkg)
46
- assert isinstance(files, abc.Traversable)
47
- assert list(files.iterdir()) == []