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.
- android_notify/config.py +1 -1
- {android_notify-1.60.0.dist-info → android_notify-1.60.2.dist-info}/METADATA +4 -4
- {android_notify-1.60.0.dist-info → android_notify-1.60.2.dist-info}/RECORD +375 -6
- venv/Lib/site-packages/_distutils_hack/__init__.py +239 -0
- venv/Lib/site-packages/_distutils_hack/override.py +1 -0
- venv/Lib/site-packages/pkg_resources/__init__.py +3713 -0
- venv/Lib/site-packages/pkg_resources/py.typed +0 -0
- venv/Lib/site-packages/pkg_resources/tests/__init__.py +0 -0
- venv/Lib/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py +7 -0
- venv/Lib/site-packages/pkg_resources/tests/test_find_distributions.py +56 -0
- venv/Lib/site-packages/pkg_resources/tests/test_integration_zope_interface.py +54 -0
- venv/Lib/site-packages/pkg_resources/tests/test_markers.py +8 -0
- venv/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +485 -0
- venv/Lib/site-packages/pkg_resources/tests/test_resources.py +869 -0
- venv/Lib/site-packages/pkg_resources/tests/test_working_set.py +505 -0
- venv/Lib/site-packages/setuptools/__init__.py +248 -0
- venv/Lib/site-packages/setuptools/_core_metadata.py +337 -0
- venv/Lib/site-packages/setuptools/_discovery.py +33 -0
- venv/Lib/site-packages/setuptools/_distutils/__init__.py +14 -0
- venv/Lib/site-packages/setuptools/_distutils/_log.py +3 -0
- venv/Lib/site-packages/setuptools/_distutils/_macos_compat.py +12 -0
- venv/Lib/site-packages/setuptools/_distutils/_modified.py +95 -0
- venv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +16 -0
- venv/Lib/site-packages/setuptools/_distutils/archive_util.py +294 -0
- venv/Lib/site-packages/setuptools/_distutils/ccompiler.py +26 -0
- venv/Lib/site-packages/setuptools/_distutils/cmd.py +554 -0
- venv/Lib/site-packages/setuptools/_distutils/command/__init__.py +23 -0
- venv/Lib/site-packages/setuptools/_distutils/command/_framework_compat.py +54 -0
- venv/Lib/site-packages/setuptools/_distutils/command/bdist.py +167 -0
- venv/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py +141 -0
- venv/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py +598 -0
- venv/Lib/site-packages/setuptools/_distutils/command/build.py +156 -0
- venv/Lib/site-packages/setuptools/_distutils/command/build_clib.py +201 -0
- venv/Lib/site-packages/setuptools/_distutils/command/build_ext.py +812 -0
- venv/Lib/site-packages/setuptools/_distutils/command/build_py.py +407 -0
- venv/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +160 -0
- venv/Lib/site-packages/setuptools/_distutils/command/check.py +152 -0
- venv/Lib/site-packages/setuptools/_distutils/command/clean.py +77 -0
- venv/Lib/site-packages/setuptools/_distutils/command/config.py +358 -0
- venv/Lib/site-packages/setuptools/_distutils/command/install.py +805 -0
- venv/Lib/site-packages/setuptools/_distutils/command/install_data.py +94 -0
- venv/Lib/site-packages/setuptools/_distutils/command/install_egg_info.py +91 -0
- venv/Lib/site-packages/setuptools/_distutils/command/install_headers.py +46 -0
- venv/Lib/site-packages/setuptools/_distutils/command/install_lib.py +238 -0
- venv/Lib/site-packages/setuptools/_distutils/command/install_scripts.py +62 -0
- venv/Lib/site-packages/setuptools/_distutils/command/sdist.py +521 -0
- venv/Lib/site-packages/setuptools/_distutils/compat/__init__.py +18 -0
- venv/Lib/site-packages/setuptools/_distutils/compat/numpy.py +2 -0
- venv/Lib/site-packages/setuptools/_distutils/compat/py39.py +66 -0
- venv/Lib/site-packages/setuptools/_distutils/compilers/C/base.py +1394 -0
- venv/Lib/site-packages/setuptools/_distutils/compilers/C/cygwin.py +340 -0
- venv/Lib/site-packages/setuptools/_distutils/compilers/C/errors.py +24 -0
- venv/Lib/site-packages/setuptools/_distutils/compilers/C/msvc.py +614 -0
- venv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_base.py +83 -0
- venv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_cygwin.py +76 -0
- venv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_mingw.py +48 -0
- venv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_msvc.py +136 -0
- venv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_unix.py +413 -0
- venv/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +422 -0
- venv/Lib/site-packages/setuptools/_distutils/compilers/C/zos.py +230 -0
- venv/Lib/site-packages/setuptools/_distutils/core.py +289 -0
- venv/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py +31 -0
- venv/Lib/site-packages/setuptools/_distutils/debug.py +5 -0
- venv/Lib/site-packages/setuptools/_distutils/dep_util.py +14 -0
- venv/Lib/site-packages/setuptools/_distutils/dir_util.py +244 -0
- venv/Lib/site-packages/setuptools/_distutils/dist.py +1386 -0
- venv/Lib/site-packages/setuptools/_distutils/errors.py +108 -0
- venv/Lib/site-packages/setuptools/_distutils/extension.py +258 -0
- venv/Lib/site-packages/setuptools/_distutils/fancy_getopt.py +471 -0
- venv/Lib/site-packages/setuptools/_distutils/file_util.py +236 -0
- venv/Lib/site-packages/setuptools/_distutils/filelist.py +431 -0
- venv/Lib/site-packages/setuptools/_distutils/log.py +56 -0
- venv/Lib/site-packages/setuptools/_distutils/spawn.py +134 -0
- venv/Lib/site-packages/setuptools/_distutils/sysconfig.py +598 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/__init__.py +42 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/compat/__init__.py +0 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/compat/py39.py +40 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/support.py +134 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_archive_util.py +353 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_bdist.py +47 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_bdist_dumb.py +78 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_bdist_rpm.py +127 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_build.py +49 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_build_clib.py +134 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +628 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_build_py.py +196 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_build_scripts.py +96 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_check.py +194 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_clean.py +45 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_cmd.py +107 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_config_cmd.py +87 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_core.py +130 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +139 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_dist.py +552 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_extension.py +117 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_file_util.py +95 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_filelist.py +336 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_install.py +245 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_install_data.py +74 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_install_headers.py +33 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_install_lib.py +110 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_install_scripts.py +52 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_log.py +12 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_modified.py +126 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_sdist.py +470 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_spawn.py +141 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_sysconfig.py +319 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_text_file.py +127 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_util.py +243 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_version.py +80 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/test_versionpredicate.py +0 -0
- venv/Lib/site-packages/setuptools/_distutils/tests/unix_compat.py +17 -0
- venv/Lib/site-packages/setuptools/_distutils/text_file.py +286 -0
- venv/Lib/site-packages/setuptools/_distutils/unixccompiler.py +9 -0
- venv/Lib/site-packages/setuptools/_distutils/util.py +518 -0
- venv/Lib/site-packages/setuptools/_distutils/version.py +348 -0
- venv/Lib/site-packages/setuptools/_distutils/versionpredicate.py +175 -0
- venv/Lib/site-packages/setuptools/_distutils/zosccompiler.py +3 -0
- venv/Lib/site-packages/setuptools/_entry_points.py +94 -0
- venv/Lib/site-packages/setuptools/_imp.py +87 -0
- venv/Lib/site-packages/setuptools/_importlib.py +9 -0
- venv/Lib/site-packages/setuptools/_itertools.py +23 -0
- venv/Lib/site-packages/setuptools/_normalization.py +177 -0
- venv/Lib/site-packages/setuptools/_path.py +93 -0
- venv/Lib/site-packages/setuptools/_reqs.py +42 -0
- venv/Lib/site-packages/setuptools/_scripts.py +361 -0
- venv/Lib/site-packages/setuptools/_shutil.py +59 -0
- venv/Lib/site-packages/setuptools/_static.py +188 -0
- venv/Lib/site-packages/setuptools/_vendor/autocommand/__init__.py +27 -0
- venv/Lib/site-packages/setuptools/_vendor/autocommand/autoasync.py +142 -0
- venv/Lib/site-packages/setuptools/_vendor/autocommand/autocommand.py +70 -0
- venv/Lib/site-packages/setuptools/_vendor/autocommand/automain.py +59 -0
- venv/Lib/site-packages/setuptools/_vendor/autocommand/autoparse.py +333 -0
- venv/Lib/site-packages/setuptools/_vendor/autocommand/errors.py +23 -0
- venv/Lib/site-packages/setuptools/_vendor/backports/__init__.py +1 -0
- venv/Lib/site-packages/setuptools/_vendor/backports/tarfile/__init__.py +2937 -0
- venv/Lib/site-packages/setuptools/_vendor/backports/tarfile/__main__.py +5 -0
- venv/Lib/site-packages/setuptools/_vendor/backports/tarfile/compat/__init__.py +0 -0
- venv/Lib/site-packages/setuptools/_vendor/backports/tarfile/compat/py38.py +24 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/__init__.py +1083 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_adapters.py +83 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_collections.py +30 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_compat.py +57 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_functools.py +104 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_itertools.py +73 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_meta.py +67 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/_text.py +99 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat/__init__.py +0 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat/py311.py +22 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat/py39.py +36 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/diagnose.py +21 -0
- venv/Lib/site-packages/setuptools/_vendor/importlib_metadata/py.typed +0 -0
- venv/Lib/site-packages/setuptools/_vendor/inflect/__init__.py +3986 -0
- venv/Lib/site-packages/setuptools/_vendor/inflect/compat/__init__.py +0 -0
- venv/Lib/site-packages/setuptools/_vendor/inflect/compat/py38.py +7 -0
- venv/Lib/site-packages/setuptools/_vendor/inflect/py.typed +0 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/collections/__init__.py +1091 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/collections/py.typed +0 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/context.py +361 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.py +633 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi +125 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/functools/py.typed +0 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/text/__init__.py +624 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/text/layouts.py +25 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/text/show-newlines.py +33 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/text/strip-prefix.py +21 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/text/to-dvorak.py +6 -0
- venv/Lib/site-packages/setuptools/_vendor/jaraco/text/to-qwerty.py +6 -0
- venv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py +6 -0
- venv/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.pyi +2 -0
- venv/Lib/site-packages/setuptools/_vendor/more_itertools/more.py +4806 -0
- venv/Lib/site-packages/setuptools/_vendor/more_itertools/more.pyi +709 -0
- venv/Lib/site-packages/setuptools/_vendor/more_itertools/py.typed +0 -0
- venv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py +1046 -0
- venv/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.pyi +136 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +15 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +110 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +263 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/_musllinux.py +85 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/_parser.py +354 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/_structures.py +61 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/_tokenizer.py +194 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/licenses/__init__.py +145 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/licenses/_spdx.py +759 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/markers.py +331 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +863 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/py.typed +0 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/requirements.py +91 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +1020 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/tags.py +617 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/utils.py +163 -0
- venv/Lib/site-packages/setuptools/_vendor/packaging/version.py +582 -0
- venv/Lib/site-packages/setuptools/_vendor/platformdirs/__init__.py +627 -0
- venv/Lib/site-packages/setuptools/_vendor/platformdirs/__main__.py +55 -0
- venv/Lib/site-packages/setuptools/_vendor/platformdirs/android.py +249 -0
- venv/Lib/site-packages/setuptools/_vendor/platformdirs/api.py +292 -0
- venv/Lib/site-packages/setuptools/_vendor/platformdirs/macos.py +130 -0
- venv/Lib/site-packages/setuptools/_vendor/platformdirs/py.typed +0 -0
- venv/Lib/site-packages/setuptools/_vendor/platformdirs/unix.py +275 -0
- venv/Lib/site-packages/setuptools/_vendor/platformdirs/version.py +16 -0
- venv/Lib/site-packages/setuptools/_vendor/platformdirs/windows.py +272 -0
- venv/Lib/site-packages/setuptools/_vendor/tomli/__init__.py +11 -0
- venv/Lib/site-packages/setuptools/_vendor/tomli/_parser.py +691 -0
- venv/Lib/site-packages/setuptools/_vendor/tomli/_re.py +107 -0
- venv/Lib/site-packages/setuptools/_vendor/tomli/_types.py +10 -0
- venv/Lib/site-packages/setuptools/_vendor/tomli/py.typed +1 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/__init__.py +48 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/_checkers.py +993 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/_config.py +108 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/_decorators.py +235 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/_exceptions.py +42 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/_functions.py +308 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/_importhook.py +213 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/_memo.py +48 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/_pytest_plugin.py +127 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/_suppression.py +86 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/_transformer.py +1229 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/_union_transformer.py +55 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/_utils.py +173 -0
- venv/Lib/site-packages/setuptools/_vendor/typeguard/py.typed +0 -0
- venv/Lib/site-packages/setuptools/_vendor/typing_extensions.py +3641 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/__init__.py +3 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/__main__.py +23 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/_bdist_wheel.py +613 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py +26 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/bdist_wheel.py +26 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/cli/__init__.py +155 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/cli/convert.py +332 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/cli/pack.py +85 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/cli/tags.py +139 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/cli/unpack.py +30 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/macosx_libfile.py +482 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/metadata.py +183 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/util.py +17 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/__init__.py +0 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/__init__.py +0 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_elffile.py +108 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_manylinux.py +260 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_musllinux.py +83 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_parser.py +356 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_structures.py +61 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_tokenizer.py +192 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/markers.py +253 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/requirements.py +90 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/specifiers.py +1011 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/tags.py +571 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/utils.py +172 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/version.py +561 -0
- venv/Lib/site-packages/setuptools/_vendor/wheel/wheelfile.py +227 -0
- venv/Lib/site-packages/setuptools/_vendor/zipp/__init__.py +501 -0
- venv/Lib/site-packages/setuptools/_vendor/zipp/compat/__init__.py +0 -0
- venv/Lib/site-packages/setuptools/_vendor/zipp/compat/py310.py +11 -0
- venv/Lib/site-packages/setuptools/_vendor/zipp/glob.py +106 -0
- venv/Lib/site-packages/setuptools/archive_util.py +219 -0
- venv/Lib/site-packages/setuptools/build_meta.py +548 -0
- venv/Lib/site-packages/setuptools/command/__init__.py +21 -0
- venv/Lib/site-packages/setuptools/command/_requirestxt.py +131 -0
- venv/Lib/site-packages/setuptools/command/alias.py +77 -0
- venv/Lib/site-packages/setuptools/command/bdist_egg.py +477 -0
- venv/Lib/site-packages/setuptools/command/bdist_rpm.py +42 -0
- venv/Lib/site-packages/setuptools/command/bdist_wheel.py +604 -0
- venv/Lib/site-packages/setuptools/command/build.py +135 -0
- venv/Lib/site-packages/setuptools/command/build_clib.py +103 -0
- venv/Lib/site-packages/setuptools/command/build_ext.py +470 -0
- venv/Lib/site-packages/setuptools/command/build_py.py +400 -0
- venv/Lib/site-packages/setuptools/command/develop.py +55 -0
- venv/Lib/site-packages/setuptools/command/dist_info.py +103 -0
- venv/Lib/site-packages/setuptools/command/easy_install.py +30 -0
- venv/Lib/site-packages/setuptools/command/editable_wheel.py +908 -0
- venv/Lib/site-packages/setuptools/command/egg_info.py +718 -0
- venv/Lib/site-packages/setuptools/command/install.py +131 -0
- venv/Lib/site-packages/setuptools/command/install_egg_info.py +58 -0
- venv/Lib/site-packages/setuptools/command/install_lib.py +137 -0
- venv/Lib/site-packages/setuptools/command/install_scripts.py +67 -0
- venv/Lib/site-packages/setuptools/command/rotate.py +65 -0
- venv/Lib/site-packages/setuptools/command/saveopts.py +21 -0
- venv/Lib/site-packages/setuptools/command/sdist.py +217 -0
- venv/Lib/site-packages/setuptools/command/setopt.py +141 -0
- venv/Lib/site-packages/setuptools/command/test.py +45 -0
- venv/Lib/site-packages/setuptools/compat/__init__.py +0 -0
- venv/Lib/site-packages/setuptools/compat/py310.py +20 -0
- venv/Lib/site-packages/setuptools/compat/py311.py +27 -0
- venv/Lib/site-packages/setuptools/compat/py312.py +13 -0
- venv/Lib/site-packages/setuptools/compat/py39.py +9 -0
- venv/Lib/site-packages/setuptools/config/__init__.py +43 -0
- venv/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +526 -0
- venv/Lib/site-packages/setuptools/config/_validate_pyproject/__init__.py +34 -0
- venv/Lib/site-packages/setuptools/config/_validate_pyproject/error_reporting.py +336 -0
- venv/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +82 -0
- venv/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py +51 -0
- venv/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +1412 -0
- venv/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +402 -0
- venv/Lib/site-packages/setuptools/config/expand.py +452 -0
- venv/Lib/site-packages/setuptools/config/pyprojecttoml.py +468 -0
- venv/Lib/site-packages/setuptools/config/setupcfg.py +780 -0
- venv/Lib/site-packages/setuptools/depends.py +185 -0
- venv/Lib/site-packages/setuptools/discovery.py +614 -0
- venv/Lib/site-packages/setuptools/dist.py +1119 -0
- venv/Lib/site-packages/setuptools/errors.py +67 -0
- venv/Lib/site-packages/setuptools/extension.py +177 -0
- venv/Lib/site-packages/setuptools/glob.py +185 -0
- venv/Lib/site-packages/setuptools/installer.py +155 -0
- venv/Lib/site-packages/setuptools/launch.py +36 -0
- venv/Lib/site-packages/setuptools/logging.py +40 -0
- venv/Lib/site-packages/setuptools/modified.py +18 -0
- venv/Lib/site-packages/setuptools/monkey.py +126 -0
- venv/Lib/site-packages/setuptools/msvc.py +1536 -0
- venv/Lib/site-packages/setuptools/namespaces.py +106 -0
- venv/Lib/site-packages/setuptools/tests/__init__.py +13 -0
- venv/Lib/site-packages/setuptools/tests/compat/__init__.py +0 -0
- venv/Lib/site-packages/setuptools/tests/compat/py39.py +3 -0
- venv/Lib/site-packages/setuptools/tests/config/__init__.py +0 -0
- venv/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +59 -0
- venv/Lib/site-packages/setuptools/tests/config/downloads/preload.py +18 -0
- venv/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +772 -0
- venv/Lib/site-packages/setuptools/tests/config/test_expand.py +247 -0
- venv/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +396 -0
- venv/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +109 -0
- venv/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +980 -0
- venv/Lib/site-packages/setuptools/tests/contexts.py +131 -0
- venv/Lib/site-packages/setuptools/tests/environment.py +95 -0
- venv/Lib/site-packages/setuptools/tests/fixtures.py +392 -0
- venv/Lib/site-packages/setuptools/tests/integration/__init__.py +0 -0
- venv/Lib/site-packages/setuptools/tests/integration/helpers.py +77 -0
- venv/Lib/site-packages/setuptools/tests/integration/test_pbr.py +20 -0
- venv/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +223 -0
- venv/Lib/site-packages/setuptools/tests/mod_with_constant.py +1 -0
- venv/Lib/site-packages/setuptools/tests/namespaces.py +90 -0
- venv/Lib/site-packages/setuptools/tests/script-with-bom.py +1 -0
- venv/Lib/site-packages/setuptools/tests/test_archive_util.py +36 -0
- venv/Lib/site-packages/setuptools/tests/test_bdist_deprecations.py +28 -0
- venv/Lib/site-packages/setuptools/tests/test_bdist_egg.py +73 -0
- venv/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +708 -0
- venv/Lib/site-packages/setuptools/tests/test_build.py +33 -0
- venv/Lib/site-packages/setuptools/tests/test_build_clib.py +84 -0
- venv/Lib/site-packages/setuptools/tests/test_build_ext.py +293 -0
- venv/Lib/site-packages/setuptools/tests/test_build_meta.py +959 -0
- venv/Lib/site-packages/setuptools/tests/test_build_py.py +480 -0
- venv/Lib/site-packages/setuptools/tests/test_config_discovery.py +647 -0
- venv/Lib/site-packages/setuptools/tests/test_core_metadata.py +622 -0
- venv/Lib/site-packages/setuptools/tests/test_depends.py +15 -0
- venv/Lib/site-packages/setuptools/tests/test_develop.py +112 -0
- venv/Lib/site-packages/setuptools/tests/test_dist.py +278 -0
- venv/Lib/site-packages/setuptools/tests/test_dist_info.py +147 -0
- venv/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +198 -0
- venv/Lib/site-packages/setuptools/tests/test_editable_install.py +1263 -0
- venv/Lib/site-packages/setuptools/tests/test_egg_info.py +1306 -0
- venv/Lib/site-packages/setuptools/tests/test_extern.py +15 -0
- venv/Lib/site-packages/setuptools/tests/test_find_packages.py +218 -0
- venv/Lib/site-packages/setuptools/tests/test_find_py_modules.py +73 -0
- venv/Lib/site-packages/setuptools/tests/test_glob.py +45 -0
- venv/Lib/site-packages/setuptools/tests/test_install_scripts.py +89 -0
- venv/Lib/site-packages/setuptools/tests/test_logging.py +76 -0
- venv/Lib/site-packages/setuptools/tests/test_manifest.py +622 -0
- venv/Lib/site-packages/setuptools/tests/test_namespaces.py +138 -0
- venv/Lib/site-packages/setuptools/tests/test_scripts.py +12 -0
- venv/Lib/site-packages/setuptools/tests/test_sdist.py +984 -0
- venv/Lib/site-packages/setuptools/tests/test_setopt.py +40 -0
- venv/Lib/site-packages/setuptools/tests/test_setuptools.py +290 -0
- venv/Lib/site-packages/setuptools/tests/test_shutil_wrapper.py +23 -0
- venv/Lib/site-packages/setuptools/tests/test_unicode_utils.py +10 -0
- venv/Lib/site-packages/setuptools/tests/test_virtualenv.py +113 -0
- venv/Lib/site-packages/setuptools/tests/test_warnings.py +106 -0
- venv/Lib/site-packages/setuptools/tests/test_wheel.py +690 -0
- venv/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +258 -0
- venv/Lib/site-packages/setuptools/tests/text.py +4 -0
- venv/Lib/site-packages/setuptools/tests/textwrap.py +6 -0
- venv/Lib/site-packages/setuptools/unicode_utils.py +102 -0
- venv/Lib/site-packages/setuptools/version.py +6 -0
- venv/Lib/site-packages/setuptools/warnings.py +110 -0
- venv/Lib/site-packages/setuptools/wheel.py +261 -0
- venv/Lib/site-packages/setuptools/windows_support.py +30 -0
- {android_notify-1.60.0.dist-info → android_notify-1.60.2.dist-info}/WHEEL +0 -0
- {android_notify-1.60.0.dist-info → android_notify-1.60.2.dist-info}/entry_points.txt +0 -0
- {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,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))
|