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,131 @@
1
+ from __future__ import annotations
2
+
3
+ import inspect
4
+ import platform
5
+ from collections.abc import Callable
6
+ from typing import TYPE_CHECKING, Any, ClassVar
7
+
8
+ from ..dist import Distribution
9
+ from ..warnings import SetuptoolsDeprecationWarning, SetuptoolsWarning
10
+
11
+ import distutils.command.install as orig
12
+ from distutils.errors import DistutilsArgError
13
+
14
+ if TYPE_CHECKING:
15
+ # This is only used for a type-cast, don't import at runtime or it'll cause deprecation warnings
16
+ from .easy_install import easy_install as easy_install_cls
17
+ else:
18
+ easy_install_cls = None
19
+
20
+
21
+ def __getattr__(name: str): # pragma: no cover
22
+ if name == "_install":
23
+ SetuptoolsDeprecationWarning.emit(
24
+ "`setuptools.command._install` was an internal implementation detail "
25
+ "that was left in for numpy<1.9 support.",
26
+ due_date=(2025, 5, 2), # Originally added on 2024-11-01
27
+ )
28
+ return orig.install
29
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
30
+
31
+
32
+ class install(orig.install):
33
+ """Use easy_install to install the package, w/dependencies"""
34
+
35
+ distribution: Distribution # override distutils.dist.Distribution with setuptools.dist.Distribution
36
+
37
+ user_options = orig.install.user_options + [
38
+ ('old-and-unmanageable', None, "Try not to use this!"),
39
+ (
40
+ 'single-version-externally-managed',
41
+ None,
42
+ "used by system package builders to create 'flat' eggs",
43
+ ),
44
+ ]
45
+ boolean_options = orig.install.boolean_options + [
46
+ 'old-and-unmanageable',
47
+ 'single-version-externally-managed',
48
+ ]
49
+ # Type the same as distutils.command.install.install.sub_commands
50
+ # Must keep the second tuple item potentially None due to invariance
51
+ new_commands: ClassVar[list[tuple[str, Callable[[Any], bool] | None]]] = [
52
+ ('install_egg_info', lambda self: True),
53
+ ('install_scripts', lambda self: True),
54
+ ]
55
+ _nc = dict(new_commands)
56
+
57
+ def initialize_options(self):
58
+ SetuptoolsDeprecationWarning.emit(
59
+ "setup.py install is deprecated.",
60
+ """
61
+ Please avoid running ``setup.py`` directly.
62
+ Instead, use pypa/build, pypa/installer or other
63
+ standards-based tools.
64
+ """,
65
+ see_url="https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html",
66
+ due_date=(2025, 10, 31),
67
+ )
68
+
69
+ super().initialize_options()
70
+ self.old_and_unmanageable = None
71
+ self.single_version_externally_managed = None
72
+
73
+ def finalize_options(self) -> None:
74
+ super().finalize_options()
75
+ if self.root:
76
+ self.single_version_externally_managed = True
77
+ elif self.single_version_externally_managed:
78
+ if not self.root and not self.record:
79
+ raise DistutilsArgError(
80
+ "You must specify --record or --root when building system packages"
81
+ )
82
+
83
+ def handle_extra_path(self):
84
+ if self.root or self.single_version_externally_managed:
85
+ # explicit backward-compatibility mode, allow extra_path to work
86
+ return orig.install.handle_extra_path(self)
87
+
88
+ # Ignore extra_path when installing an egg (or being run by another
89
+ # command without --root or --single-version-externally-managed
90
+ self.path_file = None
91
+ self.extra_dirs = ''
92
+ return None
93
+
94
+ @staticmethod
95
+ def _called_from_setup(run_frame):
96
+ """
97
+ Attempt to detect whether run() was called from setup() or by another
98
+ command. If called by setup(), the parent caller will be the
99
+ 'run_command' method in 'distutils.dist', and *its* caller will be
100
+ the 'run_commands' method. If called any other way, the
101
+ immediate caller *might* be 'run_command', but it won't have been
102
+ called by 'run_commands'. Return True in that case or if a call stack
103
+ is unavailable. Return False otherwise.
104
+ """
105
+ if run_frame is None:
106
+ msg = "Call stack not available. bdist_* commands may fail."
107
+ SetuptoolsWarning.emit(msg)
108
+ if platform.python_implementation() == 'IronPython':
109
+ msg = "For best results, pass -X:Frames to enable call stack."
110
+ SetuptoolsWarning.emit(msg)
111
+ return True
112
+
113
+ frames = inspect.getouterframes(run_frame)
114
+ for frame in frames[2:4]:
115
+ (caller,) = frame[:1]
116
+ info = inspect.getframeinfo(caller)
117
+ caller_module = caller.f_globals.get('__name__', '')
118
+
119
+ if caller_module == "setuptools.dist" and info.function == "run_command":
120
+ # Starting from v61.0.0 setuptools overwrites dist.run_command
121
+ continue
122
+
123
+ return caller_module == 'distutils.dist' and info.function == 'run_commands'
124
+
125
+ return False
126
+
127
+
128
+ # XXX Python 3.1 doesn't see _nc if this is inside the class
129
+ install.sub_commands = [
130
+ cmd for cmd in orig.install.sub_commands if cmd[0] not in install._nc
131
+ ] + install.new_commands
@@ -0,0 +1,58 @@
1
+ import os
2
+
3
+ from setuptools import Command, namespaces
4
+ from setuptools.archive_util import unpack_archive
5
+
6
+ from .._path import ensure_directory
7
+
8
+ from distutils import dir_util, log
9
+
10
+
11
+ class install_egg_info(namespaces.Installer, Command):
12
+ """Install an .egg-info directory for the package"""
13
+
14
+ description = "Install an .egg-info directory for the package"
15
+
16
+ user_options = [
17
+ ('install-dir=', 'd', "directory to install to"),
18
+ ]
19
+
20
+ def initialize_options(self):
21
+ self.install_dir = None
22
+
23
+ def finalize_options(self) -> None:
24
+ self.set_undefined_options('install_lib', ('install_dir', 'install_dir'))
25
+ ei_cmd = self.get_finalized_command("egg_info")
26
+ basename = f"{ei_cmd._get_egg_basename()}.egg-info"
27
+ self.source = ei_cmd.egg_info
28
+ self.target = os.path.join(self.install_dir, basename)
29
+ self.outputs: list[str] = []
30
+
31
+ def run(self) -> None:
32
+ self.run_command('egg_info')
33
+ if os.path.isdir(self.target) and not os.path.islink(self.target):
34
+ dir_util.remove_tree(self.target, dry_run=self.dry_run)
35
+ elif os.path.exists(self.target):
36
+ self.execute(os.unlink, (self.target,), "Removing " + self.target)
37
+ if not self.dry_run:
38
+ ensure_directory(self.target)
39
+ self.execute(self.copytree, (), f"Copying {self.source} to {self.target}")
40
+ self.install_namespaces()
41
+
42
+ def get_outputs(self):
43
+ return self.outputs
44
+
45
+ def copytree(self) -> None:
46
+ # Copy the .egg-info tree to site-packages
47
+ def skimmer(src, dst):
48
+ # filter out source-control directories; note that 'src' is always
49
+ # a '/'-separated path, regardless of platform. 'dst' is a
50
+ # platform-specific path.
51
+ for skip in '.svn/', 'CVS/':
52
+ if src.startswith(skip) or '/' + skip in src:
53
+ return None
54
+ self.outputs.append(dst)
55
+ log.debug("Copying %s to %s", src, dst)
56
+ return dst
57
+
58
+ unpack_archive(self.source, self.target, skimmer)
@@ -0,0 +1,137 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+ import sys
5
+ from itertools import product, starmap
6
+
7
+ from .._path import StrPath
8
+ from ..dist import Distribution
9
+
10
+ import distutils.command.install_lib as orig
11
+
12
+
13
+ class install_lib(orig.install_lib):
14
+ """Don't add compiled flags to filenames of non-Python files"""
15
+
16
+ distribution: Distribution # override distutils.dist.Distribution with setuptools.dist.Distribution
17
+
18
+ def run(self) -> None:
19
+ self.build()
20
+ outfiles = self.install()
21
+ if outfiles is not None:
22
+ # always compile, in case we have any extension stubs to deal with
23
+ self.byte_compile(outfiles)
24
+
25
+ def get_exclusions(self):
26
+ """
27
+ Return a collections.Sized collections.Container of paths to be
28
+ excluded for single_version_externally_managed installations.
29
+ """
30
+ all_packages = (
31
+ pkg
32
+ for ns_pkg in self._get_SVEM_NSPs()
33
+ for pkg in self._all_packages(ns_pkg)
34
+ )
35
+
36
+ excl_specs = product(all_packages, self._gen_exclusion_paths())
37
+ return set(starmap(self._exclude_pkg_path, excl_specs))
38
+
39
+ def _exclude_pkg_path(self, pkg, exclusion_path):
40
+ """
41
+ Given a package name and exclusion path within that package,
42
+ compute the full exclusion path.
43
+ """
44
+ parts = pkg.split('.') + [exclusion_path]
45
+ return os.path.join(self.install_dir, *parts)
46
+
47
+ @staticmethod
48
+ def _all_packages(pkg_name):
49
+ """
50
+ >>> list(install_lib._all_packages('foo.bar.baz'))
51
+ ['foo.bar.baz', 'foo.bar', 'foo']
52
+ """
53
+ while pkg_name:
54
+ yield pkg_name
55
+ pkg_name, _sep, _child = pkg_name.rpartition('.')
56
+
57
+ def _get_SVEM_NSPs(self):
58
+ """
59
+ Get namespace packages (list) but only for
60
+ single_version_externally_managed installations and empty otherwise.
61
+ """
62
+ # TODO: is it necessary to short-circuit here? i.e. what's the cost
63
+ # if get_finalized_command is called even when namespace_packages is
64
+ # False?
65
+ if not self.distribution.namespace_packages:
66
+ return []
67
+
68
+ install_cmd = self.get_finalized_command('install')
69
+ svem = install_cmd.single_version_externally_managed
70
+
71
+ return self.distribution.namespace_packages if svem else []
72
+
73
+ @staticmethod
74
+ def _gen_exclusion_paths():
75
+ """
76
+ Generate file paths to be excluded for namespace packages (bytecode
77
+ cache files).
78
+ """
79
+ # always exclude the package module itself
80
+ yield '__init__.py'
81
+
82
+ yield '__init__.pyc'
83
+ yield '__init__.pyo'
84
+
85
+ if not hasattr(sys, 'implementation'):
86
+ return
87
+
88
+ base = os.path.join('__pycache__', '__init__.' + sys.implementation.cache_tag)
89
+ yield base + '.pyc'
90
+ yield base + '.pyo'
91
+ yield base + '.opt-1.pyc'
92
+ yield base + '.opt-2.pyc'
93
+
94
+ def copy_tree(
95
+ self,
96
+ infile: StrPath,
97
+ outfile: str,
98
+ # override: Using actual booleans
99
+ preserve_mode: bool = True, # type: ignore[override]
100
+ preserve_times: bool = True, # type: ignore[override]
101
+ preserve_symlinks: bool = False, # type: ignore[override]
102
+ level: object = 1,
103
+ ) -> list[str]:
104
+ assert preserve_mode
105
+ assert preserve_times
106
+ assert not preserve_symlinks
107
+ exclude = self.get_exclusions()
108
+
109
+ if not exclude:
110
+ return orig.install_lib.copy_tree(self, infile, outfile)
111
+
112
+ # Exclude namespace package __init__.py* files from the output
113
+
114
+ from setuptools.archive_util import unpack_directory
115
+
116
+ from distutils import log
117
+
118
+ outfiles: list[str] = []
119
+
120
+ def pf(src: str, dst: str):
121
+ if dst in exclude:
122
+ log.warn("Skipping installation of %s (namespace package)", dst)
123
+ return False
124
+
125
+ log.info("copying %s -> %s", src, os.path.dirname(dst))
126
+ outfiles.append(dst)
127
+ return dst
128
+
129
+ unpack_directory(infile, outfile, pf)
130
+ return outfiles
131
+
132
+ def get_outputs(self):
133
+ outputs = orig.install_lib.get_outputs(self)
134
+ exclude = self.get_exclusions()
135
+ if exclude:
136
+ return [f for f in outputs if f not in exclude]
137
+ return outputs
@@ -0,0 +1,67 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+ import sys
5
+
6
+ from .._path import ensure_directory
7
+ from ..dist import Distribution
8
+
9
+ import distutils.command.install_scripts as orig
10
+ from distutils import log
11
+
12
+
13
+ class install_scripts(orig.install_scripts):
14
+ """Do normal script install, plus any egg_info wrapper scripts"""
15
+
16
+ distribution: Distribution # override distutils.dist.Distribution with setuptools.dist.Distribution
17
+
18
+ def initialize_options(self) -> None:
19
+ orig.install_scripts.initialize_options(self)
20
+ self.no_ep = False
21
+
22
+ def run(self) -> None:
23
+ self.run_command("egg_info")
24
+ if self.distribution.scripts:
25
+ orig.install_scripts.run(self) # run first to set up self.outfiles
26
+ else:
27
+ self.outfiles: list[str] = []
28
+ if self.no_ep:
29
+ # don't install entry point scripts into .egg file!
30
+ return
31
+ self._install_ep_scripts()
32
+
33
+ def _install_ep_scripts(self):
34
+ # Delay import side-effects
35
+ from .. import _scripts
36
+ from .._importlib import metadata
37
+
38
+ ei_cmd = self.get_finalized_command("egg_info")
39
+ dist = metadata.Distribution.at(path=ei_cmd.egg_info)
40
+ bs_cmd = self.get_finalized_command('build_scripts')
41
+ exec_param = getattr(bs_cmd, 'executable', None)
42
+ writer = _scripts.ScriptWriter
43
+ if exec_param == sys.executable:
44
+ # In case the path to the Python executable contains a space, wrap
45
+ # it so it's not split up.
46
+ exec_param = [exec_param]
47
+ # resolve the writer to the environment
48
+ writer = writer.best()
49
+ cmd = writer.command_spec_class.best().from_param(exec_param)
50
+ for args in writer.get_args(dist, cmd.as_header()):
51
+ self.write_script(*args)
52
+
53
+ def write_script(self, script_name, contents, mode: str = "t", *ignored) -> None:
54
+ """Write an executable file to the scripts directory"""
55
+ from .._shutil import attempt_chmod_verbose as chmod, current_umask
56
+
57
+ log.info("Installing %s script to %s", script_name, self.install_dir)
58
+ target = os.path.join(self.install_dir, script_name)
59
+ self.outfiles.append(target)
60
+
61
+ encoding = None if "b" in mode else "utf-8"
62
+ mask = current_umask()
63
+ if not self.dry_run:
64
+ ensure_directory(target)
65
+ with open(target, "w" + mode, encoding=encoding) as f:
66
+ f.write(contents)
67
+ chmod(target, 0o777 - mask)
@@ -0,0 +1,65 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+ from typing import ClassVar
5
+
6
+ from .. import Command, _shutil
7
+
8
+ from distutils import log
9
+ from distutils.errors import DistutilsOptionError
10
+ from distutils.util import convert_path
11
+
12
+
13
+ class rotate(Command):
14
+ """Delete older distributions"""
15
+
16
+ description = "delete older distributions, keeping N newest files"
17
+ user_options = [
18
+ ('match=', 'm', "patterns to match (required)"),
19
+ ('dist-dir=', 'd', "directory where the distributions are"),
20
+ ('keep=', 'k', "number of matching distributions to keep"),
21
+ ]
22
+
23
+ boolean_options: ClassVar[list[str]] = []
24
+
25
+ def initialize_options(self):
26
+ self.match = None
27
+ self.dist_dir = None
28
+ self.keep = None
29
+
30
+ def finalize_options(self) -> None:
31
+ if self.match is None:
32
+ raise DistutilsOptionError(
33
+ "Must specify one or more (comma-separated) match patterns "
34
+ "(e.g. '.zip' or '.egg')"
35
+ )
36
+ if self.keep is None:
37
+ raise DistutilsOptionError("Must specify number of files to keep")
38
+ try:
39
+ self.keep = int(self.keep)
40
+ except ValueError as e:
41
+ raise DistutilsOptionError("--keep must be an integer") from e
42
+ if isinstance(self.match, str):
43
+ self.match = [convert_path(p.strip()) for p in self.match.split(',')]
44
+ self.set_undefined_options('bdist', ('dist_dir', 'dist_dir'))
45
+
46
+ def run(self) -> None:
47
+ self.run_command("egg_info")
48
+ from glob import glob
49
+
50
+ for pattern in self.match:
51
+ pattern = self.distribution.get_name() + '*' + pattern
52
+ files = glob(os.path.join(self.dist_dir, pattern))
53
+ files = [(os.path.getmtime(f), f) for f in files]
54
+ files.sort()
55
+ files.reverse()
56
+
57
+ log.info("%d file(s) matching %s", len(files), pattern)
58
+ files = files[self.keep :]
59
+ for t, f in files:
60
+ log.info("Deleting %s", f)
61
+ if not self.dry_run:
62
+ if os.path.isdir(f):
63
+ _shutil.rmtree(f)
64
+ else:
65
+ os.unlink(f)
@@ -0,0 +1,21 @@
1
+ from setuptools.command.setopt import edit_config, option_base
2
+
3
+
4
+ class saveopts(option_base):
5
+ """Save command-line options to a file"""
6
+
7
+ description = "save supplied options to setup.cfg or other config file"
8
+
9
+ def run(self) -> None:
10
+ dist = self.distribution
11
+ settings: dict[str, dict[str, str]] = {}
12
+
13
+ for cmd in dist.command_options:
14
+ if cmd == 'saveopts':
15
+ continue # don't save our own options!
16
+
17
+ for opt, (src, val) in dist.get_option_dict(cmd).items():
18
+ if src == "command line":
19
+ settings.setdefault(cmd, {})[opt] = val
20
+
21
+ edit_config(self.filename, settings, self.dry_run)