o
    $6d3                     @   s  d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
mZmZmZ d dlmZ d dlmZmZ d dlmZmZmZ d dlmZmZ d dlmZ d dlmZ d d	lmZm Z m!Z! d d
l"m#Z# d dl$m%Z% d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZBmCZCmDZDmEZEmFZF edddZGG dd de,ZHdS )    )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)AsyncExitStackMiddleware)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)ServerErrorMiddleware)ExceptionMiddleware)Request)HTMLResponseJSONResponseResponse)	BaseRoute)ASGIAppLifespanReceiveScopeSendAppTypeFastAPI)boundc                M       s  e Zd Zddd dddddddeedddd	ddddddddddddddddddeedd
#dededee	e
  dedee dededee dee	eeef   dee	eeeeef f   deee  dee dedee dee dee deeeef  deee  deeeeee f eeegeeeef f f  deeeg ef   deeeg ef   d eee  d!ee d"eeeeeef f  d#eeeeeef f  d$ed%ed&ed'eeeeef eeef f  d(ee	e
  d)eej d*ee d+ed,eeeef  d-eejgef d.ed/ed0dfLd1d2Zd0efd3d4Zd0eeef fd5d6Z d|d7d8Z!d9e"d:e#d;e$d0df fd<d=Z%eddddddd>dddddddddddeeddeed?d@edAedBeeeef f dCedDee dEee	eee&f   deee  dee dee dFed'eeeeef eeef f  d*ee dGee	e  dHee dIee' dJee' dKedLedMedNed+edOeee e(f dPee dQeeeef  d-eejgef d0df2dRdSZ)eddddddd>dddddddddddeeddeed?d@edCedDee dEee	eee&f   deee  dee dee dFed'eeeeef eeef f  d*ee dGee	e  dHee dIee' dJee' dKedLedMedNed+edOee dPee dQeeeef  d-eejgef d0ee*ge*f f0dTdUZ+	d}ddVd@edAedBef dPee deee  d0df
dWdXZ,	d}ddVd@edPee deee  d0ee*ge*f fdYdZZ-ddddddeedeed[	d\ejd]edEee	eee&f   deee  d'eeeeef eeef f  d*ee d+edee d(ee	e
  d-eejgef d0dfd^d_Z.eddddddd>ddddddddddeedddeed`d@edCedDee dEee	eee&f   deee  dee dee dFed'eeeeef eeef f  d*ee dHee dIee' dJee' dKedLedMedNed+edOee dPee d(ee	e
  dQeeeef  d-eejgef d0ee*ge*f f0dadbZ/eddddddd>ddddddddddeedddeed`d@edCedDee dEee	eee&f   deee  dee dee dFed'eeeeef eeef f  d*ee dHee dIee' dJee' dKedLedMedNed+edOee dPee d(ee	e
  dQeeeef  d-eejgef d0ee*ge*f f0dcddZ0eddddddd>ddddddddddeedddeed`d@edCedDee dEee	eee&f   deee  dee dee dFed'eeeeef eeef f  d*ee dHee dIee' dJee' dKedLedMedNed+edOee dPee d(ee	e
  dQeeeef  d-eejgef d0ee*ge*f f0dedfZ1eddddddd>ddddddddddeedddeed`d@edCedDee dEee	eee&f   deee  dee dee dFed'eeeeef eeef f  d*ee dHee dIee' dJee' dKedLedMedNed+edOee dPee d(ee	e
  dQeeeef  d-eejgef d0ee*ge*f f0dgdhZ2eddddddd>ddddddddddeedddeed`d@edCedDee dEee	eee&f   deee  dee dee dFed'eeeeef eeef f  d*ee dHee dIee' dJee' dKedLedMedNed+edOee dPee d(ee	e
  dQeeeef  d-eejgef d0ee*ge*f f0didjZ3eddddddd>ddddddddddeedddeed`d@edCedDee dEee	eee&f   deee  dee dee dFed'eeeeef eeef f  d*ee dHee dIee' dJee' dKedLedMedNed+edOee dPee d(ee	e
  dQeeeef  d-eejgef d0ee*ge*f f0dkdlZ4eddddddd>ddddddddddeedddeed`d@edCedDee dEee	eee&f   deee  dee dee dFed'eeeeef eeef f  d*ee dHee dIee' dJee' dKedLedMedNed+edOee dPee d(ee	e
  dQeeeef  d-eejgef d0ee*ge*f f0dmdnZ5eddddddd>ddddddddddeedddeed`d@edCedDee dEee	eee&f   deee  dee dee dFed'eeeeef eeef f  d*ee dHee dIee' dJee' dKedLedMedNed+edOee dPee d(ee	e
  dQeeeef  d-eejgef d0ee*ge*f f0dodpZ6	d}d@edPeedf d0ee*ge*f fdqdrZ7dsed0ee*ge*f fdtduZ8dved0ee*ge*f fdwdxZ9dyeeee f d0ee*ge*f fdzd{Z:  Z;S )~r2   FN z0.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webhooks
