pypa / setuptools

Official project repository for the Setuptools build system
https://pypi.org/project/setuptools/
MIT License
2.5k stars 1.18k forks source link

Expand/restore vendoring support for zip archives #4641

Closed jaraco closed 1 month ago

jaraco commented 1 month ago

In https://github.com/pypa/setuptools/pull/4457#discussion_r1748703788_, @gaborbernat reported that the simplified vendoring strategy means vendored dependencies are no longer working for zipimporter archives.

Although the best recommended solution is for downstream integrators to incorporate the dependencies (setuptools[core]) naturally, it would be nice if the vendoring could continue to work until dependencies can be fully declared naturally (e.g. under setuptools).

jaraco commented 1 month ago

I've confirmed the issue can be replicated simply:

 draft 🐚 pip download setuptools
Collecting setuptools
  Using cached setuptools-74.1.2-py3-none-any.whl.metadata (6.7 kB)
Using cached setuptools-74.1.2-py3-none-any.whl (1.3 MB)
Saved ./setuptools-74.1.2-py3-none-any.whl
Successfully downloaded setuptools
 draft 🐚 py -c 'import setuptools'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
    import setuptools
ModuleNotFoundError: No module named 'setuptools'
 draft [1] 🐚 env PYTHONPATH=./setuptools-74.1.2-py3-none-any.whl py -c 'import setuptools'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
    import setuptools
  File "/Users/jaraco/draft/setuptools-74.1.2-py3-none-any.whl/setuptools/__init__.py", line 27, in <module>
    from .dist import Distribution
  File "/Users/jaraco/draft/setuptools-74.1.2-py3-none-any.whl/setuptools/dist.py", line 18, in <module>
    from . import (
    ...<3 lines>...
    )
  File "/Users/jaraco/draft/setuptools-74.1.2-py3-none-any.whl/setuptools/_entry_points.py", line 5, in <module>
    from jaraco.functools import pass_none
ModuleNotFoundError: No module named 'jaraco'
jaraco commented 1 month ago

I've confirmed that the path is being set correctly.

> /Users/jaraco/draft/setuptools-74.1.2-py3-none-any.whl/setuptools/__init__.py(21)<module>()
-> sys.modules.pop("backports", None)
(Pdb) sys.path
['', '/Users/jaraco/draft/setuptools-74.1.2-py3-none-any.whl', '/opt/python/lib/python313t.zip', '/opt/python/lib/python3.13t', '/opt/python/lib/python3.13t/lib-dynload', '/opt/python/lib/python3.13t/site-packages', '/Users/jaraco/draft/setuptools-74.1.2-py3-none-any.whl/setuptools/_vendor']

According to the zipimport docs:

The ZIP archive can contain a subdirectory structure to support package imports, and a path within the archive can be specified to only import from a subdirectory. For example, the path example.zip/lib/ would only import from the lib/ subdirectory within the archive.

I've found that even explicitly setting that path doesn't allow the vendored imports to be imported:

 draft [1] 🐚 env PYTHONPATH=setuptools-74.12.2-py3-none-any.whl/setuptools/_vendor py -c 'import packaging'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
    import packaging
ModuleNotFoundError: No module named 'packaging'

It seems to be a bug in zipimporter and not Setuptools.

gaborbernat commented 1 month ago

This is duplicate of https://github.com/pypa/setuptools/issues/4640

jaraco commented 1 month ago

Interestingly, I'm unable to replicate the behavior using a simple archive:

 draft 🐚 rm -r *
 draft 🐚 mkdir lib
 draft 🐚 mkdir lib/packaging
 draft 🐚 touch lib/packaging/__init__.py
 draft 🐚 py -m zipfile --create libs.zip lib
 draft 🐚 py -m zipfile --list libs.zip
File Name                                             Modified             Size
lib/                                           2024-09-09 11:15:38            0
lib/packaging/                                 2024-09-09 11:15:44            0
lib/packaging/__init__.py                      2024-09-09 11:15:44            0
 draft 🐚 env PYTHONPATH=libs.zip/lib py -c "import packaging"
 draft 🐚 

I seem to recall something recently about zipimporter having trouble with zip files whose directories don't have explicit entries. Let's see if that's a factor.

jaraco commented 1 month ago

I've confirmed that the setuptools wheel doesn't have directory entries:

