diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..11c7862 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +**/**/setup.py merge=ours +**/**/pyproject.toml merge=ours +table.md merge=ours diff --git a/README.md b/README.md index 4ffda8f..3cc07d3 100644 --- a/README.md +++ b/README.md @@ -44,8 +44,8 @@ However, developers might be interested in carrying out a *staggered migration* to mitigate the migration effort and spread the work load in time. Based on the results for the scenarios mixing `pkg_resources` and other namespace methods reported in -[table.md](table.md) and [legacy_table.md](legacy_table.md), -we can see that (in principle) a staggered migration plan can be successful, +[table.md](table.md) and [legacy_table.md](https://github.com/pypa/sample-namespace-packages/blob/master/legacy_table.md) +(only available for flat layout), we can see that (in principle) a staggered migration plan can be successful, as long as the developers are willing to accept some limitations: - Deprecated installation methods will not be supported (e.g. `python setup.py install`), @@ -57,4 +57,4 @@ specific use cases they are interested in supporting. [^1]: If you would like to know about deprecated installation methods (e.g. via - `python setup.py install`) or Python 2.7, please have a look at [legacy_table.md](legacy_table.md). + `python setup.py install`) or Python 2.7 for the flat layout, please have a look at [legacy_table.md](https://github.com/pypa/sample-namespace-packages/blob/master/legacy_table.md). diff --git a/legacy_table.md b/legacy_table.md deleted file mode 100644 index ba466ae..0000000 --- a/legacy_table.md +++ /dev/null @@ -1,162 +0,0 @@ -| Type | Interpreter | Package A command | Package B command | Status | -| --- | --- | --- | --- | --- | -| pkgutil | python2.7 | pip install . | pip install . | ✅ | -| pkgutil | python2.7 | pip install . | pip install -e . | ✅ | -| pkgutil | python2.7 | pip install . | python setup.py install | ✅ | -| pkgutil | python2.7 | pip install . | python setup.py develop | ✅ | -| pkgutil | python2.7 | pip install -e . | pip install . | ✅ | -| pkgutil | python2.7 | pip install -e . | pip install -e . | ✅ | -| pkgutil | python2.7 | pip install -e . | python setup.py install | ✅ | -| pkgutil | python2.7 | pip install -e . | python setup.py develop | ✅ | -| pkgutil | python2.7 | python setup.py install | pip install . | ✅ | -| pkgutil | python2.7 | python setup.py install | pip install -e . | ✅ | -| pkgutil | python2.7 | python setup.py install | python setup.py install | ✅ | -| pkgutil | python2.7 | python setup.py install | python setup.py develop | ✅ | -| pkgutil | python2.7 | python setup.py develop | pip install . | ✅ | -| pkgutil | python2.7 | python setup.py develop | pip install -e . | ✅ | -| pkgutil | python2.7 | python setup.py develop | python setup.py install | ✅ | -| pkgutil | python2.7 | python setup.py develop | python setup.py develop | ✅ | -| pkgutil | python3.7 | pip install . | pip install . | ✅ | -| pkgutil | python3.7 | pip install . | pip install -e . | ✅ | -| pkgutil | python3.7 | pip install . | python setup.py install | ✅ | -| pkgutil | python3.7 | pip install . | python setup.py develop | ✅ | -| pkgutil | python3.7 | pip install -e . | pip install . | ✅ | -| pkgutil | python3.7 | pip install -e . | pip install -e . | ✅ | -| pkgutil | python3.7 | pip install -e . | python setup.py install | ✅ | -| pkgutil | python3.7 | pip install -e . | python setup.py develop | ✅ | -| pkgutil | python3.7 | python setup.py install | pip install . | ✅ | -| pkgutil | python3.7 | python setup.py install | pip install -e . | ✅ | -| pkgutil | python3.7 | python setup.py install | python setup.py install | ✅ | -| pkgutil | python3.7 | python setup.py install | python setup.py develop | ✅ | -| pkgutil | python3.7 | python setup.py develop | pip install . | ✅ | -| pkgutil | python3.7 | python setup.py develop | pip install -e . | ✅ | -| pkgutil | python3.7 | python setup.py develop | python setup.py install | ✅ | -| pkgutil | python3.7 | python setup.py develop | python setup.py develop | ✅ | -| pkg_resources | python2.7 | pip install . | pip install . | ✅ | -| pkg_resources | python2.7 | pip install . | pip install -e . | ✅ | -| pkg_resources | python2.7 | pip install . | python setup.py install | ❌ | -| pkg_resources | python2.7 | pip install . | python setup.py develop | ✅ | -| pkg_resources | python2.7 | pip install -e . | pip install . | ✅ | -| pkg_resources | python2.7 | pip install -e . | pip install -e . | ✅ | -| pkg_resources | python2.7 | pip install -e . | python setup.py install | ❌ | -| pkg_resources | python2.7 | pip install -e . | python setup.py develop | ✅ | -| pkg_resources | python2.7 | python setup.py install | pip install . | ❌ | -| pkg_resources | python2.7 | python setup.py install | pip install -e . | ❌ | -| pkg_resources | python2.7 | python setup.py install | python setup.py install | ✅ | -| pkg_resources | python2.7 | python setup.py install | python setup.py develop | ❌ | -| pkg_resources | python2.7 | python setup.py develop | pip install . | ✅ | -| pkg_resources | python2.7 | python setup.py develop | pip install -e . | ✅ | -| pkg_resources | python2.7 | python setup.py develop | python setup.py install | ❌ | -| pkg_resources | python2.7 | python setup.py develop | python setup.py develop | ✅ | -| pkg_resources | python3.7 | pip install . | pip install . | ✅ | -| pkg_resources | python3.7 | pip install . | pip install -e . | ✅ | -| pkg_resources | python3.7 | pip install . | python setup.py install | ❌ | -| pkg_resources | python3.7 | pip install . | python setup.py develop | ✅ | -| pkg_resources | python3.7 | pip install -e . | pip install . | ✅ | -| pkg_resources | python3.7 | pip install -e . | pip install -e . | ✅ | -| pkg_resources | python3.7 | pip install -e . | python setup.py install | ❌ | -| pkg_resources | python3.7 | pip install -e . | python setup.py develop | ✅ | -| pkg_resources | python3.7 | python setup.py install | pip install . | ❌ | -| pkg_resources | python3.7 | python setup.py install | pip install -e . | ❌ | -| pkg_resources | python3.7 | python setup.py install | python setup.py install | ✅ | -| pkg_resources | python3.7 | python setup.py install | python setup.py develop | ❌ | -| pkg_resources | python3.7 | python setup.py develop | pip install . | ✅ | -| pkg_resources | python3.7 | python setup.py develop | pip install -e . | ✅ | -| pkg_resources | python3.7 | python setup.py develop | python setup.py install | ❌ | -| pkg_resources | python3.7 | python setup.py develop | python setup.py develop | ✅ | -| pep420 | python2.7 | pip install . | pip install . | ❌ | -| pep420 | python2.7 | pip install . | pip install -e . | ❌ | -| pep420 | python2.7 | pip install . | python setup.py install | ❌ | -| pep420 | python2.7 | pip install . | python setup.py develop | ❌ | -| pep420 | python2.7 | pip install -e . | pip install . | ❌ | -| pep420 | python2.7 | pip install -e . | pip install -e . | ❌ | -| pep420 | python2.7 | pip install -e . | python setup.py install | ❌ | -| pep420 | python2.7 | pip install -e . | python setup.py develop | ❌ | -| pep420 | python2.7 | python setup.py install | pip install . | ❌ | -| pep420 | python2.7 | python setup.py install | pip install -e . | ❌ | -| pep420 | python2.7 | python setup.py install | python setup.py install | ❌ | -| pep420 | python2.7 | python setup.py install | python setup.py develop | ❌ | -| pep420 | python2.7 | python setup.py develop | pip install . | ❌ | -| pep420 | python2.7 | python setup.py develop | pip install -e . | ❌ | -| pep420 | python2.7 | python setup.py develop | python setup.py install | ❌ | -| pep420 | python2.7 | python setup.py develop | python setup.py develop | ❌ | -| pep420 | python3.7 | pip install . | pip install . | ✅ | -| pep420 | python3.7 | pip install . | pip install -e . | ✅ | -| pep420 | python3.7 | pip install . | python setup.py install | ✅ | -| pep420 | python3.7 | pip install . | python setup.py develop | ✅ | -| pep420 | python3.7 | pip install -e . | pip install . | ✅ | -| pep420 | python3.7 | pip install -e . | pip install -e . | ✅ | -| pep420 | python3.7 | pip install -e . | python setup.py install | ✅ | -| pep420 | python3.7 | pip install -e . | python setup.py develop | ✅ | -| pep420 | python3.7 | python setup.py install | pip install . | ✅ | -| pep420 | python3.7 | python setup.py install | pip install -e . | ✅ | -| pep420 | python3.7 | python setup.py install | python setup.py install | ✅ | -| pep420 | python3.7 | python setup.py install | python setup.py develop | ✅ | -| pep420 | python3.7 | python setup.py develop | pip install . | ✅ | -| pep420 | python3.7 | python setup.py develop | pip install -e . | ✅ | -| pep420 | python3.7 | python setup.py develop | python setup.py install | ✅ | -| pep420 | python3.7 | python setup.py develop | python setup.py develop | ✅ | -| cross_pkg_resources_pkgutil | python2.7 | pip install . | pip install . | ✅ | -| cross_pkg_resources_pkgutil | python2.7 | pip install . | pip install -e . | ❌ | -| cross_pkg_resources_pkgutil | python2.7 | pip install . | python setup.py install | ❌ | -| cross_pkg_resources_pkgutil | python2.7 | pip install . | python setup.py develop | ❌ | -| cross_pkg_resources_pkgutil | python2.7 | pip install -e . | pip install . | ❌ | -| cross_pkg_resources_pkgutil | python2.7 | pip install -e . | pip install -e . | ❌ | -| cross_pkg_resources_pkgutil | python2.7 | pip install -e . | python setup.py install | ❌ | -| cross_pkg_resources_pkgutil | python2.7 | pip install -e . | python setup.py develop | ❌ | -| cross_pkg_resources_pkgutil | python2.7 | python setup.py install | pip install . | ✅ | -| cross_pkg_resources_pkgutil | python2.7 | python setup.py install | pip install -e . | ✅ | -| cross_pkg_resources_pkgutil | python2.7 | python setup.py install | python setup.py install | ✅ | -| cross_pkg_resources_pkgutil | python2.7 | python setup.py install | python setup.py develop | ✅ | -| cross_pkg_resources_pkgutil | python2.7 | python setup.py develop | pip install . | ❌ | -| cross_pkg_resources_pkgutil | python2.7 | python setup.py develop | pip install -e . | ❌ | -| cross_pkg_resources_pkgutil | python2.7 | python setup.py develop | python setup.py install | ❌ | -| cross_pkg_resources_pkgutil | python2.7 | python setup.py develop | python setup.py develop | ❌ | -| cross_pkg_resources_pkgutil | python3.7 | pip install . | pip install . | ✅ | -| cross_pkg_resources_pkgutil | python3.7 | pip install . | pip install -e . | ❌ | -| cross_pkg_resources_pkgutil | python3.7 | pip install . | python setup.py install | ❌ | -| cross_pkg_resources_pkgutil | python3.7 | pip install . | python setup.py develop | ❌ | -| cross_pkg_resources_pkgutil | python3.7 | pip install -e . | pip install . | ❌ | -| cross_pkg_resources_pkgutil | python3.7 | pip install -e . | pip install -e . | ❌ | -| cross_pkg_resources_pkgutil | python3.7 | pip install -e . | python setup.py install | ❌ | -| cross_pkg_resources_pkgutil | python3.7 | pip install -e . | python setup.py develop | ❌ | -| cross_pkg_resources_pkgutil | python3.7 | python setup.py install | pip install . | ✅ | -| cross_pkg_resources_pkgutil | python3.7 | python setup.py install | pip install -e . | ✅ | -| cross_pkg_resources_pkgutil | python3.7 | python setup.py install | python setup.py install | ✅ | -| cross_pkg_resources_pkgutil | python3.7 | python setup.py install | python setup.py develop | ✅ | -| cross_pkg_resources_pkgutil | python3.7 | python setup.py develop | pip install . | ❌ | -| cross_pkg_resources_pkgutil | python3.7 | python setup.py develop | pip install -e . | ❌ | -| cross_pkg_resources_pkgutil | python3.7 | python setup.py develop | python setup.py install | ❌ | -| cross_pkg_resources_pkgutil | python3.7 | python setup.py develop | python setup.py develop | ❌ | -| cross_pep420_pkgutil | python2.7 | pip install . | pip install . | ✅ | -| cross_pep420_pkgutil | python2.7 | pip install . | pip install -e . | ❌ | -| cross_pep420_pkgutil | python2.7 | pip install . | python setup.py install | ❌ | -| cross_pep420_pkgutil | python2.7 | pip install . | python setup.py develop | ❌ | -| cross_pep420_pkgutil | python2.7 | pip install -e . | pip install . | ❌ | -| cross_pep420_pkgutil | python2.7 | pip install -e . | pip install -e . | ❌ | -| cross_pep420_pkgutil | python2.7 | pip install -e . | python setup.py install | ❌ | -| cross_pep420_pkgutil | python2.7 | pip install -e . | python setup.py develop | ❌ | -| cross_pep420_pkgutil | python2.7 | python setup.py install | pip install . | ❌ | -| cross_pep420_pkgutil | python2.7 | python setup.py install | pip install -e . | ❌ | -| cross_pep420_pkgutil | python2.7 | python setup.py install | python setup.py install | ❌ | -| cross_pep420_pkgutil | python2.7 | python setup.py install | python setup.py develop | ❌ | -| cross_pep420_pkgutil | python2.7 | python setup.py develop | pip install . | ❌ | -| cross_pep420_pkgutil | python2.7 | python setup.py develop | pip install -e . | ❌ | -| cross_pep420_pkgutil | python2.7 | python setup.py develop | python setup.py install | ❌ | -| cross_pep420_pkgutil | python2.7 | python setup.py develop | python setup.py develop | ❌ | -| cross_pep420_pkgutil | python3.7 | pip install . | pip install . | ✅ | -| cross_pep420_pkgutil | python3.7 | pip install . | pip install -e . | ✅ | -| cross_pep420_pkgutil | python3.7 | pip install . | python setup.py install | ✅ | -| cross_pep420_pkgutil | python3.7 | pip install . | python setup.py develop | ✅ | -| cross_pep420_pkgutil | python3.7 | pip install -e . | pip install . | ✅ | -| cross_pep420_pkgutil | python3.7 | pip install -e . | pip install -e . | ✅ | -| cross_pep420_pkgutil | python3.7 | pip install -e . | python setup.py install | ✅ | -| cross_pep420_pkgutil | python3.7 | pip install -e . | python setup.py develop | ✅ | -| cross_pep420_pkgutil | python3.7 | python setup.py install | pip install . | ✅ | -| cross_pep420_pkgutil | python3.7 | python setup.py install | pip install -e . | ✅ | -| cross_pep420_pkgutil | python3.7 | python setup.py install | python setup.py install | ✅ | -| cross_pep420_pkgutil | python3.7 | python setup.py install | python setup.py develop | ✅ | -| cross_pep420_pkgutil | python3.7 | python setup.py develop | pip install . | ✅ | -| cross_pep420_pkgutil | python3.7 | python setup.py develop | pip install -e . | ✅ | -| cross_pep420_pkgutil | python3.7 | python setup.py develop | python setup.py install | ✅ | -| cross_pep420_pkgutil | python3.7 | python setup.py develop | python setup.py develop | ✅ | diff --git a/native/pkg_a/setup.py b/native/pkg_a/setup.py index 8021a7a..ed4090f 100644 --- a/native/pkg_a/setup.py +++ b/native/pkg_a/setup.py @@ -27,7 +27,8 @@ author_email='jonwayne@google.com', license='Apache Software License', - - packages=['example_pkg.a'], + # This example uses automatic discovery. You can also implement custom discovery like this: + # packages=find_namespace_packages(where='src', include=['example_pkg.a']), + # package_dir={'': 'src'}, zip_safe=False, ) diff --git a/native/pkg_a/example_pkg/a/__init__.py b/native/pkg_a/src/example_pkg/a/__init__.py similarity index 100% rename from native/pkg_a/example_pkg/a/__init__.py rename to native/pkg_a/src/example_pkg/a/__init__.py diff --git a/native/pkg_b/setup.py b/native/pkg_b/setup.py index 872122a..5072cff 100644 --- a/native/pkg_b/setup.py +++ b/native/pkg_b/setup.py @@ -27,7 +27,8 @@ author_email='jonwayne@google.com', license='Apache Software License', - - packages=['example_pkg.b'], + # This example uses automatic discovery. You can also implement custom discovery like this: + # packages=find_namespace_packages(where='src', include=['example_pkg.b']), + # package_dir={'': 'src'}, zip_safe=False, ) diff --git a/native/pkg_b/example_pkg/b/__init__.py b/native/pkg_b/src/example_pkg/b/__init__.py similarity index 100% rename from native/pkg_b/example_pkg/b/__init__.py rename to native/pkg_b/src/example_pkg/b/__init__.py diff --git a/noxfile.py b/noxfile.py index 5163b8d..b4ec5ec 100644 --- a/noxfile.py +++ b/noxfile.py @@ -25,18 +25,20 @@ USE_PYTHON_VERSIONS = USE_PYTHON_VERSIONS_DEFAULT -install_commands = (("pip", "install", "."), ("pip", "install", "-e", ".")) - +install_commands = ( + ('pip', 'install', '.'), + ('pip', 'install', '-e', '.') +) def install_packages(session, package_a, package_b, command_a, command_b): env = {**os.environ, "PIP_CONSTRAINT": f"{HERE}/constraints.txt"} session.install("--upgrade", "pip", env=env) session.chdir(package_a) - session.run("rm", "-rf", "dist", "build", "*.egg-info") + session.run("rm", "-rf", "dist", "build", "*.egg-info", external=True) session.run(*command_a, env=env) session.chdir(HERE) session.chdir(package_b) - session.run("rm", "-rf", "dist", "build", "*.egg-info") + session.run("rm", "-rf", "dist", "build", "*.egg-info", external=True) session.run(*command_b, env=env) session.chdir(HERE) diff --git a/pkg_resources/pkg_a/setup.py b/pkg_resources/pkg_a/setup.py index 1cd580c..b7c68a5 100644 --- a/pkg_resources/pkg_a/setup.py +++ b/pkg_resources/pkg_a/setup.py @@ -28,7 +28,8 @@ license='Apache Software License', - packages=find_packages(), + packages=find_packages(where='src'), namespace_packages=['example_pkg'], + package_dir={'': 'src'}, zip_safe=False, ) diff --git a/pkg_resources/pkg_a/example_pkg/__init__.py b/pkg_resources/pkg_a/src/example_pkg/__init__.py similarity index 100% rename from pkg_resources/pkg_a/example_pkg/__init__.py rename to pkg_resources/pkg_a/src/example_pkg/__init__.py diff --git a/pkg_resources/pkg_a/example_pkg/a/__init__.py b/pkg_resources/pkg_a/src/example_pkg/a/__init__.py similarity index 100% rename from pkg_resources/pkg_a/example_pkg/a/__init__.py rename to pkg_resources/pkg_a/src/example_pkg/a/__init__.py diff --git a/pkg_resources/pkg_b/setup.py b/pkg_resources/pkg_b/setup.py index 03444e1..c163459 100644 --- a/pkg_resources/pkg_b/setup.py +++ b/pkg_resources/pkg_b/setup.py @@ -28,7 +28,8 @@ license='Apache Software License', - packages=find_packages(), + packages=find_packages(where='src'), namespace_packages=['example_pkg'], + package_dir={'': 'src'}, zip_safe=False, ) diff --git a/pkg_resources/pkg_b/example_pkg/__init__.py b/pkg_resources/pkg_b/src/example_pkg/__init__.py similarity index 100% rename from pkg_resources/pkg_b/example_pkg/__init__.py rename to pkg_resources/pkg_b/src/example_pkg/__init__.py diff --git a/pkg_resources/pkg_b/example_pkg/b/__init__.py b/pkg_resources/pkg_b/src/example_pkg/b/__init__.py similarity index 100% rename from pkg_resources/pkg_b/example_pkg/b/__init__.py rename to pkg_resources/pkg_b/src/example_pkg/b/__init__.py diff --git a/pkgutil/pkg_a/setup.py b/pkgutil/pkg_a/setup.py index 27b9352..e846c84 100644 --- a/pkgutil/pkg_a/setup.py +++ b/pkgutil/pkg_a/setup.py @@ -28,6 +28,7 @@ license='Apache Software License', - packages=find_packages(), + packages=find_packages(where='src'), + package_dir={'': 'src'}, zip_safe=False, ) diff --git a/pkgutil/pkg_a/example_pkg/__init__.py b/pkgutil/pkg_a/src/example_pkg/__init__.py similarity index 100% rename from pkgutil/pkg_a/example_pkg/__init__.py rename to pkgutil/pkg_a/src/example_pkg/__init__.py diff --git a/pkgutil/pkg_a/example_pkg/a/__init__.py b/pkgutil/pkg_a/src/example_pkg/a/__init__.py similarity index 100% rename from pkgutil/pkg_a/example_pkg/a/__init__.py rename to pkgutil/pkg_a/src/example_pkg/a/__init__.py diff --git a/pkgutil/pkg_b/setup.py b/pkgutil/pkg_b/setup.py index 88d3397..3340df5 100644 --- a/pkgutil/pkg_b/setup.py +++ b/pkgutil/pkg_b/setup.py @@ -28,6 +28,7 @@ license='Apache Software License', - packages=find_packages(), + packages=find_packages(where='src'), + package_dir={'': 'src'}, zip_safe=False, ) diff --git a/pkgutil/pkg_b/example_pkg/__init__.py b/pkgutil/pkg_b/src/example_pkg/__init__.py similarity index 100% rename from pkgutil/pkg_b/example_pkg/__init__.py rename to pkgutil/pkg_b/src/example_pkg/__init__.py diff --git a/pkgutil/pkg_b/example_pkg/b/__init__.py b/pkgutil/pkg_b/src/example_pkg/b/__init__.py similarity index 100% rename from pkgutil/pkg_b/example_pkg/b/__init__.py rename to pkgutil/pkg_b/src/example_pkg/b/__init__.py diff --git a/requirements.txt b/requirements.txt index 0aa810d..426c1ca 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ # -- PYTHON PACKAGE REQUIREMENTS: # USE: pip install -r +setuptools >= 68.2.2 nox >= 2023.04.22 diff --git a/table.md b/table.md index 0804c45..4bac6c5 100644 --- a/table.md +++ b/table.md @@ -37,17 +37,17 @@ | pep420 | python3.12 | pip install -e . | pip install . | ✅ | | pep420 | python3.12 | pip install -e . | pip install -e . | ✅ | | cross_pkg_resources_pkgutil | python3.8 | pip install . | pip install . | ✅ | -| cross_pkg_resources_pkgutil | python3.8 | pip install . | pip install -e . | ✅ | +| cross_pkg_resources_pkgutil | python3.8 | pip install . | pip install -e . | ❌ | | cross_pkg_resources_pkgutil | python3.8 | pip install -e . | pip install . | ❌ | -| cross_pkg_resources_pkgutil | python3.8 | pip install -e . | pip install -e . | ✅ | +| cross_pkg_resources_pkgutil | python3.8 | pip install -e . | pip install -e . | ❌ | | cross_pkg_resources_pkgutil | python3.10 | pip install . | pip install . | ✅ | -| cross_pkg_resources_pkgutil | python3.10 | pip install . | pip install -e . | ✅ | +| cross_pkg_resources_pkgutil | python3.10 | pip install . | pip install -e . | ❌ | | cross_pkg_resources_pkgutil | python3.10 | pip install -e . | pip install . | ❌ | -| cross_pkg_resources_pkgutil | python3.10 | pip install -e . | pip install -e . | ✅ | +| cross_pkg_resources_pkgutil | python3.10 | pip install -e . | pip install -e . | ❌ | | cross_pkg_resources_pkgutil | python3.12 | pip install . | pip install . | ✅ | -| cross_pkg_resources_pkgutil | python3.12 | pip install . | pip install -e . | ✅ | +| cross_pkg_resources_pkgutil | python3.12 | pip install . | pip install -e . | ❌ | | cross_pkg_resources_pkgutil | python3.12 | pip install -e . | pip install . | ❌ | -| cross_pkg_resources_pkgutil | python3.12 | pip install -e . | pip install -e . | ✅ | +| cross_pkg_resources_pkgutil | python3.12 | pip install -e . | pip install -e . | ❌ | | cross_pep420_pkgutil | python3.8 | pip install . | pip install . | ✅ | | cross_pep420_pkgutil | python3.8 | pip install . | pip install -e . | ✅ | | cross_pep420_pkgutil | python3.8 | pip install -e . | pip install . | ✅ | @@ -63,24 +63,24 @@ | cross_pep420_pkg_resources | python3.8 | pip install . | pip install . | ✅ | | cross_pep420_pkg_resources | python3.8 | pip install . | pip install -e . | ❌ | | cross_pep420_pkg_resources | python3.8 | pip install -e . | pip install . | ✅ | -| cross_pep420_pkg_resources | python3.8 | pip install -e . | pip install -e . | ✅ | +| cross_pep420_pkg_resources | python3.8 | pip install -e . | pip install -e . | ❌ | | cross_pep420_pkg_resources | python3.10 | pip install . | pip install . | ✅ | | cross_pep420_pkg_resources | python3.10 | pip install . | pip install -e . | ❌ | | cross_pep420_pkg_resources | python3.10 | pip install -e . | pip install . | ✅ | -| cross_pep420_pkg_resources | python3.10 | pip install -e . | pip install -e . | ✅ | +| cross_pep420_pkg_resources | python3.10 | pip install -e . | pip install -e . | ❌ | | cross_pep420_pkg_resources | python3.12 | pip install . | pip install . | ✅ | | cross_pep420_pkg_resources | python3.12 | pip install . | pip install -e . | ❌ | | cross_pep420_pkg_resources | python3.12 | pip install -e . | pip install . | ✅ | -| cross_pep420_pkg_resources | python3.12 | pip install -e . | pip install -e . | ✅ | +| cross_pep420_pkg_resources | python3.12 | pip install -e . | pip install -e . | ❌ | | cross_pkg_resources_pep420 | python3.8 | pip install . | pip install . | ✅ | | cross_pkg_resources_pep420 | python3.8 | pip install . | pip install -e . | ✅ | | cross_pkg_resources_pep420 | python3.8 | pip install -e . | pip install . | ❌ | -| cross_pkg_resources_pep420 | python3.8 | pip install -e . | pip install -e . | ✅ | +| cross_pkg_resources_pep420 | python3.8 | pip install -e . | pip install -e . | ❌ | | cross_pkg_resources_pep420 | python3.10 | pip install . | pip install . | ✅ | | cross_pkg_resources_pep420 | python3.10 | pip install . | pip install -e . | ✅ | | cross_pkg_resources_pep420 | python3.10 | pip install -e . | pip install . | ❌ | -| cross_pkg_resources_pep420 | python3.10 | pip install -e . | pip install -e . | ✅ | +| cross_pkg_resources_pep420 | python3.10 | pip install -e . | pip install -e . | ❌ | | cross_pkg_resources_pep420 | python3.12 | pip install . | pip install . | ✅ | | cross_pkg_resources_pep420 | python3.12 | pip install . | pip install -e . | ✅ | | cross_pkg_resources_pep420 | python3.12 | pip install -e . | pip install . | ❌ | -| cross_pkg_resources_pep420 | python3.12 | pip install -e . | pip install -e . | ✅ | +| cross_pkg_resources_pep420 | python3.12 | pip install -e . | pip install -e . | ❌ |