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,470 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import itertools
|
|
4
|
+
import os
|
|
5
|
+
import sys
|
|
6
|
+
import textwrap
|
|
7
|
+
from collections.abc import Iterator
|
|
8
|
+
from importlib.machinery import EXTENSION_SUFFIXES
|
|
9
|
+
from importlib.util import cache_from_source as _compiled_file_name
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
from typing import TYPE_CHECKING
|
|
12
|
+
|
|
13
|
+
from setuptools.dist import Distribution
|
|
14
|
+
from setuptools.errors import BaseError
|
|
15
|
+
from setuptools.extension import Extension, Library
|
|
16
|
+
|
|
17
|
+
from distutils import log
|
|
18
|
+
from distutils.ccompiler import new_compiler
|
|
19
|
+
from distutils.sysconfig import customize_compiler, get_config_var
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING:
|
|
22
|
+
# Cython not installed on CI tests, causing _build_ext to be `Any`
|
|
23
|
+
from distutils.command.build_ext import build_ext as _build_ext
|
|
24
|
+
else:
|
|
25
|
+
try:
|
|
26
|
+
# Attempt to use Cython for building extensions, if available
|
|
27
|
+
from Cython.Distutils.build_ext import build_ext as _build_ext
|
|
28
|
+
|
|
29
|
+
# Additionally, assert that the compiler module will load
|
|
30
|
+
# also. Ref #1229.
|
|
31
|
+
__import__('Cython.Compiler.Main')
|
|
32
|
+
except ImportError:
|
|
33
|
+
from distutils.command.build_ext import build_ext as _build_ext
|
|
34
|
+
|
|
35
|
+
# make sure _config_vars is initialized
|
|
36
|
+
get_config_var("LDSHARED")
|
|
37
|
+
# Not publicly exposed in typeshed distutils stubs, but this is done on purpose
|
|
38
|
+
# See https://github.com/pypa/setuptools/pull/4228#issuecomment-1959856400
|
|
39
|
+
from distutils.sysconfig import _config_vars as _CONFIG_VARS # noqa: E402
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def _customize_compiler_for_shlib(compiler):
|
|
43
|
+
if sys.platform == "darwin":
|
|
44
|
+
# building .dylib requires additional compiler flags on OSX; here we
|
|
45
|
+
# temporarily substitute the pyconfig.h variables so that distutils'
|
|
46
|
+
# 'customize_compiler' uses them before we build the shared libraries.
|
|
47
|
+
tmp = _CONFIG_VARS.copy()
|
|
48
|
+
try:
|
|
49
|
+
# XXX Help! I don't have any idea whether these are right...
|
|
50
|
+
_CONFIG_VARS['LDSHARED'] = (
|
|
51
|
+
"gcc -Wl,-x -dynamiclib -undefined dynamic_lookup"
|
|
52
|
+
)
|
|
53
|
+
_CONFIG_VARS['CCSHARED'] = " -dynamiclib"
|
|
54
|
+
_CONFIG_VARS['SO'] = ".dylib"
|
|
55
|
+
customize_compiler(compiler)
|
|
56
|
+
finally:
|
|
57
|
+
_CONFIG_VARS.clear()
|
|
58
|
+
_CONFIG_VARS.update(tmp)
|
|
59
|
+
else:
|
|
60
|
+
customize_compiler(compiler)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
have_rtld = False
|
|
64
|
+
use_stubs = False
|
|
65
|
+
libtype = 'shared'
|
|
66
|
+
|
|
67
|
+
if sys.platform == "darwin":
|
|
68
|
+
use_stubs = True
|
|
69
|
+
elif os.name != 'nt':
|
|
70
|
+
try:
|
|
71
|
+
import dl # type: ignore[import-not-found] # https://github.com/python/mypy/issues/13002
|
|
72
|
+
|
|
73
|
+
use_stubs = have_rtld = hasattr(dl, 'RTLD_NOW')
|
|
74
|
+
except ImportError:
|
|
75
|
+
pass
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def get_abi3_suffix():
|
|
79
|
+
"""Return the file extension for an abi3-compliant Extension()"""
|
|
80
|
+
for suffix in EXTENSION_SUFFIXES:
|
|
81
|
+
if '.abi3' in suffix: # Unix
|
|
82
|
+
return suffix
|
|
83
|
+
elif suffix == '.pyd': # Windows
|
|
84
|
+
return suffix
|
|
85
|
+
return None
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class build_ext(_build_ext):
|
|
89
|
+
distribution: Distribution # override distutils.dist.Distribution with setuptools.dist.Distribution
|
|
90
|
+
editable_mode = False
|
|
91
|
+
inplace = False
|
|
92
|
+
|
|
93
|
+
def run(self):
|
|
94
|
+
"""Build extensions in build directory, then copy if --inplace"""
|
|
95
|
+
old_inplace, self.inplace = self.inplace, False
|
|
96
|
+
_build_ext.run(self)
|
|
97
|
+
self.inplace = old_inplace
|
|
98
|
+
if old_inplace:
|
|
99
|
+
self.copy_extensions_to_source()
|
|
100
|
+
|
|
101
|
+
def _get_inplace_equivalent(self, build_py, ext: Extension) -> tuple[str, str]:
|
|
102
|
+
fullname = self.get_ext_fullname(ext.name)
|
|
103
|
+
filename = self.get_ext_filename(fullname)
|
|
104
|
+
modpath = fullname.split('.')
|
|
105
|
+
package = '.'.join(modpath[:-1])
|
|
106
|
+
package_dir = build_py.get_package_dir(package)
|
|
107
|
+
inplace_file = os.path.join(package_dir, os.path.basename(filename))
|
|
108
|
+
regular_file = os.path.join(self.build_lib, filename)
|
|
109
|
+
return (inplace_file, regular_file)
|
|
110
|
+
|
|
111
|
+
def copy_extensions_to_source(self) -> None:
|
|
112
|
+
build_py = self.get_finalized_command('build_py')
|
|
113
|
+
for ext in self.extensions:
|
|
114
|
+
inplace_file, regular_file = self._get_inplace_equivalent(build_py, ext)
|
|
115
|
+
|
|
116
|
+
# Always copy, even if source is older than destination, to ensure
|
|
117
|
+
# that the right extensions for the current Python/platform are
|
|
118
|
+
# used.
|
|
119
|
+
if os.path.exists(regular_file) or not ext.optional:
|
|
120
|
+
self.copy_file(regular_file, inplace_file, level=self.verbose)
|
|
121
|
+
|
|
122
|
+
if ext._needs_stub:
|
|
123
|
+
inplace_stub = self._get_equivalent_stub(ext, inplace_file)
|
|
124
|
+
self._write_stub_file(inplace_stub, ext, compile=True)
|
|
125
|
+
# Always compile stub and remove the original (leave the cache behind)
|
|
126
|
+
# (this behaviour was observed in previous iterations of the code)
|
|
127
|
+
|
|
128
|
+
def _get_equivalent_stub(self, ext: Extension, output_file: str) -> str:
|
|
129
|
+
dir_ = os.path.dirname(output_file)
|
|
130
|
+
_, _, name = ext.name.rpartition(".")
|
|
131
|
+
return f"{os.path.join(dir_, name)}.py"
|
|
132
|
+
|
|
133
|
+
def _get_output_mapping(self) -> Iterator[tuple[str, str]]:
|
|
134
|
+
if not self.inplace:
|
|
135
|
+
return
|
|
136
|
+
|
|
137
|
+
build_py = self.get_finalized_command('build_py')
|
|
138
|
+
opt = self.get_finalized_command('install_lib').optimize or ""
|
|
139
|
+
|
|
140
|
+
for ext in self.extensions:
|
|
141
|
+
inplace_file, regular_file = self._get_inplace_equivalent(build_py, ext)
|
|
142
|
+
yield (regular_file, inplace_file)
|
|
143
|
+
|
|
144
|
+
if ext._needs_stub:
|
|
145
|
+
# This version of `build_ext` always builds artifacts in another dir,
|
|
146
|
+
# when "inplace=True" is given it just copies them back.
|
|
147
|
+
# This is done in the `copy_extensions_to_source` function, which
|
|
148
|
+
# always compile stub files via `_compile_and_remove_stub`.
|
|
149
|
+
# At the end of the process, a `.pyc` stub file is created without the
|
|
150
|
+
# corresponding `.py`.
|
|
151
|
+
|
|
152
|
+
inplace_stub = self._get_equivalent_stub(ext, inplace_file)
|
|
153
|
+
regular_stub = self._get_equivalent_stub(ext, regular_file)
|
|
154
|
+
inplace_cache = _compiled_file_name(inplace_stub, optimization=opt)
|
|
155
|
+
output_cache = _compiled_file_name(regular_stub, optimization=opt)
|
|
156
|
+
yield (output_cache, inplace_cache)
|
|
157
|
+
|
|
158
|
+
def get_ext_filename(self, fullname: str) -> str:
|
|
159
|
+
so_ext = os.getenv('SETUPTOOLS_EXT_SUFFIX')
|
|
160
|
+
if so_ext:
|
|
161
|
+
filename = os.path.join(*fullname.split('.')) + so_ext
|
|
162
|
+
else:
|
|
163
|
+
filename = _build_ext.get_ext_filename(self, fullname)
|
|
164
|
+
ext_suffix = get_config_var('EXT_SUFFIX')
|
|
165
|
+
if not isinstance(ext_suffix, str):
|
|
166
|
+
raise OSError(
|
|
167
|
+
"Configuration variable EXT_SUFFIX not found for this platform "
|
|
168
|
+
"and environment variable SETUPTOOLS_EXT_SUFFIX is missing"
|
|
169
|
+
)
|
|
170
|
+
so_ext = ext_suffix
|
|
171
|
+
|
|
172
|
+
if fullname in self.ext_map:
|
|
173
|
+
ext = self.ext_map[fullname]
|
|
174
|
+
abi3_suffix = get_abi3_suffix()
|
|
175
|
+
if ext.py_limited_api and abi3_suffix: # Use abi3
|
|
176
|
+
filename = filename[: -len(so_ext)] + abi3_suffix
|
|
177
|
+
if isinstance(ext, Library):
|
|
178
|
+
fn, ext = os.path.splitext(filename)
|
|
179
|
+
return self.shlib_compiler.library_filename(fn, libtype)
|
|
180
|
+
elif use_stubs and ext._links_to_dynamic:
|
|
181
|
+
d, fn = os.path.split(filename)
|
|
182
|
+
return os.path.join(d, 'dl-' + fn)
|
|
183
|
+
return filename
|
|
184
|
+
|
|
185
|
+
def initialize_options(self):
|
|
186
|
+
_build_ext.initialize_options(self)
|
|
187
|
+
self.shlib_compiler = None
|
|
188
|
+
self.shlibs = []
|
|
189
|
+
self.ext_map = {}
|
|
190
|
+
self.editable_mode = False
|
|
191
|
+
|
|
192
|
+
def finalize_options(self) -> None:
|
|
193
|
+
_build_ext.finalize_options(self)
|
|
194
|
+
self.extensions = self.extensions or []
|
|
195
|
+
self.check_extensions_list(self.extensions)
|
|
196
|
+
self.shlibs = [ext for ext in self.extensions if isinstance(ext, Library)]
|
|
197
|
+
if self.shlibs:
|
|
198
|
+
self.setup_shlib_compiler()
|
|
199
|
+
for ext in self.extensions:
|
|
200
|
+
ext._full_name = self.get_ext_fullname(ext.name)
|
|
201
|
+
for ext in self.extensions:
|
|
202
|
+
fullname = ext._full_name
|
|
203
|
+
self.ext_map[fullname] = ext
|
|
204
|
+
|
|
205
|
+
# distutils 3.1 will also ask for module names
|
|
206
|
+
# XXX what to do with conflicts?
|
|
207
|
+
self.ext_map[fullname.split('.')[-1]] = ext
|
|
208
|
+
|
|
209
|
+
ltd = self.shlibs and self.links_to_dynamic(ext) or False
|
|
210
|
+
ns = ltd and use_stubs and not isinstance(ext, Library)
|
|
211
|
+
ext._links_to_dynamic = ltd
|
|
212
|
+
ext._needs_stub = ns
|
|
213
|
+
filename = ext._file_name = self.get_ext_filename(fullname)
|
|
214
|
+
libdir = os.path.dirname(os.path.join(self.build_lib, filename))
|
|
215
|
+
if ltd and libdir not in ext.library_dirs:
|
|
216
|
+
ext.library_dirs.append(libdir)
|
|
217
|
+
if ltd and use_stubs and os.curdir not in ext.runtime_library_dirs:
|
|
218
|
+
ext.runtime_library_dirs.append(os.curdir)
|
|
219
|
+
|
|
220
|
+
if self.editable_mode:
|
|
221
|
+
self.inplace = True
|
|
222
|
+
|
|
223
|
+
def setup_shlib_compiler(self):
|
|
224
|
+
compiler = self.shlib_compiler = new_compiler(
|
|
225
|
+
compiler=self.compiler, dry_run=self.dry_run, force=self.force
|
|
226
|
+
)
|
|
227
|
+
_customize_compiler_for_shlib(compiler)
|
|
228
|
+
|
|
229
|
+
if self.include_dirs is not None:
|
|
230
|
+
compiler.set_include_dirs(self.include_dirs)
|
|
231
|
+
if self.define is not None:
|
|
232
|
+
# 'define' option is a list of (name,value) tuples
|
|
233
|
+
for name, value in self.define:
|
|
234
|
+
compiler.define_macro(name, value)
|
|
235
|
+
if self.undef is not None:
|
|
236
|
+
for macro in self.undef:
|
|
237
|
+
compiler.undefine_macro(macro)
|
|
238
|
+
if self.libraries is not None:
|
|
239
|
+
compiler.set_libraries(self.libraries)
|
|
240
|
+
if self.library_dirs is not None:
|
|
241
|
+
compiler.set_library_dirs(self.library_dirs)
|
|
242
|
+
if self.rpath is not None:
|
|
243
|
+
compiler.set_runtime_library_dirs(self.rpath)
|
|
244
|
+
if self.link_objects is not None:
|
|
245
|
+
compiler.set_link_objects(self.link_objects)
|
|
246
|
+
|
|
247
|
+
# hack so distutils' build_extension() builds a library instead
|
|
248
|
+
compiler.link_shared_object = link_shared_object.__get__(compiler) # type: ignore[method-assign]
|
|
249
|
+
|
|
250
|
+
def get_export_symbols(self, ext):
|
|
251
|
+
if isinstance(ext, Library):
|
|
252
|
+
return ext.export_symbols
|
|
253
|
+
return _build_ext.get_export_symbols(self, ext)
|
|
254
|
+
|
|
255
|
+
def build_extension(self, ext) -> None:
|
|
256
|
+
ext._convert_pyx_sources_to_lang()
|
|
257
|
+
_compiler = self.compiler
|
|
258
|
+
try:
|
|
259
|
+
if isinstance(ext, Library):
|
|
260
|
+
self.compiler = self.shlib_compiler
|
|
261
|
+
_build_ext.build_extension(self, ext)
|
|
262
|
+
if ext._needs_stub:
|
|
263
|
+
build_lib = self.get_finalized_command('build_py').build_lib
|
|
264
|
+
self.write_stub(build_lib, ext)
|
|
265
|
+
finally:
|
|
266
|
+
self.compiler = _compiler
|
|
267
|
+
|
|
268
|
+
def links_to_dynamic(self, ext):
|
|
269
|
+
"""Return true if 'ext' links to a dynamic lib in the same package"""
|
|
270
|
+
# XXX this should check to ensure the lib is actually being built
|
|
271
|
+
# XXX as dynamic, and not just using a locally-found version or a
|
|
272
|
+
# XXX static-compiled version
|
|
273
|
+
libnames = dict.fromkeys([lib._full_name for lib in self.shlibs])
|
|
274
|
+
pkg = '.'.join(ext._full_name.split('.')[:-1] + [''])
|
|
275
|
+
return any(pkg + libname in libnames for libname in ext.libraries)
|
|
276
|
+
|
|
277
|
+
def get_source_files(self) -> list[str]:
|
|
278
|
+
return [*_build_ext.get_source_files(self), *self._get_internal_depends()]
|
|
279
|
+
|
|
280
|
+
def _get_internal_depends(self) -> Iterator[str]:
|
|
281
|
+
"""Yield ``ext.depends`` that are contained by the project directory"""
|
|
282
|
+
project_root = Path(self.distribution.src_root or os.curdir).resolve()
|
|
283
|
+
depends = (dep for ext in self.extensions for dep in ext.depends)
|
|
284
|
+
|
|
285
|
+
def skip(orig_path: str, reason: str) -> None:
|
|
286
|
+
log.info(
|
|
287
|
+
"dependency %s won't be automatically "
|
|
288
|
+
"included in the manifest: the path %s",
|
|
289
|
+
orig_path,
|
|
290
|
+
reason,
|
|
291
|
+
)
|
|
292
|
+
|
|
293
|
+
for dep in depends:
|
|
294
|
+
path = Path(dep)
|
|
295
|
+
|
|
296
|
+
if path.is_absolute():
|
|
297
|
+
skip(dep, "must be relative")
|
|
298
|
+
continue
|
|
299
|
+
|
|
300
|
+
if ".." in path.parts:
|
|
301
|
+
skip(dep, "can't have `..` segments")
|
|
302
|
+
continue
|
|
303
|
+
|
|
304
|
+
try:
|
|
305
|
+
resolved = (project_root / path).resolve(strict=True)
|
|
306
|
+
except OSError:
|
|
307
|
+
skip(dep, "doesn't exist")
|
|
308
|
+
continue
|
|
309
|
+
|
|
310
|
+
try:
|
|
311
|
+
resolved.relative_to(project_root)
|
|
312
|
+
except ValueError:
|
|
313
|
+
skip(dep, "must be inside the project root")
|
|
314
|
+
continue
|
|
315
|
+
|
|
316
|
+
yield path.as_posix()
|
|
317
|
+
|
|
318
|
+
def get_outputs(self) -> list[str]:
|
|
319
|
+
if self.inplace:
|
|
320
|
+
return list(self.get_output_mapping().keys())
|
|
321
|
+
return sorted(_build_ext.get_outputs(self) + self.__get_stubs_outputs())
|
|
322
|
+
|
|
323
|
+
def get_output_mapping(self) -> dict[str, str]:
|
|
324
|
+
"""See :class:`setuptools.commands.build.SubCommand`"""
|
|
325
|
+
mapping = self._get_output_mapping()
|
|
326
|
+
return dict(sorted(mapping, key=lambda x: x[0]))
|
|
327
|
+
|
|
328
|
+
def __get_stubs_outputs(self):
|
|
329
|
+
# assemble the base name for each extension that needs a stub
|
|
330
|
+
ns_ext_bases = (
|
|
331
|
+
os.path.join(self.build_lib, *ext._full_name.split('.'))
|
|
332
|
+
for ext in self.extensions
|
|
333
|
+
if ext._needs_stub
|
|
334
|
+
)
|
|
335
|
+
# pair each base with the extension
|
|
336
|
+
pairs = itertools.product(ns_ext_bases, self.__get_output_extensions())
|
|
337
|
+
return list(base + fnext for base, fnext in pairs)
|
|
338
|
+
|
|
339
|
+
def __get_output_extensions(self):
|
|
340
|
+
yield '.py'
|
|
341
|
+
yield '.pyc'
|
|
342
|
+
if self.get_finalized_command('build_py').optimize:
|
|
343
|
+
yield '.pyo'
|
|
344
|
+
|
|
345
|
+
def write_stub(self, output_dir, ext, compile=False) -> None:
|
|
346
|
+
stub_file = os.path.join(output_dir, *ext._full_name.split('.')) + '.py'
|
|
347
|
+
self._write_stub_file(stub_file, ext, compile)
|
|
348
|
+
|
|
349
|
+
def _write_stub_file(self, stub_file: str, ext: Extension, compile=False):
|
|
350
|
+
log.info("writing stub loader for %s to %s", ext._full_name, stub_file)
|
|
351
|
+
if compile and os.path.exists(stub_file):
|
|
352
|
+
raise BaseError(stub_file + " already exists! Please delete.")
|
|
353
|
+
if not self.dry_run:
|
|
354
|
+
with open(stub_file, 'w', encoding="utf-8") as f:
|
|
355
|
+
content = (
|
|
356
|
+
textwrap.dedent(f"""
|
|
357
|
+
def __bootstrap__():
|
|
358
|
+
global __bootstrap__, __file__, __loader__
|
|
359
|
+
import sys, os, importlib.resources as irs, importlib.util
|
|
360
|
+
#rtld import dl
|
|
361
|
+
with irs.files(__name__).joinpath(
|
|
362
|
+
{os.path.basename(ext._file_name)!r}) as __file__:
|
|
363
|
+
del __bootstrap__
|
|
364
|
+
if '__loader__' in globals():
|
|
365
|
+
del __loader__
|
|
366
|
+
#rtld old_flags = sys.getdlopenflags()
|
|
367
|
+
old_dir = os.getcwd()
|
|
368
|
+
try:
|
|
369
|
+
os.chdir(os.path.dirname(__file__))
|
|
370
|
+
#rtld sys.setdlopenflags(dl.RTLD_NOW)
|
|
371
|
+
spec = importlib.util.spec_from_file_location(
|
|
372
|
+
__name__, __file__)
|
|
373
|
+
mod = importlib.util.module_from_spec(spec)
|
|
374
|
+
spec.loader.exec_module(mod)
|
|
375
|
+
finally:
|
|
376
|
+
#rtld sys.setdlopenflags(old_flags)
|
|
377
|
+
os.chdir(old_dir)
|
|
378
|
+
__bootstrap__()
|
|
379
|
+
""")
|
|
380
|
+
.lstrip()
|
|
381
|
+
.replace('#rtld', '#rtld' * (not have_rtld))
|
|
382
|
+
)
|
|
383
|
+
f.write(content)
|
|
384
|
+
if compile:
|
|
385
|
+
self._compile_and_remove_stub(stub_file)
|
|
386
|
+
|
|
387
|
+
def _compile_and_remove_stub(self, stub_file: str):
|
|
388
|
+
from distutils.util import byte_compile
|
|
389
|
+
|
|
390
|
+
byte_compile([stub_file], optimize=0, force=True, dry_run=self.dry_run)
|
|
391
|
+
optimize = self.get_finalized_command('install_lib').optimize
|
|
392
|
+
if optimize > 0:
|
|
393
|
+
byte_compile(
|
|
394
|
+
[stub_file],
|
|
395
|
+
optimize=optimize,
|
|
396
|
+
force=True,
|
|
397
|
+
dry_run=self.dry_run,
|
|
398
|
+
)
|
|
399
|
+
if os.path.exists(stub_file) and not self.dry_run:
|
|
400
|
+
os.unlink(stub_file)
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
if use_stubs or os.name == 'nt':
|
|
404
|
+
# Build shared libraries
|
|
405
|
+
#
|
|
406
|
+
def link_shared_object(
|
|
407
|
+
self,
|
|
408
|
+
objects,
|
|
409
|
+
output_libname,
|
|
410
|
+
output_dir=None,
|
|
411
|
+
libraries=None,
|
|
412
|
+
library_dirs=None,
|
|
413
|
+
runtime_library_dirs=None,
|
|
414
|
+
export_symbols=None,
|
|
415
|
+
debug: bool = False,
|
|
416
|
+
extra_preargs=None,
|
|
417
|
+
extra_postargs=None,
|
|
418
|
+
build_temp=None,
|
|
419
|
+
target_lang=None,
|
|
420
|
+
) -> None:
|
|
421
|
+
self.link(
|
|
422
|
+
self.SHARED_LIBRARY,
|
|
423
|
+
objects,
|
|
424
|
+
output_libname,
|
|
425
|
+
output_dir,
|
|
426
|
+
libraries,
|
|
427
|
+
library_dirs,
|
|
428
|
+
runtime_library_dirs,
|
|
429
|
+
export_symbols,
|
|
430
|
+
debug,
|
|
431
|
+
extra_preargs,
|
|
432
|
+
extra_postargs,
|
|
433
|
+
build_temp,
|
|
434
|
+
target_lang,
|
|
435
|
+
)
|
|
436
|
+
|
|
437
|
+
else:
|
|
438
|
+
# Build static libraries everywhere else
|
|
439
|
+
libtype = 'static'
|
|
440
|
+
|
|
441
|
+
def link_shared_object(
|
|
442
|
+
self,
|
|
443
|
+
objects,
|
|
444
|
+
output_libname,
|
|
445
|
+
output_dir=None,
|
|
446
|
+
libraries=None,
|
|
447
|
+
library_dirs=None,
|
|
448
|
+
runtime_library_dirs=None,
|
|
449
|
+
export_symbols=None,
|
|
450
|
+
debug: bool = False,
|
|
451
|
+
extra_preargs=None,
|
|
452
|
+
extra_postargs=None,
|
|
453
|
+
build_temp=None,
|
|
454
|
+
target_lang=None,
|
|
455
|
+
) -> None:
|
|
456
|
+
# XXX we need to either disallow these attrs on Library instances,
|
|
457
|
+
# or warn/abort here if set, or something...
|
|
458
|
+
# libraries=None, library_dirs=None, runtime_library_dirs=None,
|
|
459
|
+
# export_symbols=None, extra_preargs=None, extra_postargs=None,
|
|
460
|
+
# build_temp=None
|
|
461
|
+
|
|
462
|
+
assert output_dir is None # distutils build_ext doesn't pass this
|
|
463
|
+
output_dir, filename = os.path.split(output_libname)
|
|
464
|
+
basename, _ext = os.path.splitext(filename)
|
|
465
|
+
if self.library_filename("x").startswith('lib'):
|
|
466
|
+
# strip 'lib' prefix; this is kludgy if some platform uses
|
|
467
|
+
# a different prefix
|
|
468
|
+
basename = basename[3:]
|
|
469
|
+
|
|
470
|
+
self.create_static_lib(objects, basename, output_dir, debug, target_lang)
|