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,145 +0,0 @@
1
- import os.path
2
- import sys
3
- import pathlib
4
- import unittest
5
-
6
- from importlib import import_module
7
- from importlib_resources.readers import MultiplexedPath, NamespaceReader
8
-
9
-
10
- class MultiplexedPathTest(unittest.TestCase):
11
- @classmethod
12
- def setUpClass(cls):
13
- cls.folder = pathlib.Path(__file__).parent / 'namespacedata01'
14
-
15
- def test_init_no_paths(self):
16
- with self.assertRaises(FileNotFoundError):
17
- MultiplexedPath()
18
-
19
- def test_init_file(self):
20
- with self.assertRaises(NotADirectoryError):
21
- MultiplexedPath(self.folder / 'binary.file')
22
-
23
- def test_iterdir(self):
24
- contents = {path.name for path in MultiplexedPath(self.folder).iterdir()}
25
- try:
26
- contents.remove('__pycache__')
27
- except (KeyError, ValueError):
28
- pass
29
- self.assertEqual(
30
- contents, {'subdirectory', 'binary.file', 'utf-16.file', 'utf-8.file'}
31
- )
32
-
33
- def test_iterdir_duplicate(self):
34
- data01 = pathlib.Path(__file__).parent.joinpath('data01')
35
- contents = {
36
- path.name for path in MultiplexedPath(self.folder, data01).iterdir()
37
- }
38
- for remove in ('__pycache__', '__init__.pyc'):
39
- try:
40
- contents.remove(remove)
41
- except (KeyError, ValueError):
42
- pass
43
- self.assertEqual(
44
- contents,
45
- {'__init__.py', 'binary.file', 'subdirectory', 'utf-16.file', 'utf-8.file'},
46
- )
47
-
48
- def test_is_dir(self):
49
- self.assertEqual(MultiplexedPath(self.folder).is_dir(), True)
50
-
51
- def test_is_file(self):
52
- self.assertEqual(MultiplexedPath(self.folder).is_file(), False)
53
-
54
- def test_open_file(self):
55
- path = MultiplexedPath(self.folder)
56
- with self.assertRaises(FileNotFoundError):
57
- path.read_bytes()
58
- with self.assertRaises(FileNotFoundError):
59
- path.read_text()
60
- with self.assertRaises(FileNotFoundError):
61
- path.open()
62
-
63
- def test_join_path(self):
64
- data01 = pathlib.Path(__file__).parent.joinpath('data01')
65
- prefix = str(data01.parent)
66
- path = MultiplexedPath(self.folder, data01)
67
- self.assertEqual(
68
- str(path.joinpath('binary.file'))[len(prefix) + 1 :],
69
- os.path.join('namespacedata01', 'binary.file'),
70
- )
71
- sub = path.joinpath('subdirectory')
72
- assert isinstance(sub, MultiplexedPath)
73
- assert 'namespacedata01' in str(sub)
74
- assert 'data01' in str(sub)
75
- self.assertEqual(
76
- str(path.joinpath('imaginary'))[len(prefix) + 1 :],
77
- os.path.join('namespacedata01', 'imaginary'),
78
- )
79
- self.assertEqual(path.joinpath(), path)
80
-
81
- def test_join_path_compound(self):
82
- path = MultiplexedPath(self.folder)
83
- assert not path.joinpath('imaginary/foo.py').exists()
84
-
85
- def test_join_path_common_subdir(self):
86
- data01 = pathlib.Path(__file__).parent.joinpath('data01')
87
- data02 = pathlib.Path(__file__).parent.joinpath('data02')
88
- prefix = str(data01.parent)
89
- path = MultiplexedPath(data01, data02)
90
- self.assertIsInstance(path.joinpath('subdirectory'), MultiplexedPath)
91
- self.assertEqual(
92
- str(path.joinpath('subdirectory', 'subsubdir'))[len(prefix) + 1 :],
93
- os.path.join('data02', 'subdirectory', 'subsubdir'),
94
- )
95
-
96
- def test_repr(self):
97
- self.assertEqual(
98
- repr(MultiplexedPath(self.folder)),
99
- f"MultiplexedPath('{self.folder}')",
100
- )
101
-
102
- def test_name(self):
103
- self.assertEqual(
104
- MultiplexedPath(self.folder).name,
105
- os.path.basename(self.folder),
106
- )
107
-
108
-
109
- class NamespaceReaderTest(unittest.TestCase):
110
- site_dir = str(pathlib.Path(__file__).parent)
111
-
112
- @classmethod
113
- def setUpClass(cls):
114
- sys.path.append(cls.site_dir)
115
-
116
- @classmethod
117
- def tearDownClass(cls):
118
- sys.path.remove(cls.site_dir)
119
-
120
- def test_init_error(self):
121
- with self.assertRaises(ValueError):
122
- NamespaceReader(['path1', 'path2'])
123
-
124
- def test_resource_path(self):
125
- namespacedata01 = import_module('namespacedata01')
126
- reader = NamespaceReader(namespacedata01.__spec__.submodule_search_locations)
127
-
128
- root = os.path.abspath(os.path.join(__file__, '..', 'namespacedata01'))
129
- self.assertEqual(
130
- reader.resource_path('binary.file'), os.path.join(root, 'binary.file')
131
- )
132
- self.assertEqual(
133
- reader.resource_path('imaginary'), os.path.join(root, 'imaginary')
134
- )
135
-
136
- def test_files(self):
137
- namespacedata01 = import_module('namespacedata01')
138
- reader = NamespaceReader(namespacedata01.__spec__.submodule_search_locations)
139
- root = os.path.abspath(os.path.join(__file__, '..', 'namespacedata01'))
140
- self.assertIsInstance(reader.files(), MultiplexedPath)
141
- self.assertEqual(repr(reader.files()), f"MultiplexedPath('{root}')")
142
-
143
-
144
- if __name__ == '__main__':
145
- unittest.main()
@@ -1,241 +0,0 @@
1
- import sys
2
- import unittest
3
- import importlib_resources as resources
4
- import pathlib
5
-
6
- from . import data01
7
- from . import util
8
- from importlib import import_module
9
-
10
-
11
- class ResourceTests:
12
- # Subclasses are expected to set the `data` attribute.
13
-
14
- def test_is_file_exists(self):
15
- target = resources.files(self.data) / 'binary.file'
16
- self.assertTrue(target.is_file())
17
-
18
- def test_is_file_missing(self):
19
- target = resources.files(self.data) / 'not-a-file'
20
- self.assertFalse(target.is_file())
21
-
22
- def test_is_dir(self):
23
- target = resources.files(self.data) / 'subdirectory'
24
- self.assertFalse(target.is_file())
25
- self.assertTrue(target.is_dir())
26
-
27
-
28
- class ResourceDiskTests(ResourceTests, unittest.TestCase):
29
- def setUp(self):
30
- self.data = data01
31
-
32
-
33
- class ResourceZipTests(ResourceTests, util.ZipSetup, unittest.TestCase):
34
- pass
35
-
36
-
37
- def names(traversable):
38
- return {item.name for item in traversable.iterdir()}
39
-
40
-
41
- class ResourceLoaderTests(unittest.TestCase):
42
- def test_resource_contents(self):
43
- package = util.create_package(
44
- file=data01, path=data01.__file__, contents=['A', 'B', 'C']
45
- )
46
- self.assertEqual(names(resources.files(package)), {'A', 'B', 'C'})
47
-
48
- def test_is_file(self):
49
- package = util.create_package(
50
- file=data01, path=data01.__file__, contents=['A', 'B', 'C', 'D/E', 'D/F']
51
- )
52
- self.assertTrue(resources.files(package).joinpath('B').is_file())
53
-
54
- def test_is_dir(self):
55
- package = util.create_package(
56
- file=data01, path=data01.__file__, contents=['A', 'B', 'C', 'D/E', 'D/F']
57
- )
58
- self.assertTrue(resources.files(package).joinpath('D').is_dir())
59
-
60
- def test_resource_missing(self):
61
- package = util.create_package(
62
- file=data01, path=data01.__file__, contents=['A', 'B', 'C', 'D/E', 'D/F']
63
- )
64
- self.assertFalse(resources.files(package).joinpath('Z').is_file())
65
-
66
-
67
- class ResourceCornerCaseTests(unittest.TestCase):
68
- def test_package_has_no_reader_fallback(self):
69
- """
70
- Test odd ball packages which:
71
- # 1. Do not have a ResourceReader as a loader
72
- # 2. Are not on the file system
73
- # 3. Are not in a zip file
74
- """
75
- module = util.create_package(
76
- file=data01, path=data01.__file__, contents=['A', 'B', 'C']
77
- )
78
- # Give the module a dummy loader.
79
- module.__loader__ = object()
80
- # Give the module a dummy origin.
81
- module.__file__ = '/path/which/shall/not/be/named'
82
- module.__spec__.loader = module.__loader__
83
- module.__spec__.origin = module.__file__
84
- self.assertFalse(resources.files(module).joinpath('A').is_file())
85
-
86
-
87
- class ResourceFromZipsTest01(util.ZipSetupBase, unittest.TestCase):
88
- ZIP_MODULE = 'data01'
89
-
90
- def test_is_submodule_resource(self):
91
- submodule = import_module('data01.subdirectory')
92
- self.assertTrue(resources.files(submodule).joinpath('binary.file').is_file())
93
-
94
- def test_read_submodule_resource_by_name(self):
95
- self.assertTrue(
96
- resources.files('data01.subdirectory').joinpath('binary.file').is_file()
97
- )
98
-
99
- def test_submodule_contents(self):
100
- submodule = import_module('data01.subdirectory')
101
- self.assertEqual(
102
- names(resources.files(submodule)), {'__init__.py', 'binary.file'}
103
- )
104
-
105
- def test_submodule_contents_by_name(self):
106
- self.assertEqual(
107
- names(resources.files('data01.subdirectory')),
108
- {'__init__.py', 'binary.file'},
109
- )
110
-
111
- def test_as_file_directory(self):
112
- with resources.as_file(resources.files('data01')) as data:
113
- assert data.name == 'data01'
114
- assert data.is_dir()
115
- assert data.joinpath('subdirectory').is_dir()
116
- assert len(list(data.iterdir()))
117
- assert not data.parent.exists()
118
-
119
-
120
- class ResourceFromZipsTest02(util.ZipSetupBase, unittest.TestCase):
121
- ZIP_MODULE = 'data02'
122
-
123
- def test_unrelated_contents(self):
124
- """
125
- Test thata zip with two unrelated subpackages return
126
- distinct resources. Ref python/importlib_resources#44.
127
- """
128
- self.assertEqual(
129
- names(resources.files('data02.one')),
130
- {'__init__.py', 'resource1.txt'},
131
- )
132
- self.assertEqual(
133
- names(resources.files('data02.two')),
134
- {'__init__.py', 'resource2.txt'},
135
- )
136
-
137
-
138
- class DeletingZipsTest(util.ZipSetupBase, unittest.TestCase):
139
- """Having accessed resources in a zip file should not keep an open
140
- reference to the zip.
141
- """
142
-
143
- def test_iterdir_does_not_keep_open(self):
144
- [item.name for item in resources.files('data01').iterdir()]
145
-
146
- def test_is_file_does_not_keep_open(self):
147
- resources.files('data01').joinpath('binary.file').is_file()
148
-
149
- def test_is_file_failure_does_not_keep_open(self):
150
- resources.files('data01').joinpath('not-present').is_file()
151
-
152
- @unittest.skip("Desired but not supported.")
153
- def test_as_file_does_not_keep_open(self): # pragma: no cover
154
- resources.as_file(resources.files('data01') / 'binary.file')
155
-
156
- def test_entered_path_does_not_keep_open(self):
157
- """
158
- Mimic what certifi does on import to make its bundle
159
- available for the process duration.
160
- """
161
- resources.as_file(resources.files('data01') / 'binary.file').__enter__()
162
-
163
- def test_read_binary_does_not_keep_open(self):
164
- resources.files('data01').joinpath('binary.file').read_bytes()
165
-
166
- def test_read_text_does_not_keep_open(self):
167
- resources.files('data01').joinpath('utf-8.file').read_text(encoding='utf-8')
168
-
169
-
170
- class ResourceFromNamespaceTests:
171
- def test_is_submodule_resource(self):
172
- self.assertTrue(
173
- resources.files(import_module('namespacedata01'))
174
- .joinpath('binary.file')
175
- .is_file()
176
- )
177
-
178
- def test_read_submodule_resource_by_name(self):
179
- self.assertTrue(
180
- resources.files('namespacedata01').joinpath('binary.file').is_file()
181
- )
182
-
183
- def test_submodule_contents(self):
184
- contents = names(resources.files(import_module('namespacedata01')))
185
- try:
186
- contents.remove('__pycache__')
187
- except KeyError:
188
- pass
189
- self.assertEqual(
190
- contents, {'subdirectory', 'binary.file', 'utf-8.file', 'utf-16.file'}
191
- )
192
-
193
- def test_submodule_contents_by_name(self):
194
- contents = names(resources.files('namespacedata01'))
195
- try:
196
- contents.remove('__pycache__')
197
- except KeyError:
198
- pass
199
- self.assertEqual(
200
- contents, {'subdirectory', 'binary.file', 'utf-8.file', 'utf-16.file'}
201
- )
202
-
203
- def test_submodule_sub_contents(self):
204
- contents = names(resources.files(import_module('namespacedata01.subdirectory')))
205
- try:
206
- contents.remove('__pycache__')
207
- except KeyError:
208
- pass
209
- self.assertEqual(contents, {'binary.file'})
210
-
211
- def test_submodule_sub_contents_by_name(self):
212
- contents = names(resources.files('namespacedata01.subdirectory'))
213
- try:
214
- contents.remove('__pycache__')
215
- except KeyError:
216
- pass
217
- self.assertEqual(contents, {'binary.file'})
218
-
219
-
220
- class ResourceFromNamespaceDiskTests(ResourceFromNamespaceTests, unittest.TestCase):
221
- site_dir = str(pathlib.Path(__file__).parent)
222
-
223
- @classmethod
224
- def setUpClass(cls):
225
- sys.path.append(cls.site_dir)
226
-
227
- @classmethod
228
- def tearDownClass(cls):
229
- sys.path.remove(cls.site_dir)
230
-
231
-
232
- class ResourceFromNamespaceZipTests(
233
- util.ZipSetupBase,
234
- ResourceFromNamespaceTests,
235
- unittest.TestCase,
236
- ):
237
- ZIP_MODULE = 'namespacedata01'
238
-
239
-
240
- if __name__ == '__main__':
241
- unittest.main()
@@ -1,164 +0,0 @@
1
- import abc
2
- import importlib
3
- import io
4
- import sys
5
- import types
6
- import pathlib
7
- import contextlib
8
-
9
- from . import data01
10
- from ..abc import ResourceReader
11
- from .compat.py39 import import_helper, os_helper
12
- from . import zip as zip_
13
-
14
-
15
- from importlib.machinery import ModuleSpec
16
-
17
-
18
- class Reader(ResourceReader):
19
- def __init__(self, **kwargs):
20
- vars(self).update(kwargs)
21
-
22
- def get_resource_reader(self, package):
23
- return self
24
-
25
- def open_resource(self, path):
26
- self._path = path
27
- if isinstance(self.file, Exception):
28
- raise self.file
29
- return self.file
30
-
31
- def resource_path(self, path_):
32
- self._path = path_
33
- if isinstance(self.path, Exception):
34
- raise self.path
35
- return self.path
36
-
37
- def is_resource(self, path_):
38
- self._path = path_
39
- if isinstance(self.path, Exception):
40
- raise self.path
41
-
42
- def part(entry):
43
- return entry.split('/')
44
-
45
- return any(
46
- len(parts) == 1 and parts[0] == path_ for parts in map(part, self._contents)
47
- )
48
-
49
- def contents(self):
50
- if isinstance(self.path, Exception):
51
- raise self.path
52
- yield from self._contents
53
-
54
-
55
- def create_package_from_loader(loader, is_package=True):
56
- name = 'testingpackage'
57
- module = types.ModuleType(name)
58
- spec = ModuleSpec(name, loader, origin='does-not-exist', is_package=is_package)
59
- module.__spec__ = spec
60
- module.__loader__ = loader
61
- return module
62
-
63
-
64
- def create_package(file=None, path=None, is_package=True, contents=()):
65
- return create_package_from_loader(
66
- Reader(file=file, path=path, _contents=contents),
67
- is_package,
68
- )
69
-
70
-
71
- class CommonTests(metaclass=abc.ABCMeta):
72
- """
73
- Tests shared by test_open, test_path, and test_read.
74
- """
75
-
76
- @abc.abstractmethod
77
- def execute(self, package, path):
78
- """
79
- Call the pertinent legacy API function (e.g. open_text, path)
80
- on package and path.
81
- """
82
-
83
- def test_package_name(self):
84
- """
85
- Passing in the package name should succeed.
86
- """
87
- self.execute(data01.__name__, 'utf-8.file')
88
-
89
- def test_package_object(self):
90
- """
91
- Passing in the package itself should succeed.
92
- """
93
- self.execute(data01, 'utf-8.file')
94
-
95
- def test_string_path(self):
96
- """
97
- Passing in a string for the path should succeed.
98
- """
99
- path = 'utf-8.file'
100
- self.execute(data01, path)
101
-
102
- def test_pathlib_path(self):
103
- """
104
- Passing in a pathlib.PurePath object for the path should succeed.
105
- """
106
- path = pathlib.PurePath('utf-8.file')
107
- self.execute(data01, path)
108
-
109
- def test_importing_module_as_side_effect(self):
110
- """
111
- The anchor package can already be imported.
112
- """
113
- del sys.modules[data01.__name__]
114
- self.execute(data01.__name__, 'utf-8.file')
115
-
116
- def test_missing_path(self):
117
- """
118
- Attempting to open or read or request the path for a
119
- non-existent path should succeed if open_resource
120
- can return a viable data stream.
121
- """
122
- bytes_data = io.BytesIO(b'Hello, world!')
123
- package = create_package(file=bytes_data, path=FileNotFoundError())
124
- self.execute(package, 'utf-8.file')
125
- self.assertEqual(package.__loader__._path, 'utf-8.file')
126
-
127
- def test_extant_path(self):
128
- # Attempting to open or read or request the path when the
129
- # path does exist should still succeed. Does not assert
130
- # anything about the result.
131
- bytes_data = io.BytesIO(b'Hello, world!')
132
- # any path that exists
133
- path = __file__
134
- package = create_package(file=bytes_data, path=path)
135
- self.execute(package, 'utf-8.file')
136
- self.assertEqual(package.__loader__._path, 'utf-8.file')
137
-
138
- def test_useless_loader(self):
139
- package = create_package(file=FileNotFoundError(), path=FileNotFoundError())
140
- with self.assertRaises(FileNotFoundError):
141
- self.execute(package, 'utf-8.file')
142
-
143
-
144
- class ZipSetupBase:
145
- ZIP_MODULE = 'data01'
146
-
147
- def setUp(self):
148
- self.fixtures = contextlib.ExitStack()
149
- self.addCleanup(self.fixtures.close)
150
-
151
- self.fixtures.enter_context(import_helper.isolated_modules())
152
-
153
- temp_dir = self.fixtures.enter_context(os_helper.temp_dir())
154
- modules = pathlib.Path(temp_dir) / 'zipped modules.zip'
155
- src_path = pathlib.Path(__file__).parent.joinpath(self.ZIP_MODULE)
156
- self.fixtures.enter_context(
157
- import_helper.DirsOnSysPath(str(zip_.make_zip_file(src_path, modules)))
158
- )
159
-
160
- self.data = importlib.import_module(self.ZIP_MODULE)
161
-
162
-
163
- class ZipSetup(ZipSetupBase):
164
- pass
@@ -1,32 +0,0 @@
1
- """
2
- Generate zip test data files.
3
- """
4
-
5
- import contextlib
6
- import os
7
- import pathlib
8
- import zipfile
9
-
10
- import zipp
11
-
12
-
13
- def make_zip_file(src, dst):
14
- """
15
- Zip the files in src into a new zipfile at dst.
16
- """
17
- with zipfile.ZipFile(dst, 'w') as zf:
18
- for src_path, rel in walk(src):
19
- dst_name = src.name / pathlib.PurePosixPath(rel.as_posix())
20
- zf.write(src_path, dst_name)
21
- zipp.CompleteDirs.inject(zf)
22
- return dst
23
-
24
-
25
- def walk(datapath):
26
- for dirpath, dirnames, filenames in os.walk(datapath):
27
- with contextlib.suppress(ValueError):
28
- dirnames.remove('__pycache__')
29
- for filename in filenames:
30
- res = pathlib.Path(dirpath) / filename
31
- rel = res.relative_to(datapath)
32
- yield res, rel
@@ -1,36 +0,0 @@
1
- """Read resources contained within a package."""
2
-
3
- from ._common import (
4
- as_file,
5
- files,
6
- Package,
7
- Anchor,
8
- )
9
-
10
- from .functional import (
11
- contents,
12
- is_resource,
13
- open_binary,
14
- open_text,
15
- path,
16
- read_binary,
17
- read_text,
18
- )
19
-
20
- from .abc import ResourceReader
21
-
22
-
23
- __all__ = [
24
- 'Package',
25
- 'Anchor',
26
- 'ResourceReader',
27
- 'as_file',
28
- 'files',
29
- 'contents',
30
- 'is_resource',
31
- 'open_binary',
32
- 'open_text',
33
- 'path',
34
- 'read_binary',
35
- 'read_text',
36
- ]