Repository URL to install this package:
|
Version:
0.70.0.dev5755 ▾
|
import asyncio
from collections.abc import Awaitable, Coroutine, Sequence
from contextlib import asynccontextmanager, suppress
from typing import (
Any,
Callable,
Dict,
List,
Optional,
Type,
Union,
)
import fastapi
from fastapi.datastructures import Default
from fastapi.params import Depends
from fastapi.utils import generate_unique_id
from starlette.middleware import Middleware
from starlette.requests import Request
from starlette.responses import JSONResponse, Response
from starlette.routing import BaseRoute
import flet_web.fastapi
class FastAPI(fastapi.FastAPI):
def __init__(
self,
*,
debug: bool = False,
routes: Optional[List[BaseRoute]] = None,
title: str = "FastAPI",
summary: Optional[str] = None,
description: str = "",
version: str = "0.1.0",
openapi_url: Optional[str] = "/openapi.json",
openapi_tags: Optional[List[Dict[str, Any]]] = None,
servers: Optional[List[Dict[str, Union[str, Any]]]] = None,
dependencies: Optional[Sequence[Depends]] = None,
default_response_class: Type[Response] = Default(JSONResponse),
redirect_slashes: bool = True,
docs_url: Optional[str] = "/docs",
redoc_url: Optional[str] = "/redoc",
swagger_ui_oauth2_redirect_url: Optional[str] = "/docs/oauth2-redirect",
swagger_ui_init_oauth: Optional[Dict[str, Any]] = None,
middleware: Optional[Sequence[Middleware]] = None,
exception_handlers: Optional[
Dict[
Union[int, Type[Exception]],
Callable[[Request, Any], Coroutine[Any, Any, Response]],
]
] = None,
on_startup: Optional[Sequence[Callable[[], Optional[Awaitable]]]] = None,
on_shutdown: Optional[Sequence[Callable[[], Optional[Awaitable]]]] = None,
terms_of_service: Optional[str] = None,
contact: Optional[Dict[str, Union[str, Any]]] = None,
license_info: Optional[Dict[str, Union[str, Any]]] = None,
openapi_prefix: str = "",
root_path: str = "",
root_path_in_servers: bool = True,
responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None,
callbacks: Optional[List[BaseRoute]] = None,
webhooks: Optional[fastapi.routing.APIRouter] = None,
deprecated: Optional[bool] = None,
include_in_schema: bool = True,
swagger_ui_parameters: Optional[Dict[str, Any]] = None,
generate_unique_id_function: Callable[
[fastapi.routing.APIRoute], str
] = Default(generate_unique_id),
**extra: Any,
) -> None:
@asynccontextmanager
async def lifespan(app: fastapi.FastAPI):
await flet_web.fastapi.app_manager.start()
if on_startup:
for h in on_startup:
if asyncio.iscoroutinefunction(h):
await h()
else:
h()
with suppress(asyncio.CancelledError):
yield
if on_shutdown:
for h in on_shutdown:
if asyncio.iscoroutinefunction(h):
await h()
else:
h()
await flet_web.fastapi.app_manager.shutdown()
super().__init__(
debug=debug,
routes=routes,
title=title,
summary=summary,
description=description,
version=version,
openapi_url=openapi_url,
openapi_tags=openapi_tags,
servers=servers,
dependencies=dependencies,
default_response_class=default_response_class,
redirect_slashes=redirect_slashes,
docs_url=docs_url,
redoc_url=redoc_url,
swagger_ui_oauth2_redirect_url=swagger_ui_oauth2_redirect_url,
swagger_ui_init_oauth=swagger_ui_init_oauth,
middleware=middleware,
exception_handlers=exception_handlers,
# on_startup=on_startup,
# on_shutdown=on_shutdown,
lifespan=lifespan,
terms_of_service=terms_of_service,
contact=contact,
license_info=license_info,
openapi_prefix=openapi_prefix,
root_path=root_path,
root_path_in_servers=root_path_in_servers,
responses=responses,
callbacks=callbacks,
webhooks=webhooks,
deprecated=deprecated,
include_in_schema=include_in_schema,
swagger_ui_parameters=swagger_ui_parameters,
generate_unique_id_function=generate_unique_id_function,
**extra,
)