test: add pyproject.toml to card_via_* extension packages#3191
test: add pyproject.toml to card_via_* extension packages#3191talsperre wants to merge 1 commit into
Conversation
These three test fixture packages have setup.py but no pyproject.toml, so pip falls back to the legacy non-PEP-517 build path, which writes `build/bdist.linux-x86_64/wheel/...` and `*.egg-info/` inside the source directory. When CI installs them concurrently from the same source tree (e.g. multiple tox environments running in parallel for test/core), the concurrent pip processes race on those in-source directories and produce ENOENT / EEXIST / "Directory not empty" errors on the wheel build. Adding the standard `[build-system]` table switches pip to the PEP 517 build path. Pip copies the source tree to an isolated `/tmp/pip-build- env-*/` per install, so concurrent installs no longer share mutable state in the source directory. setup.py is preserved unchanged; setuptools.build_meta uses it as the metadata source.
Greptile SummaryThis PR adds a minimal
Confidence Score: 5/5Safe to merge — the change is limited to three test-fixture packages and does not touch any production code or CI configuration. Three identical, three-line TOML files are added to test-only packages. Each file is a well-established, standard [build-system] declaration. The existing setup.py files and README.md files are untouched and remain compatible with the new build path. There is no risk to production behaviour. No files require special attention. Important Files Changed
Reviews (1): Last reviewed commit: "test: add pyproject.toml to card_via_* e..." | Re-trigger Greptile |
Summary
Add a minimal
pyproject.tomlwith the standard[build-system]table to three test-fixture packages:test/extensions/packages/card_via_extinit/test/extensions/packages/card_via_init/test/extensions/packages/card_via_ns_subpackage/Each new file is 3 lines:
setup.pyis preserved unchanged;setuptools.build_metauses it as the metadata source.Motivation
These three packages currently ship
setup.pyonly — nopyproject.toml. That forces pip onto the legacy non-PEP-517 build path, which writesbuild/bdist.linux-x86_64/wheel/...and*.egg-info/inside the source directory.When CI installs them concurrently from the same source tree (e.g. multiple tox environments running in parallel installing them all as deps), the concurrent pip processes race on those in-source directories and produce errors like:
Adding the
[build-system]table switches pip to the PEP 517 isolated-build path: pip copies the source tree to a unique/tmp/pip-build-env-*/per install, and the wheel build runs there. Concurrent installs no longer share mutable state in the source directory, and the race goes away.Test plan
pip wheel -w /tmp/wh ./test/extensions/packages/card_via_extinit/producesmetaflow_card_via_extinit-1.0.0-py3-none-any.whlpython setup.py bdist_wheelinvocation still works (setuptools' build_meta backend is backed by setup.py)build/and*.egg-info/do not appear in source after install)