From 592c3f73c0bbdf2e8188b6a596d07ccb2b2d760e Mon Sep 17 00:00:00 2001 From: Nate Barbettini Date: Thu, 11 Dec 2025 13:55:31 -0800 Subject: [PATCH] fix: Don't double-include template files (#722) Fixes broken publishing action: https://github.com/ArcadeAI/arcade-mcp/actions/runs/20147239181 --- > [!NOTE] > Removes template force-include to avoid duplicate files and adds CI wheel-duplicate validation; bumps version to 1.6.1. > > - **Packaging**: > - Bump `arcade-mcp` version from `1.6.0` to `1.6.1` in `pyproject.toml`. > - Remove `[tool.hatch.build.targets.wheel.force-include]` for `arcade_cli/templates` to prevent double-including template files. > - **CI/CD**: > - In `.github/workflows/release-on-version-change.yml`, add a post-build Python step to validate built wheels for duplicate filenames before publishing. > > Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 3a15e08772b2b4851b185b04c763f3f5898bdbd5. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot). --- .../workflows/release-on-version-change.yml | 35 +++++++++++++++++++ pyproject.toml | 6 +--- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release-on-version-change.yml b/.github/workflows/release-on-version-change.yml index 23a31293..68129f3b 100644 --- a/.github/workflows/release-on-version-change.yml +++ b/.github/workflows/release-on-version-change.yml @@ -107,6 +107,41 @@ jobs: run: | uv build --out-dir dist | tee build.log + # Validate wheel archives: PyPI rejects duplicate filenames in wheels + python - <<'PY' + from __future__ import annotations + + from pathlib import Path + import sys + import zipfile + + dist = Path("dist") + wheels = sorted(dist.glob("*.whl")) + if not wheels: + print("No wheels found in dist/, skipping wheel validation.") + raise SystemExit(0) + + for whl in wheels: + with zipfile.ZipFile(whl) as zf: + names = zf.namelist() + + seen: set[str] = set() + dupes: set[str] = set() + for name in names: + if name in seen: + dupes.add(name) + else: + seen.add(name) + + if dupes: + print(f"ERROR: {whl} contains duplicate paths (PyPI will reject this wheel):", file=sys.stderr) + for name in sorted(dupes): + print(f" - {name}", file=sys.stderr) + raise SystemExit(1) + + print("Wheel validation OK (no duplicate filenames).") + PY + # Verify build artifacts ls -la dist/ echo "Built artifacts for ${{ env.PACKAGE_NAME }} v${{ env.VERSION }}" diff --git a/pyproject.toml b/pyproject.toml index de00c1b8..d88720c4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "arcade-mcp" -version = "1.6.0" +version = "1.6.1" description = "Arcade.dev - Tool Calling platform for Agents" readme = "README.md" license = {file = "LICENSE"} @@ -94,10 +94,6 @@ packages = [ "libs/arcade-evals/arcade_evals", ] -# Include Jinja templates in the CLI package -[tool.hatch.build.targets.wheel.force-include] -"libs/arcade-cli/arcade_cli/templates" = "arcade_cli/templates" - [tool.uv.workspace] members = [ "libs/arcade-core",