``` 🐚 py -m zipfile --list setuptools-74.1.2-py3-none-any.whl File Name Modified Size distutils-precedence.pth 2024-09-05 04:13:14 151 _distutils_hack/__init__.py 2024-09-05 04:12:48 6754 _distutils_hack/override.py 2024-09-05 04:12:48 44 pkg_resources/__init__.py 2024-09-05 04:12:48 126236 pkg_resources/api_tests.txt 2024-09-05 04:12:48 12595 pkg_resources/py.typed 2024-09-05 04:12:48 0 pkg_resources/tests/__init__.py 2024-09-05 04:12:48 0 pkg_resources/tests/test_find_distributions.py 2024-09-05 04:12:48 1972 pkg_resources/tests/test_integration_zope_interface.py 2024-09-05 04:12:48 1652 pkg_resources/tests/test_markers.py 2024-09-05 04:12:48 241 pkg_resources/tests/test_pkg_resources.py 2024-09-05 04:12:48 15221 pkg_resources/tests/test_resources.py 2024-09-05 04:12:48 31252 pkg_resources/tests/test_working_set.py 2024-09-05 04:12:48 8531 pkg_resources/tests/data/my-test-package-source/setup.cfg 2024-09-05 04:12:48 0 pkg_resources/tests/data/my-test-package-source/setup.py 2024-09-05 04:12:48 105 pkg_resources/tests/data/my-test-package-zip/my-test-package.zip 2024-09-05 04:12:48 1809 pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/PKG-INFO 2024-09-05 04:12:48 187 pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/SOURCES.txt 2024-09-05 04:12:48 208 pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/dependency_links.txt 2024-09-05 04:12:48 1 pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/top_level.txt 2024-09-05 04:12:48 1 pkg_resources/tests/data/my-test-package_unpacked-egg/my_test_package-1.0-py3.7.egg/EGG-INFO/zip-safe 2024-09-05 04:12:48 1 pkg_resources/tests/data/my-test-package_zipped-egg/my_test_package-1.0-py3.7.egg 2024-09-05 04:12:48 843 setuptools/__init__.py 2024-09-05 04:12:48 10389 setuptools/_core_metadata.py 2024-09-05 04:12:48 9795 setuptools/_entry_points.py 2024-09-05 04:12:48 2310 setuptools/_imp.py 2024-09-05 04:12:48 2441 setuptools/_importlib.py 2024-09-05 04:12:48 327 setuptools/_itertools.py 2024-09-05 04:12:48 657 setuptools/_normalization.py 2024-09-05 04:12:48 4536 setuptools/_path.py 2024-09-05 04:12:48 2700 setuptools/_reqs.py 2024-09-05 04:12:48 1411 setuptools/archive_util.py 2024-09-05 04:12:48 7332 setuptools/build_meta.py 2024-09-05 04:12:48 19151 setuptools/cli-32.exe 2024-09-05 04:12:48 11776 setuptools/cli-64.exe 2024-09-05 04:12:48 14336 setuptools/cli-arm64.exe 2024-09-05 04:12:48 13824 setuptools/cli.exe 2024-09-05 04:12:48 11776 setuptools/depends.py 2024-09-05 04:12:48 5542 setuptools/discovery.py 2024-09-05 04:12:48 21104 setuptools/dist.py 2024-09-05 04:12:48 36729 setuptools/errors.py 2024-09-05 04:12:48 2988 setuptools/extension.py 2024-09-05 04:12:48 6457 setuptools/glob.py 2024-09-05 04:12:48 4852 setuptools/gui-32.exe 2024-09-05 04:12:48 11776 setuptools/gui-64.exe 2024-09-05 04:12:48 14336 setuptools/gui-arm64.exe 2024-09-05 04:12:48 13824 setuptools/gui.exe 2024-09-05 04:12:48 11776 setuptools/installer.py 2024-09-05 04:12:48 4970 setuptools/launch.py 2024-09-05 04:12:48 812 setuptools/logging.py 2024-09-05 04:12:48 1241 setuptools/modified.py 2024-09-05 04:12:48 190 setuptools/monkey.py 2024-09-05 04:12:48 3573 setuptools/msvc.py 2024-09-05 04:12:48 40791 setuptools/namespaces.py 2024-09-05 04:12:48 3155 setuptools/package_index.py 2024-09-05 04:12:48 39051 setuptools/sandbox.py 2024-09-05 04:12:48 14550 setuptools/script (dev).tmpl 2024-09-05 04:12:48 218 setuptools/script.tmpl 2024-09-05 04:12:48 138 setuptools/unicode_utils.py 2024-09-05 04:12:48 3181 setuptools/version.py 2024-09-05 04:12:48 161 setuptools/warnings.py 2024-09-05 04:12:48 3714 setuptools/wheel.py 2024-09-05 04:12:48 8628 setuptools/windows_support.py 2024-09-05 04:12:48 726 setuptools/_distutils/__init__.py 2024-09-05 04:12:48 359 setuptools/_distutils/_collections.py 2024-09-05 04:12:48 1366 setuptools/_distutils/_functools.py 2024-09-05 04:12:48 1771 setuptools/_distutils/_itertools.py 2024-09-05 04:12:48 1453 setuptools/_distutils/_log.py 2024-09-05 04:12:48 42 setuptools/_distutils/_macos_compat.py 2024-09-05 04:12:48 239 setuptools/_distutils/_modified.py 2024-09-05 04:12:48 2440 setuptools/_distutils/_msvccompiler.py 2024-09-05 04:12:48 20827 setuptools/_distutils/archive_util.py 2024-09-05 04:12:48 8523 setuptools/_distutils/bcppcompiler.py 2024-09-05 04:12:48 14647 setuptools/_distutils/ccompiler.py 2024-09-05 04:12:48 48869 setuptools/_distutils/cmd.py 2024-09-05 04:12:48 17877 setuptools/_distutils/config.py 2024-09-05 04:12:48 5226 setuptools/_distutils/core.py 2024-09-05 04:12:48 9318 setuptools/_distutils/cygwinccompiler.py 2024-09-05 04:12:48 11654 setuptools/_distutils/debug.py 2024-09-05 04:12:48 139 setuptools/_distutils/dep_util.py 2024-09-05 04:12:48 349 setuptools/_distutils/dir_util.py 2024-09-05 04:12:48 8007 setuptools/_distutils/dist.py 2024-09-05 04:12:48 50553 setuptools/_distutils/errors.py 2024-09-05 04:12:48 3589 setuptools/_distutils/extension.py 2024-09-05 04:12:48 10358 setuptools/_distutils/fancy_getopt.py 2024-09-05 04:12:48 17822 setuptools/_distutils/file_util.py 2024-09-05 04:12:48 7962 setuptools/_distutils/filelist.py 2024-09-05 04:12:48 13654 setuptools/_distutils/log.py 2024-09-05 04:12:48 1200 setuptools/_distutils/spawn.py 2024-09-05 04:12:48 3625 setuptools/_distutils/sysconfig.py 2024-09-05 04:12:48 19229 setuptools/_distutils/text_file.py 2024-09-05 04:12:48 12098 setuptools/_distutils/unixccompiler.py 2024-09-05 04:12:48 15437 setuptools/_distutils/util.py 2024-09-05 04:12:48 17648 setuptools/_distutils/version.py 2024-09-05 04:12:48 12634 setuptools/_distutils/versionpredicate.py 2024-09-05 04:12:48 5205 setuptools/_distutils/zosccompiler.py 2024-09-05 04:12:48 6589 setuptools/_distutils/command/__init__.py 2024-09-05 04:12:48 416 setuptools/_distutils/command/_framework_compat.py 2024-09-05 04:12:48 1609 setuptools/_distutils/command/bdist.py 2024-09-05 04:12:48 5346 setuptools/_distutils/command/bdist_dumb.py 2024-09-05 04:12:48 4582 setuptools/_distutils/command/bdist_rpm.py 2024-09-05 04:12:48 21686 setuptools/_distutils/command/build.py 2024-09-05 04:12:48 5729 setuptools/_distutils/command/build_clib.py 2024-09-05 04:12:48 7684 setuptools/_distutils/command/build_ext.py 2024-09-05 04:12:48 31758 setuptools/_distutils/command/build_py.py 2024-09-05 04:12:48 16552 setuptools/_distutils/command/build_scripts.py 2024-09-05 04:12:48 5534 setuptools/_distutils/command/check.py 2024-09-05 04:12:48 4897 setuptools/_distutils/command/clean.py 2024-09-05 04:12:48 2595 setuptools/_distutils/command/config.py 2024-09-05 04:12:48 13008 setuptools/_distutils/command/install.py 2024-09-05 04:12:48 30073 setuptools/_distutils/command/install_data.py 2024-09-05 04:12:48 2816 setuptools/_distutils/command/install_egg_info.py 2024-09-05 04:12:48 2788 setuptools/_distutils/command/install_headers.py 2024-09-05 04:12:48 1184 setuptools/_distutils/command/install_lib.py 2024-09-05 04:12:48 8330 setuptools/_distutils/command/install_scripts.py 2024-09-05 04:12:48 1937 setuptools/_distutils/command/register.py 2024-09-05 04:12:48 11793 setuptools/_distutils/command/sdist.py 2024-09-05 04:12:48 19186 setuptools/_distutils/command/upload.py 2024-09-05 04:12:48 7493 setuptools/_distutils/compat/__init__.py 2024-09-05 04:12:48 429 setuptools/_distutils/compat/py38.py 2024-09-05 04:12:48 791 setuptools/_distutils/compat/py39.py 2024-09-05 04:12:48 1964 setuptools/_distutils/tests/__init__.py 2024-09-05 04:12:48 1476 setuptools/_distutils/tests/support.py 2024-09-05 04:12:48 4099 setuptools/_distutils/tests/test_archive_util.py 2024-09-05 04:12:48 12911 setuptools/_distutils/tests/test_bdist.py 2024-09-05 04:12:48 1396 setuptools/_distutils/tests/test_bdist_dumb.py 2024-09-05 04:12:48 2247 setuptools/_distutils/tests/test_bdist_rpm.py 2024-09-05 04:12:48 3933 setuptools/_distutils/tests/test_build.py 2024-09-05 04:12:48 1698 setuptools/_distutils/tests/test_build_clib.py 2024-09-05 04:12:48 4331 setuptools/_distutils/tests/test_build_ext.py 2024-09-05 04:12:48 19961 setuptools/_distutils/tests/test_build_py.py 2024-09-05 04:12:48 6882 setuptools/_distutils/tests/test_build_scripts.py 2024-09-05 04:12:48 2880 setuptools/_distutils/tests/test_ccompiler.py 2024-09-05 04:12:48 2964 setuptools/_distutils/tests/test_check.py 2024-09-05 04:12:48 6226 setuptools/_distutils/tests/test_clean.py 2024-09-05 04:12:48 1240 setuptools/_distutils/tests/test_cmd.py 2024-09-05 04:12:48 3254 setuptools/_distutils/tests/test_config.py 2024-09-05 04:12:48 2725 setuptools/_distutils/tests/test_config_cmd.py 2024-09-05 04:12:48 2664 setuptools/_distutils/tests/test_core.py 2024-09-05 04:12:48 3829 setuptools/_distutils/tests/test_cygwinccompiler.py 2024-09-05 04:12:48 2753 setuptools/_distutils/tests/test_dir_util.py 2024-09-05 04:12:48 3854 setuptools/_distutils/tests/test_dist.py 2024-09-05 04:12:48 18459 setuptools/_distutils/tests/test_extension.py 2024-09-05 04:12:48 3094 setuptools/_distutils/tests/test_file_util.py 2024-09-05 04:12:48 3502 setuptools/_distutils/tests/test_filelist.py 2024-09-05 04:12:48 10766 setuptools/_distutils/tests/test_install.py 2024-09-05 04:12:48 8618 setuptools/_distutils/tests/test_install_data.py 2024-09-05 04:12:48 2464 setuptools/_distutils/tests/test_install_headers.py 2024-09-05 04:12:48 936 setuptools/_distutils/tests/test_install_lib.py 2024-09-05 04:12:48 3612 setuptools/_distutils/tests/test_install_scripts.py 2024-09-05 04:12:48 1600 setuptools/_distutils/tests/test_log.py 2024-09-05 04:12:48 323 setuptools/_distutils/tests/test_mingwccompiler.py 2024-09-05 04:12:48 2202 setuptools/_distutils/tests/test_modified.py 2024-09-05 04:12:48 4221 setuptools/_distutils/tests/test_msvccompiler.py 2024-09-05 04:12:48 3438 setuptools/_distutils/tests/test_register.py 2024-09-05 04:12:48 8839 setuptools/_distutils/tests/test_sdist.py 2024-09-05 04:12:48 15392 setuptools/_distutils/tests/test_spawn.py 2024-09-05 04:12:48 4613 setuptools/_distutils/tests/test_sysconfig.py 2024-09-05 04:12:48 12010 setuptools/_distutils/tests/test_text_file.py 2024-09-05 04:12:48 3460 setuptools/_distutils/tests/test_unixccompiler.py 2024-09-05 04:12:48 11840 setuptools/_distutils/tests/test_upload.py 2024-09-05 04:12:48 6638 setuptools/_distutils/tests/test_util.py 2024-09-05 04:12:48 7988 setuptools/_distutils/tests/test_version.py 2024-09-05 04:12:48 2750 setuptools/_distutils/tests/test_versionpredicate.py 2024-09-05 04:12:48 0 setuptools/_distutils/tests/unix_compat.py 2024-09-05 04:12:48 386 setuptools/_distutils/tests/compat/__init__.py 2024-09-05 04:12:48 0 setuptools/_distutils/tests/compat/py38.py 2024-09-05 04:12:48 1015 setuptools/_vendor/ruff.toml 2024-09-05 04:12:48 16 setuptools/_vendor/typing_extensions.py 2024-09-05 04:12:48 134451 setuptools/_vendor/autocommand/__init__.py 2024-09-05 04:12:48 1037 setuptools/_vendor/autocommand/autoasync.py 2024-09-05 04:12:48 5680 setuptools/_vendor/autocommand/autocommand.py 2024-09-05 04:12:48 2505 setuptools/_vendor/autocommand/automain.py 2024-09-05 04:12:48 2076 setuptools/_vendor/autocommand/autoparse.py 2024-09-05 04:12:48 11642 setuptools/_vendor/autocommand/errors.py 2024-09-05 04:12:48 886 setuptools/_vendor/backports/__init__.py 2024-09-05 04:12:48 81 setuptools/_vendor/backports/tarfile/__init__.py 2024-09-05 04:12:48 108491 setuptools/_vendor/backports/tarfile/__main__.py 2024-09-05 04:12:48 59 setuptools/_vendor/backports/tarfile/compat/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/backports/tarfile/compat/py38.py 2024-09-05 04:12:48 568 setuptools/_vendor/importlib_metadata/__init__.py 2024-09-05 04:12:48 33798 setuptools/_vendor/importlib_metadata/_adapters.py 2024-09-05 04:12:48 2317 setuptools/_vendor/importlib_metadata/_collections.py 2024-09-05 04:12:48 743 setuptools/_vendor/importlib_metadata/_compat.py 2024-09-05 04:12:48 1314 setuptools/_vendor/importlib_metadata/_functools.py 2024-09-05 04:12:48 2895 setuptools/_vendor/importlib_metadata/_itertools.py 2024-09-05 04:12:48 2068 setuptools/_vendor/importlib_metadata/_meta.py 2024-09-05 04:12:48 1801 setuptools/_vendor/importlib_metadata/_text.py 2024-09-05 04:12:48 2166 setuptools/_vendor/importlib_metadata/diagnose.py 2024-09-05 04:12:48 379 setuptools/_vendor/importlib_metadata/py.typed 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_metadata/compat/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_metadata/compat/py311.py 2024-09-05 04:12:48 608 setuptools/_vendor/importlib_metadata/compat/py39.py 2024-09-05 04:12:48 1102 setuptools/_vendor/importlib_resources/__init__.py 2024-09-05 04:12:48 505 setuptools/_vendor/importlib_resources/_adapters.py 2024-09-05 04:12:48 4482 setuptools/_vendor/importlib_resources/_common.py 2024-09-05 04:12:48 5571 setuptools/_vendor/importlib_resources/_itertools.py 2024-09-05 04:12:48 1277 setuptools/_vendor/importlib_resources/abc.py 2024-09-05 04:12:48 5162 setuptools/_vendor/importlib_resources/functional.py 2024-09-05 04:12:48 2651 setuptools/_vendor/importlib_resources/py.typed 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_resources/readers.py 2024-09-05 04:12:48 5863 setuptools/_vendor/importlib_resources/simple.py 2024-09-05 04:12:48 2584 setuptools/_vendor/importlib_resources/compat/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_resources/compat/py38.py 2024-09-05 04:12:48 230 setuptools/_vendor/importlib_resources/compat/py39.py 2024-09-05 04:12:48 184 setuptools/_vendor/importlib_resources/future/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_resources/future/adapters.py 2024-09-05 04:12:48 2940 setuptools/_vendor/importlib_resources/tests/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_resources/tests/_path.py 2024-09-05 04:12:48 1289 setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py 2024-09-05 04:12:48 3314 setuptools/_vendor/importlib_resources/tests/test_contents.py 2024-09-05 04:12:48 930 setuptools/_vendor/importlib_resources/tests/test_custom.py 2024-09-05 04:12:48 1221 setuptools/_vendor/importlib_resources/tests/test_files.py 2024-09-05 04:12:48 3472 setuptools/_vendor/importlib_resources/tests/test_functional.py 2024-09-05 04:12:48 8591 setuptools/_vendor/importlib_resources/tests/test_open.py 2024-09-05 04:12:48 2778 setuptools/_vendor/importlib_resources/tests/test_path.py 2024-09-05 04:12:48 2009 setuptools/_vendor/importlib_resources/tests/test_read.py 2024-09-05 04:12:48 3112 setuptools/_vendor/importlib_resources/tests/test_reader.py 2024-09-05 04:12:48 5001 setuptools/_vendor/importlib_resources/tests/test_resource.py 2024-09-05 04:12:48 7823 setuptools/_vendor/importlib_resources/tests/util.py 2024-09-05 04:12:48 4745 setuptools/_vendor/importlib_resources/tests/zip.py 2024-09-05 04:12:48 783 setuptools/_vendor/importlib_resources/tests/compat/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_resources/tests/compat/py312.py 2024-09-05 04:12:48 364 setuptools/_vendor/importlib_resources/tests/compat/py39.py 2024-09-05 04:12:48 329 setuptools/_vendor/importlib_resources/tests/data01/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_resources/tests/data01/binary.file 2024-09-05 04:12:48 4 setuptools/_vendor/importlib_resources/tests/data01/utf-16.file 2024-09-05 04:12:48 44 setuptools/_vendor/importlib_resources/tests/data01/utf-8.file 2024-09-05 04:12:48 20 setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_resources/tests/data01/subdirectory/binary.file 2024-09-05 04:12:48 4 setuptools/_vendor/importlib_resources/tests/data02/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_resources/tests/data02/one/resource1.txt 2024-09-05 04:12:48 13 setuptools/_vendor/importlib_resources/tests/data02/subdirectory/subsubdir/resource.txt 2024-09-05 04:12:48 10 setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_resources/tests/data02/two/resource2.txt 2024-09-05 04:12:48 13 setuptools/_vendor/importlib_resources/tests/namespacedata01/binary.file 2024-09-05 04:12:48 4 setuptools/_vendor/importlib_resources/tests/namespacedata01/utf-16.file 2024-09-05 04:12:48 44 setuptools/_vendor/importlib_resources/tests/namespacedata01/utf-8.file 2024-09-05 04:12:48 20 setuptools/_vendor/importlib_resources/tests/namespacedata01/subdirectory/binary.file 2024-09-05 04:12:48 4 setuptools/_vendor/inflect/__init__.py 2024-09-05 04:12:48 103796 setuptools/_vendor/inflect/py.typed 2024-09-05 04:12:48 0 setuptools/_vendor/inflect/compat/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/inflect/compat/py38.py 2024-09-05 04:12:48 160 setuptools/_vendor/jaraco/context.py 2024-09-05 04:12:48 9552 setuptools/_vendor/jaraco/functools/__init__.py 2024-09-05 04:12:48 16642 setuptools/_vendor/jaraco/functools/__init__.pyi 2024-09-05 04:12:48 3878 setuptools/_vendor/jaraco/functools/py.typed 2024-09-05 04:12:48 0 setuptools/_vendor/jaraco/text/Lorem ipsum.txt 2024-09-05 04:12:48 1335 setuptools/_vendor/jaraco/text/__init__.py 2024-09-05 04:12:48 16250 setuptools/_vendor/jaraco/text/layouts.py 2024-09-05 04:12:48 643 setuptools/_vendor/jaraco/text/show-newlines.py 2024-09-05 04:12:48 904 setuptools/_vendor/jaraco/text/strip-prefix.py 2024-09-05 04:12:48 412 setuptools/_vendor/jaraco/text/to-dvorak.py 2024-09-05 04:12:48 119 setuptools/_vendor/jaraco/text/to-qwerty.py 2024-09-05 04:12:48 119 setuptools/_vendor/more_itertools/__init__.py 2024-09-05 04:12:48 149 setuptools/_vendor/more_itertools/__init__.pyi 2024-09-05 04:12:48 43 setuptools/_vendor/more_itertools/more.py 2024-09-05 04:12:48 148370 setuptools/_vendor/more_itertools/more.pyi 2024-09-05 04:12:48 21484 setuptools/_vendor/more_itertools/py.typed 2024-09-05 04:12:48 0 setuptools/_vendor/more_itertools/recipes.py 2024-09-05 04:12:48 28591 setuptools/_vendor/more_itertools/recipes.pyi 2024-09-05 04:12:48 4617 setuptools/_vendor/packaging/__init__.py 2024-09-05 04:12:48 496 setuptools/_vendor/packaging/_elffile.py 2024-09-05 04:12:48 3282 setuptools/_vendor/packaging/_manylinux.py 2024-09-05 04:12:48 9586 setuptools/_vendor/packaging/_musllinux.py 2024-09-05 04:12:48 2694 setuptools/_vendor/packaging/_parser.py 2024-09-05 04:12:48 10236 setuptools/_vendor/packaging/_structures.py 2024-09-05 04:12:48 1431 setuptools/_vendor/packaging/_tokenizer.py 2024-09-05 04:12:48 5273 setuptools/_vendor/packaging/markers.py 2024-09-05 04:12:48 10671 setuptools/_vendor/packaging/metadata.py 2024-09-05 04:12:48 32349 setuptools/_vendor/packaging/py.typed 2024-09-05 04:12:48 0 setuptools/_vendor/packaging/requirements.py 2024-09-05 04:12:48 2947 setuptools/_vendor/packaging/specifiers.py 2024-09-05 04:12:48 39714 setuptools/_vendor/packaging/tags.py 2024-09-05 04:12:48 18883 setuptools/_vendor/packaging/utils.py 2024-09-05 04:12:48 5287 setuptools/_vendor/packaging/version.py 2024-09-05 04:12:48 16198 setuptools/_vendor/platformdirs/__init__.py 2024-09-05 04:12:48 22225 setuptools/_vendor/platformdirs/__main__.py 2024-09-05 04:12:48 1493 setuptools/_vendor/platformdirs/android.py 2024-09-05 04:12:48 9016 setuptools/_vendor/platformdirs/api.py 2024-09-05 04:12:48 8996 setuptools/_vendor/platformdirs/macos.py 2024-09-05 04:12:48 5580 setuptools/_vendor/platformdirs/py.typed 2024-09-05 04:12:48 0 setuptools/_vendor/platformdirs/unix.py 2024-09-05 04:12:48 10643 setuptools/_vendor/platformdirs/version.py 2024-09-05 04:12:48 411 setuptools/_vendor/platformdirs/windows.py 2024-09-05 04:12:48 10125 setuptools/_vendor/platformdirs-4.2.2.dist-info/licenses/LICENSE 2024-09-05 04:12:48 1089 setuptools/_vendor/tomli/__init__.py 2024-09-05 04:12:48 396 setuptools/_vendor/tomli/_parser.py 2024-09-05 04:12:48 22633 setuptools/_vendor/tomli/_re.py 2024-09-05 04:12:48 2943 setuptools/_vendor/tomli/_types.py 2024-09-05 04:12:48 254 setuptools/_vendor/tomli/py.typed 2024-09-05 04:12:48 26 setuptools/_vendor/typeguard/__init__.py 2024-09-05 04:12:48 2071 setuptools/_vendor/typeguard/_checkers.py 2024-09-05 04:12:48 31360 setuptools/_vendor/typeguard/_config.py 2024-09-05 04:12:48 2846 setuptools/_vendor/typeguard/_decorators.py 2024-09-05 04:12:48 9033 setuptools/_vendor/typeguard/_exceptions.py 2024-09-05 04:12:48 1121 setuptools/_vendor/typeguard/_functions.py 2024-09-05 04:12:48 10393 setuptools/_vendor/typeguard/_importhook.py 2024-09-05 04:12:48 6389 setuptools/_vendor/typeguard/_memo.py 2024-09-05 04:12:48 1303 setuptools/_vendor/typeguard/_pytest_plugin.py 2024-09-05 04:12:48 4416 setuptools/_vendor/typeguard/_suppression.py 2024-09-05 04:12:48 2266 setuptools/_vendor/typeguard/_transformer.py 2024-09-05 04:12:48 44937 setuptools/_vendor/typeguard/_union_transformer.py 2024-09-05 04:12:48 1354 setuptools/_vendor/typeguard/_utils.py 2024-09-05 04:12:48 5270 setuptools/_vendor/typeguard/py.typed 2024-09-05 04:12:48 0 setuptools/_vendor/wheel/__init__.py 2024-09-05 04:12:48 59 setuptools/_vendor/wheel/__main__.py 2024-09-05 04:12:48 455 setuptools/_vendor/wheel/_setuptools_logging.py 2024-09-05 04:12:48 746 setuptools/_vendor/wheel/bdist_wheel.py 2024-09-05 04:12:48 20938 setuptools/_vendor/wheel/macosx_libfile.py 2024-09-05 04:12:48 16103 setuptools/_vendor/wheel/metadata.py 2024-09-05 04:12:48 5884 setuptools/_vendor/wheel/util.py 2024-09-05 04:12:48 621 setuptools/_vendor/wheel/wheelfile.py 2024-09-05 04:12:48 7694 setuptools/_vendor/wheel/cli/__init__.py 2024-09-05 04:12:48 4264 setuptools/_vendor/wheel/cli/convert.py 2024-09-05 04:12:48 9439 setuptools/_vendor/wheel/cli/pack.py 2024-09-05 04:12:48 3103 setuptools/_vendor/wheel/cli/tags.py 2024-09-05 04:12:48 4760 setuptools/_vendor/wheel/cli/unpack.py 2024-09-05 04:12:48 1021 setuptools/_vendor/wheel/vendored/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/wheel/vendored/vendor.txt 2024-09-05 04:12:48 16 setuptools/_vendor/wheel/vendored/packaging/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/wheel/vendored/packaging/_elffile.py 2024-09-05 04:12:48 3266 setuptools/_vendor/wheel/vendored/packaging/_manylinux.py 2024-09-05 04:12:48 9588 setuptools/_vendor/wheel/vendored/packaging/_musllinux.py 2024-09-05 04:12:48 2674 setuptools/_vendor/wheel/vendored/packaging/_parser.py 2024-09-05 04:12:48 10347 setuptools/_vendor/wheel/vendored/packaging/_structures.py 2024-09-05 04:12:48 1431 setuptools/_vendor/wheel/vendored/packaging/_tokenizer.py 2024-09-05 04:12:48 5292 setuptools/_vendor/wheel/vendored/packaging/markers.py 2024-09-05 04:12:48 8232 setuptools/_vendor/wheel/vendored/packaging/requirements.py 2024-09-05 04:12:48 2933 setuptools/_vendor/wheel/vendored/packaging/specifiers.py 2024-09-05 04:12:48 39778 setuptools/_vendor/wheel/vendored/packaging/tags.py 2024-09-05 04:12:48 18950 setuptools/_vendor/wheel/vendored/packaging/utils.py 2024-09-05 04:12:48 5268 setuptools/_vendor/wheel/vendored/packaging/version.py 2024-09-05 04:12:48 16234 setuptools/_vendor/zipp/__init__.py 2024-09-05 04:12:48 13412 setuptools/_vendor/zipp/glob.py 2024-09-05 04:12:48 3082 setuptools/_vendor/zipp/compat/__init__.py 2024-09-05 04:12:48 0 setuptools/_vendor/zipp/compat/py310.py 2024-09-05 04:12:48 219 setuptools/command/__init__.py 2024-09-05 04:12:48 397 setuptools/command/_requirestxt.py 2024-09-05 04:12:48 4227 setuptools/command/alias.py 2024-09-05 04:12:48 2383 setuptools/command/bdist_egg.py 2024-09-05 04:12:48 16526 setuptools/command/bdist_rpm.py 2024-09-05 04:12:48 1427 setuptools/command/bdist_wheel.py 2024-09-05 04:12:48 22200 setuptools/command/build.py 2024-09-05 04:12:48 6028 setuptools/command/build_clib.py 2024-09-05 04:12:48 4736 setuptools/command/build_ext.py 2024-09-05 04:12:48 18264 setuptools/command/build_py.py 2024-09-05 04:12:48 15327 setuptools/command/develop.py 2024-09-05 04:12:48 6854 setuptools/command/dist_info.py 2024-09-05 04:12:48 3508 setuptools/command/easy_install.py 2024-09-05 04:12:48 88307 setuptools/command/editable_wheel.py 2024-09-05 04:12:48 35665 setuptools/command/egg_info.py 2024-09-05 04:12:48 25610 setuptools/command/install.py 2024-09-05 04:12:48 6208 setuptools/command/install_egg_info.py 2024-09-05 04:12:48 2046 setuptools/command/install_lib.py 2024-09-05 04:12:48 4133 setuptools/command/install_scripts.py 2024-09-05 04:12:48 2614 setuptools/command/launcher manifest.xml 2024-09-05 04:12:48 628 setuptools/command/register.py 2024-09-05 04:12:48 605 setuptools/command/rotate.py 2024-09-05 04:12:48 2145 setuptools/command/saveopts.py 2024-09-05 04:12:48 657 setuptools/command/sdist.py 2024-09-05 04:12:48 7277 setuptools/command/setopt.py 2024-09-05 04:12:48 5019 setuptools/command/test.py 2024-09-05 04:12:48 1343 setuptools/command/upload.py 2024-09-05 04:12:48 607 setuptools/command/upload_docs.py 2024-09-05 04:12:48 7754 setuptools/compat/__init__.py 2024-09-05 04:12:48 0 setuptools/compat/py310.py 2024-09-05 04:12:48 141 setuptools/compat/py311.py 2024-09-05 04:12:48 790 setuptools/compat/py312.py 2024-09-05 04:12:48 366 setuptools/compat/py39.py 2024-09-05 04:12:48 493 setuptools/config/NOTICE 2024-09-05 04:12:48 493 setuptools/config/__init__.py 2024-09-05 04:12:48 1499 setuptools/config/_apply_pyprojecttoml.py 2024-09-05 04:12:48 15457 setuptools/config/distutils.schema.json 2024-09-05 04:12:48 972 setuptools/config/expand.py 2024-09-05 04:12:48 15659 setuptools/config/pyprojecttoml.py 2024-09-05 04:12:48 18142 setuptools/config/setupcfg.py 2024-09-05 04:12:48 25634 setuptools/config/setuptools.schema.json 2024-09-05 04:12:48 16071 setuptools/config/_validate_pyproject/NOTICE 2024-09-05 04:12:48 18737 setuptools/config/_validate_pyproject/__init__.py 2024-09-05 04:12:48 1042 setuptools/config/_validate_pyproject/error_reporting.py 2024-09-05 04:12:48 11813 setuptools/config/_validate_pyproject/extra_validations.py 2024-09-05 04:12:48 1625 setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py 2024-09-05 04:12:48 1612 setuptools/config/_validate_pyproject/fastjsonschema_validations.py 2024-09-05 04:12:48 335460 setuptools/config/_validate_pyproject/formats.py 2024-09-05 04:12:48 12814 setuptools/tests/__init__.py 2024-09-05 04:12:48 335 setuptools/tests/contexts.py 2024-09-05 04:12:48 3480 setuptools/tests/environment.py 2024-09-05 04:12:48 3102 setuptools/tests/fixtures.py 2024-09-05 04:12:48 5197 setuptools/tests/mod_with_constant.py 2024-09-05 04:12:48 22 setuptools/tests/namespaces.py 2024-09-05 04:12:48 2774 setuptools/tests/script-with-bom.py 2024-09-05 04:12:48 18 setuptools/tests/server.py 2024-09-05 04:12:48 2403 setuptools/tests/test_archive_util.py 2024-09-05 04:12:48 845 setuptools/tests/test_bdist_deprecations.py 2024-09-05 04:12:48 775 setuptools/tests/test_bdist_egg.py 2024-09-05 04:12:48 1851 setuptools/tests/test_bdist_wheel.py 2024-09-05 04:12:48 19236 setuptools/tests/test_build.py 2024-09-05 04:12:48 798 setuptools/tests/test_build_clib.py 2024-09-05 04:12:48 3123 setuptools/tests/test_build_ext.py 2024-09-05 04:12:48 10036 setuptools/tests/test_build_meta.py 2024-09-05 04:12:48 33649 setuptools/tests/test_build_py.py 2024-09-05 04:12:48 14185 setuptools/tests/test_config_discovery.py 2024-09-05 04:12:48 22562 setuptools/tests/test_core_metadata.py 2024-09-05 04:12:48 12183 setuptools/tests/test_depends.py 2024-09-05 04:12:48 424 setuptools/tests/test_develop.py 2024-09-05 04:12:48 5142 setuptools/tests/test_dist.py 2024-09-05 04:12:48 8811 setuptools/tests/test_dist_info.py 2024-09-05 04:12:48 7090 setuptools/tests/test_distutils_adoption.py 2024-09-05 04:12:48 4747 setuptools/tests/test_easy_install.py 2024-09-05 04:12:48 53241 setuptools/tests/test_editable_install.py 2024-09-05 04:12:48 43304 setuptools/tests/test_egg_info.py 2024-09-05 04:12:48 44145 setuptools/tests/test_extern.py 2024-09-05 04:12:48 296 setuptools/tests/test_find_packages.py 2024-09-05 04:12:48 7819 setuptools/tests/test_find_py_modules.py 2024-09-05 04:12:48 2404 setuptools/tests/test_glob.py 2024-09-05 04:12:48 881 setuptools/tests/test_install_scripts.py 2024-09-05 04:12:48 3441 setuptools/tests/test_logging.py 2024-09-05 04:12:48 2095 setuptools/tests/test_manifest.py 2024-09-05 04:12:48 18761 setuptools/tests/test_namespaces.py 2024-09-05 04:12:48 4515 setuptools/tests/test_packageindex.py 2024-09-05 04:12:48 8975 setuptools/tests/test_register.py 2024-09-05 04:12:48 517 setuptools/tests/test_sandbox.py 2024-09-05 04:12:48 4333 setuptools/tests/test_sdist.py 2024-09-05 04:12:48 32440 setuptools/tests/test_setopt.py 2024-09-05 04:12:48 1365 setuptools/tests/test_setuptools.py 2024-09-05 04:12:48 8978 setuptools/tests/test_unicode_utils.py 2024-09-05 04:12:48 316 setuptools/tests/test_upload.py 2024-09-05 04:12:48 507 setuptools/tests/test_virtualenv.py 2024-09-05 04:12:48 3809 setuptools/tests/test_warnings.py 2024-09-05 04:12:48 3347 setuptools/tests/test_wheel.py 2024-09-05 04:12:48 19259 setuptools/tests/test_windows_wrappers.py 2024-09-05 04:12:48 7894 setuptools/tests/text.py 2024-09-05 04:12:48 123 setuptools/tests/textwrap.py 2024-09-05 04:12:48 98 setuptools/tests/compat/__init__.py 2024-09-05 04:12:48 0 setuptools/tests/compat/py39.py 2024-09-05 04:12:48 135 setuptools/tests/config/__init__.py 2024-09-05 04:12:48 0 setuptools/tests/config/setupcfg_examples.txt 2024-09-05 04:12:48 1912 setuptools/tests/config/test_apply_pyprojecttoml.py 2024-09-05 04:12:48 19258 setuptools/tests/config/test_expand.py 2024-09-05 04:12:48 8111 setuptools/tests/config/test_pyprojecttoml.py 2024-09-05 04:12:48 12398 setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py 2024-09-05 04:12:48 3072 setuptools/tests/config/test_setupcfg.py 2024-09-05 04:12:48 33361 setuptools/tests/config/downloads/__init__.py 2024-09-05 04:12:48 1762 setuptools/tests/config/downloads/preload.py 2024-09-05 04:12:48 450 setuptools/tests/indexes/test_links_priority/external.html 2024-09-05 04:12:48 92 setuptools/tests/indexes/test_links_priority/simple/foobar/index.html 2024-09-05 04:12:48 174 setuptools/tests/integration/__init__.py 2024-09-05 04:12:48 0 setuptools/tests/integration/helpers.py 2024-09-05 04:12:48 2522 setuptools/tests/integration/test_pip_install_sdist.py 2024-09-05 04:12:48 8288 setuptools-74.1.2.dist-info/LICENSE 2024-09-05 04:13:14 1023 setuptools-74.1.2.dist-info/METADATA 2024-09-05 04:13:14 6662 setuptools-74.1.2.dist-info/WHEEL 2024-09-05 04:13:14 91 setuptools-74.1.2.dist-info/entry_points.txt 2024-09-05 04:13:14 2506 setuptools-74.1.2.dist-info/top_level.txt 2024-09-05 04:13:14 41 setuptools/_vendor/autocommand-2.2.2.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/autocommand-2.2.2.dist-info/LICENSE 2024-09-05 04:12:48 7634 setuptools/_vendor/autocommand-2.2.2.dist-info/METADATA 2024-09-05 04:12:48 15006 setuptools/_vendor/autocommand-2.2.2.dist-info/RECORD 2024-09-05 04:12:48 1308 setuptools/_vendor/autocommand-2.2.2.dist-info/WHEEL 2024-09-05 04:12:48 92 setuptools/_vendor/autocommand-2.2.2.dist-info/top_level.txt 2024-09-05 04:12:48 12 setuptools/_vendor/backports.tarfile-1.2.0.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/backports.tarfile-1.2.0.dist-info/LICENSE 2024-09-05 04:12:48 1023 setuptools/_vendor/backports.tarfile-1.2.0.dist-info/METADATA 2024-09-05 04:12:48 2020 setuptools/_vendor/backports.tarfile-1.2.0.dist-info/RECORD 2024-09-05 04:12:48 1360 setuptools/_vendor/backports.tarfile-1.2.0.dist-info/REQUESTED 2024-09-05 04:12:48 0 setuptools/_vendor/backports.tarfile-1.2.0.dist-info/WHEEL 2024-09-05 04:12:48 92 setuptools/_vendor/backports.tarfile-1.2.0.dist-info/top_level.txt 2024-09-05 04:12:48 10 setuptools/_vendor/importlib_metadata-8.0.0.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/importlib_metadata-8.0.0.dist-info/LICENSE 2024-09-05 04:12:48 11358 setuptools/_vendor/importlib_metadata-8.0.0.dist-info/METADATA 2024-09-05 04:12:48 4648 setuptools/_vendor/importlib_metadata-8.0.0.dist-info/RECORD 2024-09-05 04:12:48 2518 setuptools/_vendor/importlib_metadata-8.0.0.dist-info/REQUESTED 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_metadata-8.0.0.dist-info/WHEEL 2024-09-05 04:12:48 91 setuptools/_vendor/importlib_metadata-8.0.0.dist-info/top_level.txt 2024-09-05 04:12:48 19 setuptools/_vendor/importlib_resources-6.4.0.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/importlib_resources-6.4.0.dist-info/LICENSE 2024-09-05 04:12:48 11358 setuptools/_vendor/importlib_resources-6.4.0.dist-info/METADATA 2024-09-05 04:12:48 3944 setuptools/_vendor/importlib_resources-6.4.0.dist-info/RECORD 2024-09-05 04:12:48 7620 setuptools/_vendor/importlib_resources-6.4.0.dist-info/REQUESTED 2024-09-05 04:12:48 0 setuptools/_vendor/importlib_resources-6.4.0.dist-info/WHEEL 2024-09-05 04:12:48 92 setuptools/_vendor/importlib_resources-6.4.0.dist-info/top_level.txt 2024-09-05 04:12:48 20 setuptools/_vendor/inflect-7.3.1.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/inflect-7.3.1.dist-info/LICENSE 2024-09-05 04:12:48 1023 setuptools/_vendor/inflect-7.3.1.dist-info/METADATA 2024-09-05 04:12:48 21079 setuptools/_vendor/inflect-7.3.1.dist-info/RECORD 2024-09-05 04:12:48 943 setuptools/_vendor/inflect-7.3.1.dist-info/WHEEL 2024-09-05 04:12:48 91 setuptools/_vendor/inflect-7.3.1.dist-info/top_level.txt 2024-09-05 04:12:48 8 setuptools/_vendor/jaraco.context-5.3.0.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/jaraco.context-5.3.0.dist-info/LICENSE 2024-09-05 04:12:48 1023 setuptools/_vendor/jaraco.context-5.3.0.dist-info/METADATA 2024-09-05 04:12:48 4020 setuptools/_vendor/jaraco.context-5.3.0.dist-info/RECORD 2024-09-05 04:12:48 641 setuptools/_vendor/jaraco.context-5.3.0.dist-info/WHEEL 2024-09-05 04:12:48 92 setuptools/_vendor/jaraco.context-5.3.0.dist-info/top_level.txt 2024-09-05 04:12:48 7 setuptools/_vendor/jaraco.functools-4.0.1.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/jaraco.functools-4.0.1.dist-info/LICENSE 2024-09-05 04:12:48 1023 setuptools/_vendor/jaraco.functools-4.0.1.dist-info/METADATA 2024-09-05 04:12:48 2891 setuptools/_vendor/jaraco.functools-4.0.1.dist-info/RECORD 2024-09-05 04:12:48 843 setuptools/_vendor/jaraco.functools-4.0.1.dist-info/WHEEL 2024-09-05 04:12:48 92 setuptools/_vendor/jaraco.functools-4.0.1.dist-info/top_level.txt 2024-09-05 04:12:48 7 setuptools/_vendor/jaraco.text-3.12.1.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/jaraco.text-3.12.1.dist-info/LICENSE 2024-09-05 04:12:48 1023 setuptools/_vendor/jaraco.text-3.12.1.dist-info/METADATA 2024-09-05 04:12:48 3658 setuptools/_vendor/jaraco.text-3.12.1.dist-info/RECORD 2024-09-05 04:12:48 1500 setuptools/_vendor/jaraco.text-3.12.1.dist-info/REQUESTED 2024-09-05 04:12:48 0 setuptools/_vendor/jaraco.text-3.12.1.dist-info/WHEEL 2024-09-05 04:12:48 92 setuptools/_vendor/jaraco.text-3.12.1.dist-info/top_level.txt 2024-09-05 04:12:48 7 setuptools/_vendor/more_itertools-10.3.0.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/more_itertools-10.3.0.dist-info/LICENSE 2024-09-05 04:12:48 1053 setuptools/_vendor/more_itertools-10.3.0.dist-info/METADATA 2024-09-05 04:12:48 36293 setuptools/_vendor/more_itertools-10.3.0.dist-info/RECORD 2024-09-05 04:12:48 1259 setuptools/_vendor/more_itertools-10.3.0.dist-info/REQUESTED 2024-09-05 04:12:48 0 setuptools/_vendor/more_itertools-10.3.0.dist-info/WHEEL 2024-09-05 04:12:48 81 setuptools/_vendor/packaging-24.1.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/packaging-24.1.dist-info/LICENSE 2024-09-05 04:12:48 197 setuptools/_vendor/packaging-24.1.dist-info/LICENSE.APACHE 2024-09-05 04:12:48 10174 setuptools/_vendor/packaging-24.1.dist-info/LICENSE.BSD 2024-09-05 04:12:48 1344 setuptools/_vendor/packaging-24.1.dist-info/METADATA 2024-09-05 04:12:48 3204 setuptools/_vendor/packaging-24.1.dist-info/RECORD 2024-09-05 04:12:48 2565 setuptools/_vendor/packaging-24.1.dist-info/REQUESTED 2024-09-05 04:12:48 0 setuptools/_vendor/packaging-24.1.dist-info/WHEEL 2024-09-05 04:12:48 81 setuptools/_vendor/platformdirs-4.2.2.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/platformdirs-4.2.2.dist-info/METADATA 2024-09-05 04:12:48 11429 setuptools/_vendor/platformdirs-4.2.2.dist-info/RECORD 2024-09-05 04:12:48 1642 setuptools/_vendor/platformdirs-4.2.2.dist-info/REQUESTED 2024-09-05 04:12:48 0 setuptools/_vendor/platformdirs-4.2.2.dist-info/WHEEL 2024-09-05 04:12:48 87 setuptools/_vendor/tomli-2.0.1.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/tomli-2.0.1.dist-info/LICENSE 2024-09-05 04:12:48 1072 setuptools/_vendor/tomli-2.0.1.dist-info/METADATA 2024-09-05 04:12:48 8875 setuptools/_vendor/tomli-2.0.1.dist-info/RECORD 2024-09-05 04:12:48 999 setuptools/_vendor/tomli-2.0.1.dist-info/REQUESTED 2024-09-05 04:12:48 0 setuptools/_vendor/tomli-2.0.1.dist-info/WHEEL 2024-09-05 04:12:48 81 setuptools/_vendor/typeguard-4.3.0.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/typeguard-4.3.0.dist-info/LICENSE 2024-09-05 04:12:48 1130 setuptools/_vendor/typeguard-4.3.0.dist-info/METADATA 2024-09-05 04:12:48 3717 setuptools/_vendor/typeguard-4.3.0.dist-info/RECORD 2024-09-05 04:12:48 2402 setuptools/_vendor/typeguard-4.3.0.dist-info/WHEEL 2024-09-05 04:12:48 92 setuptools/_vendor/typeguard-4.3.0.dist-info/entry_points.txt 2024-09-05 04:12:48 48 setuptools/_vendor/typeguard-4.3.0.dist-info/top_level.txt 2024-09-05 04:12:48 10 setuptools/_vendor/typing_extensions-4.12.2.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/typing_extensions-4.12.2.dist-info/LICENSE 2024-09-05 04:12:48 13936 setuptools/_vendor/typing_extensions-4.12.2.dist-info/METADATA 2024-09-05 04:12:48 3018 setuptools/_vendor/typing_extensions-4.12.2.dist-info/RECORD 2024-09-05 04:12:48 571 setuptools/_vendor/typing_extensions-4.12.2.dist-info/WHEEL 2024-09-05 04:12:48 81 setuptools/_vendor/wheel-0.43.0.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/wheel-0.43.0.dist-info/LICENSE.txt 2024-09-05 04:12:48 1107 setuptools/_vendor/wheel-0.43.0.dist-info/METADATA 2024-09-05 04:12:48 2153 setuptools/_vendor/wheel-0.43.0.dist-info/RECORD 2024-09-05 04:12:48 4557 setuptools/_vendor/wheel-0.43.0.dist-info/REQUESTED 2024-09-05 04:12:48 0 setuptools/_vendor/wheel-0.43.0.dist-info/WHEEL 2024-09-05 04:12:48 81 setuptools/_vendor/wheel-0.43.0.dist-info/entry_points.txt 2024-09-05 04:12:48 104 setuptools/_vendor/zipp-3.19.2.dist-info/INSTALLER 2024-09-05 04:12:48 4 setuptools/_vendor/zipp-3.19.2.dist-info/LICENSE 2024-09-05 04:12:48 1023 setuptools/_vendor/zipp-3.19.2.dist-info/METADATA 2024-09-05 04:12:48 3575 setuptools/_vendor/zipp-3.19.2.dist-info/RECORD 2024-09-05 04:12:48 1039 setuptools/_vendor/zipp-3.19.2.dist-info/REQUESTED 2024-09-05 04:12:48 0 setuptools/_vendor/zipp-3.19.2.dist-info/WHEEL 2024-09-05 04:12:48 92 setuptools/_vendor/zipp-3.19.2.dist-info/top_level.txt 2024-09-05 04:12:48 5 setuptools-74.1.2.dist-info/RECORD 2024-09-05 04:13:16 56204 ```

