Metadata-Version: 2.1
Name: cadwyn
Version: 2.0.1
Summary: Modern Stripe-like API versioning in FastAPI
Home-page: https://github.com/ovsyanka83/cadwyn
License: MIT
Author: Stanislav Zmiev
Author-email: zmievsa@gmail.com
Requires-Python: >=3.10,<4.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: AsyncIO
Classifier: Framework :: FastAPI
Classifier: Framework :: Pydantic
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Internet
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Provides-Extra: cli
Requires-Dist: fastapi (>=0.96.1)
Requires-Dist: fastapi-header-versioning (>=1.1.0)
Requires-Dist: pydantic (>=1.10.0,<2.0.0)
Requires-Dist: typer (>=0.7.0); extra == "cli"
Requires-Dist: typing-extensions
Project-URL: Repository, https://github.com/ovsyanka83/cadwyn
Description-Content-Type: text/markdown

# Cadwyn

Modern [Stripe-like](https://stripe.com/blog/api-versioning) API versioning in FastAPI

---

<p align="center">
<a href="https://github.com/ovsyanka83/cadwyn/actions?query=workflow%3ATests+event%3Apush+branch%3Amain" target="_blank">
    <img src="https://github.com/Ovsyanka83/cadwyn/actions/workflows/test.yaml/badge.svg?branch=main&event=push" alt="Test">
</a>
<a href="https://codecov.io/gh/ovsyanka83/cadwyn" target="_blank">
    <img src="https://img.shields.io/codecov/c/github/ovsyanka83/cadwyn?color=%2334D058" alt="Coverage">
</a>
<a href="https://pypi.org/project/cadwyn/" target="_blank">
    <img alt="PyPI" src="https://img.shields.io/pypi/v/cadwyn?color=%2334D058&label=pypi%20package" alt="Package version">
</a>
<a href="https://pypi.org/project/cadwyn/" target="_blank">
    <img src="https://img.shields.io/pypi/pyversions/cadwyn?color=%2334D058" alt="Supported Python versions">
</a>
</p>

## Who is this for?

Cadwyn allows you to support a single version of your code, auto-generating the code/routes for older versions. You keep versioning encapsulated in small and independent "version change" modules while your business logic knows nothing about versioning.

Its approach will be useful if you want to:

1. Support many API versions for a long time
2. Effortlessly backport features and bugfixes to older API versions

Otherwise, more conventional methods of API versioning may be preferable.

## Get started

The [documentation](https://docs.cadwyn.dev) has everything you need to get started. It is recommended to read it in the following order:

1. [Tutorial](https://docs.cadwyn.dev/tutorial/)
2. [Recipes](https://docs.cadwyn.dev/recipes/)
3. [Reference](https://docs.cadwyn.dev/reference/)
4. [Theory](https://docs.cadwyn.dev/theory/)

## Similar projects

The following projects are trying to accomplish similar results with a lot more simplistic functionality.

- <https://github.com/sjkaliski/pinned>
- <https://github.com/phillbaker/gates>
- <https://github.com/lukepolo/laravel-api-migrations>
- <https://github.com/tomschlick/request-migrations>
- <https://github.com/keygen-sh/request_migrations>

