fastapi-toolsets 5.0.0b2__tar.gz → 5.1.1__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_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/PKG-INFO +2 -7
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/README.md +0 -2
- fastapi_toolsets-5.1.1/pyproject.toml +133 -0
- fastapi_toolsets-5.0.0b2/pyproject.toml → fastapi_toolsets-5.1.1/pyproject.toml.orig +15 -7
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/__init__.py +1 -1
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/cli/commands/fixtures.py +1 -1
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/crud/factory.py +268 -73
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/crud/search.py +89 -60
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/db/core.py +11 -9
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/db/m2m.py +1 -3
- fastapi_toolsets-5.1.1/src/fastapi_toolsets/dependencies.py +166 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/exceptions/handler.py +25 -26
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/fixtures/__init__.py +6 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/fixtures/utils.py +9 -7
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/models/watched.py +75 -37
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/schemas.py +4 -4
- fastapi_toolsets-5.0.0b2/src/fastapi_toolsets/dependencies.py +0 -155
- fastapi_toolsets-5.0.0b2/src/fastapi_toolsets/security/__init__.py +0 -26
- fastapi_toolsets-5.0.0b2/src/fastapi_toolsets/security/abc.py +0 -55
- fastapi_toolsets-5.0.0b2/src/fastapi_toolsets/security/oauth.py +0 -197
- fastapi_toolsets-5.0.0b2/src/fastapi_toolsets/security/sources/__init__.py +0 -8
- fastapi_toolsets-5.0.0b2/src/fastapi_toolsets/security/sources/bearer.py +0 -120
- fastapi_toolsets-5.0.0b2/src/fastapi_toolsets/security/sources/cookie.py +0 -148
- fastapi_toolsets-5.0.0b2/src/fastapi_toolsets/security/sources/header.py +0 -67
- fastapi_toolsets-5.0.0b2/src/fastapi_toolsets/security/sources/multi.py +0 -71
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/LICENSE +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/_imports.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/cli/__init__.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/cli/app.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/cli/commands/__init__.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/cli/config.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/cli/pyproject.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/cli/utils.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/crud/__init__.py +1 -1
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/db/__init__.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/db/locks.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/db/testing.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/db/watch.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/exceptions/__init__.py +2 -2
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/exceptions/exceptions.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/fixtures/enum.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/fixtures/registry.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/logger.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/metrics/__init__.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/metrics/handler.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/metrics/registry.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/models/__init__.py +3 -3
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/models/columns.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/py.typed +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/pytest/__init__.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/pytest/plugin.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/pytest/utils.py +0 -0
- {fastapi_toolsets-5.0.0b2 → fastapi_toolsets-5.1.1}/src/fastapi_toolsets/types.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastapi-toolsets
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.1.1
|
|
4
4
|
Summary: Production-ready utilities for FastAPI applications
|
|
5
5
|
Keywords: fastapi,sqlalchemy,postgresql
|
|
6
6
|
Author: d3vyce
|
|
@@ -29,14 +29,12 @@ Requires-Dist: asyncpg>=0.29.0
|
|
|
29
29
|
Requires-Dist: fastapi>=0.100.0
|
|
30
30
|
Requires-Dist: pydantic>=2.0
|
|
31
31
|
Requires-Dist: sqlalchemy[asyncio]>=2.0
|
|
32
|
-
Requires-Dist: fastapi-toolsets[cli,metrics,pytest
|
|
32
|
+
Requires-Dist: fastapi-toolsets[cli,metrics,pytest] ; extra == 'all'
|
|
33
33
|
Requires-Dist: typer>=0.9.0 ; extra == 'cli'
|
|
34
34
|
Requires-Dist: prometheus-client>=0.20.0 ; extra == 'metrics'
|
|
35
35
|
Requires-Dist: httpx>=0.25.0 ; extra == 'pytest'
|
|
36
36
|
Requires-Dist: pytest-xdist>=3.0.0 ; extra == 'pytest'
|
|
37
37
|
Requires-Dist: pytest>=8.0.0 ; extra == 'pytest'
|
|
38
|
-
Requires-Dist: async-lru>=1.0 ; extra == 'security'
|
|
39
|
-
Requires-Dist: httpx>=0.25.0 ; extra == 'security'
|
|
40
38
|
Requires-Python: >=3.11
|
|
41
39
|
Project-URL: Homepage, https://github.com/d3vyce/fastapi-toolsets
|
|
42
40
|
Project-URL: Documentation, https://fastapi-toolsets.d3vyce.fr/
|
|
@@ -46,7 +44,6 @@ Provides-Extra: all
|
|
|
46
44
|
Provides-Extra: cli
|
|
47
45
|
Provides-Extra: metrics
|
|
48
46
|
Provides-Extra: pytest
|
|
49
|
-
Provides-Extra: security
|
|
50
47
|
Description-Content-Type: text/markdown
|
|
51
48
|
|
|
52
49
|
# FastAPI Toolsets
|
|
@@ -82,7 +79,6 @@ Install only the extras you need:
|
|
|
82
79
|
```bash
|
|
83
80
|
uv add "fastapi-toolsets[cli]"
|
|
84
81
|
uv add "fastapi-toolsets[metrics]"
|
|
85
|
-
uv add "fastapi-toolsets[security]"
|
|
86
82
|
uv add "fastapi-toolsets[pytest]"
|
|
87
83
|
```
|
|
88
84
|
|
|
@@ -108,7 +104,6 @@ uv add "fastapi-toolsets[all]"
|
|
|
108
104
|
|
|
109
105
|
### Optional
|
|
110
106
|
|
|
111
|
-
- **Security**: Composable authentication sources (`BearerTokenAuth`, `CookieAuth`, `APIKeyHeaderAuth`, `MultiAuth`) with HMAC-signed cookies and OAuth 2.0 / OIDC helpers
|
|
112
107
|
- **CLI**: Django-like command-line interface with fixture management and custom commands support
|
|
113
108
|
- **Metrics**: Prometheus metrics endpoint with provider/collector registry
|
|
114
109
|
- **Pytest Helpers**: Async test client, database session management, `pytest-xdist` support, and table cleanup utilities
|
|
@@ -31,7 +31,6 @@ Install only the extras you need:
|
|
|
31
31
|
```bash
|
|
32
32
|
uv add "fastapi-toolsets[cli]"
|
|
33
33
|
uv add "fastapi-toolsets[metrics]"
|
|
34
|
-
uv add "fastapi-toolsets[security]"
|
|
35
34
|
uv add "fastapi-toolsets[pytest]"
|
|
36
35
|
```
|
|
37
36
|
|
|
@@ -57,7 +56,6 @@ uv add "fastapi-toolsets[all]"
|
|
|
57
56
|
|
|
58
57
|
### Optional
|
|
59
58
|
|
|
60
|
-
- **Security**: Composable authentication sources (`BearerTokenAuth`, `CookieAuth`, `APIKeyHeaderAuth`, `MultiAuth`) with HMAC-signed cookies and OAuth 2.0 / OIDC helpers
|
|
61
59
|
- **CLI**: Django-like command-line interface with fixture management and custom commands support
|
|
62
60
|
- **Metrics**: Prometheus metrics endpoint with provider/collector registry
|
|
63
61
|
- **Pytest Helpers**: Async test client, database session management, `pytest-xdist` support, and table cleanup utilities
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "fastapi-toolsets"
|
|
3
|
+
version = "5.1.1"
|
|
4
|
+
description = "Production-ready utilities for FastAPI applications"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
license = "MIT"
|
|
7
|
+
license-files = ["LICENSE"]
|
|
8
|
+
requires-python = ">=3.11"
|
|
9
|
+
keywords = [
|
|
10
|
+
"fastapi",
|
|
11
|
+
"sqlalchemy",
|
|
12
|
+
"postgresql",
|
|
13
|
+
]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 5 - Production/Stable",
|
|
16
|
+
"Framework :: AsyncIO",
|
|
17
|
+
"Framework :: FastAPI",
|
|
18
|
+
"Framework :: Pydantic",
|
|
19
|
+
"Intended Audience :: Developers",
|
|
20
|
+
"Intended Audience :: Information Technology",
|
|
21
|
+
"Intended Audience :: System Administrators",
|
|
22
|
+
"License :: OSI Approved :: MIT License",
|
|
23
|
+
"Operating System :: OS Independent",
|
|
24
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
25
|
+
"Programming Language :: Python :: 3.11",
|
|
26
|
+
"Programming Language :: Python :: 3.12",
|
|
27
|
+
"Programming Language :: Python :: 3.13",
|
|
28
|
+
"Programming Language :: Python :: 3.14",
|
|
29
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
30
|
+
"Topic :: Software Development :: Libraries",
|
|
31
|
+
"Topic :: Software Development",
|
|
32
|
+
"Typing :: Typed",
|
|
33
|
+
]
|
|
34
|
+
dependencies = [
|
|
35
|
+
"asyncpg>=0.29.0",
|
|
36
|
+
"fastapi>=0.100.0",
|
|
37
|
+
"pydantic>=2.0",
|
|
38
|
+
"sqlalchemy[asyncio]>=2.0",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
[[project.authors]]
|
|
42
|
+
name = "d3vyce"
|
|
43
|
+
email = "contact@d3vyce.fr"
|
|
44
|
+
|
|
45
|
+
[project.urls]
|
|
46
|
+
Homepage = "https://github.com/d3vyce/fastapi-toolsets"
|
|
47
|
+
Documentation = "https://fastapi-toolsets.d3vyce.fr/"
|
|
48
|
+
Repository = "https://github.com/d3vyce/fastapi-toolsets"
|
|
49
|
+
Issues = "https://github.com/d3vyce/fastapi-toolsets/issues"
|
|
50
|
+
|
|
51
|
+
[project.optional-dependencies]
|
|
52
|
+
cli = ["typer>=0.9.0"]
|
|
53
|
+
metrics = ["prometheus_client>=0.20.0"]
|
|
54
|
+
pytest = [
|
|
55
|
+
"httpx>=0.25.0",
|
|
56
|
+
"pytest-xdist>=3.0.0",
|
|
57
|
+
"pytest>=8.0.0",
|
|
58
|
+
]
|
|
59
|
+
all = ["fastapi-toolsets[cli,metrics,pytest]"]
|
|
60
|
+
|
|
61
|
+
[project.scripts]
|
|
62
|
+
manager = "fastapi_toolsets.cli.app:cli"
|
|
63
|
+
|
|
64
|
+
[dependency-groups]
|
|
65
|
+
dev = [
|
|
66
|
+
{ include-group = "tests" },
|
|
67
|
+
{ include-group = "docs" },
|
|
68
|
+
{ include-group = "docs-src" },
|
|
69
|
+
"fastapi-toolsets[all]",
|
|
70
|
+
"prek>=0.3.8",
|
|
71
|
+
"ruff>=0.1.0",
|
|
72
|
+
"ty>=0.0.1a0",
|
|
73
|
+
]
|
|
74
|
+
tests = [
|
|
75
|
+
"async-lru>=1.0",
|
|
76
|
+
"coverage>=7.0.0",
|
|
77
|
+
"httpx>=0.25.0",
|
|
78
|
+
"pytest-anyio>=0.0.0",
|
|
79
|
+
"pytest-cov>=4.0.0",
|
|
80
|
+
"pytest-xdist>=3.0.0",
|
|
81
|
+
"pytest>=8.0.0",
|
|
82
|
+
]
|
|
83
|
+
docs = [
|
|
84
|
+
"mike",
|
|
85
|
+
"mkdocstrings-python>=2.0.2",
|
|
86
|
+
"zensical>=0.0.30",
|
|
87
|
+
]
|
|
88
|
+
docs-src = ["bcrypt>=4.0.0"]
|
|
89
|
+
|
|
90
|
+
[build-system]
|
|
91
|
+
requires = ["uv_build>=0.10,<0.13.0"]
|
|
92
|
+
build-backend = "uv_build"
|
|
93
|
+
|
|
94
|
+
[tool.ruff.format]
|
|
95
|
+
exclude = ["*.md"]
|
|
96
|
+
|
|
97
|
+
[tool.ruff.lint]
|
|
98
|
+
extend-select = ["E712"]
|
|
99
|
+
|
|
100
|
+
[tool.ruff.lint.flake8-bugbear]
|
|
101
|
+
extend-immutable-calls = [
|
|
102
|
+
"fastapi.Depends",
|
|
103
|
+
"fastapi.Security",
|
|
104
|
+
]
|
|
105
|
+
|
|
106
|
+
[tool.ruff.lint.per-file-ignores]
|
|
107
|
+
"tests/**" = [
|
|
108
|
+
"RUF012",
|
|
109
|
+
"RUF059",
|
|
110
|
+
"SIM117",
|
|
111
|
+
"DTZ001",
|
|
112
|
+
"S110",
|
|
113
|
+
"BLE001",
|
|
114
|
+
]
|
|
115
|
+
|
|
116
|
+
[tool.pytest.ini_options]
|
|
117
|
+
testpaths = ["tests"]
|
|
118
|
+
filterwarnings = ["ignore::DeprecationWarning"]
|
|
119
|
+
|
|
120
|
+
[tool.coverage.run]
|
|
121
|
+
source = ["src/fastapi_toolsets"]
|
|
122
|
+
branch = true
|
|
123
|
+
|
|
124
|
+
[tool.coverage.report]
|
|
125
|
+
exclude_lines = [
|
|
126
|
+
"pragma: no cover",
|
|
127
|
+
"if TYPE_CHECKING:",
|
|
128
|
+
"raise NotImplementedError",
|
|
129
|
+
]
|
|
130
|
+
|
|
131
|
+
[tool.uv.sources.mike]
|
|
132
|
+
git = "https://github.com/squidfunk/mike.git"
|
|
133
|
+
tag = "2.2.0+zensical-0.1.0"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "fastapi-toolsets"
|
|
3
|
-
version = "5.
|
|
3
|
+
version = "5.1.1"
|
|
4
4
|
description = "Production-ready utilities for FastAPI applications"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -50,17 +50,13 @@ cli = [
|
|
|
50
50
|
metrics = [
|
|
51
51
|
"prometheus_client>=0.20.0",
|
|
52
52
|
]
|
|
53
|
-
security = [
|
|
54
|
-
"async-lru>=1.0",
|
|
55
|
-
"httpx>=0.25.0",
|
|
56
|
-
]
|
|
57
53
|
pytest = [
|
|
58
54
|
"httpx>=0.25.0",
|
|
59
55
|
"pytest-xdist>=3.0.0",
|
|
60
56
|
"pytest>=8.0.0",
|
|
61
57
|
]
|
|
62
58
|
all = [
|
|
63
|
-
"fastapi-toolsets[cli,metrics,pytest
|
|
59
|
+
"fastapi-toolsets[cli,metrics,pytest]",
|
|
64
60
|
]
|
|
65
61
|
|
|
66
62
|
[project.scripts]
|
|
@@ -95,9 +91,21 @@ docs-src = [
|
|
|
95
91
|
]
|
|
96
92
|
|
|
97
93
|
[build-system]
|
|
98
|
-
requires = ["uv_build>=0.10,<0.
|
|
94
|
+
requires = ["uv_build>=0.10,<0.13.0"]
|
|
99
95
|
build-backend = "uv_build"
|
|
100
96
|
|
|
97
|
+
[tool.ruff.format]
|
|
98
|
+
exclude = ["*.md"]
|
|
99
|
+
|
|
100
|
+
[tool.ruff.lint]
|
|
101
|
+
extend-select = ["E712"]
|
|
102
|
+
|
|
103
|
+
[tool.ruff.lint.flake8-bugbear]
|
|
104
|
+
extend-immutable-calls = ["fastapi.Depends", "fastapi.Security"]
|
|
105
|
+
|
|
106
|
+
[tool.ruff.lint.per-file-ignores]
|
|
107
|
+
"tests/**" = ["RUF012", "RUF059", "SIM117", "DTZ001", "S110", "BLE001"]
|
|
108
|
+
|
|
101
109
|
[tool.pytest.ini_options]
|
|
102
110
|
testpaths = ["tests"]
|
|
103
111
|
filterwarnings = [
|