Repository navigation
Support Python 3.11 and pin mcp to 1.x; release 0.3.0 - #4
Merged
Merged
Conversation
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
force-pushed
the
release/v0.3.0
branch
from
August 26, 2026 12:29
cdc9e88 to
7cea48b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Lowers the minimum Python from 3.12 to 3.11, fixes a latent packaging bug with the
mcpdependency, and bumps to 0.3.0.Python 3.11 backport
No source changes were needed. Every tracked
.pyfile already parses underast.parse(feature_version=(3,11))— no PEP 695 type params, no PEP 701 f-strings, noitertools.batched/typing.override.The only real blocker was
Cargo.toml: pyo3'sabi3-py312feature sets the minimum CPython the stable-ABI wheel will load on. Lowering it toabi3-py311is purely a floor change — we still ship onecp311-abi3wheel per platform, and it still runs on 3.12/3.13/3.14.mcp 2.x fix
mcp>=1.0.0was unconstrained. mcp 2.x renamedmcp.server.fastmcp.FastMCPtomcp.server.mcpserver.MCPServer, so a freshpip install tsunami-waveresolved to 2.x andpython/tsunami/server.pydied on import:uv.lockpinned 1.26.0, so this never hit CI or local dev — only end users installing from PyPI. Now constrained tomcp>=1.0.0,<2.CI
The
testjob 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
pytest tests/import tsunami.servertsunami infoon arbiter FSTmcpmaturin developproducestsunami_wave-0.3.0-cp311-abi3-*.whl.cargo check --locked --workspaceis clean andtsunami-servestill builds and runs, so the Rust MCP server release path is unaffected.Version bump
pyproject.tomlplus all three workspace crates (tsunami,tsunami-core,tsunami-serve) go to 0.3.0, withCargo.lockanduv.lockrefreshed to match.🤖 Generated with Claude Code
https://claude.ai/code/session_0192r9HCCGprJJNyx2sow4kL