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,40 @@
|
|
|
1
|
+
import configparser
|
|
2
|
+
|
|
3
|
+
from setuptools.command import setopt
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class TestEdit:
|
|
7
|
+
@staticmethod
|
|
8
|
+
def parse_config(filename):
|
|
9
|
+
parser = configparser.ConfigParser()
|
|
10
|
+
with open(filename, encoding='utf-8') as reader:
|
|
11
|
+
parser.read_file(reader)
|
|
12
|
+
return parser
|
|
13
|
+
|
|
14
|
+
@staticmethod
|
|
15
|
+
def write_text(file, content):
|
|
16
|
+
with open(file, 'wb') as strm:
|
|
17
|
+
strm.write(content.encode('utf-8'))
|
|
18
|
+
|
|
19
|
+
def test_utf8_encoding_retained(self, tmpdir):
|
|
20
|
+
"""
|
|
21
|
+
When editing a file, non-ASCII characters encoded in
|
|
22
|
+
UTF-8 should be retained.
|
|
23
|
+
"""
|
|
24
|
+
config = tmpdir.join('setup.cfg')
|
|
25
|
+
self.write_text(str(config), '[names]\njaraco=джарако')
|
|
26
|
+
setopt.edit_config(str(config), dict(names=dict(other='yes')))
|
|
27
|
+
parser = self.parse_config(str(config))
|
|
28
|
+
assert parser.get('names', 'jaraco') == 'джарако'
|
|
29
|
+
assert parser.get('names', 'other') == 'yes'
|
|
30
|
+
|
|
31
|
+
def test_case_retained(self, tmpdir):
|
|
32
|
+
"""
|
|
33
|
+
When editing a file, case of keys should be retained.
|
|
34
|
+
"""
|
|
35
|
+
config = tmpdir.join('setup.cfg')
|
|
36
|
+
self.write_text(str(config), '[names]\nFoO=bAr')
|
|
37
|
+
setopt.edit_config(str(config), dict(names=dict(oTher='yes')))
|
|
38
|
+
actual = config.read_text(encoding='ascii')
|
|
39
|
+
assert 'FoO' in actual
|
|
40
|
+
assert 'oTher' in actual
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
"""Tests for the 'setuptools' package"""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import re
|
|
5
|
+
import sys
|
|
6
|
+
from zipfile import ZipFile
|
|
7
|
+
|
|
8
|
+
import pytest
|
|
9
|
+
from packaging.version import Version
|
|
10
|
+
|
|
11
|
+
import setuptools
|
|
12
|
+
import setuptools.depends as dep
|
|
13
|
+
import setuptools.dist
|
|
14
|
+
from setuptools.depends import Require
|
|
15
|
+
|
|
16
|
+
import distutils.cmd
|
|
17
|
+
import distutils.core
|
|
18
|
+
from distutils.core import Extension
|
|
19
|
+
from distutils.errors import DistutilsSetupError
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@pytest.fixture(autouse=True)
|
|
23
|
+
def isolated_dir(tmpdir_cwd):
|
|
24
|
+
return
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def makeSetup(**args):
|
|
28
|
+
"""Return distribution from 'setup(**args)', without executing commands"""
|
|
29
|
+
|
|
30
|
+
distutils.core._setup_stop_after = "commandline"
|
|
31
|
+
|
|
32
|
+
# Don't let system command line leak into tests!
|
|
33
|
+
args.setdefault('script_args', ['install'])
|
|
34
|
+
|
|
35
|
+
try:
|
|
36
|
+
return setuptools.setup(**args)
|
|
37
|
+
finally:
|
|
38
|
+
distutils.core._setup_stop_after = None
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
needs_bytecode = pytest.mark.skipif(
|
|
42
|
+
not hasattr(dep, 'get_module_constant'),
|
|
43
|
+
reason="bytecode support not available",
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class TestDepends:
|
|
48
|
+
def testExtractConst(self):
|
|
49
|
+
if not hasattr(dep, 'extract_constant'):
|
|
50
|
+
# skip on non-bytecode platforms
|
|
51
|
+
return
|
|
52
|
+
|
|
53
|
+
def f1():
|
|
54
|
+
global x, y, z
|
|
55
|
+
x = "test"
|
|
56
|
+
y = z # pyright: ignore[reportUnboundVariable] # Explicitly testing for this runtime issue
|
|
57
|
+
|
|
58
|
+
fc = f1.__code__
|
|
59
|
+
|
|
60
|
+
# unrecognized name
|
|
61
|
+
assert dep.extract_constant(fc, 'q', -1) is None
|
|
62
|
+
|
|
63
|
+
# constant assigned
|
|
64
|
+
assert dep.extract_constant(fc, 'x', -1) == "test"
|
|
65
|
+
|
|
66
|
+
# expression assigned
|
|
67
|
+
assert dep.extract_constant(fc, 'y', -1) == -1
|
|
68
|
+
|
|
69
|
+
# recognized name, not assigned
|
|
70
|
+
assert dep.extract_constant(fc, 'z', -1) is None
|
|
71
|
+
|
|
72
|
+
def testFindModule(self):
|
|
73
|
+
with pytest.raises(ImportError):
|
|
74
|
+
dep.find_module('no-such.-thing')
|
|
75
|
+
with pytest.raises(ImportError):
|
|
76
|
+
dep.find_module('setuptools.non-existent')
|
|
77
|
+
f, _p, _i = dep.find_module('setuptools.tests')
|
|
78
|
+
f.close()
|
|
79
|
+
|
|
80
|
+
@needs_bytecode
|
|
81
|
+
def testModuleExtract(self):
|
|
82
|
+
from json import __version__
|
|
83
|
+
|
|
84
|
+
assert dep.get_module_constant('json', '__version__') == __version__
|
|
85
|
+
assert dep.get_module_constant('sys', 'version') == sys.version
|
|
86
|
+
assert (
|
|
87
|
+
dep.get_module_constant('setuptools.tests.test_setuptools', '__doc__')
|
|
88
|
+
== __doc__
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
@needs_bytecode
|
|
92
|
+
def testRequire(self):
|
|
93
|
+
req = Require('Json', '1.0.3', 'json')
|
|
94
|
+
|
|
95
|
+
assert req.name == 'Json'
|
|
96
|
+
assert req.module == 'json'
|
|
97
|
+
assert req.requested_version == Version('1.0.3')
|
|
98
|
+
assert req.attribute == '__version__'
|
|
99
|
+
assert req.full_name() == 'Json-1.0.3'
|
|
100
|
+
|
|
101
|
+
from json import __version__
|
|
102
|
+
|
|
103
|
+
assert str(req.get_version()) == __version__
|
|
104
|
+
assert req.version_ok('1.0.9')
|
|
105
|
+
assert not req.version_ok('0.9.1')
|
|
106
|
+
assert not req.version_ok('unknown')
|
|
107
|
+
|
|
108
|
+
assert req.is_present()
|
|
109
|
+
assert req.is_current()
|
|
110
|
+
|
|
111
|
+
req = Require('Do-what-I-mean', '1.0', 'd-w-i-m')
|
|
112
|
+
assert not req.is_present()
|
|
113
|
+
assert not req.is_current()
|
|
114
|
+
|
|
115
|
+
@needs_bytecode
|
|
116
|
+
def test_require_present(self):
|
|
117
|
+
# In #1896, this test was failing for months with the only
|
|
118
|
+
# complaint coming from test runners (not end users).
|
|
119
|
+
# TODO: Evaluate if this code is needed at all.
|
|
120
|
+
req = Require('Tests', None, 'tests', homepage="http://example.com")
|
|
121
|
+
assert req.format is None
|
|
122
|
+
assert req.attribute is None
|
|
123
|
+
assert req.requested_version is None
|
|
124
|
+
assert req.full_name() == 'Tests'
|
|
125
|
+
assert req.homepage == 'http://example.com'
|
|
126
|
+
|
|
127
|
+
from setuptools.tests import __path__
|
|
128
|
+
|
|
129
|
+
paths = [os.path.dirname(p) for p in __path__]
|
|
130
|
+
assert req.is_present(paths)
|
|
131
|
+
assert req.is_current(paths)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
class TestDistro:
|
|
135
|
+
def setup_method(self, method):
|
|
136
|
+
self.e1 = Extension('bar.ext', ['bar.c'])
|
|
137
|
+
self.e2 = Extension('c.y', ['y.c'])
|
|
138
|
+
|
|
139
|
+
self.dist = makeSetup(
|
|
140
|
+
packages=['a', 'a.b', 'a.b.c', 'b', 'c'],
|
|
141
|
+
py_modules=['b.d', 'x'],
|
|
142
|
+
ext_modules=(self.e1, self.e2),
|
|
143
|
+
package_dir={},
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
def testDistroType(self):
|
|
147
|
+
assert isinstance(self.dist, setuptools.dist.Distribution)
|
|
148
|
+
|
|
149
|
+
def testExcludePackage(self):
|
|
150
|
+
self.dist.exclude_package('a')
|
|
151
|
+
assert self.dist.packages == ['b', 'c']
|
|
152
|
+
|
|
153
|
+
self.dist.exclude_package('b')
|
|
154
|
+
assert self.dist.packages == ['c']
|
|
155
|
+
assert self.dist.py_modules == ['x']
|
|
156
|
+
assert self.dist.ext_modules == [self.e1, self.e2]
|
|
157
|
+
|
|
158
|
+
self.dist.exclude_package('c')
|
|
159
|
+
assert self.dist.packages == []
|
|
160
|
+
assert self.dist.py_modules == ['x']
|
|
161
|
+
assert self.dist.ext_modules == [self.e1]
|
|
162
|
+
|
|
163
|
+
# test removals from unspecified options
|
|
164
|
+
makeSetup().exclude_package('x')
|
|
165
|
+
|
|
166
|
+
def testIncludeExclude(self):
|
|
167
|
+
# remove an extension
|
|
168
|
+
self.dist.exclude(ext_modules=[self.e1])
|
|
169
|
+
assert self.dist.ext_modules == [self.e2]
|
|
170
|
+
|
|
171
|
+
# add it back in
|
|
172
|
+
self.dist.include(ext_modules=[self.e1])
|
|
173
|
+
assert self.dist.ext_modules == [self.e2, self.e1]
|
|
174
|
+
|
|
175
|
+
# should not add duplicate
|
|
176
|
+
self.dist.include(ext_modules=[self.e1])
|
|
177
|
+
assert self.dist.ext_modules == [self.e2, self.e1]
|
|
178
|
+
|
|
179
|
+
def testExcludePackages(self):
|
|
180
|
+
self.dist.exclude(packages=['c', 'b', 'a'])
|
|
181
|
+
assert self.dist.packages == []
|
|
182
|
+
assert self.dist.py_modules == ['x']
|
|
183
|
+
assert self.dist.ext_modules == [self.e1]
|
|
184
|
+
|
|
185
|
+
def testEmpty(self):
|
|
186
|
+
dist = makeSetup()
|
|
187
|
+
dist.include(packages=['a'], py_modules=['b'], ext_modules=[self.e2])
|
|
188
|
+
dist = makeSetup()
|
|
189
|
+
dist.exclude(packages=['a'], py_modules=['b'], ext_modules=[self.e2])
|
|
190
|
+
|
|
191
|
+
def testContents(self):
|
|
192
|
+
assert self.dist.has_contents_for('a')
|
|
193
|
+
self.dist.exclude_package('a')
|
|
194
|
+
assert not self.dist.has_contents_for('a')
|
|
195
|
+
|
|
196
|
+
assert self.dist.has_contents_for('b')
|
|
197
|
+
self.dist.exclude_package('b')
|
|
198
|
+
assert not self.dist.has_contents_for('b')
|
|
199
|
+
|
|
200
|
+
assert self.dist.has_contents_for('c')
|
|
201
|
+
self.dist.exclude_package('c')
|
|
202
|
+
assert not self.dist.has_contents_for('c')
|
|
203
|
+
|
|
204
|
+
def testInvalidIncludeExclude(self):
|
|
205
|
+
with pytest.raises(DistutilsSetupError):
|
|
206
|
+
self.dist.include(nonexistent_option='x')
|
|
207
|
+
with pytest.raises(DistutilsSetupError):
|
|
208
|
+
self.dist.exclude(nonexistent_option='x')
|
|
209
|
+
with pytest.raises(DistutilsSetupError):
|
|
210
|
+
self.dist.include(packages={'x': 'y'})
|
|
211
|
+
with pytest.raises(DistutilsSetupError):
|
|
212
|
+
self.dist.exclude(packages={'x': 'y'})
|
|
213
|
+
with pytest.raises(DistutilsSetupError):
|
|
214
|
+
self.dist.include(ext_modules={'x': 'y'})
|
|
215
|
+
with pytest.raises(DistutilsSetupError):
|
|
216
|
+
self.dist.exclude(ext_modules={'x': 'y'})
|
|
217
|
+
|
|
218
|
+
with pytest.raises(DistutilsSetupError):
|
|
219
|
+
self.dist.include(package_dir=['q'])
|
|
220
|
+
with pytest.raises(DistutilsSetupError):
|
|
221
|
+
self.dist.exclude(package_dir=['q'])
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
@pytest.fixture
|
|
225
|
+
def example_source(tmpdir):
|
|
226
|
+
tmpdir.mkdir('foo')
|
|
227
|
+
(tmpdir / 'foo/bar.py').write('')
|
|
228
|
+
(tmpdir / 'readme.txt').write('')
|
|
229
|
+
return tmpdir
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
def test_findall(example_source):
|
|
233
|
+
found = list(setuptools.findall(str(example_source)))
|
|
234
|
+
expected = ['readme.txt', 'foo/bar.py']
|
|
235
|
+
expected = [example_source.join(fn) for fn in expected]
|
|
236
|
+
assert found == expected
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
def test_findall_curdir(example_source):
|
|
240
|
+
with example_source.as_cwd():
|
|
241
|
+
found = list(setuptools.findall())
|
|
242
|
+
expected = ['readme.txt', os.path.join('foo', 'bar.py')]
|
|
243
|
+
assert found == expected
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
@pytest.fixture
|
|
247
|
+
def can_symlink(tmpdir):
|
|
248
|
+
"""
|
|
249
|
+
Skip if cannot create a symbolic link
|
|
250
|
+
"""
|
|
251
|
+
link_fn = 'link'
|
|
252
|
+
target_fn = 'target'
|
|
253
|
+
try:
|
|
254
|
+
os.symlink(target_fn, link_fn)
|
|
255
|
+
except (OSError, NotImplementedError, AttributeError):
|
|
256
|
+
pytest.skip("Cannot create symbolic links")
|
|
257
|
+
os.remove(link_fn)
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
@pytest.mark.usefixtures("can_symlink")
|
|
261
|
+
def test_findall_missing_symlink(tmpdir):
|
|
262
|
+
with tmpdir.as_cwd():
|
|
263
|
+
os.symlink('foo', 'bar')
|
|
264
|
+
found = list(setuptools.findall())
|
|
265
|
+
assert found == []
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
@pytest.mark.xfail(reason="unable to exclude tests; #4475 #3260")
|
|
269
|
+
def test_its_own_wheel_does_not_contain_tests(setuptools_wheel):
|
|
270
|
+
with ZipFile(setuptools_wheel) as zipfile:
|
|
271
|
+
contents = [f.replace(os.sep, '/') for f in zipfile.namelist()]
|
|
272
|
+
|
|
273
|
+
for member in contents:
|
|
274
|
+
assert '/tests/' not in member
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
def test_wheel_includes_cli_scripts(setuptools_wheel):
|
|
278
|
+
with ZipFile(setuptools_wheel) as zipfile:
|
|
279
|
+
contents = [f.replace(os.sep, '/') for f in zipfile.namelist()]
|
|
280
|
+
|
|
281
|
+
assert any('cli-64.exe' in member for member in contents)
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
def test_wheel_includes_vendored_metadata(setuptools_wheel):
|
|
285
|
+
with ZipFile(setuptools_wheel) as zipfile:
|
|
286
|
+
contents = [f.replace(os.sep, '/') for f in zipfile.namelist()]
|
|
287
|
+
|
|
288
|
+
assert any(
|
|
289
|
+
re.search(r'_vendor/.*\.dist-info/METADATA', member) for member in contents
|
|
290
|
+
)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import stat
|
|
2
|
+
import sys
|
|
3
|
+
from unittest.mock import Mock
|
|
4
|
+
|
|
5
|
+
from setuptools import _shutil
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def test_rmtree_readonly(monkeypatch, tmp_path):
|
|
9
|
+
"""Verify onerr works as expected"""
|
|
10
|
+
|
|
11
|
+
tmp_dir = tmp_path / "with_readonly"
|
|
12
|
+
tmp_dir.mkdir()
|
|
13
|
+
some_file = tmp_dir.joinpath("file.txt")
|
|
14
|
+
some_file.touch()
|
|
15
|
+
some_file.chmod(stat.S_IREAD)
|
|
16
|
+
|
|
17
|
+
expected_count = 1 if sys.platform.startswith("win") else 0
|
|
18
|
+
chmod_fn = Mock(wraps=_shutil.attempt_chmod_verbose)
|
|
19
|
+
monkeypatch.setattr(_shutil, "attempt_chmod_verbose", chmod_fn)
|
|
20
|
+
|
|
21
|
+
_shutil.rmtree(tmp_dir)
|
|
22
|
+
assert chmod_fn.call_count == expected_count
|
|
23
|
+
assert not tmp_dir.is_dir()
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from setuptools import unicode_utils
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def test_filesys_decode_fs_encoding_is_None(monkeypatch):
|
|
5
|
+
"""
|
|
6
|
+
Test filesys_decode does not raise TypeError when
|
|
7
|
+
getfilesystemencoding returns None.
|
|
8
|
+
"""
|
|
9
|
+
monkeypatch.setattr('sys.getfilesystemencoding', lambda: None)
|
|
10
|
+
unicode_utils.filesys_decode(b'test')
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import subprocess
|
|
3
|
+
import sys
|
|
4
|
+
from urllib.error import URLError
|
|
5
|
+
from urllib.request import urlopen
|
|
6
|
+
|
|
7
|
+
import pytest
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@pytest.fixture(autouse=True)
|
|
11
|
+
def pytest_virtualenv_works(venv):
|
|
12
|
+
"""
|
|
13
|
+
pytest_virtualenv may not work. if it doesn't, skip these
|
|
14
|
+
tests. See #1284.
|
|
15
|
+
"""
|
|
16
|
+
venv_prefix = venv.run(["python", "-c", "import sys; print(sys.prefix)"]).strip()
|
|
17
|
+
if venv_prefix == sys.prefix:
|
|
18
|
+
pytest.skip("virtualenv is broken (see pypa/setuptools#1284)")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_clean_env_install(venv_without_setuptools, setuptools_wheel):
|
|
22
|
+
"""
|
|
23
|
+
Check setuptools can be installed in a clean environment.
|
|
24
|
+
"""
|
|
25
|
+
cmd = ["python", "-m", "pip", "install", str(setuptools_wheel)]
|
|
26
|
+
venv_without_setuptools.run(cmd)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def access_pypi():
|
|
30
|
+
# Detect if tests are being run without connectivity
|
|
31
|
+
if not os.environ.get('NETWORK_REQUIRED', False): # pragma: nocover
|
|
32
|
+
try:
|
|
33
|
+
urlopen('https://pypi.org', timeout=1)
|
|
34
|
+
except URLError:
|
|
35
|
+
# No network, disable most of these tests
|
|
36
|
+
return False
|
|
37
|
+
|
|
38
|
+
return True
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@pytest.mark.skipif(
|
|
42
|
+
'platform.python_implementation() == "PyPy"',
|
|
43
|
+
reason="https://github.com/pypa/setuptools/pull/2865#issuecomment-965834995",
|
|
44
|
+
)
|
|
45
|
+
@pytest.mark.skipif(not access_pypi(), reason="no network")
|
|
46
|
+
# ^-- Even when it is not necessary to install a different version of `pip`
|
|
47
|
+
# the build process will still try to download `wheel`, see #3147 and #2986.
|
|
48
|
+
@pytest.mark.parametrize(
|
|
49
|
+
'pip_version',
|
|
50
|
+
[
|
|
51
|
+
None,
|
|
52
|
+
pytest.param(
|
|
53
|
+
'pip<20.1',
|
|
54
|
+
marks=pytest.mark.xfail(
|
|
55
|
+
'sys.version_info >= (3, 12)',
|
|
56
|
+
reason="pip 23.1.2 required for Python 3.12 and later",
|
|
57
|
+
),
|
|
58
|
+
),
|
|
59
|
+
pytest.param(
|
|
60
|
+
'pip<21',
|
|
61
|
+
marks=pytest.mark.xfail(
|
|
62
|
+
'sys.version_info >= (3, 12)',
|
|
63
|
+
reason="pip 23.1.2 required for Python 3.12 and later",
|
|
64
|
+
),
|
|
65
|
+
),
|
|
66
|
+
pytest.param(
|
|
67
|
+
'pip<22',
|
|
68
|
+
marks=pytest.mark.xfail(
|
|
69
|
+
'sys.version_info >= (3, 12)',
|
|
70
|
+
reason="pip 23.1.2 required for Python 3.12 and later",
|
|
71
|
+
),
|
|
72
|
+
),
|
|
73
|
+
pytest.param(
|
|
74
|
+
'pip<23',
|
|
75
|
+
marks=pytest.mark.xfail(
|
|
76
|
+
'sys.version_info >= (3, 12)',
|
|
77
|
+
reason="pip 23.1.2 required for Python 3.12 and later",
|
|
78
|
+
),
|
|
79
|
+
),
|
|
80
|
+
pytest.param(
|
|
81
|
+
'https://github.com/pypa/pip/archive/main.zip',
|
|
82
|
+
marks=pytest.mark.xfail(reason='#2975'),
|
|
83
|
+
),
|
|
84
|
+
],
|
|
85
|
+
)
|
|
86
|
+
def test_pip_upgrade_from_source(
|
|
87
|
+
pip_version, venv_without_setuptools, setuptools_wheel, setuptools_sdist
|
|
88
|
+
):
|
|
89
|
+
"""
|
|
90
|
+
Check pip can upgrade setuptools from source.
|
|
91
|
+
"""
|
|
92
|
+
# Install pip/wheel, in a venv without setuptools (as it
|
|
93
|
+
# should not be needed for bootstrapping from source)
|
|
94
|
+
venv = venv_without_setuptools
|
|
95
|
+
venv.run(["pip", "install", "-U", "wheel"])
|
|
96
|
+
if pip_version is not None:
|
|
97
|
+
venv.run(["python", "-m", "pip", "install", "-U", pip_version, "--retries=1"])
|
|
98
|
+
with pytest.raises(subprocess.CalledProcessError):
|
|
99
|
+
# Meta-test to make sure setuptools is not installed
|
|
100
|
+
venv.run(["python", "-c", "import setuptools"])
|
|
101
|
+
|
|
102
|
+
# Then install from wheel.
|
|
103
|
+
venv.run(["pip", "install", str(setuptools_wheel)])
|
|
104
|
+
# And finally try to upgrade from source.
|
|
105
|
+
venv.run(["pip", "install", "--no-cache-dir", "--upgrade", str(setuptools_sdist)])
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def test_no_missing_dependencies(bare_venv, request):
|
|
109
|
+
"""
|
|
110
|
+
Quick and dirty test to ensure all external dependencies are vendored.
|
|
111
|
+
"""
|
|
112
|
+
setuptools_dir = request.config.rootdir
|
|
113
|
+
bare_venv.run(['python', 'setup.py', '--help'], cwd=setuptools_dir)
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
from inspect import cleandoc
|
|
2
|
+
|
|
3
|
+
import pytest
|
|
4
|
+
|
|
5
|
+
from setuptools.warnings import SetuptoolsDeprecationWarning, SetuptoolsWarning
|
|
6
|
+
|
|
7
|
+
_EXAMPLES = {
|
|
8
|
+
"default": dict(
|
|
9
|
+
args=("Hello {x}", "\n\t{target} {v:.1f}"),
|
|
10
|
+
kwargs={"x": 5, "v": 3, "target": "World"},
|
|
11
|
+
expected="""
|
|
12
|
+
Hello 5
|
|
13
|
+
!!
|
|
14
|
+
|
|
15
|
+
********************************************************************************
|
|
16
|
+
World 3.0
|
|
17
|
+
********************************************************************************
|
|
18
|
+
|
|
19
|
+
!!
|
|
20
|
+
""",
|
|
21
|
+
),
|
|
22
|
+
"futue_due_date": dict(
|
|
23
|
+
args=("Summary", "Lorem ipsum"),
|
|
24
|
+
kwargs={"due_date": (9999, 11, 22)},
|
|
25
|
+
expected="""
|
|
26
|
+
Summary
|
|
27
|
+
!!
|
|
28
|
+
|
|
29
|
+
********************************************************************************
|
|
30
|
+
Lorem ipsum
|
|
31
|
+
|
|
32
|
+
By 9999-Nov-22, you need to update your project and remove deprecated calls
|
|
33
|
+
or your builds will no longer be supported.
|
|
34
|
+
********************************************************************************
|
|
35
|
+
|
|
36
|
+
!!
|
|
37
|
+
""",
|
|
38
|
+
),
|
|
39
|
+
"past_due_date_with_docs": dict(
|
|
40
|
+
args=("Summary", "Lorem ipsum"),
|
|
41
|
+
kwargs={"due_date": (2000, 11, 22), "see_docs": "some_page.html"},
|
|
42
|
+
expected="""
|
|
43
|
+
Summary
|
|
44
|
+
!!
|
|
45
|
+
|
|
46
|
+
********************************************************************************
|
|
47
|
+
Lorem ipsum
|
|
48
|
+
|
|
49
|
+
This deprecation is overdue, please update your project and remove deprecated
|
|
50
|
+
calls to avoid build errors in the future.
|
|
51
|
+
|
|
52
|
+
See https://setuptools.pypa.io/en/latest/some_page.html for details.
|
|
53
|
+
********************************************************************************
|
|
54
|
+
|
|
55
|
+
!!
|
|
56
|
+
""",
|
|
57
|
+
),
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
@pytest.mark.parametrize("example_name", _EXAMPLES.keys())
|
|
62
|
+
def test_formatting(monkeypatch, example_name):
|
|
63
|
+
"""
|
|
64
|
+
It should automatically handle indentation, interpolation and things like due date.
|
|
65
|
+
"""
|
|
66
|
+
args = _EXAMPLES[example_name]["args"]
|
|
67
|
+
kwargs = _EXAMPLES[example_name]["kwargs"]
|
|
68
|
+
expected = _EXAMPLES[example_name]["expected"]
|
|
69
|
+
|
|
70
|
+
monkeypatch.setenv("SETUPTOOLS_ENFORCE_DEPRECATION", "false")
|
|
71
|
+
with pytest.warns(SetuptoolsWarning) as warn_info:
|
|
72
|
+
SetuptoolsWarning.emit(*args, **kwargs)
|
|
73
|
+
assert _get_message(warn_info) == cleandoc(expected)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def test_due_date_enforcement(monkeypatch):
|
|
77
|
+
class _MyDeprecation(SetuptoolsDeprecationWarning):
|
|
78
|
+
_SUMMARY = "Summary"
|
|
79
|
+
_DETAILS = "Lorem ipsum"
|
|
80
|
+
_DUE_DATE = (2000, 11, 22)
|
|
81
|
+
_SEE_DOCS = "some_page.html"
|
|
82
|
+
|
|
83
|
+
monkeypatch.setenv("SETUPTOOLS_ENFORCE_DEPRECATION", "true")
|
|
84
|
+
with pytest.raises(SetuptoolsDeprecationWarning) as exc_info:
|
|
85
|
+
_MyDeprecation.emit()
|
|
86
|
+
|
|
87
|
+
expected = """
|
|
88
|
+
Summary
|
|
89
|
+
!!
|
|
90
|
+
|
|
91
|
+
********************************************************************************
|
|
92
|
+
Lorem ipsum
|
|
93
|
+
|
|
94
|
+
This deprecation is overdue, please update your project and remove deprecated
|
|
95
|
+
calls to avoid build errors in the future.
|
|
96
|
+
|
|
97
|
+
See https://setuptools.pypa.io/en/latest/some_page.html for details.
|
|
98
|
+
********************************************************************************
|
|
99
|
+
|
|
100
|
+
!!
|
|
101
|
+
"""
|
|
102
|
+
assert str(exc_info.value) == cleandoc(expected)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def _get_message(warn_info):
|
|
106
|
+
return next(warn.message.args[0] for warn in warn_info)
|