fastapi-router-versioning 0.1.1__tar.gz → 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/PKG-INFO +15 -16
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/README.md +13 -14
- fastapi_router_versioning-0.1.2/RELEASE_NOTES.md +47 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/fastapi_router_versioning/__init__.py +1 -1
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/pyproject.toml +1 -1
- fastapi_router_versioning-0.1.1/RELEASE_NOTES.md +0 -37
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/.github/dependabot.yml +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/.github/workflows/detect-conflicts.yml +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/.github/workflows/pre-commit.yml +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/.github/workflows/prepare-release.yml +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/.github/workflows/publish.yml +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/.github/workflows/test-redistribute.yml +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/.github/workflows/test.yml +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/.gitignore +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/.pre-commit-config.yaml +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/.python-version +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/LICENSE +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/examples/calver_app.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/examples/download_static_assets.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/examples/multi_router_app.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/examples/openapi_hook_app.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/examples/self_hosted_docs_app.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/examples/semver_app.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/examples/semver_major_only_app.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/examples/webhook_versioning_app.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/fastapi_router_versioning/py.typed +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/fastapi_router_versioning/versioner.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/scripts/format.sh +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/scripts/lint.sh +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/scripts/prepare_release.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/scripts/test-cov-html.sh +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/scripts/test-cov.sh +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/scripts/test.sh +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/tests/__init__.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/tests/test_calver.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/tests/test_fastapi_integration.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/tests/test_prepare_release.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/tests/test_semver.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/tests/test_versioner.py +0 -0
- {fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/uv.lock +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastapi-router-versioning
|
|
3
|
-
Version: 0.1.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.1.2
|
|
4
|
+
Summary: Router-based API versioning for FastAPI, with per-version docs and a declarative route lifecycle.
|
|
5
5
|
Project-URL: Homepage, https://github.com/mat81black/fastapi-router-versioning
|
|
6
6
|
Project-URL: Repository, https://github.com/mat81black/fastapi-router-versioning
|
|
7
7
|
Project-URL: Issues, https://github.com/mat81black/fastapi-router-versioning/issues
|
|
@@ -26,15 +26,15 @@ Requires-Python: >=3.10
|
|
|
26
26
|
Requires-Dist: fastapi!=0.137.0,!=0.137.1,>=0.120.0
|
|
27
27
|
Description-Content-Type: text/markdown
|
|
28
28
|
|
|
29
|
-
# FastAPI Router Versioning
|
|
29
|
+
# FastAPI Router Versioning
|
|
30
30
|
|
|
31
31
|
[](https://pypi.org/project/fastapi-router-versioning/)
|
|
32
32
|
[](LICENSE)
|
|
33
33
|
[](https://pypi.org/project/fastapi-router-versioning/)
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
Router-based API versioning for FastAPI.
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
FastAPI has no built-in versioning mechanism. The common workaround — duplicating routers or managing prefixes manually — breaks down quickly as the number of versions grows. This package adds declarative versioning directly on routes, with isolated URL prefixes, per-version Swagger UI, and a full route lifecycle, without touching the existing application structure.
|
|
38
38
|
|
|
39
39
|
---
|
|
40
40
|
|
|
@@ -93,7 +93,7 @@ RouterVersioner(app=app, routers=router, version_format=VersionFormat.SEMVER).ve
|
|
|
93
93
|
# Mounts: GET /v1_0/items GET /v2_0/items
|
|
94
94
|
```
|
|
95
95
|
|
|
96
|
-
Each version
|
|
96
|
+
Each version gets its own Swagger UI at `/v1_0/docs`, `/v2_0/docs`, and so on.
|
|
97
97
|
|
|
98
98
|
---
|
|
99
99
|
|
|
@@ -117,9 +117,9 @@ RouterVersioner(app=app, routers=router, version_format=VersionFormat.CALVER).ve
|
|
|
117
117
|
# Mounts: GET /2025-01-01/items
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
Valid CalVer tokens: `"2025-01-01"`, `"v3"`, `"stable"`, etc.
|
|
121
121
|
|
|
122
|
-
|
|
122
|
+
**CalVer sorting:** versions are sorted lexicographically, so tokens must be comparable in the intended order. ISO dates (`"2025-01-01"`) and zero-padded numbers (`"v01"`, `"v02"`) work correctly. Non-padded strings like `"v1"`, `"v10"`, `"v2"` will not sort correctly and will cause routes to appear in the wrong versions.
|
|
123
123
|
|
|
124
124
|
---
|
|
125
125
|
|
|
@@ -181,8 +181,8 @@ Call `.versionize()` after constructing the object. It returns the list of activ
|
|
|
181
181
|
|
|
182
182
|
| Parameter | Type | Required | Description |
|
|
183
183
|
|---|---|---|---|
|
|
184
|
-
| `version` | `tuple[int, int] \| str` | yes |
|
|
185
|
-
| `deprecate_in` | same \| `None` | no | Version
|
|
184
|
+
| `version` | `tuple[int, int] \| str` | yes | First version in which this route is active |
|
|
185
|
+
| `deprecate_in` | same \| `None` | no | Version in which this route is marked deprecated in the docs |
|
|
186
186
|
| `remove_in` | same \| `None` | no | Version from which this route is removed entirely |
|
|
187
187
|
|
|
188
188
|
All three parameters must match the `version_format` configured on `RouterVersioner`
|
|
@@ -278,7 +278,7 @@ RouterVersioner(
|
|
|
278
278
|
).versionize()
|
|
279
279
|
```
|
|
280
280
|
|
|
281
|
-
The hook receives `(schema: dict, version: VersionT)` and must return the
|
|
281
|
+
The hook receives `(schema: dict, version: VersionT)` and must return the modified dict.
|
|
282
282
|
|
|
283
283
|
### OpenAPI Callbacks and Webhooks
|
|
284
284
|
|
|
@@ -325,12 +325,11 @@ RouterVersioner(
|
|
|
325
325
|
# /v2_0/openapi.json → webhooks: /order-created (V2) ← /payment-failed removed
|
|
326
326
|
```
|
|
327
327
|
|
|
328
|
-
The same
|
|
329
|
-
a new webhook version only appears once a route version creates that API prefix.
|
|
328
|
+
The same `remove_in` lifecycle applies. A new webhook version only appears once a route version creates that API prefix.
|
|
330
329
|
|
|
331
330
|
### Multiple routers
|
|
332
331
|
|
|
333
|
-
Pass a list of routers to version routes
|
|
332
|
+
Pass a list of routers to version routes split across modules:
|
|
334
333
|
|
|
335
334
|
```python
|
|
336
335
|
RouterVersioner(
|
|
@@ -344,7 +343,7 @@ All routers are versioned together under the same prefix tree.
|
|
|
344
343
|
|
|
345
344
|
### Self-hosted docs (air-gapped environments)
|
|
346
345
|
|
|
347
|
-
By default, Swagger UI and ReDoc assets are loaded from the FastAPI CDN. In air-gapped or corporate environments, point them at
|
|
346
|
+
By default, Swagger UI and ReDoc assets are loaded from the FastAPI CDN. In air-gapped or corporate environments, point them at locally hosted assets:
|
|
348
347
|
|
|
349
348
|
```python
|
|
350
349
|
RouterVersioner(
|
|
@@ -360,7 +359,7 @@ RouterVersioner(
|
|
|
360
359
|
).versionize()
|
|
361
360
|
```
|
|
362
361
|
|
|
363
|
-
See [`examples/download_static_assets.py`](examples/download_static_assets.py) for a
|
|
362
|
+
See [`examples/download_static_assets.py`](examples/download_static_assets.py) for a script that downloads all required assets in one step, and [`examples/self_hosted_docs_app.py`](examples/self_hosted_docs_app.py) for a complete working example.
|
|
364
363
|
|
|
365
364
|
### Reverse proxy / sub-app mounting
|
|
366
365
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
# FastAPI Router Versioning
|
|
1
|
+
# FastAPI Router Versioning
|
|
2
2
|
|
|
3
3
|
[](https://pypi.org/project/fastapi-router-versioning/)
|
|
4
4
|
[](LICENSE)
|
|
5
5
|
[](https://pypi.org/project/fastapi-router-versioning/)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Router-based API versioning for FastAPI.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
FastAPI has no built-in versioning mechanism. The common workaround — duplicating routers or managing prefixes manually — breaks down quickly as the number of versions grows. This package adds declarative versioning directly on routes, with isolated URL prefixes, per-version Swagger UI, and a full route lifecycle, without touching the existing application structure.
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -65,7 +65,7 @@ RouterVersioner(app=app, routers=router, version_format=VersionFormat.SEMVER).ve
|
|
|
65
65
|
# Mounts: GET /v1_0/items GET /v2_0/items
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
Each version
|
|
68
|
+
Each version gets its own Swagger UI at `/v1_0/docs`, `/v2_0/docs`, and so on.
|
|
69
69
|
|
|
70
70
|
---
|
|
71
71
|
|
|
@@ -89,9 +89,9 @@ RouterVersioner(app=app, routers=router, version_format=VersionFormat.CALVER).ve
|
|
|
89
89
|
# Mounts: GET /2025-01-01/items
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
Valid CalVer tokens: `"2025-01-01"`, `"v3"`, `"stable"`, etc.
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
**CalVer sorting:** versions are sorted lexicographically, so tokens must be comparable in the intended order. ISO dates (`"2025-01-01"`) and zero-padded numbers (`"v01"`, `"v02"`) work correctly. Non-padded strings like `"v1"`, `"v10"`, `"v2"` will not sort correctly and will cause routes to appear in the wrong versions.
|
|
95
95
|
|
|
96
96
|
---
|
|
97
97
|
|
|
@@ -153,8 +153,8 @@ Call `.versionize()` after constructing the object. It returns the list of activ
|
|
|
153
153
|
|
|
154
154
|
| Parameter | Type | Required | Description |
|
|
155
155
|
|---|---|---|---|
|
|
156
|
-
| `version` | `tuple[int, int] \| str` | yes |
|
|
157
|
-
| `deprecate_in` | same \| `None` | no | Version
|
|
156
|
+
| `version` | `tuple[int, int] \| str` | yes | First version in which this route is active |
|
|
157
|
+
| `deprecate_in` | same \| `None` | no | Version in which this route is marked deprecated in the docs |
|
|
158
158
|
| `remove_in` | same \| `None` | no | Version from which this route is removed entirely |
|
|
159
159
|
|
|
160
160
|
All three parameters must match the `version_format` configured on `RouterVersioner`
|
|
@@ -250,7 +250,7 @@ RouterVersioner(
|
|
|
250
250
|
).versionize()
|
|
251
251
|
```
|
|
252
252
|
|
|
253
|
-
The hook receives `(schema: dict, version: VersionT)` and must return the
|
|
253
|
+
The hook receives `(schema: dict, version: VersionT)` and must return the modified dict.
|
|
254
254
|
|
|
255
255
|
### OpenAPI Callbacks and Webhooks
|
|
256
256
|
|
|
@@ -297,12 +297,11 @@ RouterVersioner(
|
|
|
297
297
|
# /v2_0/openapi.json → webhooks: /order-created (V2) ← /payment-failed removed
|
|
298
298
|
```
|
|
299
299
|
|
|
300
|
-
The same
|
|
301
|
-
a new webhook version only appears once a route version creates that API prefix.
|
|
300
|
+
The same `remove_in` lifecycle applies. A new webhook version only appears once a route version creates that API prefix.
|
|
302
301
|
|
|
303
302
|
### Multiple routers
|
|
304
303
|
|
|
305
|
-
Pass a list of routers to version routes
|
|
304
|
+
Pass a list of routers to version routes split across modules:
|
|
306
305
|
|
|
307
306
|
```python
|
|
308
307
|
RouterVersioner(
|
|
@@ -316,7 +315,7 @@ All routers are versioned together under the same prefix tree.
|
|
|
316
315
|
|
|
317
316
|
### Self-hosted docs (air-gapped environments)
|
|
318
317
|
|
|
319
|
-
By default, Swagger UI and ReDoc assets are loaded from the FastAPI CDN. In air-gapped or corporate environments, point them at
|
|
318
|
+
By default, Swagger UI and ReDoc assets are loaded from the FastAPI CDN. In air-gapped or corporate environments, point them at locally hosted assets:
|
|
320
319
|
|
|
321
320
|
```python
|
|
322
321
|
RouterVersioner(
|
|
@@ -332,7 +331,7 @@ RouterVersioner(
|
|
|
332
331
|
).versionize()
|
|
333
332
|
```
|
|
334
333
|
|
|
335
|
-
See [`examples/download_static_assets.py`](examples/download_static_assets.py) for a
|
|
334
|
+
See [`examples/download_static_assets.py`](examples/download_static_assets.py) for a script that downloads all required assets in one step, and [`examples/self_hosted_docs_app.py`](examples/self_hosted_docs_app.py) for a complete working example.
|
|
336
335
|
|
|
337
336
|
### Reverse proxy / sub-app mounting
|
|
338
337
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Release Notes
|
|
2
|
+
|
|
3
|
+
## Latest Changes
|
|
4
|
+
|
|
5
|
+
## 0.1.2 (2026-06-25)
|
|
6
|
+
|
|
7
|
+
### Internal
|
|
8
|
+
|
|
9
|
+
* 👷 Add Python 3.14 classifier to `pyproject.toml` to align with the versions already covered by CI.
|
|
10
|
+
|
|
11
|
+
### Docs
|
|
12
|
+
|
|
13
|
+
* 📝 Update README and `pyproject.toml` to clarify package description and improve documentation consistency. PR [#12](https://github.com/mat81black/fastapi-router-versioning/pull/12) by [@mat81black](https://github.com/mat81black).
|
|
14
|
+
|
|
15
|
+
## 0.1.1 (2026-06-24)
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* ✨ Add per-version OpenAPI schema caching: schemas are generated once and cached, reducing overhead on repeated requests. PR [#5](https://github.com/mat81black/fastapi-router-versioning/pull/5) by [@mat81black](https://github.com/mat81black).
|
|
20
|
+
* ✨ Track which routes belong to each version to invalidate the cache automatically when the route set changes. PR [#5](https://github.com/mat81black/fastapi-router-versioning/pull/5) by [@mat81black](https://github.com/mat81black).
|
|
21
|
+
|
|
22
|
+
### Fixes
|
|
23
|
+
|
|
24
|
+
* 🐛 Fix WebSocket routes not being handled correctly in `versioned_routers` when the cache was active. PR [#5](https://github.com/mat81black/fastapi-router-versioning/pull/5) by [@mat81black](https://github.com/mat81black).
|
|
25
|
+
* 🐛 Improve OpenAPI schema cache resilience: cache is now safely bypassed on unexpected errors instead of raising. PR [#5](https://github.com/mat81black/fastapi-router-versioning/pull/5) by [@mat81black](https://github.com/mat81black).
|
|
26
|
+
|
|
27
|
+
### Internal
|
|
28
|
+
|
|
29
|
+
* 👷 Add `prepare-release.yml` workflow and `scripts/prepare_release.py` for automated version bumping and release PR creation. PR [#6](https://github.com/mat81black/fastapi-router-versioning/pull/6) by [@mat81black](https://github.com/mat81black).
|
|
30
|
+
* 👷 Add `changes` job to `test.yml` and `test-redistribute.yml` to skip CI when no relevant files are modified. PR [#10](https://github.com/mat81black/fastapi-router-versioning/pull/10) by [@mat81black](https://github.com/mat81black).
|
|
31
|
+
|
|
32
|
+
## 0.1.0 (2025-06-24)
|
|
33
|
+
|
|
34
|
+
🚀 First official public release of **fastapi-router-versioning**.
|
|
35
|
+
|
|
36
|
+
Router-based API versioning for FastAPI, with declarative route lifecycle, per-version OpenAPI schemas, and isolated documentation — without altering the core application structure.
|
|
37
|
+
|
|
38
|
+
### Features
|
|
39
|
+
|
|
40
|
+
* ✨ SemVer & CalVer support: route versioning using `(major, minor)` tuples or lexicographically sortable arbitrary strings.
|
|
41
|
+
* ✨ Declarative route lifecycle: introduce, deprecate (`deprecate_in`), and remove (`remove_in`) routes across versions.
|
|
42
|
+
* ✨ Per-version documentation: isolated Swagger UI, ReDoc, and `openapi.json` for each active version.
|
|
43
|
+
* ✨ OpenAPI schema hook: modify the filtered schema per version via `openapi_hook`.
|
|
44
|
+
* ✨ Independent webhook versioning via `webhook_routers`, with propagation of per-route OpenAPI Callbacks.
|
|
45
|
+
* ✨ Latest-version alias: expose the highest active version under a stable configurable prefix.
|
|
46
|
+
* ✨ Self-hosted docs: full control over Swagger/ReDoc static assets and option to disable Google Fonts.
|
|
47
|
+
* ✨ Reverse proxy aware: resolves and injects the ASGI `root_path` at request time.
|
|
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "fastapi-router-versioning"
|
|
7
7
|
dynamic = ["version"]
|
|
8
|
-
description = "
|
|
8
|
+
description = "Router-based API versioning for FastAPI, with per-version docs and a declarative route lifecycle."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
11
11
|
license-files = ["LICENSE"]
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# Release Notes
|
|
2
|
-
|
|
3
|
-
## Latest Changes
|
|
4
|
-
|
|
5
|
-
## 0.1.1 (2026-06-24)
|
|
6
|
-
|
|
7
|
-
### Features
|
|
8
|
-
|
|
9
|
-
* ✨ Add per-version OpenAPI schema caching: schemas are generated once and cached, significantly reducing overhead on repeated requests.
|
|
10
|
-
* ✨ Track which routes belong to each version to invalidate the cache automatically when the route set changes.
|
|
11
|
-
|
|
12
|
-
### Fixes
|
|
13
|
-
|
|
14
|
-
* 🐛 Fix WebSocket routes not being handled correctly in `versioned_routers` when the cache was active.
|
|
15
|
-
* 🐛 Improve OpenAPI schema cache resilience: cache is now safely bypassed on unexpected errors instead of raising.
|
|
16
|
-
|
|
17
|
-
### Internal
|
|
18
|
-
|
|
19
|
-
* 👷 Add `prepare-release.yml` workflow and `scripts/prepare_release.py` for automated version bumping and release PR creation.
|
|
20
|
-
* 👷 Add `changes` job to `test.yml` and `test-redistribute.yml` to skip CI when no relevant files are modified.
|
|
21
|
-
|
|
22
|
-
## 0.1.0 (2025-06-24)
|
|
23
|
-
|
|
24
|
-
🚀 First official public release of **fastapi-router-versioning**.
|
|
25
|
-
|
|
26
|
-
This library provides an elegant, native, router-based solution for **FastAPI API versioning**. It allows you to manage the entire lifecycle of your endpoints declaratively with a single decorator, automatically generating isolated schemas and documentation for every version without altering your core application structure.
|
|
27
|
-
|
|
28
|
-
### Features
|
|
29
|
-
|
|
30
|
-
* ✨ SemVer & CalVer support: route versioning using `(major, minor)` tuples or lexicographically sortable arbitrary strings (like ISO dates).
|
|
31
|
-
* ✨ Declarative route lifecycle: introduce, deprecate (`deprecate_in`), and remove (`remove_in`) routes across versions.
|
|
32
|
-
* ✨ Per-version documentation: isolated Swagger UI, ReDoc, and `openapi.json` for each active version.
|
|
33
|
-
* ✨ Advanced OpenAPI customization via `openapi_hook`: manipulate the filtered JSON schema per version (vendor extensions, custom logos, API Gateway integrations).
|
|
34
|
-
* ✨ Independent webhook versioning via `webhook_routers`, with native propagation of per-route OpenAPI Callbacks and WebSockets.
|
|
35
|
-
* ✨ Latest-version alias: expose the highest active version under a stable configurable prefix (e.g. `/latest`).
|
|
36
|
-
* ✨ Enterprise & air-gapped ready: full control over Swagger/ReDoc static assets and option to disable Google Fonts.
|
|
37
|
-
* ✨ Reverse proxy aware: dynamically resolves and injects the ASGI `root_path` at request time.
|
|
File without changes
|
|
File without changes
|
{fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/.github/workflows/pre-commit.yml
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/.github/workflows/publish.yml
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/.github/workflows/test.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/examples/multi_router_app.py
RENAMED
|
File without changes
|
{fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/examples/openapi_hook_app.py
RENAMED
|
File without changes
|
{fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/examples/self_hosted_docs_app.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/scripts/prepare_release.py
RENAMED
|
File without changes
|
{fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/scripts/test-cov-html.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_router_versioning-0.1.1 → fastapi_router_versioning-0.1.2}/tests/test_prepare_release.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|