build(deps): upgrade openapi-generator to 7.23.0#664
Merged
jorgeparavicini merged 1 commit intoJul 9, 2026
Conversation
Pin the OpenAPI client generator from 7.9.0 to the latest 7.23.0. This is a
toolchain-only change: the generated client is intentionally NOT regenerated
here, so the next automated `update-openapi-client` run picks up 7.23.0.
Why upgrade: on 7.9.0 the generator turns a nullable `$ref` that the backend's
newer Microsoft.OpenApi serializer emits as `{nullable, oneOf:[$ref], type:object}`
into an extra wrapper class, churning the client. 7.23.0 collapses it to the
direct type, so an OpenAPI 2.x-serializer bump on the backend is a no-op for
the SDK. Verified: regenerating at 7.23.0 from a 2.10.0-serialized spec vs a
2.0.0-serialized one produces a byte-identical client.
Two fixes are required for 7.23.0 to produce a valid client:
- `openapi/templates/api.mustache`: post-7.9 openapi-generator changed
standalone-partial whitespace handling, so `{{>partial_api}}` (which ends
the `_response_types_map` dict without a trailing newline) collided into the
next line as `} response_data = ...`. Add a blank line after the
include. Without this, ~60 generated api files fail to compile.
- `src/.openapi-generator-ignore`: protect the hand-maintained
`rapidata/__init__.py` (re-exports + `__version__`), which the generator
otherwise overwrites with an empty file.
Deliberately deferred: regenerating the client. A benchmark/leaderboard
filtering refactor is mid-rollout on the backend (structured filter operators
+ `logic`, dropped plural id-list filters); regenerating now would entangle
that in-flight API change with the toolchain bump. The regen runs cleanly via
the automated workflow once that settles.
Co-Authored-By: RapidPoseidon <poseidon@rapidata.ai>
ReviewThis is a well-scoped, well-tested toolchain bump. A few notes: Strengths
Minor suggestions (non-blocking)
No bugs, security issues, or missing tests found — the change is toolchain config plus generator templates, and the existing pyright CI gate is unaffected since no generated |
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
Upgrades the pinned OpenAPI client generator 7.9.0 → 7.23.0 (latest). Toolchain-only — the generated client is intentionally not regenerated in this PR (see "Deferred" below), so
src/is unchanged and CI (pyright) is unaffected.Why
On 7.9.0, when the backend's newer
Microsoft.OpenApiserializer emits a nullable$refas{nullable: true, oneOf: [$ref], type: object}, the generator produces an extra wrapper class per field, churning the client and changing its public types. 7.23.0 collapses it to the direct type, making a backendMicrosoft.OpenApi2.x-serializer bump a no-op for the SDK.Verified: regenerating at 7.23.0 from a
2.10.0-serialized spec vs a2.0.0-serialized spec produces a byte-identical client (0 files differ). This is what unblocks the backendDirectory.Packages.propsbump safely.Two fixes required for 7.23.0 to emit a valid client
openapi/templates/api.mustache{{>partial_api}}include_response_types_map}collided into} response_data = …→ ~60 api files fail to compilesrc/.openapi-generator-ignorerapidata/__init__.py__version__) with an empty fileI verified end-to-end that 7.23.0 + these fixes produces a client that
py_compiles cleanly and passespyright src/rapidata/rapidata_client.Deliberately deferred: regenerating the client
A benchmark/leaderboard filtering refactor is mid-rollout on the backend (structured filter operators +
logic, dropped pluralleaderboardIds/participantIdslist filters — prod is currently ahead ofmain). Regenerating the client now would entangle that in-flight API change with this toolchain bump and require guessing not-yet-stable filter semantics. Once the generator is on 7.23.0, the automatedupdate-openapi-clientworkflow regenerates cleanly (and nullable-safe) once that refactor settles.Test plan
py_compileon a full 7.23.0 regen (with the template fix): passespyright src/rapidata/rapidata_clienton a full 7.23.0 regen (with hand-layer adaptations): 0 errorssrc/unchanged → existing pyright CI passes🔗 Session: https://session-44f0d44a.poseidon.rapidata.internal/