cadwyn
cadwyn copied to clipboard
Production-ready community-driven modern Stripe-like API versioning in FastAPI
This pull request: - adds enrich_swagger() method to the startup event handler. - cleans up unnecessary calls to enrich_swagger() - fixes tests Initially, only three tests failed because lifespan events...
enrich_swagger is called every time an endpoint is added to Cadwyn app. The problem is that enrich_swagger does not just add this endpoint: it rebuilds the entire swagger, likely slowing...
**Is your feature request related to a problem? Please describe.** Since head schema is not exposed to users directly, it is not obvious that docsting will be copied to all...
Currently, Cadwyn uses the following test naming convention: `test__{WHAT_WE_TEST}__{IN_WHAT_CONTEXT}__should_{THE_EXPECTED_RESULT}`. Note that we do not follow this style in test_routing and note that we do not write the expected result if...
**Describe the solution you'd like** The docs mention that you can ["use Cadwyn directly through `cadwyn.generate_versioned_routers`"](https://docs.cadwyn.dev/reference/#routing:~:text=If%20you%20want%20to%20use%20any%20other%20sort%20of%20routing%2C%20you%20can%20use%20Cadwyn%20directly%20through%20cadwyn.generate_versioned_routers.). This is something I'd like to do to emulate Stripe's model and make the...
We can take the changelog from #43 and turn it into a JSON response that we can return from `/v1/changelog` endpoint. This will give rise to all sorts of integrations...
Currently, our schema().validator().didnt_exist only supports functional style but pydantic 2 also has support for variable style validators: https://docs.pydantic.dev/2.0/usage/validators/#reuse-validators It will be hard and likely unnecessary to support their addition but...
I think, it would be best to take all instructions in version changes, put them into some format (like json), then hash the string of that json, and put that...
This is a huge task that should be split into multiple tasks but the gist is as follows: Cadwyn could catch when our users make a breaking change and it...