# Cadwyn
Production-ready community-driven modern [Stripe-like](https://stripe.com/blog/api-versioning) API versioning in FastAPI
---
<p align="center">
<a href="https://github.com/zmievsa/cadwyn/actions/workflows/ci.yaml?branch=main&event=push" target="_blank">
<img src="https://github.com/zmievsa/cadwyn/actions/workflows/ci.yaml/badge.svg?branch=main&event=push" alt="Test">
</a>
<a href="https://codecov.io/gh/zmievsa/cadwyn" target="_blank">
<img src="https://img.shields.io/codecov/c/github/zmievsa/cadwyn?color=%2334D058&logo=codecov" 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&logo=pypi&label=PyPI" alt="Package version">
</a>
<a href="https://pypi.org/project/cadwyn/" target="_blank">
<img src="https://img.shields.io/pypi/pyversions/cadwyn?color=%2334D058&logo=python" alt="Supported Python versions">
</a>
<a href="https://discord.gg/yRmcWF7rxE" target="_blank">
<img alt="Discord" src="https://img.shields.io/discord/1183145640407076864?color=%2334D058&logo=discord">
</a>
</p>
## Who is this for?
Cadwyn allows you to maintain the implementation just for your newest API version and get all the older versions generated automatically. You keep API backward compatibility encapsulated in small and independent "version change" modules while your business logic stays simple and knows nothing about versioning.
This [approach](https://docs.cadwyn.dev/theory/how_we_got_here/#ii-migration-based-response-building) may be useful if you want to:
1. Support many API versions for a long time
2. Have features and bugfixes automatically backported to older API versions
Whether you are a newbie in API versioning, a pro looking for a sophisticated tool, an experimenter looking to build a similar framework, or even someone who just wants to learn about all approaches to API versioning -- Cadwyn has the functionality, theory, and documentation to cover all the mentioned use cases.
## Get started
The [documentation](https://docs.cadwyn.dev) has everything you need to succeed.
## Sponsors
These are our gorgeous sponsors. They are using Cadwyn and are sponsoring it through various means. Contact [me](https://github.com/zmievsa) if you would like to become one, too!
## Contributors
<details>
<summary>Thanks goes to these wonderful people:</summary>
<a href="https://allcontributors.org/docs/en/emoji-key">Emoji Key </a>
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification.
Contributions are welcome!
</details>
<!-- contributors-end -->
Raw data
{
"_id": null,
"home_page": null,
"name": "cadwyn",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "api, api-versioning, code-generation, fastapi, hints, json-schema, pydantic, python, python310, python311, python312, python313, python39, stripe, versioning",
"author": null,
"author_email": "Stanislav Zmiev <zmievsa@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/1d/8e/b99d3b15bed4d332b319c3ccdc437ec0a32e7a72c6a5a8461e8ccf3d84be/cadwyn-5.4.4.tar.gz",
"platform": null,
"description": "# Cadwyn\n\nProduction-ready community-driven modern [Stripe-like](https://stripe.com/blog/api-versioning) API versioning in FastAPI\n\n---\n\n<p align=\"center\">\n<a href=\"https://github.com/zmievsa/cadwyn/actions/workflows/ci.yaml?branch=main&event=push\" target=\"_blank\">\n <img src=\"https://github.com/zmievsa/cadwyn/actions/workflows/ci.yaml/badge.svg?branch=main&event=push\" alt=\"Test\">\n</a>\n<a href=\"https://codecov.io/gh/zmievsa/cadwyn\" target=\"_blank\">\n <img src=\"https://img.shields.io/codecov/c/github/zmievsa/cadwyn?color=%2334D058&logo=codecov\" alt=\"Coverage\">\n</a>\n<a href=\"https://pypi.org/project/cadwyn/\" target=\"_blank\">\n <img alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/cadwyn?color=%2334D058&logo=pypi&label=PyPI\" alt=\"Package version\">\n</a>\n<a href=\"https://pypi.org/project/cadwyn/\" target=\"_blank\">\n <img src=\"https://img.shields.io/pypi/pyversions/cadwyn?color=%2334D058&logo=python\" alt=\"Supported Python versions\">\n</a>\n<a href=\"https://discord.gg/yRmcWF7rxE\" target=\"_blank\">\n <img alt=\"Discord\" src=\"https://img.shields.io/discord/1183145640407076864?color=%2334D058&logo=discord\">\n</a>\n</p>\n\n## Who is this for?\n\nCadwyn allows you to maintain the implementation just for your newest API version and get all the older versions generated automatically. You keep API backward compatibility encapsulated in small and independent \"version change\" modules while your business logic stays simple and knows nothing about versioning.\n\nThis [approach](https://docs.cadwyn.dev/theory/how_we_got_here/#ii-migration-based-response-building) may be useful if you want to:\n\n1. Support many API versions for a long time\n2. Have features and bugfixes automatically backported to older API versions\n\nWhether you are a newbie in API versioning, a pro looking for a sophisticated tool, an experimenter looking to build a similar framework, or even someone who just wants to learn about all approaches to API versioning -- Cadwyn has the functionality, theory, and documentation to cover all the mentioned use cases.\n\n## Get started\n\nThe [documentation](https://docs.cadwyn.dev) has everything you need to succeed.\n\n## Sponsors\n\nThese are our gorgeous sponsors. They are using Cadwyn and are sponsoring it through various means. Contact [me](https://github.com/zmievsa) if you would like to become one, too!\n\n## Contributors\n\n<details>\n\n<summary>Thanks goes to these wonderful people:</summary>\n<a href=\"https://allcontributors.org/docs/en/emoji-key\">Emoji Key </a>\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification.\nContributions are welcome!\n\n</details>\n\n<!-- contributors-end -->\n",
"bugtrack_url": null,
"license": null,
"summary": "Production-ready community-driven modern Stripe-like API versioning in FastAPI",
"version": "5.4.4",
"project_urls": {
"Documentation": "https://docs.cadwyn.dev",
"Source code": "https://github.com/zmievsa/cadwyn"
},
"split_keywords": [
"api",
" api-versioning",
" code-generation",
" fastapi",
" hints",
" json-schema",
" pydantic",
" python",
" python310",
" python311",
" python312",
" python313",
" python39",
" stripe",
" versioning"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "f367442922a6758c1059907e3030e1a978a11533d08ac459ccd3cd255596b316",
"md5": "6db977450bfc5cf786939c518a6e5c5c",
"sha256": "e466b5769dcc6be13866d366cf0cd670e79ecced387de33726d50b19e3f2405d"
},
"downloads": -1,
"filename": "cadwyn-5.4.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6db977450bfc5cf786939c518a6e5c5c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 60097,
"upload_time": "2025-07-13T12:35:17",
"upload_time_iso_8601": "2025-07-13T12:35:17.023878Z",
"url": "https://files.pythonhosted.org/packages/f3/67/442922a6758c1059907e3030e1a978a11533d08ac459ccd3cd255596b316/cadwyn-5.4.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1d8eb99d3b15bed4d332b319c3ccdc437ec0a32e7a72c6a5a8461e8ccf3d84be",
"md5": "708e87699ddb0f8dccbb62f27050c2b5",
"sha256": "d0dd03ab9d52324c9f5df132bb246c94c8f606ed934ab8a68f9a1ea7f0e3c4d4"
},
"downloads": -1,
"filename": "cadwyn-5.4.4.tar.gz",
"has_sig": false,
"md5_digest": "708e87699ddb0f8dccbb62f27050c2b5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 618457,
"upload_time": "2025-07-13T12:35:18",
"upload_time_iso_8601": "2025-07-13T12:35:18.457073Z",
"url": "https://files.pythonhosted.org/packages/1d/8e/b99d3b15bed4d332b319c3ccdc437ec0a32e7a72c6a5a8461e8ccf3d84be/cadwyn-5.4.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-13 12:35:18",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "zmievsa",
"github_project": "cadwyn",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "cadwyn"
}