Skip to content

Support Python 3.11 and pin mcp to 1.x; release 0.3.0 - #4

Merged
zarubaf merged 1 commit into
mainfrom
release/v0.3.0
Aug 26, 2026
Merged

zarubaf merged 1 commit into
mainfrom
release/v0.3.0

Conversation

@zarubaf

@zarubaf zarubaf commented Aug 26, 2026 •

Copy link
Copy Markdown
Owner

Summary

Lowers the minimum Python from 3.12 to 3.11, fixes a latent packaging bug with the mcp dependency, and bumps to 0.3.0.

Python 3.11 backport

No source changes were needed. Every tracked .py file already parses under ast.parse(feature_version=(3,11)) — no PEP 695 type params, no PEP 701 f-strings, no itertools.batched / typing.override.

The only real blocker was Cargo.toml: pyo3's abi3-py312 feature sets the minimum CPython the stable-ABI wheel will load on. Lowering it to abi3-py311 is purely a floor change — we still ship one cp311-abi3 wheel per platform, and it still runs on 3.12/3.13/3.14.

mcp 2.x fix

mcp>=1.0.0 was unconstrained. mcp 2.x renamed mcp.server.fastmcp.FastMCP to mcp.server.mcpserver.MCPServer, so a fresh pip install tsunami-wave resolved to 2.x and python/tsunami/server.py died on import:

ModuleNotFoundError: No module named 'mcp.server.fastmcp'. This is mcp 2.x,
where FastMCP was renamed to MCPServer...

uv.lock pinned 1.26.0, so this never hit CI or local dev — only end users installing from PyPI. Now constrained to mcp>=1.0.0,<2.

CI

The test job pinned no Python version at all, so the new lower bound would have rotted silently. It now runs a ["3.11", "3.14"] matrix.

Verification

3.11.15 3.14.0
pytest tests/ 58 passed 58 passed
import tsunami.server OK OK
tsunami info on arbiter FST OK OK
resolved mcp 1.26.0 1.26.0

maturin develop produces tsunami_wave-0.3.0-cp311-abi3-*.whl. cargo check --locked --workspace is clean and tsunami-serve still builds and runs, so the Rust MCP server release path is unaffected.

Version bump

pyproject.toml plus all three workspace crates (tsunami, tsunami-core, tsunami-serve) go to 0.3.0, with Cargo.lock and uv.lock refreshed to match.

🤖 Generated with Claude Code

https://claude.ai/code/session_0192r9HCCGprJJNyx2sow4kL

Lower the minimum Python from 3.12 to 3.11. No source changes were
needed -- every tracked .py file already parses under
ast.parse(feature_version=(3,11)): no PEP 695 type params, no PEP 701
f-strings, no itertools.batched or typing.override. The only real
blocker was pyo3's `abi3-py312` feature, which sets the floor for the
stable-ABI wheel. Dropping it to `abi3-py311` still yields one
cp311-abi3 wheel per platform that loads on 3.12-3.14.

Also constrain mcp to `>=1.0.0,<2`. mcp 2.x renamed
`mcp.server.fastmcp.FastMCP` to `mcp.server.mcpserver.MCPServer`, so a
fresh `pip install tsunami-wave` resolved to 2.x and tsunami.server
died on import. uv.lock pinned 1.26.0, so this only ever hit users
installing from PyPI -- never CI or local dev.

CI now runs the test job against both 3.11 and 3.14; it previously
pinned no version at all, so the lower bound would have rotted
silently.

Verified: 58 tests pass on 3.11.15 and 3.14.0, tsunami.server imports
and the CLI reads the arbiter FST on both, `cargo check --locked
--workspace` is clean, and tsunami-serve still builds and runs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0192r9HCCGprJJNyx2sow4kL
@zarubaf
zarubaf merged commit 7218e9b into main Aug 26, 2026
8 checks passed
@zarubaf
zarubaf deleted the release/v0.3.0 branch August 26, 2026 12:34
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