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,20 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
|
|
3
|
+
import pytest
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@pytest.mark.uses_network
|
|
7
|
+
def test_pbr_integration(pbr_package, venv):
|
|
8
|
+
"""Ensure pbr packages install."""
|
|
9
|
+
cmd = [
|
|
10
|
+
'python',
|
|
11
|
+
'-m',
|
|
12
|
+
'pip',
|
|
13
|
+
'-v',
|
|
14
|
+
'install',
|
|
15
|
+
'--no-build-isolation',
|
|
16
|
+
pbr_package,
|
|
17
|
+
]
|
|
18
|
+
venv.run(cmd, stderr=subprocess.STDOUT)
|
|
19
|
+
out = venv.run(["python", "-c", "import mypkg.hello"])
|
|
20
|
+
assert "Hello world!" in out
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
# https://github.com/python/mypy/issues/16936
|
|
2
|
+
# mypy: disable-error-code="has-type"
|
|
3
|
+
"""Integration tests for setuptools that focus on building packages via pip.
|
|
4
|
+
|
|
5
|
+
The idea behind these tests is not to exhaustively check all the possible
|
|
6
|
+
combinations of packages, operating systems, supporting libraries, etc, but
|
|
7
|
+
rather check a limited number of popular packages and how they interact with
|
|
8
|
+
the exposed public API. This way if any change in API is introduced, we hope to
|
|
9
|
+
identify backward compatibility problems before publishing a release.
|
|
10
|
+
|
|
11
|
+
The number of tested packages is purposefully kept small, to minimise duration
|
|
12
|
+
and the associated maintenance cost (changes in the way these packages define
|
|
13
|
+
their build process may require changes in the tests).
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
import json
|
|
17
|
+
import os
|
|
18
|
+
import shutil
|
|
19
|
+
import sys
|
|
20
|
+
from enum import Enum
|
|
21
|
+
from glob import glob
|
|
22
|
+
from hashlib import md5
|
|
23
|
+
from urllib.request import urlopen
|
|
24
|
+
|
|
25
|
+
import pytest
|
|
26
|
+
from packaging.requirements import Requirement
|
|
27
|
+
|
|
28
|
+
from .helpers import Archive, run
|
|
29
|
+
|
|
30
|
+
pytestmark = pytest.mark.integration
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
(LATEST,) = Enum("v", "LATEST") # type: ignore[misc] # https://github.com/python/mypy/issues/16936
|
|
34
|
+
"""Default version to be checked"""
|
|
35
|
+
# There are positive and negative aspects of checking the latest version of the
|
|
36
|
+
# packages.
|
|
37
|
+
# The main positive aspect is that the latest version might have already
|
|
38
|
+
# removed the use of APIs deprecated in previous releases of setuptools.
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# Packages to be tested:
|
|
42
|
+
# (Please notice the test environment cannot support EVERY library required for
|
|
43
|
+
# compiling binary extensions. In Ubuntu/Debian nomenclature, we only assume
|
|
44
|
+
# that `build-essential`, `gfortran` and `libopenblas-dev` are installed,
|
|
45
|
+
# due to their relevance to the numerical/scientific programming ecosystem)
|
|
46
|
+
EXAMPLES = [
|
|
47
|
+
("pip", LATEST), # just in case...
|
|
48
|
+
("pytest", LATEST), # uses setuptools_scm
|
|
49
|
+
("mypy", LATEST), # custom build_py + ext_modules
|
|
50
|
+
# --- Popular packages: https://hugovk.github.io/top-pypi-packages/ ---
|
|
51
|
+
("botocore", LATEST),
|
|
52
|
+
("kiwisolver", LATEST), # build_ext
|
|
53
|
+
("brotli", LATEST), # not in the list but used by urllib3
|
|
54
|
+
("pyyaml", LATEST), # cython + custom build_ext + custom distclass
|
|
55
|
+
("charset-normalizer", LATEST), # uses mypyc, used by aiohttp
|
|
56
|
+
("protobuf", LATEST),
|
|
57
|
+
# ("requests", LATEST), # XXX: https://github.com/psf/requests/pull/6920
|
|
58
|
+
("celery", LATEST),
|
|
59
|
+
# When adding packages to this list, make sure they expose a `__version__`
|
|
60
|
+
# attribute, or modify the tests below
|
|
61
|
+
]
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
# Some packages have "optional" dependencies that modify their build behaviour
|
|
65
|
+
# and are not listed in pyproject.toml, others still use `setup_requires`
|
|
66
|
+
EXTRA_BUILD_DEPS = {
|
|
67
|
+
"pyyaml": ("Cython<3.0",), # constraint to avoid errors
|
|
68
|
+
"charset-normalizer": ("mypy>=1.4.1",), # no pyproject.toml available
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
EXTRA_ENV_VARS = {
|
|
72
|
+
"pyyaml": {"PYYAML_FORCE_CYTHON": "1"},
|
|
73
|
+
"charset-normalizer": {"CHARSET_NORMALIZER_USE_MYPYC": "1"},
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
IMPORT_NAME = {
|
|
77
|
+
"pyyaml": "yaml",
|
|
78
|
+
"protobuf": "google.protobuf",
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
VIRTUALENV = (sys.executable, "-m", "virtualenv")
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
# By default, pip will try to build packages in isolation (PEP 517), which
|
|
86
|
+
# means it will download the previous stable version of setuptools.
|
|
87
|
+
# `pip` flags can avoid that (the version of setuptools under test
|
|
88
|
+
# should be the one to be used)
|
|
89
|
+
INSTALL_OPTIONS = (
|
|
90
|
+
"--ignore-installed",
|
|
91
|
+
"--no-build-isolation",
|
|
92
|
+
# Omit "--no-binary :all:" the sdist is supplied directly.
|
|
93
|
+
# Allows dependencies as wheels.
|
|
94
|
+
)
|
|
95
|
+
# The downside of `--no-build-isolation` is that pip will not download build
|
|
96
|
+
# dependencies. The test script will have to also handle that.
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
@pytest.fixture
|
|
100
|
+
def venv_python(tmp_path):
|
|
101
|
+
run([*VIRTUALENV, str(tmp_path / ".venv")])
|
|
102
|
+
possible_path = (str(p.parent) for p in tmp_path.glob(".venv/*/python*"))
|
|
103
|
+
return shutil.which("python", path=os.pathsep.join(possible_path))
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
@pytest.fixture(autouse=True)
|
|
107
|
+
def _prepare(tmp_path, venv_python, monkeypatch):
|
|
108
|
+
download_path = os.getenv("DOWNLOAD_PATH", str(tmp_path))
|
|
109
|
+
os.makedirs(download_path, exist_ok=True)
|
|
110
|
+
|
|
111
|
+
# Environment vars used for building some of the packages
|
|
112
|
+
monkeypatch.setenv("USE_MYPYC", "1")
|
|
113
|
+
|
|
114
|
+
yield
|
|
115
|
+
|
|
116
|
+
# Let's provide the maximum amount of information possible in the case
|
|
117
|
+
# it is necessary to debug the tests directly from the CI logs.
|
|
118
|
+
print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
|
|
119
|
+
print("Temporary directory:")
|
|
120
|
+
map(print, tmp_path.glob("*"))
|
|
121
|
+
print("Virtual environment:")
|
|
122
|
+
run([venv_python, "-m", "pip", "freeze"])
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
@pytest.mark.parametrize(("package", "version"), EXAMPLES)
|
|
126
|
+
@pytest.mark.uses_network
|
|
127
|
+
def test_install_sdist(package, version, tmp_path, venv_python, setuptools_wheel):
|
|
128
|
+
venv_pip = (venv_python, "-m", "pip")
|
|
129
|
+
sdist = retrieve_sdist(package, version, tmp_path)
|
|
130
|
+
deps = build_deps(package, sdist)
|
|
131
|
+
if deps:
|
|
132
|
+
print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
|
|
133
|
+
print("Dependencies:", deps)
|
|
134
|
+
run([*venv_pip, "install", *deps])
|
|
135
|
+
|
|
136
|
+
# Use a virtualenv to simulate PEP 517 isolation
|
|
137
|
+
# but install fresh setuptools wheel to ensure the version under development
|
|
138
|
+
env = EXTRA_ENV_VARS.get(package, {})
|
|
139
|
+
run([*venv_pip, "install", "--force-reinstall", setuptools_wheel])
|
|
140
|
+
run([*venv_pip, "install", *INSTALL_OPTIONS, sdist], env)
|
|
141
|
+
|
|
142
|
+
# Execute a simple script to make sure the package was installed correctly
|
|
143
|
+
pkg = IMPORT_NAME.get(package, package).replace("-", "_")
|
|
144
|
+
script = f"import {pkg}; print(getattr({pkg}, '__version__', 0))"
|
|
145
|
+
run([venv_python, "-c", script])
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
# ---- Helper Functions ----
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def retrieve_sdist(package, version, tmp_path):
|
|
152
|
+
"""Either use cached sdist file or download it from PyPI"""
|
|
153
|
+
# `pip download` cannot be used due to
|
|
154
|
+
# https://github.com/pypa/pip/issues/1884
|
|
155
|
+
# https://discuss.python.org/t/pep-625-file-name-of-a-source-distribution/4686
|
|
156
|
+
# We have to find the correct distribution file and download it
|
|
157
|
+
download_path = os.getenv("DOWNLOAD_PATH", str(tmp_path))
|
|
158
|
+
dist = retrieve_pypi_sdist_metadata(package, version)
|
|
159
|
+
|
|
160
|
+
# Remove old files to prevent cache to grow indefinitely
|
|
161
|
+
for file in glob(os.path.join(download_path, f"{package}*")):
|
|
162
|
+
if dist["filename"] != file:
|
|
163
|
+
os.unlink(file)
|
|
164
|
+
|
|
165
|
+
dist_file = os.path.join(download_path, dist["filename"])
|
|
166
|
+
if not os.path.exists(dist_file):
|
|
167
|
+
download(dist["url"], dist_file, dist["md5_digest"])
|
|
168
|
+
return dist_file
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def retrieve_pypi_sdist_metadata(package, version):
|
|
172
|
+
# https://warehouse.pypa.io/api-reference/json.html
|
|
173
|
+
id_ = package if version is LATEST else f"{package}/{version}"
|
|
174
|
+
with urlopen(f"https://pypi.org/pypi/{id_}/json") as f:
|
|
175
|
+
metadata = json.load(f)
|
|
176
|
+
|
|
177
|
+
if metadata["info"]["yanked"]:
|
|
178
|
+
raise ValueError(f"Release for {package} {version} was yanked")
|
|
179
|
+
|
|
180
|
+
version = metadata["info"]["version"]
|
|
181
|
+
release = metadata["releases"][version] if version is LATEST else metadata["urls"]
|
|
182
|
+
(sdist,) = filter(lambda d: d["packagetype"] == "sdist", release)
|
|
183
|
+
return sdist
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def download(url, dest, md5_digest):
|
|
187
|
+
with urlopen(url) as f:
|
|
188
|
+
data = f.read()
|
|
189
|
+
|
|
190
|
+
assert md5(data).hexdigest() == md5_digest
|
|
191
|
+
|
|
192
|
+
with open(dest, "wb") as f:
|
|
193
|
+
f.write(data)
|
|
194
|
+
|
|
195
|
+
assert os.path.exists(dest)
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
def build_deps(package, sdist_file):
|
|
199
|
+
"""Find out what are the build dependencies for a package.
|
|
200
|
+
|
|
201
|
+
"Manually" install them, since pip will not install build
|
|
202
|
+
deps with `--no-build-isolation`.
|
|
203
|
+
"""
|
|
204
|
+
# delay importing, since pytest discovery phase may hit this file from a
|
|
205
|
+
# testenv without tomli
|
|
206
|
+
from setuptools.compat.py310 import tomllib
|
|
207
|
+
|
|
208
|
+
archive = Archive(sdist_file)
|
|
209
|
+
info = tomllib.loads(_read_pyproject(archive))
|
|
210
|
+
deps = info.get("build-system", {}).get("requires", [])
|
|
211
|
+
deps += EXTRA_BUILD_DEPS.get(package, [])
|
|
212
|
+
# Remove setuptools from requirements (and deduplicate)
|
|
213
|
+
requirements = {Requirement(d).name: d for d in deps}
|
|
214
|
+
return [v for k, v in requirements.items() if k != "setuptools"]
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
def _read_pyproject(archive):
|
|
218
|
+
contents = (
|
|
219
|
+
archive.get_content(member)
|
|
220
|
+
for member in archive
|
|
221
|
+
if os.path.basename(archive.get_name(member)) == "pyproject.toml"
|
|
222
|
+
)
|
|
223
|
+
return next(contents, "")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
value = 'three, sir!'
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import ast
|
|
2
|
+
import json
|
|
3
|
+
import textwrap
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def iter_namespace_pkgs(namespace):
|
|
8
|
+
parts = namespace.split(".")
|
|
9
|
+
for i in range(len(parts)):
|
|
10
|
+
yield ".".join(parts[: i + 1])
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def build_namespace_package(tmpdir, name, version="1.0", impl="pkg_resources"):
|
|
14
|
+
src_dir = tmpdir / name
|
|
15
|
+
src_dir.mkdir()
|
|
16
|
+
setup_py = src_dir / 'setup.py'
|
|
17
|
+
namespace, _, rest = name.rpartition('.')
|
|
18
|
+
namespaces = list(iter_namespace_pkgs(namespace))
|
|
19
|
+
setup_args = {
|
|
20
|
+
"name": name,
|
|
21
|
+
"version": version,
|
|
22
|
+
"packages": namespaces,
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if impl == "pkg_resources":
|
|
26
|
+
tmpl = '__import__("pkg_resources").declare_namespace(__name__)'
|
|
27
|
+
setup_args["namespace_packages"] = namespaces
|
|
28
|
+
elif impl == "pkgutil":
|
|
29
|
+
tmpl = '__path__ = __import__("pkgutil").extend_path(__path__, __name__)'
|
|
30
|
+
else:
|
|
31
|
+
raise ValueError(f"Cannot recognise {impl=} when creating namespaces")
|
|
32
|
+
|
|
33
|
+
args = json.dumps(setup_args, indent=4)
|
|
34
|
+
assert ast.literal_eval(args) # ensure it is valid Python
|
|
35
|
+
|
|
36
|
+
script = textwrap.dedent(
|
|
37
|
+
"""\
|
|
38
|
+
import setuptools
|
|
39
|
+
args = {args}
|
|
40
|
+
setuptools.setup(**args)
|
|
41
|
+
"""
|
|
42
|
+
).format(args=args)
|
|
43
|
+
setup_py.write_text(script, encoding='utf-8')
|
|
44
|
+
|
|
45
|
+
ns_pkg_dir = Path(src_dir, namespace.replace(".", "/"))
|
|
46
|
+
ns_pkg_dir.mkdir(parents=True)
|
|
47
|
+
|
|
48
|
+
for ns in namespaces:
|
|
49
|
+
pkg_init = src_dir / ns.replace(".", "/") / '__init__.py'
|
|
50
|
+
pkg_init.write_text(tmpl, encoding='utf-8')
|
|
51
|
+
|
|
52
|
+
pkg_mod = ns_pkg_dir / (rest + '.py')
|
|
53
|
+
some_functionality = 'name = {rest!r}'.format(**locals())
|
|
54
|
+
pkg_mod.write_text(some_functionality, encoding='utf-8')
|
|
55
|
+
return src_dir
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def build_pep420_namespace_package(tmpdir, name):
|
|
59
|
+
src_dir = tmpdir / name
|
|
60
|
+
src_dir.mkdir()
|
|
61
|
+
pyproject = src_dir / "pyproject.toml"
|
|
62
|
+
namespace, _, rest = name.rpartition(".")
|
|
63
|
+
script = f"""\
|
|
64
|
+
[build-system]
|
|
65
|
+
requires = ["setuptools"]
|
|
66
|
+
build-backend = "setuptools.build_meta"
|
|
67
|
+
|
|
68
|
+
[project]
|
|
69
|
+
name = "{name}"
|
|
70
|
+
version = "3.14159"
|
|
71
|
+
"""
|
|
72
|
+
pyproject.write_text(textwrap.dedent(script), encoding='utf-8')
|
|
73
|
+
ns_pkg_dir = Path(src_dir, namespace.replace(".", "/"))
|
|
74
|
+
ns_pkg_dir.mkdir(parents=True)
|
|
75
|
+
pkg_mod = ns_pkg_dir / (rest + ".py")
|
|
76
|
+
some_functionality = f"name = {rest!r}"
|
|
77
|
+
pkg_mod.write_text(some_functionality, encoding='utf-8')
|
|
78
|
+
return src_dir
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def make_site_dir(target):
|
|
82
|
+
"""
|
|
83
|
+
Add a sitecustomize.py module in target to cause
|
|
84
|
+
target to be added to site dirs such that .pth files
|
|
85
|
+
are processed there.
|
|
86
|
+
"""
|
|
87
|
+
sc = target / 'sitecustomize.py'
|
|
88
|
+
target_str = str(target)
|
|
89
|
+
tmpl = '__import__("site").addsitedir({target_str!r})'
|
|
90
|
+
sc.write_text(tmpl.format(**locals()), encoding='utf-8')
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
result = 'passed'
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import io
|
|
2
|
+
import tarfile
|
|
3
|
+
|
|
4
|
+
import pytest
|
|
5
|
+
|
|
6
|
+
from setuptools import archive_util
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@pytest.fixture
|
|
10
|
+
def tarfile_with_unicode(tmpdir):
|
|
11
|
+
"""
|
|
12
|
+
Create a tarfile containing only a file whose name is
|
|
13
|
+
a zero byte file called testimäge.png.
|
|
14
|
+
"""
|
|
15
|
+
tarobj = io.BytesIO()
|
|
16
|
+
|
|
17
|
+
with tarfile.open(fileobj=tarobj, mode="w:gz") as tgz:
|
|
18
|
+
data = b""
|
|
19
|
+
|
|
20
|
+
filename = "testimäge.png"
|
|
21
|
+
|
|
22
|
+
t = tarfile.TarInfo(filename)
|
|
23
|
+
t.size = len(data)
|
|
24
|
+
|
|
25
|
+
tgz.addfile(t, io.BytesIO(data))
|
|
26
|
+
|
|
27
|
+
target = tmpdir / 'unicode-pkg-1.0.tar.gz'
|
|
28
|
+
with open(str(target), mode='wb') as tf:
|
|
29
|
+
tf.write(tarobj.getvalue())
|
|
30
|
+
return str(target)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@pytest.mark.xfail(reason="#710 and #712")
|
|
34
|
+
def test_unicode_files(tarfile_with_unicode, tmpdir):
|
|
35
|
+
target = tmpdir / 'out'
|
|
36
|
+
archive_util.unpack_archive(tarfile_with_unicode, str(target))
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"""develop tests"""
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
from unittest import mock
|
|
5
|
+
|
|
6
|
+
import pytest
|
|
7
|
+
|
|
8
|
+
from setuptools import SetuptoolsDeprecationWarning
|
|
9
|
+
from setuptools.dist import Distribution
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@pytest.mark.skipif(sys.platform == 'win32', reason='non-Windows only')
|
|
13
|
+
@pytest.mark.xfail(reason="bdist_rpm is long deprecated, should we remove it? #1988")
|
|
14
|
+
@mock.patch('distutils.command.bdist_rpm.bdist_rpm')
|
|
15
|
+
def test_bdist_rpm_warning(distutils_cmd, tmpdir_cwd):
|
|
16
|
+
dist = Distribution(
|
|
17
|
+
dict(
|
|
18
|
+
script_name='setup.py',
|
|
19
|
+
script_args=['bdist_rpm'],
|
|
20
|
+
name='foo',
|
|
21
|
+
py_modules=['hi'],
|
|
22
|
+
)
|
|
23
|
+
)
|
|
24
|
+
dist.parse_command_line()
|
|
25
|
+
with pytest.warns(SetuptoolsDeprecationWarning):
|
|
26
|
+
dist.run_commands()
|
|
27
|
+
|
|
28
|
+
distutils_cmd.run.assert_called_once()
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"""develop tests"""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import re
|
|
5
|
+
import zipfile
|
|
6
|
+
|
|
7
|
+
import pytest
|
|
8
|
+
|
|
9
|
+
from setuptools.dist import Distribution
|
|
10
|
+
|
|
11
|
+
from . import contexts
|
|
12
|
+
|
|
13
|
+
SETUP_PY = """\
|
|
14
|
+
from setuptools import setup
|
|
15
|
+
|
|
16
|
+
setup(py_modules=['hi'])
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@pytest.fixture
|
|
21
|
+
def setup_context(tmpdir):
|
|
22
|
+
with (tmpdir / 'setup.py').open('w') as f:
|
|
23
|
+
f.write(SETUP_PY)
|
|
24
|
+
with (tmpdir / 'hi.py').open('w') as f:
|
|
25
|
+
f.write('1\n')
|
|
26
|
+
with tmpdir.as_cwd():
|
|
27
|
+
yield tmpdir
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class Test:
|
|
31
|
+
@pytest.mark.usefixtures("user_override")
|
|
32
|
+
@pytest.mark.usefixtures("setup_context")
|
|
33
|
+
def test_bdist_egg(self):
|
|
34
|
+
dist = Distribution(
|
|
35
|
+
dict(
|
|
36
|
+
script_name='setup.py',
|
|
37
|
+
script_args=['bdist_egg'],
|
|
38
|
+
name='foo',
|
|
39
|
+
py_modules=['hi'],
|
|
40
|
+
)
|
|
41
|
+
)
|
|
42
|
+
os.makedirs(os.path.join('build', 'src'))
|
|
43
|
+
with contexts.quiet():
|
|
44
|
+
dist.parse_command_line()
|
|
45
|
+
dist.run_commands()
|
|
46
|
+
|
|
47
|
+
# let's see if we got our egg link at the right place
|
|
48
|
+
[content] = os.listdir('dist')
|
|
49
|
+
assert re.match(r'foo-0.0.0-py[23].\d+.egg$', content)
|
|
50
|
+
|
|
51
|
+
@pytest.mark.xfail(
|
|
52
|
+
os.environ.get('PYTHONDONTWRITEBYTECODE', False),
|
|
53
|
+
reason="Byte code disabled",
|
|
54
|
+
)
|
|
55
|
+
@pytest.mark.usefixtures("user_override")
|
|
56
|
+
@pytest.mark.usefixtures("setup_context")
|
|
57
|
+
def test_exclude_source_files(self):
|
|
58
|
+
dist = Distribution(
|
|
59
|
+
dict(
|
|
60
|
+
script_name='setup.py',
|
|
61
|
+
script_args=['bdist_egg', '--exclude-source-files'],
|
|
62
|
+
py_modules=['hi'],
|
|
63
|
+
)
|
|
64
|
+
)
|
|
65
|
+
with contexts.quiet():
|
|
66
|
+
dist.parse_command_line()
|
|
67
|
+
dist.run_commands()
|
|
68
|
+
[dist_name] = os.listdir('dist')
|
|
69
|
+
dist_filename = os.path.join('dist', dist_name)
|
|
70
|
+
zip = zipfile.ZipFile(dist_filename)
|
|
71
|
+
names = list(zi.filename for zi in zip.filelist)
|
|
72
|
+
assert 'hi.pyc' in names
|
|
73
|
+
assert 'hi.py' not in names
|