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,131 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import inspect
|
|
4
|
+
import platform
|
|
5
|
+
from collections.abc import Callable
|
|
6
|
+
from typing import TYPE_CHECKING, Any, ClassVar
|
|
7
|
+
|
|
8
|
+
from ..dist import Distribution
|
|
9
|
+
from ..warnings import SetuptoolsDeprecationWarning, SetuptoolsWarning
|
|
10
|
+
|
|
11
|
+
import distutils.command.install as orig
|
|
12
|
+
from distutils.errors import DistutilsArgError
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
# This is only used for a type-cast, don't import at runtime or it'll cause deprecation warnings
|
|
16
|
+
from .easy_install import easy_install as easy_install_cls
|
|
17
|
+
else:
|
|
18
|
+
easy_install_cls = None
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def __getattr__(name: str): # pragma: no cover
|
|
22
|
+
if name == "_install":
|
|
23
|
+
SetuptoolsDeprecationWarning.emit(
|
|
24
|
+
"`setuptools.command._install` was an internal implementation detail "
|
|
25
|
+
"that was left in for numpy<1.9 support.",
|
|
26
|
+
due_date=(2025, 5, 2), # Originally added on 2024-11-01
|
|
27
|
+
)
|
|
28
|
+
return orig.install
|
|
29
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class install(orig.install):
|
|
33
|
+
"""Use easy_install to install the package, w/dependencies"""
|
|
34
|
+
|
|
35
|
+
distribution: Distribution # override distutils.dist.Distribution with setuptools.dist.Distribution
|
|
36
|
+
|
|
37
|
+
user_options = orig.install.user_options + [
|
|
38
|
+
('old-and-unmanageable', None, "Try not to use this!"),
|
|
39
|
+
(
|
|
40
|
+
'single-version-externally-managed',
|
|
41
|
+
None,
|
|
42
|
+
"used by system package builders to create 'flat' eggs",
|
|
43
|
+
),
|
|
44
|
+
]
|
|
45
|
+
boolean_options = orig.install.boolean_options + [
|
|
46
|
+
'old-and-unmanageable',
|
|
47
|
+
'single-version-externally-managed',
|
|
48
|
+
]
|
|
49
|
+
# Type the same as distutils.command.install.install.sub_commands
|
|
50
|
+
# Must keep the second tuple item potentially None due to invariance
|
|
51
|
+
new_commands: ClassVar[list[tuple[str, Callable[[Any], bool] | None]]] = [
|
|
52
|
+
('install_egg_info', lambda self: True),
|
|
53
|
+
('install_scripts', lambda self: True),
|
|
54
|
+
]
|
|
55
|
+
_nc = dict(new_commands)
|
|
56
|
+
|
|
57
|
+
def initialize_options(self):
|
|
58
|
+
SetuptoolsDeprecationWarning.emit(
|
|
59
|
+
"setup.py install is deprecated.",
|
|
60
|
+
"""
|
|
61
|
+
Please avoid running ``setup.py`` directly.
|
|
62
|
+
Instead, use pypa/build, pypa/installer or other
|
|
63
|
+
standards-based tools.
|
|
64
|
+
""",
|
|
65
|
+
see_url="https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html",
|
|
66
|
+
due_date=(2025, 10, 31),
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
super().initialize_options()
|
|
70
|
+
self.old_and_unmanageable = None
|
|
71
|
+
self.single_version_externally_managed = None
|
|
72
|
+
|
|
73
|
+
def finalize_options(self) -> None:
|
|
74
|
+
super().finalize_options()
|
|
75
|
+
if self.root:
|
|
76
|
+
self.single_version_externally_managed = True
|
|
77
|
+
elif self.single_version_externally_managed:
|
|
78
|
+
if not self.root and not self.record:
|
|
79
|
+
raise DistutilsArgError(
|
|
80
|
+
"You must specify --record or --root when building system packages"
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
def handle_extra_path(self):
|
|
84
|
+
if self.root or self.single_version_externally_managed:
|
|
85
|
+
# explicit backward-compatibility mode, allow extra_path to work
|
|
86
|
+
return orig.install.handle_extra_path(self)
|
|
87
|
+
|
|
88
|
+
# Ignore extra_path when installing an egg (or being run by another
|
|
89
|
+
# command without --root or --single-version-externally-managed
|
|
90
|
+
self.path_file = None
|
|
91
|
+
self.extra_dirs = ''
|
|
92
|
+
return None
|
|
93
|
+
|
|
94
|
+
@staticmethod
|
|
95
|
+
def _called_from_setup(run_frame):
|
|
96
|
+
"""
|
|
97
|
+
Attempt to detect whether run() was called from setup() or by another
|
|
98
|
+
command. If called by setup(), the parent caller will be the
|
|
99
|
+
'run_command' method in 'distutils.dist', and *its* caller will be
|
|
100
|
+
the 'run_commands' method. If called any other way, the
|
|
101
|
+
immediate caller *might* be 'run_command', but it won't have been
|
|
102
|
+
called by 'run_commands'. Return True in that case or if a call stack
|
|
103
|
+
is unavailable. Return False otherwise.
|
|
104
|
+
"""
|
|
105
|
+
if run_frame is None:
|
|
106
|
+
msg = "Call stack not available. bdist_* commands may fail."
|
|
107
|
+
SetuptoolsWarning.emit(msg)
|
|
108
|
+
if platform.python_implementation() == 'IronPython':
|
|
109
|
+
msg = "For best results, pass -X:Frames to enable call stack."
|
|
110
|
+
SetuptoolsWarning.emit(msg)
|
|
111
|
+
return True
|
|
112
|
+
|
|
113
|
+
frames = inspect.getouterframes(run_frame)
|
|
114
|
+
for frame in frames[2:4]:
|
|
115
|
+
(caller,) = frame[:1]
|
|
116
|
+
info = inspect.getframeinfo(caller)
|
|
117
|
+
caller_module = caller.f_globals.get('__name__', '')
|
|
118
|
+
|
|
119
|
+
if caller_module == "setuptools.dist" and info.function == "run_command":
|
|
120
|
+
# Starting from v61.0.0 setuptools overwrites dist.run_command
|
|
121
|
+
continue
|
|
122
|
+
|
|
123
|
+
return caller_module == 'distutils.dist' and info.function == 'run_commands'
|
|
124
|
+
|
|
125
|
+
return False
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
# XXX Python 3.1 doesn't see _nc if this is inside the class
|
|
129
|
+
install.sub_commands = [
|
|
130
|
+
cmd for cmd in orig.install.sub_commands if cmd[0] not in install._nc
|
|
131
|
+
] + install.new_commands
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
from setuptools import Command, namespaces
|
|
4
|
+
from setuptools.archive_util import unpack_archive
|
|
5
|
+
|
|
6
|
+
from .._path import ensure_directory
|
|
7
|
+
|
|
8
|
+
from distutils import dir_util, log
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class install_egg_info(namespaces.Installer, Command):
|
|
12
|
+
"""Install an .egg-info directory for the package"""
|
|
13
|
+
|
|
14
|
+
description = "Install an .egg-info directory for the package"
|
|
15
|
+
|
|
16
|
+
user_options = [
|
|
17
|
+
('install-dir=', 'd', "directory to install to"),
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
def initialize_options(self):
|
|
21
|
+
self.install_dir = None
|
|
22
|
+
|
|
23
|
+
def finalize_options(self) -> None:
|
|
24
|
+
self.set_undefined_options('install_lib', ('install_dir', 'install_dir'))
|
|
25
|
+
ei_cmd = self.get_finalized_command("egg_info")
|
|
26
|
+
basename = f"{ei_cmd._get_egg_basename()}.egg-info"
|
|
27
|
+
self.source = ei_cmd.egg_info
|
|
28
|
+
self.target = os.path.join(self.install_dir, basename)
|
|
29
|
+
self.outputs: list[str] = []
|
|
30
|
+
|
|
31
|
+
def run(self) -> None:
|
|
32
|
+
self.run_command('egg_info')
|
|
33
|
+
if os.path.isdir(self.target) and not os.path.islink(self.target):
|
|
34
|
+
dir_util.remove_tree(self.target, dry_run=self.dry_run)
|
|
35
|
+
elif os.path.exists(self.target):
|
|
36
|
+
self.execute(os.unlink, (self.target,), "Removing " + self.target)
|
|
37
|
+
if not self.dry_run:
|
|
38
|
+
ensure_directory(self.target)
|
|
39
|
+
self.execute(self.copytree, (), f"Copying {self.source} to {self.target}")
|
|
40
|
+
self.install_namespaces()
|
|
41
|
+
|
|
42
|
+
def get_outputs(self):
|
|
43
|
+
return self.outputs
|
|
44
|
+
|
|
45
|
+
def copytree(self) -> None:
|
|
46
|
+
# Copy the .egg-info tree to site-packages
|
|
47
|
+
def skimmer(src, dst):
|
|
48
|
+
# filter out source-control directories; note that 'src' is always
|
|
49
|
+
# a '/'-separated path, regardless of platform. 'dst' is a
|
|
50
|
+
# platform-specific path.
|
|
51
|
+
for skip in '.svn/', 'CVS/':
|
|
52
|
+
if src.startswith(skip) or '/' + skip in src:
|
|
53
|
+
return None
|
|
54
|
+
self.outputs.append(dst)
|
|
55
|
+
log.debug("Copying %s to %s", src, dst)
|
|
56
|
+
return dst
|
|
57
|
+
|
|
58
|
+
unpack_archive(self.source, self.target, skimmer)
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import sys
|
|
5
|
+
from itertools import product, starmap
|
|
6
|
+
|
|
7
|
+
from .._path import StrPath
|
|
8
|
+
from ..dist import Distribution
|
|
9
|
+
|
|
10
|
+
import distutils.command.install_lib as orig
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class install_lib(orig.install_lib):
|
|
14
|
+
"""Don't add compiled flags to filenames of non-Python files"""
|
|
15
|
+
|
|
16
|
+
distribution: Distribution # override distutils.dist.Distribution with setuptools.dist.Distribution
|
|
17
|
+
|
|
18
|
+
def run(self) -> None:
|
|
19
|
+
self.build()
|
|
20
|
+
outfiles = self.install()
|
|
21
|
+
if outfiles is not None:
|
|
22
|
+
# always compile, in case we have any extension stubs to deal with
|
|
23
|
+
self.byte_compile(outfiles)
|
|
24
|
+
|
|
25
|
+
def get_exclusions(self):
|
|
26
|
+
"""
|
|
27
|
+
Return a collections.Sized collections.Container of paths to be
|
|
28
|
+
excluded for single_version_externally_managed installations.
|
|
29
|
+
"""
|
|
30
|
+
all_packages = (
|
|
31
|
+
pkg
|
|
32
|
+
for ns_pkg in self._get_SVEM_NSPs()
|
|
33
|
+
for pkg in self._all_packages(ns_pkg)
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
excl_specs = product(all_packages, self._gen_exclusion_paths())
|
|
37
|
+
return set(starmap(self._exclude_pkg_path, excl_specs))
|
|
38
|
+
|
|
39
|
+
def _exclude_pkg_path(self, pkg, exclusion_path):
|
|
40
|
+
"""
|
|
41
|
+
Given a package name and exclusion path within that package,
|
|
42
|
+
compute the full exclusion path.
|
|
43
|
+
"""
|
|
44
|
+
parts = pkg.split('.') + [exclusion_path]
|
|
45
|
+
return os.path.join(self.install_dir, *parts)
|
|
46
|
+
|
|
47
|
+
@staticmethod
|
|
48
|
+
def _all_packages(pkg_name):
|
|
49
|
+
"""
|
|
50
|
+
>>> list(install_lib._all_packages('foo.bar.baz'))
|
|
51
|
+
['foo.bar.baz', 'foo.bar', 'foo']
|
|
52
|
+
"""
|
|
53
|
+
while pkg_name:
|
|
54
|
+
yield pkg_name
|
|
55
|
+
pkg_name, _sep, _child = pkg_name.rpartition('.')
|
|
56
|
+
|
|
57
|
+
def _get_SVEM_NSPs(self):
|
|
58
|
+
"""
|
|
59
|
+
Get namespace packages (list) but only for
|
|
60
|
+
single_version_externally_managed installations and empty otherwise.
|
|
61
|
+
"""
|
|
62
|
+
# TODO: is it necessary to short-circuit here? i.e. what's the cost
|
|
63
|
+
# if get_finalized_command is called even when namespace_packages is
|
|
64
|
+
# False?
|
|
65
|
+
if not self.distribution.namespace_packages:
|
|
66
|
+
return []
|
|
67
|
+
|
|
68
|
+
install_cmd = self.get_finalized_command('install')
|
|
69
|
+
svem = install_cmd.single_version_externally_managed
|
|
70
|
+
|
|
71
|
+
return self.distribution.namespace_packages if svem else []
|
|
72
|
+
|
|
73
|
+
@staticmethod
|
|
74
|
+
def _gen_exclusion_paths():
|
|
75
|
+
"""
|
|
76
|
+
Generate file paths to be excluded for namespace packages (bytecode
|
|
77
|
+
cache files).
|
|
78
|
+
"""
|
|
79
|
+
# always exclude the package module itself
|
|
80
|
+
yield '__init__.py'
|
|
81
|
+
|
|
82
|
+
yield '__init__.pyc'
|
|
83
|
+
yield '__init__.pyo'
|
|
84
|
+
|
|
85
|
+
if not hasattr(sys, 'implementation'):
|
|
86
|
+
return
|
|
87
|
+
|
|
88
|
+
base = os.path.join('__pycache__', '__init__.' + sys.implementation.cache_tag)
|
|
89
|
+
yield base + '.pyc'
|
|
90
|
+
yield base + '.pyo'
|
|
91
|
+
yield base + '.opt-1.pyc'
|
|
92
|
+
yield base + '.opt-2.pyc'
|
|
93
|
+
|
|
94
|
+
def copy_tree(
|
|
95
|
+
self,
|
|
96
|
+
infile: StrPath,
|
|
97
|
+
outfile: str,
|
|
98
|
+
# override: Using actual booleans
|
|
99
|
+
preserve_mode: bool = True, # type: ignore[override]
|
|
100
|
+
preserve_times: bool = True, # type: ignore[override]
|
|
101
|
+
preserve_symlinks: bool = False, # type: ignore[override]
|
|
102
|
+
level: object = 1,
|
|
103
|
+
) -> list[str]:
|
|
104
|
+
assert preserve_mode
|
|
105
|
+
assert preserve_times
|
|
106
|
+
assert not preserve_symlinks
|
|
107
|
+
exclude = self.get_exclusions()
|
|
108
|
+
|
|
109
|
+
if not exclude:
|
|
110
|
+
return orig.install_lib.copy_tree(self, infile, outfile)
|
|
111
|
+
|
|
112
|
+
# Exclude namespace package __init__.py* files from the output
|
|
113
|
+
|
|
114
|
+
from setuptools.archive_util import unpack_directory
|
|
115
|
+
|
|
116
|
+
from distutils import log
|
|
117
|
+
|
|
118
|
+
outfiles: list[str] = []
|
|
119
|
+
|
|
120
|
+
def pf(src: str, dst: str):
|
|
121
|
+
if dst in exclude:
|
|
122
|
+
log.warn("Skipping installation of %s (namespace package)", dst)
|
|
123
|
+
return False
|
|
124
|
+
|
|
125
|
+
log.info("copying %s -> %s", src, os.path.dirname(dst))
|
|
126
|
+
outfiles.append(dst)
|
|
127
|
+
return dst
|
|
128
|
+
|
|
129
|
+
unpack_directory(infile, outfile, pf)
|
|
130
|
+
return outfiles
|
|
131
|
+
|
|
132
|
+
def get_outputs(self):
|
|
133
|
+
outputs = orig.install_lib.get_outputs(self)
|
|
134
|
+
exclude = self.get_exclusions()
|
|
135
|
+
if exclude:
|
|
136
|
+
return [f for f in outputs if f not in exclude]
|
|
137
|
+
return outputs
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import sys
|
|
5
|
+
|
|
6
|
+
from .._path import ensure_directory
|
|
7
|
+
from ..dist import Distribution
|
|
8
|
+
|
|
9
|
+
import distutils.command.install_scripts as orig
|
|
10
|
+
from distutils import log
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class install_scripts(orig.install_scripts):
|
|
14
|
+
"""Do normal script install, plus any egg_info wrapper scripts"""
|
|
15
|
+
|
|
16
|
+
distribution: Distribution # override distutils.dist.Distribution with setuptools.dist.Distribution
|
|
17
|
+
|
|
18
|
+
def initialize_options(self) -> None:
|
|
19
|
+
orig.install_scripts.initialize_options(self)
|
|
20
|
+
self.no_ep = False
|
|
21
|
+
|
|
22
|
+
def run(self) -> None:
|
|
23
|
+
self.run_command("egg_info")
|
|
24
|
+
if self.distribution.scripts:
|
|
25
|
+
orig.install_scripts.run(self) # run first to set up self.outfiles
|
|
26
|
+
else:
|
|
27
|
+
self.outfiles: list[str] = []
|
|
28
|
+
if self.no_ep:
|
|
29
|
+
# don't install entry point scripts into .egg file!
|
|
30
|
+
return
|
|
31
|
+
self._install_ep_scripts()
|
|
32
|
+
|
|
33
|
+
def _install_ep_scripts(self):
|
|
34
|
+
# Delay import side-effects
|
|
35
|
+
from .. import _scripts
|
|
36
|
+
from .._importlib import metadata
|
|
37
|
+
|
|
38
|
+
ei_cmd = self.get_finalized_command("egg_info")
|
|
39
|
+
dist = metadata.Distribution.at(path=ei_cmd.egg_info)
|
|
40
|
+
bs_cmd = self.get_finalized_command('build_scripts')
|
|
41
|
+
exec_param = getattr(bs_cmd, 'executable', None)
|
|
42
|
+
writer = _scripts.ScriptWriter
|
|
43
|
+
if exec_param == sys.executable:
|
|
44
|
+
# In case the path to the Python executable contains a space, wrap
|
|
45
|
+
# it so it's not split up.
|
|
46
|
+
exec_param = [exec_param]
|
|
47
|
+
# resolve the writer to the environment
|
|
48
|
+
writer = writer.best()
|
|
49
|
+
cmd = writer.command_spec_class.best().from_param(exec_param)
|
|
50
|
+
for args in writer.get_args(dist, cmd.as_header()):
|
|
51
|
+
self.write_script(*args)
|
|
52
|
+
|
|
53
|
+
def write_script(self, script_name, contents, mode: str = "t", *ignored) -> None:
|
|
54
|
+
"""Write an executable file to the scripts directory"""
|
|
55
|
+
from .._shutil import attempt_chmod_verbose as chmod, current_umask
|
|
56
|
+
|
|
57
|
+
log.info("Installing %s script to %s", script_name, self.install_dir)
|
|
58
|
+
target = os.path.join(self.install_dir, script_name)
|
|
59
|
+
self.outfiles.append(target)
|
|
60
|
+
|
|
61
|
+
encoding = None if "b" in mode else "utf-8"
|
|
62
|
+
mask = current_umask()
|
|
63
|
+
if not self.dry_run:
|
|
64
|
+
ensure_directory(target)
|
|
65
|
+
with open(target, "w" + mode, encoding=encoding) as f:
|
|
66
|
+
f.write(contents)
|
|
67
|
+
chmod(target, 0o777 - mask)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
from typing import ClassVar
|
|
5
|
+
|
|
6
|
+
from .. import Command, _shutil
|
|
7
|
+
|
|
8
|
+
from distutils import log
|
|
9
|
+
from distutils.errors import DistutilsOptionError
|
|
10
|
+
from distutils.util import convert_path
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class rotate(Command):
|
|
14
|
+
"""Delete older distributions"""
|
|
15
|
+
|
|
16
|
+
description = "delete older distributions, keeping N newest files"
|
|
17
|
+
user_options = [
|
|
18
|
+
('match=', 'm', "patterns to match (required)"),
|
|
19
|
+
('dist-dir=', 'd', "directory where the distributions are"),
|
|
20
|
+
('keep=', 'k', "number of matching distributions to keep"),
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
boolean_options: ClassVar[list[str]] = []
|
|
24
|
+
|
|
25
|
+
def initialize_options(self):
|
|
26
|
+
self.match = None
|
|
27
|
+
self.dist_dir = None
|
|
28
|
+
self.keep = None
|
|
29
|
+
|
|
30
|
+
def finalize_options(self) -> None:
|
|
31
|
+
if self.match is None:
|
|
32
|
+
raise DistutilsOptionError(
|
|
33
|
+
"Must specify one or more (comma-separated) match patterns "
|
|
34
|
+
"(e.g. '.zip' or '.egg')"
|
|
35
|
+
)
|
|
36
|
+
if self.keep is None:
|
|
37
|
+
raise DistutilsOptionError("Must specify number of files to keep")
|
|
38
|
+
try:
|
|
39
|
+
self.keep = int(self.keep)
|
|
40
|
+
except ValueError as e:
|
|
41
|
+
raise DistutilsOptionError("--keep must be an integer") from e
|
|
42
|
+
if isinstance(self.match, str):
|
|
43
|
+
self.match = [convert_path(p.strip()) for p in self.match.split(',')]
|
|
44
|
+
self.set_undefined_options('bdist', ('dist_dir', 'dist_dir'))
|
|
45
|
+
|
|
46
|
+
def run(self) -> None:
|
|
47
|
+
self.run_command("egg_info")
|
|
48
|
+
from glob import glob
|
|
49
|
+
|
|
50
|
+
for pattern in self.match:
|
|
51
|
+
pattern = self.distribution.get_name() + '*' + pattern
|
|
52
|
+
files = glob(os.path.join(self.dist_dir, pattern))
|
|
53
|
+
files = [(os.path.getmtime(f), f) for f in files]
|
|
54
|
+
files.sort()
|
|
55
|
+
files.reverse()
|
|
56
|
+
|
|
57
|
+
log.info("%d file(s) matching %s", len(files), pattern)
|
|
58
|
+
files = files[self.keep :]
|
|
59
|
+
for t, f in files:
|
|
60
|
+
log.info("Deleting %s", f)
|
|
61
|
+
if not self.dry_run:
|
|
62
|
+
if os.path.isdir(f):
|
|
63
|
+
_shutil.rmtree(f)
|
|
64
|
+
else:
|
|
65
|
+
os.unlink(f)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from setuptools.command.setopt import edit_config, option_base
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class saveopts(option_base):
|
|
5
|
+
"""Save command-line options to a file"""
|
|
6
|
+
|
|
7
|
+
description = "save supplied options to setup.cfg or other config file"
|
|
8
|
+
|
|
9
|
+
def run(self) -> None:
|
|
10
|
+
dist = self.distribution
|
|
11
|
+
settings: dict[str, dict[str, str]] = {}
|
|
12
|
+
|
|
13
|
+
for cmd in dist.command_options:
|
|
14
|
+
if cmd == 'saveopts':
|
|
15
|
+
continue # don't save our own options!
|
|
16
|
+
|
|
17
|
+
for opt, (src, val) in dist.get_option_dict(cmd).items():
|
|
18
|
+
if src == "command line":
|
|
19
|
+
settings.setdefault(cmd, {})[opt] = val
|
|
20
|
+
|
|
21
|
+
edit_config(self.filename, settings, self.dry_run)
|