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,598 @@
1
+ """distutils.command.bdist_rpm
2
+
3
+ Implements the Distutils 'bdist_rpm' command (create RPM source and binary
4
+ distributions)."""
5
+
6
+ import os
7
+ import subprocess
8
+ import sys
9
+ from distutils._log import log
10
+ from typing import ClassVar
11
+
12
+ from ..core import Command
13
+ from ..debug import DEBUG
14
+ from ..errors import (
15
+ DistutilsExecError,
16
+ DistutilsFileError,
17
+ DistutilsOptionError,
18
+ DistutilsPlatformError,
19
+ )
20
+ from ..file_util import write_file
21
+ from ..sysconfig import get_python_version
22
+
23
+
24
+ class bdist_rpm(Command):
25
+ description = "create an RPM distribution"
26
+
27
+ user_options = [
28
+ ('bdist-base=', None, "base directory for creating built distributions"),
29
+ (
30
+ 'rpm-base=',
31
+ None,
32
+ "base directory for creating RPMs (defaults to \"rpm\" under "
33
+ "--bdist-base; must be specified for RPM 2)",
34
+ ),
35
+ (
36
+ 'dist-dir=',
37
+ 'd',
38
+ "directory to put final RPM files in (and .spec files if --spec-only)",
39
+ ),
40
+ (
41
+ 'python=',
42
+ None,
43
+ "path to Python interpreter to hard-code in the .spec file "
44
+ "[default: \"python\"]",
45
+ ),
46
+ (
47
+ 'fix-python',
48
+ None,
49
+ "hard-code the exact path to the current Python interpreter in "
50
+ "the .spec file",
51
+ ),
52
+ ('spec-only', None, "only regenerate spec file"),
53
+ ('source-only', None, "only generate source RPM"),
54
+ ('binary-only', None, "only generate binary RPM"),
55
+ ('use-bzip2', None, "use bzip2 instead of gzip to create source distribution"),
56
+ # More meta-data: too RPM-specific to put in the setup script,
57
+ # but needs to go in the .spec file -- so we make these options
58
+ # to "bdist_rpm". The idea is that packagers would put this
59
+ # info in setup.cfg, although they are of course free to
60
+ # supply it on the command line.
61
+ (
62
+ 'distribution-name=',
63
+ None,
64
+ "name of the (Linux) distribution to which this "
65
+ "RPM applies (*not* the name of the module distribution!)",
66
+ ),
67
+ ('group=', None, "package classification [default: \"Development/Libraries\"]"),
68
+ ('release=', None, "RPM release number"),
69
+ ('serial=', None, "RPM serial number"),
70
+ (
71
+ 'vendor=',
72
+ None,
73
+ "RPM \"vendor\" (eg. \"Joe Blow <joe@example.com>\") "
74
+ "[default: maintainer or author from setup script]",
75
+ ),
76
+ (
77
+ 'packager=',
78
+ None,
79
+ "RPM packager (eg. \"Jane Doe <jane@example.net>\") [default: vendor]",
80
+ ),
81
+ ('doc-files=', None, "list of documentation files (space or comma-separated)"),
82
+ ('changelog=', None, "RPM changelog"),
83
+ ('icon=', None, "name of icon file"),
84
+ ('provides=', None, "capabilities provided by this package"),
85
+ ('requires=', None, "capabilities required by this package"),
86
+ ('conflicts=', None, "capabilities which conflict with this package"),
87
+ ('build-requires=', None, "capabilities required to build this package"),
88
+ ('obsoletes=', None, "capabilities made obsolete by this package"),
89
+ ('no-autoreq', None, "do not automatically calculate dependencies"),
90
+ # Actions to take when building RPM
91
+ ('keep-temp', 'k', "don't clean up RPM build directory"),
92
+ ('no-keep-temp', None, "clean up RPM build directory [default]"),
93
+ (
94
+ 'use-rpm-opt-flags',
95
+ None,
96
+ "compile with RPM_OPT_FLAGS when building from source RPM",
97
+ ),
98
+ ('no-rpm-opt-flags', None, "do not pass any RPM CFLAGS to compiler"),
99
+ ('rpm3-mode', None, "RPM 3 compatibility mode (default)"),
100
+ ('rpm2-mode', None, "RPM 2 compatibility mode"),
101
+ # Add the hooks necessary for specifying custom scripts
102
+ ('prep-script=', None, "Specify a script for the PREP phase of RPM building"),
103
+ ('build-script=', None, "Specify a script for the BUILD phase of RPM building"),
104
+ (
105
+ 'pre-install=',
106
+ None,
107
+ "Specify a script for the pre-INSTALL phase of RPM building",
108
+ ),
109
+ (
110
+ 'install-script=',
111
+ None,
112
+ "Specify a script for the INSTALL phase of RPM building",
113
+ ),
114
+ (
115
+ 'post-install=',
116
+ None,
117
+ "Specify a script for the post-INSTALL phase of RPM building",
118
+ ),
119
+ (
120
+ 'pre-uninstall=',
121
+ None,
122
+ "Specify a script for the pre-UNINSTALL phase of RPM building",
123
+ ),
124
+ (
125
+ 'post-uninstall=',
126
+ None,
127
+ "Specify a script for the post-UNINSTALL phase of RPM building",
128
+ ),
129
+ ('clean-script=', None, "Specify a script for the CLEAN phase of RPM building"),
130
+ (
131
+ 'verify-script=',
132
+ None,
133
+ "Specify a script for the VERIFY phase of the RPM build",
134
+ ),
135
+ # Allow a packager to explicitly force an architecture
136
+ ('force-arch=', None, "Force an architecture onto the RPM build process"),
137
+ ('quiet', 'q', "Run the INSTALL phase of RPM building in quiet mode"),
138
+ ]
139
+
140
+ boolean_options: ClassVar[list[str]] = [
141
+ 'keep-temp',
142
+ 'use-rpm-opt-flags',
143
+ 'rpm3-mode',
144
+ 'no-autoreq',
145
+ 'quiet',
146
+ ]
147
+
148
+ negative_opt: ClassVar[dict[str, str]] = {
149
+ 'no-keep-temp': 'keep-temp',
150
+ 'no-rpm-opt-flags': 'use-rpm-opt-flags',
151
+ 'rpm2-mode': 'rpm3-mode',
152
+ }
153
+
154
+ def initialize_options(self):
155
+ self.bdist_base = None
156
+ self.rpm_base = None
157
+ self.dist_dir = None
158
+ self.python = None
159
+ self.fix_python = None
160
+ self.spec_only = None
161
+ self.binary_only = None
162
+ self.source_only = None
163
+ self.use_bzip2 = None
164
+
165
+ self.distribution_name = None
166
+ self.group = None
167
+ self.release = None
168
+ self.serial = None
169
+ self.vendor = None
170
+ self.packager = None
171
+ self.doc_files = None
172
+ self.changelog = None
173
+ self.icon = None
174
+
175
+ self.prep_script = None
176
+ self.build_script = None
177
+ self.install_script = None
178
+ self.clean_script = None
179
+ self.verify_script = None
180
+ self.pre_install = None
181
+ self.post_install = None
182
+ self.pre_uninstall = None
183
+ self.post_uninstall = None
184
+ self.prep = None
185
+ self.provides = None
186
+ self.requires = None
187
+ self.conflicts = None
188
+ self.build_requires = None
189
+ self.obsoletes = None
190
+
191
+ self.keep_temp = False
192
+ self.use_rpm_opt_flags = True
193
+ self.rpm3_mode = True
194
+ self.no_autoreq = False
195
+
196
+ self.force_arch = None
197
+ self.quiet = False
198
+
199
+ def finalize_options(self) -> None:
200
+ self.set_undefined_options('bdist', ('bdist_base', 'bdist_base'))
201
+ if self.rpm_base is None:
202
+ if not self.rpm3_mode:
203
+ raise DistutilsOptionError("you must specify --rpm-base in RPM 2 mode")
204
+ self.rpm_base = os.path.join(self.bdist_base, "rpm")
205
+
206
+ if self.python is None:
207
+ if self.fix_python:
208
+ self.python = sys.executable
209
+ else:
210
+ self.python = "python3"
211
+ elif self.fix_python:
212
+ raise DistutilsOptionError(
213
+ "--python and --fix-python are mutually exclusive options"
214
+ )
215
+
216
+ if os.name != 'posix':
217
+ raise DistutilsPlatformError(
218
+ f"don't know how to create RPM distributions on platform {os.name}"
219
+ )
220
+ if self.binary_only and self.source_only:
221
+ raise DistutilsOptionError(
222
+ "cannot supply both '--source-only' and '--binary-only'"
223
+ )
224
+
225
+ # don't pass CFLAGS to pure python distributions
226
+ if not self.distribution.has_ext_modules():
227
+ self.use_rpm_opt_flags = False
228
+
229
+ self.set_undefined_options('bdist', ('dist_dir', 'dist_dir'))
230
+ self.finalize_package_data()
231
+
232
+ def finalize_package_data(self) -> None:
233
+ self.ensure_string('group', "Development/Libraries")
234
+ self.ensure_string(
235
+ 'vendor',
236
+ f"{self.distribution.get_contact()} <{self.distribution.get_contact_email()}>",
237
+ )
238
+ self.ensure_string('packager')
239
+ self.ensure_string_list('doc_files')
240
+ if isinstance(self.doc_files, list):
241
+ for readme in ('README', 'README.txt'):
242
+ if os.path.exists(readme) and readme not in self.doc_files:
243
+ self.doc_files.append(readme)
244
+
245
+ self.ensure_string('release', "1")
246
+ self.ensure_string('serial') # should it be an int?
247
+
248
+ self.ensure_string('distribution_name')
249
+
250
+ self.ensure_string('changelog')
251
+ # Format changelog correctly
252
+ self.changelog = self._format_changelog(self.changelog)
253
+
254
+ self.ensure_filename('icon')
255
+
256
+ self.ensure_filename('prep_script')
257
+ self.ensure_filename('build_script')
258
+ self.ensure_filename('install_script')
259
+ self.ensure_filename('clean_script')
260
+ self.ensure_filename('verify_script')
261
+ self.ensure_filename('pre_install')
262
+ self.ensure_filename('post_install')
263
+ self.ensure_filename('pre_uninstall')
264
+ self.ensure_filename('post_uninstall')
265
+
266
+ # XXX don't forget we punted on summaries and descriptions -- they
267
+ # should be handled here eventually!
268
+
269
+ # Now *this* is some meta-data that belongs in the setup script...
270
+ self.ensure_string_list('provides')
271
+ self.ensure_string_list('requires')
272
+ self.ensure_string_list('conflicts')
273
+ self.ensure_string_list('build_requires')
274
+ self.ensure_string_list('obsoletes')
275
+
276
+ self.ensure_string('force_arch')
277
+
278
+ def run(self) -> None: # noqa: C901
279
+ if DEBUG:
280
+ print("before _get_package_data():")
281
+ print("vendor =", self.vendor)
282
+ print("packager =", self.packager)
283
+ print("doc_files =", self.doc_files)
284
+ print("changelog =", self.changelog)
285
+
286
+ # make directories
287
+ if self.spec_only:
288
+ spec_dir = self.dist_dir
289
+ self.mkpath(spec_dir)
290
+ else:
291
+ rpm_dir = {}
292
+ for d in ('SOURCES', 'SPECS', 'BUILD', 'RPMS', 'SRPMS'):
293
+ rpm_dir[d] = os.path.join(self.rpm_base, d)
294
+ self.mkpath(rpm_dir[d])
295
+ spec_dir = rpm_dir['SPECS']
296
+
297
+ # Spec file goes into 'dist_dir' if '--spec-only specified',
298
+ # build/rpm.<plat> otherwise.
299
+ spec_path = os.path.join(spec_dir, f"{self.distribution.get_name()}.spec")
300
+ self.execute(
301
+ write_file, (spec_path, self._make_spec_file()), f"writing '{spec_path}'"
302
+ )
303
+
304
+ if self.spec_only: # stop if requested
305
+ return
306
+
307
+ # Make a source distribution and copy to SOURCES directory with
308
+ # optional icon.
309
+ saved_dist_files = self.distribution.dist_files[:]
310
+ sdist = self.reinitialize_command('sdist')
311
+ if self.use_bzip2:
312
+ sdist.formats = ['bztar']
313
+ else:
314
+ sdist.formats = ['gztar']
315
+ self.run_command('sdist')
316
+ self.distribution.dist_files = saved_dist_files
317
+
318
+ source = sdist.get_archive_files()[0]
319
+ source_dir = rpm_dir['SOURCES']
320
+ self.copy_file(source, source_dir)
321
+
322
+ if self.icon:
323
+ if os.path.exists(self.icon):
324
+ self.copy_file(self.icon, source_dir)
325
+ else:
326
+ raise DistutilsFileError(f"icon file '{self.icon}' does not exist")
327
+
328
+ # build package
329
+ log.info("building RPMs")
330
+ rpm_cmd = ['rpmbuild']
331
+
332
+ if self.source_only: # what kind of RPMs?
333
+ rpm_cmd.append('-bs')
334
+ elif self.binary_only:
335
+ rpm_cmd.append('-bb')
336
+ else:
337
+ rpm_cmd.append('-ba')
338
+ rpm_cmd.extend(['--define', f'__python {self.python}'])
339
+ if self.rpm3_mode:
340
+ rpm_cmd.extend(['--define', f'_topdir {os.path.abspath(self.rpm_base)}'])
341
+ if not self.keep_temp:
342
+ rpm_cmd.append('--clean')
343
+
344
+ if self.quiet:
345
+ rpm_cmd.append('--quiet')
346
+
347
+ rpm_cmd.append(spec_path)
348
+ # Determine the binary rpm names that should be built out of this spec
349
+ # file
350
+ # Note that some of these may not be really built (if the file
351
+ # list is empty)
352
+ nvr_string = "%{name}-%{version}-%{release}"
353
+ src_rpm = nvr_string + ".src.rpm"
354
+ non_src_rpm = "%{arch}/" + nvr_string + ".%{arch}.rpm"
355
+ q_cmd = rf"rpm -q --qf '{src_rpm} {non_src_rpm}\n' --specfile '{spec_path}'"
356
+
357
+ out = os.popen(q_cmd)
358
+ try:
359
+ binary_rpms = []
360
+ source_rpm = None
361
+ while True:
362
+ line = out.readline()
363
+ if not line:
364
+ break
365
+ ell = line.strip().split()
366
+ assert len(ell) == 2
367
+ binary_rpms.append(ell[1])
368
+ # The source rpm is named after the first entry in the spec file
369
+ if source_rpm is None:
370
+ source_rpm = ell[0]
371
+
372
+ status = out.close()
373
+ if status:
374
+ raise DistutilsExecError(f"Failed to execute: {q_cmd!r}")
375
+
376
+ finally:
377
+ out.close()
378
+
379
+ self.spawn(rpm_cmd)
380
+
381
+ if not self.dry_run:
382
+ if self.distribution.has_ext_modules():
383
+ pyversion = get_python_version()
384
+ else:
385
+ pyversion = 'any'
386
+
387
+ if not self.binary_only:
388
+ srpm = os.path.join(rpm_dir['SRPMS'], source_rpm)
389
+ assert os.path.exists(srpm)
390
+ self.move_file(srpm, self.dist_dir)
391
+ filename = os.path.join(self.dist_dir, source_rpm)
392
+ self.distribution.dist_files.append(('bdist_rpm', pyversion, filename))
393
+
394
+ if not self.source_only:
395
+ for rpm in binary_rpms:
396
+ rpm = os.path.join(rpm_dir['RPMS'], rpm)
397
+ if os.path.exists(rpm):
398
+ self.move_file(rpm, self.dist_dir)
399
+ filename = os.path.join(self.dist_dir, os.path.basename(rpm))
400
+ self.distribution.dist_files.append((
401
+ 'bdist_rpm',
402
+ pyversion,
403
+ filename,
404
+ ))
405
+
406
+ def _dist_path(self, path):
407
+ return os.path.join(self.dist_dir, os.path.basename(path))
408
+
409
+ def _make_spec_file(self): # noqa: C901
410
+ """Generate the text of an RPM spec file and return it as a
411
+ list of strings (one per line).
412
+ """
413
+ # definitions and headers
414
+ spec_file = [
415
+ '%define name ' + self.distribution.get_name(),
416
+ '%define version ' + self.distribution.get_version().replace('-', '_'),
417
+ '%define unmangled_version ' + self.distribution.get_version(),
418
+ '%define release ' + self.release.replace('-', '_'),
419
+ '',
420
+ 'Summary: ' + (self.distribution.get_description() or "UNKNOWN"),
421
+ ]
422
+
423
+ # Workaround for #14443 which affects some RPM based systems such as
424
+ # RHEL6 (and probably derivatives)
425
+ vendor_hook = subprocess.getoutput('rpm --eval %{__os_install_post}')
426
+ # Generate a potential replacement value for __os_install_post (whilst
427
+ # normalizing the whitespace to simplify the test for whether the
428
+ # invocation of brp-python-bytecompile passes in __python):
429
+ vendor_hook = '\n'.join([
430
+ f' {line.strip()} \\' for line in vendor_hook.splitlines()
431
+ ])
432
+ problem = "brp-python-bytecompile \\\n"
433
+ fixed = "brp-python-bytecompile %{__python} \\\n"
434
+ fixed_hook = vendor_hook.replace(problem, fixed)
435
+ if fixed_hook != vendor_hook:
436
+ spec_file.append('# Workaround for https://bugs.python.org/issue14443')
437
+ spec_file.append('%define __os_install_post ' + fixed_hook + '\n')
438
+
439
+ # put locale summaries into spec file
440
+ # XXX not supported for now (hard to put a dictionary
441
+ # in a config file -- arg!)
442
+ # for locale in self.summaries.keys():
443
+ # spec_file.append('Summary(%s): %s' % (locale,
444
+ # self.summaries[locale]))
445
+
446
+ spec_file.extend([
447
+ 'Name: %{name}',
448
+ 'Version: %{version}',
449
+ 'Release: %{release}',
450
+ ])
451
+
452
+ # XXX yuck! this filename is available from the "sdist" command,
453
+ # but only after it has run: and we create the spec file before
454
+ # running "sdist", in case of --spec-only.
455
+ if self.use_bzip2:
456
+ spec_file.append('Source0: %{name}-%{unmangled_version}.tar.bz2')
457
+ else:
458
+ spec_file.append('Source0: %{name}-%{unmangled_version}.tar.gz')
459
+
460
+ spec_file.extend([
461
+ 'License: ' + (self.distribution.get_license() or "UNKNOWN"),
462
+ 'Group: ' + self.group,
463
+ 'BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot',
464
+ 'Prefix: %{_prefix}',
465
+ ])
466
+
467
+ if not self.force_arch:
468
+ # noarch if no extension modules
469
+ if not self.distribution.has_ext_modules():
470
+ spec_file.append('BuildArch: noarch')
471
+ else:
472
+ spec_file.append(f'BuildArch: {self.force_arch}')
473
+
474
+ for field in (
475
+ 'Vendor',
476
+ 'Packager',
477
+ 'Provides',
478
+ 'Requires',
479
+ 'Conflicts',
480
+ 'Obsoletes',
481
+ ):
482
+ val = getattr(self, field.lower())
483
+ if isinstance(val, list):
484
+ spec_file.append('{}: {}'.format(field, ' '.join(val)))
485
+ elif val is not None:
486
+ spec_file.append(f'{field}: {val}')
487
+
488
+ if self.distribution.get_url():
489
+ spec_file.append('Url: ' + self.distribution.get_url())
490
+
491
+ if self.distribution_name:
492
+ spec_file.append('Distribution: ' + self.distribution_name)
493
+
494
+ if self.build_requires:
495
+ spec_file.append('BuildRequires: ' + ' '.join(self.build_requires))
496
+
497
+ if self.icon:
498
+ spec_file.append('Icon: ' + os.path.basename(self.icon))
499
+
500
+ if self.no_autoreq:
501
+ spec_file.append('AutoReq: 0')
502
+
503
+ spec_file.extend([
504
+ '',
505
+ '%description',
506
+ self.distribution.get_long_description() or "",
507
+ ])
508
+
509
+ # put locale descriptions into spec file
510
+ # XXX again, suppressed because config file syntax doesn't
511
+ # easily support this ;-(
512
+ # for locale in self.descriptions.keys():
513
+ # spec_file.extend([
514
+ # '',
515
+ # '%description -l ' + locale,
516
+ # self.descriptions[locale],
517
+ # ])
518
+
519
+ # rpm scripts
520
+ # figure out default build script
521
+ def_setup_call = f"{self.python} {os.path.basename(sys.argv[0])}"
522
+ def_build = f"{def_setup_call} build"
523
+ if self.use_rpm_opt_flags:
524
+ def_build = 'env CFLAGS="$RPM_OPT_FLAGS" ' + def_build
525
+
526
+ # insert contents of files
527
+
528
+ # XXX this is kind of misleading: user-supplied options are files
529
+ # that we open and interpolate into the spec file, but the defaults
530
+ # are just text that we drop in as-is. Hmmm.
531
+
532
+ install_cmd = f'{def_setup_call} install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES'
533
+
534
+ script_options = [
535
+ ('prep', 'prep_script', "%setup -n %{name}-%{unmangled_version}"),
536
+ ('build', 'build_script', def_build),
537
+ ('install', 'install_script', install_cmd),
538
+ ('clean', 'clean_script', "rm -rf $RPM_BUILD_ROOT"),
539
+ ('verifyscript', 'verify_script', None),
540
+ ('pre', 'pre_install', None),
541
+ ('post', 'post_install', None),
542
+ ('preun', 'pre_uninstall', None),
543
+ ('postun', 'post_uninstall', None),
544
+ ]
545
+
546
+ for rpm_opt, attr, default in script_options:
547
+ # Insert contents of file referred to, if no file is referred to
548
+ # use 'default' as contents of script
549
+ val = getattr(self, attr)
550
+ if val or default:
551
+ spec_file.extend([
552
+ '',
553
+ '%' + rpm_opt,
554
+ ])
555
+ if val:
556
+ with open(val) as f:
557
+ spec_file.extend(f.read().split('\n'))
558
+ else:
559
+ spec_file.append(default)
560
+
561
+ # files section
562
+ spec_file.extend([
563
+ '',
564
+ '%files -f INSTALLED_FILES',
565
+ '%defattr(-,root,root)',
566
+ ])
567
+
568
+ if self.doc_files:
569
+ spec_file.append('%doc ' + ' '.join(self.doc_files))
570
+
571
+ if self.changelog:
572
+ spec_file.extend([
573
+ '',
574
+ '%changelog',
575
+ ])
576
+ spec_file.extend(self.changelog)
577
+
578
+ return spec_file
579
+
580
+ def _format_changelog(self, changelog):
581
+ """Format the changelog correctly and convert it to a list of strings"""
582
+ if not changelog:
583
+ return changelog
584
+ new_changelog = []
585
+ for line in changelog.strip().split('\n'):
586
+ line = line.strip()
587
+ if line[0] == '*':
588
+ new_changelog.extend(['', line])
589
+ elif line[0] == '-':
590
+ new_changelog.append(line)
591
+ else:
592
+ new_changelog.append(' ' + line)
593
+
594
+ # strip trailing newline inserted by first changelog entry
595
+ if not new_changelog[0]:
596
+ del new_changelog[0]
597
+
598
+ return new_changelog