Skip to content

Pin uxarray-mcp to Python 3.12#61

Merged
rajeeja merged 1 commit into
mainfrom
rajeeja/pin-python-3.12
Jun 9, 2026
Merged

Pin uxarray-mcp to Python 3.12#61
rajeeja merged 1 commit into
mainfrom
rajeeja/pin-python-3.12

Conversation

@rajeeja

@rajeeja rajeeja commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

Pin the package to Python 3.12 — `requires-python = ">=3.12,<3.13"` plus matching updates to install commands, docs, CI matrix, and `.python-version`. The pin is provisional, tracked at globus/globus-compute#2139 — the upstream issue I filed describing the underlying `WorkerLost` failure on submitter↔worker Python minor mismatch — and will be lifted once Globus Compute publishes a multi-version compatibility story.

Why

A 3.13 submitter against a 3.12 endpoint worker raises `WorkerLost` on non-trivial Globus Compute payloads. The packaged MCP tools survive simple dict-of-strings round-trips via `AllCodeStrategies` but any user code dropping down to `Executor.submit()` will hit pickle protocol skew. HPC sites (chrysalis, Casper, Improv) broadly ship Python 3.12 conda stacks today, so matching that on the submitter side is the path with fewest sharp edges. The `uxarray-mcp doctor` warning that landed in #60 catches mismatches at probe time, but we can avoid the mismatch in the first place for the install path we recommend.

Changes

  • `pyproject.toml`: `requires-python = ">=3.12,<3.13"`, classifiers narrowed to 3.12, comment in-file pointing at Submitter SDK on Python 3.13 fails against Python 3.12 endpoint (WorkerLost on default serializer) globus/globus-compute#2139
  • `.python-version`: 3.13 → 3.12
  • `README.md`: install command shows `uv tool install --python 3.12`; new callout explains the pin and links the upstream issue
  • `docs/remote-hpc.md`: same pin in the HPC-extras install step
  • `docs/operating-an-endpoint.md`: worker-Python callout points at upstream issue; second conda-env example bumped python=3.11 → python=3.12
  • `.github/workflows/ci.yml`: matrix collapsed to 3.12; pre-commit/smoke/HPC/docs jobs updated
  • `.github/workflows/release.yml`: build/install/verify steps updated to 3.12
  • `uv.lock`: regenerated (drops 3.11/3.13 dependency variants — net -1900 lines)

Test plan

  • `uv run pre-commit run --all-files` (clean)
  • `uv run pytest tests/ --ignore=tests/test_remote_agent.py` — 295 passed (vs 290 on 3.13 — five cartopy-dependent tests that skipped on 3.13 macOS now run on 3.12)
  • `uv run --extra docs sphinx-build -b html -W --keep-going docs docs/_build/html` (clean)
  • When globus/globus-compute#2139 is resolved, broaden `requires-python` back to `>=3.11` and reintroduce the matrix.

Notes

  • The 3.12 pin is provisional, not architectural. We're tracking the upstream issue so the next person who looks at `pyproject.toml` sees both the constraint and the path to removing it.
  • Existing endpoints (chrysalis at `3cca8be6-...`, NCAR at `79bf66fc-...`) are 3.12 today; this matches them.

…ch failures

A 3.13 submitter against a 3.12 endpoint worker raises WorkerLost on
non-trivial payloads through Globus Compute's default serializer. The MCP
tools survive simple round-trips via AllCodeStrategies but any user code
dropping down to Executor.submit() will hit it. Until upstream lands a
documented compatibility story (tracked at
globus/globus-compute#2139), pinning the package to 3.12 matches the conda
stacks that HPC sites ship today and keeps users out of WorkerLost
territory.

- pyproject.toml: requires-python = ">=3.12,<3.13"; classifiers reduced
  to 3.12. NOTE comment in the file explains why and points at the upstream
  issue so the next maintainer knows when to revisit.
- .python-version: 3.13 → 3.12 so `uv run` and `uv sync` pick the right
  interpreter automatically.
- README: install commands show `uv tool install --python 3.12`; new
  callout explains the constraint and links the upstream issue.
- docs/remote-hpc.md: same pin in the HPC-extras install step.
- docs/operating-an-endpoint.md: the worker-Python callout points at the
  upstream issue; the second conda-env example in the 8-step section
  bumped from python=3.11 to python=3.12 for consistency with the
  quickstart.
- .github/workflows/ci.yml: matrix collapsed to 3.12; pre-commit, smoke,
  HPC, docs jobs all updated to 3.12.
- .github/workflows/release.yml: build/install/verify steps updated to
  3.12.
- uv.lock: regenerated for the narrower requires-python (drops 3.11/3.13
  dependency variants).

Verified:
- pre-commit clean
- 295 tests pass under 3.12 (vs 290 under 3.13 — five cartopy-dependent
  tests that were skipped on 3.13 macOS now run)
- sphinx -W --keep-going clean
@rajeeja rajeeja merged commit 8bcb9f0 into main Jun 9, 2026
7 checks passed
@rajeeja rajeeja deleted the rajeeja/pin-python-3.12 branch June 9, 2026 20:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant