NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1726 most downloaded on PyPI
Production-ready community-driven modern Stripe-like API versioning in FastAPI
Last release 14 days ago
20 Sep 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
3 years old
143 releases · first in 2023
One column per quarter.
The bug where fields from parent schemas also appeared in child schemas
Migrate from external verselect to stable verselect
…definition statically. Note that it is not a breaking change because the presence of at least one version was also implicitly required before and woul…
cadwyn.Cadwyn class similar to fastapi.FastAPI that provides header routing and encapsulates all information about versioned routesfastapi-header-routing to verselectcadwyn.routing.VERSION_HEADER_FORMAT from verselect.routing*versions argument in cadwyn.VersionBundle is now split into a required positional-only latest_version and *other_versions to make it possible to see an invalid versionless definition statically. Note that it is not a breaking change because the presence of at least one version was also implicitly required before and would produce a failure at runtimecadwyn.get_cadwyn_dependency and cadwyn.header because it is fully replaced with verselectNothing published for this version
Validation for the spelling of HTTP methods in cadwyn.structure.endpoint.
cadwyn.structure.endpoint.A prototype of AST-based code generation where we try to keep as much of the old field/annotation structure as possible
Nothing published for this version
Nothing published for this version
UploadFile and forms have previously caused exceptions on request migration
UploadFile and forms have previously caused exceptions on request migrationContextVar[datetime.date] being incompatible with VersionBundle
ContextVar[datetime.date] being incompatible with VersionBundleA note into reference docs about the paths specification in CLI
A link to OpenAPI discussion on enum expansion into docs/recipes
generate_versioned_routers did not alter APIRoute.dependant.call, APIRoute.response_field, and APIRoute.secure_cloned_response_field before which caus
generate_versioned_routers did not alter APIRoute.dependant.call, APIRoute.response_field, and APIRoute.secure_cloned_response_field before which caused these fields to represent latest version on all generated versions. However, this was only a bug if the routes were later added into the app/router by hand instead of using inherit_routes or add_api_route.generate_versioned_routers now accepts only one router instead of a sequence of routers to give us the ability to guarantee that the type of generated
generate_versioned_routers now accepts only one router instead of a sequence of routers to give us the ability to guarantee that the type of generated routers is the same as the type of the passed router.schema(...).field(...).had(name=...) functionality to rename fields
schema(...).field(...).had(name=...) functionality to rename fieldscadwyn.main._Cadwyn experimental private class for automatically adding the header dependency and managing all objects related to versioning
cadwyn.main._Cadwyn experimental private class for automatically adding the header dependency and managing all objects related to versioningcadwyn.header_routing which only had experimental private functionsignore_coverage_for_latest_aliases argument to generate_code_for_versioned_packages which controls whether we add "a pragma: no cover" comment to the
ignore_coverage_for_latest_aliases argument to generate_code_for_versioned_packages which controls whether we add "a pragma: no cover" comment to the star imports in the generated version of the latest module. It is True by default.Add back the approach where the first version being an alias to latest in codegen
Add current working dir to sys.path when running code generation through CLI
sys.path when running code generation through CLIexclude_unset when migrating the body of a request to make sure that users' exclude_unset logic gets preservedPass first argument in typer.Argument to prevent errors on older typer versions
typer.Argument to prevent errors on older typer versionsCommand-line interface capable of running code-generation and outputting version info
_get_versioned_router and experimental header routing with it (by @tikon93). Note that the interface for this feature will change in the futurecadwyn.regenerate_dir_to_all_versions to cadwyn.generate_code_for_versioned_packagescadwyn.generate_all_router_versions to cadwyn.generate_versioned_routersunions directory and all logic around it (replaced by internal request schema)FillablePrivateAttr and all logic around it (replaced by internal request schema)schema(...).property constructor and all logic around it (replaced by internal request schema)Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →