release: 2.5.0 — post-v2.4 multi-reviewer SDK audit closure (#273)#294
Conversation
34 issues across security, HTTP transport, WebSocket reliability, models/types, REST resources, performance, and docs/testing. Two breaking changes folded in: orders.create() requires count+action explicitly (#242); six REST + three WS model fields widened str/float -> Decimal (#258, #259). Migration in docs/migration.md v2.4 -> v2.5 section. Closes #273.
Code Review — PR #294: release v2.5.0This is a release/documentation PR (version bumps + CHANGELOG + ROADMAP + migration guide). The actual code changes landed across 20 prior PRs; I'll review what's in this diff and flag anything worth discussing before merge. OverviewThe diff is small and focused:
No application code changes are in this PR, which is the correct pattern for a release cut. What looks good
Issues / things to verify before merge1.
|
Cuts v2.5.0.
What ships
34 audit issues closed across 4 sequential waves:
20 PRs total; main is mypy strict clean, ruff clean, 2742 unit tests passing (3 skipped —
tests/test_http2.pyskipif whenh2extra not installed).Breaking changes (justify v2.5.0 minor bump)
orders.create()requirescountandactionexplicitly on the kwarg path (no silent 1-contract buy).str/floattoDecimal. Wire format unchanged.Migration guide:
docs/migration.mdv2.4 → v2.5 section (this PR).Release procedure (post-merge)
Per
docs/RELEASING.md:git tag v2.5.0 && git push origin v2.5.0—.github/workflows/release.ymlwill build + publish to PyPI via trusted publishing + create the GitHub Release.Verification
kalshi/__init__.py__version__both bumped to2.5.0(release workflow asserts they match the tag).## 2.5.0 — 2026-05-21heading; awk extracts up to the next##).Closes #273.