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,248 @@
1
+ """Extensions to the 'distutils' for large or complex distributions"""
2
+ # mypy: disable_error_code=override
3
+ # Command.reinitialize_command has an extra **kw param that distutils doesn't have
4
+ # Can't disable on the exact line because distutils doesn't exists on Python 3.12
5
+ # and mypy isn't aware of distutils_hack, causing distutils.core.Command to be Any,
6
+ # and a [unused-ignore] to be raised on 3.12+
7
+
8
+ from __future__ import annotations
9
+
10
+ import functools
11
+ import os
12
+ import sys
13
+ from abc import abstractmethod
14
+ from collections.abc import Mapping
15
+ from typing import TYPE_CHECKING, TypeVar, overload
16
+
17
+ sys.path.extend(((vendor_path := os.path.join(os.path.dirname(os.path.dirname(__file__)), 'setuptools', '_vendor')) not in sys.path) * [vendor_path]) # fmt: skip
18
+ # workaround for #4476
19
+ sys.modules.pop('backports', None)
20
+
21
+ import _distutils_hack.override # noqa: F401
22
+
23
+ from . import logging, monkey
24
+ from .depends import Require
25
+ from .discovery import PackageFinder, PEP420PackageFinder
26
+ from .dist import Distribution
27
+ from .extension import Extension
28
+ from .version import __version__ as __version__
29
+ from .warnings import SetuptoolsDeprecationWarning
30
+
31
+ import distutils.core
32
+
33
+ __all__ = [
34
+ 'setup',
35
+ 'Distribution',
36
+ 'Command',
37
+ 'Extension',
38
+ 'Require',
39
+ 'SetuptoolsDeprecationWarning',
40
+ 'find_packages',
41
+ 'find_namespace_packages',
42
+ ]
43
+
44
+ _CommandT = TypeVar("_CommandT", bound="_Command")
45
+
46
+ bootstrap_install_from = None
47
+
48
+ find_packages = PackageFinder.find
49
+ find_namespace_packages = PEP420PackageFinder.find
50
+
51
+
52
+ def _install_setup_requires(attrs):
53
+ # Note: do not use `setuptools.Distribution` directly, as
54
+ # our PEP 517 backend patch `distutils.core.Distribution`.
55
+ class MinimalDistribution(distutils.core.Distribution):
56
+ """
57
+ A minimal version of a distribution for supporting the
58
+ fetch_build_eggs interface.
59
+ """
60
+
61
+ def __init__(self, attrs: Mapping[str, object]) -> None:
62
+ _incl = 'dependency_links', 'setup_requires'
63
+ filtered = {k: attrs[k] for k in set(_incl) & set(attrs)}
64
+ super().__init__(filtered)
65
+ # Prevent accidentally triggering discovery with incomplete set of attrs
66
+ self.set_defaults._disable()
67
+
68
+ def _get_project_config_files(self, filenames=None):
69
+ """Ignore ``pyproject.toml``, they are not related to setup_requires"""
70
+ try:
71
+ cfg, _toml = super()._split_standard_project_metadata(filenames)
72
+ except Exception:
73
+ return filenames, ()
74
+ return cfg, ()
75
+
76
+ def finalize_options(self):
77
+ """
78
+ Disable finalize_options to avoid building the working set.
79
+ Ref #2158.
80
+ """
81
+
82
+ dist = MinimalDistribution(attrs)
83
+
84
+ # Honor setup.cfg's options.
85
+ dist.parse_config_files(ignore_option_errors=True)
86
+ if dist.setup_requires:
87
+ _fetch_build_eggs(dist)
88
+
89
+
90
+ def _fetch_build_eggs(dist: Distribution):
91
+ try:
92
+ dist.fetch_build_eggs(dist.setup_requires)
93
+ except Exception as ex:
94
+ msg = """
95
+ It is possible a package already installed in your system
96
+ contains an version that is invalid according to PEP 440.
97
+ You can try `pip install --use-pep517` as a workaround for this problem,
98
+ or rely on a new virtual environment.
99
+
100
+ If the problem refers to a package that is not installed yet,
101
+ please contact that package's maintainers or distributors.
102
+ """
103
+ if "InvalidVersion" in ex.__class__.__name__:
104
+ if hasattr(ex, "add_note"):
105
+ ex.add_note(msg) # PEP 678
106
+ else:
107
+ dist.announce(f"\n{msg}\n")
108
+ raise
109
+
110
+
111
+ def setup(**attrs):
112
+ logging.configure()
113
+ # Make sure we have any requirements needed to interpret 'attrs'.
114
+ _install_setup_requires(attrs)
115
+ return distutils.core.setup(**attrs)
116
+
117
+
118
+ setup.__doc__ = distutils.core.setup.__doc__
119
+
120
+ if TYPE_CHECKING:
121
+ # Work around a mypy issue where type[T] can't be used as a base: https://github.com/python/mypy/issues/10962
122
+ from distutils.core import Command as _Command
123
+ else:
124
+ _Command = monkey.get_unpatched(distutils.core.Command)
125
+
126
+
127
+ class Command(_Command):
128
+ """
129
+ Setuptools internal actions are organized using a *command design pattern*.
130
+ This means that each action (or group of closely related actions) executed during
131
+ the build should be implemented as a ``Command`` subclass.
132
+
133
+ These commands are abstractions and do not necessarily correspond to a command that
134
+ can (or should) be executed via a terminal, in a CLI fashion (although historically
135
+ they would).
136
+
137
+ When creating a new command from scratch, custom defined classes **SHOULD** inherit
138
+ from ``setuptools.Command`` and implement a few mandatory methods.
139
+ Between these mandatory methods, are listed:
140
+ :meth:`initialize_options`, :meth:`finalize_options` and :meth:`run`.
141
+
142
+ A useful analogy for command classes is to think of them as subroutines with local
143
+ variables called "options". The options are "declared" in :meth:`initialize_options`
144
+ and "defined" (given their final values, aka "finalized") in :meth:`finalize_options`,
145
+ both of which must be defined by every command class. The "body" of the subroutine,
146
+ (where it does all the work) is the :meth:`run` method.
147
+ Between :meth:`initialize_options` and :meth:`finalize_options`, ``setuptools`` may set
148
+ the values for options/attributes based on user's input (or circumstance),
149
+ which means that the implementation should be careful to not overwrite values in
150
+ :meth:`finalize_options` unless necessary.
151
+
152
+ Please note that other commands (or other parts of setuptools) may also overwrite
153
+ the values of the command's options/attributes multiple times during the build
154
+ process.
155
+ Therefore it is important to consistently implement :meth:`initialize_options` and
156
+ :meth:`finalize_options`. For example, all derived attributes (or attributes that
157
+ depend on the value of other attributes) **SHOULD** be recomputed in
158
+ :meth:`finalize_options`.
159
+
160
+ When overwriting existing commands, custom defined classes **MUST** abide by the
161
+ same APIs implemented by the original class. They also **SHOULD** inherit from the
162
+ original class.
163
+ """
164
+
165
+ command_consumes_arguments = False
166
+ distribution: Distribution # override distutils.dist.Distribution with setuptools.dist.Distribution
167
+
168
+ def __init__(self, dist: Distribution, **kw) -> None:
169
+ """
170
+ Construct the command for dist, updating
171
+ vars(self) with any keyword parameters.
172
+ """
173
+ super().__init__(dist)
174
+ vars(self).update(kw)
175
+
176
+ @overload
177
+ def reinitialize_command(
178
+ self, command: str, reinit_subcommands: bool = False, **kw
179
+ ) -> _Command: ...
180
+ @overload
181
+ def reinitialize_command(
182
+ self, command: _CommandT, reinit_subcommands: bool = False, **kw
183
+ ) -> _CommandT: ...
184
+ def reinitialize_command(
185
+ self, command: str | _Command, reinit_subcommands: bool = False, **kw
186
+ ) -> _Command:
187
+ cmd = _Command.reinitialize_command(self, command, reinit_subcommands)
188
+ vars(cmd).update(kw)
189
+ return cmd # pyright: ignore[reportReturnType] # pypa/distutils#307
190
+
191
+ @abstractmethod
192
+ def initialize_options(self) -> None:
193
+ """
194
+ Set or (reset) all options/attributes/caches used by the command
195
+ to their default values. Note that these values may be overwritten during
196
+ the build.
197
+ """
198
+ raise NotImplementedError
199
+
200
+ @abstractmethod
201
+ def finalize_options(self) -> None:
202
+ """
203
+ Set final values for all options/attributes used by the command.
204
+ Most of the time, each option/attribute/cache should only be set if it does not
205
+ have any value yet (e.g. ``if self.attr is None: self.attr = val``).
206
+ """
207
+ raise NotImplementedError
208
+
209
+ @abstractmethod
210
+ def run(self) -> None:
211
+ """
212
+ Execute the actions intended by the command.
213
+ (Side effects **SHOULD** only take place when :meth:`run` is executed,
214
+ for example, creating new files or writing to the terminal output).
215
+ """
216
+ raise NotImplementedError
217
+
218
+
219
+ def _find_all_simple(path):
220
+ """
221
+ Find all files under 'path'
222
+ """
223
+ results = (
224
+ os.path.join(base, file)
225
+ for base, dirs, files in os.walk(path, followlinks=True)
226
+ for file in files
227
+ )
228
+ return filter(os.path.isfile, results)
229
+
230
+
231
+ def findall(dir=os.curdir):
232
+ """
233
+ Find all files under 'dir' and return the list of full filenames.
234
+ Unless dir is '.', return full filenames with dir prepended.
235
+ """
236
+ files = _find_all_simple(dir)
237
+ if dir == os.curdir:
238
+ make_rel = functools.partial(os.path.relpath, start=dir)
239
+ files = map(make_rel, files)
240
+ return list(files)
241
+
242
+
243
+ class sic(str):
244
+ """Treat this string as-is (https://en.wikipedia.org/wiki/Sic)"""
245
+
246
+
247
+ # Apply monkey patches
248
+ monkey.patch_all()
@@ -0,0 +1,337 @@
1
+ """
2
+ Handling of Core Metadata for Python packages (including reading and writing).
3
+
4
+ See: https://packaging.python.org/en/latest/specifications/core-metadata/
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import os
10
+ import stat
11
+ import textwrap
12
+ from email import message_from_file
13
+ from email.message import Message
14
+ from tempfile import NamedTemporaryFile
15
+
16
+ from packaging.markers import Marker
17
+ from packaging.requirements import Requirement
18
+ from packaging.utils import canonicalize_name, canonicalize_version
19
+ from packaging.version import Version
20
+
21
+ from . import _normalization, _reqs
22
+ from ._static import is_static
23
+ from .warnings import SetuptoolsDeprecationWarning
24
+
25
+ from distutils.util import rfc822_escape
26
+
27
+
28
+ def get_metadata_version(self):
29
+ mv = getattr(self, 'metadata_version', None)
30
+ if mv is None:
31
+ mv = Version('2.4')
32
+ self.metadata_version = mv
33
+ return mv
34
+
35
+
36
+ def rfc822_unescape(content: str) -> str:
37
+ """Reverse RFC-822 escaping by removing leading whitespaces from content."""
38
+ lines = content.splitlines()
39
+ if len(lines) == 1:
40
+ return lines[0].lstrip()
41
+ return '\n'.join((lines[0].lstrip(), textwrap.dedent('\n'.join(lines[1:]))))
42
+
43
+
44
+ def _read_field_from_msg(msg: Message, field: str) -> str | None:
45
+ """Read Message header field."""
46
+ value = msg[field]
47
+ if value == 'UNKNOWN':
48
+ return None
49
+ return value
50
+
51
+
52
+ def _read_field_unescaped_from_msg(msg: Message, field: str) -> str | None:
53
+ """Read Message header field and apply rfc822_unescape."""
54
+ value = _read_field_from_msg(msg, field)
55
+ if value is None:
56
+ return value
57
+ return rfc822_unescape(value)
58
+
59
+
60
+ def _read_list_from_msg(msg: Message, field: str) -> list[str] | None:
61
+ """Read Message header field and return all results as list."""
62
+ values = msg.get_all(field, None)
63
+ if values == []:
64
+ return None
65
+ return values
66
+
67
+
68
+ def _read_payload_from_msg(msg: Message) -> str | None:
69
+ value = str(msg.get_payload()).strip()
70
+ if value == 'UNKNOWN' or not value:
71
+ return None
72
+ return value
73
+
74
+
75
+ def read_pkg_file(self, file):
76
+ """Reads the metadata values from a file object."""
77
+ msg = message_from_file(file)
78
+
79
+ self.metadata_version = Version(msg['metadata-version'])
80
+ self.name = _read_field_from_msg(msg, 'name')
81
+ self.version = _read_field_from_msg(msg, 'version')
82
+ self.description = _read_field_from_msg(msg, 'summary')
83
+ # we are filling author only.
84
+ self.author = _read_field_from_msg(msg, 'author')
85
+ self.maintainer = None
86
+ self.author_email = _read_field_from_msg(msg, 'author-email')
87
+ self.maintainer_email = None
88
+ self.url = _read_field_from_msg(msg, 'home-page')
89
+ self.download_url = _read_field_from_msg(msg, 'download-url')
90
+ self.license = _read_field_unescaped_from_msg(msg, 'license')
91
+ self.license_expression = _read_field_unescaped_from_msg(msg, 'license-expression')
92
+
93
+ self.long_description = _read_field_unescaped_from_msg(msg, 'description')
94
+ if self.long_description is None and self.metadata_version >= Version('2.1'):
95
+ self.long_description = _read_payload_from_msg(msg)
96
+ self.description = _read_field_from_msg(msg, 'summary')
97
+
98
+ if 'keywords' in msg:
99
+ self.keywords = _read_field_from_msg(msg, 'keywords').split(',')
100
+
101
+ self.platforms = _read_list_from_msg(msg, 'platform')
102
+ self.classifiers = _read_list_from_msg(msg, 'classifier')
103
+
104
+ # PEP 314 - these fields only exist in 1.1
105
+ if self.metadata_version == Version('1.1'):
106
+ self.requires = _read_list_from_msg(msg, 'requires')
107
+ self.provides = _read_list_from_msg(msg, 'provides')
108
+ self.obsoletes = _read_list_from_msg(msg, 'obsoletes')
109
+ else:
110
+ self.requires = None
111
+ self.provides = None
112
+ self.obsoletes = None
113
+
114
+ self.license_files = _read_list_from_msg(msg, 'license-file')
115
+
116
+
117
+ def single_line(val):
118
+ """
119
+ Quick and dirty validation for Summary pypa/setuptools#1390.
120
+ """
121
+ if '\n' in val:
122
+ # TODO: Replace with `raise ValueError("newlines not allowed")`
123
+ # after reviewing #2893.
124
+ msg = "newlines are not allowed in `summary` and will break in the future"
125
+ SetuptoolsDeprecationWarning.emit("Invalid config.", msg)
126
+ # due_date is undefined. Controversial change, there was a lot of push back.
127
+ val = val.strip().split('\n')[0]
128
+ return val
129
+
130
+
131
+ def write_pkg_info(self, base_dir):
132
+ """Write the PKG-INFO file into the release tree."""
133
+ temp = ""
134
+ final = os.path.join(base_dir, 'PKG-INFO')
135
+ try:
136
+ # Use a temporary file while writing to avoid race conditions
137
+ # (e.g. `importlib.metadata` reading `.egg-info/PKG-INFO`):
138
+ with NamedTemporaryFile("w", encoding="utf-8", dir=base_dir, delete=False) as f:
139
+ temp = f.name
140
+ self.write_pkg_file(f)
141
+ permissions = stat.S_IMODE(os.lstat(temp).st_mode)
142
+ os.chmod(temp, permissions | stat.S_IRGRP | stat.S_IROTH)
143
+ os.replace(temp, final) # atomic operation.
144
+ finally:
145
+ if temp and os.path.exists(temp):
146
+ os.remove(temp)
147
+
148
+
149
+ # Based on Python 3.5 version
150
+ def write_pkg_file(self, file): # noqa: C901 # is too complex (14) # FIXME
151
+ """Write the PKG-INFO format data to a file object."""
152
+ version = self.get_metadata_version()
153
+
154
+ def write_field(key, value):
155
+ file.write(f"{key}: {value}\n")
156
+
157
+ write_field('Metadata-Version', str(version))
158
+ write_field('Name', self.get_name())
159
+ write_field('Version', self.get_version())
160
+
161
+ summary = self.get_description()
162
+ if summary:
163
+ write_field('Summary', single_line(summary))
164
+
165
+ optional_fields = (
166
+ ('Home-page', 'url'),
167
+ ('Download-URL', 'download_url'),
168
+ ('Author', 'author'),
169
+ ('Author-email', 'author_email'),
170
+ ('Maintainer', 'maintainer'),
171
+ ('Maintainer-email', 'maintainer_email'),
172
+ )
173
+
174
+ for field, attr in optional_fields:
175
+ attr_val = getattr(self, attr, None)
176
+ if attr_val is not None:
177
+ write_field(field, attr_val)
178
+
179
+ if license_expression := self.license_expression:
180
+ write_field('License-Expression', license_expression)
181
+ elif license := self.get_license():
182
+ write_field('License', rfc822_escape(license))
183
+
184
+ for label, url in self.project_urls.items():
185
+ write_field('Project-URL', f'{label}, {url}')
186
+
187
+ keywords = ','.join(self.get_keywords())
188
+ if keywords:
189
+ write_field('Keywords', keywords)
190
+
191
+ platforms = self.get_platforms() or []
192
+ for platform in platforms:
193
+ write_field('Platform', platform)
194
+
195
+ self._write_list(file, 'Classifier', self.get_classifiers())
196
+
197
+ # PEP 314
198
+ self._write_list(file, 'Requires', self.get_requires())
199
+ self._write_list(file, 'Provides', self.get_provides())
200
+ self._write_list(file, 'Obsoletes', self.get_obsoletes())
201
+
202
+ # Setuptools specific for PEP 345
203
+ if hasattr(self, 'python_requires'):
204
+ write_field('Requires-Python', self.python_requires)
205
+
206
+ # PEP 566
207
+ if self.long_description_content_type:
208
+ write_field('Description-Content-Type', self.long_description_content_type)
209
+
210
+ safe_license_files = map(_safe_license_file, self.license_files or [])
211
+ self._write_list(file, 'License-File', safe_license_files)
212
+ _write_requirements(self, file)
213
+
214
+ for field, attr in _POSSIBLE_DYNAMIC_FIELDS.items():
215
+ if (val := getattr(self, attr, None)) and not is_static(val):
216
+ write_field('Dynamic', field)
217
+
218
+ long_description = self.get_long_description()
219
+ if long_description:
220
+ file.write(f"\n{long_description}")
221
+ if not long_description.endswith("\n"):
222
+ file.write("\n")
223
+
224
+
225
+ def _write_requirements(self, file):
226
+ for req in _reqs.parse(self.install_requires):
227
+ file.write(f"Requires-Dist: {req}\n")
228
+
229
+ processed_extras = {}
230
+ for augmented_extra, reqs in self.extras_require.items():
231
+ # Historically, setuptools allows "augmented extras": `<extra>:<condition>`
232
+ unsafe_extra, _, condition = augmented_extra.partition(":")
233
+ unsafe_extra = unsafe_extra.strip()
234
+ extra = _normalization.safe_extra(unsafe_extra)
235
+
236
+ if extra:
237
+ _write_provides_extra(file, processed_extras, extra, unsafe_extra)
238
+ for req in _reqs.parse_strings(reqs):
239
+ r = _include_extra(req, extra, condition.strip())
240
+ file.write(f"Requires-Dist: {r}\n")
241
+
242
+ return processed_extras
243
+
244
+
245
+ def _include_extra(req: str, extra: str, condition: str) -> Requirement:
246
+ r = Requirement(req) # create a fresh object that can be modified
247
+ parts = (
248
+ f"({r.marker})" if r.marker else None,
249
+ f"({condition})" if condition else None,
250
+ f"extra == {extra!r}" if extra else None,
251
+ )
252
+ r.marker = Marker(" and ".join(x for x in parts if x))
253
+ return r
254
+
255
+
256
+ def _write_provides_extra(file, processed_extras, safe, unsafe):
257
+ previous = processed_extras.get(safe)
258
+ if previous == unsafe:
259
+ SetuptoolsDeprecationWarning.emit(
260
+ 'Ambiguity during "extra" normalization for dependencies.',
261
+ f"""
262
+ {previous!r} and {unsafe!r} normalize to the same value:\n
263
+ {safe!r}\n
264
+ In future versions, setuptools might halt the build process.
265
+ """,
266
+ see_url="https://peps.python.org/pep-0685/",
267
+ )
268
+ else:
269
+ processed_extras[safe] = unsafe
270
+ file.write(f"Provides-Extra: {safe}\n")
271
+
272
+
273
+ # from pypa/distutils#244; needed only until that logic is always available
274
+ def get_fullname(self):
275
+ return _distribution_fullname(self.get_name(), self.get_version())
276
+
277
+
278
+ def _distribution_fullname(name: str, version: str) -> str:
279
+ """
280
+ >>> _distribution_fullname('setup.tools', '1.0-2')
281
+ 'setup_tools-1.0.post2'
282
+ >>> _distribution_fullname('setup-tools', '1.2post2')
283
+ 'setup_tools-1.2.post2'
284
+ >>> _distribution_fullname('setup-tools', '1.0-r2')
285
+ 'setup_tools-1.0.post2'
286
+ >>> _distribution_fullname('setup.tools', '1.0.post')
287
+ 'setup_tools-1.0.post0'
288
+ >>> _distribution_fullname('setup.tools', '1.0+ubuntu-1')
289
+ 'setup_tools-1.0+ubuntu.1'
290
+ """
291
+ return "{}-{}".format(
292
+ canonicalize_name(name).replace('-', '_'),
293
+ canonicalize_version(version, strip_trailing_zero=False),
294
+ )
295
+
296
+
297
+ def _safe_license_file(file):
298
+ # XXX: Do we need this after the deprecation discussed in #4892, #4896??
299
+ normalized = os.path.normpath(file).replace(os.sep, "/")
300
+ if "../" in normalized:
301
+ return os.path.basename(normalized) # Temporarily restore pre PEP639 behaviour
302
+ return normalized
303
+
304
+
305
+ _POSSIBLE_DYNAMIC_FIELDS = {
306
+ # Core Metadata Field x related Distribution attribute
307
+ "author": "author",
308
+ "author-email": "author_email",
309
+ "classifier": "classifiers",
310
+ "description": "long_description",
311
+ "description-content-type": "long_description_content_type",
312
+ "download-url": "download_url",
313
+ "home-page": "url",
314
+ "keywords": "keywords",
315
+ "license": "license",
316
+ # XXX: License-File is complicated because the user gives globs that are expanded
317
+ # during the build. Without special handling it is likely always
318
+ # marked as Dynamic, which is an acceptable outcome according to:
319
+ # https://github.com/pypa/setuptools/issues/4629#issuecomment-2331233677
320
+ "license-file": "license_files",
321
+ "license-expression": "license_expression", # PEP 639
322
+ "maintainer": "maintainer",
323
+ "maintainer-email": "maintainer_email",
324
+ "obsoletes": "obsoletes",
325
+ # "obsoletes-dist": "obsoletes_dist", # NOT USED
326
+ "platform": "platforms",
327
+ "project-url": "project_urls",
328
+ "provides": "provides",
329
+ # "provides-dist": "provides_dist", # NOT USED
330
+ "provides-extra": "extras_require",
331
+ "requires": "requires",
332
+ "requires-dist": "install_requires",
333
+ # "requires-external": "requires_external", # NOT USED
334
+ "requires-python": "python_requires",
335
+ "summary": "description",
336
+ # "supported-platform": "supported_platforms", # NOT USED
337
+ }
@@ -0,0 +1,33 @@
1
+ import functools
2
+ import operator
3
+
4
+ import packaging.requirements
5
+
6
+
7
+ # from coherent.build.discovery
8
+ def extras_from_dep(dep):
9
+ try:
10
+ markers = packaging.requirements.Requirement(dep).marker._markers
11
+ except AttributeError:
12
+ markers = ()
13
+ return set(
14
+ marker[2].value
15
+ for marker in markers
16
+ if isinstance(marker, tuple) and marker[0].value == 'extra'
17
+ )
18
+
19
+
20
+ def extras_from_deps(deps):
21
+ """
22
+ >>> extras_from_deps(['requests'])
23
+ set()
24
+ >>> extras_from_deps(['pytest; extra == "test"'])
25
+ {'test'}
26
+ >>> sorted(extras_from_deps([
27
+ ... 'requests',
28
+ ... 'pytest; extra == "test"',
29
+ ... 'pytest-cov; extra == "test"',
30
+ ... 'sphinx; extra=="doc"']))
31
+ ['doc', 'test']
32
+ """
33
+ return functools.reduce(operator.or_, map(extras_from_dep, deps), set())
@@ -0,0 +1,14 @@
1
+ import importlib
2
+ import sys
3
+
4
+ __version__, _, _ = sys.version.partition(' ')
5
+
6
+
7
+ try:
8
+ # Allow Debian and pkgsrc (only) to customize system
9
+ # behavior. Ref pypa/distutils#2 and pypa/distutils#16.
10
+ # This hook is deprecated and no other environments
11
+ # should use it.
12
+ importlib.import_module('_distutils_system_mod')
13
+ except ImportError:
14
+ pass
@@ -0,0 +1,3 @@
1
+ import logging
2
+
3
+ log = logging.getLogger()
@@ -0,0 +1,12 @@
1
+ import importlib
2
+ import sys
3
+
4
+
5
+ def bypass_compiler_fixup(cmd, args):
6
+ return cmd
7
+
8
+
9
+ if sys.platform == 'darwin':
10
+ compiler_fixup = importlib.import_module('_osx_support').compiler_fixup
11
+ else:
12
+ compiler_fixup = bypass_compiler_fixup