Upgrading fastapi 0.103 to 0.104
Breaking0.103.2 → 0.104.1Platform1New1Changed3Fixed2Other23
BreakingUpgrade verdict
A platform requirement change.
In plain terms
- You can no longer install or run this version on Python 3.7; you need Python 3.8 or newer.
Must act 1 item needs code or config changes
Python requirement changed in 0.104.0: >=3.7 → >=3.8.
What you must change
Platform1
Drops support for Python 3.7 and requires Python 3.8 or above.
API changes
Generated by DepDelta from published Python source. Not mixed with prose notes.
- changed:
constructor FastAPI(*, debug: bool=…, routes: Optional[List[BaseRoute]]=…, title: str=…, summary: Optional[str]=…, description: str=…, version: str=…, openapi_url: Optional[str]=…, openapi_tags: Optional[List[Dict[str, Any]]]=…, servers: Optional[List[Dict[str, Union[str, Any]]]]=…, dependencies: Optional[Sequence[Depends]]=…, default_response_class: Type[Response]=…, redirect_slashes: bool=…, do… → constructor FastAPI(*, debug: Annotated[bool, Doc('\n Boolean indicating if debug tracebacks should be returned on server\n errors.\n\n Read more in the\n [Starlette docs for Applications](https://www.starlette.io/applications/#instantiating-the-application).\n ')]=…, routes: Annotated[Optional[List[BaseRoute]], Doc("\n… - changed:
method FastAPI.delete(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, response_model_… → method FastAPI.delete(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have… - changed:
method FastAPI.exception_handler(exc_class_or_status_code: Union[int, Type[Exception]]) -> Callable[[DecoratedCallable], DecoratedCallable] → method FastAPI.exception_handler(exc_class_or_status_code: Annotated[Union[int, Type[Exception]], Doc('\n The Exception class this would handle, or a status code.\n ')]) -> Callable[[DecoratedCallable], DecoratedCallable] - changed:
method FastAPI.get(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, response_model_inc… → method FastAPI.get(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have to\… - changed:
method FastAPI.head(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, response_model_in… → method FastAPI.head(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have to… - changed:
method FastAPI.include_router(router: routing.APIRouter, *, prefix: str=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[Depends]]=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, include_in_schema: bool=…, default_response_class: Type[Response]=…, callbacks: Optional[List[BaseRoute]]=…, generate_unique_id_function: Callabl… → method FastAPI.include_router(router: Annotated[routing.APIRouter, Doc('The `APIRouter` to include.')], *, prefix: Annotated[str, Doc('An optional path prefix for the router.')]=…, tags: Annotated[Optional[List[Union[str, Enum]]], Doc('\n A list of tags to be applied to all the *path operations* in this\n router.\n\n It will be added to the generated O… - changed:
method FastAPI.middleware(middleware_type: str) -> Callable[[DecoratedCallable], DecoratedCallable] → method FastAPI.middleware(middleware_type: Annotated[str, Doc('\n The type of middleware. Currently only supports `http`.\n ')]) -> Callable[[DecoratedCallable], DecoratedCallable] - changed:
method FastAPI.on_event(event_type: str) -> Callable[[DecoratedCallable], DecoratedCallable] → method FastAPI.on_event(event_type: Annotated[str, Doc('\n The type of event. `startup` or `shutdown`.\n ')]) -> Callable[[DecoratedCallable], DecoratedCallable] - changed:
method FastAPI.options(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, response_model… → method FastAPI.options(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have… - changed:
method FastAPI.patch(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, response_model_i… → method FastAPI.patch(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have t… - changed:
method FastAPI.post(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, response_model_in… → method FastAPI.post(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have to… - changed:
method FastAPI.put(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, response_model_inc… → method FastAPI.put(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have to\… - changed:
method FastAPI.trace(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, response_model_i… → method FastAPI.trace(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have t… - changed:
method FastAPI.websocket(path: str, name: Optional[str]=…, *, dependencies: Optional[Sequence[Depends]]=…) -> Callable[[DecoratedCallable], DecoratedCallable] → method FastAPI.websocket(path: Annotated[str, Doc('\n WebSocket path.\n ')], name: Annotated[Optional[str], Doc('\n A name for the WebSocket. Only used internally.\n ')]=…, *, dependencies: Annotated[Optional[Sequence[Depends]], Doc('\n A list of dependencies (using `Depends()`) to be used for this\n WebSock…
- added:
class BackgroundTasks(StarletteBackgroundTasks) - added:
method BackgroundTasks.add_task(func: Annotated[Callable[P, Any], Doc('\n The function to call after the response is sent.\n\n It can be a regular `def` function or an `async def` function.\n ')], *args: P.args, **kwargs: P.kwargs) -> None - added:
variable P
- added:
async method UploadFile.close() -> None - added:
async method UploadFile.read(size: Annotated[int, Doc('\n The number of bytes to read from the file.\n ')]=…) -> bytes - added:
async method UploadFile.seek(offset: Annotated[int, Doc('\n The position in bytes to seek to in the file.\n ')]) -> None - added:
async method UploadFile.write(data: Annotated[bytes, Doc('\n The bytes to write to the file.\n ')]) -> None - added:
field UploadFile.content_type: Annotated[Optional[str], Doc('The content type of the request, from the headers.')] - added:
field UploadFile.file: Annotated[BinaryIO, Doc('The standard Python file object (non-async).')] - added:
field UploadFile.filename: Annotated[Optional[str], Doc('The original file name.')] - added:
field UploadFile.headers: Annotated[Headers, Doc('The headers of the request.')] - added:
field UploadFile.size: Annotated[Optional[int], Doc('The size of the file in bytes.')]
- changed:
async function solve_dependencies(*, request: Union[Request, WebSocket], dependant: Dependant, body: Optional[Union[Dict[str, Any], FormData]]=…, background_tasks: Optional[BackgroundTasks]=…, response: Optional[Response]=…, dependency_overrides_provider: Optional[Any]=…, dependency_cache: Optional[Dict[Tuple[Callable[..., Any], Tuple[str]], Any]]=…) -> Tuple[Dict[str, Any], List[Any], Optional[B… → async function solve_dependencies(*, request: Union[Request, WebSocket], dependant: Dependant, body: Optional[Union[Dict[str, Any], FormData]]=…, background_tasks: Optional[StarletteBackgroundTasks]=…, response: Optional[Response]=…, dependency_overrides_provider: Optional[Any]=…, dependency_cache: Optional[Dict[Tuple[Callable[..., Any], Tuple[str]], Any]]=…) -> Tuple[Dict[str, Any], List[Any], O…
- changed:
function jsonable_encoder(obj: Any, include: Optional[IncEx]=…, exclude: Optional[IncEx]=…, by_alias: bool=…, exclude_unset: bool=…, exclude_defaults: bool=…, exclude_none: bool=…, custom_encoder: Optional[Dict[Any, Callable[[Any], Any]]]=…, sqlalchemy_safe: bool=…) -> Any → function jsonable_encoder(obj: Annotated[Any, Doc('\n The input object to convert to JSON.\n ')], include: Annotated[Optional[IncEx], Doc("\n Pydantic's `include` parameter, passed to Pydantic models to set the\n fields to include.\n ")]=…, exclude: Annotated[Optional[IncEx], Doc("\n Pydantic's `exclude` parameter, passed to Pydant…
- changed:
constructor HTTPException(status_code: int, detail: Any=…, headers: Optional[Dict[str, str]]=…) -> None → constructor HTTPException(status_code: Annotated[int, Doc('\n HTTP status code to send to the client.\n ')], detail: Annotated[Any, Doc('\n Any data to be sent to the client in the `detail` key of the JSON\n response.\n ')]=…, headers: Annotated[Optional[Dict[str, str]], Doc('\n Any headers to send to the cl… - added:
class WebSocketException(StarletteWebSocketException) - added:
constructor WebSocketException(code: Annotated[int, Doc('\n A closing code from the\n [valid codes defined in the specification](https://datatracker.ietf.org/doc/html/rfc6455#section-7.4.1).\n ')], reason: Annotated[Union[str, None], Doc('\n The reason to close the WebSocket connection.\n\n It is UTF-8-encoded data. The in…
- changed:
function Body(default: Any=…, *, default_factory: Union[Callable[[], Any], None]=…, embed: bool=…, media_type: str=…, alias: Optional[str]=…, alias_priority: Union[int, None]=…, validation_alias: Union[str, None]=…, serialization_alias: Union[str, None]=…, title: Optional[str]=…, description: Optional[str]=…, gt: Optional[float]=…, ge: Optional[float]=…, lt: Optional[float]=…, le: Optional[float]… → function Body(default: Annotated[Any, Doc('\n Default value if the parameter field is not set.\n ')]=…, *, default_factory: Annotated[Union[Callable[[], Any], None], Doc("\n A callable to generate the default value.\n\n This doesn't affect `Path` parameters as the value is always required.\n The parameter is available only for compatibility.\… - changed:
function Cookie(default: Any=…, *, default_factory: Union[Callable[[], Any], None]=…, alias: Optional[str]=…, alias_priority: Union[int, None]=…, validation_alias: Union[str, None]=…, serialization_alias: Union[str, None]=…, title: Optional[str]=…, description: Optional[str]=…, gt: Optional[float]=…, ge: Optional[float]=…, lt: Optional[float]=…, le: Optional[float]=…, min_length: Optional[int]=…,… → function Cookie(default: Annotated[Any, Doc('\n Default value if the parameter field is not set.\n ')]=…, *, default_factory: Annotated[Union[Callable[[], Any], None], Doc("\n A callable to generate the default value.\n\n This doesn't affect `Path` parameters as the value is always required.\n The parameter is available only for compatibility… - changed:
function Depends(dependency: Optional[Callable[..., Any]]=…, *, use_cache: bool=…) -> Any → function Depends(dependency: Annotated[Optional[Callable[..., Any]], Doc('\n A "dependable" callable (like a function).\n\n Don\'t call it directly, FastAPI will call it for you, just pass the object\n directly.\n ')]=…, *, use_cache: Annotated[bool, Doc('\n By default, after a dependency is called the first time in a request, if\n… - changed:
function File(default: Any=…, *, default_factory: Union[Callable[[], Any], None]=…, media_type: str=…, alias: Optional[str]=…, alias_priority: Union[int, None]=…, validation_alias: Union[str, None]=…, serialization_alias: Union[str, None]=…, title: Optional[str]=…, description: Optional[str]=…, gt: Optional[float]=…, ge: Optional[float]=…, lt: Optional[float]=…, le: Optional[float]=…, min_length:… → function File(default: Annotated[Any, Doc('\n Default value if the parameter field is not set.\n ')]=…, *, default_factory: Annotated[Union[Callable[[], Any], None], Doc("\n A callable to generate the default value.\n\n This doesn't affect `Path` parameters as the value is always required.\n The parameter is available only for compatibility.\… - changed:
function Form(default: Any=…, *, default_factory: Union[Callable[[], Any], None]=…, media_type: str=…, alias: Optional[str]=…, alias_priority: Union[int, None]=…, validation_alias: Union[str, None]=…, serialization_alias: Union[str, None]=…, title: Optional[str]=…, description: Optional[str]=…, gt: Optional[float]=…, ge: Optional[float]=…, lt: Optional[float]=…, le: Optional[float]=…, min_length:… → function Form(default: Annotated[Any, Doc('\n Default value if the parameter field is not set.\n ')]=…, *, default_factory: Annotated[Union[Callable[[], Any], None], Doc("\n A callable to generate the default value.\n\n This doesn't affect `Path` parameters as the value is always required.\n The parameter is available only for compatibility.\… - changed:
function Header(default: Any=…, *, default_factory: Union[Callable[[], Any], None]=…, alias: Optional[str]=…, alias_priority: Union[int, None]=…, validation_alias: Union[str, None]=…, serialization_alias: Union[str, None]=…, convert_underscores: bool=…, title: Optional[str]=…, description: Optional[str]=…, gt: Optional[float]=…, ge: Optional[float]=…, lt: Optional[float]=…, le: Optional[float]=…,… → function Header(default: Annotated[Any, Doc('\n Default value if the parameter field is not set.\n ')]=…, *, default_factory: Annotated[Union[Callable[[], Any], None], Doc("\n A callable to generate the default value.\n\n This doesn't affect `Path` parameters as the value is always required.\n The parameter is available only for compatibility… - changed:
function Path(default: Any=…, *, default_factory: Union[Callable[[], Any], None]=…, alias: Optional[str]=…, alias_priority: Union[int, None]=…, validation_alias: Union[str, None]=…, serialization_alias: Union[str, None]=…, title: Optional[str]=…, description: Optional[str]=…, gt: Optional[float]=…, ge: Optional[float]=…, lt: Optional[float]=…, le: Optional[float]=…, min_length: Optional[int]=…, m… → function Path(default: Annotated[Any, Doc("\n Default value if the parameter field is not set.\n\n This doesn't affect `Path` parameters as the value is always required.\n The parameter is available only for compatibility.\n ")]=…, *, default_factory: Annotated[Union[Callable[[], Any], None], Doc("\n A callable to generate the default value.\… - changed:
function Query(default: Any=…, *, default_factory: Union[Callable[[], Any], None]=…, alias: Optional[str]=…, alias_priority: Union[int, None]=…, validation_alias: Union[str, None]=…, serialization_alias: Union[str, None]=…, title: Optional[str]=…, description: Optional[str]=…, gt: Optional[float]=…, ge: Optional[float]=…, lt: Optional[float]=…, le: Optional[float]=…, min_length: Optional[int]=…,… → function Query(default: Annotated[Any, Doc('\n Default value if the parameter field is not set.\n ')]=…, *, default_factory: Annotated[Union[Callable[[], Any], None], Doc("\n A callable to generate the default value.\n\n This doesn't affect `Path` parameters as the value is always required.\n The parameter is available only for compatibility.… - changed:
function Security(dependency: Optional[Callable[..., Any]]=…, *, scopes: Optional[Sequence[str]]=…, use_cache: bool=…) -> Any → function Security(dependency: Annotated[Optional[Callable[..., Any]], Doc('\n A "dependable" callable (like a function).\n\n Don\'t call it directly, FastAPI will call it for you, just pass the object\n directly.\n ')]=…, *, scopes: Annotated[Optional[Sequence[str]], Doc('\n OAuth2 scopes required for the *path operation* that uses this Secur…
- changed:
constructor APIRouter(*, prefix: str=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[params.Depends]]=…, default_response_class: Type[Response]=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, callbacks: Optional[List[BaseRoute]]=…, routes: Optional[List[routing.BaseRoute]]=…, redirect_slashes: bool=…, default: Optional[ASGIApp]=…, dependency_overrides… → constructor APIRouter(*, prefix: Annotated[str, Doc('An optional path prefix for the router.')]=…, tags: Annotated[Optional[List[Union[str, Enum]]], Doc('\n A list of tags to be applied to all the *path operations* in this\n router.\n\n It will be added to the generated OpenAPI (e.g. visible at `/docs`).\n\n Read more about it in the\n… - changed:
method APIRouter.delete(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[params.Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, respon… → method APIRouter.delete(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't hav… - changed:
method APIRouter.get(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[params.Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, response_… → method APIRouter.get(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have t… - changed:
method APIRouter.head(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[params.Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, response… → method APIRouter.head(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have… - changed:
method APIRouter.include_router(router: APIRouter, *, prefix: str=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[params.Depends]]=…, default_response_class: Type[Response]=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, callbacks: Optional[List[BaseRoute]]=…, deprecated: Optional[bool]=…, include_in_schema: bool=…, generate_unique_id_function: Callab… → method APIRouter.include_router(router: Annotated[APIRouter, Doc('The `APIRouter` to include.')], *, prefix: Annotated[str, Doc('An optional path prefix for the router.')]=…, tags: Annotated[Optional[List[Union[str, Enum]]], Doc('\n A list of tags to be applied to all the *path operations* in this\n router.\n\n It will be added to the generated OpenAPI… - changed:
method APIRouter.on_event(event_type: str) -> Callable[[DecoratedCallable], DecoratedCallable] → method APIRouter.on_event(event_type: Annotated[str, Doc('\n The type of event. `startup` or `shutdown`.\n ')]) -> Callable[[DecoratedCallable], DecoratedCallable] - changed:
method APIRouter.options(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[params.Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, respo… → method APIRouter.options(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't ha… - changed:
method APIRouter.patch(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[params.Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, respons… → method APIRouter.patch(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have… - changed:
method APIRouter.post(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[params.Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, response… → method APIRouter.post(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have… - changed:
method APIRouter.put(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[params.Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, response_… → method APIRouter.put(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have t… - changed:
method APIRouter.trace(path: str, *, response_model: Any=…, status_code: Optional[int]=…, tags: Optional[List[Union[str, Enum]]]=…, dependencies: Optional[Sequence[params.Depends]]=…, summary: Optional[str]=…, description: Optional[str]=…, response_description: str=…, responses: Optional[Dict[Union[int, str], Dict[str, Any]]]=…, deprecated: Optional[bool]=…, operation_id: Optional[str]=…, respons… → method APIRouter.trace(path: Annotated[str, Doc('\n The URL path to be used for this *path operation*.\n\n For example, in `http://example.com/items`, the path is `/items`.\n ')], *, response_model: Annotated[Any, Doc("\n The type to use for the response.\n\n It could be any valid Pydantic *field* type. So, it doesn't have… - changed:
method APIRouter.websocket(path: str, name: Optional[str]=…, *, dependencies: Optional[Sequence[params.Depends]]=…) -> Callable[[DecoratedCallable], DecoratedCallable] → method APIRouter.websocket(path: Annotated[str, Doc('\n WebSocket path.\n ')], name: Annotated[Optional[str], Doc('\n A name for the WebSocket. Only used internally.\n ')]=…, *, dependencies: Annotated[Optional[Sequence[params.Depends]], Doc('\n A list of dependencies (using `Depends()`) to be used for this\n…
- changed:
constructor APIKeyCookie(*, name: str, scheme_name: Optional[str]=…, description: Optional[str]=…, auto_error: bool=…) → constructor APIKeyCookie(*, name: Annotated[str, Doc('Cookie name.')], scheme_name: Annotated[Optional[str], Doc('\n Security scheme name.\n\n It will be included in the generated OpenAPI (e.g. visible at `/docs`).\n ')]=…, description: Annotated[Optional[str], Doc('\n Security scheme description.\n\n It will be included i… - changed:
constructor APIKeyHeader(*, name: str, scheme_name: Optional[str]=…, description: Optional[str]=…, auto_error: bool=…) → constructor APIKeyHeader(*, name: Annotated[str, Doc('Header name.')], scheme_name: Annotated[Optional[str], Doc('\n Security scheme name.\n\n It will be included in the generated OpenAPI (e.g. visible at `/docs`).\n ')]=…, description: Annotated[Optional[str], Doc('\n Security scheme description.\n\n It will be included i… - changed:
constructor APIKeyQuery(*, name: str, scheme_name: Optional[str]=…, description: Optional[str]=…, auto_error: bool=…) → constructor APIKeyQuery(*, name: Annotated[str, Doc('Query parameter name.')], scheme_name: Annotated[Optional[str], Doc('\n Security scheme name.\n\n It will be included in the generated OpenAPI (e.g. visible at `/docs`).\n ')]=…, description: Annotated[Optional[str], Doc('\n Security scheme description.\n\n It will be in…
- changed:
constructor HTTPBasic(*, scheme_name: Optional[str]=…, realm: Optional[str]=…, description: Optional[str]=…, auto_error: bool=…) → constructor HTTPBasic(*, scheme_name: Annotated[Optional[str], Doc('\n Security scheme name.\n\n It will be included in the generated OpenAPI (e.g. visible at `/docs`).\n ')]=…, realm: Annotated[Optional[str], Doc('\n HTTP Basic authentication realm.\n ')]=…, description: Annotated[Optional[str], Doc('\n Sec… - changed:
constructor HTTPBearer(*, bearerFormat: Optional[str]=…, scheme_name: Optional[str]=…, description: Optional[str]=…, auto_error: bool=…) → constructor HTTPBearer(*, bearerFormat: Annotated[Optional[str], Doc('Bearer token format.')]=…, scheme_name: Annotated[Optional[str], Doc('\n Security scheme name.\n\n It will be included in the generated OpenAPI (e.g. visible at `/docs`).\n ')]=…, description: Annotated[Optional[str], Doc('\n Security scheme description.\n\n… - changed:
constructor HTTPDigest(*, scheme_name: Optional[str]=…, description: Optional[str]=…, auto_error: bool=…) → constructor HTTPDigest(*, scheme_name: Annotated[Optional[str], Doc('\n Security scheme name.\n\n It will be included in the generated OpenAPI (e.g. visible at `/docs`).\n ')]=…, description: Annotated[Optional[str], Doc('\n Security scheme description.\n\n It will be included in the generated OpenAPI (e.g. visible at `/do… - changed:
field HTTPAuthorizationCredentials.credentials: str → field HTTPAuthorizationCredentials.credentials: Annotated[str, Doc('\n The HTTP authorization credentials extracted from the header value.\n ')] - changed:
field HTTPAuthorizationCredentials.scheme: str → field HTTPAuthorizationCredentials.scheme: Annotated[str, Doc('\n The HTTP authorization scheme extracted from the header value.\n ')] - changed:
field HTTPBasicCredentials.password: str → field HTTPBasicCredentials.password: Annotated[str, Doc('The HTTP Basic password.')] - changed:
field HTTPBasicCredentials.username: str → field HTTPBasicCredentials.username: Annotated[str, Doc('The HTTP Basic username.')]
- changed:
constructor OAuth2(*, flows: Union[OAuthFlowsModel, Dict[str, Dict[str, Any]]]=…, scheme_name: Optional[str]=…, description: Optional[str]=…, auto_error: bool=…) → constructor OAuth2(*, flows: Annotated[Union[OAuthFlowsModel, Dict[str, Dict[str, Any]]], Doc('\n The dictionary of OAuth2 flows.\n ')]=…, scheme_name: Annotated[Optional[str], Doc('\n Security scheme name.\n\n It will be included in the generated OpenAPI (e.g. visible at `/docs`).\n ')]=…, description: Annotated[Optional[… - changed:
constructor OAuth2AuthorizationCodeBearer(authorizationUrl: str, tokenUrl: str, refreshUrl: Optional[str]=…, scheme_name: Optional[str]=…, scopes: Optional[Dict[str, str]]=…, description: Optional[str]=…, auto_error: bool=…) → constructor OAuth2AuthorizationCodeBearer(authorizationUrl: str, tokenUrl: Annotated[str, Doc('\n The URL to obtain the OAuth2 token.\n ')], refreshUrl: Annotated[Optional[str], Doc('\n The URL to refresh the token and obtain a new one.\n ')]=…, scheme_name: Annotated[Optional[str], Doc('\n Security scheme name.\n\n… - changed:
constructor OAuth2PasswordBearer(tokenUrl: str, scheme_name: Optional[str]=…, scopes: Optional[Dict[str, str]]=…, description: Optional[str]=…, auto_error: bool=…) → constructor OAuth2PasswordBearer(tokenUrl: Annotated[str, Doc('\n The URL to obtain the OAuth2 token. This would be the *path operation*\n that has `OAuth2PasswordRequestForm` as a dependency.\n ')], scheme_name: Annotated[Optional[str], Doc('\n Security scheme name.\n\n It will be included in the generated OpenAPI (e.g. v… - changed:
constructor OAuth2PasswordRequestForm(*, grant_type: Annotated[Union[str, None], Form(pattern=password)]=…, username: Annotated[str, Form()], password: Annotated[str, Form()], scope: Annotated[str, Form()]=…, client_id: Annotated[Union[str, None], Form()]=…, client_secret: Annotated[Union[str, None], Form()]=…) → constructor OAuth2PasswordRequestForm(*, grant_type: Annotated[Union[str, None], Form(pattern=password), Doc('\n The OAuth2 spec says it is required and MUST be the fixed string\n "password". Nevertheless, this dependency class is permissive and\n allows not passing it. If you want to enforce it, use instead the\n `OAuth2PasswordRequestF… - changed:
constructor OAuth2PasswordRequestFormStrict(grant_type: Annotated[str, Form(pattern=password)], username: Annotated[str, Form()], password: Annotated[str, Form()], scope: Annotated[str, Form()]=…, client_id: Annotated[Union[str, None], Form()]=…, client_secret: Annotated[Union[str, None], Form()]=…) → constructor OAuth2PasswordRequestFormStrict(grant_type: Annotated[str, Form(pattern=password), Doc('\n The OAuth2 spec says it is required and MUST be the fixed string\n "password". This dependency is strict about it. If you want to be\n permissive, use instead the `OAuth2PasswordRequestForm` dependency\n class.\n ')], use… - changed:
constructor SecurityScopes(scopes: Optional[List[str]]=…) → constructor SecurityScopes(scopes: Annotated[Optional[List[str]], Doc('\n This will be filled by FastAPI.\n ')]=…)
- changed:
constructor OpenIdConnect(*, openIdConnectUrl: str, scheme_name: Optional[str]=…, description: Optional[str]=…, auto_error: bool=…) → constructor OpenIdConnect(*, openIdConnectUrl: Annotated[str, Doc('\n The OpenID Connect URL.\n ')], scheme_name: Annotated[Optional[str], Doc('\n Security scheme name.\n\n It will be included in the generated OpenAPI (e.g. visible at `/docs`).\n ')]=…, description: Annotated[Optional[str], Doc('\n Security scheme d…