I've found one reference indicating that zipimport can't load such archives.

@gaborbernat Can you confirm that the archives used in virtualenv have the same issue (no explicit directory entries)?

jaraco commented 1 month ago

It's a known bug in Python (https://github.com/python/cpython/issues/59110), fixed in Python 3.14 apparently. I've been using Python 3.13.0rc1+.

Prior to that change, Python considered zip files with no explicit directories to be "broken".

gaborbernat commented 1 month ago

Be that so, the change to the simplified vendoring is breaking existing behavior :D and 3.13 EOL is very far :D

jaraco commented 1 month ago

Downloading the zip archive from GitHub, which has the explicit directories, doesn't encounter the issue:

 draft 🐚 http -q --download https://github.com/pypa/setuptools/archive/refs/tags/v74.1.2.zip
 draft 🐚 env PYTHONPATH=setuptools-74.1.2.zip/setuptools-74.1.2 py -c 'import setuptools' && echo done
done

The workarounds/solutions are several:

I don't think there's anything Setuptools can or should do here. Reviving the re-write vendoring technique is not viable.

gaborbernat commented 1 month ago
  • include explicit directory entries in the relevant zip archive

If you are not controlling creating the archive, this will not work.

  • install the setuptools[core] dependencies explicitly in the archive (may still not work for the namespace package without explicit directory entries)

You already highlighted why this might not work.

  • rely on Python 3.14 or later

Not really a solution for at least another year for apps. Not a solution at all until another 6 for libraries.

  • pin to Setuptools < 71

This can work but means no bug fixes or feature additions for people using this feature.

So none of the workarounds is an all around solution IMHO.

jaraco commented 1 month ago

I'm not aware of any options that Setuptools could employ to overcome this situation. If someone else has suggestions, I'm open to ideas.

gaborbernat commented 1 month ago

The previous vendoring solution did not manifest this issue, but I understand you do not want to back.