release: OxyRoute 0.5.0 - #138
Merged
Merged
Conversation
feat: implement global exception handlers for sync and async routes (#99)
Implements #100 by passing body_model down to Rust and validating the JSON body via Pydantic model_validate at runtime. Validation errors produce a 422 response.
feat(validation): runtime body_model validation with 422 errors
feat(request): introduce typed Request object with lazy headers
feat(testing): ship oxyroute.testing.TestClient
feat(streaming): generic stream responses (generators) for non-SSE chunks
feat(static): add StaticFiles and App.mount
feat(observability): request id, access log, metrics hooks
perf(router): avoid path-param allocs on fast paths
perf(openapi): cache serialized string
Ship Scalar/Swagger at /docs, OpenAPI {param} paths with parameters and
bearerAuth, tags/info/servers hooks, and sync __rsgi_init__(loop) via
on_startup so Granian actually runs worker startup. Closes #130.
feat(openapi): first-class docs UI and OpenAPI enrichment
Build JWT verification state once at add_route and reuse Arc handles on the hot path instead of reconstructing Validation/DecodingKey per request. Closes #109.
perf(jwt): prebuild DecodingKey and Validation per route
Check for Origin in Rust before calling response_header_pairs so same-origin / API-only traffic avoids a Python roundtrip. Closes #108.
perf(cors): skip Python CORS merge when Origin is absent
Add cargo bench hot_path (match/map/json), multi-route wrk scenarios, docs for baselines, and an opt-in perf-smoke workflow. Closes #110.
test(perf): Criterion microbenches and wrk scenarios
Remove IDE Cursor rules from the repo, ignore .cursor/, and point AGENTS.md at docs/development-workflow.md instead.
chore: remove .cursor from the repository
Bump package versions and document the 0.5.0 changelog (OpenAPI docs UI, lifespan, TestClient, middleware, perf, and related work since 0.4.0).
chore(release): prepare OxyRoute 0.5.0
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
devintomain(version bumps + CHANGELOG + docs from chore(release): prepare OxyRoute 0.5.0 #137)After merge
Tag and push to publish to PyPI:
Confirm
.github/workflows/release-pypi.ymlsucceeds.Test plan
mainafter mergev0.5.0triggers PyPI release