o
    㥵iD                     @  s  d dl mZ d dlZd dlZd dlmZ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"m#Z#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)AsyncExitStackasynccontextmanager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_async_gen_callableis_coroutine_callable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                   sJ  i }|   D ]\}}|| }|jr|j|v r||j ||< qt|jrOt| }	t|	jr6|	jI d H |	_|jrD||	I d H ||< nT||	I d H ||< nIt	|jr]| I d H ||< n;t
|jrt| }
t|
jrt|
jI d H |
_|jr||
||< n||
||< n| }t|r|I d H }|||< |jr|| ||j< q|S )N)itemsr'   callr   r   inspectisawaitablegenenter_async_contextr   r   r   enter_context)r#   r%   r'   r)   r*   keyword_paramsnamefunctioninfoasyncgenerator	generatorresult r;   G/home/ubuntu/.local/lib/python3.10/site-packages/kui/asgi/parameters.pycall_dependencies_injection"   sF   






r=   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 r;   )_create_new_callbackr.   ).0r5   r7   r;   r;   r<   
<dictcomp>[   s    z(_create_new_callback.<locals>.<dictcomp>r+   r   c                    s2  i }t j}t 4 I d H }t jdi }t|||dI d H }|| z'tp+i t }|d  t	
 I d H }t|trFt| }|| W t tyb }	 z	|	j}
W Y d }	~	nd }	~	ww |t|
  | i i ||}t|r|I d H }|W  d   I d H  S 1 I d H sw   Y  d S )Ndepend_functions_cache)r)   r*   )r   
exit_stackr   state
setdefaultr=   updater   sendr   data
isinstancer   r   multi_itemsStopIterationvalueNotImplementedErrorr   r/   r0   )argskwargsr4   r*   r)   r'   depends_resultg
_body_dataerH   r:   r>   r%   r#   exclusive_models
parametersrequest_bodyr;   r<   callback_with_auto_bound_paramsc   sF   





0z=_create_new_callback.<locals>.callback_with_auto_bound_params__signature__)r+   r   )r/   	signaturer   r   r-   	functoolswraps__wrapped__setattrr   r   typing_castr    )r>   sigsecurity_inforX   r;   rT   r<   r?   P   s8   
)

	r?   )r#   r$   r%   r&   r'   r(   r)   r   r*   r   r+   r,   )r>   r    r+   r    )-
__future__r   r[   r/   
contextlibr   r   r   typingr   r   r   r	   r
   r   r   r   r_   baize.datastructuresr   pydanticr   rV   r   r   r   r   r   r   r   r   parameters.fieldsr   utilsr   r   r   requestsr   r   r    __all__r=   r?   r"   r;   r;   r;   r<   <module>   s$    $(


.O