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,76 @@
1
+ """Tests for distutils.cygwinccompiler."""
2
+
3
+ import os
4
+ import sys
5
+ from distutils import sysconfig
6
+ from distutils.tests import support
7
+
8
+ import pytest
9
+
10
+ from .. import cygwin
11
+
12
+
13
+ @pytest.fixture(autouse=True)
14
+ def stuff(request, monkeypatch, distutils_managed_tempdir):
15
+ self = request.instance
16
+ self.python_h = os.path.join(self.mkdtemp(), 'python.h')
17
+ monkeypatch.setattr(sysconfig, 'get_config_h_filename', self._get_config_h_filename)
18
+ monkeypatch.setattr(sys, 'version', sys.version)
19
+
20
+
21
+ class TestCygwinCCompiler(support.TempdirManager):
22
+ def _get_config_h_filename(self):
23
+ return self.python_h
24
+
25
+ @pytest.mark.skipif('sys.platform != "cygwin"')
26
+ @pytest.mark.skipif('not os.path.exists("/usr/lib/libbash.dll.a")')
27
+ def test_find_library_file(self):
28
+ from distutils.cygwinccompiler import CygwinCCompiler
29
+
30
+ compiler = CygwinCCompiler()
31
+ link_name = "bash"
32
+ linkable_file = compiler.find_library_file(["/usr/lib"], link_name)
33
+ assert linkable_file is not None
34
+ assert os.path.exists(linkable_file)
35
+ assert linkable_file == f"/usr/lib/lib{link_name:s}.dll.a"
36
+
37
+ @pytest.mark.skipif('sys.platform != "cygwin"')
38
+ def test_runtime_library_dir_option(self):
39
+ from distutils.cygwinccompiler import CygwinCCompiler
40
+
41
+ compiler = CygwinCCompiler()
42
+ assert compiler.runtime_library_dir_option('/foo') == []
43
+
44
+ def test_check_config_h(self):
45
+ # check_config_h looks for "GCC" in sys.version first
46
+ # returns CONFIG_H_OK if found
47
+ sys.version = (
48
+ '2.6.1 (r261:67515, Dec 6 2008, 16:42:21) \n[GCC '
49
+ '4.0.1 (Apple Computer, Inc. build 5370)]'
50
+ )
51
+
52
+ assert cygwin.check_config_h()[0] == cygwin.CONFIG_H_OK
53
+
54
+ # then it tries to see if it can find "__GNUC__" in pyconfig.h
55
+ sys.version = 'something without the *CC word'
56
+
57
+ # if the file doesn't exist it returns CONFIG_H_UNCERTAIN
58
+ assert cygwin.check_config_h()[0] == cygwin.CONFIG_H_UNCERTAIN
59
+
60
+ # if it exists but does not contain __GNUC__, it returns CONFIG_H_NOTOK
61
+ self.write_file(self.python_h, 'xxx')
62
+ assert cygwin.check_config_h()[0] == cygwin.CONFIG_H_NOTOK
63
+
64
+ # and CONFIG_H_OK if __GNUC__ is found
65
+ self.write_file(self.python_h, 'xxx __GNUC__ xxx')
66
+ assert cygwin.check_config_h()[0] == cygwin.CONFIG_H_OK
67
+
68
+ def test_get_msvcr(self):
69
+ assert cygwin.get_msvcr() == []
70
+
71
+ @pytest.mark.skipif('sys.platform != "cygwin"')
72
+ def test_dll_libraries_not_none(self):
73
+ from distutils.cygwinccompiler import CygwinCCompiler
74
+
75
+ compiler = CygwinCCompiler()
76
+ assert compiler.dll_libraries is not None
@@ -0,0 +1,48 @@
1
+ from distutils import sysconfig
2
+ from distutils.errors import DistutilsPlatformError
3
+ from distutils.util import is_mingw, split_quoted
4
+
5
+ import pytest
6
+
7
+ from .. import cygwin, errors
8
+
9
+
10
+ class TestMinGW32Compiler:
11
+ @pytest.mark.skipif(not is_mingw(), reason='not on mingw')
12
+ def test_compiler_type(self):
13
+ compiler = cygwin.MinGW32Compiler()
14
+ assert compiler.compiler_type == 'mingw32'
15
+
16
+ @pytest.mark.skipif(not is_mingw(), reason='not on mingw')
17
+ def test_set_executables(self, monkeypatch):
18
+ monkeypatch.setenv('CC', 'cc')
19
+ monkeypatch.setenv('CXX', 'c++')
20
+
21
+ compiler = cygwin.MinGW32Compiler()
22
+
23
+ assert compiler.compiler == split_quoted('cc -O -Wall')
24
+ assert compiler.compiler_so == split_quoted('cc -shared -O -Wall')
25
+ assert compiler.compiler_cxx == split_quoted('c++ -O -Wall')
26
+ assert compiler.linker_exe == split_quoted('cc')
27
+ assert compiler.linker_so == split_quoted('cc -shared')
28
+
29
+ @pytest.mark.skipif(not is_mingw(), reason='not on mingw')
30
+ def test_runtime_library_dir_option(self):
31
+ compiler = cygwin.MinGW32Compiler()
32
+ with pytest.raises(DistutilsPlatformError):
33
+ compiler.runtime_library_dir_option('/usr/lib')
34
+
35
+ @pytest.mark.skipif(not is_mingw(), reason='not on mingw')
36
+ def test_cygwincc_error(self, monkeypatch):
37
+ monkeypatch.setattr(cygwin, 'is_cygwincc', lambda _: True)
38
+
39
+ with pytest.raises(errors.Error):
40
+ cygwin.MinGW32Compiler()
41
+
42
+ @pytest.mark.skipif('sys.platform == "cygwin"')
43
+ def test_customize_compiler_with_msvc_python(self):
44
+ # In case we have an MSVC Python build, but still want to use
45
+ # MinGW32Compiler, then customize_compiler() shouldn't fail at least.
46
+ # https://github.com/pypa/setuptools/issues/4456
47
+ compiler = cygwin.MinGW32Compiler()
48
+ sysconfig.customize_compiler(compiler)
@@ -0,0 +1,136 @@
1
+ import os
2
+ import sys
3
+ import sysconfig
4
+ import threading
5
+ import unittest.mock as mock
6
+ from distutils.errors import DistutilsPlatformError
7
+ from distutils.tests import support
8
+ from distutils.util import get_platform
9
+
10
+ import pytest
11
+
12
+ from .. import msvc
13
+
14
+ needs_winreg = pytest.mark.skipif('not hasattr(msvc, "winreg")')
15
+
16
+
17
+ class Testmsvccompiler(support.TempdirManager):
18
+ def test_no_compiler(self, monkeypatch):
19
+ # makes sure query_vcvarsall raises
20
+ # a DistutilsPlatformError if the compiler
21
+ # is not found
22
+ def _find_vcvarsall(plat_spec):
23
+ return None, None
24
+
25
+ monkeypatch.setattr(msvc, '_find_vcvarsall', _find_vcvarsall)
26
+
27
+ with pytest.raises(DistutilsPlatformError):
28
+ msvc._get_vc_env(
29
+ 'wont find this version',
30
+ )
31
+
32
+ @pytest.mark.skipif(
33
+ not sysconfig.get_platform().startswith("win"),
34
+ reason="Only run test for non-mingw Windows platforms",
35
+ )
36
+ @pytest.mark.parametrize(
37
+ "plat_name, expected",
38
+ [
39
+ ("win-arm64", "win-arm64"),
40
+ ("win-amd64", "win-amd64"),
41
+ (None, get_platform()),
42
+ ],
43
+ )
44
+ def test_cross_platform_compilation_paths(self, monkeypatch, plat_name, expected):
45
+ """
46
+ Ensure a specified target platform is passed to _get_vcvars_spec.
47
+ """
48
+ compiler = msvc.Compiler()
49
+
50
+ def _get_vcvars_spec(host_platform, platform):
51
+ assert platform == expected
52
+
53
+ monkeypatch.setattr(msvc, '_get_vcvars_spec', _get_vcvars_spec)
54
+ compiler.initialize(plat_name)
55
+
56
+ @needs_winreg
57
+ def test_get_vc_env_unicode(self):
58
+ test_var = 'ṰḖṤṪ┅ṼẨṜ'
59
+ test_value = '₃⁴₅'
60
+
61
+ # Ensure we don't early exit from _get_vc_env
62
+ old_distutils_use_sdk = os.environ.pop('DISTUTILS_USE_SDK', None)
63
+ os.environ[test_var] = test_value
64
+ try:
65
+ env = msvc._get_vc_env('x86')
66
+ assert test_var.lower() in env
67
+ assert test_value == env[test_var.lower()]
68
+ finally:
69
+ os.environ.pop(test_var)
70
+ if old_distutils_use_sdk:
71
+ os.environ['DISTUTILS_USE_SDK'] = old_distutils_use_sdk
72
+
73
+ @needs_winreg
74
+ @pytest.mark.parametrize('ver', (2015, 2017))
75
+ def test_get_vc(self, ver):
76
+ # This function cannot be mocked, so pass if VC is found
77
+ # and skip otherwise.
78
+ lookup = getattr(msvc, f'_find_vc{ver}')
79
+ expected_version = {2015: 14, 2017: 15}[ver]
80
+ version, path = lookup()
81
+ if not version:
82
+ pytest.skip(f"VS {ver} is not installed")
83
+ assert version >= expected_version
84
+ assert os.path.isdir(path)
85
+
86
+
87
+ class CheckThread(threading.Thread):
88
+ exc_info = None
89
+
90
+ def run(self):
91
+ try:
92
+ super().run()
93
+ except Exception:
94
+ self.exc_info = sys.exc_info()
95
+
96
+ def __bool__(self):
97
+ return not self.exc_info
98
+
99
+
100
+ class TestSpawn:
101
+ def test_concurrent_safe(self):
102
+ """
103
+ Concurrent calls to spawn should have consistent results.
104
+ """
105
+ compiler = msvc.Compiler()
106
+ compiler._paths = "expected"
107
+ inner_cmd = 'import os; assert os.environ["PATH"] == "expected"'
108
+ command = [sys.executable, '-c', inner_cmd]
109
+
110
+ threads = [
111
+ CheckThread(target=compiler.spawn, args=[command]) for n in range(100)
112
+ ]
113
+ for thread in threads:
114
+ thread.start()
115
+ for thread in threads:
116
+ thread.join()
117
+ assert all(threads)
118
+
119
+ def test_concurrent_safe_fallback(self):
120
+ """
121
+ If CCompiler.spawn has been monkey-patched without support
122
+ for an env, it should still execute.
123
+ """
124
+ from distutils import ccompiler
125
+
126
+ compiler = msvc.Compiler()
127
+ compiler._paths = "expected"
128
+
129
+ def CCompiler_spawn(self, cmd):
130
+ "A spawn without an env argument."
131
+ assert os.environ["PATH"] == "expected"
132
+
133
+ with mock.patch.object(ccompiler.CCompiler, 'spawn', CCompiler_spawn):
134
+ compiler.spawn(["n/a"])
135
+
136
+ assert os.environ.get("PATH") != "expected"
@@ -0,0 +1,413 @@
1
+ """Tests for distutils.unixccompiler."""
2
+
3
+ import os
4
+ import sys
5
+ import unittest.mock as mock
6
+ from distutils import sysconfig
7
+ from distutils.compat import consolidate_linker_args
8
+ from distutils.errors import DistutilsPlatformError
9
+ from distutils.tests import support
10
+ from distutils.tests.compat.py39 import EnvironmentVarGuard
11
+ from distutils.util import _clear_cached_macosx_ver
12
+
13
+ import pytest
14
+
15
+ from .. import unix
16
+
17
+
18
+ @pytest.fixture(autouse=True)
19
+ def save_values(monkeypatch):
20
+ monkeypatch.setattr(sys, 'platform', sys.platform)
21
+ monkeypatch.setattr(sysconfig, 'get_config_var', sysconfig.get_config_var)
22
+ monkeypatch.setattr(sysconfig, 'get_config_vars', sysconfig.get_config_vars)
23
+
24
+
25
+ @pytest.fixture(autouse=True)
26
+ def compiler_wrapper(request):
27
+ class CompilerWrapper(unix.Compiler):
28
+ def rpath_foo(self):
29
+ return self.runtime_library_dir_option('/foo')
30
+
31
+ request.instance.cc = CompilerWrapper()
32
+
33
+
34
+ class TestUnixCCompiler(support.TempdirManager):
35
+ @pytest.mark.skipif('platform.system == "Windows"')
36
+ def test_runtime_libdir_option(self): # noqa: C901
37
+ # Issue #5900; GitHub Issue #37
38
+ #
39
+ # Ensure RUNPATH is added to extension modules with RPATH if
40
+ # GNU ld is used
41
+
42
+ # darwin
43
+ sys.platform = 'darwin'
44
+ darwin_ver_var = 'MACOSX_DEPLOYMENT_TARGET'
45
+ darwin_rpath_flag = '-Wl,-rpath,/foo'
46
+ darwin_lib_flag = '-L/foo'
47
+
48
+ # (macOS version from syscfg, macOS version from env var) -> flag
49
+ # Version value of None generates two tests: as None and as empty string
50
+ # Expected flag value of None means an mismatch exception is expected
51
+ darwin_test_cases = [
52
+ ((None, None), darwin_lib_flag),
53
+ ((None, '11'), darwin_rpath_flag),
54
+ (('10', None), darwin_lib_flag),
55
+ (('10.3', None), darwin_lib_flag),
56
+ (('10.3.1', None), darwin_lib_flag),
57
+ (('10.5', None), darwin_rpath_flag),
58
+ (('10.5.1', None), darwin_rpath_flag),
59
+ (('10.3', '10.3'), darwin_lib_flag),
60
+ (('10.3', '10.5'), darwin_rpath_flag),
61
+ (('10.5', '10.3'), darwin_lib_flag),
62
+ (('10.5', '11'), darwin_rpath_flag),
63
+ (('10.4', '10'), None),
64
+ ]
65
+
66
+ def make_darwin_gcv(syscfg_macosx_ver):
67
+ def gcv(var):
68
+ if var == darwin_ver_var:
69
+ return syscfg_macosx_ver
70
+ return "xxx"
71
+
72
+ return gcv
73
+
74
+ def do_darwin_test(syscfg_macosx_ver, env_macosx_ver, expected_flag):
75
+ env = os.environ
76
+ msg = f"macOS version = (sysconfig={syscfg_macosx_ver!r}, env={env_macosx_ver!r})"
77
+
78
+ # Save
79
+ old_gcv = sysconfig.get_config_var
80
+ old_env_macosx_ver = env.get(darwin_ver_var)
81
+
82
+ # Setup environment
83
+ _clear_cached_macosx_ver()
84
+ sysconfig.get_config_var = make_darwin_gcv(syscfg_macosx_ver)
85
+ if env_macosx_ver is not None:
86
+ env[darwin_ver_var] = env_macosx_ver
87
+ elif darwin_ver_var in env:
88
+ env.pop(darwin_ver_var)
89
+
90
+ # Run the test
91
+ if expected_flag is not None:
92
+ assert self.cc.rpath_foo() == expected_flag, msg
93
+ else:
94
+ with pytest.raises(
95
+ DistutilsPlatformError, match=darwin_ver_var + r' mismatch'
96
+ ):
97
+ self.cc.rpath_foo()
98
+
99
+ # Restore
100
+ if old_env_macosx_ver is not None:
101
+ env[darwin_ver_var] = old_env_macosx_ver
102
+ elif darwin_ver_var in env:
103
+ env.pop(darwin_ver_var)
104
+ sysconfig.get_config_var = old_gcv
105
+ _clear_cached_macosx_ver()
106
+
107
+ for macosx_vers, expected_flag in darwin_test_cases:
108
+ syscfg_macosx_ver, env_macosx_ver = macosx_vers
109
+ do_darwin_test(syscfg_macosx_ver, env_macosx_ver, expected_flag)
110
+ # Bonus test cases with None interpreted as empty string
111
+ if syscfg_macosx_ver is None:
112
+ do_darwin_test("", env_macosx_ver, expected_flag)
113
+ if env_macosx_ver is None:
114
+ do_darwin_test(syscfg_macosx_ver, "", expected_flag)
115
+ if syscfg_macosx_ver is None and env_macosx_ver is None:
116
+ do_darwin_test("", "", expected_flag)
117
+
118
+ old_gcv = sysconfig.get_config_var
119
+
120
+ # hp-ux
121
+ sys.platform = 'hp-ux'
122
+
123
+ def gcv(v):
124
+ return 'xxx'
125
+
126
+ sysconfig.get_config_var = gcv
127
+ assert self.cc.rpath_foo() == ['+s', '-L/foo']
128
+
129
+ def gcv(v):
130
+ return 'gcc'
131
+
132
+ sysconfig.get_config_var = gcv
133
+ assert self.cc.rpath_foo() == ['-Wl,+s', '-L/foo']
134
+
135
+ def gcv(v):
136
+ return 'g++'
137
+
138
+ sysconfig.get_config_var = gcv
139
+ assert self.cc.rpath_foo() == ['-Wl,+s', '-L/foo']
140
+
141
+ sysconfig.get_config_var = old_gcv
142
+
143
+ # GCC GNULD
144
+ sys.platform = 'bar'
145
+
146
+ def gcv(v):
147
+ if v == 'CC':
148
+ return 'gcc'
149
+ elif v == 'GNULD':
150
+ return 'yes'
151
+
152
+ sysconfig.get_config_var = gcv
153
+ assert self.cc.rpath_foo() == consolidate_linker_args([
154
+ '-Wl,--enable-new-dtags',
155
+ '-Wl,-rpath,/foo',
156
+ ])
157
+
158
+ def gcv(v):
159
+ if v == 'CC':
160
+ return 'gcc -pthread -B /bar'
161
+ elif v == 'GNULD':
162
+ return 'yes'
163
+
164
+ sysconfig.get_config_var = gcv
165
+ assert self.cc.rpath_foo() == consolidate_linker_args([
166
+ '-Wl,--enable-new-dtags',
167
+ '-Wl,-rpath,/foo',
168
+ ])
169
+
170
+ # GCC non-GNULD
171
+ sys.platform = 'bar'
172
+
173
+ def gcv(v):
174
+ if v == 'CC':
175
+ return 'gcc'
176
+ elif v == 'GNULD':
177
+ return 'no'
178
+
179
+ sysconfig.get_config_var = gcv
180
+ assert self.cc.rpath_foo() == '-Wl,-R/foo'
181
+
182
+ # GCC GNULD with fully qualified configuration prefix
183
+ # see #7617
184
+ sys.platform = 'bar'
185
+
186
+ def gcv(v):
187
+ if v == 'CC':
188
+ return 'x86_64-pc-linux-gnu-gcc-4.4.2'
189
+ elif v == 'GNULD':
190
+ return 'yes'
191
+
192
+ sysconfig.get_config_var = gcv
193
+ assert self.cc.rpath_foo() == consolidate_linker_args([
194
+ '-Wl,--enable-new-dtags',
195
+ '-Wl,-rpath,/foo',
196
+ ])
197
+
198
+ # non-GCC GNULD
199
+ sys.platform = 'bar'
200
+
201
+ def gcv(v):
202
+ if v == 'CC':
203
+ return 'cc'
204
+ elif v == 'GNULD':
205
+ return 'yes'
206
+
207
+ sysconfig.get_config_var = gcv
208
+ assert self.cc.rpath_foo() == consolidate_linker_args([
209
+ '-Wl,--enable-new-dtags',
210
+ '-Wl,-rpath,/foo',
211
+ ])
212
+
213
+ # non-GCC non-GNULD
214
+ sys.platform = 'bar'
215
+
216
+ def gcv(v):
217
+ if v == 'CC':
218
+ return 'cc'
219
+ elif v == 'GNULD':
220
+ return 'no'
221
+
222
+ sysconfig.get_config_var = gcv
223
+ assert self.cc.rpath_foo() == '-Wl,-R/foo'
224
+
225
+ @pytest.mark.skipif('platform.system == "Windows"')
226
+ def test_cc_overrides_ldshared(self):
227
+ # Issue #18080:
228
+ # ensure that setting CC env variable also changes default linker
229
+ def gcv(v):
230
+ if v == 'LDSHARED':
231
+ return 'gcc-4.2 -bundle -undefined dynamic_lookup '
232
+ return 'gcc-4.2'
233
+
234
+ def gcvs(*args, _orig=sysconfig.get_config_vars):
235
+ if args:
236
+ return list(map(sysconfig.get_config_var, args))
237
+ return _orig()
238
+
239
+ sysconfig.get_config_var = gcv
240
+ sysconfig.get_config_vars = gcvs
241
+ with EnvironmentVarGuard() as env:
242
+ env['CC'] = 'my_cc'
243
+ del env['LDSHARED']
244
+ sysconfig.customize_compiler(self.cc)
245
+ assert self.cc.linker_so[0] == 'my_cc'
246
+
247
+ @pytest.mark.skipif('platform.system == "Windows"')
248
+ def test_cxx_commands_used_are_correct(self):
249
+ def gcv(v):
250
+ if v == 'LDSHARED':
251
+ return 'ccache gcc-4.2 -bundle -undefined dynamic_lookup'
252
+ elif v == 'LDCXXSHARED':
253
+ return 'ccache g++-4.2 -bundle -undefined dynamic_lookup'
254
+ elif v == 'CXX':
255
+ return 'ccache g++-4.2'
256
+ elif v == 'CC':
257
+ return 'ccache gcc-4.2'
258
+ return ''
259
+
260
+ def gcvs(*args, _orig=sysconfig.get_config_vars):
261
+ if args:
262
+ return list(map(sysconfig.get_config_var, args))
263
+ return _orig() # pragma: no cover
264
+
265
+ sysconfig.get_config_var = gcv
266
+ sysconfig.get_config_vars = gcvs
267
+ with (
268
+ mock.patch.object(self.cc, 'spawn', return_value=None) as mock_spawn,
269
+ mock.patch.object(self.cc, '_need_link', return_value=True),
270
+ mock.patch.object(self.cc, 'mkpath', return_value=None),
271
+ EnvironmentVarGuard() as env,
272
+ ):
273
+ # override environment overrides in case they're specified by CI
274
+ del env['CXX']
275
+ del env['LDCXXSHARED']
276
+
277
+ sysconfig.customize_compiler(self.cc)
278
+ assert self.cc.linker_so_cxx[0:2] == ['ccache', 'g++-4.2']
279
+ assert self.cc.linker_exe_cxx[0:2] == ['ccache', 'g++-4.2']
280
+ self.cc.link(None, [], 'a.out', target_lang='c++')
281
+ call_args = mock_spawn.call_args[0][0]
282
+ expected = ['ccache', 'g++-4.2', '-bundle', '-undefined', 'dynamic_lookup']
283
+ assert call_args[:5] == expected
284
+
285
+ self.cc.link_executable([], 'a.out', target_lang='c++')
286
+ call_args = mock_spawn.call_args[0][0]
287
+ expected = ['ccache', 'g++-4.2', '-o', self.cc.executable_filename('a.out')]
288
+ assert call_args[:4] == expected
289
+
290
+ env['LDCXXSHARED'] = 'wrapper g++-4.2 -bundle -undefined dynamic_lookup'
291
+ env['CXX'] = 'wrapper g++-4.2'
292
+ sysconfig.customize_compiler(self.cc)
293
+ assert self.cc.linker_so_cxx[0:2] == ['wrapper', 'g++-4.2']
294
+ assert self.cc.linker_exe_cxx[0:2] == ['wrapper', 'g++-4.2']
295
+ self.cc.link(None, [], 'a.out', target_lang='c++')
296
+ call_args = mock_spawn.call_args[0][0]
297
+ expected = ['wrapper', 'g++-4.2', '-bundle', '-undefined', 'dynamic_lookup']
298
+ assert call_args[:5] == expected
299
+
300
+ self.cc.link_executable([], 'a.out', target_lang='c++')
301
+ call_args = mock_spawn.call_args[0][0]
302
+ expected = [
303
+ 'wrapper',
304
+ 'g++-4.2',
305
+ '-o',
306
+ self.cc.executable_filename('a.out'),
307
+ ]
308
+ assert call_args[:4] == expected
309
+
310
+ @pytest.mark.skipif('platform.system == "Windows"')
311
+ @pytest.mark.usefixtures('disable_macos_customization')
312
+ def test_cc_overrides_ldshared_for_cxx_correctly(self):
313
+ """
314
+ Ensure that setting CC env variable also changes default linker
315
+ correctly when building C++ extensions.
316
+
317
+ pypa/distutils#126
318
+ """
319
+
320
+ def gcv(v):
321
+ if v == 'LDSHARED':
322
+ return 'gcc-4.2 -bundle -undefined dynamic_lookup '
323
+ elif v == 'LDCXXSHARED':
324
+ return 'g++-4.2 -bundle -undefined dynamic_lookup '
325
+ elif v == 'CXX':
326
+ return 'g++-4.2'
327
+ elif v == 'CC':
328
+ return 'gcc-4.2'
329
+ return ''
330
+
331
+ def gcvs(*args, _orig=sysconfig.get_config_vars):
332
+ if args:
333
+ return list(map(sysconfig.get_config_var, args))
334
+ return _orig()
335
+
336
+ sysconfig.get_config_var = gcv
337
+ sysconfig.get_config_vars = gcvs
338
+ with (
339
+ mock.patch.object(self.cc, 'spawn', return_value=None) as mock_spawn,
340
+ mock.patch.object(self.cc, '_need_link', return_value=True),
341
+ mock.patch.object(self.cc, 'mkpath', return_value=None),
342
+ EnvironmentVarGuard() as env,
343
+ ):
344
+ env['CC'] = 'ccache my_cc'
345
+ env['CXX'] = 'my_cxx'
346
+ del env['LDSHARED']
347
+ sysconfig.customize_compiler(self.cc)
348
+ assert self.cc.linker_so[0:2] == ['ccache', 'my_cc']
349
+ self.cc.link(None, [], 'a.out', target_lang='c++')
350
+ call_args = mock_spawn.call_args[0][0]
351
+ expected = ['my_cxx', '-bundle', '-undefined', 'dynamic_lookup']
352
+ assert call_args[:4] == expected
353
+
354
+ @pytest.mark.skipif('platform.system == "Windows"')
355
+ def test_explicit_ldshared(self):
356
+ # Issue #18080:
357
+ # ensure that setting CC env variable does not change
358
+ # explicit LDSHARED setting for linker
359
+ def gcv(v):
360
+ if v == 'LDSHARED':
361
+ return 'gcc-4.2 -bundle -undefined dynamic_lookup '
362
+ return 'gcc-4.2'
363
+
364
+ def gcvs(*args, _orig=sysconfig.get_config_vars):
365
+ if args:
366
+ return list(map(sysconfig.get_config_var, args))
367
+ return _orig()
368
+
369
+ sysconfig.get_config_var = gcv
370
+ sysconfig.get_config_vars = gcvs
371
+ with EnvironmentVarGuard() as env:
372
+ env['CC'] = 'my_cc'
373
+ env['LDSHARED'] = 'my_ld -bundle -dynamic'
374
+ sysconfig.customize_compiler(self.cc)
375
+ assert self.cc.linker_so[0] == 'my_ld'
376
+
377
+ def test_has_function(self):
378
+ # Issue https://github.com/pypa/distutils/issues/64:
379
+ # ensure that setting output_dir does not raise
380
+ # FileNotFoundError: [Errno 2] No such file or directory: 'a.out'
381
+ self.cc.output_dir = 'scratch'
382
+ os.chdir(self.mkdtemp())
383
+ self.cc.has_function('abort')
384
+
385
+ def test_find_library_file(self, monkeypatch):
386
+ compiler = unix.Compiler()
387
+ compiler._library_root = lambda dir: dir
388
+ monkeypatch.setattr(os.path, 'exists', lambda d: 'existing' in d)
389
+
390
+ libname = 'libabc.dylib' if sys.platform != 'cygwin' else 'cygabc.dll'
391
+ dirs = ('/foo/bar/missing', '/foo/bar/existing')
392
+ assert (
393
+ compiler.find_library_file(dirs, 'abc').replace('\\', '/')
394
+ == f'/foo/bar/existing/{libname}'
395
+ )
396
+ assert (
397
+ compiler.find_library_file(reversed(dirs), 'abc').replace('\\', '/')
398
+ == f'/foo/bar/existing/{libname}'
399
+ )
400
+
401
+ monkeypatch.setattr(
402
+ os.path,
403
+ 'exists',
404
+ lambda d: 'existing' in d and '.a' in d and '.dll.a' not in d,
405
+ )
406
+ assert (
407
+ compiler.find_library_file(dirs, 'abc').replace('\\', '/')
408
+ == '/foo/bar/existing/libabc.a'
409
+ )
410
+ assert (
411
+ compiler.find_library_file(reversed(dirs), 'abc').replace('\\', '/')
412
+ == '/foo/bar/existing/libabc.a'
413
+ )