py2docfx 0.1.11.dev1827111__py3-none-any.whl → 0.1.11.dev1859874__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 (2004) hide show
  1. py2docfx/__main__.py +4 -16
  2. py2docfx/convert_prepare/package_info.py +1 -1
  3. py2docfx/convert_prepare/tests/test_package_info.py +7 -22
  4. py2docfx/convert_prepare/tests/test_params.py +5 -0
  5. py2docfx/venv/0/Lib/site-packages/_distutils_hack/__init__.py +3 -4
  6. py2docfx/venv/0/Lib/site-packages/certifi/__init__.py +1 -1
  7. py2docfx/venv/0/Lib/site-packages/idna/__init__.py +2 -1
  8. py2docfx/venv/0/Lib/site-packages/idna/codec.py +31 -27
  9. py2docfx/venv/0/Lib/site-packages/idna/compat.py +6 -4
  10. py2docfx/venv/0/Lib/site-packages/idna/core.py +161 -119
  11. py2docfx/venv/0/Lib/site-packages/idna/idnadata.py +3537 -3539
  12. py2docfx/venv/0/Lib/site-packages/idna/intranges.py +7 -4
  13. py2docfx/venv/0/Lib/site-packages/idna/package_data.py +1 -2
  14. py2docfx/venv/0/Lib/site-packages/idna/uts46data.py +8261 -8178
  15. py2docfx/venv/0/Lib/site-packages/pkg_resources/__init__.py +145 -135
  16. py2docfx/venv/0/Lib/site-packages/pkg_resources/tests/test_find_distributions.py +3 -2
  17. py2docfx/venv/0/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +12 -17
  18. py2docfx/venv/0/Lib/site-packages/pkg_resources/tests/test_resources.py +12 -12
  19. py2docfx/venv/0/Lib/site-packages/pkg_resources/tests/test_working_set.py +1 -1
  20. py2docfx/venv/0/Lib/site-packages/setuptools/__init__.py +67 -36
  21. py2docfx/venv/0/Lib/site-packages/setuptools/_core_metadata.py +4 -3
  22. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_modified.py +3 -2
  23. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +75 -39
  24. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/archive_util.py +5 -24
  25. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/ccompiler.py +2 -1
  26. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/command/__init__.py +0 -2
  27. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/command/build_ext.py +1 -2
  28. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/command/install.py +4 -3
  29. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/command/install_lib.py +3 -3
  30. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/command/sdist.py +1 -13
  31. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/core.py +1 -2
  32. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py +11 -6
  33. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/dir_util.py +120 -109
  34. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/dist.py +8 -18
  35. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/errors.py +5 -8
  36. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/extension.py +1 -1
  37. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/file_util.py +2 -1
  38. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/sysconfig.py +3 -2
  39. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/tests/test_archive_util.py +0 -33
  40. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +1 -1
  41. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/tests/test_modified.py +7 -0
  42. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/tests/test_msvccompiler.py +33 -10
  43. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/tests/test_sdist.py +4 -13
  44. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/util.py +2 -1
  45. py2docfx/venv/0/Lib/site-packages/setuptools/_entry_points.py +5 -4
  46. py2docfx/venv/0/Lib/site-packages/setuptools/_imp.py +2 -4
  47. py2docfx/venv/0/Lib/site-packages/setuptools/_importlib.py +0 -1
  48. py2docfx/venv/0/Lib/site-packages/setuptools/_path.py +9 -4
  49. py2docfx/venv/0/Lib/site-packages/setuptools/_reqs.py +10 -7
  50. py2docfx/venv/0/Lib/site-packages/setuptools/_vendor/jaraco/collections/__init__.py +1091 -0
  51. py2docfx/venv/0/Lib/site-packages/setuptools/archive_util.py +6 -5
  52. py2docfx/venv/0/Lib/site-packages/setuptools/build_meta.py +15 -9
  53. py2docfx/venv/0/Lib/site-packages/setuptools/command/__init__.py +2 -1
  54. py2docfx/venv/0/Lib/site-packages/setuptools/command/_requirestxt.py +1 -1
  55. py2docfx/venv/0/Lib/site-packages/setuptools/command/alias.py +2 -2
  56. py2docfx/venv/0/Lib/site-packages/setuptools/command/bdist_egg.py +8 -7
  57. py2docfx/venv/0/Lib/site-packages/setuptools/command/bdist_rpm.py +5 -2
  58. py2docfx/venv/0/Lib/site-packages/setuptools/command/bdist_wheel.py +72 -34
  59. py2docfx/venv/0/Lib/site-packages/setuptools/command/build.py +11 -0
  60. py2docfx/venv/0/Lib/site-packages/setuptools/command/build_clib.py +8 -2
  61. py2docfx/venv/0/Lib/site-packages/setuptools/command/build_ext.py +32 -23
  62. py2docfx/venv/0/Lib/site-packages/setuptools/command/build_py.py +11 -8
  63. py2docfx/venv/0/Lib/site-packages/setuptools/command/develop.py +8 -9
  64. py2docfx/venv/0/Lib/site-packages/setuptools/command/dist_info.py +3 -2
  65. py2docfx/venv/0/Lib/site-packages/setuptools/command/easy_install.py +100 -74
  66. py2docfx/venv/0/Lib/site-packages/setuptools/command/editable_wheel.py +48 -36
  67. py2docfx/venv/0/Lib/site-packages/setuptools/command/egg_info.py +16 -25
  68. py2docfx/venv/0/Lib/site-packages/setuptools/command/install.py +9 -4
  69. py2docfx/venv/0/Lib/site-packages/setuptools/command/install_egg_info.py +4 -3
  70. py2docfx/venv/0/Lib/site-packages/setuptools/command/install_lib.py +8 -1
  71. py2docfx/venv/0/Lib/site-packages/setuptools/command/install_scripts.py +7 -2
  72. py2docfx/venv/0/Lib/site-packages/setuptools/command/rotate.py +4 -3
  73. py2docfx/venv/0/Lib/site-packages/setuptools/command/sdist.py +16 -4
  74. py2docfx/venv/0/Lib/site-packages/setuptools/command/setopt.py +6 -5
  75. py2docfx/venv/0/Lib/site-packages/setuptools/command/test.py +4 -1
  76. py2docfx/venv/0/Lib/site-packages/setuptools/compat/py310.py +0 -1
  77. py2docfx/venv/0/Lib/site-packages/setuptools/compat/py311.py +4 -3
  78. py2docfx/venv/0/Lib/site-packages/setuptools/compat/py312.py +13 -0
  79. py2docfx/venv/0/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +37 -16
  80. py2docfx/venv/0/Lib/site-packages/setuptools/config/_validate_pyproject/error_reporting.py +2 -4
  81. py2docfx/venv/0/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +266 -51
  82. py2docfx/venv/0/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +23 -2
  83. py2docfx/venv/0/Lib/site-packages/setuptools/config/expand.py +18 -18
  84. py2docfx/venv/0/Lib/site-packages/setuptools/config/pyprojecttoml.py +20 -7
  85. py2docfx/venv/0/Lib/site-packages/setuptools/config/setupcfg.py +12 -9
  86. py2docfx/venv/0/Lib/site-packages/setuptools/depends.py +4 -5
  87. py2docfx/venv/0/Lib/site-packages/setuptools/discovery.py +2 -6
  88. py2docfx/venv/0/Lib/site-packages/setuptools/dist.py +24 -19
  89. py2docfx/venv/0/Lib/site-packages/setuptools/errors.py +23 -17
  90. py2docfx/venv/0/Lib/site-packages/setuptools/extension.py +22 -8
  91. py2docfx/venv/0/Lib/site-packages/setuptools/glob.py +1 -1
  92. py2docfx/venv/0/Lib/site-packages/setuptools/installer.py +4 -3
  93. py2docfx/venv/0/Lib/site-packages/setuptools/launch.py +1 -1
  94. py2docfx/venv/0/Lib/site-packages/setuptools/logging.py +4 -2
  95. py2docfx/venv/0/Lib/site-packages/setuptools/modified.py +1 -1
  96. py2docfx/venv/0/Lib/site-packages/setuptools/monkey.py +19 -50
  97. py2docfx/venv/0/Lib/site-packages/setuptools/msvc.py +118 -350
  98. py2docfx/venv/0/Lib/site-packages/setuptools/namespaces.py +6 -5
  99. py2docfx/venv/0/Lib/site-packages/setuptools/package_index.py +35 -35
  100. py2docfx/venv/0/Lib/site-packages/setuptools/sandbox.py +30 -31
  101. py2docfx/venv/0/Lib/site-packages/setuptools/tests/__init__.py +4 -6
  102. py2docfx/venv/0/Lib/site-packages/setuptools/tests/compat/py39.py +0 -1
  103. py2docfx/venv/0/Lib/site-packages/setuptools/tests/config/downloads/preload.py +0 -1
  104. py2docfx/venv/0/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +51 -6
  105. py2docfx/venv/0/Lib/site-packages/setuptools/tests/config/test_expand.py +2 -1
  106. py2docfx/venv/0/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +3 -4
  107. py2docfx/venv/0/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +6 -4
  108. py2docfx/venv/0/Lib/site-packages/setuptools/tests/contexts.py +4 -4
  109. py2docfx/venv/0/Lib/site-packages/setuptools/tests/environment.py +2 -2
  110. py2docfx/venv/0/Lib/site-packages/setuptools/tests/fixtures.py +3 -3
  111. py2docfx/venv/0/Lib/site-packages/setuptools/tests/integration/helpers.py +1 -1
  112. py2docfx/venv/0/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +3 -4
  113. py2docfx/venv/0/Lib/site-packages/setuptools/tests/server.py +2 -2
  114. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_archive_util.py +1 -1
  115. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_bdist_deprecations.py +1 -1
  116. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +27 -17
  117. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_build.py +1 -1
  118. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_build_clib.py +3 -2
  119. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_build_ext.py +5 -6
  120. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_build_meta.py +12 -15
  121. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_build_py.py +2 -2
  122. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_config_discovery.py +13 -9
  123. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_core_metadata.py +4 -6
  124. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_develop.py +5 -5
  125. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_dist.py +10 -11
  126. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_dist_info.py +1 -1
  127. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +1 -2
  128. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_easy_install.py +28 -18
  129. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_editable_install.py +9 -9
  130. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_egg_info.py +4 -9
  131. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_extern.py +4 -9
  132. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_find_packages.py +1 -2
  133. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_find_py_modules.py +1 -1
  134. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_install_scripts.py +1 -0
  135. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_logging.py +3 -1
  136. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_manifest.py +7 -7
  137. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_namespaces.py +1 -1
  138. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_packageindex.py +4 -3
  139. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_sandbox.py +1 -1
  140. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_sdist.py +76 -11
  141. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_setuptools.py +8 -8
  142. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_virtualenv.py +3 -5
  143. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_warnings.py +0 -1
  144. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_wheel.py +9 -9
  145. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +3 -3
  146. py2docfx/venv/0/Lib/site-packages/setuptools/unicode_utils.py +1 -1
  147. py2docfx/venv/0/Lib/site-packages/setuptools/wheel.py +5 -6
  148. py2docfx/venv/0/Lib/site-packages/setuptools/windows_support.py +2 -2
  149. py2docfx/venv/0/Lib/site-packages/urllib3/_request_methods.py +2 -3
  150. py2docfx/venv/0/Lib/site-packages/urllib3/_version.py +15 -3
  151. py2docfx/venv/0/Lib/site-packages/urllib3/connection.py +158 -54
  152. py2docfx/venv/0/Lib/site-packages/urllib3/contrib/pyopenssl.py +4 -0
  153. py2docfx/venv/0/Lib/site-packages/urllib3/http2/__init__.py +53 -0
  154. py2docfx/venv/0/Lib/site-packages/urllib3/http2/connection.py +356 -0
  155. py2docfx/venv/0/Lib/site-packages/urllib3/http2/probe.py +87 -0
  156. py2docfx/venv/0/Lib/site-packages/urllib3/util/connection.py +1 -1
  157. py2docfx/venv/0/Lib/site-packages/urllib3/util/request.py +1 -1
  158. py2docfx/venv/0/Lib/site-packages/urllib3/util/ssl_.py +12 -8
  159. py2docfx/venv/0/Lib/site-packages/urllib3/util/ssltransport.py +0 -3
  160. py2docfx/venv/0/Scripts/rst2html.py +1 -1
  161. py2docfx/venv/0/Scripts/rst2html4.py +1 -1
  162. py2docfx/venv/0/Scripts/rst2html5.py +1 -1
  163. py2docfx/venv/0/Scripts/rst2latex.py +1 -1
  164. py2docfx/venv/0/Scripts/rst2man.py +1 -1
  165. py2docfx/venv/0/Scripts/rst2odt.py +1 -1
  166. py2docfx/venv/0/Scripts/rst2odt_prepstyles.py +1 -1
  167. py2docfx/venv/0/Scripts/rst2pseudoxml.py +1 -1
  168. py2docfx/venv/0/Scripts/rst2s5.py +1 -1
  169. py2docfx/venv/0/Scripts/rst2xetex.py +1 -1
  170. py2docfx/venv/0/Scripts/rst2xml.py +1 -1
  171. py2docfx/venv/0/Scripts/rstpep2html.py +1 -1
  172. {py2docfx-0.1.11.dev1827111.dist-info → py2docfx-0.1.11.dev1859874.dist-info}/METADATA +1 -1
  173. py2docfx-0.1.11.dev1859874.dist-info/RECORD +1889 -0
  174. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_collections.py +0 -58
  175. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_functools.py +0 -73
  176. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_itertools.py +0 -52
  177. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/__init__.py +0 -0
  178. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/__init__.py +0 -15
  179. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/_elffile.py +0 -108
  180. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/_manylinux.py +0 -260
  181. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/_musllinux.py +0 -83
  182. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/_parser.py +0 -356
  183. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/_structures.py +0 -61
  184. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/_tokenizer.py +0 -192
  185. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/markers.py +0 -252
  186. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/metadata.py +0 -825
  187. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/requirements.py +0 -90
  188. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/specifiers.py +0 -1017
  189. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/tags.py +0 -571
  190. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/utils.py +0 -172
  191. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/_vendor/packaging/version.py +0 -563
  192. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/bcppcompiler.py +0 -396
  193. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/command/register.py +0 -322
  194. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/command/upload.py +0 -208
  195. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/config.py +0 -151
  196. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/msvc9compiler.py +0 -822
  197. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/msvccompiler.py +0 -687
  198. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/tests/test_config.py +0 -116
  199. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/tests/test_msvc9compiler.py +0 -184
  200. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/tests/test_register.py +0 -314
  201. py2docfx/venv/0/Lib/site-packages/setuptools/_distutils/tests/test_upload.py +0 -215
  202. py2docfx/venv/0/Lib/site-packages/setuptools/_vendor/ordered_set/__init__.py +0 -536
  203. py2docfx/venv/0/Lib/site-packages/setuptools/command/register.py +0 -18
  204. py2docfx/venv/0/Lib/site-packages/setuptools/command/upload.py +0 -17
  205. py2docfx/venv/0/Lib/site-packages/setuptools/command/upload_docs.py +0 -221
  206. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_integration.py +0 -122
  207. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_msvc14.py +0 -83
  208. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_register.py +0 -19
  209. py2docfx/venv/0/Lib/site-packages/setuptools/tests/test_upload.py +0 -19
  210. py2docfx/venv/0/Lib/site-packages/urllib3/http2.py +0 -230
  211. py2docfx/venv/template/Lib/site-packages/_distutils_hack/__init__.py +0 -241
  212. py2docfx/venv/template/Lib/site-packages/_distutils_hack/override.py +0 -1
  213. py2docfx/venv/template/Lib/site-packages/_yaml/__init__.py +0 -33
  214. py2docfx/venv/template/Lib/site-packages/alabaster/__init__.py +0 -35
  215. py2docfx/venv/template/Lib/site-packages/alabaster/support.py +0 -89
  216. py2docfx/venv/template/Lib/site-packages/babel/__init__.py +0 -37
  217. py2docfx/venv/template/Lib/site-packages/babel/core.py +0 -1300
  218. py2docfx/venv/template/Lib/site-packages/babel/dates.py +0 -1925
  219. py2docfx/venv/template/Lib/site-packages/babel/languages.py +0 -72
  220. py2docfx/venv/template/Lib/site-packages/babel/lists.py +0 -123
  221. py2docfx/venv/template/Lib/site-packages/babel/localedata.py +0 -278
  222. py2docfx/venv/template/Lib/site-packages/babel/localtime/__init__.py +0 -43
  223. py2docfx/venv/template/Lib/site-packages/babel/localtime/_fallback.py +0 -44
  224. py2docfx/venv/template/Lib/site-packages/babel/localtime/_helpers.py +0 -57
  225. py2docfx/venv/template/Lib/site-packages/babel/localtime/_unix.py +0 -98
  226. py2docfx/venv/template/Lib/site-packages/babel/localtime/_win32.py +0 -98
  227. py2docfx/venv/template/Lib/site-packages/babel/messages/__init__.py +0 -21
  228. py2docfx/venv/template/Lib/site-packages/babel/messages/_compat.py +0 -34
  229. py2docfx/venv/template/Lib/site-packages/babel/messages/catalog.py +0 -952
  230. py2docfx/venv/template/Lib/site-packages/babel/messages/checkers.py +0 -168
  231. py2docfx/venv/template/Lib/site-packages/babel/messages/extract.py +0 -843
  232. py2docfx/venv/template/Lib/site-packages/babel/messages/frontend.py +0 -1203
  233. py2docfx/venv/template/Lib/site-packages/babel/messages/jslexer.py +0 -203
  234. py2docfx/venv/template/Lib/site-packages/babel/messages/mofile.py +0 -212
  235. py2docfx/venv/template/Lib/site-packages/babel/messages/plurals.py +0 -257
  236. py2docfx/venv/template/Lib/site-packages/babel/messages/pofile.py +0 -675
  237. py2docfx/venv/template/Lib/site-packages/babel/messages/setuptools_frontend.py +0 -108
  238. py2docfx/venv/template/Lib/site-packages/babel/numbers.py +0 -1573
  239. py2docfx/venv/template/Lib/site-packages/babel/plural.py +0 -640
  240. py2docfx/venv/template/Lib/site-packages/babel/support.py +0 -726
  241. py2docfx/venv/template/Lib/site-packages/babel/units.py +0 -343
  242. py2docfx/venv/template/Lib/site-packages/babel/util.py +0 -269
  243. py2docfx/venv/template/Lib/site-packages/certifi/__init__.py +0 -4
  244. py2docfx/venv/template/Lib/site-packages/certifi/__main__.py +0 -12
  245. py2docfx/venv/template/Lib/site-packages/certifi/core.py +0 -114
  246. py2docfx/venv/template/Lib/site-packages/charset_normalizer/__init__.py +0 -46
  247. py2docfx/venv/template/Lib/site-packages/charset_normalizer/__main__.py +0 -4
  248. py2docfx/venv/template/Lib/site-packages/charset_normalizer/api.py +0 -626
  249. py2docfx/venv/template/Lib/site-packages/charset_normalizer/cd.py +0 -395
  250. py2docfx/venv/template/Lib/site-packages/charset_normalizer/cli/__init__.py +0 -6
  251. py2docfx/venv/template/Lib/site-packages/charset_normalizer/cli/__main__.py +0 -296
  252. py2docfx/venv/template/Lib/site-packages/charset_normalizer/constant.py +0 -1995
  253. py2docfx/venv/template/Lib/site-packages/charset_normalizer/legacy.py +0 -54
  254. py2docfx/venv/template/Lib/site-packages/charset_normalizer/md.py +0 -615
  255. py2docfx/venv/template/Lib/site-packages/charset_normalizer/models.py +0 -340
  256. py2docfx/venv/template/Lib/site-packages/charset_normalizer/utils.py +0 -421
  257. py2docfx/venv/template/Lib/site-packages/charset_normalizer/version.py +0 -6
  258. py2docfx/venv/template/Lib/site-packages/colorama/__init__.py +0 -7
  259. py2docfx/venv/template/Lib/site-packages/colorama/ansi.py +0 -102
  260. py2docfx/venv/template/Lib/site-packages/colorama/ansitowin32.py +0 -277
  261. py2docfx/venv/template/Lib/site-packages/colorama/initialise.py +0 -121
  262. py2docfx/venv/template/Lib/site-packages/colorama/tests/__init__.py +0 -1
  263. py2docfx/venv/template/Lib/site-packages/colorama/tests/ansi_test.py +0 -76
  264. py2docfx/venv/template/Lib/site-packages/colorama/tests/ansitowin32_test.py +0 -294
  265. py2docfx/venv/template/Lib/site-packages/colorama/tests/initialise_test.py +0 -189
  266. py2docfx/venv/template/Lib/site-packages/colorama/tests/isatty_test.py +0 -57
  267. py2docfx/venv/template/Lib/site-packages/colorama/tests/utils.py +0 -49
  268. py2docfx/venv/template/Lib/site-packages/colorama/tests/winterm_test.py +0 -131
  269. py2docfx/venv/template/Lib/site-packages/colorama/win32.py +0 -180
  270. py2docfx/venv/template/Lib/site-packages/colorama/winterm.py +0 -195
  271. py2docfx/venv/template/Lib/site-packages/docutils/__init__.py +0 -284
  272. py2docfx/venv/template/Lib/site-packages/docutils/__main__.py +0 -96
  273. py2docfx/venv/template/Lib/site-packages/docutils/core.py +0 -714
  274. py2docfx/venv/template/Lib/site-packages/docutils/examples.py +0 -99
  275. py2docfx/venv/template/Lib/site-packages/docutils/frontend.py +0 -951
  276. py2docfx/venv/template/Lib/site-packages/docutils/io.py +0 -611
  277. py2docfx/venv/template/Lib/site-packages/docutils/languages/__init__.py +0 -83
  278. py2docfx/venv/template/Lib/site-packages/docutils/languages/af.py +0 -58
  279. py2docfx/venv/template/Lib/site-packages/docutils/languages/ar.py +0 -60
  280. py2docfx/venv/template/Lib/site-packages/docutils/languages/ca.py +0 -60
  281. py2docfx/venv/template/Lib/site-packages/docutils/languages/cs.py +0 -60
  282. py2docfx/venv/template/Lib/site-packages/docutils/languages/da.py +0 -61
  283. py2docfx/venv/template/Lib/site-packages/docutils/languages/de.py +0 -58
  284. py2docfx/venv/template/Lib/site-packages/docutils/languages/en.py +0 -60
  285. py2docfx/venv/template/Lib/site-packages/docutils/languages/eo.py +0 -61
  286. py2docfx/venv/template/Lib/site-packages/docutils/languages/es.py +0 -58
  287. py2docfx/venv/template/Lib/site-packages/docutils/languages/fa.py +0 -60
  288. py2docfx/venv/template/Lib/site-packages/docutils/languages/fi.py +0 -60
  289. py2docfx/venv/template/Lib/site-packages/docutils/languages/fr.py +0 -58
  290. py2docfx/venv/template/Lib/site-packages/docutils/languages/gl.py +0 -62
  291. py2docfx/venv/template/Lib/site-packages/docutils/languages/he.py +0 -61
  292. py2docfx/venv/template/Lib/site-packages/docutils/languages/it.py +0 -58
  293. py2docfx/venv/template/Lib/site-packages/docutils/languages/ja.py +0 -60
  294. py2docfx/venv/template/Lib/site-packages/docutils/languages/ko.py +0 -60
  295. py2docfx/venv/template/Lib/site-packages/docutils/languages/lt.py +0 -60
  296. py2docfx/venv/template/Lib/site-packages/docutils/languages/lv.py +0 -59
  297. py2docfx/venv/template/Lib/site-packages/docutils/languages/nl.py +0 -60
  298. py2docfx/venv/template/Lib/site-packages/docutils/languages/pl.py +0 -60
  299. py2docfx/venv/template/Lib/site-packages/docutils/languages/pt_br.py +0 -60
  300. py2docfx/venv/template/Lib/site-packages/docutils/languages/ru.py +0 -58
  301. py2docfx/venv/template/Lib/site-packages/docutils/languages/sk.py +0 -58
  302. py2docfx/venv/template/Lib/site-packages/docutils/languages/sv.py +0 -59
  303. py2docfx/venv/template/Lib/site-packages/docutils/languages/zh_cn.py +0 -66
  304. py2docfx/venv/template/Lib/site-packages/docutils/languages/zh_tw.py +0 -65
  305. py2docfx/venv/template/Lib/site-packages/docutils/nodes.py +0 -2314
  306. py2docfx/venv/template/Lib/site-packages/docutils/parsers/__init__.py +0 -92
  307. py2docfx/venv/template/Lib/site-packages/docutils/parsers/commonmark_wrapper.py +0 -56
  308. py2docfx/venv/template/Lib/site-packages/docutils/parsers/null.py +0 -20
  309. py2docfx/venv/template/Lib/site-packages/docutils/parsers/recommonmark_wrapper.py +0 -136
  310. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/__init__.py +0 -414
  311. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/directives/__init__.py +0 -460
  312. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/directives/admonitions.py +0 -99
  313. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/directives/body.py +0 -304
  314. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/directives/html.py +0 -21
  315. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/directives/images.py +0 -163
  316. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/directives/misc.py +0 -635
  317. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/directives/parts.py +0 -126
  318. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/directives/references.py +0 -29
  319. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/directives/tables.py +0 -513
  320. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/__init__.py +0 -40
  321. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/af.py +0 -107
  322. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/ar.py +0 -99
  323. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/ca.py +0 -126
  324. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/cs.py +0 -110
  325. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/da.py +0 -113
  326. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/de.py +0 -106
  327. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/en.py +0 -111
  328. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/eo.py +0 -118
  329. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/es.py +0 -122
  330. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/fa.py +0 -102
  331. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/fi.py +0 -98
  332. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/fr.py +0 -104
  333. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/gl.py +0 -111
  334. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/he.py +0 -109
  335. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/it.py +0 -98
  336. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/ja.py +0 -119
  337. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/ko.py +0 -111
  338. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/lt.py +0 -109
  339. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/lv.py +0 -108
  340. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/nl.py +0 -113
  341. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/pl.py +0 -100
  342. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/pt_br.py +0 -109
  343. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/ru.py +0 -90
  344. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/sk.py +0 -96
  345. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/sv.py +0 -96
  346. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/zh_cn.py +0 -104
  347. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/languages/zh_tw.py +0 -109
  348. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/roles.py +0 -439
  349. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/states.py +0 -3135
  350. py2docfx/venv/template/Lib/site-packages/docutils/parsers/rst/tableparser.py +0 -539
  351. py2docfx/venv/template/Lib/site-packages/docutils/readers/__init__.py +0 -113
  352. py2docfx/venv/template/Lib/site-packages/docutils/readers/doctree.py +0 -46
  353. py2docfx/venv/template/Lib/site-packages/docutils/readers/pep.py +0 -48
  354. py2docfx/venv/template/Lib/site-packages/docutils/readers/standalone.py +0 -65
  355. py2docfx/venv/template/Lib/site-packages/docutils/statemachine.py +0 -1525
  356. py2docfx/venv/template/Lib/site-packages/docutils/transforms/__init__.py +0 -174
  357. py2docfx/venv/template/Lib/site-packages/docutils/transforms/components.py +0 -54
  358. py2docfx/venv/template/Lib/site-packages/docutils/transforms/frontmatter.py +0 -545
  359. py2docfx/venv/template/Lib/site-packages/docutils/transforms/misc.py +0 -144
  360. py2docfx/venv/template/Lib/site-packages/docutils/transforms/parts.py +0 -176
  361. py2docfx/venv/template/Lib/site-packages/docutils/transforms/peps.py +0 -308
  362. py2docfx/venv/template/Lib/site-packages/docutils/transforms/references.py +0 -919
  363. py2docfx/venv/template/Lib/site-packages/docutils/transforms/universal.py +0 -338
  364. py2docfx/venv/template/Lib/site-packages/docutils/transforms/writer_aux.py +0 -99
  365. py2docfx/venv/template/Lib/site-packages/docutils/utils/__init__.py +0 -821
  366. py2docfx/venv/template/Lib/site-packages/docutils/utils/code_analyzer.py +0 -138
  367. py2docfx/venv/template/Lib/site-packages/docutils/utils/error_reporting.py +0 -222
  368. py2docfx/venv/template/Lib/site-packages/docutils/utils/math/__init__.py +0 -52
  369. py2docfx/venv/template/Lib/site-packages/docutils/utils/math/latex2mathml.py +0 -1430
  370. py2docfx/venv/template/Lib/site-packages/docutils/utils/math/math2html.py +0 -3171
  371. py2docfx/venv/template/Lib/site-packages/docutils/utils/math/tex2mathml_extern.py +0 -152
  372. py2docfx/venv/template/Lib/site-packages/docutils/utils/math/tex2unichar.py +0 -704
  373. py2docfx/venv/template/Lib/site-packages/docutils/utils/math/unichar2tex.py +0 -808
  374. py2docfx/venv/template/Lib/site-packages/docutils/utils/punctuation_chars.py +0 -122
  375. py2docfx/venv/template/Lib/site-packages/docutils/utils/roman.py +0 -86
  376. py2docfx/venv/template/Lib/site-packages/docutils/utils/smartquotes.py +0 -991
  377. py2docfx/venv/template/Lib/site-packages/docutils/utils/urischemes.py +0 -138
  378. py2docfx/venv/template/Lib/site-packages/docutils/writers/__init__.py +0 -151
  379. py2docfx/venv/template/Lib/site-packages/docutils/writers/_html_base.py +0 -1781
  380. py2docfx/venv/template/Lib/site-packages/docutils/writers/docutils_xml.py +0 -188
  381. py2docfx/venv/template/Lib/site-packages/docutils/writers/html4css1/__init__.py +0 -947
  382. py2docfx/venv/template/Lib/site-packages/docutils/writers/html5_polyglot/__init__.py +0 -454
  383. py2docfx/venv/template/Lib/site-packages/docutils/writers/latex2e/__init__.py +0 -3295
  384. py2docfx/venv/template/Lib/site-packages/docutils/writers/manpage.py +0 -1181
  385. py2docfx/venv/template/Lib/site-packages/docutils/writers/null.py +0 -21
  386. py2docfx/venv/template/Lib/site-packages/docutils/writers/odf_odt/__init__.py +0 -3468
  387. py2docfx/venv/template/Lib/site-packages/docutils/writers/odf_odt/pygmentsformatter.py +0 -109
  388. py2docfx/venv/template/Lib/site-packages/docutils/writers/pep_html/__init__.py +0 -103
  389. py2docfx/venv/template/Lib/site-packages/docutils/writers/pseudoxml.py +0 -40
  390. py2docfx/venv/template/Lib/site-packages/docutils/writers/s5_html/__init__.py +0 -352
  391. py2docfx/venv/template/Lib/site-packages/docutils/writers/xetex/__init__.py +0 -149
  392. py2docfx/venv/template/Lib/site-packages/idna/__init__.py +0 -44
  393. py2docfx/venv/template/Lib/site-packages/idna/codec.py +0 -118
  394. py2docfx/venv/template/Lib/site-packages/idna/compat.py +0 -13
  395. py2docfx/venv/template/Lib/site-packages/idna/core.py +0 -395
  396. py2docfx/venv/template/Lib/site-packages/idna/idnadata.py +0 -4245
  397. py2docfx/venv/template/Lib/site-packages/idna/intranges.py +0 -54
  398. py2docfx/venv/template/Lib/site-packages/idna/package_data.py +0 -2
  399. py2docfx/venv/template/Lib/site-packages/idna/uts46data.py +0 -8598
  400. py2docfx/venv/template/Lib/site-packages/imagesize/__init__.py +0 -5
  401. py2docfx/venv/template/Lib/site-packages/imagesize/imagesize.py +0 -376
  402. py2docfx/venv/template/Lib/site-packages/imagesize.py +0 -383
  403. py2docfx/venv/template/Lib/site-packages/jinja2/__init__.py +0 -45
  404. py2docfx/venv/template/Lib/site-packages/jinja2/_identifier.py +0 -6
  405. py2docfx/venv/template/Lib/site-packages/jinja2/async_utils.py +0 -75
  406. py2docfx/venv/template/Lib/site-packages/jinja2/bccache.py +0 -364
  407. py2docfx/venv/template/Lib/site-packages/jinja2/compiler.py +0 -1957
  408. py2docfx/venv/template/Lib/site-packages/jinja2/constants.py +0 -20
  409. py2docfx/venv/template/Lib/site-packages/jinja2/debug.py +0 -259
  410. py2docfx/venv/template/Lib/site-packages/jinja2/defaults.py +0 -48
  411. py2docfx/venv/template/Lib/site-packages/jinja2/environment.py +0 -1661
  412. py2docfx/venv/template/Lib/site-packages/jinja2/exceptions.py +0 -166
  413. py2docfx/venv/template/Lib/site-packages/jinja2/ext.py +0 -879
  414. py2docfx/venv/template/Lib/site-packages/jinja2/filters.py +0 -1824
  415. py2docfx/venv/template/Lib/site-packages/jinja2/idtracking.py +0 -318
  416. py2docfx/venv/template/Lib/site-packages/jinja2/lexer.py +0 -869
  417. py2docfx/venv/template/Lib/site-packages/jinja2/loaders.py +0 -652
  418. py2docfx/venv/template/Lib/site-packages/jinja2/meta.py +0 -111
  419. py2docfx/venv/template/Lib/site-packages/jinja2/nativetypes.py +0 -124
  420. py2docfx/venv/template/Lib/site-packages/jinja2/nodes.py +0 -1204
  421. py2docfx/venv/template/Lib/site-packages/jinja2/optimizer.py +0 -47
  422. py2docfx/venv/template/Lib/site-packages/jinja2/parser.py +0 -1040
  423. py2docfx/venv/template/Lib/site-packages/jinja2/runtime.py +0 -1104
  424. py2docfx/venv/template/Lib/site-packages/jinja2/sandbox.py +0 -428
  425. py2docfx/venv/template/Lib/site-packages/jinja2/tests.py +0 -255
  426. py2docfx/venv/template/Lib/site-packages/jinja2/utils.py +0 -854
  427. py2docfx/venv/template/Lib/site-packages/jinja2/visitor.py +0 -92
  428. py2docfx/venv/template/Lib/site-packages/markupsafe/__init__.py +0 -332
  429. py2docfx/venv/template/Lib/site-packages/markupsafe/_native.py +0 -63
  430. py2docfx/venv/template/Lib/site-packages/packaging/__init__.py +0 -15
  431. py2docfx/venv/template/Lib/site-packages/packaging/_elffile.py +0 -110
  432. py2docfx/venv/template/Lib/site-packages/packaging/_manylinux.py +0 -262
  433. py2docfx/venv/template/Lib/site-packages/packaging/_musllinux.py +0 -85
  434. py2docfx/venv/template/Lib/site-packages/packaging/_parser.py +0 -354
  435. py2docfx/venv/template/Lib/site-packages/packaging/_structures.py +0 -61
  436. py2docfx/venv/template/Lib/site-packages/packaging/_tokenizer.py +0 -194
  437. py2docfx/venv/template/Lib/site-packages/packaging/markers.py +0 -325
  438. py2docfx/venv/template/Lib/site-packages/packaging/metadata.py +0 -804
  439. py2docfx/venv/template/Lib/site-packages/packaging/requirements.py +0 -91
  440. py2docfx/venv/template/Lib/site-packages/packaging/specifiers.py +0 -1009
  441. py2docfx/venv/template/Lib/site-packages/packaging/tags.py +0 -568
  442. py2docfx/venv/template/Lib/site-packages/packaging/utils.py +0 -174
  443. py2docfx/venv/template/Lib/site-packages/packaging/version.py +0 -563
  444. py2docfx/venv/template/Lib/site-packages/pip/__init__.py +0 -13
  445. py2docfx/venv/template/Lib/site-packages/pip/__main__.py +0 -24
  446. py2docfx/venv/template/Lib/site-packages/pip/__pip-runner__.py +0 -50
  447. py2docfx/venv/template/Lib/site-packages/pip/_internal/__init__.py +0 -18
  448. py2docfx/venv/template/Lib/site-packages/pip/_internal/build_env.py +0 -311
  449. py2docfx/venv/template/Lib/site-packages/pip/_internal/cache.py +0 -290
  450. py2docfx/venv/template/Lib/site-packages/pip/_internal/cli/__init__.py +0 -4
  451. py2docfx/venv/template/Lib/site-packages/pip/_internal/cli/autocompletion.py +0 -172
  452. py2docfx/venv/template/Lib/site-packages/pip/_internal/cli/base_command.py +0 -236
  453. py2docfx/venv/template/Lib/site-packages/pip/_internal/cli/cmdoptions.py +0 -1074
  454. py2docfx/venv/template/Lib/site-packages/pip/_internal/cli/command_context.py +0 -27
  455. py2docfx/venv/template/Lib/site-packages/pip/_internal/cli/main.py +0 -79
  456. py2docfx/venv/template/Lib/site-packages/pip/_internal/cli/main_parser.py +0 -134
  457. py2docfx/venv/template/Lib/site-packages/pip/_internal/cli/parser.py +0 -294
  458. py2docfx/venv/template/Lib/site-packages/pip/_internal/cli/progress_bars.py +0 -68
  459. py2docfx/venv/template/Lib/site-packages/pip/_internal/cli/req_command.py +0 -505
  460. py2docfx/venv/template/Lib/site-packages/pip/_internal/cli/spinners.py +0 -159
  461. py2docfx/venv/template/Lib/site-packages/pip/_internal/cli/status_codes.py +0 -6
  462. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/__init__.py +0 -132
  463. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/cache.py +0 -225
  464. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/check.py +0 -54
  465. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/completion.py +0 -130
  466. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/configuration.py +0 -280
  467. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/debug.py +0 -201
  468. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/download.py +0 -147
  469. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/freeze.py +0 -108
  470. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/hash.py +0 -59
  471. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/help.py +0 -41
  472. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/index.py +0 -139
  473. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/inspect.py +0 -92
  474. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/install.py +0 -774
  475. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/list.py +0 -368
  476. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/search.py +0 -174
  477. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/show.py +0 -189
  478. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/uninstall.py +0 -113
  479. py2docfx/venv/template/Lib/site-packages/pip/_internal/commands/wheel.py +0 -183
  480. py2docfx/venv/template/Lib/site-packages/pip/_internal/configuration.py +0 -383
  481. py2docfx/venv/template/Lib/site-packages/pip/_internal/distributions/__init__.py +0 -21
  482. py2docfx/venv/template/Lib/site-packages/pip/_internal/distributions/base.py +0 -51
  483. py2docfx/venv/template/Lib/site-packages/pip/_internal/distributions/installed.py +0 -29
  484. py2docfx/venv/template/Lib/site-packages/pip/_internal/distributions/sdist.py +0 -156
  485. py2docfx/venv/template/Lib/site-packages/pip/_internal/distributions/wheel.py +0 -40
  486. py2docfx/venv/template/Lib/site-packages/pip/_internal/exceptions.py +0 -728
  487. py2docfx/venv/template/Lib/site-packages/pip/_internal/index/__init__.py +0 -2
  488. py2docfx/venv/template/Lib/site-packages/pip/_internal/index/collector.py +0 -507
  489. py2docfx/venv/template/Lib/site-packages/pip/_internal/index/package_finder.py +0 -1027
  490. py2docfx/venv/template/Lib/site-packages/pip/_internal/index/sources.py +0 -285
  491. py2docfx/venv/template/Lib/site-packages/pip/_internal/locations/__init__.py +0 -467
  492. py2docfx/venv/template/Lib/site-packages/pip/_internal/locations/_distutils.py +0 -172
  493. py2docfx/venv/template/Lib/site-packages/pip/_internal/locations/_sysconfig.py +0 -213
  494. py2docfx/venv/template/Lib/site-packages/pip/_internal/locations/base.py +0 -81
  495. py2docfx/venv/template/Lib/site-packages/pip/_internal/main.py +0 -12
  496. py2docfx/venv/template/Lib/site-packages/pip/_internal/metadata/__init__.py +0 -128
  497. py2docfx/venv/template/Lib/site-packages/pip/_internal/metadata/_json.py +0 -84
  498. py2docfx/venv/template/Lib/site-packages/pip/_internal/metadata/base.py +0 -702
  499. py2docfx/venv/template/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py +0 -6
  500. py2docfx/venv/template/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py +0 -55
  501. py2docfx/venv/template/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +0 -227
  502. py2docfx/venv/template/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +0 -189
  503. py2docfx/venv/template/Lib/site-packages/pip/_internal/metadata/pkg_resources.py +0 -278
  504. py2docfx/venv/template/Lib/site-packages/pip/_internal/models/__init__.py +0 -2
  505. py2docfx/venv/template/Lib/site-packages/pip/_internal/models/candidate.py +0 -30
  506. py2docfx/venv/template/Lib/site-packages/pip/_internal/models/direct_url.py +0 -235
  507. py2docfx/venv/template/Lib/site-packages/pip/_internal/models/format_control.py +0 -78
  508. py2docfx/venv/template/Lib/site-packages/pip/_internal/models/index.py +0 -28
  509. py2docfx/venv/template/Lib/site-packages/pip/_internal/models/installation_report.py +0 -56
  510. py2docfx/venv/template/Lib/site-packages/pip/_internal/models/link.py +0 -579
  511. py2docfx/venv/template/Lib/site-packages/pip/_internal/models/scheme.py +0 -31
  512. py2docfx/venv/template/Lib/site-packages/pip/_internal/models/search_scope.py +0 -132
  513. py2docfx/venv/template/Lib/site-packages/pip/_internal/models/selection_prefs.py +0 -51
  514. py2docfx/venv/template/Lib/site-packages/pip/_internal/models/target_python.py +0 -122
  515. py2docfx/venv/template/Lib/site-packages/pip/_internal/models/wheel.py +0 -92
  516. py2docfx/venv/template/Lib/site-packages/pip/_internal/network/__init__.py +0 -2
  517. py2docfx/venv/template/Lib/site-packages/pip/_internal/network/auth.py +0 -561
  518. py2docfx/venv/template/Lib/site-packages/pip/_internal/network/cache.py +0 -106
  519. py2docfx/venv/template/Lib/site-packages/pip/_internal/network/download.py +0 -186
  520. py2docfx/venv/template/Lib/site-packages/pip/_internal/network/lazy_wheel.py +0 -210
  521. py2docfx/venv/template/Lib/site-packages/pip/_internal/network/session.py +0 -520
  522. py2docfx/venv/template/Lib/site-packages/pip/_internal/network/utils.py +0 -96
  523. py2docfx/venv/template/Lib/site-packages/pip/_internal/network/xmlrpc.py +0 -62
  524. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/__init__.py +0 -0
  525. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  526. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/build/build_tracker.py +0 -139
  527. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/build/metadata.py +0 -39
  528. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py +0 -41
  529. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py +0 -74
  530. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/build/wheel.py +0 -37
  531. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py +0 -46
  532. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py +0 -102
  533. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/check.py +0 -187
  534. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/freeze.py +0 -255
  535. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/install/__init__.py +0 -2
  536. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py +0 -46
  537. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/install/wheel.py +0 -734
  538. py2docfx/venv/template/Lib/site-packages/pip/_internal/operations/prepare.py +0 -730
  539. py2docfx/venv/template/Lib/site-packages/pip/_internal/pyproject.py +0 -179
  540. py2docfx/venv/template/Lib/site-packages/pip/_internal/req/__init__.py +0 -92
  541. py2docfx/venv/template/Lib/site-packages/pip/_internal/req/constructors.py +0 -576
  542. py2docfx/venv/template/Lib/site-packages/pip/_internal/req/req_file.py +0 -554
  543. py2docfx/venv/template/Lib/site-packages/pip/_internal/req/req_install.py +0 -923
  544. py2docfx/venv/template/Lib/site-packages/pip/_internal/req/req_set.py +0 -119
  545. py2docfx/venv/template/Lib/site-packages/pip/_internal/req/req_uninstall.py +0 -649
  546. py2docfx/venv/template/Lib/site-packages/pip/_internal/resolution/__init__.py +0 -0
  547. py2docfx/venv/template/Lib/site-packages/pip/_internal/resolution/base.py +0 -20
  548. py2docfx/venv/template/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  549. py2docfx/venv/template/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +0 -598
  550. py2docfx/venv/template/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  551. py2docfx/venv/template/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +0 -141
  552. py2docfx/venv/template/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -597
  553. py2docfx/venv/template/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +0 -812
  554. py2docfx/venv/template/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +0 -155
  555. py2docfx/venv/template/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +0 -255
  556. py2docfx/venv/template/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +0 -80
  557. py2docfx/venv/template/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +0 -166
  558. py2docfx/venv/template/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +0 -317
  559. py2docfx/venv/template/Lib/site-packages/pip/_internal/self_outdated_check.py +0 -248
  560. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/__init__.py +0 -0
  561. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/_jaraco_text.py +0 -109
  562. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/_log.py +0 -38
  563. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/appdirs.py +0 -52
  564. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/compat.py +0 -63
  565. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +0 -165
  566. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/datetime.py +0 -11
  567. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/deprecation.py +0 -120
  568. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +0 -87
  569. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/egg_link.py +0 -80
  570. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/encoding.py +0 -36
  571. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/entrypoints.py +0 -84
  572. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/filesystem.py +0 -153
  573. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/filetypes.py +0 -27
  574. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/glibc.py +0 -88
  575. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/hashes.py +0 -151
  576. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/logging.py +0 -348
  577. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/misc.py +0 -783
  578. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/models.py +0 -39
  579. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/packaging.py +0 -57
  580. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/setuptools_build.py +0 -146
  581. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/subprocess.py +0 -260
  582. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/temp_dir.py +0 -296
  583. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/unpacking.py +0 -257
  584. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/urls.py +0 -62
  585. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/virtualenv.py +0 -104
  586. py2docfx/venv/template/Lib/site-packages/pip/_internal/utils/wheel.py +0 -134
  587. py2docfx/venv/template/Lib/site-packages/pip/_internal/vcs/__init__.py +0 -15
  588. py2docfx/venv/template/Lib/site-packages/pip/_internal/vcs/bazaar.py +0 -112
  589. py2docfx/venv/template/Lib/site-packages/pip/_internal/vcs/git.py +0 -526
  590. py2docfx/venv/template/Lib/site-packages/pip/_internal/vcs/mercurial.py +0 -163
  591. py2docfx/venv/template/Lib/site-packages/pip/_internal/vcs/subversion.py +0 -324
  592. py2docfx/venv/template/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +0 -705
  593. py2docfx/venv/template/Lib/site-packages/pip/_internal/wheel_builder.py +0 -354
  594. py2docfx/venv/template/Lib/site-packages/pip/_vendor/__init__.py +0 -121
  595. py2docfx/venv/template/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +0 -28
  596. py2docfx/venv/template/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +0 -70
  597. py2docfx/venv/template/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +0 -161
  598. py2docfx/venv/template/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +0 -74
  599. py2docfx/venv/template/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +0 -8
  600. py2docfx/venv/template/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +0 -181
  601. py2docfx/venv/template/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +0 -48
  602. py2docfx/venv/template/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +0 -494
  603. py2docfx/venv/template/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +0 -119
  604. py2docfx/venv/template/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +0 -154
  605. py2docfx/venv/template/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +0 -206
  606. py2docfx/venv/template/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +0 -43
  607. py2docfx/venv/template/Lib/site-packages/pip/_vendor/certifi/__init__.py +0 -4
  608. py2docfx/venv/template/Lib/site-packages/pip/_vendor/certifi/__main__.py +0 -12
  609. py2docfx/venv/template/Lib/site-packages/pip/_vendor/certifi/core.py +0 -108
  610. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/__init__.py +0 -115
  611. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/big5freq.py +0 -386
  612. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/big5prober.py +0 -47
  613. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/chardistribution.py +0 -261
  614. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py +0 -106
  615. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/charsetprober.py +0 -147
  616. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py +0 -0
  617. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py +0 -112
  618. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py +0 -90
  619. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/codingstatemachinedict.py +0 -19
  620. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/cp949prober.py +0 -49
  621. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/enums.py +0 -85
  622. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/escprober.py +0 -102
  623. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/escsm.py +0 -261
  624. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py +0 -102
  625. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py +0 -196
  626. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/euckrprober.py +0 -47
  627. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py +0 -388
  628. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/euctwprober.py +0 -47
  629. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py +0 -284
  630. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py +0 -47
  631. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py +0 -316
  632. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/jisfreq.py +0 -325
  633. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/johabfreq.py +0 -2382
  634. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/johabprober.py +0 -47
  635. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/jpcntx.py +0 -238
  636. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py +0 -4649
  637. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py +0 -4397
  638. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py +0 -4380
  639. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py +0 -4649
  640. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py +0 -5725
  641. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py +0 -4380
  642. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py +0 -4380
  643. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/latin1prober.py +0 -147
  644. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/macromanprober.py +0 -162
  645. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py +0 -95
  646. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py +0 -57
  647. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/mbcssm.py +0 -661
  648. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/metadata/__init__.py +0 -0
  649. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/metadata/languages.py +0 -352
  650. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/resultdict.py +0 -16
  651. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py +0 -162
  652. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py +0 -88
  653. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/sjisprober.py +0 -105
  654. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/universaldetector.py +0 -362
  655. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/utf1632prober.py +0 -225
  656. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/utf8prober.py +0 -82
  657. py2docfx/venv/template/Lib/site-packages/pip/_vendor/chardet/version.py +0 -9
  658. py2docfx/venv/template/Lib/site-packages/pip/_vendor/colorama/__init__.py +0 -7
  659. py2docfx/venv/template/Lib/site-packages/pip/_vendor/colorama/ansi.py +0 -102
  660. py2docfx/venv/template/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py +0 -277
  661. py2docfx/venv/template/Lib/site-packages/pip/_vendor/colorama/initialise.py +0 -121
  662. py2docfx/venv/template/Lib/site-packages/pip/_vendor/colorama/tests/__init__.py +0 -1
  663. py2docfx/venv/template/Lib/site-packages/pip/_vendor/colorama/tests/ansi_test.py +0 -76
  664. py2docfx/venv/template/Lib/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py +0 -294
  665. py2docfx/venv/template/Lib/site-packages/pip/_vendor/colorama/tests/initialise_test.py +0 -189
  666. py2docfx/venv/template/Lib/site-packages/pip/_vendor/colorama/tests/isatty_test.py +0 -57
  667. py2docfx/venv/template/Lib/site-packages/pip/_vendor/colorama/tests/utils.py +0 -49
  668. py2docfx/venv/template/Lib/site-packages/pip/_vendor/colorama/tests/winterm_test.py +0 -131
  669. py2docfx/venv/template/Lib/site-packages/pip/_vendor/colorama/win32.py +0 -180
  670. py2docfx/venv/template/Lib/site-packages/pip/_vendor/colorama/winterm.py +0 -195
  671. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distlib/__init__.py +0 -33
  672. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distlib/compat.py +0 -1138
  673. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distlib/database.py +0 -1359
  674. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distlib/index.py +0 -508
  675. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distlib/locators.py +0 -1303
  676. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distlib/manifest.py +0 -384
  677. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distlib/markers.py +0 -167
  678. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distlib/metadata.py +0 -1068
  679. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distlib/resources.py +0 -358
  680. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distlib/scripts.py +0 -452
  681. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distlib/util.py +0 -2025
  682. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distlib/version.py +0 -751
  683. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distlib/wheel.py +0 -1099
  684. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distro/__init__.py +0 -54
  685. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distro/__main__.py +0 -4
  686. py2docfx/venv/template/Lib/site-packages/pip/_vendor/distro/distro.py +0 -1399
  687. py2docfx/venv/template/Lib/site-packages/pip/_vendor/idna/__init__.py +0 -44
  688. py2docfx/venv/template/Lib/site-packages/pip/_vendor/idna/codec.py +0 -112
  689. py2docfx/venv/template/Lib/site-packages/pip/_vendor/idna/compat.py +0 -13
  690. py2docfx/venv/template/Lib/site-packages/pip/_vendor/idna/core.py +0 -400
  691. py2docfx/venv/template/Lib/site-packages/pip/_vendor/idna/idnadata.py +0 -2151
  692. py2docfx/venv/template/Lib/site-packages/pip/_vendor/idna/intranges.py +0 -54
  693. py2docfx/venv/template/Lib/site-packages/pip/_vendor/idna/package_data.py +0 -2
  694. py2docfx/venv/template/Lib/site-packages/pip/_vendor/idna/uts46data.py +0 -8600
  695. py2docfx/venv/template/Lib/site-packages/pip/_vendor/msgpack/__init__.py +0 -57
  696. py2docfx/venv/template/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +0 -48
  697. py2docfx/venv/template/Lib/site-packages/pip/_vendor/msgpack/ext.py +0 -193
  698. py2docfx/venv/template/Lib/site-packages/pip/_vendor/msgpack/fallback.py +0 -1010
  699. py2docfx/venv/template/Lib/site-packages/pip/_vendor/packaging/__about__.py +0 -26
  700. py2docfx/venv/template/Lib/site-packages/pip/_vendor/packaging/__init__.py +0 -25
  701. py2docfx/venv/template/Lib/site-packages/pip/_vendor/packaging/_manylinux.py +0 -301
  702. py2docfx/venv/template/Lib/site-packages/pip/_vendor/packaging/_musllinux.py +0 -136
  703. py2docfx/venv/template/Lib/site-packages/pip/_vendor/packaging/_structures.py +0 -61
  704. py2docfx/venv/template/Lib/site-packages/pip/_vendor/packaging/markers.py +0 -304
  705. py2docfx/venv/template/Lib/site-packages/pip/_vendor/packaging/requirements.py +0 -146
  706. py2docfx/venv/template/Lib/site-packages/pip/_vendor/packaging/specifiers.py +0 -802
  707. py2docfx/venv/template/Lib/site-packages/pip/_vendor/packaging/tags.py +0 -487
  708. py2docfx/venv/template/Lib/site-packages/pip/_vendor/packaging/utils.py +0 -136
  709. py2docfx/venv/template/Lib/site-packages/pip/_vendor/packaging/version.py +0 -504
  710. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +0 -3361
  711. py2docfx/venv/template/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +0 -566
  712. py2docfx/venv/template/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +0 -53
  713. py2docfx/venv/template/Lib/site-packages/pip/_vendor/platformdirs/android.py +0 -210
  714. py2docfx/venv/template/Lib/site-packages/pip/_vendor/platformdirs/api.py +0 -223
  715. py2docfx/venv/template/Lib/site-packages/pip/_vendor/platformdirs/macos.py +0 -91
  716. py2docfx/venv/template/Lib/site-packages/pip/_vendor/platformdirs/unix.py +0 -223
  717. py2docfx/venv/template/Lib/site-packages/pip/_vendor/platformdirs/version.py +0 -4
  718. py2docfx/venv/template/Lib/site-packages/pip/_vendor/platformdirs/windows.py +0 -255
  719. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/__init__.py +0 -82
  720. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/__main__.py +0 -17
  721. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/cmdline.py +0 -668
  722. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/console.py +0 -70
  723. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/filter.py +0 -71
  724. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +0 -940
  725. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatter.py +0 -124
  726. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +0 -158
  727. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py +0 -23
  728. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py +0 -108
  729. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py +0 -170
  730. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/html.py +0 -989
  731. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/img.py +0 -645
  732. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/irc.py +0 -154
  733. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/latex.py +0 -521
  734. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/other.py +0 -161
  735. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py +0 -83
  736. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/rtf.py +0 -146
  737. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/svg.py +0 -188
  738. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/terminal.py +0 -127
  739. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/formatters/terminal256.py +0 -338
  740. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/lexer.py +0 -943
  741. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +0 -362
  742. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +0 -559
  743. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +0 -1198
  744. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/modeline.py +0 -43
  745. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/plugin.py +0 -88
  746. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/regexopt.py +0 -91
  747. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/scanner.py +0 -104
  748. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +0 -217
  749. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/style.py +0 -197
  750. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +0 -103
  751. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/token.py +0 -213
  752. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/unistring.py +0 -153
  753. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pygments/util.py +0 -330
  754. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyparsing/__init__.py +0 -322
  755. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyparsing/actions.py +0 -217
  756. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyparsing/common.py +0 -432
  757. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyparsing/core.py +0 -6115
  758. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyparsing/diagram/__init__.py +0 -656
  759. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyparsing/exceptions.py +0 -299
  760. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyparsing/helpers.py +0 -1100
  761. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyparsing/results.py +0 -796
  762. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyparsing/testing.py +0 -331
  763. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyparsing/unicode.py +0 -361
  764. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyparsing/util.py +0 -284
  765. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py +0 -23
  766. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyproject_hooks/_compat.py +0 -8
  767. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py +0 -330
  768. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +0 -18
  769. py2docfx/venv/template/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +0 -353
  770. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/__init__.py +0 -182
  771. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/__version__.py +0 -14
  772. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +0 -50
  773. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/adapters.py +0 -538
  774. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/api.py +0 -157
  775. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/auth.py +0 -315
  776. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/certs.py +0 -24
  777. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/compat.py +0 -67
  778. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/cookies.py +0 -561
  779. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/exceptions.py +0 -141
  780. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/help.py +0 -131
  781. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/hooks.py +0 -33
  782. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/models.py +0 -1034
  783. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/packages.py +0 -16
  784. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/sessions.py +0 -833
  785. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/status_codes.py +0 -128
  786. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/structures.py +0 -99
  787. py2docfx/venv/template/Lib/site-packages/pip/_vendor/requests/utils.py +0 -1094
  788. py2docfx/venv/template/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +0 -26
  789. py2docfx/venv/template/Lib/site-packages/pip/_vendor/resolvelib/compat/__init__.py +0 -0
  790. py2docfx/venv/template/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py +0 -6
  791. py2docfx/venv/template/Lib/site-packages/pip/_vendor/resolvelib/providers.py +0 -133
  792. py2docfx/venv/template/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +0 -43
  793. py2docfx/venv/template/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py +0 -547
  794. py2docfx/venv/template/Lib/site-packages/pip/_vendor/resolvelib/structs.py +0 -170
  795. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/__init__.py +0 -177
  796. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/__main__.py +0 -274
  797. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_cell_widths.py +0 -451
  798. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py +0 -3610
  799. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py +0 -32
  800. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_export_format.py +0 -76
  801. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_extension.py +0 -10
  802. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_fileno.py +0 -24
  803. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_inspect.py +0 -270
  804. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_log_render.py +0 -94
  805. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_loop.py +0 -43
  806. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_null_file.py +0 -69
  807. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_palettes.py +0 -309
  808. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_pick.py +0 -17
  809. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_ratio.py +0 -160
  810. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_spinners.py +0 -482
  811. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_stack.py +0 -16
  812. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_timer.py +0 -19
  813. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_win32_console.py +0 -662
  814. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_windows.py +0 -72
  815. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py +0 -56
  816. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/_wrap.py +0 -56
  817. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/abc.py +0 -33
  818. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/align.py +0 -311
  819. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/ansi.py +0 -240
  820. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/bar.py +0 -94
  821. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/box.py +0 -517
  822. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/cells.py +0 -154
  823. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/color.py +0 -622
  824. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/color_triplet.py +0 -38
  825. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/columns.py +0 -187
  826. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/console.py +0 -2633
  827. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/constrain.py +0 -37
  828. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/containers.py +0 -167
  829. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/control.py +0 -225
  830. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/default_styles.py +0 -190
  831. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/diagnose.py +0 -37
  832. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/emoji.py +0 -96
  833. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/errors.py +0 -34
  834. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/file_proxy.py +0 -57
  835. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/filesize.py +0 -89
  836. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/highlighter.py +0 -232
  837. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/json.py +0 -140
  838. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/jupyter.py +0 -101
  839. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/layout.py +0 -443
  840. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/live.py +0 -375
  841. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/live_render.py +0 -113
  842. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/logging.py +0 -289
  843. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/markup.py +0 -246
  844. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/measure.py +0 -151
  845. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/padding.py +0 -141
  846. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/pager.py +0 -34
  847. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/palette.py +0 -100
  848. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/panel.py +0 -308
  849. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/pretty.py +0 -994
  850. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/progress.py +0 -1702
  851. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/progress_bar.py +0 -224
  852. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/prompt.py +0 -376
  853. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/protocol.py +0 -42
  854. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/region.py +0 -10
  855. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/repr.py +0 -149
  856. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/rule.py +0 -130
  857. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/scope.py +0 -86
  858. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/screen.py +0 -54
  859. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/segment.py +0 -739
  860. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/spinner.py +0 -137
  861. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/status.py +0 -132
  862. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/style.py +0 -796
  863. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/styled.py +0 -42
  864. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/syntax.py +0 -948
  865. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/table.py +0 -1002
  866. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/terminal_theme.py +0 -153
  867. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/text.py +0 -1307
  868. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/theme.py +0 -115
  869. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/themes.py +0 -5
  870. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/traceback.py +0 -756
  871. py2docfx/venv/template/Lib/site-packages/pip/_vendor/rich/tree.py +0 -251
  872. py2docfx/venv/template/Lib/site-packages/pip/_vendor/six.py +0 -998
  873. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tenacity/__init__.py +0 -608
  874. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tenacity/_asyncio.py +0 -94
  875. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tenacity/_utils.py +0 -76
  876. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tenacity/after.py +0 -51
  877. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tenacity/before.py +0 -46
  878. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tenacity/before_sleep.py +0 -71
  879. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tenacity/nap.py +0 -43
  880. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tenacity/retry.py +0 -272
  881. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tenacity/stop.py +0 -103
  882. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tenacity/tornadoweb.py +0 -59
  883. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tenacity/wait.py +0 -228
  884. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tomli/__init__.py +0 -11
  885. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tomli/_parser.py +0 -691
  886. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tomli/_re.py +0 -107
  887. py2docfx/venv/template/Lib/site-packages/pip/_vendor/tomli/_types.py +0 -10
  888. py2docfx/venv/template/Lib/site-packages/pip/_vendor/truststore/__init__.py +0 -13
  889. py2docfx/venv/template/Lib/site-packages/pip/_vendor/truststore/_api.py +0 -302
  890. py2docfx/venv/template/Lib/site-packages/pip/_vendor/truststore/_macos.py +0 -501
  891. py2docfx/venv/template/Lib/site-packages/pip/_vendor/truststore/_openssl.py +0 -66
  892. py2docfx/venv/template/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py +0 -31
  893. py2docfx/venv/template/Lib/site-packages/pip/_vendor/truststore/_windows.py +0 -554
  894. py2docfx/venv/template/Lib/site-packages/pip/_vendor/typing_extensions.py +0 -3072
  895. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/__init__.py +0 -102
  896. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/_collections.py +0 -337
  897. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/_version.py +0 -2
  898. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/connection.py +0 -572
  899. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +0 -1132
  900. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  901. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +0 -36
  902. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  903. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +0 -519
  904. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +0 -397
  905. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +0 -314
  906. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +0 -130
  907. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +0 -518
  908. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +0 -921
  909. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +0 -216
  910. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +0 -323
  911. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/fields.py +0 -274
  912. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/filepost.py +0 -98
  913. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
  914. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  915. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +0 -51
  916. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +0 -155
  917. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +0 -1076
  918. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +0 -537
  919. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/request.py +0 -191
  920. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/response.py +0 -879
  921. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +0 -49
  922. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +0 -149
  923. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +0 -57
  924. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +0 -22
  925. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/util/request.py +0 -137
  926. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/util/response.py +0 -107
  927. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +0 -620
  928. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +0 -495
  929. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +0 -159
  930. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +0 -221
  931. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +0 -271
  932. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/util/url.py +0 -435
  933. py2docfx/venv/template/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +0 -152
  934. py2docfx/venv/template/Lib/site-packages/pip/_vendor/webencodings/__init__.py +0 -342
  935. py2docfx/venv/template/Lib/site-packages/pip/_vendor/webencodings/labels.py +0 -231
  936. py2docfx/venv/template/Lib/site-packages/pip/_vendor/webencodings/mklabels.py +0 -59
  937. py2docfx/venv/template/Lib/site-packages/pip/_vendor/webencodings/tests.py +0 -153
  938. py2docfx/venv/template/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py +0 -325
  939. py2docfx/venv/template/Lib/site-packages/pkg_resources/__init__.py +0 -3715
  940. py2docfx/venv/template/Lib/site-packages/pkg_resources/tests/__init__.py +0 -0
  941. py2docfx/venv/template/Lib/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py +0 -7
  942. py2docfx/venv/template/Lib/site-packages/pkg_resources/tests/test_find_distributions.py +0 -55
  943. py2docfx/venv/template/Lib/site-packages/pkg_resources/tests/test_integration_zope_interface.py +0 -54
  944. py2docfx/venv/template/Lib/site-packages/pkg_resources/tests/test_markers.py +0 -8
  945. py2docfx/venv/template/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +0 -432
  946. py2docfx/venv/template/Lib/site-packages/pkg_resources/tests/test_resources.py +0 -869
  947. py2docfx/venv/template/Lib/site-packages/pkg_resources/tests/test_working_set.py +0 -501
  948. py2docfx/venv/template/Lib/site-packages/pygments/__init__.py +0 -82
  949. py2docfx/venv/template/Lib/site-packages/pygments/__main__.py +0 -17
  950. py2docfx/venv/template/Lib/site-packages/pygments/cmdline.py +0 -668
  951. py2docfx/venv/template/Lib/site-packages/pygments/console.py +0 -70
  952. py2docfx/venv/template/Lib/site-packages/pygments/filter.py +0 -70
  953. py2docfx/venv/template/Lib/site-packages/pygments/filters/__init__.py +0 -940
  954. py2docfx/venv/template/Lib/site-packages/pygments/formatter.py +0 -129
  955. py2docfx/venv/template/Lib/site-packages/pygments/formatters/__init__.py +0 -157
  956. py2docfx/venv/template/Lib/site-packages/pygments/formatters/_mapping.py +0 -23
  957. py2docfx/venv/template/Lib/site-packages/pygments/formatters/bbcode.py +0 -108
  958. py2docfx/venv/template/Lib/site-packages/pygments/formatters/groff.py +0 -170
  959. py2docfx/venv/template/Lib/site-packages/pygments/formatters/html.py +0 -987
  960. py2docfx/venv/template/Lib/site-packages/pygments/formatters/img.py +0 -685
  961. py2docfx/venv/template/Lib/site-packages/pygments/formatters/irc.py +0 -154
  962. py2docfx/venv/template/Lib/site-packages/pygments/formatters/latex.py +0 -518
  963. py2docfx/venv/template/Lib/site-packages/pygments/formatters/other.py +0 -160
  964. py2docfx/venv/template/Lib/site-packages/pygments/formatters/pangomarkup.py +0 -83
  965. py2docfx/venv/template/Lib/site-packages/pygments/formatters/rtf.py +0 -349
  966. py2docfx/venv/template/Lib/site-packages/pygments/formatters/svg.py +0 -185
  967. py2docfx/venv/template/Lib/site-packages/pygments/formatters/terminal.py +0 -127
  968. py2docfx/venv/template/Lib/site-packages/pygments/formatters/terminal256.py +0 -338
  969. py2docfx/venv/template/Lib/site-packages/pygments/lexer.py +0 -961
  970. py2docfx/venv/template/Lib/site-packages/pygments/lexers/__init__.py +0 -362
  971. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_ada_builtins.py +0 -103
  972. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_asy_builtins.py +0 -1644
  973. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_cl_builtins.py +0 -231
  974. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_cocoa_builtins.py +0 -75
  975. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_csound_builtins.py +0 -1780
  976. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_css_builtins.py +0 -558
  977. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_julia_builtins.py +0 -411
  978. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_lasso_builtins.py +0 -5326
  979. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_lilypond_builtins.py +0 -4932
  980. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_lua_builtins.py +0 -285
  981. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_luau_builtins.py +0 -62
  982. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_mapping.py +0 -589
  983. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_mql_builtins.py +0 -1171
  984. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_mysql_builtins.py +0 -1335
  985. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_openedge_builtins.py +0 -2600
  986. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_php_builtins.py +0 -3325
  987. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_postgres_builtins.py +0 -739
  988. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_qlik_builtins.py +0 -666
  989. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_scheme_builtins.py +0 -1609
  990. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_scilab_builtins.py +0 -3093
  991. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_sourcemod_builtins.py +0 -1151
  992. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_stan_builtins.py +0 -648
  993. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_stata_builtins.py +0 -457
  994. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_tsql_builtins.py +0 -1003
  995. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_usd_builtins.py +0 -112
  996. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_vbscript_builtins.py +0 -279
  997. py2docfx/venv/template/Lib/site-packages/pygments/lexers/_vim_builtins.py +0 -1938
  998. py2docfx/venv/template/Lib/site-packages/pygments/lexers/actionscript.py +0 -243
  999. py2docfx/venv/template/Lib/site-packages/pygments/lexers/ada.py +0 -144
  1000. py2docfx/venv/template/Lib/site-packages/pygments/lexers/agile.py +0 -25
  1001. py2docfx/venv/template/Lib/site-packages/pygments/lexers/algebra.py +0 -298
  1002. py2docfx/venv/template/Lib/site-packages/pygments/lexers/ambient.py +0 -75
  1003. py2docfx/venv/template/Lib/site-packages/pygments/lexers/amdgpu.py +0 -54
  1004. py2docfx/venv/template/Lib/site-packages/pygments/lexers/ampl.py +0 -87
  1005. py2docfx/venv/template/Lib/site-packages/pygments/lexers/apdlexer.py +0 -593
  1006. py2docfx/venv/template/Lib/site-packages/pygments/lexers/apl.py +0 -103
  1007. py2docfx/venv/template/Lib/site-packages/pygments/lexers/archetype.py +0 -315
  1008. py2docfx/venv/template/Lib/site-packages/pygments/lexers/arrow.py +0 -116
  1009. py2docfx/venv/template/Lib/site-packages/pygments/lexers/arturo.py +0 -249
  1010. py2docfx/venv/template/Lib/site-packages/pygments/lexers/asc.py +0 -55
  1011. py2docfx/venv/template/Lib/site-packages/pygments/lexers/asm.py +0 -1050
  1012. py2docfx/venv/template/Lib/site-packages/pygments/lexers/asn1.py +0 -178
  1013. py2docfx/venv/template/Lib/site-packages/pygments/lexers/automation.py +0 -379
  1014. py2docfx/venv/template/Lib/site-packages/pygments/lexers/bare.py +0 -101
  1015. py2docfx/venv/template/Lib/site-packages/pygments/lexers/basic.py +0 -656
  1016. py2docfx/venv/template/Lib/site-packages/pygments/lexers/bdd.py +0 -57
  1017. py2docfx/venv/template/Lib/site-packages/pygments/lexers/berry.py +0 -99
  1018. py2docfx/venv/template/Lib/site-packages/pygments/lexers/bibtex.py +0 -159
  1019. py2docfx/venv/template/Lib/site-packages/pygments/lexers/blueprint.py +0 -173
  1020. py2docfx/venv/template/Lib/site-packages/pygments/lexers/boa.py +0 -97
  1021. py2docfx/venv/template/Lib/site-packages/pygments/lexers/bqn.py +0 -109
  1022. py2docfx/venv/template/Lib/site-packages/pygments/lexers/business.py +0 -625
  1023. py2docfx/venv/template/Lib/site-packages/pygments/lexers/c_cpp.py +0 -414
  1024. py2docfx/venv/template/Lib/site-packages/pygments/lexers/c_like.py +0 -738
  1025. py2docfx/venv/template/Lib/site-packages/pygments/lexers/capnproto.py +0 -74
  1026. py2docfx/venv/template/Lib/site-packages/pygments/lexers/carbon.py +0 -95
  1027. py2docfx/venv/template/Lib/site-packages/pygments/lexers/cddl.py +0 -172
  1028. py2docfx/venv/template/Lib/site-packages/pygments/lexers/chapel.py +0 -139
  1029. py2docfx/venv/template/Lib/site-packages/pygments/lexers/clean.py +0 -180
  1030. py2docfx/venv/template/Lib/site-packages/pygments/lexers/comal.py +0 -81
  1031. py2docfx/venv/template/Lib/site-packages/pygments/lexers/compiled.py +0 -35
  1032. py2docfx/venv/template/Lib/site-packages/pygments/lexers/configs.py +0 -1424
  1033. py2docfx/venv/template/Lib/site-packages/pygments/lexers/console.py +0 -114
  1034. py2docfx/venv/template/Lib/site-packages/pygments/lexers/cplint.py +0 -43
  1035. py2docfx/venv/template/Lib/site-packages/pygments/lexers/crystal.py +0 -364
  1036. py2docfx/venv/template/Lib/site-packages/pygments/lexers/csound.py +0 -466
  1037. py2docfx/venv/template/Lib/site-packages/pygments/lexers/css.py +0 -602
  1038. py2docfx/venv/template/Lib/site-packages/pygments/lexers/d.py +0 -259
  1039. py2docfx/venv/template/Lib/site-packages/pygments/lexers/dalvik.py +0 -126
  1040. py2docfx/venv/template/Lib/site-packages/pygments/lexers/data.py +0 -763
  1041. py2docfx/venv/template/Lib/site-packages/pygments/lexers/dax.py +0 -135
  1042. py2docfx/venv/template/Lib/site-packages/pygments/lexers/devicetree.py +0 -108
  1043. py2docfx/venv/template/Lib/site-packages/pygments/lexers/diff.py +0 -169
  1044. py2docfx/venv/template/Lib/site-packages/pygments/lexers/dns.py +0 -109
  1045. py2docfx/venv/template/Lib/site-packages/pygments/lexers/dotnet.py +0 -846
  1046. py2docfx/venv/template/Lib/site-packages/pygments/lexers/dsls.py +0 -970
  1047. py2docfx/venv/template/Lib/site-packages/pygments/lexers/dylan.py +0 -279
  1048. py2docfx/venv/template/Lib/site-packages/pygments/lexers/ecl.py +0 -144
  1049. py2docfx/venv/template/Lib/site-packages/pygments/lexers/eiffel.py +0 -68
  1050. py2docfx/venv/template/Lib/site-packages/pygments/lexers/elm.py +0 -123
  1051. py2docfx/venv/template/Lib/site-packages/pygments/lexers/elpi.py +0 -172
  1052. py2docfx/venv/template/Lib/site-packages/pygments/lexers/email.py +0 -132
  1053. py2docfx/venv/template/Lib/site-packages/pygments/lexers/erlang.py +0 -526
  1054. py2docfx/venv/template/Lib/site-packages/pygments/lexers/esoteric.py +0 -300
  1055. py2docfx/venv/template/Lib/site-packages/pygments/lexers/ezhil.py +0 -76
  1056. py2docfx/venv/template/Lib/site-packages/pygments/lexers/factor.py +0 -363
  1057. py2docfx/venv/template/Lib/site-packages/pygments/lexers/fantom.py +0 -251
  1058. py2docfx/venv/template/Lib/site-packages/pygments/lexers/felix.py +0 -275
  1059. py2docfx/venv/template/Lib/site-packages/pygments/lexers/fift.py +0 -68
  1060. py2docfx/venv/template/Lib/site-packages/pygments/lexers/floscript.py +0 -81
  1061. py2docfx/venv/template/Lib/site-packages/pygments/lexers/forth.py +0 -178
  1062. py2docfx/venv/template/Lib/site-packages/pygments/lexers/fortran.py +0 -212
  1063. py2docfx/venv/template/Lib/site-packages/pygments/lexers/foxpro.py +0 -427
  1064. py2docfx/venv/template/Lib/site-packages/pygments/lexers/freefem.py +0 -893
  1065. py2docfx/venv/template/Lib/site-packages/pygments/lexers/func.py +0 -110
  1066. py2docfx/venv/template/Lib/site-packages/pygments/lexers/functional.py +0 -21
  1067. py2docfx/venv/template/Lib/site-packages/pygments/lexers/futhark.py +0 -105
  1068. py2docfx/venv/template/Lib/site-packages/pygments/lexers/gcodelexer.py +0 -35
  1069. py2docfx/venv/template/Lib/site-packages/pygments/lexers/gdscript.py +0 -189
  1070. py2docfx/venv/template/Lib/site-packages/pygments/lexers/go.py +0 -97
  1071. py2docfx/venv/template/Lib/site-packages/pygments/lexers/grammar_notation.py +0 -262
  1072. py2docfx/venv/template/Lib/site-packages/pygments/lexers/graph.py +0 -108
  1073. py2docfx/venv/template/Lib/site-packages/pygments/lexers/graphics.py +0 -794
  1074. py2docfx/venv/template/Lib/site-packages/pygments/lexers/graphql.py +0 -176
  1075. py2docfx/venv/template/Lib/site-packages/pygments/lexers/graphviz.py +0 -58
  1076. py2docfx/venv/template/Lib/site-packages/pygments/lexers/gsql.py +0 -103
  1077. py2docfx/venv/template/Lib/site-packages/pygments/lexers/haskell.py +0 -866
  1078. py2docfx/venv/template/Lib/site-packages/pygments/lexers/haxe.py +0 -935
  1079. py2docfx/venv/template/Lib/site-packages/pygments/lexers/hdl.py +0 -466
  1080. py2docfx/venv/template/Lib/site-packages/pygments/lexers/hexdump.py +0 -102
  1081. py2docfx/venv/template/Lib/site-packages/pygments/lexers/html.py +0 -626
  1082. py2docfx/venv/template/Lib/site-packages/pygments/lexers/idl.py +0 -284
  1083. py2docfx/venv/template/Lib/site-packages/pygments/lexers/igor.py +0 -435
  1084. py2docfx/venv/template/Lib/site-packages/pygments/lexers/inferno.py +0 -95
  1085. py2docfx/venv/template/Lib/site-packages/pygments/lexers/installers.py +0 -325
  1086. py2docfx/venv/template/Lib/site-packages/pygments/lexers/int_fiction.py +0 -1370
  1087. py2docfx/venv/template/Lib/site-packages/pygments/lexers/iolang.py +0 -61
  1088. py2docfx/venv/template/Lib/site-packages/pygments/lexers/j.py +0 -151
  1089. py2docfx/venv/template/Lib/site-packages/pygments/lexers/javascript.py +0 -1587
  1090. py2docfx/venv/template/Lib/site-packages/pygments/lexers/jmespath.py +0 -69
  1091. py2docfx/venv/template/Lib/site-packages/pygments/lexers/jslt.py +0 -94
  1092. py2docfx/venv/template/Lib/site-packages/pygments/lexers/jsonnet.py +0 -169
  1093. py2docfx/venv/template/Lib/site-packages/pygments/lexers/jsx.py +0 -75
  1094. py2docfx/venv/template/Lib/site-packages/pygments/lexers/julia.py +0 -293
  1095. py2docfx/venv/template/Lib/site-packages/pygments/lexers/jvm.py +0 -1802
  1096. py2docfx/venv/template/Lib/site-packages/pygments/lexers/kuin.py +0 -332
  1097. py2docfx/venv/template/Lib/site-packages/pygments/lexers/kusto.py +0 -93
  1098. py2docfx/venv/template/Lib/site-packages/pygments/lexers/ldap.py +0 -155
  1099. py2docfx/venv/template/Lib/site-packages/pygments/lexers/lean.py +0 -241
  1100. py2docfx/venv/template/Lib/site-packages/pygments/lexers/lilypond.py +0 -225
  1101. py2docfx/venv/template/Lib/site-packages/pygments/lexers/lisp.py +0 -3146
  1102. py2docfx/venv/template/Lib/site-packages/pygments/lexers/macaulay2.py +0 -1788
  1103. py2docfx/venv/template/Lib/site-packages/pygments/lexers/make.py +0 -212
  1104. py2docfx/venv/template/Lib/site-packages/pygments/lexers/markup.py +0 -1654
  1105. py2docfx/venv/template/Lib/site-packages/pygments/lexers/math.py +0 -21
  1106. py2docfx/venv/template/Lib/site-packages/pygments/lexers/matlab.py +0 -3306
  1107. py2docfx/venv/template/Lib/site-packages/pygments/lexers/maxima.py +0 -84
  1108. py2docfx/venv/template/Lib/site-packages/pygments/lexers/meson.py +0 -139
  1109. py2docfx/venv/template/Lib/site-packages/pygments/lexers/mime.py +0 -210
  1110. py2docfx/venv/template/Lib/site-packages/pygments/lexers/minecraft.py +0 -391
  1111. py2docfx/venv/template/Lib/site-packages/pygments/lexers/mips.py +0 -130
  1112. py2docfx/venv/template/Lib/site-packages/pygments/lexers/ml.py +0 -958
  1113. py2docfx/venv/template/Lib/site-packages/pygments/lexers/modeling.py +0 -366
  1114. py2docfx/venv/template/Lib/site-packages/pygments/lexers/modula2.py +0 -1579
  1115. py2docfx/venv/template/Lib/site-packages/pygments/lexers/mojo.py +0 -704
  1116. py2docfx/venv/template/Lib/site-packages/pygments/lexers/monte.py +0 -203
  1117. py2docfx/venv/template/Lib/site-packages/pygments/lexers/mosel.py +0 -447
  1118. py2docfx/venv/template/Lib/site-packages/pygments/lexers/ncl.py +0 -894
  1119. py2docfx/venv/template/Lib/site-packages/pygments/lexers/nimrod.py +0 -199
  1120. py2docfx/venv/template/Lib/site-packages/pygments/lexers/nit.py +0 -63
  1121. py2docfx/venv/template/Lib/site-packages/pygments/lexers/nix.py +0 -144
  1122. py2docfx/venv/template/Lib/site-packages/pygments/lexers/oberon.py +0 -120
  1123. py2docfx/venv/template/Lib/site-packages/pygments/lexers/objective.py +0 -513
  1124. py2docfx/venv/template/Lib/site-packages/pygments/lexers/ooc.py +0 -84
  1125. py2docfx/venv/template/Lib/site-packages/pygments/lexers/openscad.py +0 -96
  1126. py2docfx/venv/template/Lib/site-packages/pygments/lexers/other.py +0 -41
  1127. py2docfx/venv/template/Lib/site-packages/pygments/lexers/parasail.py +0 -78
  1128. py2docfx/venv/template/Lib/site-packages/pygments/lexers/parsers.py +0 -798
  1129. py2docfx/venv/template/Lib/site-packages/pygments/lexers/pascal.py +0 -644
  1130. py2docfx/venv/template/Lib/site-packages/pygments/lexers/pawn.py +0 -202
  1131. py2docfx/venv/template/Lib/site-packages/pygments/lexers/perl.py +0 -733
  1132. py2docfx/venv/template/Lib/site-packages/pygments/lexers/phix.py +0 -363
  1133. py2docfx/venv/template/Lib/site-packages/pygments/lexers/php.py +0 -334
  1134. py2docfx/venv/template/Lib/site-packages/pygments/lexers/pointless.py +0 -70
  1135. py2docfx/venv/template/Lib/site-packages/pygments/lexers/pony.py +0 -93
  1136. py2docfx/venv/template/Lib/site-packages/pygments/lexers/praat.py +0 -303
  1137. py2docfx/venv/template/Lib/site-packages/pygments/lexers/procfile.py +0 -41
  1138. py2docfx/venv/template/Lib/site-packages/pygments/lexers/prolog.py +0 -318
  1139. py2docfx/venv/template/Lib/site-packages/pygments/lexers/promql.py +0 -176
  1140. py2docfx/venv/template/Lib/site-packages/pygments/lexers/prql.py +0 -251
  1141. py2docfx/venv/template/Lib/site-packages/pygments/lexers/ptx.py +0 -119
  1142. py2docfx/venv/template/Lib/site-packages/pygments/lexers/python.py +0 -1198
  1143. py2docfx/venv/template/Lib/site-packages/pygments/lexers/q.py +0 -187
  1144. py2docfx/venv/template/Lib/site-packages/pygments/lexers/qlik.py +0 -117
  1145. py2docfx/venv/template/Lib/site-packages/pygments/lexers/qvt.py +0 -153
  1146. py2docfx/venv/template/Lib/site-packages/pygments/lexers/r.py +0 -192
  1147. py2docfx/venv/template/Lib/site-packages/pygments/lexers/rdf.py +0 -468
  1148. py2docfx/venv/template/Lib/site-packages/pygments/lexers/rebol.py +0 -419
  1149. py2docfx/venv/template/Lib/site-packages/pygments/lexers/resource.py +0 -83
  1150. py2docfx/venv/template/Lib/site-packages/pygments/lexers/ride.py +0 -138
  1151. py2docfx/venv/template/Lib/site-packages/pygments/lexers/rita.py +0 -42
  1152. py2docfx/venv/template/Lib/site-packages/pygments/lexers/rnc.py +0 -66
  1153. py2docfx/venv/template/Lib/site-packages/pygments/lexers/roboconf.py +0 -81
  1154. py2docfx/venv/template/Lib/site-packages/pygments/lexers/robotframework.py +0 -551
  1155. py2docfx/venv/template/Lib/site-packages/pygments/lexers/ruby.py +0 -518
  1156. py2docfx/venv/template/Lib/site-packages/pygments/lexers/rust.py +0 -222
  1157. py2docfx/venv/template/Lib/site-packages/pygments/lexers/sas.py +0 -227
  1158. py2docfx/venv/template/Lib/site-packages/pygments/lexers/savi.py +0 -171
  1159. py2docfx/venv/template/Lib/site-packages/pygments/lexers/scdoc.py +0 -85
  1160. py2docfx/venv/template/Lib/site-packages/pygments/lexers/scripting.py +0 -1598
  1161. py2docfx/venv/template/Lib/site-packages/pygments/lexers/sgf.py +0 -59
  1162. py2docfx/venv/template/Lib/site-packages/pygments/lexers/shell.py +0 -898
  1163. py2docfx/venv/template/Lib/site-packages/pygments/lexers/sieve.py +0 -78
  1164. py2docfx/venv/template/Lib/site-packages/pygments/lexers/slash.py +0 -183
  1165. py2docfx/venv/template/Lib/site-packages/pygments/lexers/smalltalk.py +0 -194
  1166. py2docfx/venv/template/Lib/site-packages/pygments/lexers/smithy.py +0 -77
  1167. py2docfx/venv/template/Lib/site-packages/pygments/lexers/smv.py +0 -78
  1168. py2docfx/venv/template/Lib/site-packages/pygments/lexers/snobol.py +0 -82
  1169. py2docfx/venv/template/Lib/site-packages/pygments/lexers/solidity.py +0 -87
  1170. py2docfx/venv/template/Lib/site-packages/pygments/lexers/soong.py +0 -78
  1171. py2docfx/venv/template/Lib/site-packages/pygments/lexers/sophia.py +0 -102
  1172. py2docfx/venv/template/Lib/site-packages/pygments/lexers/special.py +0 -121
  1173. py2docfx/venv/template/Lib/site-packages/pygments/lexers/spice.py +0 -70
  1174. py2docfx/venv/template/Lib/site-packages/pygments/lexers/sql.py +0 -1033
  1175. py2docfx/venv/template/Lib/site-packages/pygments/lexers/srcinfo.py +0 -62
  1176. py2docfx/venv/template/Lib/site-packages/pygments/lexers/stata.py +0 -170
  1177. py2docfx/venv/template/Lib/site-packages/pygments/lexers/supercollider.py +0 -94
  1178. py2docfx/venv/template/Lib/site-packages/pygments/lexers/tact.py +0 -303
  1179. py2docfx/venv/template/Lib/site-packages/pygments/lexers/tal.py +0 -77
  1180. py2docfx/venv/template/Lib/site-packages/pygments/lexers/tcl.py +0 -148
  1181. py2docfx/venv/template/Lib/site-packages/pygments/lexers/teal.py +0 -88
  1182. py2docfx/venv/template/Lib/site-packages/pygments/lexers/templates.py +0 -2355
  1183. py2docfx/venv/template/Lib/site-packages/pygments/lexers/teraterm.py +0 -325
  1184. py2docfx/venv/template/Lib/site-packages/pygments/lexers/testing.py +0 -209
  1185. py2docfx/venv/template/Lib/site-packages/pygments/lexers/text.py +0 -27
  1186. py2docfx/venv/template/Lib/site-packages/pygments/lexers/textedit.py +0 -205
  1187. py2docfx/venv/template/Lib/site-packages/pygments/lexers/textfmts.py +0 -436
  1188. py2docfx/venv/template/Lib/site-packages/pygments/lexers/theorem.py +0 -410
  1189. py2docfx/venv/template/Lib/site-packages/pygments/lexers/thingsdb.py +0 -140
  1190. py2docfx/venv/template/Lib/site-packages/pygments/lexers/tlb.py +0 -59
  1191. py2docfx/venv/template/Lib/site-packages/pygments/lexers/tls.py +0 -54
  1192. py2docfx/venv/template/Lib/site-packages/pygments/lexers/tnt.py +0 -270
  1193. py2docfx/venv/template/Lib/site-packages/pygments/lexers/trafficscript.py +0 -51
  1194. py2docfx/venv/template/Lib/site-packages/pygments/lexers/typoscript.py +0 -216
  1195. py2docfx/venv/template/Lib/site-packages/pygments/lexers/typst.py +0 -104
  1196. py2docfx/venv/template/Lib/site-packages/pygments/lexers/ul4.py +0 -309
  1197. py2docfx/venv/template/Lib/site-packages/pygments/lexers/unicon.py +0 -413
  1198. py2docfx/venv/template/Lib/site-packages/pygments/lexers/urbi.py +0 -145
  1199. py2docfx/venv/template/Lib/site-packages/pygments/lexers/usd.py +0 -85
  1200. py2docfx/venv/template/Lib/site-packages/pygments/lexers/varnish.py +0 -189
  1201. py2docfx/venv/template/Lib/site-packages/pygments/lexers/verification.py +0 -113
  1202. py2docfx/venv/template/Lib/site-packages/pygments/lexers/verifpal.py +0 -65
  1203. py2docfx/venv/template/Lib/site-packages/pygments/lexers/vip.py +0 -150
  1204. py2docfx/venv/template/Lib/site-packages/pygments/lexers/vyper.py +0 -140
  1205. py2docfx/venv/template/Lib/site-packages/pygments/lexers/web.py +0 -24
  1206. py2docfx/venv/template/Lib/site-packages/pygments/lexers/webassembly.py +0 -119
  1207. py2docfx/venv/template/Lib/site-packages/pygments/lexers/webidl.py +0 -298
  1208. py2docfx/venv/template/Lib/site-packages/pygments/lexers/webmisc.py +0 -1006
  1209. py2docfx/venv/template/Lib/site-packages/pygments/lexers/wgsl.py +0 -406
  1210. py2docfx/venv/template/Lib/site-packages/pygments/lexers/whiley.py +0 -115
  1211. py2docfx/venv/template/Lib/site-packages/pygments/lexers/wowtoc.py +0 -120
  1212. py2docfx/venv/template/Lib/site-packages/pygments/lexers/wren.py +0 -98
  1213. py2docfx/venv/template/Lib/site-packages/pygments/lexers/x10.py +0 -66
  1214. py2docfx/venv/template/Lib/site-packages/pygments/lexers/xorg.py +0 -38
  1215. py2docfx/venv/template/Lib/site-packages/pygments/lexers/yang.py +0 -103
  1216. py2docfx/venv/template/Lib/site-packages/pygments/lexers/yara.py +0 -69
  1217. py2docfx/venv/template/Lib/site-packages/pygments/lexers/zig.py +0 -125
  1218. py2docfx/venv/template/Lib/site-packages/pygments/modeline.py +0 -43
  1219. py2docfx/venv/template/Lib/site-packages/pygments/plugin.py +0 -72
  1220. py2docfx/venv/template/Lib/site-packages/pygments/regexopt.py +0 -91
  1221. py2docfx/venv/template/Lib/site-packages/pygments/scanner.py +0 -104
  1222. py2docfx/venv/template/Lib/site-packages/pygments/sphinxext.py +0 -247
  1223. py2docfx/venv/template/Lib/site-packages/pygments/style.py +0 -203
  1224. py2docfx/venv/template/Lib/site-packages/pygments/styles/__init__.py +0 -61
  1225. py2docfx/venv/template/Lib/site-packages/pygments/styles/_mapping.py +0 -54
  1226. py2docfx/venv/template/Lib/site-packages/pygments/styles/abap.py +0 -32
  1227. py2docfx/venv/template/Lib/site-packages/pygments/styles/algol.py +0 -65
  1228. py2docfx/venv/template/Lib/site-packages/pygments/styles/algol_nu.py +0 -65
  1229. py2docfx/venv/template/Lib/site-packages/pygments/styles/arduino.py +0 -100
  1230. py2docfx/venv/template/Lib/site-packages/pygments/styles/autumn.py +0 -67
  1231. py2docfx/venv/template/Lib/site-packages/pygments/styles/borland.py +0 -53
  1232. py2docfx/venv/template/Lib/site-packages/pygments/styles/bw.py +0 -52
  1233. py2docfx/venv/template/Lib/site-packages/pygments/styles/coffee.py +0 -80
  1234. py2docfx/venv/template/Lib/site-packages/pygments/styles/colorful.py +0 -83
  1235. py2docfx/venv/template/Lib/site-packages/pygments/styles/default.py +0 -76
  1236. py2docfx/venv/template/Lib/site-packages/pygments/styles/dracula.py +0 -90
  1237. py2docfx/venv/template/Lib/site-packages/pygments/styles/emacs.py +0 -75
  1238. py2docfx/venv/template/Lib/site-packages/pygments/styles/friendly.py +0 -76
  1239. py2docfx/venv/template/Lib/site-packages/pygments/styles/friendly_grayscale.py +0 -80
  1240. py2docfx/venv/template/Lib/site-packages/pygments/styles/fruity.py +0 -47
  1241. py2docfx/venv/template/Lib/site-packages/pygments/styles/gh_dark.py +0 -113
  1242. py2docfx/venv/template/Lib/site-packages/pygments/styles/gruvbox.py +0 -118
  1243. py2docfx/venv/template/Lib/site-packages/pygments/styles/igor.py +0 -32
  1244. py2docfx/venv/template/Lib/site-packages/pygments/styles/inkpot.py +0 -72
  1245. py2docfx/venv/template/Lib/site-packages/pygments/styles/lightbulb.py +0 -110
  1246. py2docfx/venv/template/Lib/site-packages/pygments/styles/lilypond.py +0 -62
  1247. py2docfx/venv/template/Lib/site-packages/pygments/styles/lovelace.py +0 -100
  1248. py2docfx/venv/template/Lib/site-packages/pygments/styles/manni.py +0 -79
  1249. py2docfx/venv/template/Lib/site-packages/pygments/styles/material.py +0 -124
  1250. py2docfx/venv/template/Lib/site-packages/pygments/styles/monokai.py +0 -112
  1251. py2docfx/venv/template/Lib/site-packages/pygments/styles/murphy.py +0 -82
  1252. py2docfx/venv/template/Lib/site-packages/pygments/styles/native.py +0 -70
  1253. py2docfx/venv/template/Lib/site-packages/pygments/styles/nord.py +0 -156
  1254. py2docfx/venv/template/Lib/site-packages/pygments/styles/onedark.py +0 -63
  1255. py2docfx/venv/template/Lib/site-packages/pygments/styles/paraiso_dark.py +0 -124
  1256. py2docfx/venv/template/Lib/site-packages/pygments/styles/paraiso_light.py +0 -124
  1257. py2docfx/venv/template/Lib/site-packages/pygments/styles/pastie.py +0 -78
  1258. py2docfx/venv/template/Lib/site-packages/pygments/styles/perldoc.py +0 -73
  1259. py2docfx/venv/template/Lib/site-packages/pygments/styles/rainbow_dash.py +0 -95
  1260. py2docfx/venv/template/Lib/site-packages/pygments/styles/rrt.py +0 -39
  1261. py2docfx/venv/template/Lib/site-packages/pygments/styles/sas.py +0 -46
  1262. py2docfx/venv/template/Lib/site-packages/pygments/styles/solarized.py +0 -144
  1263. py2docfx/venv/template/Lib/site-packages/pygments/styles/staroffice.py +0 -31
  1264. py2docfx/venv/template/Lib/site-packages/pygments/styles/stata_dark.py +0 -42
  1265. py2docfx/venv/template/Lib/site-packages/pygments/styles/stata_light.py +0 -42
  1266. py2docfx/venv/template/Lib/site-packages/pygments/styles/tango.py +0 -143
  1267. py2docfx/venv/template/Lib/site-packages/pygments/styles/trac.py +0 -66
  1268. py2docfx/venv/template/Lib/site-packages/pygments/styles/vim.py +0 -67
  1269. py2docfx/venv/template/Lib/site-packages/pygments/styles/vs.py +0 -41
  1270. py2docfx/venv/template/Lib/site-packages/pygments/styles/xcode.py +0 -53
  1271. py2docfx/venv/template/Lib/site-packages/pygments/styles/zenburn.py +0 -83
  1272. py2docfx/venv/template/Lib/site-packages/pygments/token.py +0 -214
  1273. py2docfx/venv/template/Lib/site-packages/pygments/unistring.py +0 -153
  1274. py2docfx/venv/template/Lib/site-packages/pygments/util.py +0 -324
  1275. py2docfx/venv/template/Lib/site-packages/requests/__init__.py +0 -184
  1276. py2docfx/venv/template/Lib/site-packages/requests/__version__.py +0 -14
  1277. py2docfx/venv/template/Lib/site-packages/requests/_internal_utils.py +0 -50
  1278. py2docfx/venv/template/Lib/site-packages/requests/adapters.py +0 -719
  1279. py2docfx/venv/template/Lib/site-packages/requests/api.py +0 -157
  1280. py2docfx/venv/template/Lib/site-packages/requests/auth.py +0 -314
  1281. py2docfx/venv/template/Lib/site-packages/requests/certs.py +0 -17
  1282. py2docfx/venv/template/Lib/site-packages/requests/compat.py +0 -94
  1283. py2docfx/venv/template/Lib/site-packages/requests/cookies.py +0 -561
  1284. py2docfx/venv/template/Lib/site-packages/requests/exceptions.py +0 -151
  1285. py2docfx/venv/template/Lib/site-packages/requests/help.py +0 -134
  1286. py2docfx/venv/template/Lib/site-packages/requests/hooks.py +0 -33
  1287. py2docfx/venv/template/Lib/site-packages/requests/models.py +0 -1037
  1288. py2docfx/venv/template/Lib/site-packages/requests/packages.py +0 -23
  1289. py2docfx/venv/template/Lib/site-packages/requests/sessions.py +0 -831
  1290. py2docfx/venv/template/Lib/site-packages/requests/status_codes.py +0 -128
  1291. py2docfx/venv/template/Lib/site-packages/requests/structures.py +0 -99
  1292. py2docfx/venv/template/Lib/site-packages/requests/utils.py +0 -1096
  1293. py2docfx/venv/template/Lib/site-packages/setuptools/__init__.py +0 -259
  1294. py2docfx/venv/template/Lib/site-packages/setuptools/_core_metadata.py +0 -285
  1295. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/__init__.py +0 -14
  1296. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_collections.py +0 -58
  1297. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_functools.py +0 -73
  1298. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_itertools.py +0 -52
  1299. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_log.py +0 -3
  1300. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_macos_compat.py +0 -12
  1301. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_modified.py +0 -72
  1302. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +0 -568
  1303. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/__init__.py +0 -0
  1304. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/__init__.py +0 -15
  1305. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/_elffile.py +0 -108
  1306. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/_manylinux.py +0 -260
  1307. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/_musllinux.py +0 -83
  1308. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/_parser.py +0 -356
  1309. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/_structures.py +0 -61
  1310. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/_tokenizer.py +0 -192
  1311. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/markers.py +0 -252
  1312. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/metadata.py +0 -825
  1313. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/requirements.py +0 -90
  1314. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/specifiers.py +0 -1017
  1315. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/tags.py +0 -571
  1316. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/utils.py +0 -172
  1317. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/_vendor/packaging/version.py +0 -563
  1318. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/archive_util.py +0 -283
  1319. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/bcppcompiler.py +0 -396
  1320. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/ccompiler.py +0 -1255
  1321. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/cmd.py +0 -439
  1322. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/__init__.py +0 -25
  1323. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/_framework_compat.py +0 -54
  1324. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/bdist.py +0 -155
  1325. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py +0 -140
  1326. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py +0 -597
  1327. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/build.py +0 -156
  1328. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/build_clib.py +0 -208
  1329. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/build_ext.py +0 -797
  1330. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/build_py.py +0 -406
  1331. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +0 -170
  1332. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/check.py +0 -154
  1333. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/clean.py +0 -76
  1334. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/config.py +0 -369
  1335. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/install.py +0 -810
  1336. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/install_data.py +0 -94
  1337. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/install_egg_info.py +0 -92
  1338. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/install_headers.py +0 -44
  1339. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/install_lib.py +0 -234
  1340. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/install_scripts.py +0 -61
  1341. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/register.py +0 -322
  1342. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/sdist.py +0 -527
  1343. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/command/upload.py +0 -208
  1344. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/compat/__init__.py +0 -15
  1345. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/compat/py38.py +0 -34
  1346. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/compat/py39.py +0 -66
  1347. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/config.py +0 -151
  1348. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/core.py +0 -287
  1349. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py +0 -334
  1350. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/debug.py +0 -5
  1351. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/dep_util.py +0 -14
  1352. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/dir_util.py +0 -238
  1353. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/dist.py +0 -1298
  1354. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/errors.py +0 -127
  1355. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/extension.py +0 -247
  1356. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/fancy_getopt.py +0 -469
  1357. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/file_util.py +0 -235
  1358. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/filelist.py +0 -369
  1359. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/log.py +0 -56
  1360. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/msvc9compiler.py +0 -822
  1361. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/msvccompiler.py +0 -687
  1362. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/spawn.py +0 -117
  1363. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/sysconfig.py +0 -582
  1364. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/__init__.py +0 -42
  1365. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/compat/__init__.py +0 -0
  1366. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/compat/py38.py +0 -50
  1367. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/support.py +0 -134
  1368. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_archive_util.py +0 -386
  1369. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_bdist.py +0 -47
  1370. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_bdist_dumb.py +0 -78
  1371. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_bdist_rpm.py +0 -128
  1372. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_build.py +0 -47
  1373. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_build_clib.py +0 -134
  1374. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +0 -563
  1375. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_build_py.py +0 -196
  1376. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_build_scripts.py +0 -96
  1377. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_ccompiler.py +0 -91
  1378. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_check.py +0 -194
  1379. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_clean.py +0 -45
  1380. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_cmd.py +0 -107
  1381. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_config.py +0 -116
  1382. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_config_cmd.py +0 -87
  1383. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_core.py +0 -130
  1384. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_cygwinccompiler.py +0 -81
  1385. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +0 -112
  1386. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_dist.py +0 -545
  1387. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_extension.py +0 -108
  1388. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_file_util.py +0 -94
  1389. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_filelist.py +0 -336
  1390. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_install.py +0 -245
  1391. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_install_data.py +0 -74
  1392. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_install_headers.py +0 -33
  1393. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_install_lib.py +0 -110
  1394. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_install_scripts.py +0 -52
  1395. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_log.py +0 -12
  1396. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_mingwccompiler.py +0 -56
  1397. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_modified.py +0 -119
  1398. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_msvc9compiler.py +0 -184
  1399. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_msvccompiler.py +0 -114
  1400. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_register.py +0 -314
  1401. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_sdist.py +0 -479
  1402. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_spawn.py +0 -131
  1403. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_sysconfig.py +0 -319
  1404. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_text_file.py +0 -127
  1405. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_unixccompiler.py +0 -351
  1406. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_upload.py +0 -215
  1407. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_util.py +0 -243
  1408. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_version.py +0 -80
  1409. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/test_versionpredicate.py +0 -0
  1410. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/tests/unix_compat.py +0 -17
  1411. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/text_file.py +0 -286
  1412. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/unixccompiler.py +0 -402
  1413. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/util.py +0 -504
  1414. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/version.py +0 -349
  1415. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/versionpredicate.py +0 -175
  1416. py2docfx/venv/template/Lib/site-packages/setuptools/_distutils/zosccompiler.py +0 -229
  1417. py2docfx/venv/template/Lib/site-packages/setuptools/_entry_points.py +0 -89
  1418. py2docfx/venv/template/Lib/site-packages/setuptools/_imp.py +0 -89
  1419. py2docfx/venv/template/Lib/site-packages/setuptools/_importlib.py +0 -13
  1420. py2docfx/venv/template/Lib/site-packages/setuptools/_itertools.py +0 -23
  1421. py2docfx/venv/template/Lib/site-packages/setuptools/_normalization.py +0 -144
  1422. py2docfx/venv/template/Lib/site-packages/setuptools/_path.py +0 -82
  1423. py2docfx/venv/template/Lib/site-packages/setuptools/_reqs.py +0 -38
  1424. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/autocommand/__init__.py +0 -27
  1425. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/autocommand/autoasync.py +0 -142
  1426. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/autocommand/autocommand.py +0 -70
  1427. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/autocommand/automain.py +0 -59
  1428. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/autocommand/autoparse.py +0 -333
  1429. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/autocommand/errors.py +0 -23
  1430. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/backports/__init__.py +0 -1
  1431. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/backports/tarfile/__init__.py +0 -2937
  1432. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/backports/tarfile/__main__.py +0 -5
  1433. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/backports/tarfile/compat/__init__.py +0 -0
  1434. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/backports/tarfile/compat/py38.py +0 -24
  1435. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_metadata/__init__.py +0 -1083
  1436. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_metadata/_adapters.py +0 -83
  1437. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_metadata/_collections.py +0 -30
  1438. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_metadata/_compat.py +0 -57
  1439. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_metadata/_functools.py +0 -104
  1440. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_metadata/_itertools.py +0 -73
  1441. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_metadata/_meta.py +0 -67
  1442. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_metadata/_text.py +0 -99
  1443. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat/__init__.py +0 -0
  1444. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat/py311.py +0 -22
  1445. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat/py39.py +0 -36
  1446. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_metadata/diagnose.py +0 -21
  1447. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +0 -36
  1448. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +0 -168
  1449. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +0 -210
  1450. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +0 -38
  1451. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +0 -171
  1452. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/__init__.py +0 -0
  1453. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py38.py +0 -11
  1454. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py39.py +0 -10
  1455. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/functional.py +0 -81
  1456. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/future/__init__.py +0 -0
  1457. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/future/adapters.py +0 -95
  1458. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +0 -194
  1459. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +0 -106
  1460. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/__init__.py +0 -0
  1461. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/_path.py +0 -56
  1462. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/__init__.py +0 -0
  1463. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py312.py +0 -18
  1464. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py39.py +0 -10
  1465. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/__init__.py +0 -0
  1466. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py +0 -0
  1467. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/__init__.py +0 -0
  1468. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py +0 -0
  1469. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py +0 -0
  1470. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py +0 -104
  1471. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_contents.py +0 -43
  1472. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_custom.py +0 -47
  1473. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_files.py +0 -117
  1474. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_functional.py +0 -242
  1475. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_open.py +0 -89
  1476. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_path.py +0 -65
  1477. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_read.py +0 -97
  1478. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_reader.py +0 -145
  1479. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_resource.py +0 -241
  1480. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/util.py +0 -164
  1481. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/zip.py +0 -32
  1482. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/inflect/__init__.py +0 -3986
  1483. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/inflect/compat/__init__.py +0 -0
  1484. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/inflect/compat/py38.py +0 -7
  1485. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/jaraco/context.py +0 -361
  1486. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.py +0 -633
  1487. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/jaraco/text/__init__.py +0 -624
  1488. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/jaraco/text/layouts.py +0 -25
  1489. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/jaraco/text/show-newlines.py +0 -33
  1490. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/jaraco/text/strip-prefix.py +0 -21
  1491. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/jaraco/text/to-dvorak.py +0 -6
  1492. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/jaraco/text/to-qwerty.py +0 -6
  1493. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py +0 -6
  1494. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/more_itertools/more.py +0 -4806
  1495. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py +0 -1046
  1496. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/ordered_set/__init__.py +0 -536
  1497. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +0 -15
  1498. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +0 -110
  1499. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +0 -262
  1500. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/_musllinux.py +0 -85
  1501. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/_parser.py +0 -354
  1502. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/_structures.py +0 -61
  1503. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/_tokenizer.py +0 -194
  1504. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/markers.py +0 -325
  1505. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +0 -804
  1506. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/requirements.py +0 -91
  1507. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +0 -1009
  1508. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/tags.py +0 -568
  1509. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/utils.py +0 -174
  1510. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/packaging/version.py +0 -563
  1511. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/platformdirs/__init__.py +0 -627
  1512. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/platformdirs/__main__.py +0 -55
  1513. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/platformdirs/android.py +0 -249
  1514. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/platformdirs/api.py +0 -292
  1515. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/platformdirs/macos.py +0 -130
  1516. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/platformdirs/unix.py +0 -275
  1517. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/platformdirs/version.py +0 -16
  1518. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/platformdirs/windows.py +0 -272
  1519. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/tomli/__init__.py +0 -11
  1520. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/tomli/_parser.py +0 -691
  1521. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/tomli/_re.py +0 -107
  1522. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/tomli/_types.py +0 -10
  1523. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typeguard/__init__.py +0 -48
  1524. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typeguard/_checkers.py +0 -993
  1525. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typeguard/_config.py +0 -108
  1526. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typeguard/_decorators.py +0 -235
  1527. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typeguard/_exceptions.py +0 -42
  1528. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typeguard/_functions.py +0 -308
  1529. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typeguard/_importhook.py +0 -213
  1530. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typeguard/_memo.py +0 -48
  1531. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typeguard/_pytest_plugin.py +0 -127
  1532. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typeguard/_suppression.py +0 -86
  1533. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typeguard/_transformer.py +0 -1229
  1534. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typeguard/_union_transformer.py +0 -55
  1535. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typeguard/_utils.py +0 -173
  1536. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/typing_extensions.py +0 -3641
  1537. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/__init__.py +0 -3
  1538. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/__main__.py +0 -23
  1539. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py +0 -26
  1540. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/bdist_wheel.py +0 -595
  1541. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/cli/__init__.py +0 -155
  1542. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/cli/convert.py +0 -273
  1543. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/cli/pack.py +0 -85
  1544. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/cli/tags.py +0 -139
  1545. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/cli/unpack.py +0 -30
  1546. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/macosx_libfile.py +0 -469
  1547. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/metadata.py +0 -180
  1548. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/util.py +0 -26
  1549. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/__init__.py +0 -0
  1550. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/__init__.py +0 -0
  1551. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_elffile.py +0 -108
  1552. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_manylinux.py +0 -260
  1553. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_musllinux.py +0 -83
  1554. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_parser.py +0 -356
  1555. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_structures.py +0 -61
  1556. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_tokenizer.py +0 -192
  1557. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/markers.py +0 -253
  1558. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/requirements.py +0 -90
  1559. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/specifiers.py +0 -1011
  1560. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/tags.py +0 -571
  1561. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/utils.py +0 -172
  1562. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/version.py +0 -561
  1563. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/wheel/wheelfile.py +0 -196
  1564. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/zipp/__init__.py +0 -501
  1565. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/zipp/compat/__init__.py +0 -0
  1566. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/zipp/compat/py310.py +0 -11
  1567. py2docfx/venv/template/Lib/site-packages/setuptools/_vendor/zipp/glob.py +0 -106
  1568. py2docfx/venv/template/Lib/site-packages/setuptools/archive_util.py +0 -216
  1569. py2docfx/venv/template/Lib/site-packages/setuptools/build_meta.py +0 -524
  1570. py2docfx/venv/template/Lib/site-packages/setuptools/command/__init__.py +0 -12
  1571. py2docfx/venv/template/Lib/site-packages/setuptools/command/_requirestxt.py +0 -131
  1572. py2docfx/venv/template/Lib/site-packages/setuptools/command/alias.py +0 -78
  1573. py2docfx/venv/template/Lib/site-packages/setuptools/command/bdist_egg.py +0 -464
  1574. py2docfx/venv/template/Lib/site-packages/setuptools/command/bdist_rpm.py +0 -39
  1575. py2docfx/venv/template/Lib/site-packages/setuptools/command/bdist_wheel.py +0 -597
  1576. py2docfx/venv/template/Lib/site-packages/setuptools/command/build.py +0 -124
  1577. py2docfx/venv/template/Lib/site-packages/setuptools/command/build_clib.py +0 -104
  1578. py2docfx/venv/template/Lib/site-packages/setuptools/command/build_ext.py +0 -459
  1579. py2docfx/venv/template/Lib/site-packages/setuptools/command/build_py.py +0 -401
  1580. py2docfx/venv/template/Lib/site-packages/setuptools/command/develop.py +0 -196
  1581. py2docfx/venv/template/Lib/site-packages/setuptools/command/dist_info.py +0 -106
  1582. py2docfx/venv/template/Lib/site-packages/setuptools/command/easy_install.py +0 -2362
  1583. py2docfx/venv/template/Lib/site-packages/setuptools/command/editable_wheel.py +0 -915
  1584. py2docfx/venv/template/Lib/site-packages/setuptools/command/egg_info.py +0 -726
  1585. py2docfx/venv/template/Lib/site-packages/setuptools/command/install.py +0 -160
  1586. py2docfx/venv/template/Lib/site-packages/setuptools/command/install_egg_info.py +0 -57
  1587. py2docfx/venv/template/Lib/site-packages/setuptools/command/install_lib.py +0 -127
  1588. py2docfx/venv/template/Lib/site-packages/setuptools/command/install_scripts.py +0 -68
  1589. py2docfx/venv/template/Lib/site-packages/setuptools/command/register.py +0 -18
  1590. py2docfx/venv/template/Lib/site-packages/setuptools/command/rotate.py +0 -64
  1591. py2docfx/venv/template/Lib/site-packages/setuptools/command/saveopts.py +0 -21
  1592. py2docfx/venv/template/Lib/site-packages/setuptools/command/sdist.py +0 -204
  1593. py2docfx/venv/template/Lib/site-packages/setuptools/command/setopt.py +0 -140
  1594. py2docfx/venv/template/Lib/site-packages/setuptools/command/test.py +0 -42
  1595. py2docfx/venv/template/Lib/site-packages/setuptools/command/upload.py +0 -17
  1596. py2docfx/venv/template/Lib/site-packages/setuptools/command/upload_docs.py +0 -221
  1597. py2docfx/venv/template/Lib/site-packages/setuptools/compat/__init__.py +0 -0
  1598. py2docfx/venv/template/Lib/site-packages/setuptools/compat/py310.py +0 -10
  1599. py2docfx/venv/template/Lib/site-packages/setuptools/compat/py311.py +0 -26
  1600. py2docfx/venv/template/Lib/site-packages/setuptools/compat/py39.py +0 -9
  1601. py2docfx/venv/template/Lib/site-packages/setuptools/config/__init__.py +0 -43
  1602. py2docfx/venv/template/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +0 -436
  1603. py2docfx/venv/template/Lib/site-packages/setuptools/config/_validate_pyproject/__init__.py +0 -34
  1604. py2docfx/venv/template/Lib/site-packages/setuptools/config/_validate_pyproject/error_reporting.py +0 -338
  1605. py2docfx/venv/template/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +0 -52
  1606. py2docfx/venv/template/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py +0 -51
  1607. py2docfx/venv/template/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +0 -1104
  1608. py2docfx/venv/template/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +0 -354
  1609. py2docfx/venv/template/Lib/site-packages/setuptools/config/expand.py +0 -443
  1610. py2docfx/venv/template/Lib/site-packages/setuptools/config/pyprojecttoml.py +0 -453
  1611. py2docfx/venv/template/Lib/site-packages/setuptools/config/setupcfg.py +0 -777
  1612. py2docfx/venv/template/Lib/site-packages/setuptools/depends.py +0 -167
  1613. py2docfx/venv/template/Lib/site-packages/setuptools/discovery.py +0 -611
  1614. py2docfx/venv/template/Lib/site-packages/setuptools/dist.py +0 -950
  1615. py2docfx/venv/template/Lib/site-packages/setuptools/errors.py +0 -66
  1616. py2docfx/venv/template/Lib/site-packages/setuptools/extension.py +0 -151
  1617. py2docfx/venv/template/Lib/site-packages/setuptools/glob.py +0 -165
  1618. py2docfx/venv/template/Lib/site-packages/setuptools/installer.py +0 -144
  1619. py2docfx/venv/template/Lib/site-packages/setuptools/launch.py +0 -36
  1620. py2docfx/venv/template/Lib/site-packages/setuptools/logging.py +0 -38
  1621. py2docfx/venv/template/Lib/site-packages/setuptools/modified.py +0 -8
  1622. py2docfx/venv/template/Lib/site-packages/setuptools/monkey.py +0 -157
  1623. py2docfx/venv/template/Lib/site-packages/setuptools/msvc.py +0 -1747
  1624. py2docfx/venv/template/Lib/site-packages/setuptools/namespaces.py +0 -105
  1625. py2docfx/venv/template/Lib/site-packages/setuptools/package_index.py +0 -1148
  1626. py2docfx/venv/template/Lib/site-packages/setuptools/sandbox.py +0 -530
  1627. py2docfx/venv/template/Lib/site-packages/setuptools/tests/__init__.py +0 -15
  1628. py2docfx/venv/template/Lib/site-packages/setuptools/tests/compat/__init__.py +0 -0
  1629. py2docfx/venv/template/Lib/site-packages/setuptools/tests/compat/py39.py +0 -4
  1630. py2docfx/venv/template/Lib/site-packages/setuptools/tests/config/__init__.py +0 -0
  1631. py2docfx/venv/template/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +0 -57
  1632. py2docfx/venv/template/Lib/site-packages/setuptools/tests/config/downloads/preload.py +0 -19
  1633. py2docfx/venv/template/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +0 -466
  1634. py2docfx/venv/template/Lib/site-packages/setuptools/tests/config/test_expand.py +0 -220
  1635. py2docfx/venv/template/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +0 -397
  1636. py2docfx/venv/template/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +0 -99
  1637. py2docfx/venv/template/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +0 -967
  1638. py2docfx/venv/template/Lib/site-packages/setuptools/tests/contexts.py +0 -145
  1639. py2docfx/venv/template/Lib/site-packages/setuptools/tests/environment.py +0 -95
  1640. py2docfx/venv/template/Lib/site-packages/setuptools/tests/fixtures.py +0 -157
  1641. py2docfx/venv/template/Lib/site-packages/setuptools/tests/integration/__init__.py +0 -0
  1642. py2docfx/venv/template/Lib/site-packages/setuptools/tests/integration/helpers.py +0 -77
  1643. py2docfx/venv/template/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +0 -225
  1644. py2docfx/venv/template/Lib/site-packages/setuptools/tests/mod_with_constant.py +0 -1
  1645. py2docfx/venv/template/Lib/site-packages/setuptools/tests/namespaces.py +0 -90
  1646. py2docfx/venv/template/Lib/site-packages/setuptools/tests/script-with-bom.py +0 -1
  1647. py2docfx/venv/template/Lib/site-packages/setuptools/tests/server.py +0 -86
  1648. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_archive_util.py +0 -36
  1649. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_bdist_deprecations.py +0 -28
  1650. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_bdist_egg.py +0 -69
  1651. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +0 -611
  1652. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_build.py +0 -33
  1653. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_build_clib.py +0 -83
  1654. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_build_ext.py +0 -292
  1655. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_build_meta.py +0 -973
  1656. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_build_py.py +0 -480
  1657. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_config_discovery.py +0 -643
  1658. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_core_metadata.py +0 -391
  1659. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_depends.py +0 -15
  1660. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_develop.py +0 -175
  1661. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_dist.py +0 -281
  1662. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_dist_info.py +0 -210
  1663. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +0 -160
  1664. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_easy_install.py +0 -1458
  1665. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_editable_install.py +0 -1285
  1666. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_egg_info.py +0 -1290
  1667. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_extern.py +0 -20
  1668. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_find_packages.py +0 -219
  1669. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_find_py_modules.py +0 -73
  1670. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_glob.py +0 -45
  1671. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_install_scripts.py +0 -88
  1672. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_integration.py +0 -122
  1673. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_logging.py +0 -74
  1674. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_manifest.py +0 -631
  1675. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_msvc14.py +0 -83
  1676. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_namespaces.py +0 -138
  1677. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_packageindex.py +0 -277
  1678. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_register.py +0 -19
  1679. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_sandbox.py +0 -134
  1680. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_sdist.py +0 -910
  1681. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_setopt.py +0 -40
  1682. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_setuptools.py +0 -289
  1683. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_unicode_utils.py +0 -10
  1684. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_upload.py +0 -19
  1685. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_virtualenv.py +0 -115
  1686. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_warnings.py +0 -107
  1687. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_wheel.py +0 -707
  1688. py2docfx/venv/template/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +0 -259
  1689. py2docfx/venv/template/Lib/site-packages/setuptools/tests/text.py +0 -4
  1690. py2docfx/venv/template/Lib/site-packages/setuptools/tests/textwrap.py +0 -6
  1691. py2docfx/venv/template/Lib/site-packages/setuptools/unicode_utils.py +0 -102
  1692. py2docfx/venv/template/Lib/site-packages/setuptools/version.py +0 -6
  1693. py2docfx/venv/template/Lib/site-packages/setuptools/warnings.py +0 -107
  1694. py2docfx/venv/template/Lib/site-packages/setuptools/wheel.py +0 -237
  1695. py2docfx/venv/template/Lib/site-packages/setuptools/windows_support.py +0 -30
  1696. py2docfx/venv/template/Lib/site-packages/snowballstemmer/__init__.py +0 -83
  1697. py2docfx/venv/template/Lib/site-packages/snowballstemmer/among.py +0 -13
  1698. py2docfx/venv/template/Lib/site-packages/snowballstemmer/arabic_stemmer.py +0 -1199
  1699. py2docfx/venv/template/Lib/site-packages/snowballstemmer/armenian_stemmer.py +0 -316
  1700. py2docfx/venv/template/Lib/site-packages/snowballstemmer/basestemmer.py +0 -323
  1701. py2docfx/venv/template/Lib/site-packages/snowballstemmer/basque_stemmer.py +0 -683
  1702. py2docfx/venv/template/Lib/site-packages/snowballstemmer/catalan_stemmer.py +0 -784
  1703. py2docfx/venv/template/Lib/site-packages/snowballstemmer/danish_stemmer.py +0 -221
  1704. py2docfx/venv/template/Lib/site-packages/snowballstemmer/dutch_stemmer.py +0 -468
  1705. py2docfx/venv/template/Lib/site-packages/snowballstemmer/english_stemmer.py +0 -731
  1706. py2docfx/venv/template/Lib/site-packages/snowballstemmer/finnish_stemmer.py +0 -548
  1707. py2docfx/venv/template/Lib/site-packages/snowballstemmer/french_stemmer.py +0 -967
  1708. py2docfx/venv/template/Lib/site-packages/snowballstemmer/german_stemmer.py +0 -415
  1709. py2docfx/venv/template/Lib/site-packages/snowballstemmer/greek_stemmer.py +0 -2271
  1710. py2docfx/venv/template/Lib/site-packages/snowballstemmer/hindi_stemmer.py +0 -173
  1711. py2docfx/venv/template/Lib/site-packages/snowballstemmer/hungarian_stemmer.py +0 -520
  1712. py2docfx/venv/template/Lib/site-packages/snowballstemmer/indonesian_stemmer.py +0 -319
  1713. py2docfx/venv/template/Lib/site-packages/snowballstemmer/irish_stemmer.py +0 -276
  1714. py2docfx/venv/template/Lib/site-packages/snowballstemmer/italian_stemmer.py +0 -715
  1715. py2docfx/venv/template/Lib/site-packages/snowballstemmer/lithuanian_stemmer.py +0 -469
  1716. py2docfx/venv/template/Lib/site-packages/snowballstemmer/nepali_stemmer.py +0 -274
  1717. py2docfx/venv/template/Lib/site-packages/snowballstemmer/norwegian_stemmer.py +0 -191
  1718. py2docfx/venv/template/Lib/site-packages/snowballstemmer/porter_stemmer.py +0 -506
  1719. py2docfx/venv/template/Lib/site-packages/snowballstemmer/portuguese_stemmer.py +0 -659
  1720. py2docfx/venv/template/Lib/site-packages/snowballstemmer/romanian_stemmer.py +0 -633
  1721. py2docfx/venv/template/Lib/site-packages/snowballstemmer/russian_stemmer.py +0 -492
  1722. py2docfx/venv/template/Lib/site-packages/snowballstemmer/serbian_stemmer.py +0 -3497
  1723. py2docfx/venv/template/Lib/site-packages/snowballstemmer/spanish_stemmer.py +0 -708
  1724. py2docfx/venv/template/Lib/site-packages/snowballstemmer/swedish_stemmer.py +0 -189
  1725. py2docfx/venv/template/Lib/site-packages/snowballstemmer/tamil_stemmer.py +0 -1788
  1726. py2docfx/venv/template/Lib/site-packages/snowballstemmer/turkish_stemmer.py +0 -1803
  1727. py2docfx/venv/template/Lib/site-packages/snowballstemmer/yiddish_stemmer.py +0 -855
  1728. py2docfx/venv/template/Lib/site-packages/sphinx/__init__.py +0 -54
  1729. py2docfx/venv/template/Lib/site-packages/sphinx/__main__.py +0 -5
  1730. py2docfx/venv/template/Lib/site-packages/sphinx/addnodes.py +0 -564
  1731. py2docfx/venv/template/Lib/site-packages/sphinx/application.py +0 -1344
  1732. py2docfx/venv/template/Lib/site-packages/sphinx/builders/__init__.py +0 -671
  1733. py2docfx/venv/template/Lib/site-packages/sphinx/builders/_epub_base.py +0 -708
  1734. py2docfx/venv/template/Lib/site-packages/sphinx/builders/changes.py +0 -159
  1735. py2docfx/venv/template/Lib/site-packages/sphinx/builders/dirhtml.py +0 -51
  1736. py2docfx/venv/template/Lib/site-packages/sphinx/builders/dummy.py +0 -46
  1737. py2docfx/venv/template/Lib/site-packages/sphinx/builders/epub3.py +0 -293
  1738. py2docfx/venv/template/Lib/site-packages/sphinx/builders/gettext.py +0 -306
  1739. py2docfx/venv/template/Lib/site-packages/sphinx/builders/html/__init__.py +0 -1419
  1740. py2docfx/venv/template/Lib/site-packages/sphinx/builders/html/transforms.py +0 -84
  1741. py2docfx/venv/template/Lib/site-packages/sphinx/builders/latex/__init__.py +0 -546
  1742. py2docfx/venv/template/Lib/site-packages/sphinx/builders/latex/constants.py +0 -210
  1743. py2docfx/venv/template/Lib/site-packages/sphinx/builders/latex/nodes.py +0 -37
  1744. py2docfx/venv/template/Lib/site-packages/sphinx/builders/latex/theming.py +0 -132
  1745. py2docfx/venv/template/Lib/site-packages/sphinx/builders/latex/transforms.py +0 -632
  1746. py2docfx/venv/template/Lib/site-packages/sphinx/builders/latex/util.py +0 -48
  1747. py2docfx/venv/template/Lib/site-packages/sphinx/builders/linkcheck.py +0 -598
  1748. py2docfx/venv/template/Lib/site-packages/sphinx/builders/manpage.py +0 -125
  1749. py2docfx/venv/template/Lib/site-packages/sphinx/builders/singlehtml.py +0 -194
  1750. py2docfx/venv/template/Lib/site-packages/sphinx/builders/texinfo.py +0 -224
  1751. py2docfx/venv/template/Lib/site-packages/sphinx/builders/text.py +0 -89
  1752. py2docfx/venv/template/Lib/site-packages/sphinx/builders/xml.py +0 -117
  1753. py2docfx/venv/template/Lib/site-packages/sphinx/cmd/__init__.py +0 -1
  1754. py2docfx/venv/template/Lib/site-packages/sphinx/cmd/build.py +0 -324
  1755. py2docfx/venv/template/Lib/site-packages/sphinx/cmd/make_mode.py +0 -161
  1756. py2docfx/venv/template/Lib/site-packages/sphinx/cmd/quickstart.py +0 -609
  1757. py2docfx/venv/template/Lib/site-packages/sphinx/config.py +0 -520
  1758. py2docfx/venv/template/Lib/site-packages/sphinx/deprecation.py +0 -83
  1759. py2docfx/venv/template/Lib/site-packages/sphinx/directives/__init__.py +0 -340
  1760. py2docfx/venv/template/Lib/site-packages/sphinx/directives/code.py +0 -483
  1761. py2docfx/venv/template/Lib/site-packages/sphinx/directives/other.py +0 -393
  1762. py2docfx/venv/template/Lib/site-packages/sphinx/directives/patches.py +0 -189
  1763. py2docfx/venv/template/Lib/site-packages/sphinx/domains/__init__.py +0 -403
  1764. py2docfx/venv/template/Lib/site-packages/sphinx/domains/c.py +0 -3880
  1765. py2docfx/venv/template/Lib/site-packages/sphinx/domains/changeset.py +0 -160
  1766. py2docfx/venv/template/Lib/site-packages/sphinx/domains/citation.py +0 -153
  1767. py2docfx/venv/template/Lib/site-packages/sphinx/domains/cpp.py +0 -8162
  1768. py2docfx/venv/template/Lib/site-packages/sphinx/domains/index.py +0 -122
  1769. py2docfx/venv/template/Lib/site-packages/sphinx/domains/javascript.py +0 -499
  1770. py2docfx/venv/template/Lib/site-packages/sphinx/domains/math.py +0 -150
  1771. py2docfx/venv/template/Lib/site-packages/sphinx/domains/python.py +0 -1521
  1772. py2docfx/venv/template/Lib/site-packages/sphinx/domains/rst.py +0 -303
  1773. py2docfx/venv/template/Lib/site-packages/sphinx/domains/std.py +0 -1155
  1774. py2docfx/venv/template/Lib/site-packages/sphinx/environment/__init__.py +0 -730
  1775. py2docfx/venv/template/Lib/site-packages/sphinx/environment/adapters/__init__.py +0 -1
  1776. py2docfx/venv/template/Lib/site-packages/sphinx/environment/adapters/asset.py +0 -15
  1777. py2docfx/venv/template/Lib/site-packages/sphinx/environment/adapters/indexentries.py +0 -172
  1778. py2docfx/venv/template/Lib/site-packages/sphinx/environment/adapters/toctree.py +0 -340
  1779. py2docfx/venv/template/Lib/site-packages/sphinx/environment/collectors/__init__.py +0 -73
  1780. py2docfx/venv/template/Lib/site-packages/sphinx/environment/collectors/asset.py +0 -141
  1781. py2docfx/venv/template/Lib/site-packages/sphinx/environment/collectors/dependencies.py +0 -54
  1782. py2docfx/venv/template/Lib/site-packages/sphinx/environment/collectors/metadata.py +0 -68
  1783. py2docfx/venv/template/Lib/site-packages/sphinx/environment/collectors/title.py +0 -59
  1784. py2docfx/venv/template/Lib/site-packages/sphinx/environment/collectors/toctree.py +0 -350
  1785. py2docfx/venv/template/Lib/site-packages/sphinx/errors.py +0 -127
  1786. py2docfx/venv/template/Lib/site-packages/sphinx/events.py +0 -120
  1787. py2docfx/venv/template/Lib/site-packages/sphinx/ext/__init__.py +0 -1
  1788. py2docfx/venv/template/Lib/site-packages/sphinx/ext/apidoc.py +0 -470
  1789. py2docfx/venv/template/Lib/site-packages/sphinx/ext/autodoc/__init__.py +0 -2793
  1790. py2docfx/venv/template/Lib/site-packages/sphinx/ext/autodoc/directive.py +0 -148
  1791. py2docfx/venv/template/Lib/site-packages/sphinx/ext/autodoc/importer.py +0 -307
  1792. py2docfx/venv/template/Lib/site-packages/sphinx/ext/autodoc/mock.py +0 -195
  1793. py2docfx/venv/template/Lib/site-packages/sphinx/ext/autodoc/preserve_defaults.py +0 -124
  1794. py2docfx/venv/template/Lib/site-packages/sphinx/ext/autodoc/type_comment.py +0 -131
  1795. py2docfx/venv/template/Lib/site-packages/sphinx/ext/autodoc/typehints.py +0 -216
  1796. py2docfx/venv/template/Lib/site-packages/sphinx/ext/autosectionlabel.py +0 -66
  1797. py2docfx/venv/template/Lib/site-packages/sphinx/ext/autosummary/__init__.py +0 -837
  1798. py2docfx/venv/template/Lib/site-packages/sphinx/ext/autosummary/generate.py +0 -646
  1799. py2docfx/venv/template/Lib/site-packages/sphinx/ext/coverage.py +0 -315
  1800. py2docfx/venv/template/Lib/site-packages/sphinx/ext/doctest.py +0 -561
  1801. py2docfx/venv/template/Lib/site-packages/sphinx/ext/duration.py +0 -90
  1802. py2docfx/venv/template/Lib/site-packages/sphinx/ext/extlinks.py +0 -120
  1803. py2docfx/venv/template/Lib/site-packages/sphinx/ext/githubpages.py +0 -31
  1804. py2docfx/venv/template/Lib/site-packages/sphinx/ext/graphviz.py +0 -416
  1805. py2docfx/venv/template/Lib/site-packages/sphinx/ext/ifconfig.py +0 -78
  1806. py2docfx/venv/template/Lib/site-packages/sphinx/ext/imgconverter.py +0 -92
  1807. py2docfx/venv/template/Lib/site-packages/sphinx/ext/imgmath.py +0 -390
  1808. py2docfx/venv/template/Lib/site-packages/sphinx/ext/inheritance_diagram.py +0 -474
  1809. py2docfx/venv/template/Lib/site-packages/sphinx/ext/intersphinx.py +0 -684
  1810. py2docfx/venv/template/Lib/site-packages/sphinx/ext/linkcode.py +0 -73
  1811. py2docfx/venv/template/Lib/site-packages/sphinx/ext/mathjax.py +0 -122
  1812. py2docfx/venv/template/Lib/site-packages/sphinx/ext/napoleon/__init__.py +0 -474
  1813. py2docfx/venv/template/Lib/site-packages/sphinx/ext/napoleon/docstring.py +0 -1356
  1814. py2docfx/venv/template/Lib/site-packages/sphinx/ext/napoleon/iterators.py +0 -235
  1815. py2docfx/venv/template/Lib/site-packages/sphinx/ext/todo.py +0 -243
  1816. py2docfx/venv/template/Lib/site-packages/sphinx/ext/viewcode.py +0 -341
  1817. py2docfx/venv/template/Lib/site-packages/sphinx/extension.py +0 -82
  1818. py2docfx/venv/template/Lib/site-packages/sphinx/highlighting.py +0 -184
  1819. py2docfx/venv/template/Lib/site-packages/sphinx/io.py +0 -221
  1820. py2docfx/venv/template/Lib/site-packages/sphinx/jinja2glue.py +0 -217
  1821. py2docfx/venv/template/Lib/site-packages/sphinx/locale/__init__.py +0 -261
  1822. py2docfx/venv/template/Lib/site-packages/sphinx/parsers.py +0 -96
  1823. py2docfx/venv/template/Lib/site-packages/sphinx/project.py +0 -94
  1824. py2docfx/venv/template/Lib/site-packages/sphinx/pycode/__init__.py +0 -171
  1825. py2docfx/venv/template/Lib/site-packages/sphinx/pycode/ast.py +0 -211
  1826. py2docfx/venv/template/Lib/site-packages/sphinx/pycode/parser.py +0 -573
  1827. py2docfx/venv/template/Lib/site-packages/sphinx/pygments_styles.py +0 -87
  1828. py2docfx/venv/template/Lib/site-packages/sphinx/registry.py +0 -513
  1829. py2docfx/venv/template/Lib/site-packages/sphinx/roles.py +0 -428
  1830. py2docfx/venv/template/Lib/site-packages/sphinx/search/__init__.py +0 -593
  1831. py2docfx/venv/template/Lib/site-packages/sphinx/search/da.py +0 -120
  1832. py2docfx/venv/template/Lib/site-packages/sphinx/search/de.py +0 -303
  1833. py2docfx/venv/template/Lib/site-packages/sphinx/search/en.py +0 -220
  1834. py2docfx/venv/template/Lib/site-packages/sphinx/search/es.py +0 -363
  1835. py2docfx/venv/template/Lib/site-packages/sphinx/search/fi.py +0 -113
  1836. py2docfx/venv/template/Lib/site-packages/sphinx/search/fr.py +0 -199
  1837. py2docfx/venv/template/Lib/site-packages/sphinx/search/hu.py +0 -226
  1838. py2docfx/venv/template/Lib/site-packages/sphinx/search/it.py +0 -316
  1839. py2docfx/venv/template/Lib/site-packages/sphinx/search/ja.py +0 -536
  1840. py2docfx/venv/template/Lib/site-packages/sphinx/search/nl.py +0 -127
  1841. py2docfx/venv/template/Lib/site-packages/sphinx/search/no.py +0 -202
  1842. py2docfx/venv/template/Lib/site-packages/sphinx/search/pt.py +0 -261
  1843. py2docfx/venv/template/Lib/site-packages/sphinx/search/ro.py +0 -22
  1844. py2docfx/venv/template/Lib/site-packages/sphinx/search/ru.py +0 -251
  1845. py2docfx/venv/template/Lib/site-packages/sphinx/search/sv.py +0 -140
  1846. py2docfx/venv/template/Lib/site-packages/sphinx/search/tr.py +0 -22
  1847. py2docfx/venv/template/Lib/site-packages/sphinx/search/zh.py +0 -262
  1848. py2docfx/venv/template/Lib/site-packages/sphinx/setup_command.py +0 -192
  1849. py2docfx/venv/template/Lib/site-packages/sphinx/testing/__init__.py +0 -7
  1850. py2docfx/venv/template/Lib/site-packages/sphinx/testing/comparer.py +0 -97
  1851. py2docfx/venv/template/Lib/site-packages/sphinx/testing/fixtures.py +0 -250
  1852. py2docfx/venv/template/Lib/site-packages/sphinx/testing/path.py +0 -210
  1853. py2docfx/venv/template/Lib/site-packages/sphinx/testing/restructuredtext.py +0 -27
  1854. py2docfx/venv/template/Lib/site-packages/sphinx/testing/util.py +0 -206
  1855. py2docfx/venv/template/Lib/site-packages/sphinx/theming.py +0 -230
  1856. py2docfx/venv/template/Lib/site-packages/sphinx/transforms/__init__.py +0 -419
  1857. py2docfx/venv/template/Lib/site-packages/sphinx/transforms/compact_bullet_list.py +0 -88
  1858. py2docfx/venv/template/Lib/site-packages/sphinx/transforms/i18n.py +0 -528
  1859. py2docfx/venv/template/Lib/site-packages/sphinx/transforms/post_transforms/__init__.py +0 -279
  1860. py2docfx/venv/template/Lib/site-packages/sphinx/transforms/post_transforms/code.py +0 -136
  1861. py2docfx/venv/template/Lib/site-packages/sphinx/transforms/post_transforms/images.py +0 -271
  1862. py2docfx/venv/template/Lib/site-packages/sphinx/transforms/references.py +0 -47
  1863. py2docfx/venv/template/Lib/site-packages/sphinx/util/__init__.py +0 -407
  1864. py2docfx/venv/template/Lib/site-packages/sphinx/util/build_phase.py +0 -12
  1865. py2docfx/venv/template/Lib/site-packages/sphinx/util/cfamily.py +0 -462
  1866. py2docfx/venv/template/Lib/site-packages/sphinx/util/console.py +0 -129
  1867. py2docfx/venv/template/Lib/site-packages/sphinx/util/display.py +0 -87
  1868. py2docfx/venv/template/Lib/site-packages/sphinx/util/docfields.py +0 -368
  1869. py2docfx/venv/template/Lib/site-packages/sphinx/util/docstrings.py +0 -88
  1870. py2docfx/venv/template/Lib/site-packages/sphinx/util/docutils.py +0 -621
  1871. py2docfx/venv/template/Lib/site-packages/sphinx/util/exceptions.py +0 -67
  1872. py2docfx/venv/template/Lib/site-packages/sphinx/util/fileutil.py +0 -97
  1873. py2docfx/venv/template/Lib/site-packages/sphinx/util/http_date.py +0 -20
  1874. py2docfx/venv/template/Lib/site-packages/sphinx/util/i18n.py +0 -262
  1875. py2docfx/venv/template/Lib/site-packages/sphinx/util/images.py +0 -113
  1876. py2docfx/venv/template/Lib/site-packages/sphinx/util/inspect.py +0 -811
  1877. py2docfx/venv/template/Lib/site-packages/sphinx/util/inventory.py +0 -170
  1878. py2docfx/venv/template/Lib/site-packages/sphinx/util/jsdump.py +0 -201
  1879. py2docfx/venv/template/Lib/site-packages/sphinx/util/logging.py +0 -603
  1880. py2docfx/venv/template/Lib/site-packages/sphinx/util/matching.py +0 -166
  1881. py2docfx/venv/template/Lib/site-packages/sphinx/util/math.py +0 -58
  1882. py2docfx/venv/template/Lib/site-packages/sphinx/util/nodes.py +0 -629
  1883. py2docfx/venv/template/Lib/site-packages/sphinx/util/osutil.py +0 -221
  1884. py2docfx/venv/template/Lib/site-packages/sphinx/util/parallel.py +0 -151
  1885. py2docfx/venv/template/Lib/site-packages/sphinx/util/png.py +0 -43
  1886. py2docfx/venv/template/Lib/site-packages/sphinx/util/requests.py +0 -92
  1887. py2docfx/venv/template/Lib/site-packages/sphinx/util/rst.py +0 -110
  1888. py2docfx/venv/template/Lib/site-packages/sphinx/util/stemmer/__init__.py +0 -62
  1889. py2docfx/venv/template/Lib/site-packages/sphinx/util/tags.py +0 -81
  1890. py2docfx/venv/template/Lib/site-packages/sphinx/util/template.py +0 -132
  1891. py2docfx/venv/template/Lib/site-packages/sphinx/util/texescape.py +0 -153
  1892. py2docfx/venv/template/Lib/site-packages/sphinx/util/typing.py +0 -352
  1893. py2docfx/venv/template/Lib/site-packages/sphinx/versioning.py +0 -176
  1894. py2docfx/venv/template/Lib/site-packages/sphinx/writers/__init__.py +0 -1
  1895. py2docfx/venv/template/Lib/site-packages/sphinx/writers/_html4.py +0 -858
  1896. py2docfx/venv/template/Lib/site-packages/sphinx/writers/html.py +0 -45
  1897. py2docfx/venv/template/Lib/site-packages/sphinx/writers/html5.py +0 -824
  1898. py2docfx/venv/template/Lib/site-packages/sphinx/writers/latex.py +0 -2116
  1899. py2docfx/venv/template/Lib/site-packages/sphinx/writers/manpage.py +0 -459
  1900. py2docfx/venv/template/Lib/site-packages/sphinx/writers/texinfo.py +0 -1562
  1901. py2docfx/venv/template/Lib/site-packages/sphinx/writers/text.py +0 -1182
  1902. py2docfx/venv/template/Lib/site-packages/sphinx/writers/xml.py +0 -49
  1903. py2docfx/venv/template/Lib/site-packages/sphinxcontrib/applehelp/__init__.py +0 -276
  1904. py2docfx/venv/template/Lib/site-packages/sphinxcontrib/devhelp/__init__.py +0 -143
  1905. py2docfx/venv/template/Lib/site-packages/sphinxcontrib/htmlhelp/__init__.py +0 -340
  1906. py2docfx/venv/template/Lib/site-packages/sphinxcontrib/jsmath/__init__.py +0 -92
  1907. py2docfx/venv/template/Lib/site-packages/sphinxcontrib/jsmath/version.py +0 -11
  1908. py2docfx/venv/template/Lib/site-packages/sphinxcontrib/qthelp/__init__.py +0 -266
  1909. py2docfx/venv/template/Lib/site-packages/sphinxcontrib/serializinghtml/__init__.py +0 -180
  1910. py2docfx/venv/template/Lib/site-packages/sphinxcontrib/serializinghtml/jsonimpl.py +0 -33
  1911. py2docfx/venv/template/Lib/site-packages/urllib3/__init__.py +0 -211
  1912. py2docfx/venv/template/Lib/site-packages/urllib3/_base_connection.py +0 -172
  1913. py2docfx/venv/template/Lib/site-packages/urllib3/_collections.py +0 -483
  1914. py2docfx/venv/template/Lib/site-packages/urllib3/_request_methods.py +0 -279
  1915. py2docfx/venv/template/Lib/site-packages/urllib3/_version.py +0 -4
  1916. py2docfx/venv/template/Lib/site-packages/urllib3/connection.py +0 -929
  1917. py2docfx/venv/template/Lib/site-packages/urllib3/connectionpool.py +0 -1182
  1918. py2docfx/venv/template/Lib/site-packages/urllib3/contrib/__init__.py +0 -0
  1919. py2docfx/venv/template/Lib/site-packages/urllib3/contrib/emscripten/__init__.py +0 -16
  1920. py2docfx/venv/template/Lib/site-packages/urllib3/contrib/emscripten/connection.py +0 -254
  1921. py2docfx/venv/template/Lib/site-packages/urllib3/contrib/emscripten/fetch.py +0 -418
  1922. py2docfx/venv/template/Lib/site-packages/urllib3/contrib/emscripten/request.py +0 -22
  1923. py2docfx/venv/template/Lib/site-packages/urllib3/contrib/emscripten/response.py +0 -285
  1924. py2docfx/venv/template/Lib/site-packages/urllib3/contrib/pyopenssl.py +0 -548
  1925. py2docfx/venv/template/Lib/site-packages/urllib3/contrib/socks.py +0 -228
  1926. py2docfx/venv/template/Lib/site-packages/urllib3/exceptions.py +0 -321
  1927. py2docfx/venv/template/Lib/site-packages/urllib3/fields.py +0 -341
  1928. py2docfx/venv/template/Lib/site-packages/urllib3/filepost.py +0 -89
  1929. py2docfx/venv/template/Lib/site-packages/urllib3/http2.py +0 -230
  1930. py2docfx/venv/template/Lib/site-packages/urllib3/poolmanager.py +0 -637
  1931. py2docfx/venv/template/Lib/site-packages/urllib3/response.py +0 -1265
  1932. py2docfx/venv/template/Lib/site-packages/urllib3/util/__init__.py +0 -42
  1933. py2docfx/venv/template/Lib/site-packages/urllib3/util/connection.py +0 -137
  1934. py2docfx/venv/template/Lib/site-packages/urllib3/util/proxy.py +0 -43
  1935. py2docfx/venv/template/Lib/site-packages/urllib3/util/request.py +0 -256
  1936. py2docfx/venv/template/Lib/site-packages/urllib3/util/response.py +0 -101
  1937. py2docfx/venv/template/Lib/site-packages/urllib3/util/retry.py +0 -533
  1938. py2docfx/venv/template/Lib/site-packages/urllib3/util/ssl_.py +0 -509
  1939. py2docfx/venv/template/Lib/site-packages/urllib3/util/ssl_match_hostname.py +0 -159
  1940. py2docfx/venv/template/Lib/site-packages/urllib3/util/ssltransport.py +0 -279
  1941. py2docfx/venv/template/Lib/site-packages/urllib3/util/timeout.py +0 -275
  1942. py2docfx/venv/template/Lib/site-packages/urllib3/util/url.py +0 -471
  1943. py2docfx/venv/template/Lib/site-packages/urllib3/util/util.py +0 -42
  1944. py2docfx/venv/template/Lib/site-packages/urllib3/util/wait.py +0 -124
  1945. py2docfx/venv/template/Lib/site-packages/wheel/__init__.py +0 -3
  1946. py2docfx/venv/template/Lib/site-packages/wheel/__main__.py +0 -23
  1947. py2docfx/venv/template/Lib/site-packages/wheel/_bdist_wheel.py +0 -604
  1948. py2docfx/venv/template/Lib/site-packages/wheel/_setuptools_logging.py +0 -26
  1949. py2docfx/venv/template/Lib/site-packages/wheel/bdist_wheel.py +0 -11
  1950. py2docfx/venv/template/Lib/site-packages/wheel/cli/__init__.py +0 -155
  1951. py2docfx/venv/template/Lib/site-packages/wheel/cli/convert.py +0 -273
  1952. py2docfx/venv/template/Lib/site-packages/wheel/cli/pack.py +0 -85
  1953. py2docfx/venv/template/Lib/site-packages/wheel/cli/tags.py +0 -139
  1954. py2docfx/venv/template/Lib/site-packages/wheel/cli/unpack.py +0 -30
  1955. py2docfx/venv/template/Lib/site-packages/wheel/macosx_libfile.py +0 -482
  1956. py2docfx/venv/template/Lib/site-packages/wheel/metadata.py +0 -183
  1957. py2docfx/venv/template/Lib/site-packages/wheel/util.py +0 -26
  1958. py2docfx/venv/template/Lib/site-packages/wheel/vendored/__init__.py +0 -0
  1959. py2docfx/venv/template/Lib/site-packages/wheel/vendored/packaging/__init__.py +0 -0
  1960. py2docfx/venv/template/Lib/site-packages/wheel/vendored/packaging/_elffile.py +0 -108
  1961. py2docfx/venv/template/Lib/site-packages/wheel/vendored/packaging/_manylinux.py +0 -260
  1962. py2docfx/venv/template/Lib/site-packages/wheel/vendored/packaging/_musllinux.py +0 -83
  1963. py2docfx/venv/template/Lib/site-packages/wheel/vendored/packaging/_parser.py +0 -356
  1964. py2docfx/venv/template/Lib/site-packages/wheel/vendored/packaging/_structures.py +0 -61
  1965. py2docfx/venv/template/Lib/site-packages/wheel/vendored/packaging/_tokenizer.py +0 -192
  1966. py2docfx/venv/template/Lib/site-packages/wheel/vendored/packaging/markers.py +0 -253
  1967. py2docfx/venv/template/Lib/site-packages/wheel/vendored/packaging/requirements.py +0 -90
  1968. py2docfx/venv/template/Lib/site-packages/wheel/vendored/packaging/specifiers.py +0 -1011
  1969. py2docfx/venv/template/Lib/site-packages/wheel/vendored/packaging/tags.py +0 -571
  1970. py2docfx/venv/template/Lib/site-packages/wheel/vendored/packaging/utils.py +0 -172
  1971. py2docfx/venv/template/Lib/site-packages/wheel/vendored/packaging/version.py +0 -561
  1972. py2docfx/venv/template/Lib/site-packages/wheel/wheelfile.py +0 -227
  1973. py2docfx/venv/template/Lib/site-packages/yaml/__init__.py +0 -390
  1974. py2docfx/venv/template/Lib/site-packages/yaml/composer.py +0 -139
  1975. py2docfx/venv/template/Lib/site-packages/yaml/constructor.py +0 -748
  1976. py2docfx/venv/template/Lib/site-packages/yaml/cyaml.py +0 -101
  1977. py2docfx/venv/template/Lib/site-packages/yaml/dumper.py +0 -62
  1978. py2docfx/venv/template/Lib/site-packages/yaml/emitter.py +0 -1137
  1979. py2docfx/venv/template/Lib/site-packages/yaml/error.py +0 -75
  1980. py2docfx/venv/template/Lib/site-packages/yaml/events.py +0 -86
  1981. py2docfx/venv/template/Lib/site-packages/yaml/loader.py +0 -63
  1982. py2docfx/venv/template/Lib/site-packages/yaml/nodes.py +0 -49
  1983. py2docfx/venv/template/Lib/site-packages/yaml/parser.py +0 -589
  1984. py2docfx/venv/template/Lib/site-packages/yaml/reader.py +0 -185
  1985. py2docfx/venv/template/Lib/site-packages/yaml/representer.py +0 -389
  1986. py2docfx/venv/template/Lib/site-packages/yaml/resolver.py +0 -227
  1987. py2docfx/venv/template/Lib/site-packages/yaml/scanner.py +0 -1435
  1988. py2docfx/venv/template/Lib/site-packages/yaml/serializer.py +0 -111
  1989. py2docfx/venv/template/Lib/site-packages/yaml/tokens.py +0 -104
  1990. py2docfx/venv/template/Scripts/rst2html.py +0 -23
  1991. py2docfx/venv/template/Scripts/rst2html4.py +0 -26
  1992. py2docfx/venv/template/Scripts/rst2html5.py +0 -33
  1993. py2docfx/venv/template/Scripts/rst2latex.py +0 -26
  1994. py2docfx/venv/template/Scripts/rst2man.py +0 -27
  1995. py2docfx/venv/template/Scripts/rst2odt.py +0 -28
  1996. py2docfx/venv/template/Scripts/rst2odt_prepstyles.py +0 -65
  1997. py2docfx/venv/template/Scripts/rst2pseudoxml.py +0 -23
  1998. py2docfx/venv/template/Scripts/rst2s5.py +0 -24
  1999. py2docfx/venv/template/Scripts/rst2xetex.py +0 -27
  2000. py2docfx/venv/template/Scripts/rst2xml.py +0 -23
  2001. py2docfx/venv/template/Scripts/rstpep2html.py +0 -25
  2002. py2docfx-0.1.11.dev1827111.dist-info/RECORD +0 -3712
  2003. {py2docfx-0.1.11.dev1827111.dist-info → py2docfx-0.1.11.dev1859874.dist-info}/WHEEL +0 -0
  2004. {py2docfx-0.1.11.dev1827111.dist-info → py2docfx-0.1.11.dev1859874.dist-info}/top_level.txt +0 -0
