From c6014db4ea66fd1416d8771568581f207595a270 Mon Sep 17 00:00:00 2001 From: Mike Guida Date: Mon, 28 Sep 2026 16:31:03 -0600 Subject: [PATCH 1/2] Scope client typing marker to its namespace package --- .github/workflows/ci.yml | 17 +++++++++++++++++ foxglove/{ => client}/py.typed | 0 pyproject.toml | 3 ++- 3 files changed, 19 insertions(+), 1 deletion(-) rename foxglove/{ => client}/py.typed (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ae78809..5ece78e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,23 @@ jobs: - run: uv run python -m flake8 examples - run: uv run python -m pytest - run: uv run python -m build --installer uv + - name: Check shared namespace ownership + run: | + uv run python - <<'PY' + from pathlib import Path + from zipfile import ZipFile + + wheel = next(Path("dist").glob("*.whl")) + with ZipFile(wheel) as archive: + files = archive.namelist() + assert "foxglove/client/py.typed" in files + # The SDK owns root files, including __init__.py and py.typed. + assert not any( + name.startswith("foxglove/") and name.count("/") == 1 + and not name.endswith("/") + for name in files + ), files + PY - name: Publish to TestPyPI if: | diff --git a/foxglove/py.typed b/foxglove/client/py.typed similarity index 100% rename from foxglove/py.typed rename to foxglove/client/py.typed diff --git a/pyproject.toml b/pyproject.toml index b70fdd6..304db84 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,4 +66,5 @@ include-package-data = true include = ["foxglove*"] [tool.setuptools.package-data] -foxglove = ["py.typed"] +# The SDK owns files at the shared foxglove package root. +"foxglove.client" = ["py.typed"] From 1717b6412b65154364f4daa8ae3e7dda333e5fcb Mon Sep 17 00:00:00 2001 From: Mike Guida Date: Mon, 28 Sep 2026 17:12:05 -0600 Subject: [PATCH 2/2] Simplify typing marker fix and clarify SDK ownership --- .github/workflows/ci.yml | 17 ----------------- pyproject.toml | 3 ++- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5ece78e..ae78809 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,23 +27,6 @@ jobs: - run: uv run python -m flake8 examples - run: uv run python -m pytest - run: uv run python -m build --installer uv - - name: Check shared namespace ownership - run: | - uv run python - <<'PY' - from pathlib import Path - from zipfile import ZipFile - - wheel = next(Path("dist").glob("*.whl")) - with ZipFile(wheel) as archive: - files = archive.namelist() - assert "foxglove/client/py.typed" in files - # The SDK owns root files, including __init__.py and py.typed. - assert not any( - name.startswith("foxglove/") and name.count("/") == 1 - and not name.endswith("/") - for name in files - ), files - PY - name: Publish to TestPyPI if: | diff --git a/pyproject.toml b/pyproject.toml index 304db84..b71c9b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,5 +66,6 @@ include-package-data = true include = ["foxglove*"] [tool.setuptools.package-data] -# The SDK owns files at the shared foxglove package root. +# foxglove-sdk (https://github.com/foxglove/foxglove-sdk) owns root foxglove files. +# Keep the marker here so uninstalling this client cannot remove the SDK marker. "foxglove.client" = ["py.typed"]