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,196 @@
|
|
|
1
|
+
"""Tests for distutils.command.build_py."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import sys
|
|
5
|
+
from distutils.command.build_py import build_py
|
|
6
|
+
from distutils.core import Distribution
|
|
7
|
+
from distutils.errors import DistutilsFileError
|
|
8
|
+
from distutils.tests import support
|
|
9
|
+
|
|
10
|
+
import jaraco.path
|
|
11
|
+
import pytest
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@support.combine_markers
|
|
15
|
+
class TestBuildPy(support.TempdirManager):
|
|
16
|
+
def test_package_data(self):
|
|
17
|
+
sources = self.mkdtemp()
|
|
18
|
+
jaraco.path.build(
|
|
19
|
+
{
|
|
20
|
+
'__init__.py': "# Pretend this is a package.",
|
|
21
|
+
'README.txt': 'Info about this package',
|
|
22
|
+
},
|
|
23
|
+
sources,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
destination = self.mkdtemp()
|
|
27
|
+
|
|
28
|
+
dist = Distribution({"packages": ["pkg"], "package_dir": {"pkg": sources}})
|
|
29
|
+
# script_name need not exist, it just need to be initialized
|
|
30
|
+
dist.script_name = os.path.join(sources, "setup.py")
|
|
31
|
+
dist.command_obj["build"] = support.DummyCommand(
|
|
32
|
+
force=False, build_lib=destination
|
|
33
|
+
)
|
|
34
|
+
dist.packages = ["pkg"]
|
|
35
|
+
dist.package_data = {"pkg": ["README.txt"]}
|
|
36
|
+
dist.package_dir = {"pkg": sources}
|
|
37
|
+
|
|
38
|
+
cmd = build_py(dist)
|
|
39
|
+
cmd.compile = True
|
|
40
|
+
cmd.ensure_finalized()
|
|
41
|
+
assert cmd.package_data == dist.package_data
|
|
42
|
+
|
|
43
|
+
cmd.run()
|
|
44
|
+
|
|
45
|
+
# This makes sure the list of outputs includes byte-compiled
|
|
46
|
+
# files for Python modules but not for package data files
|
|
47
|
+
# (there shouldn't *be* byte-code files for those!).
|
|
48
|
+
assert len(cmd.get_outputs()) == 3
|
|
49
|
+
pkgdest = os.path.join(destination, "pkg")
|
|
50
|
+
files = os.listdir(pkgdest)
|
|
51
|
+
pycache_dir = os.path.join(pkgdest, "__pycache__")
|
|
52
|
+
assert "__init__.py" in files
|
|
53
|
+
assert "README.txt" in files
|
|
54
|
+
if sys.dont_write_bytecode:
|
|
55
|
+
assert not os.path.exists(pycache_dir)
|
|
56
|
+
else:
|
|
57
|
+
pyc_files = os.listdir(pycache_dir)
|
|
58
|
+
assert f"__init__.{sys.implementation.cache_tag}.pyc" in pyc_files
|
|
59
|
+
|
|
60
|
+
def test_empty_package_dir(self):
|
|
61
|
+
# See bugs #1668596/#1720897
|
|
62
|
+
sources = self.mkdtemp()
|
|
63
|
+
jaraco.path.build({'__init__.py': '', 'doc': {'testfile': ''}}, sources)
|
|
64
|
+
|
|
65
|
+
os.chdir(sources)
|
|
66
|
+
dist = Distribution({
|
|
67
|
+
"packages": ["pkg"],
|
|
68
|
+
"package_dir": {"pkg": ""},
|
|
69
|
+
"package_data": {"pkg": ["doc/*"]},
|
|
70
|
+
})
|
|
71
|
+
# script_name need not exist, it just need to be initialized
|
|
72
|
+
dist.script_name = os.path.join(sources, "setup.py")
|
|
73
|
+
dist.script_args = ["build"]
|
|
74
|
+
dist.parse_command_line()
|
|
75
|
+
|
|
76
|
+
try:
|
|
77
|
+
dist.run_commands()
|
|
78
|
+
except DistutilsFileError:
|
|
79
|
+
self.fail("failed package_data test when package_dir is ''")
|
|
80
|
+
|
|
81
|
+
@pytest.mark.skipif('sys.dont_write_bytecode')
|
|
82
|
+
def test_byte_compile(self):
|
|
83
|
+
project_dir, dist = self.create_dist(py_modules=['boiledeggs'])
|
|
84
|
+
os.chdir(project_dir)
|
|
85
|
+
self.write_file('boiledeggs.py', 'import antigravity')
|
|
86
|
+
cmd = build_py(dist)
|
|
87
|
+
cmd.compile = True
|
|
88
|
+
cmd.build_lib = 'here'
|
|
89
|
+
cmd.finalize_options()
|
|
90
|
+
cmd.run()
|
|
91
|
+
|
|
92
|
+
found = os.listdir(cmd.build_lib)
|
|
93
|
+
assert sorted(found) == ['__pycache__', 'boiledeggs.py']
|
|
94
|
+
found = os.listdir(os.path.join(cmd.build_lib, '__pycache__'))
|
|
95
|
+
assert found == [f'boiledeggs.{sys.implementation.cache_tag}.pyc']
|
|
96
|
+
|
|
97
|
+
@pytest.mark.skipif('sys.dont_write_bytecode')
|
|
98
|
+
def test_byte_compile_optimized(self):
|
|
99
|
+
project_dir, dist = self.create_dist(py_modules=['boiledeggs'])
|
|
100
|
+
os.chdir(project_dir)
|
|
101
|
+
self.write_file('boiledeggs.py', 'import antigravity')
|
|
102
|
+
cmd = build_py(dist)
|
|
103
|
+
cmd.compile = False
|
|
104
|
+
cmd.optimize = 1
|
|
105
|
+
cmd.build_lib = 'here'
|
|
106
|
+
cmd.finalize_options()
|
|
107
|
+
cmd.run()
|
|
108
|
+
|
|
109
|
+
found = os.listdir(cmd.build_lib)
|
|
110
|
+
assert sorted(found) == ['__pycache__', 'boiledeggs.py']
|
|
111
|
+
found = os.listdir(os.path.join(cmd.build_lib, '__pycache__'))
|
|
112
|
+
expect = f'boiledeggs.{sys.implementation.cache_tag}.opt-1.pyc'
|
|
113
|
+
assert sorted(found) == [expect]
|
|
114
|
+
|
|
115
|
+
def test_dir_in_package_data(self):
|
|
116
|
+
"""
|
|
117
|
+
A directory in package_data should not be added to the filelist.
|
|
118
|
+
"""
|
|
119
|
+
# See bug 19286
|
|
120
|
+
sources = self.mkdtemp()
|
|
121
|
+
jaraco.path.build(
|
|
122
|
+
{
|
|
123
|
+
'pkg': {
|
|
124
|
+
'__init__.py': '',
|
|
125
|
+
'doc': {
|
|
126
|
+
'testfile': '',
|
|
127
|
+
# create a directory that could be incorrectly detected as a file
|
|
128
|
+
'otherdir': {},
|
|
129
|
+
},
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
sources,
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
os.chdir(sources)
|
|
136
|
+
dist = Distribution({"packages": ["pkg"], "package_data": {"pkg": ["doc/*"]}})
|
|
137
|
+
# script_name need not exist, it just need to be initialized
|
|
138
|
+
dist.script_name = os.path.join(sources, "setup.py")
|
|
139
|
+
dist.script_args = ["build"]
|
|
140
|
+
dist.parse_command_line()
|
|
141
|
+
|
|
142
|
+
try:
|
|
143
|
+
dist.run_commands()
|
|
144
|
+
except DistutilsFileError:
|
|
145
|
+
self.fail("failed package_data when data dir includes a dir")
|
|
146
|
+
|
|
147
|
+
def test_dont_write_bytecode(self, caplog):
|
|
148
|
+
# makes sure byte_compile is not used
|
|
149
|
+
dist = self.create_dist()[1]
|
|
150
|
+
cmd = build_py(dist)
|
|
151
|
+
cmd.compile = True
|
|
152
|
+
cmd.optimize = 1
|
|
153
|
+
|
|
154
|
+
old_dont_write_bytecode = sys.dont_write_bytecode
|
|
155
|
+
sys.dont_write_bytecode = True
|
|
156
|
+
try:
|
|
157
|
+
cmd.byte_compile([])
|
|
158
|
+
finally:
|
|
159
|
+
sys.dont_write_bytecode = old_dont_write_bytecode
|
|
160
|
+
|
|
161
|
+
assert 'byte-compiling is disabled' in caplog.records[0].message
|
|
162
|
+
|
|
163
|
+
def test_namespace_package_does_not_warn(self, caplog):
|
|
164
|
+
"""
|
|
165
|
+
Originally distutils implementation did not account for PEP 420
|
|
166
|
+
and included warns for package directories that did not contain
|
|
167
|
+
``__init__.py`` files.
|
|
168
|
+
After the acceptance of PEP 420, these warnings don't make more sense
|
|
169
|
+
so we want to ensure there are not displayed to not confuse the users.
|
|
170
|
+
"""
|
|
171
|
+
# Create a fake project structure with a package namespace:
|
|
172
|
+
tmp = self.mkdtemp()
|
|
173
|
+
jaraco.path.build({'ns': {'pkg': {'module.py': ''}}}, tmp)
|
|
174
|
+
os.chdir(tmp)
|
|
175
|
+
|
|
176
|
+
# Configure the package:
|
|
177
|
+
attrs = {
|
|
178
|
+
"name": "ns.pkg",
|
|
179
|
+
"packages": ["ns", "ns.pkg"],
|
|
180
|
+
"script_name": "setup.py",
|
|
181
|
+
}
|
|
182
|
+
dist = Distribution(attrs)
|
|
183
|
+
|
|
184
|
+
# Run code paths that would trigger the trap:
|
|
185
|
+
cmd = dist.get_command_obj("build_py")
|
|
186
|
+
cmd.finalize_options()
|
|
187
|
+
modules = cmd.find_all_modules()
|
|
188
|
+
assert len(modules) == 1
|
|
189
|
+
module_path = modules[0][-1]
|
|
190
|
+
assert module_path.replace(os.sep, "/") == "ns/pkg/module.py"
|
|
191
|
+
|
|
192
|
+
cmd.run()
|
|
193
|
+
|
|
194
|
+
assert not any(
|
|
195
|
+
"package init file" in msg and "not found" in msg for msg in caplog.messages
|
|
196
|
+
)
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"""Tests for distutils.command.build_scripts."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import textwrap
|
|
5
|
+
from distutils import sysconfig
|
|
6
|
+
from distutils.command.build_scripts import build_scripts
|
|
7
|
+
from distutils.core import Distribution
|
|
8
|
+
from distutils.tests import support
|
|
9
|
+
|
|
10
|
+
import jaraco.path
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class TestBuildScripts(support.TempdirManager):
|
|
14
|
+
def test_default_settings(self):
|
|
15
|
+
cmd = self.get_build_scripts_cmd("/foo/bar", [])
|
|
16
|
+
assert not cmd.force
|
|
17
|
+
assert cmd.build_dir is None
|
|
18
|
+
|
|
19
|
+
cmd.finalize_options()
|
|
20
|
+
|
|
21
|
+
assert cmd.force
|
|
22
|
+
assert cmd.build_dir == "/foo/bar"
|
|
23
|
+
|
|
24
|
+
def test_build(self):
|
|
25
|
+
source = self.mkdtemp()
|
|
26
|
+
target = self.mkdtemp()
|
|
27
|
+
expected = self.write_sample_scripts(source)
|
|
28
|
+
|
|
29
|
+
cmd = self.get_build_scripts_cmd(
|
|
30
|
+
target, [os.path.join(source, fn) for fn in expected]
|
|
31
|
+
)
|
|
32
|
+
cmd.finalize_options()
|
|
33
|
+
cmd.run()
|
|
34
|
+
|
|
35
|
+
built = os.listdir(target)
|
|
36
|
+
for name in expected:
|
|
37
|
+
assert name in built
|
|
38
|
+
|
|
39
|
+
def get_build_scripts_cmd(self, target, scripts):
|
|
40
|
+
import sys
|
|
41
|
+
|
|
42
|
+
dist = Distribution()
|
|
43
|
+
dist.scripts = scripts
|
|
44
|
+
dist.command_obj["build"] = support.DummyCommand(
|
|
45
|
+
build_scripts=target, force=True, executable=sys.executable
|
|
46
|
+
)
|
|
47
|
+
return build_scripts(dist)
|
|
48
|
+
|
|
49
|
+
@staticmethod
|
|
50
|
+
def write_sample_scripts(dir):
|
|
51
|
+
spec = {
|
|
52
|
+
'script1.py': textwrap.dedent("""
|
|
53
|
+
#! /usr/bin/env python2.3
|
|
54
|
+
# bogus script w/ Python sh-bang
|
|
55
|
+
pass
|
|
56
|
+
""").lstrip(),
|
|
57
|
+
'script2.py': textwrap.dedent("""
|
|
58
|
+
#!/usr/bin/python
|
|
59
|
+
# bogus script w/ Python sh-bang
|
|
60
|
+
pass
|
|
61
|
+
""").lstrip(),
|
|
62
|
+
'shell.sh': textwrap.dedent("""
|
|
63
|
+
#!/bin/sh
|
|
64
|
+
# bogus shell script w/ sh-bang
|
|
65
|
+
exit 0
|
|
66
|
+
""").lstrip(),
|
|
67
|
+
}
|
|
68
|
+
jaraco.path.build(spec, dir)
|
|
69
|
+
return list(spec)
|
|
70
|
+
|
|
71
|
+
def test_version_int(self):
|
|
72
|
+
source = self.mkdtemp()
|
|
73
|
+
target = self.mkdtemp()
|
|
74
|
+
expected = self.write_sample_scripts(source)
|
|
75
|
+
|
|
76
|
+
cmd = self.get_build_scripts_cmd(
|
|
77
|
+
target, [os.path.join(source, fn) for fn in expected]
|
|
78
|
+
)
|
|
79
|
+
cmd.finalize_options()
|
|
80
|
+
|
|
81
|
+
# https://bugs.python.org/issue4524
|
|
82
|
+
#
|
|
83
|
+
# On linux-g++-32 with command line `./configure --enable-ipv6
|
|
84
|
+
# --with-suffix=3`, python is compiled okay but the build scripts
|
|
85
|
+
# failed when writing the name of the executable
|
|
86
|
+
old = sysconfig.get_config_vars().get('VERSION')
|
|
87
|
+
sysconfig._config_vars['VERSION'] = 4
|
|
88
|
+
try:
|
|
89
|
+
cmd.run()
|
|
90
|
+
finally:
|
|
91
|
+
if old is not None:
|
|
92
|
+
sysconfig._config_vars['VERSION'] = old
|
|
93
|
+
|
|
94
|
+
built = os.listdir(target)
|
|
95
|
+
for name in expected:
|
|
96
|
+
assert name in built
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"""Tests for distutils.command.check."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import textwrap
|
|
5
|
+
from distutils.command.check import check
|
|
6
|
+
from distutils.errors import DistutilsSetupError
|
|
7
|
+
from distutils.tests import support
|
|
8
|
+
|
|
9
|
+
import pytest
|
|
10
|
+
|
|
11
|
+
try:
|
|
12
|
+
import pygments
|
|
13
|
+
except ImportError:
|
|
14
|
+
pygments = None
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
HERE = os.path.dirname(__file__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@support.combine_markers
|
|
21
|
+
class TestCheck(support.TempdirManager):
|
|
22
|
+
def _run(self, metadata=None, cwd=None, **options):
|
|
23
|
+
if metadata is None:
|
|
24
|
+
metadata = {}
|
|
25
|
+
if cwd is not None:
|
|
26
|
+
old_dir = os.getcwd()
|
|
27
|
+
os.chdir(cwd)
|
|
28
|
+
pkg_info, dist = self.create_dist(**metadata)
|
|
29
|
+
cmd = check(dist)
|
|
30
|
+
cmd.initialize_options()
|
|
31
|
+
for name, value in options.items():
|
|
32
|
+
setattr(cmd, name, value)
|
|
33
|
+
cmd.ensure_finalized()
|
|
34
|
+
cmd.run()
|
|
35
|
+
if cwd is not None:
|
|
36
|
+
os.chdir(old_dir)
|
|
37
|
+
return cmd
|
|
38
|
+
|
|
39
|
+
def test_check_metadata(self):
|
|
40
|
+
# let's run the command with no metadata at all
|
|
41
|
+
# by default, check is checking the metadata
|
|
42
|
+
# should have some warnings
|
|
43
|
+
cmd = self._run()
|
|
44
|
+
assert cmd._warnings == 1
|
|
45
|
+
|
|
46
|
+
# now let's add the required fields
|
|
47
|
+
# and run it again, to make sure we don't get
|
|
48
|
+
# any warning anymore
|
|
49
|
+
metadata = {
|
|
50
|
+
'url': 'xxx',
|
|
51
|
+
'author': 'xxx',
|
|
52
|
+
'author_email': 'xxx',
|
|
53
|
+
'name': 'xxx',
|
|
54
|
+
'version': 'xxx',
|
|
55
|
+
}
|
|
56
|
+
cmd = self._run(metadata)
|
|
57
|
+
assert cmd._warnings == 0
|
|
58
|
+
|
|
59
|
+
# now with the strict mode, we should
|
|
60
|
+
# get an error if there are missing metadata
|
|
61
|
+
with pytest.raises(DistutilsSetupError):
|
|
62
|
+
self._run({}, **{'strict': 1})
|
|
63
|
+
|
|
64
|
+
# and of course, no error when all metadata are present
|
|
65
|
+
cmd = self._run(metadata, strict=True)
|
|
66
|
+
assert cmd._warnings == 0
|
|
67
|
+
|
|
68
|
+
# now a test with non-ASCII characters
|
|
69
|
+
metadata = {
|
|
70
|
+
'url': 'xxx',
|
|
71
|
+
'author': '\u00c9ric',
|
|
72
|
+
'author_email': 'xxx',
|
|
73
|
+
'name': 'xxx',
|
|
74
|
+
'version': 'xxx',
|
|
75
|
+
'description': 'Something about esszet \u00df',
|
|
76
|
+
'long_description': 'More things about esszet \u00df',
|
|
77
|
+
}
|
|
78
|
+
cmd = self._run(metadata)
|
|
79
|
+
assert cmd._warnings == 0
|
|
80
|
+
|
|
81
|
+
def test_check_author_maintainer(self):
|
|
82
|
+
for kind in ("author", "maintainer"):
|
|
83
|
+
# ensure no warning when author_email or maintainer_email is given
|
|
84
|
+
# (the spec allows these fields to take the form "Name <email>")
|
|
85
|
+
metadata = {
|
|
86
|
+
'url': 'xxx',
|
|
87
|
+
kind + '_email': 'Name <name@email.com>',
|
|
88
|
+
'name': 'xxx',
|
|
89
|
+
'version': 'xxx',
|
|
90
|
+
}
|
|
91
|
+
cmd = self._run(metadata)
|
|
92
|
+
assert cmd._warnings == 0
|
|
93
|
+
|
|
94
|
+
# the check should not warn if only email is given
|
|
95
|
+
metadata[kind + '_email'] = 'name@email.com'
|
|
96
|
+
cmd = self._run(metadata)
|
|
97
|
+
assert cmd._warnings == 0
|
|
98
|
+
|
|
99
|
+
# the check should not warn if only the name is given
|
|
100
|
+
metadata[kind] = "Name"
|
|
101
|
+
del metadata[kind + '_email']
|
|
102
|
+
cmd = self._run(metadata)
|
|
103
|
+
assert cmd._warnings == 0
|
|
104
|
+
|
|
105
|
+
def test_check_document(self):
|
|
106
|
+
pytest.importorskip('docutils')
|
|
107
|
+
pkg_info, dist = self.create_dist()
|
|
108
|
+
cmd = check(dist)
|
|
109
|
+
|
|
110
|
+
# let's see if it detects broken rest
|
|
111
|
+
broken_rest = 'title\n===\n\ntest'
|
|
112
|
+
msgs = cmd._check_rst_data(broken_rest)
|
|
113
|
+
assert len(msgs) == 1
|
|
114
|
+
|
|
115
|
+
# and non-broken rest
|
|
116
|
+
rest = 'title\n=====\n\ntest'
|
|
117
|
+
msgs = cmd._check_rst_data(rest)
|
|
118
|
+
assert len(msgs) == 0
|
|
119
|
+
|
|
120
|
+
def test_check_restructuredtext(self):
|
|
121
|
+
pytest.importorskip('docutils')
|
|
122
|
+
# let's see if it detects broken rest in long_description
|
|
123
|
+
broken_rest = 'title\n===\n\ntest'
|
|
124
|
+
pkg_info, dist = self.create_dist(long_description=broken_rest)
|
|
125
|
+
cmd = check(dist)
|
|
126
|
+
cmd.check_restructuredtext()
|
|
127
|
+
assert cmd._warnings == 1
|
|
128
|
+
|
|
129
|
+
# let's see if we have an error with strict=True
|
|
130
|
+
metadata = {
|
|
131
|
+
'url': 'xxx',
|
|
132
|
+
'author': 'xxx',
|
|
133
|
+
'author_email': 'xxx',
|
|
134
|
+
'name': 'xxx',
|
|
135
|
+
'version': 'xxx',
|
|
136
|
+
'long_description': broken_rest,
|
|
137
|
+
}
|
|
138
|
+
with pytest.raises(DistutilsSetupError):
|
|
139
|
+
self._run(metadata, **{'strict': 1, 'restructuredtext': 1})
|
|
140
|
+
|
|
141
|
+
# and non-broken rest, including a non-ASCII character to test #12114
|
|
142
|
+
metadata['long_description'] = 'title\n=====\n\ntest \u00df'
|
|
143
|
+
cmd = self._run(metadata, strict=True, restructuredtext=True)
|
|
144
|
+
assert cmd._warnings == 0
|
|
145
|
+
|
|
146
|
+
# check that includes work to test #31292
|
|
147
|
+
metadata['long_description'] = 'title\n=====\n\n.. include:: includetest.rst'
|
|
148
|
+
cmd = self._run(metadata, cwd=HERE, strict=True, restructuredtext=True)
|
|
149
|
+
assert cmd._warnings == 0
|
|
150
|
+
|
|
151
|
+
def test_check_restructuredtext_with_syntax_highlight(self):
|
|
152
|
+
pytest.importorskip('docutils')
|
|
153
|
+
# Don't fail if there is a `code` or `code-block` directive
|
|
154
|
+
|
|
155
|
+
example_rst_docs = [
|
|
156
|
+
textwrap.dedent(
|
|
157
|
+
"""\
|
|
158
|
+
Here's some code:
|
|
159
|
+
|
|
160
|
+
.. code:: python
|
|
161
|
+
|
|
162
|
+
def foo():
|
|
163
|
+
pass
|
|
164
|
+
"""
|
|
165
|
+
),
|
|
166
|
+
textwrap.dedent(
|
|
167
|
+
"""\
|
|
168
|
+
Here's some code:
|
|
169
|
+
|
|
170
|
+
.. code-block:: python
|
|
171
|
+
|
|
172
|
+
def foo():
|
|
173
|
+
pass
|
|
174
|
+
"""
|
|
175
|
+
),
|
|
176
|
+
]
|
|
177
|
+
|
|
178
|
+
for rest_with_code in example_rst_docs:
|
|
179
|
+
pkg_info, dist = self.create_dist(long_description=rest_with_code)
|
|
180
|
+
cmd = check(dist)
|
|
181
|
+
cmd.check_restructuredtext()
|
|
182
|
+
msgs = cmd._check_rst_data(rest_with_code)
|
|
183
|
+
if pygments is not None:
|
|
184
|
+
assert len(msgs) == 0
|
|
185
|
+
else:
|
|
186
|
+
assert len(msgs) == 1
|
|
187
|
+
assert (
|
|
188
|
+
str(msgs[0][1])
|
|
189
|
+
== 'Cannot analyze code. Pygments package not found.'
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
def test_check_all(self):
|
|
193
|
+
with pytest.raises(DistutilsSetupError):
|
|
194
|
+
self._run({}, **{'strict': 1, 'restructuredtext': 1})
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""Tests for distutils.command.clean."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
from distutils.command.clean import clean
|
|
5
|
+
from distutils.tests import support
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class TestClean(support.TempdirManager):
|
|
9
|
+
def test_simple_run(self):
|
|
10
|
+
pkg_dir, dist = self.create_dist()
|
|
11
|
+
cmd = clean(dist)
|
|
12
|
+
|
|
13
|
+
# let's add some elements clean should remove
|
|
14
|
+
dirs = [
|
|
15
|
+
(d, os.path.join(pkg_dir, d))
|
|
16
|
+
for d in (
|
|
17
|
+
'build_temp',
|
|
18
|
+
'build_lib',
|
|
19
|
+
'bdist_base',
|
|
20
|
+
'build_scripts',
|
|
21
|
+
'build_base',
|
|
22
|
+
)
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
for name, path in dirs:
|
|
26
|
+
os.mkdir(path)
|
|
27
|
+
setattr(cmd, name, path)
|
|
28
|
+
if name == 'build_base':
|
|
29
|
+
continue
|
|
30
|
+
for f in ('one', 'two', 'three'):
|
|
31
|
+
self.write_file(os.path.join(path, f))
|
|
32
|
+
|
|
33
|
+
# let's run the command
|
|
34
|
+
cmd.all = 1
|
|
35
|
+
cmd.ensure_finalized()
|
|
36
|
+
cmd.run()
|
|
37
|
+
|
|
38
|
+
# make sure the files where removed
|
|
39
|
+
for _name, path in dirs:
|
|
40
|
+
assert not os.path.exists(path), f'{path} was not removed'
|
|
41
|
+
|
|
42
|
+
# let's run the command again (should spit warnings but succeed)
|
|
43
|
+
cmd.all = 1
|
|
44
|
+
cmd.ensure_finalized()
|
|
45
|
+
cmd.run()
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"""Tests for distutils.cmd."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
from distutils import debug
|
|
5
|
+
from distutils.cmd import Command
|
|
6
|
+
from distutils.dist import Distribution
|
|
7
|
+
from distutils.errors import DistutilsOptionError
|
|
8
|
+
|
|
9
|
+
import pytest
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class MyCmd(Command):
|
|
13
|
+
def initialize_options(self):
|
|
14
|
+
pass
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.fixture
|
|
18
|
+
def cmd(request):
|
|
19
|
+
return MyCmd(Distribution())
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class TestCommand:
|
|
23
|
+
def test_ensure_string_list(self, cmd):
|
|
24
|
+
cmd.not_string_list = ['one', 2, 'three']
|
|
25
|
+
cmd.yes_string_list = ['one', 'two', 'three']
|
|
26
|
+
cmd.not_string_list2 = object()
|
|
27
|
+
cmd.yes_string_list2 = 'ok'
|
|
28
|
+
cmd.ensure_string_list('yes_string_list')
|
|
29
|
+
cmd.ensure_string_list('yes_string_list2')
|
|
30
|
+
|
|
31
|
+
with pytest.raises(DistutilsOptionError):
|
|
32
|
+
cmd.ensure_string_list('not_string_list')
|
|
33
|
+
|
|
34
|
+
with pytest.raises(DistutilsOptionError):
|
|
35
|
+
cmd.ensure_string_list('not_string_list2')
|
|
36
|
+
|
|
37
|
+
cmd.option1 = 'ok,dok'
|
|
38
|
+
cmd.ensure_string_list('option1')
|
|
39
|
+
assert cmd.option1 == ['ok', 'dok']
|
|
40
|
+
|
|
41
|
+
cmd.option2 = ['xxx', 'www']
|
|
42
|
+
cmd.ensure_string_list('option2')
|
|
43
|
+
|
|
44
|
+
cmd.option3 = ['ok', 2]
|
|
45
|
+
with pytest.raises(DistutilsOptionError):
|
|
46
|
+
cmd.ensure_string_list('option3')
|
|
47
|
+
|
|
48
|
+
def test_make_file(self, cmd):
|
|
49
|
+
# making sure it raises when infiles is not a string or a list/tuple
|
|
50
|
+
with pytest.raises(TypeError):
|
|
51
|
+
cmd.make_file(infiles=True, outfile='', func='func', args=())
|
|
52
|
+
|
|
53
|
+
# making sure execute gets called properly
|
|
54
|
+
def _execute(func, args, exec_msg, level):
|
|
55
|
+
assert exec_msg == 'generating out from in'
|
|
56
|
+
|
|
57
|
+
cmd.force = True
|
|
58
|
+
cmd.execute = _execute
|
|
59
|
+
cmd.make_file(infiles='in', outfile='out', func='func', args=())
|
|
60
|
+
|
|
61
|
+
def test_dump_options(self, cmd):
|
|
62
|
+
msgs = []
|
|
63
|
+
|
|
64
|
+
def _announce(msg, level):
|
|
65
|
+
msgs.append(msg)
|
|
66
|
+
|
|
67
|
+
cmd.announce = _announce
|
|
68
|
+
cmd.option1 = 1
|
|
69
|
+
cmd.option2 = 1
|
|
70
|
+
cmd.user_options = [('option1', '', ''), ('option2', '', '')]
|
|
71
|
+
cmd.dump_options()
|
|
72
|
+
|
|
73
|
+
wanted = ["command options for 'MyCmd':", ' option1 = 1', ' option2 = 1']
|
|
74
|
+
assert msgs == wanted
|
|
75
|
+
|
|
76
|
+
def test_ensure_string(self, cmd):
|
|
77
|
+
cmd.option1 = 'ok'
|
|
78
|
+
cmd.ensure_string('option1')
|
|
79
|
+
|
|
80
|
+
cmd.option2 = None
|
|
81
|
+
cmd.ensure_string('option2', 'xxx')
|
|
82
|
+
assert hasattr(cmd, 'option2')
|
|
83
|
+
|
|
84
|
+
cmd.option3 = 1
|
|
85
|
+
with pytest.raises(DistutilsOptionError):
|
|
86
|
+
cmd.ensure_string('option3')
|
|
87
|
+
|
|
88
|
+
def test_ensure_filename(self, cmd):
|
|
89
|
+
cmd.option1 = __file__
|
|
90
|
+
cmd.ensure_filename('option1')
|
|
91
|
+
cmd.option2 = 'xxx'
|
|
92
|
+
with pytest.raises(DistutilsOptionError):
|
|
93
|
+
cmd.ensure_filename('option2')
|
|
94
|
+
|
|
95
|
+
def test_ensure_dirname(self, cmd):
|
|
96
|
+
cmd.option1 = os.path.dirname(__file__) or os.curdir
|
|
97
|
+
cmd.ensure_dirname('option1')
|
|
98
|
+
cmd.option2 = 'xxx'
|
|
99
|
+
with pytest.raises(DistutilsOptionError):
|
|
100
|
+
cmd.ensure_dirname('option2')
|
|
101
|
+
|
|
102
|
+
def test_debug_print(self, cmd, capsys, monkeypatch):
|
|
103
|
+
cmd.debug_print('xxx')
|
|
104
|
+
assert capsys.readouterr().out == ''
|
|
105
|
+
monkeypatch.setattr(debug, 'DEBUG', True)
|
|
106
|
+
cmd.debug_print('xxx')
|
|
107
|
+
assert capsys.readouterr().out == 'xxx\n'
|