@@ -1,1925 +0,0 @@
1
- """
2
- babel.dates
3
- ~~~~~~~~~~~
4
-
5
- Locale dependent formatting and parsing of dates and times.
6
-
7
- The default locale for the functions in this module is determined by the
8
- following environment variables, in that order:
9
-
10
- * ``LC_TIME``,
11
- * ``LC_ALL``, and
12
- * ``LANG``
13
-
14
- :copyright: (c) 2013-2024 by the Babel Team.
15
- :license: BSD, see LICENSE for more details.
16
- """
17
-
18
- from __future__ import annotations
19
-
20
- import re
21
- import warnings
22
- from functools import lru_cache
23
- from typing import TYPE_CHECKING, SupportsInt
24
-
25
- try:
26
- import pytz
27
- except ModuleNotFoundError:
28
- pytz = None
29
- import zoneinfo
30
-
31
- import datetime
32
- from collections.abc import Iterable
33
-
34
- from babel import localtime
35
- from babel.core import Locale, default_locale, get_global
36
- from babel.localedata import LocaleDataDict
37
-
38
- if TYPE_CHECKING:
39
- from typing_extensions import Literal, TypeAlias
40
- _Instant: TypeAlias = datetime.date | datetime.time | float | None
41
- _PredefinedTimeFormat: TypeAlias = Literal['full', 'long', 'medium', 'short']
42
- _Context: TypeAlias = Literal['format', 'stand-alone']
43
- _DtOrTzinfo: TypeAlias = datetime.datetime | datetime.tzinfo | str | int | datetime.time | None
44
-
45
- # "If a given short metazone form is known NOT to be understood in a given
46
- # locale and the parent locale has this value such that it would normally
47
- # be inherited, the inheritance of this value can be explicitly disabled by
48
- # use of the 'no inheritance marker' as the value, which is 3 simultaneous [sic]
49
- # empty set characters ( U+2205 )."
50
- # - https://www.unicode.org/reports/tr35/tr35-dates.html#Metazone_Names
51
-
52
- NO_INHERITANCE_MARKER = '\u2205\u2205\u2205'
53
-
54
- UTC = datetime.timezone.utc
55
- LOCALTZ = localtime.LOCALTZ
56
-
57
- LC_TIME = default_locale('LC_TIME')
58
-
59
-
60
- def _localize(tz: datetime.tzinfo, dt: datetime.datetime) -> datetime.datetime:
61
- # Support localizing with both pytz and zoneinfo tzinfos
62
- # nothing to do
63
- if dt.tzinfo is tz:
64
- return dt
65
-
66
- if hasattr(tz, 'localize'): # pytz
67
- return tz.localize(dt)
68
-
69
- if dt.tzinfo is None:
70
- # convert naive to localized
71
- return dt.replace(tzinfo=tz)
72
-
73
- # convert timezones
74
- return dt.astimezone(tz)
75
-
76
-
77
- def _get_dt_and_tzinfo(dt_or_tzinfo: _DtOrTzinfo) -> tuple[datetime.datetime | None, datetime.tzinfo]:
78
- """
79
- Parse a `dt_or_tzinfo` value into a datetime and a tzinfo.
80
-
81
- See the docs for this function's callers for semantics.
82
-
83
- :rtype: tuple[datetime, tzinfo]
84
- """
85
- if dt_or_tzinfo is None:
86
- dt = datetime.datetime.now()
87
- tzinfo = LOCALTZ
88
- elif isinstance(dt_or_tzinfo, str):
89
- dt = None
90
- tzinfo = get_timezone(dt_or_tzinfo)
91
- elif isinstance(dt_or_tzinfo, int):
92
- dt = None
93
- tzinfo = UTC
94
- elif isinstance(dt_or_tzinfo, (datetime.datetime, datetime.time)):
95
- dt = _get_datetime(dt_or_tzinfo)
96
- tzinfo = dt.tzinfo if dt.tzinfo is not None else UTC
97
- else:
98
- dt = None
99
- tzinfo = dt_or_tzinfo
100
- return dt, tzinfo
101
-
102
-
103
- def _get_tz_name(dt_or_tzinfo: _DtOrTzinfo) -> str:
104
- """
105
- Get the timezone name out of a time, datetime, or tzinfo object.
106
-
107
- :rtype: str
108
- """
109
- dt, tzinfo = _get_dt_and_tzinfo(dt_or_tzinfo)
110
- if hasattr(tzinfo, 'zone'): # pytz object
111
- return tzinfo.zone
112
- elif hasattr(tzinfo, 'key') and tzinfo.key is not None: # ZoneInfo object
113
- return tzinfo.key
114
- else:
115
- return tzinfo.tzname(dt or datetime.datetime.now(UTC))
116
-
117
-
118
- def _get_datetime(instant: _Instant) -> datetime.datetime:
119
- """
120
- Get a datetime out of an "instant" (date, time, datetime, number).
121
-
122
- .. warning:: The return values of this function may depend on the system clock.
123
-
124
- If the instant is None, the current moment is used.
125
- If the instant is a time, it's augmented with today's date.
126
-
127
- Dates are converted to naive datetimes with midnight as the time component.
128
-
129
- >>> from datetime import date, datetime
130
- >>> _get_datetime(date(2015, 1, 1))
131
- datetime.datetime(2015, 1, 1, 0, 0)
132
-
133
- UNIX timestamps are converted to datetimes.
134
-
135
- >>> _get_datetime(1400000000)
136
- datetime.datetime(2014, 5, 13, 16, 53, 20)
137
-
138
- Other values are passed through as-is.
139
-
140
- >>> x = datetime(2015, 1, 1)
141
- >>> _get_datetime(x) is x
142
- True
143
-
144
- :param instant: date, time, datetime, integer, float or None
145
- :type instant: date|time|datetime|int|float|None
146
- :return: a datetime
147
- :rtype: datetime
148
- """
149
- if instant is None:
150
- return datetime.datetime.now(UTC).replace(tzinfo=None)
151
- elif isinstance(instant, (int, float)):
152
- return datetime.datetime.fromtimestamp(instant, UTC).replace(tzinfo=None)
153
- elif isinstance(instant, datetime.time):
154
- return datetime.datetime.combine(datetime.date.today(), instant)
155
- elif isinstance(instant, datetime.date) and not isinstance(instant, datetime.datetime):
156
- return datetime.datetime.combine(instant, datetime.time())
157
- # TODO (3.x): Add an assertion/type check for this fallthrough branch:
158
- return instant
159
-
160
-
161
- def _ensure_datetime_tzinfo(dt: datetime.datetime, tzinfo: datetime.tzinfo | None = None) -> datetime.datetime:
162
- """
163
- Ensure the datetime passed has an attached tzinfo.
164
-
165
- If the datetime is tz-naive to begin with, UTC is attached.
166
-
167
- If a tzinfo is passed in, the datetime is normalized to that timezone.
168
-
169
- >>> from datetime import datetime
170
- >>> _get_tz_name(_ensure_datetime_tzinfo(datetime(2015, 1, 1)))
171
- 'UTC'
172
-
173
- >>> tz = get_timezone("Europe/Stockholm")
174
- >>> _ensure_datetime_tzinfo(datetime(2015, 1, 1, 13, 15, tzinfo=UTC), tzinfo=tz).hour
175
- 14
176
-
177
- :param datetime: Datetime to augment.
178
- :param tzinfo: optional tzinfo
179
- :return: datetime with tzinfo
180
- :rtype: datetime
181
- """
182
- if dt.tzinfo is None:
183
- dt = dt.replace(tzinfo=UTC)
184
- if tzinfo is not None:
185
- dt = dt.astimezone(get_timezone(tzinfo))
186
- if hasattr(tzinfo, 'normalize'): # pytz
187
- dt = tzinfo.normalize(dt)
188
- return dt
189
-
190
-
191
- def _get_time(
192
- time: datetime.time | datetime.datetime | None,
193
- tzinfo: datetime.tzinfo | None = None,
194
- ) -> datetime.time:
195
- """
196
- Get a timezoned time from a given instant.
197
-
198
- .. warning:: The return values of this function may depend on the system clock.
199
-
200
- :param time: time, datetime or None
201
- :rtype: time
202
- """
203
- if time is None:
204
- time = datetime.datetime.now(UTC)
205
- elif isinstance(time, (int, float)):
206
- time = datetime.datetime.fromtimestamp(time, UTC)
207
-
208
- if time.tzinfo is None:
209
- time = time.replace(tzinfo=UTC)
210
-
211
- if isinstance(time, datetime.datetime):
212
- if tzinfo is not None:
213
- time = time.astimezone(tzinfo)
214
- if hasattr(tzinfo, 'normalize'): # pytz
215
- time = tzinfo.normalize(time)
216
- time = time.timetz()
217
- elif tzinfo is not None:
218
- time = time.replace(tzinfo=tzinfo)
219
- return time
220
-
221
-
222
- def get_timezone(zone: str | datetime.tzinfo | None = None) -> datetime.tzinfo:
223
- """Looks up a timezone by name and returns it. The timezone object
224
- returned comes from ``pytz`` or ``zoneinfo``, whichever is available.
225
- It corresponds to the `tzinfo` interface and can be used with all of
226
- the functions of Babel that operate with dates.
227
-
228
- If a timezone is not known a :exc:`LookupError` is raised. If `zone`
229
- is ``None`` a local zone object is returned.
230
-
231
- :param zone: the name of the timezone to look up. If a timezone object
232
- itself is passed in, it's returned unchanged.
233
- """
234
- if zone is None:
235
- return LOCALTZ
236
- if not isinstance(zone, str):
237
- return zone
238
-
239
- if pytz:
240
- try:
241
- return pytz.timezone(zone)
242
- except pytz.UnknownTimeZoneError as e:
243
- exc = e
244
- else:
245
- assert zoneinfo
246
- try:
247
- return zoneinfo.ZoneInfo(zone)
248
- except zoneinfo.ZoneInfoNotFoundError as e:
249
- exc = e
250
-
251
- raise LookupError(f"Unknown timezone {zone}") from exc
252
-
253
-
254
- def get_period_names(width: Literal['abbreviated', 'narrow', 'wide'] = 'wide',
255
- context: _Context = 'stand-alone', locale: Locale | str | None = LC_TIME) -> LocaleDataDict:
256
- """Return the names for day periods (AM/PM) used by the locale.
257
-
258
- >>> get_period_names(locale='en_US')['am']
259
- u'AM'
260
-
261
- :param width: the width to use, one of "abbreviated", "narrow", or "wide"
262
- :param context: the context, either "format" or "stand-alone"
263
- :param locale: the `Locale` object, or a locale string
264
- """
265
- return Locale.parse(locale).day_periods[context][width]
266
-
267
-
268
- def get_day_names(width: Literal['abbreviated', 'narrow', 'short', 'wide'] = 'wide',
269
- context: _Context = 'format', locale: Locale | str | None = LC_TIME) -> LocaleDataDict:
270
- """Return the day names used by the locale for the specified format.
271
-
272
- >>> get_day_names('wide', locale='en_US')[1]
273
- u'Tuesday'
274
- >>> get_day_names('short', locale='en_US')[1]
275
- u'Tu'
276
- >>> get_day_names('abbreviated', locale='es')[1]
277
- u'mar'
278
- >>> get_day_names('narrow', context='stand-alone', locale='de_DE')[1]
279
- u'D'
280
-
281
- :param width: the width to use, one of "wide", "abbreviated", "short" or "narrow"
282
- :param context: the context, either "format" or "stand-alone"
283
- :param locale: the `Locale` object, or a locale string
284
- """
285
- return Locale.parse(locale).days[context][width]
286
-
287
-
288
- def get_month_names(width: Literal['abbreviated', 'narrow', 'wide'] = 'wide',
289
- context: _Context = 'format', locale: Locale | str | None = LC_TIME) -> LocaleDataDict:
290
- """Return the month names used by the locale for the specified format.
291
-
292
- >>> get_month_names('wide', locale='en_US')[1]
293
- u'January'
294
- >>> get_month_names('abbreviated', locale='es')[1]
295
- u'ene'
296
- >>> get_month_names('narrow', context='stand-alone', locale='de_DE')[1]
297
- u'J'
298
-
299
- :param width: the width to use, one of "wide", "abbreviated", or "narrow"
300
- :param context: the context, either "format" or "stand-alone"
301
- :param locale: the `Locale` object, or a locale string
302
- """
303
- return Locale.parse(locale).months[context][width]
304
-
305
-
306
- def get_quarter_names(width: Literal['abbreviated', 'narrow', 'wide'] = 'wide',
307
- context: _Context = 'format', locale: Locale | str | None = LC_TIME) -> LocaleDataDict:
308
- """Return the quarter names used by the locale for the specified format.
309
-
310
- >>> get_quarter_names('wide', locale='en_US')[1]
311
- u'1st quarter'
312
- >>> get_quarter_names('abbreviated', locale='de_DE')[1]
313
- u'Q1'
314
- >>> get_quarter_names('narrow', locale='de_DE')[1]
315
- u'1'
316
-
317
- :param width: the width to use, one of "wide", "abbreviated", or "narrow"
318
- :param context: the context, either "format" or "stand-alone"
319
- :param locale: the `Locale` object, or a locale string
320
- """
321
- return Locale.parse(locale).quarters[context][width]
322
-
323
-
324
- def get_era_names(width: Literal['abbreviated', 'narrow', 'wide'] = 'wide',
325
- locale: Locale | str | None = LC_TIME) -> LocaleDataDict:
326
- """Return the era names used by the locale for the specified format.
327
-
328
- >>> get_era_names('wide', locale='en_US')[1]
329
- u'Anno Domini'
330
- >>> get_era_names('abbreviated', locale='de_DE')[1]
331
- u'n. Chr.'
332
-
333
- :param width: the width to use, either "wide", "abbreviated", or "narrow"
334
- :param locale: the `Locale` object, or a locale string
335
- """
336
- return Locale.parse(locale).eras[width]
337
-
338
-
339
- def get_date_format(format: _PredefinedTimeFormat = 'medium', locale: Locale | str | None = LC_TIME) -> DateTimePattern:
340
- """Return the date formatting patterns used by the locale for the specified
341
- format.
342
-
343
- >>> get_date_format(locale='en_US')
344
- <DateTimePattern u'MMM d, y'>
345
- >>> get_date_format('full', locale='de_DE')
346
- <DateTimePattern u'EEEE, d. MMMM y'>
347
-
348
- :param format: the format to use, one of "full", "long", "medium", or
349
- "short"
350
- :param locale: the `Locale` object, or a locale string
351
- """
352
- return Locale.parse(locale).date_formats[format]
353
-
354
-
355
- def get_datetime_format(format: _PredefinedTimeFormat = 'medium', locale: Locale | str | None = LC_TIME) -> DateTimePattern:
356
- """Return the datetime formatting patterns used by the locale for the
357
- specified format.
358
-
359
- >>> get_datetime_format(locale='en_US')
360
- u'{1}, {0}'
361
-
362
- :param format: the format to use, one of "full", "long", "medium", or
363
- "short"
364
- :param locale: the `Locale` object, or a locale string
365
- """
366
- patterns = Locale.parse(locale).datetime_formats
367
- if format not in patterns:
368
- format = None
369
- return patterns[format]
370
-
371
-
372
- def get_time_format(format: _PredefinedTimeFormat = 'medium', locale: Locale | str | None = LC_TIME) -> DateTimePattern:
373
- """Return the time formatting patterns used by the locale for the specified
374
- format.
375
-
376
- >>> get_time_format(locale='en_US')
377
- <DateTimePattern u'h:mm:ss\u202fa'>
378
- >>> get_time_format('full', locale='de_DE')
379
- <DateTimePattern u'HH:mm:ss zzzz'>
380
-
381
- :param format: the format to use, one of "full", "long", "medium", or
382
- "short"
383
- :param locale: the `Locale` object, or a locale string
384
- """
385
- return Locale.parse(locale).time_formats[format]
386
-
387
-
388
- def get_timezone_gmt(
389
- datetime: _Instant = None,
390
- width: Literal['long', 'short', 'iso8601', 'iso8601_short'] = 'long',
391
- locale: Locale | str | None = LC_TIME,
392
- return_z: bool = False,
393
- ) -> str:
394
- """Return the timezone associated with the given `datetime` object formatted
395
- as string indicating the offset from GMT.
396
-
397
- >>> from datetime import datetime
398
- >>> dt = datetime(2007, 4, 1, 15, 30)
399
- >>> get_timezone_gmt(dt, locale='en')
400
- u'GMT+00:00'
401
- >>> get_timezone_gmt(dt, locale='en', return_z=True)
402
- 'Z'
403
- >>> get_timezone_gmt(dt, locale='en', width='iso8601_short')
404
- u'+00'
405
- >>> tz = get_timezone('America/Los_Angeles')
406
- >>> dt = _localize(tz, datetime(2007, 4, 1, 15, 30))
407
- >>> get_timezone_gmt(dt, locale='en')
408
- u'GMT-07:00'
409
- >>> get_timezone_gmt(dt, 'short', locale='en')
410
- u'-0700'
411
- >>> get_timezone_gmt(dt, locale='en', width='iso8601_short')
412
- u'-07'
413
-
414
- The long format depends on the locale, for example in France the acronym
415
- UTC string is used instead of GMT:
416
-
417
- >>> get_timezone_gmt(dt, 'long', locale='fr_FR')
418
- u'UTC-07:00'
419
-
420
- .. versionadded:: 0.9
421
-
422
- :param datetime: the ``datetime`` object; if `None`, the current date and
423
- time in UTC is used
424
- :param width: either "long" or "short" or "iso8601" or "iso8601_short"
425
- :param locale: the `Locale` object, or a locale string
426
- :param return_z: True or False; Function returns indicator "Z"
427
- when local time offset is 0
428
- """
429
- datetime = _ensure_datetime_tzinfo(_get_datetime(datetime))
430
- locale = Locale.parse(locale)
431
-
432
- offset = datetime.tzinfo.utcoffset(datetime)
433
- seconds = offset.days * 24 * 60 * 60 + offset.seconds
434
- hours, seconds = divmod(seconds, 3600)
435
- if return_z and hours == 0 and seconds == 0:
436
- return 'Z'
437
- elif seconds == 0 and width == 'iso8601_short':
438
- return '%+03d' % hours
439
- elif width == 'short' or width == 'iso8601_short':
440
- pattern = '%+03d%02d'
441
- elif width == 'iso8601':
442
- pattern = '%+03d:%02d'
443
- else:
444
- pattern = locale.zone_formats['gmt'] % '%+03d:%02d'
445
- return pattern % (hours, seconds // 60)
446
-
447
-
448
- def get_timezone_location(
449
- dt_or_tzinfo: _DtOrTzinfo = None,
450
- locale: Locale | str | None = LC_TIME,
451
- return_city: bool = False,
452
- ) -> str:
453
- """Return a representation of the given timezone using "location format".
454
-
455
- The result depends on both the local display name of the country and the
456
- city associated with the time zone:
457
-
458
- >>> tz = get_timezone('America/St_Johns')
459
- >>> print(get_timezone_location(tz, locale='de_DE'))
460
- Kanada (St. John’s) (Ortszeit)
461
- >>> print(get_timezone_location(tz, locale='en'))
462
- Canada (St. John’s) Time
463
- >>> print(get_timezone_location(tz, locale='en', return_city=True))
464
- St. John’s
465
- >>> tz = get_timezone('America/Mexico_City')
466
- >>> get_timezone_location(tz, locale='de_DE')
467
- u'Mexiko (Mexiko-Stadt) (Ortszeit)'
468
-
469
- If the timezone is associated with a country that uses only a single
470
- timezone, just the localized country name is returned:
471
-
472
- >>> tz = get_timezone('Europe/Berlin')
473
- >>> get_timezone_name(tz, locale='de_DE')
474
- u'Mitteleurop\\xe4ische Zeit'
475
-
476
- .. versionadded:: 0.9
477
-
478
- :param dt_or_tzinfo: the ``datetime`` or ``tzinfo`` object that determines
479
- the timezone; if `None`, the current date and time in
480
- UTC is assumed
481
- :param locale: the `Locale` object, or a locale string
482
- :param return_city: True or False, if True then return exemplar city (location)
483
- for the time zone
484
- :return: the localized timezone name using location format
485
-
486
- """
487
- locale = Locale.parse(locale)
488
-
489
- zone = _get_tz_name(dt_or_tzinfo)
490
-
491
- # Get the canonical time-zone code
492
- zone = get_global('zone_aliases').get(zone, zone)
493
-
494
- info = locale.time_zones.get(zone, {})
495
-
496
- # Otherwise, if there is only one timezone for the country, return the
497
- # localized country name
498
- region_format = locale.zone_formats['region']
499
- territory = get_global('zone_territories').get(zone)
500
- if territory not in locale.territories:
501
- territory = 'ZZ' # invalid/unknown
502
- territory_name = locale.territories[territory]
503
- if not return_city and territory and len(get_global('territory_zones').get(territory, [])) == 1:
504
- return region_format % territory_name
505
-
506
- # Otherwise, include the city in the output
507
- fallback_format = locale.zone_formats['fallback']
508
- if 'city' in info:
509
- city_name = info['city']
510
- else:
511
- metazone = get_global('meta_zones').get(zone)
512
- metazone_info = locale.meta_zones.get(metazone, {})
513
- if 'city' in metazone_info:
514
- city_name = metazone_info['city']
515
- elif '/' in zone:
516
- city_name = zone.split('/', 1)[1].replace('_', ' ')
517
- else:
518
- city_name = zone.replace('_', ' ')
519
-
520
- if return_city:
521
- return city_name
522
- return region_format % (fallback_format % {
523
- '0': city_name,
524
- '1': territory_name,
525
- })
526
-
527
-
528
- def get_timezone_name(
529
- dt_or_tzinfo: _DtOrTzinfo = None,
530
- width: Literal['long', 'short'] = 'long',
531
- uncommon: bool = False,
532
- locale: Locale | str | None = LC_TIME,
533
- zone_variant: Literal['generic', 'daylight', 'standard'] | None = None,
534
- return_zone: bool = False,
535
- ) -> str:
536
- r"""Return the localized display name for the given timezone. The timezone
537
- may be specified using a ``datetime`` or `tzinfo` object.
538
-
539
- >>> from datetime import time
540
- >>> dt = time(15, 30, tzinfo=get_timezone('America/Los_Angeles'))
541
- >>> get_timezone_name(dt, locale='en_US') # doctest: +SKIP
542
- u'Pacific Standard Time'
543
- >>> get_timezone_name(dt, locale='en_US', return_zone=True)
544
- 'America/Los_Angeles'
545
- >>> get_timezone_name(dt, width='short', locale='en_US') # doctest: +SKIP
546
- u'PST'
547
-
548
- If this function gets passed only a `tzinfo` object and no concrete
549
- `datetime`, the returned display name is independent of daylight savings
550
- time. This can be used for example for selecting timezones, or to set the
551
- time of events that recur across DST changes:
552
-
553
- >>> tz = get_timezone('America/Los_Angeles')
554
- >>> get_timezone_name(tz, locale='en_US')
555
- u'Pacific Time'
556
- >>> get_timezone_name(tz, 'short', locale='en_US')
557
- u'PT'
558
-
559
- If no localized display name for the timezone is available, and the timezone
560
- is associated with a country that uses only a single timezone, the name of
561
- that country is returned, formatted according to the locale:
562
-
563
- >>> tz = get_timezone('Europe/Berlin')
564
- >>> get_timezone_name(tz, locale='de_DE')
565
- u'Mitteleurop\xe4ische Zeit'
566
- >>> get_timezone_name(tz, locale='pt_BR')
567
- u'Hor\xe1rio da Europa Central'
568
-
569
- On the other hand, if the country uses multiple timezones, the city is also
570
- included in the representation:
571
-
572
- >>> tz = get_timezone('America/St_Johns')
573
- >>> get_timezone_name(tz, locale='de_DE')
574
- u'Neufundland-Zeit'
575
-
576
- Note that short format is currently not supported for all timezones and
577
- all locales. This is partially because not every timezone has a short
578
- code in every locale. In that case it currently falls back to the long
579
- format.
580
-
581
- For more information see `LDML Appendix J: Time Zone Display Names
582
- <https://www.unicode.org/reports/tr35/#Time_Zone_Fallback>`_
583
-
584
- .. versionadded:: 0.9
585
-
586
- .. versionchanged:: 1.0
587
- Added `zone_variant` support.
588
-
589
- :param dt_or_tzinfo: the ``datetime`` or ``tzinfo`` object that determines
590
- the timezone; if a ``tzinfo`` object is used, the
591
- resulting display name will be generic, i.e.
592
- independent of daylight savings time; if `None`, the
593
- current date in UTC is assumed
594
- :param width: either "long" or "short"
595
- :param uncommon: deprecated and ignored
596
- :param zone_variant: defines the zone variation to return. By default the
597
- variation is defined from the datetime object
598
- passed in. If no datetime object is passed in, the
599
- ``'generic'`` variation is assumed. The following
600
- values are valid: ``'generic'``, ``'daylight'`` and
601
- ``'standard'``.
602
- :param locale: the `Locale` object, or a locale string
603
- :param return_zone: True or False. If true then function
604
- returns long time zone ID
605
- """
606
- dt, tzinfo = _get_dt_and_tzinfo(dt_or_tzinfo)
607
- locale = Locale.parse(locale)
608
-
609
- zone = _get_tz_name(dt_or_tzinfo)
610
-
611
- if zone_variant is None:
612
- if dt is None:
613
- zone_variant = 'generic'
614
- else:
615
- dst = tzinfo.dst(dt)
616
- zone_variant = "daylight" if dst else "standard"
617
- else:
618
- if zone_variant not in ('generic', 'standard', 'daylight'):
619
- raise ValueError('Invalid zone variation')
620
-
621
- # Get the canonical time-zone code
622
- zone = get_global('zone_aliases').get(zone, zone)
623
- if return_zone:
624
- return zone
625
- info = locale.time_zones.get(zone, {})
626
- # Try explicitly translated zone names first
627
- if width in info and zone_variant in info[width]:
628
- return info[width][zone_variant]
629
-
630
- metazone = get_global('meta_zones').get(zone)
631
- if metazone:
632
- metazone_info = locale.meta_zones.get(metazone, {})
633
- if width in metazone_info:
634
- name = metazone_info[width].get(zone_variant)
635
- if width == 'short' and name == NO_INHERITANCE_MARKER:
636
- # If the short form is marked no-inheritance,
637
- # try to fall back to the long name instead.
638
- name = metazone_info.get('long', {}).get(zone_variant)
639
- if name:
640
- return name
641
-
642
- # If we have a concrete datetime, we assume that the result can't be
643
- # independent of daylight savings time, so we return the GMT offset
644
- if dt is not None:
645
- return get_timezone_gmt(dt, width=width, locale=locale)
646
-
647
- return get_timezone_location(dt_or_tzinfo, locale=locale)
648
-
649
-
650
- def format_date(
651
- date: datetime.date | None = None,
652
- format: _PredefinedTimeFormat | str = 'medium',
653
- locale: Locale | str | None = LC_TIME,
654
- ) -> str:
655
- """Return a date formatted according to the given pattern.
656
-
657
- >>> from datetime import date
658
- >>> d = date(2007, 4, 1)
659
- >>> format_date(d, locale='en_US')
660
- u'Apr 1, 2007'
661
- >>> format_date(d, format='full', locale='de_DE')
662
- u'Sonntag, 1. April 2007'
663
-
664
- If you don't want to use the locale default formats, you can specify a
665
- custom date pattern:
666
-
667
- >>> format_date(d, "EEE, MMM d, ''yy", locale='en')
668
- u"Sun, Apr 1, '07"
669
-
670
- :param date: the ``date`` or ``datetime`` object; if `None`, the current
671
- date is used
672
- :param format: one of "full", "long", "medium", or "short", or a custom
673
- date/time pattern
674
- :param locale: a `Locale` object or a locale identifier
675
- """
676
- if date is None:
677
- date = datetime.date.today()
678
- elif isinstance(date, datetime.datetime):
679
- date = date.date()
680
-
681
- locale = Locale.parse(locale)
682
- if format in ('full', 'long', 'medium', 'short'):
683
- format = get_date_format(format, locale=locale)
684
- pattern = parse_pattern(format)
685
- return pattern.apply(date, locale)
686
-
687
-
688
- def format_datetime(
689
- datetime: _Instant = None,
690
- format: _PredefinedTimeFormat | str = 'medium',
691
- tzinfo: datetime.tzinfo | None = None,
692
- locale: Locale | str | None = LC_TIME,
693
- ) -> str:
694
- r"""Return a date formatted according to the given pattern.
695
-
696
- >>> from datetime import datetime
697
- >>> dt = datetime(2007, 4, 1, 15, 30)
698
- >>> format_datetime(dt, locale='en_US')
699
- u'Apr 1, 2007, 3:30:00\u202fPM'
700
-
701
- For any pattern requiring the display of the timezone:
702
-
703
- >>> format_datetime(dt, 'full', tzinfo=get_timezone('Europe/Paris'),
704
- ... locale='fr_FR')
705
- 'dimanche 1 avril 2007, 17:30:00 heure d’été d’Europe centrale'
706
- >>> format_datetime(dt, "yyyy.MM.dd G 'at' HH:mm:ss zzz",
707
- ... tzinfo=get_timezone('US/Eastern'), locale='en')
708
- u'2007.04.01 AD at 11:30:00 EDT'
709
-
710
- :param datetime: the `datetime` object; if `None`, the current date and
711
- time is used
712
- :param format: one of "full", "long", "medium", or "short", or a custom
713
- date/time pattern
714
- :param tzinfo: the timezone to apply to the time for display
715
- :param locale: a `Locale` object or a locale identifier
716
- """
717
- datetime = _ensure_datetime_tzinfo(_get_datetime(datetime), tzinfo)
718
-
719
- locale = Locale.parse(locale)
720
- if format in ('full', 'long', 'medium', 'short'):
721
- return get_datetime_format(format, locale=locale) \
722
- .replace("'", "") \
723
- .replace('{0}', format_time(datetime, format, tzinfo=None,
724
- locale=locale)) \
725
- .replace('{1}', format_date(datetime, format, locale=locale))
726
- else:
727
- return parse_pattern(format).apply(datetime, locale)
728
-
729
-
730
- def format_time(
731
- time: datetime.time | datetime.datetime | float | None = None,
732
- format: _PredefinedTimeFormat | str = 'medium',
733
- tzinfo: datetime.tzinfo | None = None, locale: Locale | str | None = LC_TIME,
734
- ) -> str:
735
- r"""Return a time formatted according to the given pattern.
736
-
737
- >>> from datetime import datetime, time
738
- >>> t = time(15, 30)
739
- >>> format_time(t, locale='en_US')
740
- u'3:30:00\u202fPM'
741
- >>> format_time(t, format='short', locale='de_DE')
742
- u'15:30'
743
-
744
- If you don't want to use the locale default formats, you can specify a
745
- custom time pattern:
746
-
747
- >>> format_time(t, "hh 'o''clock' a", locale='en')
748
- u"03 o'clock PM"
749
-
750
- For any pattern requiring the display of the time-zone a
751
- timezone has to be specified explicitly:
752
-
753
- >>> t = datetime(2007, 4, 1, 15, 30)
754
- >>> tzinfo = get_timezone('Europe/Paris')
755
- >>> t = _localize(tzinfo, t)
756
- >>> format_time(t, format='full', tzinfo=tzinfo, locale='fr_FR')
757
- '15:30:00 heure d’été d’Europe centrale'
758
- >>> format_time(t, "hh 'o''clock' a, zzzz", tzinfo=get_timezone('US/Eastern'),
759
- ... locale='en')
760
- u"09 o'clock AM, Eastern Daylight Time"
761
-
762
- As that example shows, when this function gets passed a
763
- ``datetime.datetime`` value, the actual time in the formatted string is
764
- adjusted to the timezone specified by the `tzinfo` parameter. If the
765
- ``datetime`` is "naive" (i.e. it has no associated timezone information),
766
- it is assumed to be in UTC.
767
-
768
- These timezone calculations are **not** performed if the value is of type
769
- ``datetime.time``, as without date information there's no way to determine
770
- what a given time would translate to in a different timezone without
771
- information about whether daylight savings time is in effect or not. This
772
- means that time values are left as-is, and the value of the `tzinfo`
773
- parameter is only used to display the timezone name if needed:
774
-
775
- >>> t = time(15, 30)
776
- >>> format_time(t, format='full', tzinfo=get_timezone('Europe/Paris'),
777
- ... locale='fr_FR') # doctest: +SKIP
778
- u'15:30:00 heure normale d\u2019Europe centrale'
779
- >>> format_time(t, format='full', tzinfo=get_timezone('US/Eastern'),
780
- ... locale='en_US') # doctest: +SKIP
781
- u'3:30:00\u202fPM Eastern Standard Time'
782
-
783
- :param time: the ``time`` or ``datetime`` object; if `None`, the current
784
- time in UTC is used
785
- :param format: one of "full", "long", "medium", or "short", or a custom
786
- date/time pattern
787
- :param tzinfo: the time-zone to apply to the time for display
788
- :param locale: a `Locale` object or a locale identifier
789
- """
790
-
791
- # get reference date for if we need to find the right timezone variant
792
- # in the pattern
793
- ref_date = time.date() if isinstance(time, datetime.datetime) else None
794
-
795
- time = _get_time(time, tzinfo)
796
-
797
- locale = Locale.parse(locale)
798
- if format in ('full', 'long', 'medium', 'short'):
799
- format = get_time_format(format, locale=locale)
800
- return parse_pattern(format).apply(time, locale, reference_date=ref_date)
801
-
802
-
803
- def format_skeleton(
804
- skeleton: str,
805
- datetime: _Instant = None,
806
- tzinfo: datetime.tzinfo | None = None,
807
- fuzzy: bool = True,
808
- locale: Locale | str | None = LC_TIME,
809
- ) -> str:
810
- r"""Return a time and/or date formatted according to the given pattern.
811
-
812
- The skeletons are defined in the CLDR data and provide more flexibility
813
- than the simple short/long/medium formats, but are a bit harder to use.
814
- The are defined using the date/time symbols without order or punctuation
815
- and map to a suitable format for the given locale.
816
-
817
- >>> from datetime import datetime
818
- >>> t = datetime(2007, 4, 1, 15, 30)
819
- >>> format_skeleton('MMMEd', t, locale='fr')
820
- u'dim. 1 avr.'
821
- >>> format_skeleton('MMMEd', t, locale='en')
822
- u'Sun, Apr 1'
823
- >>> format_skeleton('yMMd', t, locale='fi') # yMMd is not in the Finnish locale; yMd gets used
824
- u'1.4.2007'
825
- >>> format_skeleton('yMMd', t, fuzzy=False, locale='fi') # yMMd is not in the Finnish locale, an error is thrown
826
- Traceback (most recent call last):
827
- ...
828
- KeyError: yMMd
829
- >>> format_skeleton('GH', t, fuzzy=True, locale='fi_FI') # GH is not in the Finnish locale and there is no close match, an error is thrown
830
- Traceback (most recent call last):
831
- ...
832
- KeyError: None
833
-
834
- After the skeleton is resolved to a pattern `format_datetime` is called so
835
- all timezone processing etc is the same as for that.
836
-
837
- :param skeleton: A date time skeleton as defined in the cldr data.
838
- :param datetime: the ``time`` or ``datetime`` object; if `None`, the current
839
- time in UTC is used
840
- :param tzinfo: the time-zone to apply to the time for display
841
- :param fuzzy: If the skeleton is not found, allow choosing a skeleton that's
842
- close enough to it. If there is no close match, a `KeyError`
843
- is thrown.
844
- :param locale: a `Locale` object or a locale identifier
845
- """
846
- locale = Locale.parse(locale)
847
- if fuzzy and skeleton not in locale.datetime_skeletons:
848
- skeleton = match_skeleton(skeleton, locale.datetime_skeletons)
849
- format = locale.datetime_skeletons[skeleton]
850
- return format_datetime(datetime, format, tzinfo, locale)
851
-
852
-
853
- TIMEDELTA_UNITS: tuple[tuple[str, int], ...] = (
854
- ('year', 3600 * 24 * 365),
855
- ('month', 3600 * 24 * 30),
856
- ('week', 3600 * 24 * 7),
857
- ('day', 3600 * 24),
858
- ('hour', 3600),
859
- ('minute', 60),
860
- ('second', 1),
861
- )
862
-
863
-
864
- def format_timedelta(
865
- delta: datetime.timedelta | int,
866
- granularity: Literal['year', 'month', 'week', 'day', 'hour', 'minute', 'second'] = 'second',
867
- threshold: float = .85,
868
- add_direction: bool = False,
869
- format: Literal['narrow', 'short', 'medium', 'long'] = 'long',
870
- locale: Locale | str | None = LC_TIME,
871
- ) -> str:
872
- """Return a time delta according to the rules of the given locale.
873
-
874
- >>> from datetime import timedelta
875
- >>> format_timedelta(timedelta(weeks=12), locale='en_US')
876
- u'3 months'
877
- >>> format_timedelta(timedelta(seconds=1), locale='es')
878
- u'1 segundo'
879
-
880
- The granularity parameter can be provided to alter the lowest unit
881
- presented, which defaults to a second.
882
-
883
- >>> format_timedelta(timedelta(hours=3), granularity='day', locale='en_US')
884
- u'1 day'
885
-
886
- The threshold parameter can be used to determine at which value the
887
- presentation switches to the next higher unit. A higher threshold factor
888
- means the presentation will switch later. For example:
889
-
890
- >>> format_timedelta(timedelta(hours=23), threshold=0.9, locale='en_US')
891
- u'1 day'
892
- >>> format_timedelta(timedelta(hours=23), threshold=1.1, locale='en_US')
893
- u'23 hours'
894
-
895
- In addition directional information can be provided that informs
896
- the user if the date is in the past or in the future:
897
-
898
- >>> format_timedelta(timedelta(hours=1), add_direction=True, locale='en')
899
- u'in 1 hour'
900
- >>> format_timedelta(timedelta(hours=-1), add_direction=True, locale='en')
901
- u'1 hour ago'
902
-
903
- The format parameter controls how compact or wide the presentation is:
904
-
905
- >>> format_timedelta(timedelta(hours=3), format='short', locale='en')
906
- u'3 hr'
907
- >>> format_timedelta(timedelta(hours=3), format='narrow', locale='en')
908
- u'3h'
909
-
910
- :param delta: a ``timedelta`` object representing the time difference to
911
- format, or the delta in seconds as an `int` value
912
- :param granularity: determines the smallest unit that should be displayed,
913
- the value can be one of "year", "month", "week", "day",
914
- "hour", "minute" or "second"
915
- :param threshold: factor that determines at which point the presentation
916
- switches to the next higher unit
917
- :param add_direction: if this flag is set to `True` the return value will
918
- include directional information. For instance a
919
- positive timedelta will include the information about
920
- it being in the future, a negative will be information
921
- about the value being in the past.
922
- :param format: the format, can be "narrow", "short" or "long". (
923
- "medium" is deprecated, currently converted to "long" to
924
- maintain compatibility)
925
- :param locale: a `Locale` object or a locale identifier
926
- """
927
- if format not in ('narrow', 'short', 'medium', 'long'):
928
- raise TypeError('Format must be one of "narrow", "short" or "long"')
929
- if format == 'medium':
930
- warnings.warn(
931
- '"medium" value for format param of format_timedelta'
932
- ' is deprecated. Use "long" instead',
933
- category=DeprecationWarning,
934
- stacklevel=2,
935
- )
936
- format = 'long'
937
- if isinstance(delta, datetime.timedelta):
938
- seconds = int((delta.days * 86400) + delta.seconds)
939
- else:
940
- seconds = delta
941
- locale = Locale.parse(locale)
942
-
943
- def _iter_patterns(a_unit):
944
- if add_direction:
945
- unit_rel_patterns = locale._data['date_fields'][a_unit]
946
- if seconds >= 0:
947
- yield unit_rel_patterns['future']
948
- else:
949
- yield unit_rel_patterns['past']
950
- a_unit = f"duration-{a_unit}"
951
- unit_pats = locale._data['unit_patterns'].get(a_unit, {})
952
- yield unit_pats.get(format)
953
- # We do not support `<alias>` tags at all while ingesting CLDR data,
954
- # so these aliases specified in `root.xml` are hard-coded here:
955
- # <unitLength type="long"><alias source="locale" path="../unitLength[@type='short']"/></unitLength>
956
- # <unitLength type="narrow"><alias source="locale" path="../unitLength[@type='short']"/></unitLength>
957
- if format in ("long", "narrow"):
958
- yield unit_pats.get("short")
959
-
960
- for unit, secs_per_unit in TIMEDELTA_UNITS:
961
- value = abs(seconds) / secs_per_unit
962
- if value >= threshold or unit == granularity:
963
- if unit == granularity and value > 0:
964
- value = max(1, value)
965
- value = int(round(value))
966
- plural_form = locale.plural_form(value)
967
- pattern = None
968
- for patterns in _iter_patterns(unit):
969
- if patterns is not None:
970
- pattern = patterns.get(plural_form) or patterns.get('other')
971
- if pattern:
972
- break
973
- # This really should not happen
974
- if pattern is None:
975
- return ''
976
- return pattern.replace('{0}', str(value))
977
-
978
- return ''
979
-
980
-
981
- def _format_fallback_interval(
982
- start: _Instant,
983
- end: _Instant,
984
- skeleton: str | None,
985
- tzinfo: datetime.tzinfo | None,
986
- locale: Locale | str | None = LC_TIME,
987
- ) -> str:
988
- if skeleton in locale.datetime_skeletons: # Use the given skeleton
989
- format = lambda dt: format_skeleton(skeleton, dt, tzinfo, locale=locale)
990
- elif all((isinstance(d, datetime.date) and not isinstance(d, datetime.datetime)) for d in (start, end)): # Both are just dates
991
- format = lambda dt: format_date(dt, locale=locale)
992
- elif all((isinstance(d, datetime.time) and not isinstance(d, datetime.date)) for d in (start, end)): # Both are times
993
- format = lambda dt: format_time(dt, tzinfo=tzinfo, locale=locale)
994
- else:
995
- format = lambda dt: format_datetime(dt, tzinfo=tzinfo, locale=locale)
996
-
997
- formatted_start = format(start)
998
- formatted_end = format(end)
999
-
1000
- if formatted_start == formatted_end:
1001
- return format(start)
1002
-
1003
- return (
1004
- locale.interval_formats.get(None, "{0}-{1}").
1005
- replace("{0}", formatted_start).
1006
- replace("{1}", formatted_end)
1007
- )
1008
-
1009
-
1010
- def format_interval(
1011
- start: _Instant,
1012
- end: _Instant,
1013
- skeleton: str | None = None,
1014
- tzinfo: datetime.tzinfo | None = None,
1015
- fuzzy: bool = True,
1016
- locale: Locale | str | None = LC_TIME,
1017
- ) -> str:
1018
- """
1019
- Format an interval between two instants according to the locale's rules.
1020
-
1021
- >>> from datetime import date, time
1022
- >>> format_interval(date(2016, 1, 15), date(2016, 1, 17), "yMd", locale="fi")
1023
- u'15.\u201317.1.2016'
1024
-
1025
- >>> format_interval(time(12, 12), time(16, 16), "Hm", locale="en_GB")
1026
- '12:12\u201316:16'
1027
-
1028
- >>> format_interval(time(5, 12), time(16, 16), "hm", locale="en_US")
1029
- '5:12\u202fAM\u2009–\u20094:16\u202fPM'
1030
-
1031
- >>> format_interval(time(16, 18), time(16, 24), "Hm", locale="it")
1032
- '16:18\u201316:24'
1033
-
1034
- If the start instant equals the end instant, the interval is formatted like the instant.
1035
-
1036
- >>> format_interval(time(16, 18), time(16, 18), "Hm", locale="it")
1037
- '16:18'
1038
-
1039
- Unknown skeletons fall back to "default" formatting.
1040
-
1041
- >>> format_interval(date(2015, 1, 1), date(2017, 1, 1), "wzq", locale="ja")
1042
- '2015/01/01\uff5e2017/01/01'
1043
-
1044
- >>> format_interval(time(16, 18), time(16, 24), "xxx", locale="ja")
1045
- '16:18:00\uff5e16:24:00'
1046
-
1047
- >>> format_interval(date(2016, 1, 15), date(2016, 1, 17), "xxx", locale="de")
1048
- '15.01.2016\u2009–\u200917.01.2016'
1049
-
1050
- :param start: First instant (datetime/date/time)
1051
- :param end: Second instant (datetime/date/time)
1052
- :param skeleton: The "skeleton format" to use for formatting.
1053
- :param tzinfo: tzinfo to use (if none is already attached)
1054
- :param fuzzy: If the skeleton is not found, allow choosing a skeleton that's
1055
- close enough to it.
1056
- :param locale: A locale object or identifier.
1057
- :return: Formatted interval
1058
- """
1059
- locale = Locale.parse(locale)
1060
-
1061
- # NB: The quote comments below are from the algorithm description in
1062
- # https://www.unicode.org/reports/tr35/tr35-dates.html#intervalFormats
1063
-
1064
- # > Look for the intervalFormatItem element that matches the "skeleton",
1065
- # > starting in the current locale and then following the locale fallback
1066
- # > chain up to, but not including root.
1067
-
1068
- interval_formats = locale.interval_formats
1069
-
1070
- if skeleton not in interval_formats or not skeleton:
1071
- # > If no match was found from the previous step, check what the closest
1072
- # > match is in the fallback locale chain, as in availableFormats. That
1073
- # > is, this allows for adjusting the string value field's width,
1074
- # > including adjusting between "MMM" and "MMMM", and using different
1075
- # > variants of the same field, such as 'v' and 'z'.
1076
- if skeleton and fuzzy:
1077
- skeleton = match_skeleton(skeleton, interval_formats)
1078
- else:
1079
- skeleton = None
1080
- if not skeleton: # Still no match whatsoever?
1081
- # > Otherwise, format the start and end datetime using the fallback pattern.
1082
- return _format_fallback_interval(start, end, skeleton, tzinfo, locale)
1083
-
1084
- skel_formats = interval_formats[skeleton]
1085
-
1086
- if start == end:
1087
- return format_skeleton(skeleton, start, tzinfo, fuzzy=fuzzy, locale=locale)
1088
-
1089
- start = _ensure_datetime_tzinfo(_get_datetime(start), tzinfo=tzinfo)
1090
- end = _ensure_datetime_tzinfo(_get_datetime(end), tzinfo=tzinfo)
1091
-
1092
- start_fmt = DateTimeFormat(start, locale=locale)
1093
- end_fmt = DateTimeFormat(end, locale=locale)
1094
-
1095
- # > If a match is found from previous steps, compute the calendar field
1096
- # > with the greatest difference between start and end datetime. If there
1097
- # > is no difference among any of the fields in the pattern, format as a
1098
- # > single date using availableFormats, and return.
1099
-
1100
- for field in PATTERN_CHAR_ORDER: # These are in largest-to-smallest order
1101
- if field in skel_formats and start_fmt.extract(field) != end_fmt.extract(field):
1102
- # > If there is a match, use the pieces of the corresponding pattern to
1103
- # > format the start and end datetime, as above.
1104
- return "".join(
1105
- parse_pattern(pattern).apply(instant, locale)
1106
- for pattern, instant
1107
- in zip(skel_formats[field], (start, end))
1108
- )
1109
-
1110
- # > Otherwise, format the start and end datetime using the fallback pattern.
1111
-
1112
- return _format_fallback_interval(start, end, skeleton, tzinfo, locale)
1113
-
1114
-
1115
- def get_period_id(
1116
- time: _Instant,
1117
- tzinfo: datetime.tzinfo | None = None,
1118
- type: Literal['selection'] | None = None,
1119
- locale: Locale | str | None = LC_TIME,
1120
- ) -> str:
1121
- """
1122
- Get the day period ID for a given time.
1123
-
1124
- This ID can be used as a key for the period name dictionary.
1125
-
1126
- >>> from datetime import time
1127
- >>> get_period_names(locale="de")[get_period_id(time(7, 42), locale="de")]
1128
- u'Morgen'
1129
-
1130
- >>> get_period_id(time(0), locale="en_US")
1131
- u'midnight'
1132
-
1133
- >>> get_period_id(time(0), type="selection", locale="en_US")
1134
- u'night1'
1135
-
1136
- :param time: The time to inspect.
1137
- :param tzinfo: The timezone for the time. See ``format_time``.
1138
- :param type: The period type to use. Either "selection" or None.
1139
- The selection type is used for selecting among phrases such as
1140
- “Your email arrived yesterday evening” or “Your email arrived last night”.
1141
- :param locale: the `Locale` object, or a locale string
1142
- :return: period ID. Something is always returned -- even if it's just "am" or "pm".
1143
- """
1144
- time = _get_time(time, tzinfo)
1145
- seconds_past_midnight = int(time.hour * 60 * 60 + time.minute * 60 + time.second)
1146
- locale = Locale.parse(locale)
1147
-
1148
- # The LDML rules state that the rules may not overlap, so iterating in arbitrary
1149
- # order should be alright, though `at` periods should be preferred.
1150
- rulesets = locale.day_period_rules.get(type, {}).items()
1151
-
1152
- for rule_id, rules in rulesets:
1153
- for rule in rules:
1154
- if "at" in rule and rule["at"] == seconds_past_midnight:
1155
- return rule_id
1156
-
1157
- for rule_id, rules in rulesets:
1158
- for rule in rules:
1159
- if "from" in rule and "before" in rule:
1160
- if rule["from"] < rule["before"]:
1161
- if rule["from"] <= seconds_past_midnight < rule["before"]:
1162
- return rule_id
1163
- else:
1164
- # e.g. from="21:00" before="06:00"
1165
- if rule["from"] <= seconds_past_midnight < 86400 or \
1166
- 0 <= seconds_past_midnight < rule["before"]:
1167
- return rule_id
1168
-
1169
- start_ok = end_ok = False
1170
-
1171
- if "from" in rule and seconds_past_midnight >= rule["from"]:
1172
- start_ok = True
1173
- if "to" in rule and seconds_past_midnight <= rule["to"]:
1174
- # This rule type does not exist in the present CLDR data;
1175
- # excuse the lack of test coverage.
1176
- end_ok = True
1177
- if "before" in rule and seconds_past_midnight < rule["before"]:
1178
- end_ok = True
1179
- if "after" in rule:
1180
- raise NotImplementedError("'after' is deprecated as of CLDR 29.")
1181
-
1182
- if start_ok and end_ok:
1183
- return rule_id
1184
-
1185
- if seconds_past_midnight < 43200:
1186
- return "am"
1187
- else:
1188
- return "pm"
1189
-
1190
-
1191
- class ParseError(ValueError):
1192
- pass
1193
-
1194
-
1195
- def parse_date(
1196
- string: str,
1197
- locale: Locale | str | None = LC_TIME,
1198
- format: _PredefinedTimeFormat = 'medium',
1199
- ) -> datetime.date:
1200
- """Parse a date from a string.
1201
-
1202
- This function first tries to interpret the string as ISO-8601
1203
- date format, then uses the date format for the locale as a hint to
1204
- determine the order in which the date fields appear in the string.
1205
-
1206
- >>> parse_date('4/1/04', locale='en_US')
1207
- datetime.date(2004, 4, 1)
1208
- >>> parse_date('01.04.2004', locale='de_DE')
1209
- datetime.date(2004, 4, 1)
1210
- >>> parse_date('2004-04-01', locale='en_US')
1211
- datetime.date(2004, 4, 1)
1212
- >>> parse_date('2004-04-01', locale='de_DE')
1213
- datetime.date(2004, 4, 1)
1214
-
1215
- :param string: the string containing the date
1216
- :param locale: a `Locale` object or a locale identifier
1217
- :param format: the format to use (see ``get_date_format``)
1218
- """
1219
- numbers = re.findall(r'(\d+)', string)
1220
- if not numbers:
1221
- raise ParseError("No numbers were found in input")
1222
-
1223
- # we try ISO-8601 format first, meaning similar to formats
1224
- # extended YYYY-MM-DD or basic YYYYMMDD
1225
- iso_alike = re.match(r'^(\d{4})-?([01]\d)-?([0-3]\d)$',
1226
- string, flags=re.ASCII) # allow only ASCII digits
1227
- if iso_alike:
1228
- try:
1229
- return datetime.date(*map(int, iso_alike.groups()))
1230
- except ValueError:
1231
- pass # a locale format might fit better, so let's continue
1232
-
1233
- format_str = get_date_format(format=format, locale=locale).pattern.lower()
1234
- year_idx = format_str.index('y')
1235
- month_idx = format_str.index('m')
1236
- if month_idx < 0:
1237
- month_idx = format_str.index('l')
1238
- day_idx = format_str.index('d')
1239
-
1240
- indexes = sorted([(year_idx, 'Y'), (month_idx, 'M'), (day_idx, 'D')])
1241
- indexes = {item[1]: idx for idx, item in enumerate(indexes)}
1242
-
1243
- # FIXME: this currently only supports numbers, but should also support month
1244
- # names, both in the requested locale, and english
1245
-
1246
- year = numbers[indexes['Y']]
1247
- year = 2000 + int(year) if len(year) == 2 else int(year)
1248
- month = int(numbers[indexes['M']])
1249
- day = int(numbers[indexes['D']])
1250
- if month > 12:
1251
- month, day = day, month
1252
- return datetime.date(year, month, day)
1253
-
1254
-
1255
- def parse_time(
1256
- string: str,
1257
- locale: Locale | str | None = LC_TIME,
1258
- format: _PredefinedTimeFormat = 'medium',
1259
- ) -> datetime.time:
1260
- """Parse a time from a string.
1261
-
1262
- This function uses the time format for the locale as a hint to determine
1263
- the order in which the time fields appear in the string.
1264
-
1265
- >>> parse_time('15:30:00', locale='en_US')
1266
- datetime.time(15, 30)
1267
-
1268
- :param string: the string containing the time
1269
- :param locale: a `Locale` object or a locale identifier
1270
- :param format: the format to use (see ``get_time_format``)
1271
- :return: the parsed time
1272
- :rtype: `time`
1273
- """
1274
- numbers = re.findall(r'(\d+)', string)
1275
- if not numbers:
1276
- raise ParseError("No numbers were found in input")
1277
-
1278
- # TODO: try ISO format first?
1279
- format_str = get_time_format(format=format, locale=locale).pattern.lower()
1280
- hour_idx = format_str.index('h')
1281
- if hour_idx < 0:
1282
- hour_idx = format_str.index('k')
1283
- min_idx = format_str.index('m')
1284
- sec_idx = format_str.index('s')
1285
-
1286
- indexes = sorted([(hour_idx, 'H'), (min_idx, 'M'), (sec_idx, 'S')])
1287
- indexes = {item[1]: idx for idx, item in enumerate(indexes)}
1288
-
1289
- # TODO: support time zones
1290
-
1291
- # Check if the format specifies a period to be used;
1292
- # if it does, look for 'pm' to figure out an offset.
1293
- hour_offset = 0
1294
- if 'a' in format_str and 'pm' in string.lower():
1295
- hour_offset = 12
1296
-
1297
- # Parse up to three numbers from the string.
1298
- minute = second = 0
1299
- hour = int(numbers[indexes['H']]) + hour_offset
1300
- if len(numbers) > 1:
1301
- minute = int(numbers[indexes['M']])
1302
- if len(numbers) > 2:
1303
- second = int(numbers[indexes['S']])
1304
- return datetime.time(hour, minute, second)
1305
-
1306
-
1307
- class DateTimePattern:
1308
-
1309
- def __init__(self, pattern: str, format: DateTimeFormat):
1310
- self.pattern = pattern
1311
- self.format = format
1312
-
1313
- def __repr__(self) -> str:
1314
- return f"<{type(self).__name__} {self.pattern!r}>"
1315
-
1316
- def __str__(self) -> str:
1317
- pat = self.pattern
1318
- return pat
1319
-
1320
- def __mod__(self, other: DateTimeFormat) -> str:
1321
- if not isinstance(other, DateTimeFormat):
1322
- return NotImplemented
1323
- return self.format % other
1324
-
1325
- def apply(
1326
- self,
1327
- datetime: datetime.date | datetime.time,
1328
- locale: Locale | str | None,
1329
- reference_date: datetime.date | None = None,
1330
- ) -> str:
1331
- return self % DateTimeFormat(datetime, locale, reference_date)
1332
-
1333
-
1334
- class DateTimeFormat:
1335
-
1336
- def __init__(
1337
- self,
1338
- value: datetime.date | datetime.time,
1339
- locale: Locale | str,
1340
- reference_date: datetime.date | None = None,
1341
- ) -> None:
1342
- assert isinstance(value, (datetime.date, datetime.datetime, datetime.time))
1343
- if isinstance(value, (datetime.datetime, datetime.time)) and value.tzinfo is None:
1344
- value = value.replace(tzinfo=UTC)
1345
- self.value = value
1346
- self.locale = Locale.parse(locale)
1347
- self.reference_date = reference_date
1348
-
1349
- def __getitem__(self, name: str) -> str:
1350
- char = name[0]
1351
- num = len(name)
1352
- if char == 'G':
1353
- return self.format_era(char, num)
1354
- elif char in ('y', 'Y', 'u'):
1355
- return self.format_year(char, num)
1356
- elif char in ('Q', 'q'):
1357
- return self.format_quarter(char, num)
1358
- elif char in ('M', 'L'):
1359
- return self.format_month(char, num)
1360
- elif char in ('w', 'W'):
1361
- return self.format_week(char, num)
1362
- elif char == 'd':
1363
- return self.format(self.value.day, num)
1364
- elif char == 'D':
1365
- return self.format_day_of_year(num)
1366
- elif char == 'F':
1367
- return self.format_day_of_week_in_month()
1368
- elif char in ('E', 'e', 'c'):
1369
- return self.format_weekday(char, num)
1370
- elif char in ('a', 'b', 'B'):
1371
- return self.format_period(char, num)
1372
- elif char == 'h':
1373
- if self.value.hour % 12 == 0:
1374
- return self.format(12, num)
1375
- else:
1376
- return self.format(self.value.hour % 12, num)
1377
- elif char == 'H':
1378
- return self.format(self.value.hour, num)
1379
- elif char == 'K':
1380
- return self.format(self.value.hour % 12, num)
1381
- elif char == 'k':
1382
- if self.value.hour == 0:
1383
- return self.format(24, num)
1384
- else:
1385
- return self.format(self.value.hour, num)
1386
- elif char == 'm':
1387
- return self.format(self.value.minute, num)
1388
- elif char == 's':
1389
- return self.format(self.value.second, num)
1390
- elif char == 'S':
1391
- return self.format_frac_seconds(num)
1392
- elif char == 'A':
1393
- return self.format_milliseconds_in_day(num)
1394
- elif char in ('z', 'Z', 'v', 'V', 'x', 'X', 'O'):
1395
- return self.format_timezone(char, num)
1396
- else:
1397
- raise KeyError(f"Unsupported date/time field {char!r}")
1398
-
1399
- def extract(self, char: str) -> int:
1400
- char = str(char)[0]
1401
- if char == 'y':
1402
- return self.value.year
1403
- elif char == 'M':
1404
- return self.value.month
1405
- elif char == 'd':
1406
- return self.value.day
1407
- elif char == 'H':
1408
- return self.value.hour
1409
- elif char == 'h':
1410
- return self.value.hour % 12 or 12
1411
- elif char == 'm':
1412
- return self.value.minute
1413
- elif char == 'a':
1414
- return int(self.value.hour >= 12) # 0 for am, 1 for pm
1415
- else:
1416
- raise NotImplementedError(f"Not implemented: extracting {char!r} from {self.value!r}")
1417
-
1418
- def format_era(self, char: str, num: int) -> str:
1419
- width = {3: 'abbreviated', 4: 'wide', 5: 'narrow'}[max(3, num)]
1420
- era = int(self.value.year >= 0)
1421
- return get_era_names(width, self.locale)[era]
1422
-
1423
- def format_year(self, char: str, num: int) -> str:
1424
- value = self.value.year
1425
- if char.isupper():
1426
- value = self.value.isocalendar()[0]
1427
- year = self.format(value, num)
1428
- if num == 2:
1429
- year = year[-2:]
1430
- return year
1431
-
1432
- def format_quarter(self, char: str, num: int) -> str:
1433
- quarter = (self.value.month - 1) // 3 + 1
1434
- if num <= 2:
1435
- return '%0*d' % (num, quarter)
1436
- width = {3: 'abbreviated', 4: 'wide', 5: 'narrow'}[num]
1437
- context = {'Q': 'format', 'q': 'stand-alone'}[char]
1438
- return get_quarter_names(width, context, self.locale)[quarter]
1439
-
1440
- def format_month(self, char: str, num: int) -> str:
1441
- if num <= 2:
1442
- return '%0*d' % (num, self.value.month)
1443
- width = {3: 'abbreviated', 4: 'wide', 5: 'narrow'}[num]
1444
- context = {'M': 'format', 'L': 'stand-alone'}[char]
1445
- return get_month_names(width, context, self.locale)[self.value.month]
1446
-
1447
- def format_week(self, char: str, num: int) -> str:
1448
- if char.islower(): # week of year
1449
- day_of_year = self.get_day_of_year()
1450
- week = self.get_week_number(day_of_year)
1451
- if week == 0:
1452
- date = self.value - datetime.timedelta(days=day_of_year)
1453
- week = self.get_week_number(self.get_day_of_year(date),
1454
- date.weekday())
1455
- return self.format(week, num)
1456
- else: # week of month
1457
- week = self.get_week_number(self.value.day)
1458
- if week == 0:
1459
- date = self.value - datetime.timedelta(days=self.value.day)
1460
- week = self.get_week_number(date.day, date.weekday())
1461
- return str(week)
1462
-
1463
- def format_weekday(self, char: str = 'E', num: int = 4) -> str:
1464
- """
1465
- Return weekday from parsed datetime according to format pattern.
1466
-
1467
- >>> from datetime import date
1468
- >>> format = DateTimeFormat(date(2016, 2, 28), Locale.parse('en_US'))
1469
- >>> format.format_weekday()
1470
- u'Sunday'
1471
-
1472
- 'E': Day of week - Use one through three letters for the abbreviated day name, four for the full (wide) name,
1473
- five for the narrow name, or six for the short name.
1474
- >>> format.format_weekday('E',2)
1475
- u'Sun'
1476
-
1477
- 'e': Local day of week. Same as E except adds a numeric value that will depend on the local starting day of the
1478
- week, using one or two letters. For this example, Monday is the first day of the week.
1479
- >>> format.format_weekday('e',2)
1480
- '01'
1481
-
1482
- 'c': Stand-Alone local day of week - Use one letter for the local numeric value (same as 'e'), three for the
1483
- abbreviated day name, four for the full (wide) name, five for the narrow name, or six for the short name.
1484
- >>> format.format_weekday('c',1)
1485
- '1'
1486
-
1487
- :param char: pattern format character ('e','E','c')
1488
- :param num: count of format character
1489
-
1490
- """
1491
- if num < 3:
1492
- if char.islower():
1493
- value = 7 - self.locale.first_week_day + self.value.weekday()
1494
- return self.format(value % 7 + 1, num)
1495
- num = 3
1496
- weekday = self.value.weekday()
1497
- width = {3: 'abbreviated', 4: 'wide', 5: 'narrow', 6: 'short'}[num]
1498
- context = "stand-alone" if char == "c" else "format"
1499
- return get_day_names(width, context, self.locale)[weekday]
1500
-
1501
- def format_day_of_year(self, num: int) -> str:
1502
- return self.format(self.get_day_of_year(), num)
1503
-
1504
- def format_day_of_week_in_month(self) -> str:
1505
- return str((self.value.day - 1) // 7 + 1)
1506
-
1507
- def format_period(self, char: str, num: int) -> str:
1508
- """
1509
- Return period from parsed datetime according to format pattern.
1510
-
1511
- >>> from datetime import datetime, time
1512
- >>> format = DateTimeFormat(time(13, 42), 'fi_FI')
1513
- >>> format.format_period('a', 1)
1514
- u'ip.'
1515
- >>> format.format_period('b', 1)
1516
- u'iltap.'
1517
- >>> format.format_period('b', 4)
1518
- u'iltapäivä'
1519
- >>> format.format_period('B', 4)
1520
- u'iltapäivällä'
1521
- >>> format.format_period('B', 5)
1522
- u'ip.'
1523
-
1524
- >>> format = DateTimeFormat(datetime(2022, 4, 28, 6, 27), 'zh_Hant')
1525
- >>> format.format_period('a', 1)
1526
- u'上午'
1527
- >>> format.format_period('B', 1)
1528
- u'清晨'
1529
-
1530
- :param char: pattern format character ('a', 'b', 'B')
1531
- :param num: count of format character
1532
-
1533
- """
1534
- widths = [{3: 'abbreviated', 4: 'wide', 5: 'narrow'}[max(3, num)],
1535
- 'wide', 'narrow', 'abbreviated']
1536
- if char == 'a':
1537
- period = 'pm' if self.value.hour >= 12 else 'am'
1538
- context = 'format'
1539
- else:
1540
- period = get_period_id(self.value, locale=self.locale)
1541
- context = 'format' if char == 'B' else 'stand-alone'
1542
- for width in widths:
1543
- period_names = get_period_names(context=context, width=width, locale=self.locale)
1544
- if period in period_names:
1545
- return period_names[period]
1546
- raise ValueError(f"Could not format period {period} in {self.locale}")
1547
-
1548
- def format_frac_seconds(self, num: int) -> str:
1549
- """ Return fractional seconds.
1550
-
1551
- Rounds the time's microseconds to the precision given by the number \
1552
- of digits passed in.
1553
- """
1554
- value = self.value.microsecond / 1000000
1555
- return self.format(round(value, num) * 10**num, num)
1556
-
1557
- def format_milliseconds_in_day(self, num):
1558
- msecs = self.value.microsecond // 1000 + self.value.second * 1000 + \
1559
- self.value.minute * 60000 + self.value.hour * 3600000
1560
- return self.format(msecs, num)
1561
-
1562
- def format_timezone(self, char: str, num: int) -> str:
1563
- width = {3: 'short', 4: 'long', 5: 'iso8601'}[max(3, num)]
1564
-
1565
- # It could be that we only receive a time to format, but also have a
1566
- # reference date which is important to distinguish between timezone
1567
- # variants (summer/standard time)
1568
- value = self.value
1569
- if self.reference_date:
1570
- value = datetime.datetime.combine(self.reference_date, self.value)
1571
-
1572
- if char == 'z':
1573
- return get_timezone_name(value, width, locale=self.locale)
1574
- elif char == 'Z':
1575
- if num == 5:
1576
- return get_timezone_gmt(value, width, locale=self.locale, return_z=True)
1577
- return get_timezone_gmt(value, width, locale=self.locale)
1578
- elif char == 'O':
1579
- if num == 4:
1580
- return get_timezone_gmt(value, width, locale=self.locale)
1581
- # TODO: To add support for O:1
1582
- elif char == 'v':
1583
- return get_timezone_name(value.tzinfo, width,
1584
- locale=self.locale)
1585
- elif char == 'V':
1586
- if num == 1:
1587
- return get_timezone_name(value.tzinfo, width,
1588
- uncommon=True, locale=self.locale)
1589
- elif num == 2:
1590
- return get_timezone_name(value.tzinfo, locale=self.locale, return_zone=True)
1591
- elif num == 3:
1592
- return get_timezone_location(value.tzinfo, locale=self.locale, return_city=True)
1593
- return get_timezone_location(value.tzinfo, locale=self.locale)
1594
- # Included additional elif condition to add support for 'Xx' in timezone format
1595
- elif char == 'X':
1596
- if num == 1:
1597
- return get_timezone_gmt(value, width='iso8601_short', locale=self.locale,
1598
- return_z=True)
1599
- elif num in (2, 4):
1600
- return get_timezone_gmt(value, width='short', locale=self.locale,
1601
- return_z=True)
1602
- elif num in (3, 5):
1603
- return get_timezone_gmt(value, width='iso8601', locale=self.locale,
1604
- return_z=True)
1605
- elif char == 'x':
1606
- if num == 1:
1607
- return get_timezone_gmt(value, width='iso8601_short', locale=self.locale)
1608
- elif num in (2, 4):
1609
- return get_timezone_gmt(value, width='short', locale=self.locale)
1610
- elif num in (3, 5):
1611
- return get_timezone_gmt(value, width='iso8601', locale=self.locale)
1612
-
1613
- def format(self, value: SupportsInt, length: int) -> str:
1614
- return '%0*d' % (length, value)
1615
-
1616
- def get_day_of_year(self, date: datetime.date | None = None) -> int:
1617
- if date is None:
1618
- date = self.value
1619
- return (date - date.replace(month=1, day=1)).days + 1
1620
-
1621
- def get_week_number(self, day_of_period: int, day_of_week: int | None = None) -> int:
1622
- """Return the number of the week of a day within a period. This may be
1623
- the week number in a year or the week number in a month.
1624
-
1625
- Usually this will return a value equal to or greater than 1, but if the
1626
- first week of the period is so short that it actually counts as the last
1627
- week of the previous period, this function will return 0.
1628
-
1629
- >>> date = datetime.date(2006, 1, 8)
1630
- >>> DateTimeFormat(date, 'de_DE').get_week_number(6)
1631
- 1
1632
- >>> DateTimeFormat(date, 'en_US').get_week_number(6)
1633
- 2
1634
-
1635
- :param day_of_period: the number of the day in the period (usually
1636
- either the day of month or the day of year)
1637
- :param day_of_week: the week day; if omitted, the week day of the
1638
- current date is assumed
1639
- """
1640
- if day_of_week is None:
1641
- day_of_week = self.value.weekday()
1642
- first_day = (day_of_week - self.locale.first_week_day -
1643
- day_of_period + 1) % 7
1644
- if first_day < 0:
1645
- first_day += 7
1646
- week_number = (day_of_period + first_day - 1) // 7
1647
-
1648
- if 7 - first_day >= self.locale.min_week_days:
1649
- week_number += 1
1650
-
1651
- if self.locale.first_week_day == 0:
1652
- # Correct the weeknumber in case of iso-calendar usage (first_week_day=0).
1653
- # If the weeknumber exceeds the maximum number of weeks for the given year
1654
- # we must count from zero.For example the above calculation gives week 53
1655
- # for 2018-12-31. By iso-calender definition 2018 has a max of 52
1656
- # weeks, thus the weeknumber must be 53-52=1.
1657
- max_weeks = datetime.date(year=self.value.year, day=28, month=12).isocalendar()[1]
1658
- if week_number > max_weeks:
1659
- week_number -= max_weeks
1660
-
1661
- return week_number
1662
-
1663
-
1664
- PATTERN_CHARS: dict[str, list[int] | None] = {
1665
- 'G': [1, 2, 3, 4, 5], # era
1666
- 'y': None, 'Y': None, 'u': None, # year
1667
- 'Q': [1, 2, 3, 4, 5], 'q': [1, 2, 3, 4, 5], # quarter
1668
- 'M': [1, 2, 3, 4, 5], 'L': [1, 2, 3, 4, 5], # month
1669
- 'w': [1, 2], 'W': [1], # week
1670
- 'd': [1, 2], 'D': [1, 2, 3], 'F': [1], 'g': None, # day
1671
- 'E': [1, 2, 3, 4, 5, 6], 'e': [1, 2, 3, 4, 5, 6], 'c': [1, 3, 4, 5, 6], # week day
1672
- 'a': [1, 2, 3, 4, 5], 'b': [1, 2, 3, 4, 5], 'B': [1, 2, 3, 4, 5], # period
1673
- 'h': [1, 2], 'H': [1, 2], 'K': [1, 2], 'k': [1, 2], # hour
1674
- 'm': [1, 2], # minute
1675
- 's': [1, 2], 'S': None, 'A': None, # second
1676
- 'z': [1, 2, 3, 4], 'Z': [1, 2, 3, 4, 5], 'O': [1, 4], 'v': [1, 4], # zone
1677
- 'V': [1, 2, 3, 4], 'x': [1, 2, 3, 4, 5], 'X': [1, 2, 3, 4, 5], # zone
1678
- }
1679
-
1680
- #: The pattern characters declared in the Date Field Symbol Table
1681
- #: (https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table)
1682
- #: in order of decreasing magnitude.
1683
- PATTERN_CHAR_ORDER = "GyYuUQqMLlwWdDFgEecabBChHKkjJmsSAzZOvVXx"
1684
-
1685
-
1686
- def parse_pattern(pattern: str | DateTimePattern) -> DateTimePattern:
1687
- """Parse date, time, and datetime format patterns.
1688
-
1689
- >>> parse_pattern("MMMMd").format
1690
- u'%(MMMM)s%(d)s'
1691
- >>> parse_pattern("MMM d, yyyy").format
1692
- u'%(MMM)s %(d)s, %(yyyy)s'
1693
-
1694
- Pattern can contain literal strings in single quotes:
1695
-
1696
- >>> parse_pattern("H:mm' Uhr 'z").format
1697
- u'%(H)s:%(mm)s Uhr %(z)s'
1698
-
1699
- An actual single quote can be used by using two adjacent single quote
1700
- characters:
1701
-
1702
- >>> parse_pattern("hh' o''clock'").format
1703
- u"%(hh)s o'clock"
1704
-
1705
- :param pattern: the formatting pattern to parse
1706
- """
1707
- if isinstance(pattern, DateTimePattern):
1708
- return pattern
1709
- return _cached_parse_pattern(pattern)
1710
-
1711
-
1712
- @lru_cache(maxsize=1024)
1713
- def _cached_parse_pattern(pattern: str) -> DateTimePattern:
1714
- result = []
1715
-
1716
- for tok_type, tok_value in tokenize_pattern(pattern):
1717
- if tok_type == "chars":
1718
- result.append(tok_value.replace('%', '%%'))
1719
- elif tok_type == "field":
1720
- fieldchar, fieldnum = tok_value
1721
- limit = PATTERN_CHARS[fieldchar]
1722
- if limit and fieldnum not in limit:
1723
- raise ValueError(f"Invalid length for field: {fieldchar * fieldnum!r}")
1724
- result.append('%%(%s)s' % (fieldchar * fieldnum))
1725
- else:
1726
- raise NotImplementedError(f"Unknown token type: {tok_type}")
1727
- return DateTimePattern(pattern, ''.join(result))
1728
-
1729
-
1730
- def tokenize_pattern(pattern: str) -> list[tuple[str, str | tuple[str, int]]]:
1731
- """
1732
- Tokenize date format patterns.
1733
-
1734
- Returns a list of (token_type, token_value) tuples.
1735
-
1736
- ``token_type`` may be either "chars" or "field".
1737
-
1738
- For "chars" tokens, the value is the literal value.
1739
-
1740
- For "field" tokens, the value is a tuple of (field character, repetition count).
1741
-
1742
- :param pattern: Pattern string
1743
- :type pattern: str
1744
- :rtype: list[tuple]
1745
- """
1746
- result = []
1747
- quotebuf = None
1748
- charbuf = []
1749
- fieldchar = ['']
1750
- fieldnum = [0]
1751
-
1752
- def append_chars():
1753
- result.append(('chars', ''.join(charbuf).replace('\0', "'")))
1754
- del charbuf[:]
1755
-
1756
- def append_field():
1757
- result.append(('field', (fieldchar[0], fieldnum[0])))
1758
- fieldchar[0] = ''
1759
- fieldnum[0] = 0
1760
-
1761
- for char in pattern.replace("''", '\0'):
1762
- if quotebuf is None:
1763
- if char == "'": # quote started
1764
- if fieldchar[0]:
1765
- append_field()
1766
- elif charbuf:
1767
- append_chars()
1768
- quotebuf = []
1769
- elif char in PATTERN_CHARS:
1770
- if charbuf:
1771
- append_chars()
1772
- if char == fieldchar[0]:
1773
- fieldnum[0] += 1
1774
- else:
1775
- if fieldchar[0]:
1776
- append_field()
1777
- fieldchar[0] = char
1778
- fieldnum[0] = 1
1779
- else:
1780
- if fieldchar[0]:
1781
- append_field()
1782
- charbuf.append(char)
1783
-
1784
- elif quotebuf is not None:
1785
- if char == "'": # end of quote
1786
- charbuf.extend(quotebuf)
1787
- quotebuf = None
1788
- else: # inside quote
1789
- quotebuf.append(char)
1790
-
1791
- if fieldchar[0]:
1792
- append_field()
1793
- elif charbuf:
1794
- append_chars()
1795
-
1796
- return result
1797
-
1798
-
1799
- def untokenize_pattern(tokens: Iterable[tuple[str, str | tuple[str, int]]]) -> str:
1800
- """
1801
- Turn a date format pattern token stream back into a string.
1802
-
1803
- This is the reverse operation of ``tokenize_pattern``.
1804
-
1805
- :type tokens: Iterable[tuple]
1806
- :rtype: str
1807
- """
1808
- output = []
1809
- for tok_type, tok_value in tokens:
1810
- if tok_type == "field":
1811
- output.append(tok_value[0] * tok_value[1])
1812
- elif tok_type == "chars":
1813
- if not any(ch in PATTERN_CHARS for ch in tok_value): # No need to quote
1814
- output.append(tok_value)
1815
- else:
1816
- output.append("'%s'" % tok_value.replace("'", "''"))
1817
- return "".join(output)
1818
-
1819
-
1820
- def split_interval_pattern(pattern: str) -> list[str]:
1821
- """
1822
- Split an interval-describing datetime pattern into multiple pieces.
1823
-
1824
- > The pattern is then designed to be broken up into two pieces by determining the first repeating field.
1825
- - https://www.unicode.org/reports/tr35/tr35-dates.html#intervalFormats
1826
-
1827
- >>> split_interval_pattern(u'E d.M. \u2013 E d.M.')
1828
- [u'E d.M. \u2013 ', 'E d.M.']
1829
- >>> split_interval_pattern("Y 'text' Y 'more text'")
1830
- ["Y 'text '", "Y 'more text'"]
1831
- >>> split_interval_pattern(u"E, MMM d \u2013 E")
1832
- [u'E, MMM d \u2013 ', u'E']
1833
- >>> split_interval_pattern("MMM d")
1834
- ['MMM d']
1835
- >>> split_interval_pattern("y G")
1836
- ['y G']
1837
- >>> split_interval_pattern(u"MMM d \u2013 d")
1838
- [u'MMM d \u2013 ', u'd']
1839
-
1840
- :param pattern: Interval pattern string
1841
- :return: list of "subpatterns"
1842
- """
1843
-
1844
- seen_fields = set()
1845
- parts = [[]]
1846
-
1847
- for tok_type, tok_value in tokenize_pattern(pattern):
1848
- if tok_type == "field":
1849
- if tok_value[0] in seen_fields: # Repeated field
1850
- parts.append([])
1851
- seen_fields.clear()
1852
- seen_fields.add(tok_value[0])
1853
- parts[-1].append((tok_type, tok_value))
1854
-
1855
- return [untokenize_pattern(tokens) for tokens in parts]
1856
-
1857
-
1858
- def match_skeleton(skeleton: str, options: Iterable[str], allow_different_fields: bool = False) -> str | None:
1859
- """
1860
- Find the closest match for the given datetime skeleton among the options given.
1861
-
1862
- This uses the rules outlined in the TR35 document.
1863
-
1864
- >>> match_skeleton('yMMd', ('yMd', 'yMMMd'))
1865
- 'yMd'
1866
-
1867
- >>> match_skeleton('yMMd', ('jyMMd',), allow_different_fields=True)
1868
- 'jyMMd'
1869
-
1870
- >>> match_skeleton('yMMd', ('qyMMd',), allow_different_fields=False)
1871
-
1872
- >>> match_skeleton('hmz', ('hmv',))
1873
- 'hmv'
1874
-
1875
- :param skeleton: The skeleton to match
1876
- :type skeleton: str
1877
- :param options: An iterable of other skeletons to match against
1878
- :type options: Iterable[str]
1879
- :return: The closest skeleton match, or if no match was found, None.
1880
- :rtype: str|None
1881
- """
1882
-
1883
- # TODO: maybe implement pattern expansion?
1884
-
1885
- # Based on the implementation in
1886
- # http://source.icu-project.org/repos/icu/icu4j/trunk/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java
1887
-
1888
- # Filter out falsy values and sort for stability; when `interval_formats` is passed in, there may be a None key.
1889
- options = sorted(option for option in options if option)
1890
-
1891
- if 'z' in skeleton and not any('z' in option for option in options):
1892
- skeleton = skeleton.replace('z', 'v')
1893
-
1894
- get_input_field_width = dict(t[1] for t in tokenize_pattern(skeleton) if t[0] == "field").get
1895
- best_skeleton = None
1896
- best_distance = None
1897
- for option in options:
1898
- get_opt_field_width = dict(t[1] for t in tokenize_pattern(option) if t[0] == "field").get
1899
- distance = 0
1900
- for field in PATTERN_CHARS:
1901
- input_width = get_input_field_width(field, 0)
1902
- opt_width = get_opt_field_width(field, 0)
1903
- if input_width == opt_width:
1904
- continue
1905
- if opt_width == 0 or input_width == 0:
1906
- if not allow_different_fields: # This one is not okay
1907
- option = None
1908
- break
1909
- distance += 0x1000 # Magic weight constant for "entirely different fields"
1910
- elif field == 'M' and ((input_width > 2 and opt_width <= 2) or (input_width <= 2 and opt_width > 2)):
1911
- distance += 0x100 # Magic weight for "text turns into a number"
1912
- else:
1913
- distance += abs(input_width - opt_width)
1914
-
1915
- if not option: # We lost the option along the way (probably due to "allow_different_fields")
1916
- continue
1917
-
1918
- if not best_skeleton or distance < best_distance:
1919
- best_skeleton = option
1920
- best_distance = distance
1921
-
1922
- if distance == 0: # Found a perfect match!
1923
- break
1924
-
1925
- return best_skeleton