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,87 @@
1
+ """
2
+ Re-implementation of find_module and get_frozen_object
3
+ from the deprecated imp module.
4
+ """
5
+
6
+ import importlib.machinery
7
+ import importlib.util
8
+ import os
9
+ import tokenize
10
+ from importlib.util import module_from_spec
11
+
12
+ PY_SOURCE = 1
13
+ PY_COMPILED = 2
14
+ C_EXTENSION = 3
15
+ C_BUILTIN = 6
16
+ PY_FROZEN = 7
17
+
18
+
19
+ def find_spec(module, paths):
20
+ finder = (
21
+ importlib.machinery.PathFinder().find_spec
22
+ if isinstance(paths, list)
23
+ else importlib.util.find_spec
24
+ )
25
+ return finder(module, paths)
26
+
27
+
28
+ def find_module(module, paths=None):
29
+ """Just like 'imp.find_module()', but with package support"""
30
+ spec = find_spec(module, paths)
31
+ if spec is None:
32
+ raise ImportError(f"Can't find {module}")
33
+ if not spec.has_location and hasattr(spec, 'submodule_search_locations'):
34
+ spec = importlib.util.spec_from_loader('__init__.py', spec.loader)
35
+
36
+ kind = -1
37
+ file = None
38
+ static = isinstance(spec.loader, type)
39
+ if (
40
+ spec.origin == 'frozen'
41
+ or static
42
+ and issubclass(spec.loader, importlib.machinery.FrozenImporter)
43
+ ):
44
+ kind = PY_FROZEN
45
+ path = None # imp compabilty
46
+ suffix = mode = '' # imp compatibility
47
+ elif (
48
+ spec.origin == 'built-in'
49
+ or static
50
+ and issubclass(spec.loader, importlib.machinery.BuiltinImporter)
51
+ ):
52
+ kind = C_BUILTIN
53
+ path = None # imp compabilty
54
+ suffix = mode = '' # imp compatibility
55
+ elif spec.has_location:
56
+ path = spec.origin
57
+ suffix = os.path.splitext(path)[1]
58
+ mode = 'r' if suffix in importlib.machinery.SOURCE_SUFFIXES else 'rb'
59
+
60
+ if suffix in importlib.machinery.SOURCE_SUFFIXES:
61
+ kind = PY_SOURCE
62
+ file = tokenize.open(path)
63
+ elif suffix in importlib.machinery.BYTECODE_SUFFIXES:
64
+ kind = PY_COMPILED
65
+ file = open(path, 'rb')
66
+ elif suffix in importlib.machinery.EXTENSION_SUFFIXES:
67
+ kind = C_EXTENSION
68
+
69
+ else:
70
+ path = None
71
+ suffix = mode = ''
72
+
73
+ return file, path, (suffix, mode, kind)
74
+
75
+
76
+ def get_frozen_object(module, paths=None):
77
+ spec = find_spec(module, paths)
78
+ if not spec:
79
+ raise ImportError(f"Can't find {module}")
80
+ return spec.loader.get_code(module)
81
+
82
+
83
+ def get_module(module, paths, info):
84
+ spec = find_spec(module, paths)
85
+ if not spec:
86
+ raise ImportError(f"Can't find {module}")
87
+ return module_from_spec(spec)
@@ -0,0 +1,9 @@
1
+ import sys
2
+
3
+ if sys.version_info < (3, 10):
4
+ import importlib_metadata as metadata # pragma: no cover
5
+ else:
6
+ import importlib.metadata as metadata # noqa: F401
7
+
8
+
9
+ import importlib.resources as resources # noqa: F401
@@ -0,0 +1,23 @@
1
+ from more_itertools import consume # noqa: F401
2
+
3
+
4
+ # copied from jaraco.itertools 6.1
5
+ def ensure_unique(iterable, key=lambda x: x):
6
+ """
7
+ Wrap an iterable to raise a ValueError if non-unique values are encountered.
8
+
9
+ >>> list(ensure_unique('abc'))
10
+ ['a', 'b', 'c']
11
+ >>> consume(ensure_unique('abca'))
12
+ Traceback (most recent call last):
13
+ ...
14
+ ValueError: Duplicate element 'a' encountered.
15
+ """
16
+ seen = set()
17
+ seen_add = seen.add
18
+ for element in iterable:
19
+ k = key(element)
20
+ if k in seen:
21
+ raise ValueError(f"Duplicate element {element!r} encountered.")
22
+ seen_add(k)
23
+ yield element
@@ -0,0 +1,177 @@
1
+ """
2
+ Helpers for normalization as expected in wheel/sdist/module file names
3
+ and core metadata
4
+ """
5
+
6
+ import re
7
+ from typing import TYPE_CHECKING
8
+
9
+ import packaging
10
+
11
+ # https://packaging.python.org/en/latest/specifications/core-metadata/#name
12
+ _VALID_NAME = re.compile(r"^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$", re.I)
13
+ _UNSAFE_NAME_CHARS = re.compile(r"[^A-Z0-9._-]+", re.I)
14
+ _NON_ALPHANUMERIC = re.compile(r"[^A-Z0-9]+", re.I)
15
+ _PEP440_FALLBACK = re.compile(r"^v?(?P<safe>(?:[0-9]+!)?[0-9]+(?:\.[0-9]+)*)", re.I)
16
+
17
+
18
+ def safe_identifier(name: str) -> str:
19
+ """Make a string safe to be used as Python identifier.
20
+ >>> safe_identifier("12abc")
21
+ '_12abc'
22
+ >>> safe_identifier("__editable__.myns.pkg-78.9.3_local")
23
+ '__editable___myns_pkg_78_9_3_local'
24
+ """
25
+ safe = re.sub(r'\W|^(?=\d)', '_', name)
26
+ assert safe.isidentifier()
27
+ return safe
28
+
29
+
30
+ def safe_name(component: str) -> str:
31
+ """Escape a component used as a project name according to Core Metadata.
32
+ >>> safe_name("hello world")
33
+ 'hello-world'
34
+ >>> safe_name("hello?world")
35
+ 'hello-world'
36
+ >>> safe_name("hello_world")
37
+ 'hello_world'
38
+ """
39
+ return _UNSAFE_NAME_CHARS.sub("-", component)
40
+
41
+
42
+ def safe_version(version: str) -> str:
43
+ """Convert an arbitrary string into a valid version string.
44
+ Can still raise an ``InvalidVersion`` exception.
45
+ To avoid exceptions use ``best_effort_version``.
46
+ >>> safe_version("1988 12 25")
47
+ '1988.12.25'
48
+ >>> safe_version("v0.2.1")
49
+ '0.2.1'
50
+ >>> safe_version("v0.2?beta")
51
+ '0.2b0'
52
+ >>> safe_version("v0.2 beta")
53
+ '0.2b0'
54
+ >>> safe_version("ubuntu lts")
55
+ Traceback (most recent call last):
56
+ ...
57
+ packaging.version.InvalidVersion: Invalid version: 'ubuntu.lts'
58
+ """
59
+ v = version.replace(' ', '.')
60
+ try:
61
+ return str(packaging.version.Version(v))
62
+ except packaging.version.InvalidVersion:
63
+ attempt = _UNSAFE_NAME_CHARS.sub("-", v)
64
+ return str(packaging.version.Version(attempt))
65
+
66
+
67
+ def best_effort_version(version: str) -> str:
68
+ """Convert an arbitrary string into a version-like string.
69
+ Fallback when ``safe_version`` is not safe enough.
70
+ >>> best_effort_version("v0.2 beta")
71
+ '0.2b0'
72
+ >>> best_effort_version("ubuntu lts")
73
+ '0.dev0+sanitized.ubuntu.lts'
74
+ >>> best_effort_version("0.23ubuntu1")
75
+ '0.23.dev0+sanitized.ubuntu1'
76
+ >>> best_effort_version("0.23-")
77
+ '0.23.dev0+sanitized'
78
+ >>> best_effort_version("0.-_")
79
+ '0.dev0+sanitized'
80
+ >>> best_effort_version("42.+?1")
81
+ '42.dev0+sanitized.1'
82
+ """
83
+ try:
84
+ return safe_version(version)
85
+ except packaging.version.InvalidVersion:
86
+ v = version.replace(' ', '.')
87
+ match = _PEP440_FALLBACK.search(v)
88
+ if match:
89
+ safe = match["safe"]
90
+ rest = v[len(safe) :]
91
+ else:
92
+ safe = "0"
93
+ rest = version
94
+ safe_rest = _NON_ALPHANUMERIC.sub(".", rest).strip(".")
95
+ local = f"sanitized.{safe_rest}".strip(".")
96
+ return safe_version(f"{safe}.dev0+{local}")
97
+
98
+
99
+ def safe_extra(extra: str) -> str:
100
+ """Normalize extra name according to PEP 685
101
+ >>> safe_extra("_FrIeNdLy-._.-bArD")
102
+ 'friendly-bard'
103
+ >>> safe_extra("FrIeNdLy-._.-bArD__._-")
104
+ 'friendly-bard'
105
+ """
106
+ return _NON_ALPHANUMERIC.sub("-", extra).strip("-").lower()
107
+
108
+
109
+ def filename_component(value: str) -> str:
110
+ """Normalize each component of a filename (e.g. distribution/version part of wheel)
111
+ Note: ``value`` needs to be already normalized.
112
+ >>> filename_component("my-pkg")
113
+ 'my_pkg'
114
+ """
115
+ return value.replace("-", "_").strip("_")
116
+
117
+
118
+ def filename_component_broken(value: str) -> str:
119
+ """
120
+ Produce the incorrect filename component for compatibility.
121
+
122
+ See pypa/setuptools#4167 for detailed analysis.
123
+
124
+ TODO: replace this with filename_component after pip 24 is
125
+ nearly-ubiquitous.
126
+
127
+ >>> filename_component_broken('foo_bar-baz')
128
+ 'foo-bar-baz'
129
+ """
130
+ return value.replace('_', '-')
131
+
132
+
133
+ def safer_name(value: str) -> str:
134
+ """Like ``safe_name`` but can be used as filename component for wheel"""
135
+ # See bdist_wheel.safer_name
136
+ return (
137
+ # Per https://packaging.python.org/en/latest/specifications/name-normalization/#name-normalization
138
+ re.sub(r"[-_.]+", "-", safe_name(value))
139
+ .lower()
140
+ # Per https://packaging.python.org/en/latest/specifications/binary-distribution-format/#escaping-and-unicode
141
+ .replace("-", "_")
142
+ )
143
+
144
+
145
+ def safer_best_effort_version(value: str) -> str:
146
+ """Like ``best_effort_version`` but can be used as filename component for wheel"""
147
+ # See bdist_wheel.safer_verion
148
+ # TODO: Replace with only safe_version in the future (no need for best effort)
149
+ return filename_component(best_effort_version(value))
150
+
151
+
152
+ def _missing_canonicalize_license_expression(expression: str) -> str:
153
+ """
154
+ Defer import error to affect only users that actually use it
155
+ https://github.com/pypa/setuptools/issues/4894
156
+ >>> _missing_canonicalize_license_expression("a OR b")
157
+ Traceback (most recent call last):
158
+ ...
159
+ ImportError: ...Cannot import `packaging.licenses`...
160
+ """
161
+ raise ImportError(
162
+ "Cannot import `packaging.licenses`."
163
+ """
164
+ Setuptools>=77.0.0 requires "packaging>=24.2" to work properly.
165
+ Please make sure you have a suitable version installed.
166
+ """
167
+ )
168
+
169
+
170
+ try:
171
+ from packaging.licenses import (
172
+ canonicalize_license_expression as _canonicalize_license_expression,
173
+ )
174
+ except ImportError: # pragma: nocover
175
+ if not TYPE_CHECKING:
176
+ # XXX: pyright is still upset even with # pyright: ignore[reportAssignmentType]
177
+ _canonicalize_license_expression = _missing_canonicalize_license_expression
@@ -0,0 +1,93 @@
1
+ from __future__ import annotations
2
+
3
+ import contextlib
4
+ import os
5
+ import sys
6
+ from typing import TYPE_CHECKING, TypeVar, Union
7
+
8
+ from more_itertools import unique_everseen
9
+
10
+ if TYPE_CHECKING:
11
+ from typing_extensions import TypeAlias
12
+
13
+ StrPath: TypeAlias = Union[str, os.PathLike[str]] # Same as _typeshed.StrPath
14
+ StrPathT = TypeVar("StrPathT", bound=Union[str, os.PathLike[str]])
15
+
16
+
17
+ def ensure_directory(path):
18
+ """Ensure that the parent directory of `path` exists"""
19
+ dirname = os.path.dirname(path)
20
+ os.makedirs(dirname, exist_ok=True)
21
+
22
+
23
+ def same_path(p1: StrPath, p2: StrPath) -> bool:
24
+ """Differs from os.path.samefile because it does not require paths to exist.
25
+ Purely string based (no comparison between i-nodes).
26
+ >>> same_path("a/b", "./a/b")
27
+ True
28
+ >>> same_path("a/b", "a/./b")
29
+ True
30
+ >>> same_path("a/b", "././a/b")
31
+ True
32
+ >>> same_path("a/b", "./a/b/c/..")
33
+ True
34
+ >>> same_path("a/b", "../a/b/c")
35
+ False
36
+ >>> same_path("a", "a/b")
37
+ False
38
+ """
39
+ return normpath(p1) == normpath(p2)
40
+
41
+
42
+ def _cygwin_patch(filename: StrPath): # pragma: nocover
43
+ """
44
+ Contrary to POSIX 2008, on Cygwin, getcwd (3) contains
45
+ symlink components. Using
46
+ os.path.abspath() works around this limitation. A fix in os.getcwd()
47
+ would probably better, in Cygwin even more so, except
48
+ that this seems to be by design...
49
+ """
50
+ return os.path.abspath(filename) if sys.platform == 'cygwin' else filename
51
+
52
+
53
+ def normpath(filename: StrPath) -> str:
54
+ """Normalize a file/dir name for comparison purposes."""
55
+ return os.path.normcase(os.path.realpath(os.path.normpath(_cygwin_patch(filename))))
56
+
57
+
58
+ @contextlib.contextmanager
59
+ def paths_on_pythonpath(paths):
60
+ """
61
+ Add the indicated paths to the head of the PYTHONPATH environment
62
+ variable so that subprocesses will also see the packages at
63
+ these paths.
64
+
65
+ Do this in a context that restores the value on exit.
66
+
67
+ >>> getfixture('monkeypatch').setenv('PYTHONPATH', 'anything')
68
+ >>> with paths_on_pythonpath(['foo', 'bar']):
69
+ ... assert 'foo' in os.environ['PYTHONPATH']
70
+ ... assert 'anything' in os.environ['PYTHONPATH']
71
+ >>> os.environ['PYTHONPATH']
72
+ 'anything'
73
+
74
+ >>> getfixture('monkeypatch').delenv('PYTHONPATH')
75
+ >>> with paths_on_pythonpath(['foo', 'bar']):
76
+ ... assert 'foo' in os.environ['PYTHONPATH']
77
+ >>> os.environ.get('PYTHONPATH')
78
+ """
79
+ nothing = object()
80
+ orig_pythonpath = os.environ.get('PYTHONPATH', nothing)
81
+ current_pythonpath = os.environ.get('PYTHONPATH', '')
82
+ try:
83
+ prefix = os.pathsep.join(unique_everseen(paths))
84
+ to_join = filter(None, [prefix, current_pythonpath])
85
+ new_path = os.pathsep.join(to_join)
86
+ if new_path:
87
+ os.environ['PYTHONPATH'] = new_path
88
+ yield
89
+ finally:
90
+ if orig_pythonpath is nothing:
91
+ os.environ.pop('PYTHONPATH', None)
92
+ else:
93
+ os.environ['PYTHONPATH'] = orig_pythonpath
@@ -0,0 +1,42 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Iterable, Iterator
4
+ from functools import lru_cache
5
+ from typing import TYPE_CHECKING, Callable, TypeVar, Union, overload
6
+
7
+ import jaraco.text as text
8
+ from packaging.requirements import Requirement
9
+
10
+ if TYPE_CHECKING:
11
+ from typing_extensions import TypeAlias
12
+
13
+ _T = TypeVar("_T")
14
+ _StrOrIter: TypeAlias = Union[str, Iterable[str]]
15
+
16
+
17
+ parse_req: Callable[[str], Requirement] = lru_cache()(Requirement)
18
+ # Setuptools parses the same requirement many times
19
+ # (e.g. first for validation than for normalisation),
20
+ # so it might be worth to cache.
21
+
22
+
23
+ def parse_strings(strs: _StrOrIter) -> Iterator[str]:
24
+ """
25
+ Yield requirement strings for each specification in `strs`.
26
+
27
+ `strs` must be a string, or a (possibly-nested) iterable thereof.
28
+ """
29
+ return text.join_continuation(map(text.drop_comment, text.yield_lines(strs)))
30
+
31
+
32
+ # These overloads are only needed because of a mypy false-positive, pyright gets it right
33
+ # https://github.com/python/mypy/issues/3737
34
+ @overload
35
+ def parse(strs: _StrOrIter) -> Iterator[Requirement]: ...
36
+ @overload
37
+ def parse(strs: _StrOrIter, parser: Callable[[str], _T]) -> Iterator[_T]: ...
38
+ def parse(strs: _StrOrIter, parser: Callable[[str], _T] = parse_req) -> Iterator[_T]: # type: ignore[assignment]
39
+ """
40
+ Parse requirements.
41
+ """
42
+ return map(parser, parse_strings(strs))