fastapi-toolsets 2.4.2__tar.gz → 3.0.0__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.
Files changed (41) hide show
  1. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/PKG-INFO +3 -2
  2. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/README.md +2 -1
  3. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/pyproject.toml +8 -3
  4. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/__init__.py +1 -1
  5. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/crud/__init__.py +8 -1
  6. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/crud/factory.py +332 -165
  7. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/crud/search.py +82 -27
  8. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/db.py +9 -5
  9. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/exceptions/__init__.py +4 -0
  10. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/exceptions/exceptions.py +55 -0
  11. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/exceptions/handler.py +2 -2
  12. fastapi_toolsets-3.0.0/src/fastapi_toolsets/fixtures/registry.py +311 -0
  13. fastapi_toolsets-3.0.0/src/fastapi_toolsets/fixtures/utils.py +298 -0
  14. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/logger.py +1 -1
  15. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/metrics/handler.py +3 -3
  16. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/models/__init__.py +3 -3
  17. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/models/columns.py +0 -8
  18. fastapi_toolsets-3.0.0/src/fastapi_toolsets/models/watched.py +290 -0
  19. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/pytest/utils.py +10 -35
  20. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/schemas.py +4 -3
  21. fastapi_toolsets-2.4.2/src/fastapi_toolsets/fixtures/registry.py +0 -219
  22. fastapi_toolsets-2.4.2/src/fastapi_toolsets/fixtures/utils.py +0 -143
  23. fastapi_toolsets-2.4.2/src/fastapi_toolsets/models/watched.py +0 -269
  24. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/LICENSE +0 -0
  25. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/_imports.py +0 -0
  26. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/cli/__init__.py +0 -0
  27. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/cli/app.py +0 -0
  28. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/cli/commands/__init__.py +0 -0
  29. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/cli/commands/fixtures.py +0 -0
  30. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/cli/config.py +0 -0
  31. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/cli/pyproject.py +0 -0
  32. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/cli/utils.py +0 -0
  33. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/dependencies.py +0 -0
  34. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/fixtures/__init__.py +0 -0
  35. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/fixtures/enum.py +0 -0
  36. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/metrics/__init__.py +0 -0
  37. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/metrics/registry.py +0 -0
  38. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/py.typed +0 -0
  39. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/pytest/__init__.py +0 -0
  40. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/pytest/plugin.py +0 -0
  41. {fastapi_toolsets-2.4.2 → fastapi_toolsets-3.0.0}/src/fastapi_toolsets/types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-toolsets
3
- Version: 2.4.2
3
+ Version: 3.0.0
4
4
  Summary: Production-ready utilities for FastAPI applications
5
5
  Keywords: fastapi,sqlalchemy,postgresql
6
6
  Author: d3vyce
@@ -96,7 +96,8 @@ uv add "fastapi-toolsets[all]"
96
96
  - **Database**: Session management, transaction helpers, table locking, and polling-based row change detection
97
97
  - **Dependencies**: FastAPI dependency factories (`PathDependency`, `BodyDependency`) for automatic DB lookups from path or body parameters
98
98
  - **Fixtures**: Fixture system with dependency management, context support, and pytest integration
99
- - **Model Mixins**: SQLAlchemy mixins for common column patterns (`UUIDMixin`, `UUIDv7Mixin`, `CreatedAtMixin`, `UpdatedAtMixin`, `TimestampMixin`) and lifecycle callbacks (`WatchedFieldsMixin`, `@watch`) that fire after commit for insert, update, and delete events
99
+ - **Model Mixins**: SQLAlchemy mixins for common column patterns (`UUIDMixin`, `UUIDv7Mixin`, `CreatedAtMixin`, `UpdatedAtMixin`, `TimestampMixin`)
100
+ - **Lifecycle Events**: Post-commit event system (`EventSession`, `listens_for`) that dispatches async/sync callbacks for insert, update, and delete operations
100
101
  - **Standardized API Responses**: Consistent response format with `Response`, `ErrorResponse`, `PaginatedResponse`, `CursorPaginatedResponse` and `OffsetPaginatedResponse`.
101
102
  - **Exception Handling**: Structured error responses with automatic OpenAPI documentation
102
103
  - **Logging**: Logging configuration with uvicorn integration via `configure_logging` and `get_logger`