deprecatedinclude_in_schemaswagger_ui_parametersgenerate_unique_id_functionseparate_input_output_schemasselfr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   extrareturnc       #   %      K   sf  || _ || _|| _|| _|| _|| _|| _|| _|| _|| _	|| _
|| _|| _|| _|| _|!| _|	p3g | _|#| _|$| _d| _d | _| jrR| jsKJ d| jsRJ d|rYtd |p^t | _|pc|| _t | _i | _tj||| |||||
||| ||"d| _|d u ri nt|| _ | j !t"t# | j !t$t% | j !t&t' |d u rg nt(|| _)d | _*| +  d S )Nz3.1.0z4A title must be provided for OpenAPI, e.g.: 'My API'z5A version must be provided for OpenAPI, e.g.: '2.1.0'z"openapi_prefix" has been deprecated in favor of "root_path", which follows more closely the ASGI standard, is simpler, and more automatic. Check the docs at https://fastapi.tiangolo.com/advanced/sub-applications/)r6   r@   Zdependency_overrides_providerrG   rH   rI   r?   r>   rQ   rS   rT   rP   rV   ),r5   r7   r8   r9   r:   rJ   rK   rL   r;   r<   rO   rA   rB   rC   rD   rU   r=   rW   rY   openapi_versionopenapi_schemar   warningr   	APIRouterrR   rN   r!   stateZdependency_overridesrouterdictrF   
setdefaultr"   r   r   r   r   r   listuser_middlewareZmiddleware_stacksetup)%rX   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rY    rf   kC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\fastapi/applications.py__init__3   sz   /

zFastAPI.__init__c           
      C   s   | j }d }i }| j D ]\}}|dtfv r|}q|||< qtt||dg| j tt||dttg }| j	}t
|D ]\}}	|dd|i|	}q;|S )Ni  )handlerr5   )handlersr5   apprf   )r5   rF   items	Exceptionr#   r%   rd   r&   r   r`   reversed)
rX   r5   Zerror_handlerrF   keyvaluerE   rk   clsoptionsrf   rf   rg   build_middleware_stack   s*   
zFastAPI.build_middleware_stackc                 C   sL   | j s#t| j| j| j| j| j| j| j| j	| j
| jj
| j| j| jd| _ | j S )N)r7   r:   r[   r8   r9   rJ   rK   rL   r6   rR   tagsr=   rW   )r\   r   r7   r:   r[   r8   r9   rJ   rK   rL   r6   rR   r<   r=   rW   rX   rf   rf   rg   openapi   s"   zFastAPI.openapic                    s    j r'dd  jD }dd |D dtdtf fdd} j j |d	d
  j rV jrVdtdtf fdd} j j|d	d
  jrVdtdtfdd} j j|d	d
  j rr jrtdtdtf fdd} j j|d	d
 d S d S d S )Nc                 s   s    | ]}| d V  qdS )urlN)get).0Zserver_datarf   rf   rg   	<genexpr>   s    z FastAPI.setup.<locals>.<genexpr>c                 S   s   h | ]}|r|qS rf   rf   )ry   rw   rf   rf   rg   	<setcomp>   s    z FastAPI.setup.<locals>.<setcomp>reqrZ   c                    sP   | j ddd}|vr"|r" jr" jdd|i | t  S )NrN   r4   /r   rw   )	scoperx   rstriprO   r=   insertaddr)   rv   )r|   rN   rX   Zserver_urlsrf   rg   rv      s   

