Skip to content

Prepare Python SDK 5.0.0-beta.1 release - #120

Merged
jfriedr merged 2 commits into
mainfrom
prep/python-5.0.0-beta
Oct 16, 2026
Merged

jfriedr merged 2 commits into
mainfrom
prep/python-5.0.0-beta

Conversation

@jfriedr

@jfriedr jfriedr commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Prepares main so the next Speakeasy generation publishes 5.0.0b1 as a PyPI pre-release, instead of going straight to 5.0.0. pip install shippo and pip install -U shippo keep installing 3.9.0 until we graduate to 5.0.0.

  • .speakeasy/gen.yaml: python.version: 4.0.0 → 5.0.0-beta.1. 4.0.0 was generated in chore: migrate speakeasy generator to python v2 and update tests #109 but never published.
  • CI (sdk_validation.yaml):
    • Test matrix 3.9, 3.11 → 3.10, 3.11, 3.13. The regen in chore: 🐝 Update SDK - Generate 5.0.0-beta.1 #113 raises requires-python to >=3.10, so a 3.9 job can never pass. 3.14 needs a pydantic-core bump: the pinned versions will never get 3.14 wheels, and 2.35.0 is the first that has them.
    • max-parallel: 1: all three versions share one test account, and test_rates_at_checkout deletes every service group, so the jobs must not overlap (thanks @wyatt-shippo).
    • The concurrency group is now per PR and per Python version. The old shared group would cancel one of the three queued jobs.
    • The venv cache key hashes poetry.lock instead of setup.py, which does not exist, so the key never changed when dependencies did.
  • Tests: removed the stale @pytest.mark.skip from test_hooks.py and test_debug.py. All 7 tests pass on 3.11.
  • MIGRATION.md: covers the 3.x → 5.0 breaking changes. I checked every example against the regenerated SDK.

Merging this does not publish anything. Publish only triggers on RELEASES.md, which this PR does not touch.

Before merging

  • An org admin must update the main ruleset's required checks. Replace Python 3.9 with Python 3.10, and keep Python 3.11; adding Python 3.13 is optional. Until then this PR, and chore: 🐝 Update SDK - Generate 5.0.0-beta.1 #113, cannot satisfy the required checks.
  • A second member of @goshippo/solutions-architects approves this PR, since authors can't approve their own.

After merging

  1. gh workflow run sdk_generation.yaml -R goshippo/shippo-python-sdk -f force=true. chore: 🐝 Update SDK - Generate 5.0.0-beta.1 #113 should regenerate as 5.0.0-beta.1 and run the new CI matrix.
  2. Approve the Validate run on chore: 🐝 Update SDK - Generate 5.0.0-beta.1 #113, review it, and merge. That publishes shippo==5.0.0b1.

Known issue to fix before 5.0.0 final

service_groups.list, refunds.list, user_parcel_templates.list, and rates_at_checkout.get/delete_default_parcel_template take no parameters, but the v2 generator now requires request={} on them; calling them with no arguments raises TypeError. MIGRATION.md documents this as a beta known issue.

Testing

  • On Python 3.11 against the test-mode API: this branch (main's code plus these changes) passes 17/17, and chore: 🐝 Update SDK - Generate 5.0.0-beta.1 #113's regenerated code also passes 17/17 with the skips removed.
  • pydantic-core 2.27.2 in this branch's poetry.lock has cp313 wheels.

🤖 Generated with Claude Code

- Set python.version to 5.0.0-beta.1 in gen.yaml so the next generation
  produces a pre-release (pip skips it unless users opt in).
- CI: test 3.10/3.11/3.13 instead of 3.9/3.11 (5.x requires >=3.10),
  scope the concurrency group per PR and Python version, and key the
  venv cache on poetry.lock (setup.py does not exist).
- Remove the stale skip markers on test_hooks.py and test_debug.py; both
  pass on 3.11.
- Add MIGRATION.md covering 3.x -> 5.0 breaking changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor
Tests Skipped Failures Errors Time
17 0 💤 0 ❌ 0 🔥 17.442 ⏱

rkeur7
rkeur7 previously approved these changes Oct 16, 2026

@rkeur7 rkeur7 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved

@jfriedr
jfriedr requested a review from wyatt-shippo October 16, 2026 18:31
- max-parallel: 1 so the three Python jobs don't race on the shared test
  account (test_rates_at_checkout deletes every service group).
- 3.14 comment: the pinned pydantic-core versions will never get 3.14
  wheels; 2.35.0 is the first that has them.
- MIGRATION.md: lead with pip install "shippo==5.0.0b1"; --pre also
  pulls pre-release dependencies.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jfriedr
jfriedr requested a review from a team as a code owner October 16, 2026 18:54

@wyatt-shippo wyatt-shippo left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved. CI now runs the matrix one version at a time, and I checked the MIGRATION.md examples against #113's SDK. When #113 regenerates, confirm it says 5.0.0-beta.1 before merging, since that merge publishes.

@jfriedr
jfriedr merged commit 6a64d15 into main Oct 16, 2026
10 of 11 checks passed
@jfriedr
jfriedr deleted the prep/python-5.0.0-beta branch October 16, 2026 19:14
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.

3 participants