@@ -48,7 +48,8 @@ uv add "fastapi-toolsets[all]"
48
48
  - **Database**: Session management, transaction helpers, table locking, and polling-based row change detection
49
49
  - **Dependencies**: FastAPI dependency factories (`PathDependency`, `BodyDependency`) for automatic DB lookups from path or body parameters
50
50
  - **Fixtures**: Fixture system with dependency management, context support, and pytest integration
51
- - **Model Mixins**: SQLAlchemy mixins for common column patterns (`UUIDMixin`, `UUIDv7Mixin`, `CreatedAtMixin`, `UpdatedAtMixin`, `TimestampMixin`) and lifecycle callbacks (`WatchedFieldsMixin`, `@watch`) that fire after commit for insert, update, and delete events
51
+ - **Model Mixins**: SQLAlchemy mixins for common column patterns (`UUIDMixin`, `UUIDv7Mixin`, `CreatedAtMixin`, `UpdatedAtMixin`, `TimestampMixin`)
52
+ - **Lifecycle Events**: Post-commit event system (`EventSession`, `listens_for`) that dispatches async/sync callbacks for insert, update, and delete operations
52
53
  - **Standardized API Responses**: Consistent response format with `Response`, `ErrorResponse`, `PaginatedResponse`, `CursorPaginatedResponse` and `OffsetPaginatedResponse`.
53
54
  - **Exception Handling**: Structured error responses with automatic OpenAPI documentation
54
55
  - **Logging**: Logging configuration with uvicorn integration via `configure_logging` and `get_logger`
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fastapi-toolsets"
3
- version = "2.4.2"
3
+ version = "3.0.0"
4
4
  description = "Production-ready utilities for FastAPI applications"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -67,6 +67,7 @@ dev = [
67
67
  {include-group = "tests"},
68
68
  {include-group = "docs"},
69
69
  "fastapi-toolsets[all]",
70
+ "prek>=0.3.8",
70
71
  "ruff>=0.1.0",
71
72
  "ty>=0.0.1a0",
72
73
  ]
@@ -79,12 +80,13 @@ tests = [
79
80
  "pytest>=8.0.0",
80
81
  ]
81
82
  docs = [
83
+ "mike",
82
84
  "mkdocstrings-python>=2.0.2",
83
- "zensical>=0.0.23",
85
+ "zensical>=0.0.30",
84
86
  ]
85
87
 
86
88
  [build-system]
87
- requires = ["uv_build>=0.10,<0.11.0"]
89
+ requires = ["uv_build>=0.10,<0.12.0"]
88
90
  build-backend = "uv_build"
89
91
 
90
92
  [tool.pytest.ini_options]
@@ -103,3 +105,6 @@ exclude_lines = [
103
105
  "if TYPE_CHECKING:",
104
106
  "raise NotImplementedError",
105
107
  ]
108
+
109
+ [tool.uv.sources]
110
+ mike = { git = "https://github.com/squidfunk/mike.git", tag = "2.2.0+zensical-0.1.0" }
@@ -21,4 +21,4 @@ Example usage:
21
21
  return Response(data={"user": user.username}, message="Success")
22
22
  """
23
23
 
24
- __version__ = "2.4.2"
24
+ __version__ = "3.0.0"
@@ -1,6 +1,11 @@
1
1
  """Generic async CRUD operations for SQLAlchemy models."""
2
2
 
3
- from ..exceptions import InvalidFacetFilterError, NoSearchableFieldsError
3
+ from ..exceptions import (
4
+ InvalidFacetFilterError,
5
+ InvalidSearchColumnError,
6
+ NoSearchableFieldsError,
7
+ UnsupportedFacetTypeError,
8
+ )
4
9
  from ..schemas import PaginationType
5
10
  from ..types import (
6
11
  FacetFieldType,
@@ -18,6 +23,7 @@ __all__ = [
18
23
  "FacetFieldType",
19
24
  "get_searchable_fields",
20
25
  "InvalidFacetFilterError",
26
+ "InvalidSearchColumnError",
21
27
  "JoinType",
22
28
  "M2MFieldType",
23
29
  "NoSearchableFieldsError",
@@ -25,4 +31,5 @@ __all__ = [
25
31
  "PaginationType",
26
32
  "SearchConfig",
27
33
  "SearchFieldType",
34
+ "UnsupportedFacetTypeError",
28
35
  ]