From 6b85ca4745f01e3cbe283d0a273ef83361badaea Mon Sep 17 00:00:00 2001 From: Theo Date: Tue, 14 Jul 2026 21:16:58 +0000 Subject: [PATCH 1/3] declare flatbuffers; add clean-install import smoke MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit wsds imports `flatbuffers` across wsds/pupyarrow/flatbuf/*.py but never declared it. It's not transitive from the other declared deps (fastprogress/fire/numpy/polars/pyarrow/torch), so a clean `pip install .` + `import wsds` fails with ModuleNotFoundError: No module named 'flatbuffers'. It's been masked because dev/ML environments pull flatbuffers transitively (tensorflow/onnx/mediapipe/jax), but a minimal image (e.g. a clean vllm image) surfaces it. Fix: add flatbuffers to requirements.txt. Add an import-smoke CI that installs wsds fresh and imports it — the only check that catches an imported-but-undeclared dependency (pytest in a full env wouldn't). This CI fails on the pre-fix tree and passes with the declaration. --- .github/workflows/import-smoke.yml | 26 ++++++++++++++++++++++++++ requirements.txt | 1 + 2 files changed, 27 insertions(+) create mode 100644 .github/workflows/import-smoke.yml diff --git a/.github/workflows/import-smoke.yml b/.github/workflows/import-smoke.yml new file mode 100644 index 0000000..6c12a95 --- /dev/null +++ b/.github/workflows/import-smoke.yml @@ -0,0 +1,26 @@ +name: import-smoke + +# Installs wsds fresh with ONLY its declared dependencies and imports it. This is the one check +# that catches an imported-but-undeclared dependency: a normal pytest run happens in a dev/ML +# environment where such a package is already present transitively (e.g. flatbuffers, pulled by +# tensorflow/onnx/mediapipe), so it hides the missing declaration. A clean install surfaces it. +on: + push: + pull_request: + +jobs: + import-smoke: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + - name: Install wsds (fresh env — only its declared deps) + run: | + python -m pip install -U pip + # CPU torch to keep the runner light; wsds declares torch, this just satisfies it early. + pip install torch --index-url https://download.pytorch.org/whl/cpu + pip install . + - name: Import wsds — fails if anything imported is not a declared dependency + run: python -c "import wsds; print('import wsds OK')" diff --git a/requirements.txt b/requirements.txt index 64cde6c..25f0343 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ fastprogress fire +flatbuffers numpy polars>=1.36.1 pyarrow>=20 From 693c6e8b66ca975a58787d7569a3ecf0203b1f55 Mon Sep 17 00:00:00 2001 From: Theo Date: Tue, 14 Jul 2026 21:32:59 +0000 Subject: [PATCH 2/3] import-smoke: drop the torch pre-install; just pip install . + import --- .github/workflows/import-smoke.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/import-smoke.yml b/.github/workflows/import-smoke.yml index 6c12a95..dc0c737 100644 --- a/.github/workflows/import-smoke.yml +++ b/.github/workflows/import-smoke.yml @@ -3,7 +3,7 @@ name: import-smoke # Installs wsds fresh with ONLY its declared dependencies and imports it. This is the one check # that catches an imported-but-undeclared dependency: a normal pytest run happens in a dev/ML # environment where such a package is already present transitively (e.g. flatbuffers, pulled by -# tensorflow/onnx/mediapipe), so it hides the missing declaration. A clean install surfaces it. +# onnxruntime/tensorflow), so it hides the missing declaration. A clean install surfaces it. on: push: pull_request: @@ -17,10 +17,6 @@ jobs: with: python-version: "3.11" - name: Install wsds (fresh env — only its declared deps) - run: | - python -m pip install -U pip - # CPU torch to keep the runner light; wsds declares torch, this just satisfies it early. - pip install torch --index-url https://download.pytorch.org/whl/cpu - pip install . + run: pip install . - name: Import wsds — fails if anything imported is not a declared dependency run: python -c "import wsds; print('import wsds OK')" From 7a7223b9365b0002ede3cc53fac46c783db79902 Mon Sep 17 00:00:00 2001 From: Theo Lebryk <43556997+tlebryk@users.noreply.github.com> Date: Tue, 14 Jul 2026 17:47:48 -0400 Subject: [PATCH 3/3] Delete .github/workflows/import-smoke.yml --- .github/workflows/import-smoke.yml | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 .github/workflows/import-smoke.yml diff --git a/.github/workflows/import-smoke.yml b/.github/workflows/import-smoke.yml deleted file mode 100644 index dc0c737..0000000 --- a/.github/workflows/import-smoke.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: import-smoke - -# Installs wsds fresh with ONLY its declared dependencies and imports it. This is the one check -# that catches an imported-but-undeclared dependency: a normal pytest run happens in a dev/ML -# environment where such a package is already present transitively (e.g. flatbuffers, pulled by -# onnxruntime/tensorflow), so it hides the missing declaration. A clean install surfaces it. -on: - push: - pull_request: - -jobs: - import-smoke: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: "3.11" - - name: Install wsds (fresh env — only its declared deps) - run: pip install . - - name: Import wsds — fails if anything imported is not a declared dependency - run: python -c "import wsds; print('import wsds OK')"