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,718 @@
1
+ """setuptools.command.egg_info
2
+
3
+ Create a distribution's .egg-info directory and contents"""
4
+
5
+ import functools
6
+ import os
7
+ import re
8
+ import sys
9
+ import time
10
+ from collections.abc import Callable
11
+
12
+ import packaging
13
+ import packaging.requirements
14
+ import packaging.version
15
+
16
+ import setuptools.unicode_utils as unicode_utils
17
+ from setuptools import Command
18
+ from setuptools.command import bdist_egg
19
+ from setuptools.command.sdist import sdist, walk_revctrl
20
+ from setuptools.command.setopt import edit_config
21
+ from setuptools.glob import glob
22
+
23
+ from .. import _entry_points, _normalization
24
+ from .._importlib import metadata
25
+ from ..warnings import SetuptoolsDeprecationWarning
26
+ from . import _requirestxt
27
+
28
+ import distutils.errors
29
+ import distutils.filelist
30
+ from distutils import log
31
+ from distutils.errors import DistutilsInternalError
32
+ from distutils.filelist import FileList as _FileList
33
+ from distutils.util import convert_path
34
+
35
+ PY_MAJOR = f'{sys.version_info.major}.{sys.version_info.minor}'
36
+
37
+
38
+ def translate_pattern(glob): # noqa: C901 # is too complex (14) # FIXME
39
+ """
40
+ Translate a file path glob like '*.txt' in to a regular expression.
41
+ This differs from fnmatch.translate which allows wildcards to match
42
+ directory separators. It also knows about '**/' which matches any number of
43
+ directories.
44
+ """
45
+ pat = ''
46
+
47
+ # This will split on '/' within [character classes]. This is deliberate.
48
+ chunks = glob.split(os.path.sep)
49
+
50
+ sep = re.escape(os.sep)
51
+ valid_char = f'[^{sep}]'
52
+
53
+ for c, chunk in enumerate(chunks):
54
+ last_chunk = c == len(chunks) - 1
55
+
56
+ # Chunks that are a literal ** are globstars. They match anything.
57
+ if chunk == '**':
58
+ if last_chunk:
59
+ # Match anything if this is the last component
60
+ pat += '.*'
61
+ else:
62
+ # Match '(name/)*'
63
+ pat += f'(?:{valid_char}+{sep})*'
64
+ continue # Break here as the whole path component has been handled
65
+
66
+ # Find any special characters in the remainder
67
+ i = 0
68
+ chunk_len = len(chunk)
69
+ while i < chunk_len:
70
+ char = chunk[i]
71
+ if char == '*':
72
+ # Match any number of name characters
73
+ pat += valid_char + '*'
74
+ elif char == '?':
75
+ # Match a name character
76
+ pat += valid_char
77
+ elif char == '[':
78
+ # Character class
79
+ inner_i = i + 1
80
+ # Skip initial !/] chars
81
+ if inner_i < chunk_len and chunk[inner_i] == '!':
82
+ inner_i = inner_i + 1
83
+ if inner_i < chunk_len and chunk[inner_i] == ']':
84
+ inner_i = inner_i + 1
85
+
86
+ # Loop till the closing ] is found
87
+ while inner_i < chunk_len and chunk[inner_i] != ']':
88
+ inner_i = inner_i + 1
89
+
90
+ if inner_i >= chunk_len:
91
+ # Got to the end of the string without finding a closing ]
92
+ # Do not treat this as a matching group, but as a literal [
93
+ pat += re.escape(char)
94
+ else:
95
+ # Grab the insides of the [brackets]
96
+ inner = chunk[i + 1 : inner_i]
97
+ char_class = ''
98
+
99
+ # Class negation
100
+ if inner[0] == '!':
101
+ char_class = '^'
102
+ inner = inner[1:]
103
+
104
+ char_class += re.escape(inner)
105
+ pat += f'[{char_class}]'
106
+
107
+ # Skip to the end ]
108
+ i = inner_i
109
+ else:
110
+ pat += re.escape(char)
111
+ i += 1
112
+
113
+ # Join each chunk with the dir separator
114
+ if not last_chunk:
115
+ pat += sep
116
+
117
+ pat += r'\Z'
118
+ return re.compile(pat, flags=re.MULTILINE | re.DOTALL)
119
+
120
+
121
+ class InfoCommon:
122
+ tag_build = None
123
+ tag_date = None
124
+
125
+ @property
126
+ def name(self):
127
+ return _normalization.safe_name(self.distribution.get_name())
128
+
129
+ def tagged_version(self):
130
+ tagged = self._maybe_tag(self.distribution.get_version())
131
+ return _normalization.safe_version(tagged)
132
+
133
+ def _maybe_tag(self, version):
134
+ """
135
+ egg_info may be called more than once for a distribution,
136
+ in which case the version string already contains all tags.
137
+ """
138
+ return (
139
+ version
140
+ if self.vtags and self._already_tagged(version)
141
+ else version + self.vtags
142
+ )
143
+
144
+ def _already_tagged(self, version: str) -> bool:
145
+ # Depending on their format, tags may change with version normalization.
146
+ # So in addition the regular tags, we have to search for the normalized ones.
147
+ return version.endswith(self.vtags) or version.endswith(self._safe_tags())
148
+
149
+ def _safe_tags(self) -> str:
150
+ # To implement this we can rely on `safe_version` pretending to be version 0
151
+ # followed by tags. Then we simply discard the starting 0 (fake version number)
152
+ try:
153
+ return _normalization.safe_version(f"0{self.vtags}")[1:]
154
+ except packaging.version.InvalidVersion:
155
+ return _normalization.safe_name(self.vtags.replace(' ', '.'))
156
+
157
+ def tags(self) -> str:
158
+ version = ''
159
+ if self.tag_build:
160
+ version += self.tag_build
161
+ if self.tag_date:
162
+ version += time.strftime("%Y%m%d")
163
+ return version
164
+
165
+ vtags = property(tags)
166
+
167
+
168
+ class egg_info(InfoCommon, Command):
169
+ description = "create a distribution's .egg-info directory"
170
+
171
+ user_options = [
172
+ (
173
+ 'egg-base=',
174
+ 'e',
175
+ "directory containing .egg-info directories"
176
+ " [default: top of the source tree]",
177
+ ),
178
+ ('tag-date', 'd', "Add date stamp (e.g. 20050528) to version number"),
179
+ ('tag-build=', 'b', "Specify explicit tag to add to version number"),
180
+ ('no-date', 'D', "Don't include date stamp [default]"),
181
+ ]
182
+
183
+ boolean_options = ['tag-date']
184
+ negative_opt = {
185
+ 'no-date': 'tag-date',
186
+ }
187
+
188
+ def initialize_options(self):
189
+ self.egg_base = None
190
+ self.egg_name = None
191
+ self.egg_info = None
192
+ self.egg_version = None
193
+ self.ignore_egg_info_in_manifest = False
194
+
195
+ ####################################
196
+ # allow the 'tag_svn_revision' to be detected and
197
+ # set, supporting sdists built on older Setuptools.
198
+ @property
199
+ def tag_svn_revision(self) -> None:
200
+ pass
201
+
202
+ @tag_svn_revision.setter
203
+ def tag_svn_revision(self, value):
204
+ pass
205
+
206
+ ####################################
207
+
208
+ def save_version_info(self, filename) -> None:
209
+ """
210
+ Materialize the value of date into the
211
+ build tag. Install build keys in a deterministic order
212
+ to avoid arbitrary reordering on subsequent builds.
213
+ """
214
+ # follow the order these keys would have been added
215
+ # when PYTHONHASHSEED=0
216
+ egg_info = dict(tag_build=self.tags(), tag_date=0)
217
+ edit_config(filename, dict(egg_info=egg_info))
218
+
219
+ def finalize_options(self) -> None:
220
+ # Note: we need to capture the current value returned
221
+ # by `self.tagged_version()`, so we can later update
222
+ # `self.distribution.metadata.version` without
223
+ # repercussions.
224
+ self.egg_name = self.name
225
+ self.egg_version = self.tagged_version()
226
+ parsed_version = packaging.version.Version(self.egg_version)
227
+
228
+ try:
229
+ is_version = isinstance(parsed_version, packaging.version.Version)
230
+ spec = "%s==%s" if is_version else "%s===%s"
231
+ packaging.requirements.Requirement(spec % (self.egg_name, self.egg_version))
232
+ except ValueError as e:
233
+ raise distutils.errors.DistutilsOptionError(
234
+ f"Invalid distribution name or version syntax: {self.egg_name}-{self.egg_version}"
235
+ ) from e
236
+
237
+ if self.egg_base is None:
238
+ dirs = self.distribution.package_dir
239
+ self.egg_base = (dirs or {}).get('', os.curdir)
240
+
241
+ self.ensure_dirname('egg_base')
242
+ self.egg_info = _normalization.filename_component(self.egg_name) + '.egg-info'
243
+ if self.egg_base != os.curdir:
244
+ self.egg_info = os.path.join(self.egg_base, self.egg_info)
245
+
246
+ # Set package version for the benefit of dumber commands
247
+ # (e.g. sdist, bdist_wininst, etc.)
248
+ #
249
+ self.distribution.metadata.version = self.egg_version
250
+
251
+ def _get_egg_basename(self, py_version=PY_MAJOR, platform=None):
252
+ """Compute filename of the output egg. Private API."""
253
+ return _egg_basename(self.egg_name, self.egg_version, py_version, platform)
254
+
255
+ def write_or_delete_file(self, what, filename, data, force: bool = False) -> None:
256
+ """Write `data` to `filename` or delete if empty
257
+
258
+ If `data` is non-empty, this routine is the same as ``write_file()``.
259
+ If `data` is empty but not ``None``, this is the same as calling
260
+ ``delete_file(filename)`. If `data` is ``None``, then this is a no-op
261
+ unless `filename` exists, in which case a warning is issued about the
262
+ orphaned file (if `force` is false), or deleted (if `force` is true).
263
+ """
264
+ if data:
265
+ self.write_file(what, filename, data)
266
+ elif os.path.exists(filename):
267
+ if data is None and not force:
268
+ log.warn("%s not set in setup(), but %s exists", what, filename)
269
+ return
270
+ else:
271
+ self.delete_file(filename)
272
+
273
+ def write_file(self, what, filename, data) -> None:
274
+ """Write `data` to `filename` (if not a dry run) after announcing it
275
+
276
+ `what` is used in a log message to identify what is being written
277
+ to the file.
278
+ """
279
+ log.info("writing %s to %s", what, filename)
280
+ data = data.encode("utf-8")
281
+ if not self.dry_run:
282
+ f = open(filename, 'wb')
283
+ f.write(data)
284
+ f.close()
285
+
286
+ def delete_file(self, filename) -> None:
287
+ """Delete `filename` (if not a dry run) after announcing it"""
288
+ log.info("deleting %s", filename)
289
+ if not self.dry_run:
290
+ os.unlink(filename)
291
+
292
+ def run(self) -> None:
293
+ # Pre-load to avoid iterating over entry-points while an empty .egg-info
294
+ # exists in sys.path. See pypa/pyproject-hooks#206
295
+ writers = list(metadata.entry_points(group='egg_info.writers'))
296
+
297
+ self.mkpath(self.egg_info)
298
+ try:
299
+ os.utime(self.egg_info, None)
300
+ except OSError as e:
301
+ msg = f"Cannot update time stamp of directory '{self.egg_info}'"
302
+ raise distutils.errors.DistutilsFileError(msg) from e
303
+ for ep in writers:
304
+ writer = ep.load()
305
+ writer(self, ep.name, os.path.join(self.egg_info, ep.name))
306
+
307
+ # Get rid of native_libs.txt if it was put there by older bdist_egg
308
+ nl = os.path.join(self.egg_info, "native_libs.txt")
309
+ if os.path.exists(nl):
310
+ self.delete_file(nl)
311
+
312
+ self.find_sources()
313
+
314
+ def find_sources(self) -> None:
315
+ """Generate SOURCES.txt manifest file"""
316
+ manifest_filename = os.path.join(self.egg_info, "SOURCES.txt")
317
+ mm = manifest_maker(self.distribution)
318
+ mm.ignore_egg_info_dir = self.ignore_egg_info_in_manifest
319
+ mm.manifest = manifest_filename
320
+ mm.run()
321
+ self.filelist = mm.filelist
322
+
323
+
324
+ class FileList(_FileList):
325
+ # Implementations of the various MANIFEST.in commands
326
+
327
+ def __init__(
328
+ self, warn=None, debug_print=None, ignore_egg_info_dir: bool = False
329
+ ) -> None:
330
+ super().__init__(warn, debug_print)
331
+ self.ignore_egg_info_dir = ignore_egg_info_dir
332
+
333
+ def process_template_line(self, line) -> None:
334
+ # Parse the line: split it up, make sure the right number of words
335
+ # is there, and return the relevant words. 'action' is always
336
+ # defined: it's the first word of the line. Which of the other
337
+ # three are defined depends on the action; it'll be either
338
+ # patterns, (dir and patterns), or (dir_pattern).
339
+ (action, patterns, dir, dir_pattern) = self._parse_template_line(line)
340
+
341
+ action_map: dict[str, Callable] = {
342
+ 'include': self.include,
343
+ 'exclude': self.exclude,
344
+ 'global-include': self.global_include,
345
+ 'global-exclude': self.global_exclude,
346
+ 'recursive-include': functools.partial(
347
+ self.recursive_include,
348
+ dir,
349
+ ),
350
+ 'recursive-exclude': functools.partial(
351
+ self.recursive_exclude,
352
+ dir,
353
+ ),
354
+ 'graft': self.graft,
355
+ 'prune': self.prune,
356
+ }
357
+ log_map = {
358
+ 'include': "warning: no files found matching '%s'",
359
+ 'exclude': ("warning: no previously-included files found matching '%s'"),
360
+ 'global-include': (
361
+ "warning: no files found matching '%s' anywhere in distribution"
362
+ ),
363
+ 'global-exclude': (
364
+ "warning: no previously-included files matching "
365
+ "'%s' found anywhere in distribution"
366
+ ),
367
+ 'recursive-include': (
368
+ "warning: no files found matching '%s' under directory '%s'"
369
+ ),
370
+ 'recursive-exclude': (
371
+ "warning: no previously-included files matching "
372
+ "'%s' found under directory '%s'"
373
+ ),
374
+ 'graft': "warning: no directories found matching '%s'",
375
+ 'prune': "no previously-included directories found matching '%s'",
376
+ }
377
+
378
+ try:
379
+ process_action = action_map[action]
380
+ except KeyError:
381
+ msg = f"Invalid MANIFEST.in: unknown action {action!r} in {line!r}"
382
+ raise DistutilsInternalError(msg) from None
383
+
384
+ # OK, now we know that the action is valid and we have the
385
+ # right number of words on the line for that action -- so we
386
+ # can proceed with minimal error-checking.
387
+
388
+ action_is_recursive = action.startswith('recursive-')
389
+ if action in {'graft', 'prune'}:
390
+ patterns = [dir_pattern]
391
+ extra_log_args = (dir,) if action_is_recursive else ()
392
+ log_tmpl = log_map[action]
393
+
394
+ self.debug_print(
395
+ ' '.join(
396
+ [action] + ([dir] if action_is_recursive else []) + patterns,
397
+ )
398
+ )
399
+ for pattern in patterns:
400
+ if not process_action(pattern):
401
+ log.warn(log_tmpl, pattern, *extra_log_args)
402
+
403
+ def _remove_files(self, predicate):
404
+ """
405
+ Remove all files from the file list that match the predicate.
406
+ Return True if any matching files were removed
407
+ """
408
+ found = False
409
+ for i in range(len(self.files) - 1, -1, -1):
410
+ if predicate(self.files[i]):
411
+ self.debug_print(" removing " + self.files[i])
412
+ del self.files[i]
413
+ found = True
414
+ return found
415
+
416
+ def include(self, pattern):
417
+ """Include files that match 'pattern'."""
418
+ found = [f for f in glob(pattern) if not os.path.isdir(f)]
419
+ self.extend(found)
420
+ return bool(found)
421
+
422
+ def exclude(self, pattern):
423
+ """Exclude files that match 'pattern'."""
424
+ match = translate_pattern(pattern)
425
+ return self._remove_files(match.match)
426
+
427
+ def recursive_include(self, dir, pattern):
428
+ """
429
+ Include all files anywhere in 'dir/' that match the pattern.
430
+ """
431
+ full_pattern = os.path.join(dir, '**', pattern)
432
+ found = [f for f in glob(full_pattern, recursive=True) if not os.path.isdir(f)]
433
+ self.extend(found)
434
+ return bool(found)
435
+
436
+ def recursive_exclude(self, dir, pattern):
437
+ """
438
+ Exclude any file anywhere in 'dir/' that match the pattern.
439
+ """
440
+ match = translate_pattern(os.path.join(dir, '**', pattern))
441
+ return self._remove_files(match.match)
442
+
443
+ def graft(self, dir):
444
+ """Include all files from 'dir/'."""
445
+ found = [
446
+ item
447
+ for match_dir in glob(dir)
448
+ for item in distutils.filelist.findall(match_dir)
449
+ ]
450
+ self.extend(found)
451
+ return bool(found)
452
+
453
+ def prune(self, dir):
454
+ """Filter out files from 'dir/'."""
455
+ match = translate_pattern(os.path.join(dir, '**'))
456
+ return self._remove_files(match.match)
457
+
458
+ def global_include(self, pattern):
459
+ """
460
+ Include all files anywhere in the current directory that match the
461
+ pattern. This is very inefficient on large file trees.
462
+ """
463
+ if self.allfiles is None:
464
+ self.findall()
465
+ match = translate_pattern(os.path.join('**', pattern))
466
+ found = [f for f in self.allfiles if match.match(f)]
467
+ self.extend(found)
468
+ return bool(found)
469
+
470
+ def global_exclude(self, pattern):
471
+ """
472
+ Exclude all files anywhere that match the pattern.
473
+ """
474
+ match = translate_pattern(os.path.join('**', pattern))
475
+ return self._remove_files(match.match)
476
+
477
+ def append(self, item) -> None:
478
+ if item.endswith('\r'): # Fix older sdists built on Windows
479
+ item = item[:-1]
480
+ path = convert_path(item)
481
+
482
+ if self._safe_path(path):
483
+ self.files.append(path)
484
+
485
+ def extend(self, paths) -> None:
486
+ self.files.extend(filter(self._safe_path, paths))
487
+
488
+ def _repair(self):
489
+ """
490
+ Replace self.files with only safe paths
491
+
492
+ Because some owners of FileList manipulate the underlying
493
+ ``files`` attribute directly, this method must be called to
494
+ repair those paths.
495
+ """
496
+ self.files = list(filter(self._safe_path, self.files))
497
+
498
+ def _safe_path(self, path):
499
+ enc_warn = "'%s' not %s encodable -- skipping"
500
+
501
+ # To avoid accidental trans-codings errors, first to unicode
502
+ u_path = unicode_utils.filesys_decode(path)
503
+ if u_path is None:
504
+ log.warn(f"'{path}' in unexpected encoding -- skipping")
505
+ return False
506
+
507
+ # Must ensure utf-8 encodability
508
+ utf8_path = unicode_utils.try_encode(u_path, "utf-8")
509
+ if utf8_path is None:
510
+ log.warn(enc_warn, path, 'utf-8')
511
+ return False
512
+
513
+ try:
514
+ # ignore egg-info paths
515
+ is_egg_info = ".egg-info" in u_path or b".egg-info" in utf8_path
516
+ if self.ignore_egg_info_dir and is_egg_info:
517
+ return False
518
+ # accept is either way checks out
519
+ if os.path.exists(u_path) or os.path.exists(utf8_path):
520
+ return True
521
+ # this will catch any encode errors decoding u_path
522
+ except UnicodeEncodeError:
523
+ log.warn(enc_warn, path, sys.getfilesystemencoding())
524
+
525
+
526
+ class manifest_maker(sdist):
527
+ template = "MANIFEST.in"
528
+
529
+ def initialize_options(self) -> None:
530
+ self.use_defaults = True
531
+ self.prune = True
532
+ self.manifest_only = True
533
+ self.force_manifest = True
534
+ self.ignore_egg_info_dir = False
535
+
536
+ def finalize_options(self) -> None:
537
+ pass
538
+
539
+ def run(self) -> None:
540
+ self.filelist = FileList(ignore_egg_info_dir=self.ignore_egg_info_dir)
541
+ if not os.path.exists(self.manifest):
542
+ self.write_manifest() # it must exist so it'll get in the list
543
+ self.add_defaults()
544
+ if os.path.exists(self.template):
545
+ self.read_template()
546
+ self.add_license_files()
547
+ self._add_referenced_files()
548
+ self.prune_file_list()
549
+ self.filelist.sort()
550
+ self.filelist.remove_duplicates()
551
+ self.write_manifest()
552
+
553
+ def _manifest_normalize(self, path):
554
+ path = unicode_utils.filesys_decode(path)
555
+ return path.replace(os.sep, '/')
556
+
557
+ def write_manifest(self) -> None:
558
+ """
559
+ Write the file list in 'self.filelist' to the manifest file
560
+ named by 'self.manifest'.
561
+ """
562
+ self.filelist._repair()
563
+
564
+ # Now _repairs should encodability, but not unicode
565
+ files = [self._manifest_normalize(f) for f in self.filelist.files]
566
+ msg = f"writing manifest file '{self.manifest}'"
567
+ self.execute(write_file, (self.manifest, files), msg)
568
+
569
+ def warn(self, msg) -> None:
570
+ if not self._should_suppress_warning(msg):
571
+ sdist.warn(self, msg)
572
+
573
+ @staticmethod
574
+ def _should_suppress_warning(msg):
575
+ """
576
+ suppress missing-file warnings from sdist
577
+ """
578
+ return re.match(r"standard file .*not found", msg)
579
+
580
+ def add_defaults(self) -> None:
581
+ sdist.add_defaults(self)
582
+ self.filelist.append(self.template)
583
+ self.filelist.append(self.manifest)
584
+ rcfiles = list(walk_revctrl())
585
+ if rcfiles:
586
+ self.filelist.extend(rcfiles)
587
+ elif os.path.exists(self.manifest):
588
+ self.read_manifest()
589
+
590
+ if os.path.exists("setup.py"):
591
+ # setup.py should be included by default, even if it's not
592
+ # the script called to create the sdist
593
+ self.filelist.append("setup.py")
594
+
595
+ ei_cmd = self.get_finalized_command('egg_info')
596
+ self.filelist.graft(ei_cmd.egg_info)
597
+
598
+ def add_license_files(self) -> None:
599
+ license_files = self.distribution.metadata.license_files or []
600
+ for lf in license_files:
601
+ log.info("adding license file '%s'", lf)
602
+ self.filelist.extend(license_files)
603
+
604
+ def _add_referenced_files(self):
605
+ """Add files referenced by the config (e.g. `file:` directive) to filelist"""
606
+ referenced = getattr(self.distribution, '_referenced_files', [])
607
+ # ^-- fallback if dist comes from distutils or is a custom class
608
+ for rf in referenced:
609
+ log.debug("adding file referenced by config '%s'", rf)
610
+ self.filelist.extend(referenced)
611
+
612
+ def _safe_data_files(self, build_py):
613
+ """
614
+ The parent class implementation of this method
615
+ (``sdist``) will try to include data files, which
616
+ might cause recursion problems when
617
+ ``include_package_data=True``.
618
+
619
+ Therefore, avoid triggering any attempt of
620
+ analyzing/building the manifest again.
621
+ """
622
+ if hasattr(build_py, 'get_data_files_without_manifest'):
623
+ return build_py.get_data_files_without_manifest()
624
+
625
+ SetuptoolsDeprecationWarning.emit(
626
+ "`build_py` command does not inherit from setuptools' `build_py`.",
627
+ """
628
+ Custom 'build_py' does not implement 'get_data_files_without_manifest'.
629
+ Please extend command classes from setuptools instead of distutils.
630
+ """,
631
+ see_url="https://peps.python.org/pep-0632/",
632
+ # due_date not defined yet, old projects might still do it?
633
+ )
634
+ return build_py.get_data_files()
635
+
636
+
637
+ def write_file(filename, contents) -> None:
638
+ """Create a file with the specified name and write 'contents' (a
639
+ sequence of strings without line terminators) to it.
640
+ """
641
+ contents = "\n".join(contents)
642
+
643
+ # assuming the contents has been vetted for utf-8 encoding
644
+ contents = contents.encode("utf-8")
645
+
646
+ with open(filename, "wb") as f: # always write POSIX-style manifest
647
+ f.write(contents)
648
+
649
+
650
+ def write_pkg_info(cmd, basename, filename) -> None:
651
+ log.info("writing %s", filename)
652
+ if not cmd.dry_run:
653
+ metadata = cmd.distribution.metadata
654
+ metadata.version, oldver = cmd.egg_version, metadata.version
655
+ metadata.name, oldname = cmd.egg_name, metadata.name
656
+
657
+ try:
658
+ metadata.write_pkg_info(cmd.egg_info)
659
+ finally:
660
+ metadata.name, metadata.version = oldname, oldver
661
+
662
+ safe = getattr(cmd.distribution, 'zip_safe', None)
663
+
664
+ bdist_egg.write_safety_flag(cmd.egg_info, safe)
665
+
666
+
667
+ def warn_depends_obsolete(cmd, basename, filename) -> None:
668
+ """
669
+ Unused: left to avoid errors when updating (from source) from <= 67.8.
670
+ Old installations have a .dist-info directory with the entry-point
671
+ ``depends.txt = setuptools.command.egg_info:warn_depends_obsolete``.
672
+ This may trigger errors when running the first egg_info in build_meta.
673
+ TODO: Remove this function in a version sufficiently > 68.
674
+ """
675
+
676
+
677
+ # Export API used in entry_points
678
+ write_requirements = _requirestxt.write_requirements
679
+ write_setup_requirements = _requirestxt.write_setup_requirements
680
+
681
+
682
+ def write_toplevel_names(cmd, basename, filename) -> None:
683
+ pkgs = dict.fromkeys([
684
+ k.split('.', 1)[0] for k in cmd.distribution.iter_distribution_names()
685
+ ])
686
+ cmd.write_file("top-level names", filename, '\n'.join(sorted(pkgs)) + '\n')
687
+
688
+
689
+ def overwrite_arg(cmd, basename, filename) -> None:
690
+ write_arg(cmd, basename, filename, True)
691
+
692
+
693
+ def write_arg(cmd, basename, filename, force: bool = False) -> None:
694
+ argname = os.path.splitext(basename)[0]
695
+ value = getattr(cmd.distribution, argname, None)
696
+ if value is not None:
697
+ value = '\n'.join(value) + '\n'
698
+ cmd.write_or_delete_file(argname, filename, value, force)
699
+
700
+
701
+ def write_entries(cmd, basename, filename) -> None:
702
+ eps = _entry_points.load(cmd.distribution.entry_points)
703
+ defn = _entry_points.render(eps)
704
+ cmd.write_or_delete_file('entry points', filename, defn, True)
705
+
706
+
707
+ def _egg_basename(egg_name, egg_version, py_version=None, platform=None):
708
+ """Compute filename of the output egg. Private API."""
709
+ name = _normalization.filename_component(egg_name)
710
+ version = _normalization.filename_component(egg_version)
711
+ egg = f"{name}-{version}-py{py_version or PY_MAJOR}"
712
+ if platform:
713
+ egg += f"-{platform}"
714
+ return egg
715
+
716
+
717
+ class EggInfoDeprecationWarning(SetuptoolsDeprecationWarning):
718
+ """Deprecated behavior warning for EggInfo, bypassing suppression."""