�
K�g�� � � � d dl mZ d dlmZmZmZmZmZmZm Z m
Z
mZmZm
Z
d dlmZ d dlmZmZ d dlmZmZmZ d dlmZmZ d dlmZ d dlmZmZmZ d d l m!Z! d d
l"m#Z# d dl$m%Z%m&Z& d dl'm(Z( d d
l)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@ d dlAmBZBmCZCmDZD edd�� � ZE G d� de*� � ZFdS )� )�Enum)�Any� Awaitable�Callable� Coroutine�Dict�List�Optional�Sequence�Type�TypeVar�Union)�routing)�Default�DefaultPlaceholder)�http_exception_handler�$request_validation_exception_handler�.websocket_request_validation_exception_handler)�RequestValidationError�WebSocketRequestValidationError)�logger)�get_redoc_html�get_swagger_ui_html�#get_swagger_ui_oauth2_redirect_html)�get_openapi)�Depends)�DecoratedCallable�IncEx)�generate_unique_id)� Starlette)�State)�
HTTPException)�
Middleware)�BaseHTTPMiddleware)�Request)�HTMLResponse�JSONResponse�Response)� BaseRoute)�ASGIApp�Lifespan�Receive�Scope�Send)� Annotated�Doc�
deprecated�AppType�FastAPI)�boundc O �; � � e Zd ZdZddd ddddddd ee� � ddd d
dddddddddddddddddd ee� � dd�#ded
ee e
d� � f deeee
e
d� � ed� � f dee e
d� � f deee e
d� � f dee e
d� � f dee e
d� � f deee e
d� � f deeeeeef e
d� � f deeeeeeeef f e
d� � f d eeee e
d!� � f d"eee e
d#� � f d$ee e
d%� � f d&eee e
d'� � f d(eee e
d)� � f d*eee e
d+� � f d,eeeeef e
d-� � f d.eeee e
d/� � f d0eeeeeee f eeegeeeef f f e
d1� � f d2eeeeg ef e
d3� � f d4eeeeg ef e
d5� � f d6eeee e
d7� � f d8eee e
d9� � f d:eeeeeeef f e
d;� � f d<eeeeeeef f e
d=� � f d>ee e
d?� � ed@� � f dAee e
dB� � f dCee e
dD� � f dEeeeeeef eeef f e
dF� � f dGeeee
e
dH� � f dIeeej e
dJ� � f dKeee e
dL� � f dMee e
dN� � f dOeeeeef e
dP� � f dQeeej gef e
dR� � f dSee e
dT� � f dUee e
dV� � f dWdfLdX�Z!dWeeef fdY�Z"d�dZ�Z#d[e$d\e%d]e&dWdf� fd^�Z' ed� � dddddd_ddddddddddd ee� � dd ee� � d`�daedbedcef ddedeee dfeeeee(f d eee dee dee dgedEeeeeef eeef f dKee dheee diee djee) dkee) dle dme dne doe dMe dpeee e*f dqee dreeeef dQeej gef dWdf2ds�Z+ ed� � dddddd_ddddddddddd ee� � dd ee� � d`�daeddedeee dfeeeee(f d eee dee dee dgedEeeeeef eeef f dKee dheee diee djee) dkee) dle dme dne doe dMe dpee dqee dreeeef dQeej gef dWee,ge,f f0dt�Z- d�ddu�daedbedcef dqee d eee dWdf
dv�Z. d�ddu�daee e
dw� � f dqeee e
dx� � f d eeee e
dy� � f dWee,ge,f fdz�Z/dddddd ee� � d ee� � d{� d|eej e
d}� � f d~ee e
d� � f dfeeeeee(f e
d�� � f d eeee e
d�� � f dEeeeeeef eeef f e
dF� � f dKeee e
d�� � f dMee e
d�� � f d"eee e
d�� � f dGeeee
e
d�� � f dQeeej gef e
dR� � f dWdfd��Z0 ed� � dddddd_dddddddddd ee� � ddd ee� � d��daee e
d�� � f ddee e
d�� � f deeee e
d�� � f dfeeeeee(f e
d�� � f d eeee e
d�� � f deee e
d�� � f deee e
d�� � f dgee e
d�� � f dEeeeeeef eeef f e
d�� � f dKeee e
d�� � f dieee e
d�� � f djeee) e
d�� � f dkeee) e
d�� � f dlee e
d�� � f dmee e
d�� � f dnee e
d�� � f doee e
d�� � f dMee e
d�� � f dpeee e
d�� � f dqeee e
d�� � f dGeeee
e
d�� � f dreeeeef e
d�� � f dQeeej gef e
dR� � f dWee,ge,f f0d��Z1 ed� � dddddd_dddddddddd ee� � ddd ee� � d��daee e
d�� � f ddee e
d�� � f deeee e
d�� � f dfeeeeee(f e
d�� � f d eeee e
d�� � f deee e
d�� � f deee e
d�� � f dgee e
d�� � f dEeeeeeef eeef f e
d�� � f dKeee e
d�� � f dieee e
d�� � f djeee) e
d�� � f dkeee) e
d�� � f dlee e
d�� � f dmee e
d�� � f dnee e
d�� � f doee e
d�� � f dMee e
d�� � f dpeee e
d�� � f dqeee e
d�� � f dGeeee
e
d�� � f dreeeeef e
d�� � f dQeeej gef e
dR� � f dWee,ge,f f0d��Z2 ed� � dddddd_dddddddddd ee� � ddd ee� � d��daee e
d�� � f ddee e
d�� � f deeee e
d�� � f dfeeeeee(f e
d�� � f d eeee e
d�� � f deee e
d�� � f deee e
d�� � f dgee e
d�� � f dEeeeeeef eeef f e
d�� � f dKeee e
d�� � f dieee e
d�� � f djeee) e
d�� � f dkeee) e
d�� � f dlee e
d�� � f dmee e
d�� � f dnee e
d�� � f doee e
d�� � f dMee e
d�� � f dpeee e
d�� � f dqeee e
d�� � f dGeeee
e
d�� � f dreeeeef e
d�� � f dQeeej gef e
dR� � f dWee,ge,f f0d��Z3 ed� � dddddd_dddddddddd ee� � ddd ee� � d��daee e
d�� � f ddee e
d�� � f deeee e
d�� � f dfeeeeee(f e
d�� � f d eeee e
d�� � f deee e
d�� � f deee e
d�� � f dgee e
d�� � f dEeeeeeef eeef f e
d�� � f dKeee e
d�� � f dieee e
d�� � f djeee) e
d�� � f dkeee) e
d�� � f dlee e
d�� � f dmee e
d�� � f dnee e
d�� � f doee e
d�� � f dMee e
d�� � f dpeee e
d�� � f dqeee e
d�� � f dGeeee
e
d�� � f dreeeeef e
d�� � f dQeeej gef e
dR� � f dWee,ge,f f0d��Z4 ed� � dddddd_dddddddddd ee� � ddd ee� � d��daee e
d�� � f ddee e
d�� � f deeee e
d�� � f dfeeeeee(f e
d�� � f d eeee e
d�� � f deee e
d�� � f deee e
d�� � f dgee e
d�� � f dEeeeeeef eeef f e
d�� � f dKeee e
d�� � f dieee e
d�� � f djeee) e
d�� � f dkeee) e
d�� � f dlee e
d�� � f dmee e
d�� � f dnee e
d�� � f doee e
d�� � f dMee e
d�� � f dpeee e
d�� � f dqeee e
d�� � f dGeeee
e
d�� � f dreeeeef e
d�� � f dQeeej gef e
dR� � f dWee,ge,f f0d��Z5 ed� � dddddd_dddddddddd ee� � ddd ee� � d��daee e
d�� � f ddee e
d�� � f deeee e
d�� � f dfeeeeee(f e
d�� � f d eeee e
d�� � f deee e
d�� � f deee e
d�� � f dgee e
d�� � f dEeeeeeef eeef f e
d�� � f dKeee e
d�� � f dieee e
d�� � f djeee) e
d�� � f dkeee) e
d�� � f dlee e
d�� � f dmee e
d�� � f dnee e
d�� � f doee e
d�� � f dMee e
d�� � f dpeee e
d�� � f dqeee e
d�� � f dGeeee
e
d�� � f dreeeeef e
d�� � f dQeeej gef e
dR� � f dWee,ge,f f0d��Z6 ed� � dddddd_dddddddddd ee� � ddd ee� � d��daee e
d�� � f ddee e
d�� � f deeee e
d�� � f dfeeeeee(f e
d�� � f d eeee e
d�� � f deee e
d�� � f deee e
d�� � f dgee e
d�� � f dEeeeeeef eeef f e
d�� � f dKeee e
d�� � f dieee e
d�� � f djeee) e
d�� � f dkeee) e
d�� � f dlee e
d�� � f dmee e
d�� � f dnee e
d�� � f doee e
d�� � f dMee e
d�� � f dpeee e
d�� � f dqeee e
d�� � f dGeeee
e
d�� � f dreeeeef e
d�� � f dQeeej gef e
dR� � f dWee,ge,f f0d��Z7 ed� � dddddd_dddddddddd ee� � ddd ee� � d��daee e
d�� � f ddee e
d�� � f deeee e
d�� � f dfeeeeee(f e
d�� � f d eeee e
d�� � f deee e
d�� � f deee e
d�� � f dgee e
d�� � f dEeeeeeef eeef f e
d�� � f dKeee e
d�� � f dieee e
d�� � f djeee) e
d�� � f dkeee) e
d�� � f dlee e
d�� � f dmee e
d�� � f dnee e
d�� � f doee e
d�� � f dMee e
d�� � f dpeee e
d�� � f dqeee e
d�� � f dGeeee
e
d�� � f dreeeeef e
d�� � f dQeeej gef e
dR� � f dWee,ge,f f0d��Z8 d�daedqeedf dWee,ge,f fd��Z9 ed�� � d�ee e
d�� � f dWee,ge,f fd��� � Z:d�ee e
d�� � f dWee,ge,f fd��Z;d�eeeee f e
d�� � f dWee,ge,f fd��Z<� xZ=S )�r3 a
`FastAPI` app class, the main entrypoint to use FastAPI.
Read more in the
[FastAPI docs for First Steps](https://fastapi.tiangolo.com/tutorial/first-steps/).
## Example
```python
from fastapi import FastAPI
app = FastAPI()
```
FN� z0.1.0z
/openapi.jsonTz/docsz/redocz/docs/oauth2-redirect)#�debug�routes�title�summary�description�version�openapi_url�openapi_tags�servers�dependencies�default_response_class�redirect_slashes�docs_url� redoc_url�swagger_ui_oauth2_redirect_url�swagger_ui_init_oauth�
middleware�exception_handlers�
on_startup�on_shutdown�lifespan�terms_of_service�contact�license_info�openapi_prefix� root_path�root_path_in_servers� responses� callbacks�webhooksr1 �include_in_schema�swagger_ui_parameters�generate_unique_id_function�separate_input_output_schemas�selfr7 a
Boolean indicating if debug tracebacks should be returned on server
errors.
Read more in the
[Starlette docs for Applications](https://www.starlette.io/applications/#instantiating-the-application).
r8 a
**Note**: you probably shouldn't use this parameter, it is inherited
from Starlette and supported for compatibility.
---
A list of routes to serve incoming HTTP and WebSocket requests.
a/
You normally wouldn't use this parameter with FastAPI, it is inherited
from Starlette and supported for compatibility.
In FastAPI, you normally would use the *path operation methods*,
like `app.get()`, `app.post()`, etc.
r9 a�
The title of the API.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more in the
[FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api).
**Example**
```python
from fastapi import FastAPI
app = FastAPI(title="ChimichangApp")
```
r: a�
A short summary of the API.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more in the
[FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api).
**Example**
```python
from fastapi import FastAPI
app = FastAPI(summary="Deadpond's favorite app. Nuff said.")
```
r; u
A description of the API. Supports Markdown (using
[CommonMark syntax](https://commonmark.org/)).
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more in the
[FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api).
**Example**
```python
from fastapi import FastAPI
app = FastAPI(
description="""
ChimichangApp API helps you do awesome stuff. 🚀
## Items
You can **read items**.
## Users
You will be able to:
* **Create users** (_not implemented_).
* **Read users** (_not implemented_).
"""
)
```
r<