Skip to content

Commit 4106a7d

Browse files
committed
Draft refactoring. Added changelog.
1 parent d442893 commit 4106a7d

1 file changed

Lines changed: 44 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,52 @@ All notable changes to FastOpenAPI are documented in this file.
44

55
FastOpenAPI follows the [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) format.
66

7-
## [0.8.0] - Unreleased
7+
## [1.0.0b1] - Unreleased
88

99
### Added
10-
- `DjangoRouter` for integration with the `Django` framework.
10+
11+
- **Dependency Injection system** with `Depends` and `Security` classes for automatic dependency resolution
12+
- Request-scoped dependency caching with circular dependency detection
13+
- Security scopes validation with OAuth2 support
14+
- **FastAPI-style parameter classes**: `Query`, `Path`, `Header`, `Cookie`, `Body`, `Form`, `File`
15+
- Full Pydantic v2 validation support for all parameter types (gt, ge, lt, le, min_length, max_length, pattern, etc)
16+
- Parameter documentation support (description, examples, deprecated flags)
17+
- Pre-defined parameter types: `PositiveInt`, `NonNegativeInt`, `PositiveFloat`, `NonEmptyStr`, `LimitedStr`
18+
- `FileUpload` class for framework-agnostic file handling with `.read()` and `.aread()` methods
19+
- `RequestData` unified container for request data across all frameworks
20+
- `Response` class for custom responses with headers and status codes
21+
- **Django support** with `DjangoRouter` (sync) and `DjangoAsyncRouter` (async)
22+
- Built-in OpenAPI security scheme definitions: Bearer JWT, API Key (header/query), Basic Auth, OAuth2
23+
- Configurable security schemes via `security_scheme` parameter in router constructor
24+
- Automatic security scheme integration in OpenAPI documentation
25+
- `APIError.from_exception()` method for converting any exception to standardized format
26+
- Thread-safe caching for parameter models, function signatures, and Pydantic schemas
27+
- Modular architecture with dedicated packages: `core/`, `errors/`, `openapi/`, `resolution/`, `response/`, `routers/`
28+
- `RouteInfo` dataclass for type-safe route metadata
29+
- Enhanced OpenAPI schema generation with `SchemaBuilder`, `ParameterProcessor`, and `ResponseBuilder` helper classes
30+
- Comprehensive error schema generation in OpenAPI documentation
31+
- Support for all parameter sources in OpenAPI (path, query, header, cookie, body, form, file)
32+
33+
### Changed
34+
35+
- **Complete architecture refactor** from monolithic to modular design using composition over inheritance
36+
- Router implementation changed from inheritance-based to composition-based using `BaseAdapter` pattern
37+
- Moved parameter resolution from `BaseRouter.resolve_endpoint_params()` to dedicated `ParameterResolver` class
38+
- Moved OpenAPI generation from `BaseRouter.generate_openapi()` to dedicated `OpenAPIGenerator` class
39+
- Moved response serialization from `BaseRouter._serialize_response()` to `ResponseBuilder` class
40+
- Split OpenAPI generation into focused helper classes for better separation of concerns
41+
- Reorganized error handling from `error_handler.py` module to `errors/` package
42+
- Split `base_router.py` into multiple focused modules with single responsibility
43+
- Route metadata structure changed from tuple to `RouteInfo` dataclass for better type safety
44+
- Router constructor signature updated with `security_scheme` parameter (default: `SecuritySchemeType.BEARER_JWT`)
45+
46+
### Deprecated
47+
48+
- Importing from `fastopenapi.error_handler` module (use `from fastopenapi.errors import ...` instead) - will show deprecation warning
49+
50+
### Removed
51+
- `BaseRouter.generate_openapi()` method (use `router.openapi` property instead)
52+
- Internal API methods for custom router developers: `resolve_endpoint_params()` and `_serialize_response()`
1153

1254

1355
## [0.7.0] - 2025-04-27

0 commit comments

Comments
 (0)