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,67 @@
|
|
|
1
|
+
"""setuptools.errors
|
|
2
|
+
|
|
3
|
+
Provides exceptions used by setuptools modules.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from distutils import errors as _distutils_errors
|
|
9
|
+
|
|
10
|
+
# Re-export errors from distutils to facilitate the migration to PEP632
|
|
11
|
+
|
|
12
|
+
ByteCompileError = _distutils_errors.DistutilsByteCompileError
|
|
13
|
+
CCompilerError = _distutils_errors.CCompilerError
|
|
14
|
+
ClassError = _distutils_errors.DistutilsClassError
|
|
15
|
+
CompileError = _distutils_errors.CompileError
|
|
16
|
+
ExecError = _distutils_errors.DistutilsExecError
|
|
17
|
+
FileError = _distutils_errors.DistutilsFileError
|
|
18
|
+
InternalError = _distutils_errors.DistutilsInternalError
|
|
19
|
+
LibError = _distutils_errors.LibError
|
|
20
|
+
LinkError = _distutils_errors.LinkError
|
|
21
|
+
ModuleError = _distutils_errors.DistutilsModuleError
|
|
22
|
+
OptionError = _distutils_errors.DistutilsOptionError
|
|
23
|
+
PlatformError = _distutils_errors.DistutilsPlatformError
|
|
24
|
+
PreprocessError = _distutils_errors.PreprocessError
|
|
25
|
+
SetupError = _distutils_errors.DistutilsSetupError
|
|
26
|
+
TemplateError = _distutils_errors.DistutilsTemplateError
|
|
27
|
+
UnknownFileError = _distutils_errors.UnknownFileError
|
|
28
|
+
|
|
29
|
+
# The root error class in the hierarchy
|
|
30
|
+
BaseError = _distutils_errors.DistutilsError
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class InvalidConfigError(OptionError): # type: ignore[valid-type, misc] # distutils imports are `Any` on python 3.12+
|
|
34
|
+
"""Error used for invalid configurations."""
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class RemovedConfigError(OptionError): # type: ignore[valid-type, misc] # distutils imports are `Any` on python 3.12+
|
|
38
|
+
"""Error used for configurations that were deprecated and removed."""
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class RemovedCommandError(BaseError, RuntimeError): # type: ignore[valid-type, misc] # distutils imports are `Any` on python 3.12+
|
|
42
|
+
"""Error used for commands that have been removed in setuptools.
|
|
43
|
+
|
|
44
|
+
Since ``setuptools`` is built on ``distutils``, simply removing a command
|
|
45
|
+
from ``setuptools`` will make the behavior fall back to ``distutils``; this
|
|
46
|
+
error is raised if a command exists in ``distutils`` but has been actively
|
|
47
|
+
removed in ``setuptools``.
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class PackageDiscoveryError(BaseError, RuntimeError): # type: ignore[valid-type, misc] # distutils imports are `Any` on python 3.12+
|
|
52
|
+
"""Impossible to perform automatic discovery of packages and/or modules.
|
|
53
|
+
|
|
54
|
+
The current project layout or given discovery options can lead to problems when
|
|
55
|
+
scanning the project directory.
|
|
56
|
+
|
|
57
|
+
Setuptools might also refuse to complete auto-discovery if an error prone condition
|
|
58
|
+
is detected (e.g. when a project is organised as a flat-layout but contains
|
|
59
|
+
multiple directories that can be taken as top-level packages inside a single
|
|
60
|
+
distribution [*]_). In these situations the users are encouraged to be explicit
|
|
61
|
+
about which packages to include or to make the discovery parameters more specific.
|
|
62
|
+
|
|
63
|
+
.. [*] Since multi-package distributions are uncommon it is very likely that the
|
|
64
|
+
developers did not intend for all the directories to be packaged, and are just
|
|
65
|
+
leaving auxiliary code in the repository top-level, such as maintenance-related
|
|
66
|
+
scripts.
|
|
67
|
+
"""
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import functools
|
|
4
|
+
import re
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
from setuptools._path import StrPath
|
|
8
|
+
|
|
9
|
+
from .monkey import get_unpatched
|
|
10
|
+
|
|
11
|
+
import distutils.core
|
|
12
|
+
import distutils.errors
|
|
13
|
+
import distutils.extension
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def _have_cython():
|
|
17
|
+
"""
|
|
18
|
+
Return True if Cython can be imported.
|
|
19
|
+
"""
|
|
20
|
+
cython_impl = 'Cython.Distutils.build_ext'
|
|
21
|
+
try:
|
|
22
|
+
# from (cython_impl) import build_ext
|
|
23
|
+
__import__(cython_impl, fromlist=['build_ext']).build_ext
|
|
24
|
+
except Exception:
|
|
25
|
+
return False
|
|
26
|
+
return True
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# for compatibility
|
|
30
|
+
have_pyrex = _have_cython
|
|
31
|
+
if TYPE_CHECKING:
|
|
32
|
+
# Work around a mypy issue where type[T] can't be used as a base: https://github.com/python/mypy/issues/10962
|
|
33
|
+
from distutils.core import Extension as _Extension
|
|
34
|
+
else:
|
|
35
|
+
_Extension = get_unpatched(distutils.core.Extension)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class Extension(_Extension):
|
|
39
|
+
"""
|
|
40
|
+
Describes a single extension module.
|
|
41
|
+
|
|
42
|
+
This means that all source files will be compiled into a single binary file
|
|
43
|
+
``<module path>.<suffix>`` (with ``<module path>`` derived from ``name`` and
|
|
44
|
+
``<suffix>`` defined by one of the values in
|
|
45
|
+
``importlib.machinery.EXTENSION_SUFFIXES``).
|
|
46
|
+
|
|
47
|
+
In the case ``.pyx`` files are passed as ``sources and`` ``Cython`` is **not**
|
|
48
|
+
installed in the build environment, ``setuptools`` may also try to look for the
|
|
49
|
+
equivalent ``.cpp`` or ``.c`` files.
|
|
50
|
+
|
|
51
|
+
:arg str name:
|
|
52
|
+
the full name of the extension, including any packages -- ie.
|
|
53
|
+
*not* a filename or pathname, but Python dotted name
|
|
54
|
+
|
|
55
|
+
:arg list[str|os.PathLike[str]] sources:
|
|
56
|
+
list of source filenames, relative to the distribution root
|
|
57
|
+
(where the setup script lives), in Unix form (slash-separated)
|
|
58
|
+
for portability. Source files may be C, C++, SWIG (.i),
|
|
59
|
+
platform-specific resource files, or whatever else is recognized
|
|
60
|
+
by the "build_ext" command as source for a Python extension.
|
|
61
|
+
|
|
62
|
+
:keyword list[str] include_dirs:
|
|
63
|
+
list of directories to search for C/C++ header files (in Unix
|
|
64
|
+
form for portability)
|
|
65
|
+
|
|
66
|
+
:keyword list[tuple[str, str|None]] define_macros:
|
|
67
|
+
list of macros to define; each macro is defined using a 2-tuple:
|
|
68
|
+
the first item corresponding to the name of the macro and the second
|
|
69
|
+
item either a string with its value or None to
|
|
70
|
+
define it without a particular value (equivalent of "#define
|
|
71
|
+
FOO" in source or -DFOO on Unix C compiler command line)
|
|
72
|
+
|
|
73
|
+
:keyword list[str] undef_macros:
|
|
74
|
+
list of macros to undefine explicitly
|
|
75
|
+
|
|
76
|
+
:keyword list[str] library_dirs:
|
|
77
|
+
list of directories to search for C/C++ libraries at link time
|
|
78
|
+
|
|
79
|
+
:keyword list[str] libraries:
|
|
80
|
+
list of library names (not filenames or paths) to link against
|
|
81
|
+
|
|
82
|
+
:keyword list[str] runtime_library_dirs:
|
|
83
|
+
list of directories to search for C/C++ libraries at run time
|
|
84
|
+
(for shared extensions, this is when the extension is loaded).
|
|
85
|
+
Setting this will cause an exception during build on Windows
|
|
86
|
+
platforms.
|
|
87
|
+
|
|
88
|
+
:keyword list[str] extra_objects:
|
|
89
|
+
list of extra files to link with (eg. object files not implied
|
|
90
|
+
by 'sources', static library that must be explicitly specified,
|
|
91
|
+
binary resource files, etc.)
|
|
92
|
+
|
|
93
|
+
:keyword list[str] extra_compile_args:
|
|
94
|
+
any extra platform- and compiler-specific information to use
|
|
95
|
+
when compiling the source files in 'sources'. For platforms and
|
|
96
|
+
compilers where "command line" makes sense, this is typically a
|
|
97
|
+
list of command-line arguments, but for other platforms it could
|
|
98
|
+
be anything.
|
|
99
|
+
|
|
100
|
+
:keyword list[str] extra_link_args:
|
|
101
|
+
any extra platform- and compiler-specific information to use
|
|
102
|
+
when linking object files together to create the extension (or
|
|
103
|
+
to create a new static Python interpreter). Similar
|
|
104
|
+
interpretation as for 'extra_compile_args'.
|
|
105
|
+
|
|
106
|
+
:keyword list[str] export_symbols:
|
|
107
|
+
list of symbols to be exported from a shared extension. Not
|
|
108
|
+
used on all platforms, and not generally necessary for Python
|
|
109
|
+
extensions, which typically export exactly one symbol: "init" +
|
|
110
|
+
extension_name.
|
|
111
|
+
|
|
112
|
+
:keyword list[str] swig_opts:
|
|
113
|
+
any extra options to pass to SWIG if a source file has the .i
|
|
114
|
+
extension.
|
|
115
|
+
|
|
116
|
+
:keyword list[str] depends:
|
|
117
|
+
list of files that the extension depends on
|
|
118
|
+
|
|
119
|
+
:keyword str language:
|
|
120
|
+
extension language (i.e. "c", "c++", "objc"). Will be detected
|
|
121
|
+
from the source extensions if not provided.
|
|
122
|
+
|
|
123
|
+
:keyword bool optional:
|
|
124
|
+
specifies that a build failure in the extension should not abort the
|
|
125
|
+
build process, but simply not install the failing extension.
|
|
126
|
+
|
|
127
|
+
:keyword bool py_limited_api:
|
|
128
|
+
opt-in flag for the usage of :doc:`Python's limited API <python:c-api/stable>`.
|
|
129
|
+
|
|
130
|
+
:raises setuptools.errors.PlatformError: if ``runtime_library_dirs`` is
|
|
131
|
+
specified on Windows. (since v63)
|
|
132
|
+
"""
|
|
133
|
+
|
|
134
|
+
# These 4 are set and used in setuptools/command/build_ext.py
|
|
135
|
+
# The lack of a default value and risk of `AttributeError` is purposeful
|
|
136
|
+
# to avoid people forgetting to call finalize_options if they modify the extension list.
|
|
137
|
+
# See example/rationale in https://github.com/pypa/setuptools/issues/4529.
|
|
138
|
+
_full_name: str #: Private API, internal use only.
|
|
139
|
+
_links_to_dynamic: bool #: Private API, internal use only.
|
|
140
|
+
_needs_stub: bool #: Private API, internal use only.
|
|
141
|
+
_file_name: str #: Private API, internal use only.
|
|
142
|
+
|
|
143
|
+
def __init__(
|
|
144
|
+
self,
|
|
145
|
+
name: str,
|
|
146
|
+
sources: list[StrPath],
|
|
147
|
+
*args,
|
|
148
|
+
py_limited_api: bool = False,
|
|
149
|
+
**kw,
|
|
150
|
+
) -> None:
|
|
151
|
+
# The *args is needed for compatibility as calls may use positional
|
|
152
|
+
# arguments. py_limited_api may be set only via keyword.
|
|
153
|
+
self.py_limited_api = py_limited_api
|
|
154
|
+
super().__init__(
|
|
155
|
+
name,
|
|
156
|
+
sources, # type: ignore[arg-type] # Vendored version of setuptools supports PathLike
|
|
157
|
+
*args,
|
|
158
|
+
**kw,
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
def _convert_pyx_sources_to_lang(self):
|
|
162
|
+
"""
|
|
163
|
+
Replace sources with .pyx extensions to sources with the target
|
|
164
|
+
language extension. This mechanism allows language authors to supply
|
|
165
|
+
pre-converted sources but to prefer the .pyx sources.
|
|
166
|
+
"""
|
|
167
|
+
if _have_cython():
|
|
168
|
+
# the build has Cython, so allow it to compile the .pyx files
|
|
169
|
+
return
|
|
170
|
+
lang = self.language or ''
|
|
171
|
+
target_ext = '.cpp' if lang.lower() == 'c++' else '.c'
|
|
172
|
+
sub = functools.partial(re.sub, '.pyx$', target_ext)
|
|
173
|
+
self.sources = list(map(sub, self.sources))
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
class Library(Extension):
|
|
177
|
+
"""Just like a regular Extension, but built as a library instead"""
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Filename globbing utility. Mostly a copy of `glob` from Python 3.5.
|
|
3
|
+
|
|
4
|
+
Changes include:
|
|
5
|
+
* `yield from` and PEP3102 `*` removed.
|
|
6
|
+
* Hidden files are not ignored.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import fnmatch
|
|
12
|
+
import os
|
|
13
|
+
import re
|
|
14
|
+
from collections.abc import Iterable, Iterator
|
|
15
|
+
from typing import TYPE_CHECKING, AnyStr, overload
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from _typeshed import BytesPath, StrOrBytesPath, StrPath
|
|
19
|
+
|
|
20
|
+
__all__ = ["glob", "iglob", "escape"]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def glob(pathname: AnyStr, recursive: bool = False) -> list[AnyStr]:
|
|
24
|
+
"""Return a list of paths matching a pathname pattern.
|
|
25
|
+
|
|
26
|
+
The pattern may contain simple shell-style wildcards a la
|
|
27
|
+
fnmatch. However, unlike fnmatch, filenames starting with a
|
|
28
|
+
dot are special cases that are not matched by '*' and '?'
|
|
29
|
+
patterns.
|
|
30
|
+
|
|
31
|
+
If recursive is true, the pattern '**' will match any files and
|
|
32
|
+
zero or more directories and subdirectories.
|
|
33
|
+
"""
|
|
34
|
+
return list(iglob(pathname, recursive=recursive))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def iglob(pathname: AnyStr, recursive: bool = False) -> Iterator[AnyStr]:
|
|
38
|
+
"""Return an iterator which yields the paths matching a pathname pattern.
|
|
39
|
+
|
|
40
|
+
The pattern may contain simple shell-style wildcards a la
|
|
41
|
+
fnmatch. However, unlike fnmatch, filenames starting with a
|
|
42
|
+
dot are special cases that are not matched by '*' and '?'
|
|
43
|
+
patterns.
|
|
44
|
+
|
|
45
|
+
If recursive is true, the pattern '**' will match any files and
|
|
46
|
+
zero or more directories and subdirectories.
|
|
47
|
+
"""
|
|
48
|
+
it = _iglob(pathname, recursive)
|
|
49
|
+
if recursive and _isrecursive(pathname):
|
|
50
|
+
s = next(it) # skip empty string
|
|
51
|
+
assert not s
|
|
52
|
+
return it
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def _iglob(pathname: AnyStr, recursive: bool) -> Iterator[AnyStr]:
|
|
56
|
+
dirname, basename = os.path.split(pathname)
|
|
57
|
+
glob_in_dir = glob2 if recursive and _isrecursive(basename) else glob1
|
|
58
|
+
|
|
59
|
+
if not has_magic(pathname):
|
|
60
|
+
if basename:
|
|
61
|
+
if os.path.lexists(pathname):
|
|
62
|
+
yield pathname
|
|
63
|
+
else:
|
|
64
|
+
# Patterns ending with a slash should match only directories
|
|
65
|
+
if os.path.isdir(dirname):
|
|
66
|
+
yield pathname
|
|
67
|
+
return
|
|
68
|
+
|
|
69
|
+
if not dirname:
|
|
70
|
+
yield from glob_in_dir(dirname, basename)
|
|
71
|
+
return
|
|
72
|
+
# `os.path.split()` returns the argument itself as a dirname if it is a
|
|
73
|
+
# drive or UNC path. Prevent an infinite recursion if a drive or UNC path
|
|
74
|
+
# contains magic characters (i.e. r'\\?\C:').
|
|
75
|
+
if dirname != pathname and has_magic(dirname):
|
|
76
|
+
dirs: Iterable[AnyStr] = _iglob(dirname, recursive)
|
|
77
|
+
else:
|
|
78
|
+
dirs = [dirname]
|
|
79
|
+
if not has_magic(basename):
|
|
80
|
+
glob_in_dir = glob0
|
|
81
|
+
for dirname in dirs:
|
|
82
|
+
for name in glob_in_dir(dirname, basename):
|
|
83
|
+
yield os.path.join(dirname, name)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
# These 2 helper functions non-recursively glob inside a literal directory.
|
|
87
|
+
# They return a list of basenames. `glob1` accepts a pattern while `glob0`
|
|
88
|
+
# takes a literal basename (so it only has to check for its existence).
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
@overload
|
|
92
|
+
def glob1(dirname: StrPath, pattern: str) -> list[str]: ...
|
|
93
|
+
@overload
|
|
94
|
+
def glob1(dirname: BytesPath, pattern: bytes) -> list[bytes]: ...
|
|
95
|
+
def glob1(dirname: StrOrBytesPath, pattern: str | bytes) -> list[str] | list[bytes]:
|
|
96
|
+
if not dirname:
|
|
97
|
+
if isinstance(pattern, bytes):
|
|
98
|
+
dirname = os.curdir.encode('ASCII')
|
|
99
|
+
else:
|
|
100
|
+
dirname = os.curdir
|
|
101
|
+
try:
|
|
102
|
+
names = os.listdir(dirname)
|
|
103
|
+
except OSError:
|
|
104
|
+
return []
|
|
105
|
+
# mypy false-positives: str or bytes type possibility is always kept in sync
|
|
106
|
+
return fnmatch.filter(names, pattern) # type: ignore[type-var, return-value]
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def glob0(dirname, basename):
|
|
110
|
+
if not basename:
|
|
111
|
+
# `os.path.split()` returns an empty basename for paths ending with a
|
|
112
|
+
# directory separator. 'q*x/' should match only directories.
|
|
113
|
+
if os.path.isdir(dirname):
|
|
114
|
+
return [basename]
|
|
115
|
+
else:
|
|
116
|
+
if os.path.lexists(os.path.join(dirname, basename)):
|
|
117
|
+
return [basename]
|
|
118
|
+
return []
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
# This helper function recursively yields relative pathnames inside a literal
|
|
122
|
+
# directory.
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
@overload
|
|
126
|
+
def glob2(dirname: StrPath, pattern: str) -> Iterator[str]: ...
|
|
127
|
+
@overload
|
|
128
|
+
def glob2(dirname: BytesPath, pattern: bytes) -> Iterator[bytes]: ...
|
|
129
|
+
def glob2(dirname: StrOrBytesPath, pattern: str | bytes) -> Iterator[str | bytes]:
|
|
130
|
+
assert _isrecursive(pattern)
|
|
131
|
+
yield pattern[:0]
|
|
132
|
+
yield from _rlistdir(dirname)
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
# Recursively yields relative pathnames inside a literal directory.
|
|
136
|
+
@overload
|
|
137
|
+
def _rlistdir(dirname: StrPath) -> Iterator[str]: ...
|
|
138
|
+
@overload
|
|
139
|
+
def _rlistdir(dirname: BytesPath) -> Iterator[bytes]: ...
|
|
140
|
+
def _rlistdir(dirname: StrOrBytesPath) -> Iterator[str | bytes]:
|
|
141
|
+
if not dirname:
|
|
142
|
+
if isinstance(dirname, bytes):
|
|
143
|
+
dirname = os.curdir.encode('ASCII')
|
|
144
|
+
else:
|
|
145
|
+
dirname = os.curdir
|
|
146
|
+
try:
|
|
147
|
+
names = os.listdir(dirname)
|
|
148
|
+
except OSError:
|
|
149
|
+
return
|
|
150
|
+
for x in names:
|
|
151
|
+
yield x
|
|
152
|
+
# mypy false-positives: str or bytes type possibility is always kept in sync
|
|
153
|
+
path = os.path.join(dirname, x) if dirname else x # type: ignore[arg-type]
|
|
154
|
+
for y in _rlistdir(path):
|
|
155
|
+
yield os.path.join(x, y) # type: ignore[arg-type]
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
magic_check = re.compile('([*?[])')
|
|
159
|
+
magic_check_bytes = re.compile(b'([*?[])')
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def has_magic(s: str | bytes) -> bool:
|
|
163
|
+
if isinstance(s, bytes):
|
|
164
|
+
return magic_check_bytes.search(s) is not None
|
|
165
|
+
else:
|
|
166
|
+
return magic_check.search(s) is not None
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def _isrecursive(pattern: str | bytes) -> bool:
|
|
170
|
+
if isinstance(pattern, bytes):
|
|
171
|
+
return pattern == b'**'
|
|
172
|
+
else:
|
|
173
|
+
return pattern == '**'
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def escape(pathname):
|
|
177
|
+
"""Escape all special characters."""
|
|
178
|
+
# Escaping is done by wrapping any of "*?[" between square brackets.
|
|
179
|
+
# Metacharacters do not work in the drive part and shouldn't be escaped.
|
|
180
|
+
drive, pathname = os.path.splitdrive(pathname)
|
|
181
|
+
if isinstance(pathname, bytes):
|
|
182
|
+
pathname = magic_check_bytes.sub(rb'[\1]', pathname)
|
|
183
|
+
else:
|
|
184
|
+
pathname = magic_check.sub(r'[\1]', pathname)
|
|
185
|
+
return drive + pathname
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import glob
|
|
4
|
+
import itertools
|
|
5
|
+
import os
|
|
6
|
+
import subprocess
|
|
7
|
+
import sys
|
|
8
|
+
import tempfile
|
|
9
|
+
|
|
10
|
+
import packaging.requirements
|
|
11
|
+
import packaging.utils
|
|
12
|
+
|
|
13
|
+
from . import _reqs
|
|
14
|
+
from ._importlib import metadata
|
|
15
|
+
from .warnings import SetuptoolsDeprecationWarning
|
|
16
|
+
from .wheel import Wheel
|
|
17
|
+
|
|
18
|
+
from distutils import log
|
|
19
|
+
from distutils.errors import DistutilsError
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _fixup_find_links(find_links):
|
|
23
|
+
"""Ensure find-links option end-up being a list of strings."""
|
|
24
|
+
if isinstance(find_links, str):
|
|
25
|
+
return find_links.split()
|
|
26
|
+
assert isinstance(find_links, (tuple, list))
|
|
27
|
+
return find_links
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def fetch_build_egg(dist, req):
|
|
31
|
+
"""Fetch an egg needed for building.
|
|
32
|
+
|
|
33
|
+
Use pip/wheel to fetch/build a wheel."""
|
|
34
|
+
_DeprecatedInstaller.emit()
|
|
35
|
+
_warn_wheel_not_available(dist)
|
|
36
|
+
return _fetch_build_egg_no_warn(dist, req)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _present(req):
|
|
40
|
+
return any(_dist_matches_req(dist, req) for dist in metadata.distributions())
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _fetch_build_eggs(dist, requires: _reqs._StrOrIter) -> list[metadata.Distribution]:
|
|
44
|
+
_DeprecatedInstaller.emit(stacklevel=3)
|
|
45
|
+
_warn_wheel_not_available(dist)
|
|
46
|
+
|
|
47
|
+
parsed_reqs = _reqs.parse(requires)
|
|
48
|
+
|
|
49
|
+
missing_reqs = itertools.filterfalse(_present, parsed_reqs)
|
|
50
|
+
|
|
51
|
+
needed_reqs = (
|
|
52
|
+
req for req in missing_reqs if not req.marker or req.marker.evaluate()
|
|
53
|
+
)
|
|
54
|
+
resolved_dists = [_fetch_build_egg_no_warn(dist, req) for req in needed_reqs]
|
|
55
|
+
for dist in resolved_dists:
|
|
56
|
+
# dist.locate_file('') is the directory containing EGG-INFO, where the importabl
|
|
57
|
+
# contents can be found.
|
|
58
|
+
sys.path.insert(0, str(dist.locate_file('')))
|
|
59
|
+
return resolved_dists
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def _dist_matches_req(egg_dist, req):
|
|
63
|
+
return (
|
|
64
|
+
packaging.utils.canonicalize_name(egg_dist.name)
|
|
65
|
+
== packaging.utils.canonicalize_name(req.name)
|
|
66
|
+
and egg_dist.version in req.specifier
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _fetch_build_egg_no_warn(dist, req): # noqa: C901 # is too complex (16) # FIXME
|
|
71
|
+
# Ignore environment markers; if supplied, it is required.
|
|
72
|
+
req = strip_marker(req)
|
|
73
|
+
# Take easy_install options into account, but do not override relevant
|
|
74
|
+
# pip environment variables (like PIP_INDEX_URL or PIP_QUIET); they'll
|
|
75
|
+
# take precedence.
|
|
76
|
+
opts = dist.get_option_dict('easy_install')
|
|
77
|
+
if 'allow_hosts' in opts:
|
|
78
|
+
raise DistutilsError(
|
|
79
|
+
'the `allow-hosts` option is not supported '
|
|
80
|
+
'when using pip to install requirements.'
|
|
81
|
+
)
|
|
82
|
+
quiet = 'PIP_QUIET' not in os.environ and 'PIP_VERBOSE' not in os.environ
|
|
83
|
+
if 'PIP_INDEX_URL' in os.environ:
|
|
84
|
+
index_url = None
|
|
85
|
+
elif 'index_url' in opts:
|
|
86
|
+
index_url = opts['index_url'][1]
|
|
87
|
+
else:
|
|
88
|
+
index_url = None
|
|
89
|
+
find_links = (
|
|
90
|
+
_fixup_find_links(opts['find_links'][1])[:] if 'find_links' in opts else []
|
|
91
|
+
)
|
|
92
|
+
if dist.dependency_links:
|
|
93
|
+
find_links.extend(dist.dependency_links)
|
|
94
|
+
eggs_dir = os.path.realpath(dist.get_egg_cache_dir())
|
|
95
|
+
cached_dists = metadata.Distribution.discover(path=glob.glob(f'{eggs_dir}/*.egg'))
|
|
96
|
+
for egg_dist in cached_dists:
|
|
97
|
+
if _dist_matches_req(egg_dist, req):
|
|
98
|
+
return egg_dist
|
|
99
|
+
with tempfile.TemporaryDirectory() as tmpdir:
|
|
100
|
+
cmd = [
|
|
101
|
+
sys.executable,
|
|
102
|
+
'-m',
|
|
103
|
+
'pip',
|
|
104
|
+
'--disable-pip-version-check',
|
|
105
|
+
'wheel',
|
|
106
|
+
'--no-deps',
|
|
107
|
+
'-w',
|
|
108
|
+
tmpdir,
|
|
109
|
+
]
|
|
110
|
+
if quiet:
|
|
111
|
+
cmd.append('--quiet')
|
|
112
|
+
if index_url is not None:
|
|
113
|
+
cmd.extend(('--index-url', index_url))
|
|
114
|
+
for link in find_links or []:
|
|
115
|
+
cmd.extend(('--find-links', link))
|
|
116
|
+
# If requirement is a PEP 508 direct URL, directly pass
|
|
117
|
+
# the URL to pip, as `req @ url` does not work on the
|
|
118
|
+
# command line.
|
|
119
|
+
cmd.append(req.url or str(req))
|
|
120
|
+
try:
|
|
121
|
+
subprocess.check_call(cmd)
|
|
122
|
+
except subprocess.CalledProcessError as e:
|
|
123
|
+
raise DistutilsError(str(e)) from e
|
|
124
|
+
wheel = Wheel(glob.glob(os.path.join(tmpdir, '*.whl'))[0])
|
|
125
|
+
dist_location = os.path.join(eggs_dir, wheel.egg_name())
|
|
126
|
+
wheel.install_as_egg(dist_location)
|
|
127
|
+
return metadata.Distribution.at(dist_location + '/EGG-INFO')
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def strip_marker(req):
|
|
131
|
+
"""
|
|
132
|
+
Return a new requirement without the environment marker to avoid
|
|
133
|
+
calling pip with something like `babel; extra == "i18n"`, which
|
|
134
|
+
would always be ignored.
|
|
135
|
+
"""
|
|
136
|
+
# create a copy to avoid mutating the input
|
|
137
|
+
req = packaging.requirements.Requirement(str(req))
|
|
138
|
+
req.marker = None
|
|
139
|
+
return req
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def _warn_wheel_not_available(dist):
|
|
143
|
+
try:
|
|
144
|
+
metadata.distribution('wheel')
|
|
145
|
+
except metadata.PackageNotFoundError:
|
|
146
|
+
dist.announce('WARNING: The wheel package is not available.', log.WARN)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
class _DeprecatedInstaller(SetuptoolsDeprecationWarning):
|
|
150
|
+
_SUMMARY = "setuptools.installer and fetch_build_eggs are deprecated."
|
|
151
|
+
_DETAILS = """
|
|
152
|
+
Requirements should be satisfied by a PEP 517 installer.
|
|
153
|
+
If you are using pip, you can try `pip install --use-pep517`.
|
|
154
|
+
"""
|
|
155
|
+
_DUE_DATE = 2025, 10, 31
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Launch the Python script on the command line after
|
|
3
|
+
setuptools is bootstrapped via import.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
# Note that setuptools gets imported implicitly by the
|
|
7
|
+
# invocation of this script using python -m setuptools.launch
|
|
8
|
+
|
|
9
|
+
import sys
|
|
10
|
+
import tokenize
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def run() -> None:
|
|
14
|
+
"""
|
|
15
|
+
Run the script in sys.argv[1] as if it had
|
|
16
|
+
been invoked naturally.
|
|
17
|
+
"""
|
|
18
|
+
__builtins__
|
|
19
|
+
script_name = sys.argv[1]
|
|
20
|
+
namespace = dict(
|
|
21
|
+
__file__=script_name,
|
|
22
|
+
__name__='__main__',
|
|
23
|
+
__doc__=None,
|
|
24
|
+
)
|
|
25
|
+
sys.argv[:] = sys.argv[1:]
|
|
26
|
+
|
|
27
|
+
open_ = getattr(tokenize, 'open', open)
|
|
28
|
+
with open_(script_name) as fid:
|
|
29
|
+
script = fid.read()
|
|
30
|
+
norm_script = script.replace('\\r\\n', '\\n')
|
|
31
|
+
code = compile(norm_script, script_name, 'exec')
|
|
32
|
+
exec(code, namespace)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
if __name__ == '__main__':
|
|
36
|
+
run()
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import inspect
|
|
2
|
+
import logging
|
|
3
|
+
import sys
|
|
4
|
+
|
|
5
|
+
from . import monkey
|
|
6
|
+
|
|
7
|
+
import distutils.log
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def _not_warning(record):
|
|
11
|
+
return record.levelno < logging.WARNING
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def configure() -> None:
|
|
15
|
+
"""
|
|
16
|
+
Configure logging to emit warning and above to stderr
|
|
17
|
+
and everything else to stdout. This behavior is provided
|
|
18
|
+
for compatibility with distutils.log but may change in
|
|
19
|
+
the future.
|
|
20
|
+
"""
|
|
21
|
+
err_handler = logging.StreamHandler()
|
|
22
|
+
err_handler.setLevel(logging.WARNING)
|
|
23
|
+
out_handler = logging.StreamHandler(sys.stdout)
|
|
24
|
+
out_handler.addFilter(_not_warning)
|
|
25
|
+
handlers = err_handler, out_handler
|
|
26
|
+
logging.basicConfig(
|
|
27
|
+
format="{message}", style='{', handlers=handlers, level=logging.DEBUG
|
|
28
|
+
)
|
|
29
|
+
if inspect.ismodule(distutils.dist.log):
|
|
30
|
+
monkey.patch_func(set_threshold, distutils.log, 'set_threshold')
|
|
31
|
+
# For some reason `distutils.log` module is getting cached in `distutils.dist`
|
|
32
|
+
# and then loaded again when patched,
|
|
33
|
+
# implying: id(distutils.log) != id(distutils.dist.log).
|
|
34
|
+
# Make sure the same module object is used everywhere:
|
|
35
|
+
distutils.dist.log = distutils.log
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def set_threshold(level: int) -> int:
|
|
39
|
+
logging.root.setLevel(level * 10)
|
|
40
|
+
return set_threshold.unpatched(level)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
try:
|
|
2
|
+
# Ensure a DistutilsError raised by these methods is the same as distutils.errors.DistutilsError
|
|
3
|
+
from distutils._modified import (
|
|
4
|
+
newer,
|
|
5
|
+
newer_group,
|
|
6
|
+
newer_pairwise,
|
|
7
|
+
newer_pairwise_group,
|
|
8
|
+
)
|
|
9
|
+
except ImportError:
|
|
10
|
+
# fallback for SETUPTOOLS_USE_DISTUTILS=stdlib, because _modified never existed in stdlib
|
|
11
|
+
from ._distutils._modified import (
|
|
12
|
+
newer,
|
|
13
|
+
newer_group,
|
|
14
|
+
newer_pairwise,
|
|
15
|
+
newer_pairwise_group,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
__all__ = ['newer', 'newer_pairwise', 'newer_group', 'newer_pairwise_group']
|