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,628 @@
1
+ import contextlib
2
+ import glob
3
+ import importlib
4
+ import os.path
5
+ import platform
6
+ import re
7
+ import shutil
8
+ import site
9
+ import subprocess
10
+ import sys
11
+ import tempfile
12
+ import textwrap
13
+ import time
14
+ from distutils import sysconfig
15
+ from distutils.command.build_ext import build_ext
16
+ from distutils.core import Distribution
17
+ from distutils.errors import (
18
+ CompileError,
19
+ DistutilsPlatformError,
20
+ DistutilsSetupError,
21
+ UnknownFileError,
22
+ )
23
+ from distutils.extension import Extension
24
+ from distutils.tests import missing_compiler_executable
25
+ from distutils.tests.support import TempdirManager, copy_xxmodule_c, fixup_build_ext
26
+ from io import StringIO
27
+
28
+ import jaraco.path
29
+ import path
30
+ import pytest
31
+ from test import support
32
+
33
+ from .compat import py39 as import_helper
34
+
35
+
36
+ @pytest.fixture()
37
+ def user_site_dir(request):
38
+ self = request.instance
39
+ self.tmp_dir = self.mkdtemp()
40
+ self.tmp_path = path.Path(self.tmp_dir)
41
+ from distutils.command import build_ext
42
+
43
+ orig_user_base = site.USER_BASE
44
+
45
+ site.USER_BASE = self.mkdtemp()
46
+ build_ext.USER_BASE = site.USER_BASE
47
+
48
+ # bpo-30132: On Windows, a .pdb file may be created in the current
49
+ # working directory. Create a temporary working directory to cleanup
50
+ # everything at the end of the test.
51
+ with self.tmp_path:
52
+ yield
53
+
54
+ site.USER_BASE = orig_user_base
55
+ build_ext.USER_BASE = orig_user_base
56
+
57
+ if sys.platform == 'cygwin':
58
+ time.sleep(1)
59
+
60
+
61
+ @contextlib.contextmanager
62
+ def safe_extension_import(name, path):
63
+ with import_helper.CleanImport(name):
64
+ with extension_redirect(name, path) as new_path:
65
+ with import_helper.DirsOnSysPath(new_path):
66
+ yield
67
+
68
+
69
+ @contextlib.contextmanager
70
+ def extension_redirect(mod, path):
71
+ """
72
+ Tests will fail to tear down an extension module if it's been imported.
73
+
74
+ Before importing, copy the file to a temporary directory that won't
75
+ be cleaned up. Yield the new path.
76
+ """
77
+ if platform.system() != "Windows" and sys.platform != "cygwin":
78
+ yield path
79
+ return
80
+ with import_helper.DirsOnSysPath(path):
81
+ spec = importlib.util.find_spec(mod)
82
+ filename = os.path.basename(spec.origin)
83
+ trash_dir = tempfile.mkdtemp(prefix='deleteme')
84
+ dest = os.path.join(trash_dir, os.path.basename(filename))
85
+ shutil.copy(spec.origin, dest)
86
+ yield trash_dir
87
+ # TODO: can the file be scheduled for deletion?
88
+
89
+
90
+ @pytest.mark.usefixtures('user_site_dir')
91
+ class TestBuildExt(TempdirManager):
92
+ def build_ext(self, *args, **kwargs):
93
+ return build_ext(*args, **kwargs)
94
+
95
+ @pytest.mark.parametrize("copy_so", [False])
96
+ def test_build_ext(self, copy_so):
97
+ missing_compiler_executable()
98
+ copy_xxmodule_c(self.tmp_dir)
99
+ xx_c = os.path.join(self.tmp_dir, 'xxmodule.c')
100
+ xx_ext = Extension('xx', [xx_c])
101
+ if sys.platform != "win32":
102
+ if not copy_so:
103
+ xx_ext = Extension(
104
+ 'xx',
105
+ [xx_c],
106
+ library_dirs=['/usr/lib'],
107
+ libraries=['z'],
108
+ runtime_library_dirs=['/usr/lib'],
109
+ )
110
+ elif sys.platform == 'linux':
111
+ libz_so = {
112
+ os.path.realpath(name) for name in glob.iglob('/usr/lib*/libz.so*')
113
+ }
114
+ libz_so = sorted(libz_so, key=lambda lib_path: len(lib_path))
115
+ shutil.copyfile(libz_so[-1], '/tmp/libxx_z.so')
116
+
117
+ xx_ext = Extension(
118
+ 'xx',
119
+ [xx_c],
120
+ library_dirs=['/tmp'],
121
+ libraries=['xx_z'],
122
+ runtime_library_dirs=['/tmp'],
123
+ )
124
+ dist = Distribution({'name': 'xx', 'ext_modules': [xx_ext]})
125
+ dist.package_dir = self.tmp_dir
126
+ cmd = self.build_ext(dist)
127
+ fixup_build_ext(cmd)
128
+ cmd.build_lib = self.tmp_dir
129
+ cmd.build_temp = self.tmp_dir
130
+
131
+ old_stdout = sys.stdout
132
+ if not support.verbose:
133
+ # silence compiler output
134
+ sys.stdout = StringIO()
135
+ try:
136
+ cmd.ensure_finalized()
137
+ cmd.run()
138
+ finally:
139
+ sys.stdout = old_stdout
140
+
141
+ with safe_extension_import('xx', self.tmp_dir):
142
+ self._test_xx(copy_so)
143
+
144
+ if sys.platform == 'linux' and copy_so:
145
+ os.unlink('/tmp/libxx_z.so')
146
+
147
+ @staticmethod
148
+ def _test_xx(copy_so):
149
+ import xx # type: ignore[import-not-found] # Module generated for tests
150
+
151
+ for attr in ('error', 'foo', 'new', 'roj'):
152
+ assert hasattr(xx, attr)
153
+
154
+ assert xx.foo(2, 5) == 7
155
+ assert xx.foo(13, 15) == 28
156
+ assert xx.new().demo() is None
157
+ if support.HAVE_DOCSTRINGS:
158
+ doc = 'This is a template module just for instruction.'
159
+ assert xx.__doc__ == doc
160
+ assert isinstance(xx.Null(), xx.Null)
161
+ assert isinstance(xx.Str(), xx.Str)
162
+
163
+ if sys.platform == 'linux':
164
+ so_headers = subprocess.check_output(
165
+ ["readelf", "-d", xx.__file__], universal_newlines=True
166
+ )
167
+ import pprint
168
+
169
+ pprint.pprint(so_headers)
170
+ rpaths = [
171
+ rpath
172
+ for line in so_headers.split("\n")
173
+ if "RPATH" in line or "RUNPATH" in line
174
+ for rpath in line.split()[2][1:-1].split(":")
175
+ ]
176
+ if not copy_so:
177
+ pprint.pprint(rpaths)
178
+ # Linked against a library in /usr/lib{,64}
179
+ assert "/usr/lib" not in rpaths and "/usr/lib64" not in rpaths
180
+ else:
181
+ # Linked against a library in /tmp
182
+ assert "/tmp" in rpaths
183
+ # The import is the real test here
184
+
185
+ def test_solaris_enable_shared(self):
186
+ dist = Distribution({'name': 'xx'})
187
+ cmd = self.build_ext(dist)
188
+ old = sys.platform
189
+
190
+ sys.platform = 'sunos' # fooling finalize_options
191
+ from distutils.sysconfig import _config_vars
192
+
193
+ old_var = _config_vars.get('Py_ENABLE_SHARED')
194
+ _config_vars['Py_ENABLE_SHARED'] = True
195
+ try:
196
+ cmd.ensure_finalized()
197
+ finally:
198
+ sys.platform = old
199
+ if old_var is None:
200
+ del _config_vars['Py_ENABLE_SHARED']
201
+ else:
202
+ _config_vars['Py_ENABLE_SHARED'] = old_var
203
+
204
+ # make sure we get some library dirs under solaris
205
+ assert len(cmd.library_dirs) > 0
206
+
207
+ def test_user_site(self):
208
+ import site
209
+
210
+ dist = Distribution({'name': 'xx'})
211
+ cmd = self.build_ext(dist)
212
+
213
+ # making sure the user option is there
214
+ options = [name for name, short, label in cmd.user_options]
215
+ assert 'user' in options
216
+
217
+ # setting a value
218
+ cmd.user = True
219
+
220
+ # setting user based lib and include
221
+ lib = os.path.join(site.USER_BASE, 'lib')
222
+ incl = os.path.join(site.USER_BASE, 'include')
223
+ os.mkdir(lib)
224
+ os.mkdir(incl)
225
+
226
+ # let's run finalize
227
+ cmd.ensure_finalized()
228
+
229
+ # see if include_dirs and library_dirs
230
+ # were set
231
+ assert lib in cmd.library_dirs
232
+ assert lib in cmd.rpath
233
+ assert incl in cmd.include_dirs
234
+
235
+ def test_optional_extension(self):
236
+ # this extension will fail, but let's ignore this failure
237
+ # with the optional argument.
238
+ modules = [Extension('foo', ['xxx'], optional=False)]
239
+ dist = Distribution({'name': 'xx', 'ext_modules': modules})
240
+ cmd = self.build_ext(dist)
241
+ cmd.ensure_finalized()
242
+ with pytest.raises((UnknownFileError, CompileError)):
243
+ cmd.run() # should raise an error
244
+
245
+ modules = [Extension('foo', ['xxx'], optional=True)]
246
+ dist = Distribution({'name': 'xx', 'ext_modules': modules})
247
+ cmd = self.build_ext(dist)
248
+ cmd.ensure_finalized()
249
+ cmd.run() # should pass
250
+
251
+ def test_finalize_options(self):
252
+ # Make sure Python's include directories (for Python.h, pyconfig.h,
253
+ # etc.) are in the include search path.
254
+ modules = [Extension('foo', ['xxx'], optional=False)]
255
+ dist = Distribution({'name': 'xx', 'ext_modules': modules})
256
+ cmd = self.build_ext(dist)
257
+ cmd.finalize_options()
258
+
259
+ py_include = sysconfig.get_python_inc()
260
+ for p in py_include.split(os.path.pathsep):
261
+ assert p in cmd.include_dirs
262
+
263
+ plat_py_include = sysconfig.get_python_inc(plat_specific=True)
264
+ for p in plat_py_include.split(os.path.pathsep):
265
+ assert p in cmd.include_dirs
266
+
267
+ # make sure cmd.libraries is turned into a list
268
+ # if it's a string
269
+ cmd = self.build_ext(dist)
270
+ cmd.libraries = 'my_lib, other_lib lastlib'
271
+ cmd.finalize_options()
272
+ assert cmd.libraries == ['my_lib', 'other_lib', 'lastlib']
273
+
274
+ # make sure cmd.library_dirs is turned into a list
275
+ # if it's a string
276
+ cmd = self.build_ext(dist)
277
+ cmd.library_dirs = f'my_lib_dir{os.pathsep}other_lib_dir'
278
+ cmd.finalize_options()
279
+ assert 'my_lib_dir' in cmd.library_dirs
280
+ assert 'other_lib_dir' in cmd.library_dirs
281
+
282
+ # make sure rpath is turned into a list
283
+ # if it's a string
284
+ cmd = self.build_ext(dist)
285
+ cmd.rpath = f'one{os.pathsep}two'
286
+ cmd.finalize_options()
287
+ assert cmd.rpath == ['one', 'two']
288
+
289
+ # make sure cmd.link_objects is turned into a list
290
+ # if it's a string
291
+ cmd = build_ext(dist)
292
+ cmd.link_objects = 'one two,three'
293
+ cmd.finalize_options()
294
+ assert cmd.link_objects == ['one', 'two', 'three']
295
+
296
+ # XXX more tests to perform for win32
297
+
298
+ # make sure define is turned into 2-tuples
299
+ # strings if they are ','-separated strings
300
+ cmd = self.build_ext(dist)
301
+ cmd.define = 'one,two'
302
+ cmd.finalize_options()
303
+ assert cmd.define == [('one', '1'), ('two', '1')]
304
+
305
+ # make sure undef is turned into a list of
306
+ # strings if they are ','-separated strings
307
+ cmd = self.build_ext(dist)
308
+ cmd.undef = 'one,two'
309
+ cmd.finalize_options()
310
+ assert cmd.undef == ['one', 'two']
311
+
312
+ # make sure swig_opts is turned into a list
313
+ cmd = self.build_ext(dist)
314
+ cmd.swig_opts = None
315
+ cmd.finalize_options()
316
+ assert cmd.swig_opts == []
317
+
318
+ cmd = self.build_ext(dist)
319
+ cmd.swig_opts = '1 2'
320
+ cmd.finalize_options()
321
+ assert cmd.swig_opts == ['1', '2']
322
+
323
+ def test_check_extensions_list(self):
324
+ dist = Distribution()
325
+ cmd = self.build_ext(dist)
326
+ cmd.finalize_options()
327
+
328
+ # 'extensions' option must be a list of Extension instances
329
+ with pytest.raises(DistutilsSetupError):
330
+ cmd.check_extensions_list('foo')
331
+
332
+ # each element of 'ext_modules' option must be an
333
+ # Extension instance or 2-tuple
334
+ exts = [('bar', 'foo', 'bar'), 'foo']
335
+ with pytest.raises(DistutilsSetupError):
336
+ cmd.check_extensions_list(exts)
337
+
338
+ # first element of each tuple in 'ext_modules'
339
+ # must be the extension name (a string) and match
340
+ # a python dotted-separated name
341
+ exts = [('foo-bar', '')]
342
+ with pytest.raises(DistutilsSetupError):
343
+ cmd.check_extensions_list(exts)
344
+
345
+ # second element of each tuple in 'ext_modules'
346
+ # must be a dictionary (build info)
347
+ exts = [('foo.bar', '')]
348
+ with pytest.raises(DistutilsSetupError):
349
+ cmd.check_extensions_list(exts)
350
+
351
+ # ok this one should pass
352
+ exts = [('foo.bar', {'sources': [''], 'libraries': 'foo', 'some': 'bar'})]
353
+ cmd.check_extensions_list(exts)
354
+ ext = exts[0]
355
+ assert isinstance(ext, Extension)
356
+
357
+ # check_extensions_list adds in ext the values passed
358
+ # when they are in ('include_dirs', 'library_dirs', 'libraries'
359
+ # 'extra_objects', 'extra_compile_args', 'extra_link_args')
360
+ assert ext.libraries == 'foo'
361
+ assert not hasattr(ext, 'some')
362
+
363
+ # 'macros' element of build info dict must be 1- or 2-tuple
364
+ exts = [
365
+ (
366
+ 'foo.bar',
367
+ {
368
+ 'sources': [''],
369
+ 'libraries': 'foo',
370
+ 'some': 'bar',
371
+ 'macros': [('1', '2', '3'), 'foo'],
372
+ },
373
+ )
374
+ ]
375
+ with pytest.raises(DistutilsSetupError):
376
+ cmd.check_extensions_list(exts)
377
+
378
+ exts[0][1]['macros'] = [('1', '2'), ('3',)]
379
+ cmd.check_extensions_list(exts)
380
+ assert exts[0].undef_macros == ['3']
381
+ assert exts[0].define_macros == [('1', '2')]
382
+
383
+ def test_get_source_files(self):
384
+ modules = [Extension('foo', ['xxx'], optional=False)]
385
+ dist = Distribution({'name': 'xx', 'ext_modules': modules})
386
+ cmd = self.build_ext(dist)
387
+ cmd.ensure_finalized()
388
+ assert cmd.get_source_files() == ['xxx']
389
+
390
+ def test_unicode_module_names(self):
391
+ modules = [
392
+ Extension('foo', ['aaa'], optional=False),
393
+ Extension('föö', ['uuu'], optional=False),
394
+ ]
395
+ dist = Distribution({'name': 'xx', 'ext_modules': modules})
396
+ cmd = self.build_ext(dist)
397
+ cmd.ensure_finalized()
398
+ assert re.search(r'foo(_d)?\..*', cmd.get_ext_filename(modules[0].name))
399
+ assert re.search(r'föö(_d)?\..*', cmd.get_ext_filename(modules[1].name))
400
+ assert cmd.get_export_symbols(modules[0]) == ['PyInit_foo']
401
+ assert cmd.get_export_symbols(modules[1]) == ['PyInitU_f_1gaa']
402
+
403
+ def test_export_symbols__init__(self):
404
+ # https://github.com/python/cpython/issues/80074
405
+ # https://github.com/pypa/setuptools/issues/4826
406
+ modules = [
407
+ Extension('foo.__init__', ['aaa']),
408
+ Extension('föö.__init__', ['uuu']),
409
+ ]
410
+ dist = Distribution({'name': 'xx', 'ext_modules': modules})
411
+ cmd = self.build_ext(dist)
412
+ cmd.ensure_finalized()
413
+ assert cmd.get_export_symbols(modules[0]) == ['PyInit_foo']
414
+ assert cmd.get_export_symbols(modules[1]) == ['PyInitU_f_1gaa']
415
+
416
+ def test_compiler_option(self):
417
+ # cmd.compiler is an option and
418
+ # should not be overridden by a compiler instance
419
+ # when the command is run
420
+ dist = Distribution()
421
+ cmd = self.build_ext(dist)
422
+ cmd.compiler = 'unix'
423
+ cmd.ensure_finalized()
424
+ cmd.run()
425
+ assert cmd.compiler == 'unix'
426
+
427
+ def test_get_outputs(self):
428
+ missing_compiler_executable()
429
+ tmp_dir = self.mkdtemp()
430
+ c_file = os.path.join(tmp_dir, 'foo.c')
431
+ self.write_file(c_file, 'void PyInit_foo(void) {}\n')
432
+ ext = Extension('foo', [c_file], optional=False)
433
+ dist = Distribution({'name': 'xx', 'ext_modules': [ext]})
434
+ cmd = self.build_ext(dist)
435
+ fixup_build_ext(cmd)
436
+ cmd.ensure_finalized()
437
+ assert len(cmd.get_outputs()) == 1
438
+
439
+ cmd.build_lib = os.path.join(self.tmp_dir, 'build')
440
+ cmd.build_temp = os.path.join(self.tmp_dir, 'tempt')
441
+
442
+ # issue #5977 : distutils build_ext.get_outputs
443
+ # returns wrong result with --inplace
444
+ other_tmp_dir = os.path.realpath(self.mkdtemp())
445
+ old_wd = os.getcwd()
446
+ os.chdir(other_tmp_dir)
447
+ try:
448
+ cmd.inplace = True
449
+ cmd.run()
450
+ so_file = cmd.get_outputs()[0]
451
+ finally:
452
+ os.chdir(old_wd)
453
+ assert os.path.exists(so_file)
454
+ ext_suffix = sysconfig.get_config_var('EXT_SUFFIX')
455
+ assert so_file.endswith(ext_suffix)
456
+ so_dir = os.path.dirname(so_file)
457
+ assert so_dir == other_tmp_dir
458
+
459
+ cmd.inplace = False
460
+ cmd.compiler = None
461
+ cmd.run()
462
+ so_file = cmd.get_outputs()[0]
463
+ assert os.path.exists(so_file)
464
+ assert so_file.endswith(ext_suffix)
465
+ so_dir = os.path.dirname(so_file)
466
+ assert so_dir == cmd.build_lib
467
+
468
+ # inplace = False, cmd.package = 'bar'
469
+ build_py = cmd.get_finalized_command('build_py')
470
+ build_py.package_dir = {'': 'bar'}
471
+ path = cmd.get_ext_fullpath('foo')
472
+ # checking that the last directory is the build_dir
473
+ path = os.path.split(path)[0]
474
+ assert path == cmd.build_lib
475
+
476
+ # inplace = True, cmd.package = 'bar'
477
+ cmd.inplace = True
478
+ other_tmp_dir = os.path.realpath(self.mkdtemp())
479
+ old_wd = os.getcwd()
480
+ os.chdir(other_tmp_dir)
481
+ try:
482
+ path = cmd.get_ext_fullpath('foo')
483
+ finally:
484
+ os.chdir(old_wd)
485
+ # checking that the last directory is bar
486
+ path = os.path.split(path)[0]
487
+ lastdir = os.path.split(path)[-1]
488
+ assert lastdir == 'bar'
489
+
490
+ def test_ext_fullpath(self):
491
+ ext = sysconfig.get_config_var('EXT_SUFFIX')
492
+ # building lxml.etree inplace
493
+ # etree_c = os.path.join(self.tmp_dir, 'lxml.etree.c')
494
+ # etree_ext = Extension('lxml.etree', [etree_c])
495
+ # dist = Distribution({'name': 'lxml', 'ext_modules': [etree_ext]})
496
+ dist = Distribution()
497
+ cmd = self.build_ext(dist)
498
+ cmd.inplace = True
499
+ cmd.distribution.package_dir = {'': 'src'}
500
+ cmd.distribution.packages = ['lxml', 'lxml.html']
501
+ curdir = os.getcwd()
502
+ wanted = os.path.join(curdir, 'src', 'lxml', 'etree' + ext)
503
+ path = cmd.get_ext_fullpath('lxml.etree')
504
+ assert wanted == path
505
+
506
+ # building lxml.etree not inplace
507
+ cmd.inplace = False
508
+ cmd.build_lib = os.path.join(curdir, 'tmpdir')
509
+ wanted = os.path.join(curdir, 'tmpdir', 'lxml', 'etree' + ext)
510
+ path = cmd.get_ext_fullpath('lxml.etree')
511
+ assert wanted == path
512
+
513
+ # building twisted.runner.portmap not inplace
514
+ build_py = cmd.get_finalized_command('build_py')
515
+ build_py.package_dir = {}
516
+ cmd.distribution.packages = ['twisted', 'twisted.runner.portmap']
517
+ path = cmd.get_ext_fullpath('twisted.runner.portmap')
518
+ wanted = os.path.join(curdir, 'tmpdir', 'twisted', 'runner', 'portmap' + ext)
519
+ assert wanted == path
520
+
521
+ # building twisted.runner.portmap inplace
522
+ cmd.inplace = True
523
+ path = cmd.get_ext_fullpath('twisted.runner.portmap')
524
+ wanted = os.path.join(curdir, 'twisted', 'runner', 'portmap' + ext)
525
+ assert wanted == path
526
+
527
+ @pytest.mark.skipif('platform.system() != "Darwin"')
528
+ @pytest.mark.usefixtures('save_env')
529
+ def test_deployment_target_default(self):
530
+ # Issue 9516: Test that, in the absence of the environment variable,
531
+ # an extension module is compiled with the same deployment target as
532
+ # the interpreter.
533
+ self._try_compile_deployment_target('==', None)
534
+
535
+ @pytest.mark.skipif('platform.system() != "Darwin"')
536
+ @pytest.mark.usefixtures('save_env')
537
+ def test_deployment_target_too_low(self):
538
+ # Issue 9516: Test that an extension module is not allowed to be
539
+ # compiled with a deployment target less than that of the interpreter.
540
+ with pytest.raises(DistutilsPlatformError):
541
+ self._try_compile_deployment_target('>', '10.1')
542
+
543
+ @pytest.mark.skipif('platform.system() != "Darwin"')
544
+ @pytest.mark.usefixtures('save_env')
545
+ def test_deployment_target_higher_ok(self): # pragma: no cover
546
+ # Issue 9516: Test that an extension module can be compiled with a
547
+ # deployment target higher than that of the interpreter: the ext
548
+ # module may depend on some newer OS feature.
549
+ deptarget = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')
550
+ if deptarget:
551
+ # increment the minor version number (i.e. 10.6 -> 10.7)
552
+ deptarget = [int(x) for x in deptarget.split('.')]
553
+ deptarget[-1] += 1
554
+ deptarget = '.'.join(str(i) for i in deptarget)
555
+ self._try_compile_deployment_target('<', deptarget)
556
+
557
+ def _try_compile_deployment_target(self, operator, target): # pragma: no cover
558
+ if target is None:
559
+ if os.environ.get('MACOSX_DEPLOYMENT_TARGET'):
560
+ del os.environ['MACOSX_DEPLOYMENT_TARGET']
561
+ else:
562
+ os.environ['MACOSX_DEPLOYMENT_TARGET'] = target
563
+
564
+ jaraco.path.build(
565
+ {
566
+ 'deptargetmodule.c': textwrap.dedent(f"""\
567
+ #include <AvailabilityMacros.h>
568
+
569
+ int dummy;
570
+
571
+ #if TARGET {operator} MAC_OS_X_VERSION_MIN_REQUIRED
572
+ #else
573
+ #error "Unexpected target"
574
+ #endif
575
+
576
+ """),
577
+ },
578
+ self.tmp_path,
579
+ )
580
+
581
+ # get the deployment target that the interpreter was built with
582
+ target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')
583
+ target = tuple(map(int, target.split('.')[0:2]))
584
+ # format the target value as defined in the Apple
585
+ # Availability Macros. We can't use the macro names since
586
+ # at least one value we test with will not exist yet.
587
+ if target[:2] < (10, 10):
588
+ # for 10.1 through 10.9.x -> "10n0"
589
+ tmpl = '{:02}{:01}0'
590
+ else:
591
+ # for 10.10 and beyond -> "10nn00"
592
+ if len(target) >= 2:
593
+ tmpl = '{:02}{:02}00'
594
+ else:
595
+ # 11 and later can have no minor version (11 instead of 11.0)
596
+ tmpl = '{:02}0000'
597
+ target = tmpl.format(*target)
598
+ deptarget_ext = Extension(
599
+ 'deptarget',
600
+ [self.tmp_path / 'deptargetmodule.c'],
601
+ extra_compile_args=[f'-DTARGET={target}'],
602
+ )
603
+ dist = Distribution({'name': 'deptarget', 'ext_modules': [deptarget_ext]})
604
+ dist.package_dir = self.tmp_dir
605
+ cmd = self.build_ext(dist)
606
+ cmd.build_lib = self.tmp_dir
607
+ cmd.build_temp = self.tmp_dir
608
+
609
+ try:
610
+ old_stdout = sys.stdout
611
+ if not support.verbose:
612
+ # silence compiler output
613
+ sys.stdout = StringIO()
614
+ try:
615
+ cmd.ensure_finalized()
616
+ cmd.run()
617
+ finally:
618
+ sys.stdout = old_stdout
619
+
620
+ except CompileError:
621
+ self.fail("Wrong deployment target during compilation")
622
+
623
+
624
+ class TestParallelBuildExt(TestBuildExt):
625
+ def build_ext(self, *args, **kwargs):
626
+ build_ext = super().build_ext(*args, **kwargs)
627
+ build_ext.parallel = True
628
+ return build_ext