zFastAPI.setup.<locals>.openapiF)rT   c                    sN   | j ddd}| j } j}|r|| }t| jd | j jdS )NrN   r4   r}   z - Swagger UI)r;   r7   oauth2_redirect_urlZ
init_oauthrU   )	r~   rx   r   r;   rC   r   r7   rD   rU   )r|   rN   r;   r   ru   rf   rg   swagger_ui_html   s   
z&FastAPI.setup.<locals>.swagger_ui_htmlc                    s   t  S N)r   )r|   rf   rf   rg   swagger_ui_redirect  s   z*FastAPI.setup.<locals>.swagger_ui_redirectc                    s2   | j ddd}| j }t| jd dS )NrN   r4   r}   z - ReDoc)r;   r7   )r~   rx   r   r;   r   r7   )r|   rN   r;   ru   rf   rg   
redoc_html  s   

z!FastAPI.setup.<locals>.redoc_html)	r;   r=   r'   r)   Z	add_routerA   r(   rC   rB   )rX   urlsrv   r   r   r   rf   r   rg   re      s&   zFastAPI.setupr~   receivesendc                    s,   | j r	| j |d< t |||I d H  d S )NrN   )rN   super__call__)rX   r~   r   r   	__class__rf   rg   r   !  s   
zFastAPI.__call__zSuccessful Response)response_modelstatus_codert   r>   r8   r9   response_descriptionrP   rS   methodsoperation_idresponse_model_includeresponse_model_excluderesponse_model_by_aliasresponse_model_exclude_unsetresponse_model_exclude_defaultsresponse_model_exclude_nonerT   response_classnameopenapi_extrarV   pathendpoint.r   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   c                C   s   | j j|fi d|d|d|d|d|d|d|d|	d	|
d
|d|d|d|d|d|d|d|d|d|d|d|d|d| d S )Nr   r   r   rt   r>   r8   r9   r   rP   rS   r   r   r   r   r   r   r   r   rT   r   r   r   rV   r`   add_api_route)rX   r   r   r   r   rt   r>   r8   r9   r   rP   rS   r   r   r   r   r   r   r   r   rT   r   r   r   rV   rf   rf   rg   r   &  sb    	
zFastAPI.add_api_routec                   sH   dt dt f 	
fdd}|S )NfuncrZ   c                    s   j j	| fi dddd ddddd	d
ddddddddd
ddd | S )Nr   r   rt   r>   r8   r9   r   rP   rS   r   r   r   r   r   r   r   r   rT   r   r   r   rV   r   r   r>   rS   r9   rV   rT   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rP   rX   r   r8   rt   rf   rg   	decorator~  sb   	
z$FastAPI.api_route.<locals>.decoratorr   )rX   r   r   r   rt   r>   r8   r9   r   rP   rS   r   r   r   r   r   r   r   r   rT   r   r   r   rV   r   rf   r   rg   	api_routea  s   DzFastAPI.api_route)r>   c                C   s   | j j||||d d S N)r   r>   )r`   add_api_websocket_route)rX   r   r   r   r>   rf   rf   rg   r     s   
zFastAPI.add_api_websocket_routec                   s    dt dt f fdd}|S )Nr   rZ   c                    s   j |  d | S r   )r   r   r>   r   r   rX   rf   rg   r     s   z$FastAPI.websocket.<locals>.decoratorr   )rX   r   r   r>   r   rf   r   rg   	websocket  s   	zFastAPI.websocket	prefixrt   r>   rP   rS   rT   r?   rQ   rV   r`   r   c       	         C   s$   | j j|||||||||	|
d
 d S )Nr   )r`   include_router)rX   r`   r   rt   r>   rP   rS   rT   r?   rQ   rV   rf   rf   rg   r     s   
zFastAPI.include_router)r   r   rt   r>   r8   r9   r   rP   rS   r   r   r   r   r   r   r   rT   r   r   rQ   r   rV   c                C      | j j|fi d|d|d|d|d|d|d|d|	d	|
d
|d|d|d|d|d|d|d|d|d|d|d|d|S Nr   r   rt   r>   r8   r9   r   rP   rS   r   r   r   r   r   r   r   rT   r   r   rQ   r   rV   )r`   rx   rX   r   r   r   rt   r>   r8   r9   r   rP   rS   r   r   r   r   r   r   r   rT   r   r   rQ   r   rV   rf   rf   rg   rx     ^   	
zFastAPI.getc                C   r   r   )r`   putr   rf   rf   rg   r     r   zFastAPI.putc                C   r   r   )r`   postr   rf   rf   rg   r   I  r   zFastAPI.postc                C   r   r   )r`   deleter   rf   rf   rg   r     r   zFastAPI.deletec                C   r   r   )r`   rr   r   rf   rf   rg   rr     r   zFastAPI.optionsc                C   r   r   )r`   headr   rf   rf   rg   r     r   zFastAPI.headc                C   r   r   )r`   patchr   rf   rf   rg   r   %  r   zFastAPI.patchc                C   r   r   )r`   tracer   rf   rf   rg   r   \  r   zFastAPI.tracec                    s   dt dt f fdd}|S )Nr   rZ   c                    s   j j|  d | S )N)r   )r`   Zadd_websocket_router   r   r   rX   rf   rg   r     s   z*FastAPI.websocket_route.<locals>.decoratorr   )rX   r   r   r   rf   r   rg   websocket_route  s   zFastAPI.websocket_route
event_typec                 C   s   | j |S r   )r`   on_event)rX   r   rf   rf   rg   r     s   zFastAPI.on_eventmiddleware_typec                    s   dt dt f fdd}|S )Nr   rZ   c                    s    j t| d | S )N)dispatch)Zadd_middlewarer$   r   ru   rf   rg   r     s   z%FastAPI.middleware.<locals>.decoratorr   )rX   r   r   rf   ru   rg   rE     s   zFastAPI.middlewareexc_class_or_status_codec                    s   dt dt f fdd}|S )Nr   rZ   c                    s     |  | S r   )Zadd_exception_handlerr   r   rX   rf   rg   r     s   z,FastAPI.exception_handler.<locals>.decoratorr   )rX   r   r   rf   r   rg   exception_handler  s   zFastAPI.exception_handler)rZ   Nr   )<__name__
__module____qualname__r   r)   r   r1   boolr	   r   r+   strr   r   r   r
   r   r   r*   r#   intrm   r   r'   r   r-   r   r^   ZAPIRouterh   r,   rs   rv   re   r/   r.   r0   r   r   r   r   r   r   r   r   r   r   rx   r   r   r   rr   r   r   r   r   r   rE   r   __classcell__rf   rf   r   rg   r2   2   s\   
	



 !"#
$%&'(),-.
u1
5

	


?
	


@





	


!
	


;
	


;
	


;
	


;
	


;
	


;
	


;
	


8

	

	N)Ienumr   typingr   r   r   r   r   r   r	   r
   r   r   r   Zfastapir   Zfastapi.datastructuresr   r   Zfastapi.exception_handlersr   r   r   Zfastapi.exceptionsr   r   Zfastapi.loggerr   Z!fastapi.middleware.asyncexitstackr   Zfastapi.openapi.docsr   r   r   Zfastapi.openapi.utilsr   Zfastapi.paramsr   Zfastapi.typesr   r   Zfastapi.utilsr   Zstarlette.applicationsr    Zstarlette.datastructuresr!   Zstarlette.exceptionsr"   Zstarlette.middlewarer#   Zstarlette.middleware.baser$   Zstarlette.middleware.errorsr%   Zstarlette.middleware.exceptionsr&   Zstarlette.requestsr'   Zstarlette.responsesr(   r)   r*   Zstarlette.routingr+   Zstarlette.typesr,   r-   r.   r/   r0   r1   r2   rf   rf   rf   rg   <module>   s4    4