android-notify 1.60.0__py3-none-any.whl → 1.60.2__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.

Potentially problematic release.


This version of android-notify might be problematic. Click here for more details.

Files changed (375) hide show
  1. android_notify/config.py +1 -1
  2. {android_notify-1.60.0.dist-info → android_notify-1.60.2.dist-info}/METADATA +4 -4
  3. {android_notify-1.60.0.dist-info → android_notify-1.60.2.dist-info}/RECORD +375 -6
  4. venv/Lib/site-packages/_distutils_hack/__init__.py +239 -0
  5. venv/Lib/site-packages/_distutils_hack/override.py +1 -0
  6. venv/Lib/site-packages/pkg_resources/__init__.py +3713 -0
  7. venv/Lib/site-packages/pkg_resources/py.typed +0 -0
  8. venv/Lib/site-packages/pkg_resources/tests/__init__.py +0 -0
  9. venv/Lib/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py +7 -0
  10. venv/Lib/site-packages/pkg_resources/tests/test_find_distributions.py +56 -0
  11. venv/Lib/site-packages/pkg_resources/tests/test_integration_zope_interface.py +54 -0
  12. venv/Lib/site-packages/pkg_resources/tests/test_markers.py +8 -0
  13. venv/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +485 -0
  14. venv/Lib/site-packages/pkg_resources/tests/test_resources.py +869 -0
  15. venv/Lib/site-packages/pkg_resources/tests/test_working_set.py +505 -0
  16. venv/Lib/site-packages/setuptools/__init__.py +248 -0
  17. venv/Lib/site-packages/setuptools/_core_metadata.py +337 -0
  18. venv/Lib/site-packages/setuptools/_discovery.py +33 -0
  19. venv/Lib/site-packages/setuptools/_distutils/__init__.py +14 -0
  20. venv/Lib/site-packages/setuptools/_distutils/_log.py +3 -0
  21. venv/Lib/site-packages/setuptools/_distutils/_macos_compat.py +12 -0
  22. venv/Lib/site-packages/setuptools/_distutils/_modified.py +95 -0
  23. venv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +16 -0
  24. venv/Lib/site-packages/setuptools/_distutils/archive_util.py +294 -0
  25. venv/Lib/site-packages/setuptools/_distutils/ccompiler.py +26 -0
  26. venv/Lib/site-packages/setuptools/_distutils/cmd.py +554 -0
  27. venv/Lib/site-packages/setuptools/_distutils/command/__init__.py +23 -0
  28. venv/Lib/site-packages/setuptools/_distutils/command/_framework_compat.py +54 -0
  29. venv/Lib/site-packages/setuptools/_distutils/command/bdist.py +167 -0
  30. venv/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py +141 -0
  31. venv/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py +598 -0
  32. venv/Lib/site-packages/setuptools/_distutils/command/build.py +156 -0
  33. venv/Lib/site-packages/setuptools/_distutils/command/build_clib.py +201 -0
  34. venv/Lib/site-packages/setuptools/_distutils/command/build_ext.py +812 -0
  35. venv/Lib/site-packages/setuptools/_distutils/command/build_py.py +407 -0
  36. venv/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +160 -0
  37. venv/Lib/site-packages/setuptools/_distutils/command/check.py +152 -0
  38. venv/Lib/site-packages/setuptools/_distutils/command/clean.py +77 -0
  39. venv/Lib/site-packages/setuptools/_distutils/command/config.py +358 -0
  40. venv/Lib/site-packages/setuptools/_distutils/command/install.py +805 -0
  41. venv/Lib/site-packages/setuptools/_distutils/command/install_data.py +94 -0
  42. venv/Lib/site-packages/setuptools/_distutils/command/install_egg_info.py +91 -0
  43. venv/Lib/site-packages/setuptools/_distutils/command/install_headers.py +46 -0
  44. venv/Lib/site-packages/setuptools/_distutils/command/install_lib.py +238 -0
  45. venv/Lib/site-packages/setuptools/_distutils/command/install_scripts.py +62 -0
  46. venv/Lib/site-packages/setuptools/_distutils/command/sdist.py +521 -0
  47. venv/Lib/site-packages/setuptools/_distutils/compat/__init__.py +18 -0
  48. venv/Lib/site-packages/setuptools/_distutils/compat/numpy.py +2 -0
  49. venv/Lib/site-packages/setuptools/_distutils/compat/py39.py +66 -0
  50. venv/Lib/site-packages/setuptools/_distutils/compilers/C/base.py +1394 -0
  51. venv/Lib/site-packages/setuptools/_distutils/compilers/C/cygwin.py +340 -0
  52. venv/Lib/site-packages/setuptools/_distutils/compilers/C/errors.py +24 -0
  53. venv/Lib/site-packages/setuptools/_distutils/compilers/C/msvc.py +614 -0
  54. venv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_base.py +83 -0
  55. venv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_cygwin.py +76 -0
  56. venv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_mingw.py +48 -0
  57. venv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_msvc.py +136 -0
  58. venv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_unix.py +413 -0
  59. venv/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +422 -0
  60. venv/Lib/site-packages/setuptools/_distutils/compilers/C/zos.py +230 -0
  61. venv/Lib/site-packages/setuptools/_distutils/core.py +289 -0
  62. venv/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py +31 -0
  63. venv/Lib/site-packages/setuptools/_distutils/debug.py +5 -0
  64. venv/Lib/site-packages/setuptools/_distutils/dep_util.py +14 -0
  65. venv/Lib/site-packages/setuptools/_distutils/dir_util.py +244 -0
  66. venv/Lib/site-packages/setuptools/_distutils/dist.py +1386 -0
  67. venv/Lib/site-packages/setuptools/_distutils/errors.py +108 -0
  68. venv/Lib/site-packages/setuptools/_distutils/extension.py +258 -0
  69. venv/Lib/site-packages/setuptools/_distutils/fancy_getopt.py +471 -0
  70. venv/Lib/site-packages/setuptools/_distutils/file_util.py +236 -0
  71. venv/Lib/site-packages/setuptools/_distutils/filelist.py +431 -0
  72. venv/Lib/site-packages/setuptools/_distutils/log.py +56 -0
  73. venv/Lib/site-packages/setuptools/_distutils/spawn.py +134 -0
  74. venv/Lib/site-packages/setuptools/_distutils/sysconfig.py +598 -0
  75. venv/Lib/site-packages/setuptools/_distutils/tests/__init__.py +42 -0
  76. venv/Lib/site-packages/setuptools/_distutils/tests/compat/__init__.py +0 -0
  77. venv/Lib/site-packages/setuptools/_distutils/tests/compat/py39.py +40 -0
  78. venv/Lib/site-packages/setuptools/_distutils/tests/support.py +134 -0
  79. venv/Lib/site-packages/setuptools/_distutils/tests/test_archive_util.py +353 -0
  80. venv/Lib/site-packages/setuptools/_distutils/tests/test_bdist.py +47 -0
  81. venv/Lib/site-packages/setuptools/_distutils/tests/test_bdist_dumb.py +78 -0
  82. venv/Lib/site-packages/setuptools/_distutils/tests/test_bdist_rpm.py +127 -0
  83. venv/Lib/site-packages/setuptools/_distutils/tests/test_build.py +49 -0
  84. venv/Lib/site-packages/setuptools/_distutils/tests/test_build_clib.py +134 -0
  85. venv/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +628 -0
  86. venv/Lib/site-packages/setuptools/_distutils/tests/test_build_py.py +196 -0
  87. venv/Lib/site-packages/setuptools/_distutils/tests/test_build_scripts.py +96 -0
  88. venv/Lib/site-packages/setuptools/_distutils/tests/test_check.py +194 -0
  89. venv/Lib/site-packages/setuptools/_distutils/tests/test_clean.py +45 -0
  90. venv/Lib/site-packages/setuptools/_distutils/tests/test_cmd.py +107 -0
  91. venv/Lib/site-packages/setuptools/_distutils/tests/test_config_cmd.py +87 -0
  92. venv/Lib/site-packages/setuptools/_distutils/tests/test_core.py +130 -0
  93. venv/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +139 -0
  94. venv/Lib/site-packages/setuptools/_distutils/tests/test_dist.py +552 -0
  95. venv/Lib/site-packages/setuptools/_distutils/tests/test_extension.py +117 -0
  96. venv/Lib/site-packages/setuptools/_distutils/tests/test_file_util.py +95 -0
  97. venv/Lib/site-packages/setuptools/_distutils/tests/test_filelist.py +336 -0
  98. venv/Lib/site-packages/setuptools/_distutils/tests/test_install.py +245 -0
  99. venv/Lib/site-packages/setuptools/_distutils/tests/test_install_data.py +74 -0
  100. venv/Lib/site-packages/setuptools/_distutils/tests/test_install_headers.py +33 -0
  101. venv/Lib/site-packages/setuptools/_distutils/tests/test_install_lib.py +110 -0
  102. venv/Lib/site-packages/setuptools/_distutils/tests/test_install_scripts.py +52 -0
  103. venv/Lib/site-packages/setuptools/_distutils/tests/test_log.py +12 -0
  104. venv/Lib/site-packages/setuptools/_distutils/tests/test_modified.py +126 -0
  105. venv/Lib/site-packages/setuptools/_distutils/tests/test_sdist.py +470 -0
  106. venv/Lib/site-packages/setuptools/_distutils/tests/test_spawn.py +141 -0
  107. venv/Lib/site-packages/setuptools/_distutils/tests/test_sysconfig.py +319 -0
  108. venv/Lib/site-packages/setuptools/_distutils/tests/test_text_file.py +127 -0
  109. venv/Lib/site-packages/setuptools/_distutils/tests/test_util.py +243 -0
  110. venv/Lib/site-packages/setuptools/_distutils/tests/test_version.py +80 -0
  111. venv/Lib/site-packages/setuptools/_distutils/tests/test_versionpredicate.py +0 -0
  112. venv/Lib/site-packages/setuptools/_distutils/tests/unix_compat.py +17 -0
  113. venv/Lib/site-packages/setuptools/_distutils/text_file.py +286 -0
  114. venv/Lib/site-packages/setuptools/_distutils/unixccompiler.py +9 -0
  115. venv/Lib/site-packages/setuptools/_distutils/util.py +518 -0
  116. venv/Lib/site-packages/setuptools/_distutils/version.py +348 -0
  117. venv/Lib/site-packages/setuptools/_distutils/versionpredicate.py +175 -0
  118. venv/Lib/site-packages/setuptools/_distutils/zosccompiler.py +3 -0
  119. venv/Lib/site-packages/setuptools/_entry_points.py +94 -0
  120. venv/Lib/site-packages/setuptools/_imp.py +87 -0
  121. venv/Lib/site-packages/setuptools/_importlib.py +9 -0
  122. venv/Lib/site-packages/setuptools/_itertools.py +23 -0
  123. venv/Lib/site-packages/setuptools/_normalization.py +177 -0
  124. venv/Lib/site-packages/setuptools/_path.py +93 -0
  125. venv/Lib/site-packages/setuptools/_reqs.py +42 -0
  126. venv/Lib/site-packages/setuptools/_scripts.py +361 -0
  127. venv/Lib/site-packages/setuptools/_shutil.py +59 -0
  128. venv/Lib/site-packages/setuptools/_static.py +188 -0
  129. venv/Lib/site-packages/setuptools/_vendor/autocommand/__init__.py +27 -0
  130. venv/Lib/site-packages/setuptools/_vendor/autocommand/autoasync.py +142 -0
  131. venv/Lib/site-packages/setuptools/_vendor/autocommand/autocommand.py +70 -0
  132. venv/Lib/site-packages/setuptools/_vendor/autocommand/automain.py +59 -0
  133. venv/Lib/site-packages/setuptools/_vendor/autocommand/autoparse.py +333 -0
  134. venv/Lib/site-packages/setuptools/_vendor/autocommand/errors.py +23 -0
  135. venv/Lib/site-packages/setuptools/_vendor/backports/__init__.py +1 -0
  136. venv/Lib/site-packages/setuptools/_vendor/backports/tarfile/__init__.py +2937 -0
  137. venv/Lib/site-packages/setuptools/_vendor/backports/tarfile/__main__.py +5 -0
  138. venv/Lib/site-packages/setuptools/_vendor/backports/tarfile/compat/__init__.py +0 -0
  139. venv/Lib/site-packages/setuptools/_vendor/backports/tarfile/compat/py38.py +24 -0
  140. venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/__init__.py +1083 -0
  141. venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_adapters.py +83 -0
  142. venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_collections.py +30 -0
  143. venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_compat.py +57 -0
  144. venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_functools.py +104 -0
  145. venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_itertools.py +73 -0
  146. venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_meta.py +67 -0
  147. venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_text.py +99 -0
  148. venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat/__init__.py +0 -0
  149. venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat/py311.py +22 -0
  150. venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat/py39.py +36 -0
  151. venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/diagnose.py +21 -0
  152. venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/py.typed +0 -0
  153. venv/Lib/site-packages/setuptools/_vendor/inflect/__init__.py +3986 -0
  154. venv/Lib/site-packages/setuptools/_vendor/inflect/compat/__init__.py +0 -0
  155. venv/Lib/site-packages/setuptools/_vendor/inflect/compat/py38.py +7 -0
  156. venv/Lib/site-packages/setuptools/_vendor/inflect/py.typed +0 -0
  157. venv/Lib/site-packages/setuptools/_vendor/jaraco/collections/__init__.py +1091 -0
  158. venv/Lib/site-packages/setuptools/_vendor/jaraco/collections/py.typed +0 -0
  159. venv/Lib/site-packages/setuptools/_vendor/jaraco/context.py +361 -0
  160. venv/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.py +633 -0
  161. venv/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi +125 -0
  162. venv/Lib/site-packages/setuptools/_vendor/jaraco/functools/py.typed +0 -0
  163. venv/Lib/site-packages/setuptools/_vendor/jaraco/text/__init__.py +624 -0
  164. venv/Lib/site-packages/setuptools/_vendor/jaraco/text/layouts.py +25 -0
  165. venv/Lib/site-packages/setuptools/_vendor/jaraco/text/show-newlines.py +33 -0
  166. venv/Lib/site-packages/setuptools/_vendor/jaraco/text/strip-prefix.py +21 -0
  167. venv/Lib/site-packages/setuptools/_vendor/jaraco/text/to-dvorak.py +6 -0
  168. venv/Lib/site-packages/setuptools/_vendor/jaraco/text/to-qwerty.py +6 -0
  169. venv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py +6 -0
  170. venv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.pyi +2 -0
  171. venv/Lib/site-packages/setuptools/_vendor/more_itertools/more.py +4806 -0
  172. venv/Lib/site-packages/setuptools/_vendor/more_itertools/more.pyi +709 -0
  173. venv/Lib/site-packages/setuptools/_vendor/more_itertools/py.typed +0 -0
  174. venv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py +1046 -0
  175. venv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.pyi +136 -0
  176. venv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +15 -0
  177. venv/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +110 -0
  178. venv/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +263 -0
  179. venv/Lib/site-packages/setuptools/_vendor/packaging/_musllinux.py +85 -0
  180. venv/Lib/site-packages/setuptools/_vendor/packaging/_parser.py +354 -0
  181. venv/Lib/site-packages/setuptools/_vendor/packaging/_structures.py +61 -0
  182. venv/Lib/site-packages/setuptools/_vendor/packaging/_tokenizer.py +194 -0
  183. venv/Lib/site-packages/setuptools/_vendor/packaging/licenses/__init__.py +145 -0
  184. venv/Lib/site-packages/setuptools/_vendor/packaging/licenses/_spdx.py +759 -0
  185. venv/Lib/site-packages/setuptools/_vendor/packaging/markers.py +331 -0
  186. venv/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +863 -0
  187. venv/Lib/site-packages/setuptools/_vendor/packaging/py.typed +0 -0
  188. venv/Lib/site-packages/setuptools/_vendor/packaging/requirements.py +91 -0
  189. venv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +1020 -0
  190. venv/Lib/site-packages/setuptools/_vendor/packaging/tags.py +617 -0
  191. venv/Lib/site-packages/setuptools/_vendor/packaging/utils.py +163 -0
  192. venv/Lib/site-packages/setuptools/_vendor/packaging/version.py +582 -0
  193. venv/Lib/site-packages/setuptools/_vendor/platformdirs/__init__.py +627 -0
  194. venv/Lib/site-packages/setuptools/_vendor/platformdirs/__main__.py +55 -0
  195. venv/Lib/site-packages/setuptools/_vendor/platformdirs/android.py +249 -0
  196. venv/Lib/site-packages/setuptools/_vendor/platformdirs/api.py +292 -0
  197. venv/Lib/site-packages/setuptools/_vendor/platformdirs/macos.py +130 -0
  198. venv/Lib/site-packages/setuptools/_vendor/platformdirs/py.typed +0 -0
  199. venv/Lib/site-packages/setuptools/_vendor/platformdirs/unix.py +275 -0
  200. venv/Lib/site-packages/setuptools/_vendor/platformdirs/version.py +16 -0
  201. venv/Lib/site-packages/setuptools/_vendor/platformdirs/windows.py +272 -0
  202. venv/Lib/site-packages/setuptools/_vendor/tomli/__init__.py +11 -0
  203. venv/Lib/site-packages/setuptools/_vendor/tomli/_parser.py +691 -0
  204. venv/Lib/site-packages/setuptools/_vendor/tomli/_re.py +107 -0
  205. venv/Lib/site-packages/setuptools/_vendor/tomli/_types.py +10 -0
  206. venv/Lib/site-packages/setuptools/_vendor/tomli/py.typed +1 -0
  207. venv/Lib/site-packages/setuptools/_vendor/typeguard/__init__.py +48 -0
  208. venv/Lib/site-packages/setuptools/_vendor/typeguard/_checkers.py +993 -0
  209. venv/Lib/site-packages/setuptools/_vendor/typeguard/_config.py +108 -0
  210. venv/Lib/site-packages/setuptools/_vendor/typeguard/_decorators.py +235 -0
  211. venv/Lib/site-packages/setuptools/_vendor/typeguard/_exceptions.py +42 -0
  212. venv/Lib/site-packages/setuptools/_vendor/typeguard/_functions.py +308 -0
  213. venv/Lib/site-packages/setuptools/_vendor/typeguard/_importhook.py +213 -0
  214. venv/Lib/site-packages/setuptools/_vendor/typeguard/_memo.py +48 -0
  215. venv/Lib/site-packages/setuptools/_vendor/typeguard/_pytest_plugin.py +127 -0
  216. venv/Lib/site-packages/setuptools/_vendor/typeguard/_suppression.py +86 -0
  217. venv/Lib/site-packages/setuptools/_vendor/typeguard/_transformer.py +1229 -0
  218. venv/Lib/site-packages/setuptools/_vendor/typeguard/_union_transformer.py +55 -0
  219. venv/Lib/site-packages/setuptools/_vendor/typeguard/_utils.py +173 -0
  220. venv/Lib/site-packages/setuptools/_vendor/typeguard/py.typed +0 -0
  221. venv/Lib/site-packages/setuptools/_vendor/typing_extensions.py +3641 -0
  222. venv/Lib/site-packages/setuptools/_vendor/wheel/__init__.py +3 -0
  223. venv/Lib/site-packages/setuptools/_vendor/wheel/__main__.py +23 -0
  224. venv/Lib/site-packages/setuptools/_vendor/wheel/_bdist_wheel.py +613 -0
  225. venv/Lib/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py +26 -0
  226. venv/Lib/site-packages/setuptools/_vendor/wheel/bdist_wheel.py +26 -0
  227. venv/Lib/site-packages/setuptools/_vendor/wheel/cli/__init__.py +155 -0
  228. venv/Lib/site-packages/setuptools/_vendor/wheel/cli/convert.py +332 -0
  229. venv/Lib/site-packages/setuptools/_vendor/wheel/cli/pack.py +85 -0
  230. venv/Lib/site-packages/setuptools/_vendor/wheel/cli/tags.py +139 -0
  231. venv/Lib/site-packages/setuptools/_vendor/wheel/cli/unpack.py +30 -0
  232. venv/Lib/site-packages/setuptools/_vendor/wheel/macosx_libfile.py +482 -0
  233. venv/Lib/site-packages/setuptools/_vendor/wheel/metadata.py +183 -0
  234. venv/Lib/site-packages/setuptools/_vendor/wheel/util.py +17 -0
  235. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/__init__.py +0 -0
  236. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/__init__.py +0 -0
  237. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_elffile.py +108 -0
  238. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_manylinux.py +260 -0
  239. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_musllinux.py +83 -0
  240. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_parser.py +356 -0
  241. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_structures.py +61 -0
  242. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_tokenizer.py +192 -0
  243. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/markers.py +253 -0
  244. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/requirements.py +90 -0
  245. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/specifiers.py +1011 -0
  246. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/tags.py +571 -0
  247. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/utils.py +172 -0
  248. venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/version.py +561 -0
  249. venv/Lib/site-packages/setuptools/_vendor/wheel/wheelfile.py +227 -0
  250. venv/Lib/site-packages/setuptools/_vendor/zipp/__init__.py +501 -0
  251. venv/Lib/site-packages/setuptools/_vendor/zipp/compat/__init__.py +0 -0
  252. venv/Lib/site-packages/setuptools/_vendor/zipp/compat/py310.py +11 -0
  253. venv/Lib/site-packages/setuptools/_vendor/zipp/glob.py +106 -0
  254. venv/Lib/site-packages/setuptools/archive_util.py +219 -0
  255. venv/Lib/site-packages/setuptools/build_meta.py +548 -0
  256. venv/Lib/site-packages/setuptools/command/__init__.py +21 -0
  257. venv/Lib/site-packages/setuptools/command/_requirestxt.py +131 -0
  258. venv/Lib/site-packages/setuptools/command/alias.py +77 -0
  259. venv/Lib/site-packages/setuptools/command/bdist_egg.py +477 -0
  260. venv/Lib/site-packages/setuptools/command/bdist_rpm.py +42 -0
  261. venv/Lib/site-packages/setuptools/command/bdist_wheel.py +604 -0
  262. venv/Lib/site-packages/setuptools/command/build.py +135 -0
  263. venv/Lib/site-packages/setuptools/command/build_clib.py +103 -0
  264. venv/Lib/site-packages/setuptools/command/build_ext.py +470 -0
  265. venv/Lib/site-packages/setuptools/command/build_py.py +400 -0
  266. venv/Lib/site-packages/setuptools/command/develop.py +55 -0
  267. venv/Lib/site-packages/setuptools/command/dist_info.py +103 -0
  268. venv/Lib/site-packages/setuptools/command/easy_install.py +30 -0
  269. venv/Lib/site-packages/setuptools/command/editable_wheel.py +908 -0
  270. venv/Lib/site-packages/setuptools/command/egg_info.py +718 -0
  271. venv/Lib/site-packages/setuptools/command/install.py +131 -0
  272. venv/Lib/site-packages/setuptools/command/install_egg_info.py +58 -0
  273. venv/Lib/site-packages/setuptools/command/install_lib.py +137 -0
  274. venv/Lib/site-packages/setuptools/command/install_scripts.py +67 -0
  275. venv/Lib/site-packages/setuptools/command/rotate.py +65 -0
  276. venv/Lib/site-packages/setuptools/command/saveopts.py +21 -0
  277. venv/Lib/site-packages/setuptools/command/sdist.py +217 -0
  278. venv/Lib/site-packages/setuptools/command/setopt.py +141 -0
  279. venv/Lib/site-packages/setuptools/command/test.py +45 -0
  280. venv/Lib/site-packages/setuptools/compat/__init__.py +0 -0
  281. venv/Lib/site-packages/setuptools/compat/py310.py +20 -0
  282. venv/Lib/site-packages/setuptools/compat/py311.py +27 -0
  283. venv/Lib/site-packages/setuptools/compat/py312.py +13 -0
  284. venv/Lib/site-packages/setuptools/compat/py39.py +9 -0
  285. venv/Lib/site-packages/setuptools/config/__init__.py +43 -0
  286. venv/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +526 -0
  287. venv/Lib/site-packages/setuptools/config/_validate_pyproject/__init__.py +34 -0
  288. venv/Lib/site-packages/setuptools/config/_validate_pyproject/error_reporting.py +336 -0
  289. venv/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +82 -0
  290. venv/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py +51 -0
  291. venv/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +1412 -0
  292. venv/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +402 -0
  293. venv/Lib/site-packages/setuptools/config/expand.py +452 -0
  294. venv/Lib/site-packages/setuptools/config/pyprojecttoml.py +468 -0
  295. venv/Lib/site-packages/setuptools/config/setupcfg.py +780 -0
  296. venv/Lib/site-packages/setuptools/depends.py +185 -0
  297. venv/Lib/site-packages/setuptools/discovery.py +614 -0
  298. venv/Lib/site-packages/setuptools/dist.py +1119 -0
  299. venv/Lib/site-packages/setuptools/errors.py +67 -0
  300. venv/Lib/site-packages/setuptools/extension.py +177 -0
  301. venv/Lib/site-packages/setuptools/glob.py +185 -0
  302. venv/Lib/site-packages/setuptools/installer.py +155 -0
  303. venv/Lib/site-packages/setuptools/launch.py +36 -0
  304. venv/Lib/site-packages/setuptools/logging.py +40 -0
  305. venv/Lib/site-packages/setuptools/modified.py +18 -0
  306. venv/Lib/site-packages/setuptools/monkey.py +126 -0
  307. venv/Lib/site-packages/setuptools/msvc.py +1536 -0
  308. venv/Lib/site-packages/setuptools/namespaces.py +106 -0
  309. venv/Lib/site-packages/setuptools/tests/__init__.py +13 -0
  310. venv/Lib/site-packages/setuptools/tests/compat/__init__.py +0 -0
  311. venv/Lib/site-packages/setuptools/tests/compat/py39.py +3 -0
  312. venv/Lib/site-packages/setuptools/tests/config/__init__.py +0 -0
  313. venv/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +59 -0
  314. venv/Lib/site-packages/setuptools/tests/config/downloads/preload.py +18 -0
  315. venv/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +772 -0
  316. venv/Lib/site-packages/setuptools/tests/config/test_expand.py +247 -0
  317. venv/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +396 -0
  318. venv/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +109 -0
  319. venv/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +980 -0
  320. venv/Lib/site-packages/setuptools/tests/contexts.py +131 -0
  321. venv/Lib/site-packages/setuptools/tests/environment.py +95 -0
  322. venv/Lib/site-packages/setuptools/tests/fixtures.py +392 -0
  323. venv/Lib/site-packages/setuptools/tests/integration/__init__.py +0 -0
  324. venv/Lib/site-packages/setuptools/tests/integration/helpers.py +77 -0
  325. venv/Lib/site-packages/setuptools/tests/integration/test_pbr.py +20 -0
  326. venv/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +223 -0
  327. venv/Lib/site-packages/setuptools/tests/mod_with_constant.py +1 -0
  328. venv/Lib/site-packages/setuptools/tests/namespaces.py +90 -0
  329. venv/Lib/site-packages/setuptools/tests/script-with-bom.py +1 -0
  330. venv/Lib/site-packages/setuptools/tests/test_archive_util.py +36 -0
  331. venv/Lib/site-packages/setuptools/tests/test_bdist_deprecations.py +28 -0
  332. venv/Lib/site-packages/setuptools/tests/test_bdist_egg.py +73 -0
  333. venv/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +708 -0
  334. venv/Lib/site-packages/setuptools/tests/test_build.py +33 -0
  335. venv/Lib/site-packages/setuptools/tests/test_build_clib.py +84 -0
  336. venv/Lib/site-packages/setuptools/tests/test_build_ext.py +293 -0
  337. venv/Lib/site-packages/setuptools/tests/test_build_meta.py +959 -0
  338. venv/Lib/site-packages/setuptools/tests/test_build_py.py +480 -0
  339. venv/Lib/site-packages/setuptools/tests/test_config_discovery.py +647 -0
  340. venv/Lib/site-packages/setuptools/tests/test_core_metadata.py +622 -0
  341. venv/Lib/site-packages/setuptools/tests/test_depends.py +15 -0
  342. venv/Lib/site-packages/setuptools/tests/test_develop.py +112 -0
  343. venv/Lib/site-packages/setuptools/tests/test_dist.py +278 -0
  344. venv/Lib/site-packages/setuptools/tests/test_dist_info.py +147 -0
  345. venv/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +198 -0
  346. venv/Lib/site-packages/setuptools/tests/test_editable_install.py +1263 -0
  347. venv/Lib/site-packages/setuptools/tests/test_egg_info.py +1306 -0
  348. venv/Lib/site-packages/setuptools/tests/test_extern.py +15 -0
  349. venv/Lib/site-packages/setuptools/tests/test_find_packages.py +218 -0
  350. venv/Lib/site-packages/setuptools/tests/test_find_py_modules.py +73 -0
  351. venv/Lib/site-packages/setuptools/tests/test_glob.py +45 -0
  352. venv/Lib/site-packages/setuptools/tests/test_install_scripts.py +89 -0
  353. venv/Lib/site-packages/setuptools/tests/test_logging.py +76 -0
  354. venv/Lib/site-packages/setuptools/tests/test_manifest.py +622 -0
  355. venv/Lib/site-packages/setuptools/tests/test_namespaces.py +138 -0
  356. venv/Lib/site-packages/setuptools/tests/test_scripts.py +12 -0
  357. venv/Lib/site-packages/setuptools/tests/test_sdist.py +984 -0
  358. venv/Lib/site-packages/setuptools/tests/test_setopt.py +40 -0
  359. venv/Lib/site-packages/setuptools/tests/test_setuptools.py +290 -0
  360. venv/Lib/site-packages/setuptools/tests/test_shutil_wrapper.py +23 -0
  361. venv/Lib/site-packages/setuptools/tests/test_unicode_utils.py +10 -0
  362. venv/Lib/site-packages/setuptools/tests/test_virtualenv.py +113 -0
  363. venv/Lib/site-packages/setuptools/tests/test_warnings.py +106 -0
  364. venv/Lib/site-packages/setuptools/tests/test_wheel.py +690 -0
  365. venv/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +258 -0
  366. venv/Lib/site-packages/setuptools/tests/text.py +4 -0
  367. venv/Lib/site-packages/setuptools/tests/textwrap.py +6 -0
  368. venv/Lib/site-packages/setuptools/unicode_utils.py +102 -0
  369. venv/Lib/site-packages/setuptools/version.py +6 -0
  370. venv/Lib/site-packages/setuptools/warnings.py +110 -0
  371. venv/Lib/site-packages/setuptools/wheel.py +261 -0
  372. venv/Lib/site-packages/setuptools/windows_support.py +30 -0
  373. {android_notify-1.60.0.dist-info → android_notify-1.60.2.dist-info}/WHEEL +0 -0
  374. {android_notify-1.60.0.dist-info → android_notify-1.60.2.dist-info}/entry_points.txt +0 -0
  375. {android_notify-1.60.0.dist-info → android_notify-1.60.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,468 @@
1
+ """
2
+ Load setuptools configuration from ``pyproject.toml`` files.
3
+
4
+ **PRIVATE MODULE**: API reserved for setuptools internal usage only.
5
+
6
+ To read project metadata, consider using
7
+ ``build.util.project_wheel_metadata`` (https://pypi.org/project/build/).
8
+ For simple scenarios, you can also try parsing the file directly
9
+ with the help of ``tomllib`` or ``tomli``.
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ import logging
15
+ import os
16
+ from collections.abc import Mapping
17
+ from contextlib import contextmanager
18
+ from functools import partial
19
+ from types import TracebackType
20
+ from typing import TYPE_CHECKING, Any, Callable
21
+
22
+ from .._path import StrPath
23
+ from ..errors import FileError, InvalidConfigError
24
+ from ..warnings import SetuptoolsWarning
25
+ from . import expand as _expand
26
+ from ._apply_pyprojecttoml import _PREVIOUSLY_DEFINED, _MissingDynamic, apply as _apply
27
+
28
+ if TYPE_CHECKING:
29
+ from typing_extensions import Self
30
+
31
+ from setuptools.dist import Distribution
32
+
33
+ _logger = logging.getLogger(__name__)
34
+
35
+
36
+ def load_file(filepath: StrPath) -> dict:
37
+ from ..compat.py310 import tomllib
38
+
39
+ with open(filepath, "rb") as file:
40
+ return tomllib.load(file)
41
+
42
+
43
+ def validate(config: dict, filepath: StrPath) -> bool:
44
+ from . import _validate_pyproject as validator
45
+
46
+ trove_classifier = validator.FORMAT_FUNCTIONS.get("trove-classifier")
47
+ if hasattr(trove_classifier, "_disable_download"):
48
+ # Improve reproducibility by default. See abravalheri/validate-pyproject#31
49
+ trove_classifier._disable_download() # type: ignore[union-attr]
50
+
51
+ try:
52
+ return validator.validate(config)
53
+ except validator.ValidationError as ex:
54
+ summary = f"configuration error: {ex.summary}"
55
+ if ex.name.strip("`") != "project":
56
+ # Probably it is just a field missing/misnamed, not worthy the verbosity...
57
+ _logger.debug(summary)
58
+ _logger.debug(ex.details)
59
+
60
+ error = f"invalid pyproject.toml config: {ex.name}."
61
+ raise ValueError(f"{error}\n{summary}") from None
62
+
63
+
64
+ def apply_configuration(
65
+ dist: Distribution,
66
+ filepath: StrPath,
67
+ ignore_option_errors: bool = False,
68
+ ) -> Distribution:
69
+ """Apply the configuration from a ``pyproject.toml`` file into an existing
70
+ distribution object.
71
+ """
72
+ config = read_configuration(filepath, True, ignore_option_errors, dist)
73
+ return _apply(dist, config, filepath)
74
+
75
+
76
+ def read_configuration(
77
+ filepath: StrPath,
78
+ expand: bool = True,
79
+ ignore_option_errors: bool = False,
80
+ dist: Distribution | None = None,
81
+ ) -> dict[str, Any]:
82
+ """Read given configuration file and returns options from it as a dict.
83
+
84
+ :param str|unicode filepath: Path to configuration file in the ``pyproject.toml``
85
+ format.
86
+
87
+ :param bool expand: Whether to expand directives and other computed values
88
+ (i.e. post-process the given configuration)
89
+
90
+ :param bool ignore_option_errors: Whether to silently ignore
91
+ options, values of which could not be resolved (e.g. due to exceptions
92
+ in directives such as file:, attr:, etc.).
93
+ If False exceptions are propagated as expected.
94
+
95
+ :param Distribution|None: Distribution object to which the configuration refers.
96
+ If not given a dummy object will be created and discarded after the
97
+ configuration is read. This is used for auto-discovery of packages and in the
98
+ case a dynamic configuration (e.g. ``attr`` or ``cmdclass``) is expanded.
99
+ When ``expand=False`` this object is simply ignored.
100
+
101
+ :rtype: dict
102
+ """
103
+ filepath = os.path.abspath(filepath)
104
+
105
+ if not os.path.isfile(filepath):
106
+ raise FileError(f"Configuration file {filepath!r} does not exist.")
107
+
108
+ asdict = load_file(filepath) or {}
109
+ project_table = asdict.get("project", {})
110
+ tool_table = asdict.get("tool", {})
111
+ setuptools_table = tool_table.get("setuptools", {})
112
+ if not asdict or not (project_table or setuptools_table):
113
+ return {} # User is not using pyproject to configure setuptools
114
+
115
+ if "setuptools" in asdict.get("tools", {}):
116
+ # let the user know they probably have a typo in their metadata
117
+ _ToolsTypoInMetadata.emit()
118
+
119
+ if "distutils" in tool_table:
120
+ _ExperimentalConfiguration.emit(subject="[tool.distutils]")
121
+
122
+ # There is an overall sense in the community that making include_package_data=True
123
+ # the default would be an improvement.
124
+ # `ini2toml` backfills include_package_data=False when nothing is explicitly given,
125
+ # therefore setting a default here is backwards compatible.
126
+ if dist and dist.include_package_data is not None:
127
+ setuptools_table.setdefault("include-package-data", dist.include_package_data)
128
+ else:
129
+ setuptools_table.setdefault("include-package-data", True)
130
+ # Persist changes:
131
+ asdict["tool"] = tool_table
132
+ tool_table["setuptools"] = setuptools_table
133
+
134
+ if "ext-modules" in setuptools_table:
135
+ _ExperimentalConfiguration.emit(subject="[tool.setuptools.ext-modules]")
136
+
137
+ with _ignore_errors(ignore_option_errors):
138
+ # Don't complain about unrelated errors (e.g. tools not using the "tool" table)
139
+ subset = {"project": project_table, "tool": {"setuptools": setuptools_table}}
140
+ validate(subset, filepath)
141
+
142
+ if expand:
143
+ root_dir = os.path.dirname(filepath)
144
+ return expand_configuration(asdict, root_dir, ignore_option_errors, dist)
145
+
146
+ return asdict
147
+
148
+
149
+ def expand_configuration(
150
+ config: dict,
151
+ root_dir: StrPath | None = None,
152
+ ignore_option_errors: bool = False,
153
+ dist: Distribution | None = None,
154
+ ) -> dict:
155
+ """Given a configuration with unresolved fields (e.g. dynamic, cmdclass, ...)
156
+ find their final values.
157
+
158
+ :param dict config: Dict containing the configuration for the distribution
159
+ :param str root_dir: Top-level directory for the distribution/project
160
+ (the same directory where ``pyproject.toml`` is place)
161
+ :param bool ignore_option_errors: see :func:`read_configuration`
162
+ :param Distribution|None: Distribution object to which the configuration refers.
163
+ If not given a dummy object will be created and discarded after the
164
+ configuration is read. Used in the case a dynamic configuration
165
+ (e.g. ``attr`` or ``cmdclass``).
166
+
167
+ :rtype: dict
168
+ """
169
+ return _ConfigExpander(config, root_dir, ignore_option_errors, dist).expand()
170
+
171
+
172
+ class _ConfigExpander:
173
+ def __init__(
174
+ self,
175
+ config: dict,
176
+ root_dir: StrPath | None = None,
177
+ ignore_option_errors: bool = False,
178
+ dist: Distribution | None = None,
179
+ ) -> None:
180
+ self.config = config
181
+ self.root_dir = root_dir or os.getcwd()
182
+ self.project_cfg = config.get("project", {})
183
+ self.dynamic = self.project_cfg.get("dynamic", [])
184
+ self.setuptools_cfg = config.get("tool", {}).get("setuptools", {})
185
+ self.dynamic_cfg = self.setuptools_cfg.get("dynamic", {})
186
+ self.ignore_option_errors = ignore_option_errors
187
+ self._dist = dist
188
+ self._referenced_files = set[str]()
189
+
190
+ def _ensure_dist(self) -> Distribution:
191
+ from setuptools.dist import Distribution
192
+
193
+ attrs = {"src_root": self.root_dir, "name": self.project_cfg.get("name", None)}
194
+ return self._dist or Distribution(attrs)
195
+
196
+ def _process_field(self, container: dict, field: str, fn: Callable):
197
+ if field in container:
198
+ with _ignore_errors(self.ignore_option_errors):
199
+ container[field] = fn(container[field])
200
+
201
+ def _canonic_package_data(self, field="package-data"):
202
+ package_data = self.setuptools_cfg.get(field, {})
203
+ return _expand.canonic_package_data(package_data)
204
+
205
+ def expand(self):
206
+ self._expand_packages()
207
+ self._canonic_package_data()
208
+ self._canonic_package_data("exclude-package-data")
209
+
210
+ # A distribution object is required for discovering the correct package_dir
211
+ dist = self._ensure_dist()
212
+ ctx = _EnsurePackagesDiscovered(dist, self.project_cfg, self.setuptools_cfg)
213
+ with ctx as ensure_discovered:
214
+ package_dir = ensure_discovered.package_dir
215
+ self._expand_data_files()
216
+ self._expand_cmdclass(package_dir)
217
+ self._expand_all_dynamic(dist, package_dir)
218
+
219
+ dist._referenced_files.update(self._referenced_files)
220
+ return self.config
221
+
222
+ def _expand_packages(self):
223
+ packages = self.setuptools_cfg.get("packages")
224
+ if packages is None or isinstance(packages, (list, tuple)):
225
+ return
226
+
227
+ find = packages.get("find")
228
+ if isinstance(find, dict):
229
+ find["root_dir"] = self.root_dir
230
+ find["fill_package_dir"] = self.setuptools_cfg.setdefault("package-dir", {})
231
+ with _ignore_errors(self.ignore_option_errors):
232
+ self.setuptools_cfg["packages"] = _expand.find_packages(**find)
233
+
234
+ def _expand_data_files(self):
235
+ data_files = partial(_expand.canonic_data_files, root_dir=self.root_dir)
236
+ self._process_field(self.setuptools_cfg, "data-files", data_files)
237
+
238
+ def _expand_cmdclass(self, package_dir: Mapping[str, str]):
239
+ root_dir = self.root_dir
240
+ cmdclass = partial(_expand.cmdclass, package_dir=package_dir, root_dir=root_dir)
241
+ self._process_field(self.setuptools_cfg, "cmdclass", cmdclass)
242
+
243
+ def _expand_all_dynamic(self, dist: Distribution, package_dir: Mapping[str, str]):
244
+ special = ( # need special handling
245
+ "version",
246
+ "readme",
247
+ "entry-points",
248
+ "scripts",
249
+ "gui-scripts",
250
+ "classifiers",
251
+ "dependencies",
252
+ "optional-dependencies",
253
+ )
254
+ # `_obtain` functions are assumed to raise appropriate exceptions/warnings.
255
+ obtained_dynamic = {
256
+ field: self._obtain(dist, field, package_dir)
257
+ for field in self.dynamic
258
+ if field not in special
259
+ }
260
+ obtained_dynamic.update(
261
+ self._obtain_entry_points(dist, package_dir) or {},
262
+ version=self._obtain_version(dist, package_dir),
263
+ readme=self._obtain_readme(dist),
264
+ classifiers=self._obtain_classifiers(dist),
265
+ dependencies=self._obtain_dependencies(dist),
266
+ optional_dependencies=self._obtain_optional_dependencies(dist),
267
+ )
268
+ # `None` indicates there is nothing in `tool.setuptools.dynamic` but the value
269
+ # might have already been set by setup.py/extensions, so avoid overwriting.
270
+ updates = {k: v for k, v in obtained_dynamic.items() if v is not None}
271
+ self.project_cfg.update(updates)
272
+
273
+ def _ensure_previously_set(self, dist: Distribution, field: str):
274
+ previous = _PREVIOUSLY_DEFINED[field](dist)
275
+ if previous is None and not self.ignore_option_errors:
276
+ msg = (
277
+ f"No configuration found for dynamic {field!r}.\n"
278
+ "Some dynamic fields need to be specified via `tool.setuptools.dynamic`"
279
+ "\nothers must be specified via the equivalent attribute in `setup.py`."
280
+ )
281
+ raise InvalidConfigError(msg)
282
+
283
+ def _expand_directive(
284
+ self, specifier: str, directive, package_dir: Mapping[str, str]
285
+ ):
286
+ from more_itertools import always_iterable
287
+
288
+ with _ignore_errors(self.ignore_option_errors):
289
+ root_dir = self.root_dir
290
+ if "file" in directive:
291
+ self._referenced_files.update(always_iterable(directive["file"]))
292
+ return _expand.read_files(directive["file"], root_dir)
293
+ if "attr" in directive:
294
+ return _expand.read_attr(directive["attr"], package_dir, root_dir)
295
+ raise ValueError(f"invalid `{specifier}`: {directive!r}")
296
+ return None
297
+
298
+ def _obtain(self, dist: Distribution, field: str, package_dir: Mapping[str, str]):
299
+ if field in self.dynamic_cfg:
300
+ return self._expand_directive(
301
+ f"tool.setuptools.dynamic.{field}",
302
+ self.dynamic_cfg[field],
303
+ package_dir,
304
+ )
305
+ self._ensure_previously_set(dist, field)
306
+ return None
307
+
308
+ def _obtain_version(self, dist: Distribution, package_dir: Mapping[str, str]):
309
+ # Since plugins can set version, let's silently skip if it cannot be obtained
310
+ if "version" in self.dynamic and "version" in self.dynamic_cfg:
311
+ return _expand.version(
312
+ # We already do an early check for the presence of "version"
313
+ self._obtain(dist, "version", package_dir) # pyright: ignore[reportArgumentType]
314
+ )
315
+ return None
316
+
317
+ def _obtain_readme(self, dist: Distribution) -> dict[str, str] | None:
318
+ if "readme" not in self.dynamic:
319
+ return None
320
+
321
+ dynamic_cfg = self.dynamic_cfg
322
+ if "readme" in dynamic_cfg:
323
+ return {
324
+ # We already do an early check for the presence of "readme"
325
+ "text": self._obtain(dist, "readme", {}),
326
+ "content-type": dynamic_cfg["readme"].get("content-type", "text/x-rst"),
327
+ } # pyright: ignore[reportReturnType]
328
+
329
+ self._ensure_previously_set(dist, "readme")
330
+ return None
331
+
332
+ def _obtain_entry_points(
333
+ self, dist: Distribution, package_dir: Mapping[str, str]
334
+ ) -> dict[str, dict[str, Any]] | None:
335
+ fields = ("entry-points", "scripts", "gui-scripts")
336
+ if not any(field in self.dynamic for field in fields):
337
+ return None
338
+
339
+ text = self._obtain(dist, "entry-points", package_dir)
340
+ if text is None:
341
+ return None
342
+
343
+ groups = _expand.entry_points(text)
344
+ # Any is str | dict[str, str], but causes variance issues
345
+ expanded: dict[str, dict[str, Any]] = {"entry-points": groups}
346
+
347
+ def _set_scripts(field: str, group: str):
348
+ if group in groups:
349
+ value = groups.pop(group)
350
+ if field not in self.dynamic:
351
+ raise InvalidConfigError(_MissingDynamic.details(field, value))
352
+ expanded[field] = value
353
+
354
+ _set_scripts("scripts", "console_scripts")
355
+ _set_scripts("gui-scripts", "gui_scripts")
356
+
357
+ return expanded
358
+
359
+ def _obtain_classifiers(self, dist: Distribution):
360
+ if "classifiers" in self.dynamic:
361
+ value = self._obtain(dist, "classifiers", {})
362
+ if value:
363
+ return value.splitlines()
364
+ return None
365
+
366
+ def _obtain_dependencies(self, dist: Distribution):
367
+ if "dependencies" in self.dynamic:
368
+ value = self._obtain(dist, "dependencies", {})
369
+ if value:
370
+ return _parse_requirements_list(value)
371
+ return None
372
+
373
+ def _obtain_optional_dependencies(self, dist: Distribution):
374
+ if "optional-dependencies" not in self.dynamic:
375
+ return None
376
+ if "optional-dependencies" in self.dynamic_cfg:
377
+ optional_dependencies_map = self.dynamic_cfg["optional-dependencies"]
378
+ assert isinstance(optional_dependencies_map, dict)
379
+ return {
380
+ group: _parse_requirements_list(
381
+ self._expand_directive(
382
+ f"tool.setuptools.dynamic.optional-dependencies.{group}",
383
+ directive,
384
+ {},
385
+ )
386
+ )
387
+ for group, directive in optional_dependencies_map.items()
388
+ }
389
+ self._ensure_previously_set(dist, "optional-dependencies")
390
+ return None
391
+
392
+
393
+ def _parse_requirements_list(value):
394
+ return [
395
+ line
396
+ for line in value.splitlines()
397
+ if line.strip() and not line.strip().startswith("#")
398
+ ]
399
+
400
+
401
+ @contextmanager
402
+ def _ignore_errors(ignore_option_errors: bool):
403
+ if not ignore_option_errors:
404
+ yield
405
+ return
406
+
407
+ try:
408
+ yield
409
+ except Exception as ex:
410
+ _logger.debug(f"ignored error: {ex.__class__.__name__} - {ex}")
411
+
412
+
413
+ class _EnsurePackagesDiscovered(_expand.EnsurePackagesDiscovered):
414
+ def __init__(
415
+ self, distribution: Distribution, project_cfg: dict, setuptools_cfg: dict
416
+ ) -> None:
417
+ super().__init__(distribution)
418
+ self._project_cfg = project_cfg
419
+ self._setuptools_cfg = setuptools_cfg
420
+
421
+ def __enter__(self) -> Self:
422
+ """When entering the context, the values of ``packages``, ``py_modules`` and
423
+ ``package_dir`` that are missing in ``dist`` are copied from ``setuptools_cfg``.
424
+ """
425
+ dist, cfg = self._dist, self._setuptools_cfg
426
+ package_dir: dict[str, str] = cfg.setdefault("package-dir", {})
427
+ package_dir.update(dist.package_dir or {})
428
+ dist.package_dir = package_dir # needs to be the same object
429
+
430
+ dist.set_defaults._ignore_ext_modules() # pyproject.toml-specific behaviour
431
+
432
+ # Set `name`, `py_modules` and `packages` in dist to short-circuit
433
+ # auto-discovery, but avoid overwriting empty lists purposefully set by users.
434
+ if dist.metadata.name is None:
435
+ dist.metadata.name = self._project_cfg.get("name")
436
+ if dist.py_modules is None:
437
+ dist.py_modules = cfg.get("py-modules")
438
+ if dist.packages is None:
439
+ dist.packages = cfg.get("packages")
440
+
441
+ return super().__enter__()
442
+
443
+ def __exit__(
444
+ self,
445
+ exc_type: type[BaseException] | None,
446
+ exc_value: BaseException | None,
447
+ traceback: TracebackType | None,
448
+ ) -> None:
449
+ """When exiting the context, if values of ``packages``, ``py_modules`` and
450
+ ``package_dir`` are missing in ``setuptools_cfg``, copy from ``dist``.
451
+ """
452
+ # If anything was discovered set them back, so they count in the final config.
453
+ self._setuptools_cfg.setdefault("packages", self._dist.packages)
454
+ self._setuptools_cfg.setdefault("py-modules", self._dist.py_modules)
455
+ return super().__exit__(exc_type, exc_value, traceback)
456
+
457
+
458
+ class _ExperimentalConfiguration(SetuptoolsWarning):
459
+ _SUMMARY = (
460
+ "`{subject}` in `pyproject.toml` is still *experimental* "
461
+ "and likely to change in future releases."
462
+ )
463
+
464
+
465
+ class _ToolsTypoInMetadata(SetuptoolsWarning):
466
+ _SUMMARY = (
467
+ "Ignoring [tools.setuptools] in pyproject.toml, did you mean [tool.setuptools]?"
468
+ )