feat: switch client generation to openapi-python-client#20
Merged
Conversation
speakeasy's free tier allows one generated SDK per workspace and convoy.js holds that slot, so python generation moves to the OSS openapi-python-client (pinned 0.29.0). - .github/workflows/sdk_generation.yaml: rewritten for openapi-python-client; same filename and dispatch inputs so the frain-dev/convoy dispatcher works unchanged; opens a PR only when the regenerated client differs - speakeasy pipeline kept dormant, not deleted: old workflow renamed to speakeasy_generation.yaml (manual-only), .speakeasy/ and .genignore kept current so switching back is a trigger change - scripts/generate.sh: fetches the spec, generates with --fail-on-warning, rsyncs into src/convoy/ excluding hand-written verify (src/convoy/utils/) and py.typed - pyproject.toml: hand-owned packaging (convoy-python 1.0.0a1, httpx + attrs); wheel verified to carry verify + generated client - MIGRATION.md / README.md updated for the generator switch
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
Speakeasy's free tier allows one generated SDK per workspace and
convoy.jsholds that slot, so Python client generation moves to the OSS openapi-python-client (pinned0.29.0).sdk_generation.yamlrewritten for openapi-python-client. Same filename and dispatch inputs (force,feature_branch), so thefrain-dev/convoydispatcher works unchanged. Opens a PR only when the regenerated client differs.speakeasy_generation.yaml(manual-only),.speakeasy/and.genignorekept current so switching providers back is a trigger change, not a rebuild.scripts/generate.shfetches the spec, generates with--fail-on-warning, and rsyncs intosrc/convoy/excluding hand-written verify (src/convoy/utils/) andpy.typed— same protection contract.genignoregave Speakeasy.pyproject.toml(convoy-python 1.0.0a1, depshttpx+attrs).Test plan
scripts/generate.shrun locally against the live spec: all 67 operations generated,src/convoy/utils/untouchedpy.typed(548 files)pip install -e .;from convoy.utils.webhook import Webhookresolves from the installed distributionpytest test/test_webhook.py test/test_shared_vectors.py: 29 passed (pre- and post-generation)Note
Medium Risk
Touches release/CI generation and uses rsync --delete on
src/convoy/; mis-excludes could affect hand-written webhook verify, though excludes and docs explicitly protectutils/.Overview
Python HTTP client generation moves from Speakeasy to pinned openapi-python-client, while keeping the same
sdk_generation.yamlentrypoint and dispatch inputs so upstream dispatchers stay compatible.The active
sdk_generationworkflow now installsopenapi-python-client/ruff, runsscripts/generate.sh, and only opens or updates a PR when the regenerated tree differs. Speakeasy is not removed: its workflow is renamed tospeakeasy_generation.yaml(manual-only), with.genignoreand.speakeasy/kept current for an easy provider switch-back.Hand-owned packaging and sync rules are added:
pyproject.toml(convoy-python1.0.0a1),.openapi-python-client.yml(package_name_override: convoy), andgenerate.sh(fetch spec, generate with--fail-on-warning, rsync --delete intosrc/convoy/while excludingutils/andpy.typed)..genignoredocuments the same protected paths for a dormant Speakeasy path.Test CI always
pip install -e .and runs verify tests from the installed distribution—pre-generationPYTHONPATHfallbacks are removed. MIGRATION.md / README describe openapi-python-client as the active generator.Reviewed by Cursor Bugbot for commit 6da17dd. Bugbot is set up for automated code reviews on this repo. Configure here.