This is an automated email from the ASF dual-hosted git repository.
henry3260 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new a23aa81c62e Fix flaky static checks crashing on ts-sdk node_modules
during editable build (#74117)
a23aa81c62e is described below
commit a23aa81c62e1eb5a52cdfa4b19ae5697d4f4ad6d
Author: Shahar Epstein <[email protected]>
AuthorDate: Fri Oct 16 16:48:46 2026 +0100
Fix flaky static checks crashing on ts-sdk node_modules during editable
build (#74117)
The root apache-airflow package has no files of its own, but hatchling's
editable build still walks the entire checkout because .gitignore patterns
only filter files, not directory descent. That walk crosses
ts-sdk/node_modules
(tens of thousands of pnpm symlink directories) while the ts-sdk prek hooks
run
pnpm install in parallel, so any symlink swapped mid-walk raises
FileNotFoundError and fails hooks that uv sync the workspace, such as
lint-helm-chart.
Pruning .gitignore'd directories during the walk keeps hatchling out of
node_modules entirely; the produced editable wheel is unchanged.
---
pyproject.toml | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/pyproject.toml b/pyproject.toml
index db37ed21643..d39f28f7dc6 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -601,6 +601,13 @@ Mastodon = "https://fosstodon.org/@airflow"
Bluesky = "https://bsky.app/profile/apache-airflow.bsky.social"
YouTube = "https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/"
+[tool.hatch.build]
+# Prune .gitignore'd directories (node_modules, .venv, ...) during the file
walk instead of only
+# filtering their files: an editable build of this root package otherwise
descends into
+# ts-sdk/node_modules and crashes with FileNotFoundError when a concurrent
`pnpm install`
+# (ts-sdk prek hooks run alongside root ones) swaps the pnpm symlinks under it.
+skip-excluded-dirs = true
+
[tool.hatch.build.targets.sdist]
exclude = ["*"]