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,400 @@
1
+ from __future__ import annotations
2
+
3
+ import fnmatch
4
+ import itertools
5
+ import os
6
+ import stat
7
+ import textwrap
8
+ from collections.abc import Iterable, Iterator
9
+ from functools import partial
10
+ from glob import glob
11
+ from pathlib import Path
12
+
13
+ from more_itertools import unique_everseen
14
+
15
+ from .._path import StrPath, StrPathT
16
+ from ..dist import Distribution
17
+ from ..warnings import SetuptoolsDeprecationWarning
18
+
19
+ import distutils.command.build_py as orig
20
+ import distutils.errors
21
+ from distutils.util import convert_path
22
+
23
+ _IMPLICIT_DATA_FILES = ('*.pyi', 'py.typed')
24
+
25
+
26
+ def make_writable(target) -> None:
27
+ os.chmod(target, os.stat(target).st_mode | stat.S_IWRITE)
28
+
29
+
30
+ class build_py(orig.build_py):
31
+ """Enhanced 'build_py' command that includes data files with packages
32
+
33
+ The data files are specified via a 'package_data' argument to 'setup()'.
34
+ See 'setuptools.dist.Distribution' for more details.
35
+
36
+ Also, this version of the 'build_py' command allows you to specify both
37
+ 'py_modules' and 'packages' in the same setup operation.
38
+ """
39
+
40
+ distribution: Distribution # override distutils.dist.Distribution with setuptools.dist.Distribution
41
+ editable_mode: bool = False
42
+ existing_egg_info_dir: StrPath | None = None #: Private API, internal use only.
43
+
44
+ def finalize_options(self):
45
+ orig.build_py.finalize_options(self)
46
+ self.package_data = self.distribution.package_data
47
+ self.exclude_package_data = self.distribution.exclude_package_data or {}
48
+ if 'data_files' in self.__dict__:
49
+ del self.__dict__['data_files']
50
+
51
+ def copy_file( # type: ignore[override] # No overload, no bytes support
52
+ self,
53
+ infile: StrPath,
54
+ outfile: StrPathT,
55
+ preserve_mode: bool = True,
56
+ preserve_times: bool = True,
57
+ link: str | None = None,
58
+ level: object = 1,
59
+ ) -> tuple[StrPathT | str, bool]:
60
+ # Overwrite base class to allow using links
61
+ if link:
62
+ infile = str(Path(infile).resolve())
63
+ outfile = str(Path(outfile).resolve()) # type: ignore[assignment] # Re-assigning a str when outfile is StrPath is ok
64
+ return super().copy_file( # pyright: ignore[reportReturnType] # pypa/distutils#309
65
+ infile, outfile, preserve_mode, preserve_times, link, level
66
+ )
67
+
68
+ def run(self) -> None:
69
+ """Build modules, packages, and copy data files to build directory"""
70
+ if not (self.py_modules or self.packages) or self.editable_mode:
71
+ return
72
+
73
+ if self.py_modules:
74
+ self.build_modules()
75
+
76
+ if self.packages:
77
+ self.build_packages()
78
+ self.build_package_data()
79
+
80
+ # Only compile actual .py files, using our base class' idea of what our
81
+ # output files are.
82
+ self.byte_compile(orig.build_py.get_outputs(self, include_bytecode=False))
83
+
84
+ def __getattr__(self, attr: str):
85
+ "lazily compute data files"
86
+ if attr == 'data_files':
87
+ self.data_files = self._get_data_files()
88
+ return self.data_files
89
+ return orig.build_py.__getattr__(self, attr)
90
+
91
+ def _get_data_files(self):
92
+ """Generate list of '(package,src_dir,build_dir,filenames)' tuples"""
93
+ self.analyze_manifest()
94
+ return list(map(self._get_pkg_data_files, self.packages or ()))
95
+
96
+ def get_data_files_without_manifest(self):
97
+ """
98
+ Generate list of ``(package,src_dir,build_dir,filenames)`` tuples,
99
+ but without triggering any attempt to analyze or build the manifest.
100
+ """
101
+ # Prevent eventual errors from unset `manifest_files`
102
+ # (that would otherwise be set by `analyze_manifest`)
103
+ self.__dict__.setdefault('manifest_files', {})
104
+ return list(map(self._get_pkg_data_files, self.packages or ()))
105
+
106
+ def _get_pkg_data_files(self, package):
107
+ # Locate package source directory
108
+ src_dir = self.get_package_dir(package)
109
+
110
+ # Compute package build directory
111
+ build_dir = os.path.join(*([self.build_lib] + package.split('.')))
112
+
113
+ # Strip directory from globbed filenames
114
+ filenames = [
115
+ os.path.relpath(file, src_dir)
116
+ for file in self.find_data_files(package, src_dir)
117
+ ]
118
+ return package, src_dir, build_dir, filenames
119
+
120
+ def find_data_files(self, package, src_dir):
121
+ """Return filenames for package's data files in 'src_dir'"""
122
+ patterns = self._get_platform_patterns(
123
+ self.package_data,
124
+ package,
125
+ src_dir,
126
+ extra_patterns=_IMPLICIT_DATA_FILES,
127
+ )
128
+ globs_expanded = map(partial(glob, recursive=True), patterns)
129
+ # flatten the expanded globs into an iterable of matches
130
+ globs_matches = itertools.chain.from_iterable(globs_expanded)
131
+ glob_files = filter(os.path.isfile, globs_matches)
132
+ files = itertools.chain(
133
+ self.manifest_files.get(package, []),
134
+ glob_files,
135
+ )
136
+ return self.exclude_data_files(package, src_dir, files)
137
+
138
+ def get_outputs(self, include_bytecode: bool = True) -> list[str]: # type: ignore[override] # Using a real boolean instead of 0|1
139
+ """See :class:`setuptools.commands.build.SubCommand`"""
140
+ if self.editable_mode:
141
+ return list(self.get_output_mapping().keys())
142
+ return super().get_outputs(include_bytecode)
143
+
144
+ def get_output_mapping(self) -> dict[str, str]:
145
+ """See :class:`setuptools.commands.build.SubCommand`"""
146
+ mapping = itertools.chain(
147
+ self._get_package_data_output_mapping(),
148
+ self._get_module_mapping(),
149
+ )
150
+ return dict(sorted(mapping, key=lambda x: x[0]))
151
+
152
+ def _get_module_mapping(self) -> Iterator[tuple[str, str]]:
153
+ """Iterate over all modules producing (dest, src) pairs."""
154
+ for package, module, module_file in self.find_all_modules():
155
+ package = package.split('.')
156
+ filename = self.get_module_outfile(self.build_lib, package, module)
157
+ yield (filename, module_file)
158
+
159
+ def _get_package_data_output_mapping(self) -> Iterator[tuple[str, str]]:
160
+ """Iterate over package data producing (dest, src) pairs."""
161
+ for package, src_dir, build_dir, filenames in self.data_files:
162
+ for filename in filenames:
163
+ target = os.path.join(build_dir, filename)
164
+ srcfile = os.path.join(src_dir, filename)
165
+ yield (target, srcfile)
166
+
167
+ def build_package_data(self) -> None:
168
+ """Copy data files into build directory"""
169
+ for target, srcfile in self._get_package_data_output_mapping():
170
+ self.mkpath(os.path.dirname(target))
171
+ _outf, _copied = self.copy_file(srcfile, target)
172
+ make_writable(target)
173
+
174
+ def analyze_manifest(self) -> None:
175
+ self.manifest_files: dict[str, list[str]] = {}
176
+ if not self.distribution.include_package_data:
177
+ return
178
+ src_dirs: dict[str, str] = {}
179
+ for package in self.packages or ():
180
+ # Locate package source directory
181
+ src_dirs[assert_relative(self.get_package_dir(package))] = package
182
+
183
+ if (
184
+ self.existing_egg_info_dir
185
+ and Path(self.existing_egg_info_dir, "SOURCES.txt").exists()
186
+ ):
187
+ egg_info_dir = self.existing_egg_info_dir
188
+ manifest = Path(egg_info_dir, "SOURCES.txt")
189
+ files = manifest.read_text(encoding="utf-8").splitlines()
190
+ else:
191
+ self.run_command('egg_info')
192
+ ei_cmd = self.get_finalized_command('egg_info')
193
+ egg_info_dir = ei_cmd.egg_info
194
+ files = ei_cmd.filelist.files
195
+
196
+ check = _IncludePackageDataAbuse()
197
+ for path in self._filter_build_files(files, egg_info_dir):
198
+ d, f = os.path.split(assert_relative(path))
199
+ prev = None
200
+ oldf = f
201
+ while d and d != prev and d not in src_dirs:
202
+ prev = d
203
+ d, df = os.path.split(d)
204
+ f = os.path.join(df, f)
205
+ if d in src_dirs:
206
+ if f == oldf:
207
+ if check.is_module(f):
208
+ continue # it's a module, not data
209
+ else:
210
+ importable = check.importable_subpackage(src_dirs[d], f)
211
+ if importable:
212
+ check.warn(importable)
213
+ self.manifest_files.setdefault(src_dirs[d], []).append(path)
214
+
215
+ def _filter_build_files(
216
+ self, files: Iterable[str], egg_info: StrPath
217
+ ) -> Iterator[str]:
218
+ """
219
+ ``build_meta`` may try to create egg_info outside of the project directory,
220
+ and this can be problematic for certain plugins (reported in issue #3500).
221
+
222
+ Extensions might also include between their sources files created on the
223
+ ``build_lib`` and ``build_temp`` directories.
224
+
225
+ This function should filter this case of invalid files out.
226
+ """
227
+ build = self.get_finalized_command("build")
228
+ build_dirs = (egg_info, self.build_lib, build.build_temp, build.build_base)
229
+ norm_dirs = [os.path.normpath(p) for p in build_dirs if p]
230
+
231
+ for file in files:
232
+ norm_path = os.path.normpath(file)
233
+ if not os.path.isabs(file) or all(d not in norm_path for d in norm_dirs):
234
+ yield file
235
+
236
+ def get_data_files(self) -> None:
237
+ pass # Lazily compute data files in _get_data_files() function.
238
+
239
+ def check_package(self, package, package_dir):
240
+ """Check namespace packages' __init__ for declare_namespace"""
241
+ try:
242
+ return self.packages_checked[package]
243
+ except KeyError:
244
+ pass
245
+
246
+ init_py = orig.build_py.check_package(self, package, package_dir)
247
+ self.packages_checked[package] = init_py
248
+
249
+ if not init_py or not self.distribution.namespace_packages:
250
+ return init_py
251
+
252
+ for pkg in self.distribution.namespace_packages:
253
+ if pkg == package or pkg.startswith(package + '.'):
254
+ break
255
+ else:
256
+ return init_py
257
+
258
+ with open(init_py, 'rb') as f:
259
+ contents = f.read()
260
+ if b'declare_namespace' not in contents:
261
+ raise distutils.errors.DistutilsError(
262
+ f"Namespace package problem: {package} is a namespace package, but "
263
+ "its\n__init__.py does not call declare_namespace()! Please "
264
+ 'fix it.\n(See the setuptools manual under '
265
+ '"Namespace Packages" for details.)\n"'
266
+ )
267
+ return init_py
268
+
269
+ def initialize_options(self):
270
+ self.packages_checked = {}
271
+ orig.build_py.initialize_options(self)
272
+ self.editable_mode = False
273
+ self.existing_egg_info_dir = None
274
+
275
+ def get_package_dir(self, package):
276
+ res = orig.build_py.get_package_dir(self, package)
277
+ if self.distribution.src_root is not None:
278
+ return os.path.join(self.distribution.src_root, res)
279
+ return res
280
+
281
+ def exclude_data_files(self, package, src_dir, files):
282
+ """Filter filenames for package's data files in 'src_dir'"""
283
+ files = list(files)
284
+ patterns = self._get_platform_patterns(
285
+ self.exclude_package_data,
286
+ package,
287
+ src_dir,
288
+ )
289
+ match_groups = (fnmatch.filter(files, pattern) for pattern in patterns)
290
+ # flatten the groups of matches into an iterable of matches
291
+ matches = itertools.chain.from_iterable(match_groups)
292
+ bad = set(matches)
293
+ keepers = (fn for fn in files if fn not in bad)
294
+ # ditch dupes
295
+ return list(unique_everseen(keepers))
296
+
297
+ @staticmethod
298
+ def _get_platform_patterns(spec, package, src_dir, extra_patterns=()):
299
+ """
300
+ yield platform-specific path patterns (suitable for glob
301
+ or fn_match) from a glob-based spec (such as
302
+ self.package_data or self.exclude_package_data)
303
+ matching package in src_dir.
304
+ """
305
+ raw_patterns = itertools.chain(
306
+ extra_patterns,
307
+ spec.get('', []),
308
+ spec.get(package, []),
309
+ )
310
+ return (
311
+ # Each pattern has to be converted to a platform-specific path
312
+ os.path.join(src_dir, convert_path(pattern))
313
+ for pattern in raw_patterns
314
+ )
315
+
316
+
317
+ def assert_relative(path):
318
+ if not os.path.isabs(path):
319
+ return path
320
+ from distutils.errors import DistutilsSetupError
321
+
322
+ msg = (
323
+ textwrap.dedent(
324
+ """
325
+ Error: setup script specifies an absolute path:
326
+
327
+ %s
328
+
329
+ setup() arguments must *always* be /-separated paths relative to the
330
+ setup.py directory, *never* absolute paths.
331
+ """
332
+ ).lstrip()
333
+ % path
334
+ )
335
+ raise DistutilsSetupError(msg)
336
+
337
+
338
+ class _IncludePackageDataAbuse:
339
+ """Inform users that package or module is included as 'data file'"""
340
+
341
+ class _Warning(SetuptoolsDeprecationWarning):
342
+ _SUMMARY = """
343
+ Package {importable!r} is absent from the `packages` configuration.
344
+ """
345
+
346
+ _DETAILS = """
347
+ ############################
348
+ # Package would be ignored #
349
+ ############################
350
+ Python recognizes {importable!r} as an importable package[^1],
351
+ but it is absent from setuptools' `packages` configuration.
352
+
353
+ This leads to an ambiguous overall configuration. If you want to distribute this
354
+ package, please make sure that {importable!r} is explicitly added
355
+ to the `packages` configuration field.
356
+
357
+ Alternatively, you can also rely on setuptools' discovery methods
358
+ (for example by using `find_namespace_packages(...)`/`find_namespace:`
359
+ instead of `find_packages(...)`/`find:`).
360
+
361
+ You can read more about "package discovery" on setuptools documentation page:
362
+
363
+ - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
364
+
365
+ If you don't want {importable!r} to be distributed and are
366
+ already explicitly excluding {importable!r} via
367
+ `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
368
+ you can try to use `exclude_package_data`, or `include-package-data=False` in
369
+ combination with a more fine grained `package-data` configuration.
370
+
371
+ You can read more about "package data files" on setuptools documentation page:
372
+
373
+ - https://setuptools.pypa.io/en/latest/userguide/datafiles.html
374
+
375
+
376
+ [^1]: For Python, any directory (with suitable naming) can be imported,
377
+ even if it does not contain any `.py` files.
378
+ On the other hand, currently there is no concept of package data
379
+ directory, all directories are treated like packages.
380
+ """
381
+ # _DUE_DATE: still not defined as this is particularly controversial.
382
+ # Warning initially introduced in May 2022. See issue #3340 for discussion.
383
+
384
+ def __init__(self):
385
+ self._already_warned = set()
386
+
387
+ def is_module(self, file):
388
+ return file.endswith(".py") and file[: -len(".py")].isidentifier()
389
+
390
+ def importable_subpackage(self, parent, file):
391
+ pkg = Path(file).parent
392
+ parts = list(itertools.takewhile(str.isidentifier, pkg.parts))
393
+ if parts:
394
+ return ".".join([parent, *parts])
395
+ return None
396
+
397
+ def warn(self, importable):
398
+ if importable not in self._already_warned:
399
+ self._Warning.emit(importable=importable)
400
+ self._already_warned.add(importable)
@@ -0,0 +1,55 @@
1
+ import site
2
+ import subprocess
3
+ import sys
4
+
5
+ from setuptools import Command
6
+ from setuptools.warnings import SetuptoolsDeprecationWarning
7
+
8
+
9
+ class develop(Command):
10
+ """Set up package for development"""
11
+
12
+ user_options = [
13
+ ("install-dir=", "d", "install package to DIR"),
14
+ ('no-deps', 'N', "don't install dependencies"),
15
+ ('user', None, f"install in user site-package '{site.USER_SITE}'"),
16
+ ('prefix=', None, "installation prefix"),
17
+ ("index-url=", "i", "base URL of Python Package Index"),
18
+ ]
19
+ boolean_options = [
20
+ 'no-deps',
21
+ 'user',
22
+ ]
23
+
24
+ install_dir = None
25
+ no_deps = False
26
+ user = False
27
+ prefix = None
28
+ index_url = None
29
+
30
+ def run(self):
31
+ cmd = (
32
+ [sys.executable, '-m', 'pip', 'install', '-e', '.', '--use-pep517']
33
+ + ['--target', self.install_dir] * bool(self.install_dir)
34
+ + ['--no-deps'] * self.no_deps
35
+ + ['--user'] * self.user
36
+ + ['--prefix', self.prefix] * bool(self.prefix)
37
+ + ['--index-url', self.index_url] * bool(self.index_url)
38
+ )
39
+ subprocess.check_call(cmd)
40
+
41
+ def initialize_options(self):
42
+ DevelopDeprecationWarning.emit()
43
+
44
+ def finalize_options(self) -> None:
45
+ pass
46
+
47
+
48
+ class DevelopDeprecationWarning(SetuptoolsDeprecationWarning):
49
+ _SUMMARY = "develop command is deprecated."
50
+ _DETAILS = """
51
+ Please avoid running ``setup.py`` and ``develop``.
52
+ Instead, use standards-based tools like pip or uv.
53
+ """
54
+ _SEE_URL = "https://github.com/pypa/setuptools/issues/917"
55
+ _DUE_DATE = 2025, 10, 31
@@ -0,0 +1,103 @@
1
+ """
2
+ Create a dist_info directory
3
+ As defined in the wheel specification
4
+ """
5
+
6
+ import os
7
+ import shutil
8
+ from contextlib import contextmanager
9
+ from pathlib import Path
10
+ from typing import cast
11
+
12
+ from .. import _normalization
13
+ from .._shutil import rmdir as _rm
14
+ from .egg_info import egg_info as egg_info_cls
15
+
16
+ from distutils import log
17
+ from distutils.core import Command
18
+
19
+
20
+ class dist_info(Command):
21
+ """
22
+ This command is private and reserved for internal use of setuptools,
23
+ users should rely on ``setuptools.build_meta`` APIs.
24
+ """
25
+
26
+ description = "DO NOT CALL DIRECTLY, INTERNAL ONLY: create .dist-info directory"
27
+
28
+ user_options = [
29
+ (
30
+ 'output-dir=',
31
+ 'o',
32
+ "directory inside of which the .dist-info will be"
33
+ "created [default: top of the source tree]",
34
+ ),
35
+ ('tag-date', 'd', "Add date stamp (e.g. 20050528) to version number"),
36
+ ('tag-build=', 'b', "Specify explicit tag to add to version number"),
37
+ ('no-date', 'D', "Don't include date stamp [default]"),
38
+ ('keep-egg-info', None, "*TRANSITIONAL* will be removed in the future"),
39
+ ]
40
+
41
+ boolean_options = ['tag-date', 'keep-egg-info']
42
+ negative_opt = {'no-date': 'tag-date'}
43
+
44
+ def initialize_options(self):
45
+ self.output_dir = None
46
+ self.name = None
47
+ self.dist_info_dir = None
48
+ self.tag_date = None
49
+ self.tag_build = None
50
+ self.keep_egg_info = False
51
+
52
+ def finalize_options(self) -> None:
53
+ dist = self.distribution
54
+ project_dir = dist.src_root or os.curdir
55
+ self.output_dir = Path(self.output_dir or project_dir)
56
+
57
+ egg_info = cast(egg_info_cls, self.reinitialize_command("egg_info"))
58
+ egg_info.egg_base = str(self.output_dir)
59
+
60
+ if self.tag_date:
61
+ egg_info.tag_date = self.tag_date
62
+ else:
63
+ self.tag_date = egg_info.tag_date
64
+
65
+ if self.tag_build:
66
+ egg_info.tag_build = self.tag_build
67
+ else:
68
+ self.tag_build = egg_info.tag_build
69
+
70
+ egg_info.finalize_options()
71
+ self.egg_info = egg_info
72
+
73
+ name = _normalization.safer_name(dist.get_name())
74
+ version = _normalization.safer_best_effort_version(dist.get_version())
75
+ self.name = f"{name}-{version}"
76
+ self.dist_info_dir = os.path.join(self.output_dir, f"{self.name}.dist-info")
77
+
78
+ @contextmanager
79
+ def _maybe_bkp_dir(self, dir_path: str, requires_bkp: bool):
80
+ if requires_bkp:
81
+ bkp_name = f"{dir_path}.__bkp__"
82
+ _rm(bkp_name, ignore_errors=True)
83
+ shutil.copytree(dir_path, bkp_name, dirs_exist_ok=True, symlinks=True)
84
+ try:
85
+ yield
86
+ finally:
87
+ _rm(dir_path, ignore_errors=True)
88
+ shutil.move(bkp_name, dir_path)
89
+ else:
90
+ yield
91
+
92
+ def run(self) -> None:
93
+ self.output_dir.mkdir(parents=True, exist_ok=True)
94
+ self.egg_info.run()
95
+ egg_info_dir = self.egg_info.egg_info
96
+ assert os.path.isdir(egg_info_dir), ".egg-info dir should have been created"
97
+
98
+ log.info(f"creating '{os.path.abspath(self.dist_info_dir)}'")
99
+ bdist_wheel = self.get_finalized_command('bdist_wheel')
100
+
101
+ # TODO: if bdist_wheel if merged into setuptools, just add "keep_egg_info" there
102
+ with self._maybe_bkp_dir(egg_info_dir, self.keep_egg_info):
103
+ bdist_wheel.egg2dist(egg_info_dir, self.dist_info_dir)
@@ -0,0 +1,30 @@
1
+ import os
2
+ import sys
3
+ import types
4
+
5
+ from setuptools import Command
6
+
7
+ from .. import _scripts, warnings
8
+
9
+
10
+ class easy_install(Command):
11
+ """Stubbed command for temporary pbr compatibility."""
12
+
13
+
14
+ def __getattr__(name):
15
+ attr = getattr(
16
+ types.SimpleNamespace(
17
+ ScriptWriter=_scripts.ScriptWriter,
18
+ sys_executable=os.environ.get(
19
+ "__PYVENV_LAUNCHER__", os.path.normpath(sys.executable)
20
+ ),
21
+ ),
22
+ name,
23
+ )
24
+ warnings.SetuptoolsDeprecationWarning.emit(
25
+ summary="easy_install module is deprecated",
26
+ details="Avoid accessing attributes of setuptools.command.easy_install.",
27
+ due_date=(2025, 10, 31),
28
+ see_url="https://github.com/pypa/setuptools/issues/4976",
29
+ )
30
+ return attr