o
    㥵iD                     @  s   d dl mZ d dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
mZmZmZmZ d dlmZ d dlmZ d dlmZ dd	l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! ddl"m#Z#m$Z$ ede	dZ%dgZ&d!ddZ'd"dd Z(ee(Z)dS )#    )annotationsN)	ExitStackcontextmanager)AnyCallableDictListTupleTypeTypeVar)cast)FormData)	BaseModel   )(_convert_model_data_to_keyword_arguments_create_new_signature_merge_multi_value_parse_depends_attrs+_parse_parameters_and_request_body_to_model_update_docs%_validate_parameters_and_request_bodycreate_auto_params)Depends)is_gen_callable   )http_connectionrequestCallableObject)boundauto_paramsdepend_functionsDict[str, Callable[..., Any]]depend_attrsDict[str, Depends]cacheDict[Any, Any]
close_soonr   after_responsereturnDict[str, Any]c                 C  s   i }|   D ]F\}}|| }|jr|j|v r||j ||< qt|jr;t| }	|jr3||	||< n||	||< n| }
|
||< |jrL|| ||j< q|S )N)itemsr$   callr   r   enter_context)r    r"   r$   r&   r'   keyword_paramsnamefunctioninfo	generatorresult r3   G/home/ubuntu/.local/lib/python3.10/site-packages/kui/wsgi/parameters.pycall_dependencies_injection"   s"   

r5   callbackc                   s   t  }t|\}t|dd  D s#s#s# }nt d fdd}|`t|dt	| t
 || tt|S )	Nc                 S  s   i | ]
\}}|t |jqS r3   )_create_new_callbackr+   ).0r.   r0   r3   r3   r4   
<dictcomp>I   s    z(_create_new_callback.<locals>.<dictcomp>r(   r   c                    s   i }t j}t l}t jdi }t|||d}|| z$tp#i t }|d  t	
 }t|tr;t| }|| W t tyW }	 z	|	j}
W Y d }	~	nd }	~	ww |t|
  | i i ||}|W  d    S 1 sww   Y  d S )Ndepend_functions_cache)r&   r'   )r   
exit_stackr   state
setdefaultr5   updater   sendr   data
isinstancer   r   multi_itemsStopIterationvalueNotImplementedErrorr   )argskwargsr-   r'   r&   r$   depends_resultg
_body_dataer@   r2   r6   r"   r    exclusive_models
parametersrequest_bodyr3   r4   callback_with_auto_bound_paramsQ   s@   



$z=_create_new_callback.<locals>.callback_with_auto_bound_params__signature__)r(   r   )inspect	signaturer   r   r*   	functoolswraps__wrapped__setattrr   r   typing_castr   )r6   sigsecurity_inforP   r3   rL   r4   r7   >   s8   
'

	r7   )r    r!   r"   r#   r$   r%   r&   r   r'   r   r(   r)   )r6   r   r(   r   )*
__future__r   rT   rR   
contextlibr   r   typingr   r   r   r   r	   r
   r   r   rX   baize.datastructuresr   pydanticr   rN   r   r   r   r   r   r   r   r   parameters.fieldsr   utilsr   requestsr   r   r   __all__r5   r7   r   r3   r3   r3   r4   <module>   s$    $(


M