A GitHub Action polls meraki/openapi releases daily at 14:00 UTC. When a new release is detected, it triggers library regeneration, runs tests, and publishes automatically.
-
Source of truth is the target branch. The current library minor version is read from
pyproject.tomlonmain(GA),beta(pre-releases), orhttpx(dev pre-releases). -
GA releases go to
main. Bump library minor, reset patch:X.Y.ZbecomesX.(Y+1).0. -
Beta releases go to
beta. Library patch and beta number mirror the API release:- Library patch = API patch (e.g. API
1.81.2-beta.0→ library patch2) - Library beta number = API beta number (e.g. API
1.81.2-beta.3→bNwhere N=3) - New API minor bumps library minor (e.g. API minor 80 → 81 bumps library minor)
- Library patch = API patch (e.g. API
-
Dev releases go to
httpx. Same versioning logic as beta (mirrors API patch and beta number). Triggered by the same prerelease tags. The generator runs with the-b httpxflag and a test org ID for beta endpoint access. -
API version is the OpenAPI tag with
vstripped.v1.71.0-beta.2becomes1.71.0-beta.2. -
Manual releases can happen independently. Patches, features, or fixes can be released at any time. They update
pyproject.tomlon their target branch, and the next automated release uses that as its baseline. -
GA always bumps minor, never patch. Even after manual patches (e.g.
3.1.1becomes3.2.0, not3.1.2). -
No version slot is reused. If a manual release occupies the next expected version, the automated release takes the one after it.
Starting from main at 3.1.0, beta at 3.1.0, httpx at 4.0.0:
| Event | API Version | Library Version | Branch |
|---|---|---|---|
v1.71.0-beta.0 detected |
1.71.0-beta.0 |
3.2.0b0 |
beta |
| (same trigger) | 1.71.0-beta.0 |
4.1.0b0 |
httpx |
v1.71.0-beta.1 detected |
1.71.0-beta.1 |
3.2.0b1 |
beta |
| (same trigger) | 1.71.0-beta.1 |
4.1.0b1 |
httpx |
v1.71.1-beta.0 detected |
1.71.1-beta.0 |
3.2.1b0 |
beta |
| (same trigger) | 1.71.1-beta.0 |
4.1.1b0 |
httpx |
| Manual bugfix (no API change) | 1.70.0 |
3.1.1 |
main |
v1.71.0 detected (GA) |
1.71.0 |
3.2.0 |
main |
v1.72.0-beta.0 detected |
1.72.0-beta.0 |
3.3.0b0 |
beta |
| (same trigger) | 1.72.0-beta.0 |
4.2.0b0 |
httpx |
When a new prerelease is detected, the enable-early-access.yml workflow runs first (waited on synchronously). This enables early access features on the test organizations so the generated beta and dev SDKs can be tested against them.
| Stage | Source branch | Release branch | PR target |
|---|---|---|---|
| GA | main |
release |
main |
| Beta | beta |
beta-release |
beta |
| Dev | httpx |
httpx-release |
httpx |
All release PRs are set to auto-merge (squash). Once merged and tests pass, the create-release.yml workflow creates a GitHub release, which triggers publish-release.yml to publish to PyPI.