o
    $6dt                     @   s  d dl 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mZmZmZmZmZ d dl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mZm Z m!Z!m"Z"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/m0Z0m1Z1 d dl2m3Z3m4Z4 d d	l5m6Z6 d d
l7m8Z8 d dl9m:Z:m;Z; d dl<m=Z= d dl>m?Z?m@Z@ d dlAmBZB d dlCmDZD d dlEmFZF d dlGmHZHmIZImJZJmKZK d dlLmMZMmNZN d dlOmPZP d dlQmRZR d dlSmTZTmUZUmVZV dZWdZXdeddfddZYdddeZdej[deZd eeeZ  de3f
d!d"Z\dej[deZde3fd#d$Z]ddd%dej[d&ed'ef deZd(eeZ d eeeZ  de3fd)d*Z^eeed'ef  eeZd'f f Z_d+dd,d-e3d.e`d/eee_  de3fd0d1Zad-e3dee fd2d3Zbd4ed'ef de jcfd5d6Zdd7ed8e	eZef defd9d:Zed4ed'ef defd;d<Zfddd=d>deZd4ed'ef d(eeZ d eeeZ  d?e`de3fd@dAZgdeZdBed-e3dee` fdCdDZhdeZd7edEedFe`deeeej[ ee f f
dGdHZidIedFe`de`fdJdKZjded-e3ddfdLdMZkd4ed'ef de`fdNdOZld4ed'ef de`fdPdQZmd4ed'ef de`fdRdSZnd4ed'ef dTe/dUe	eZef defdVdWZoddddddXdYeeNeRf d-e3dZeee	eZef eHf  d[eeD d\eeP d]ee d^ee	eed'ef eeZ f ef  dee	eZef ee eeD ePe	eed'ef eeZ f ef f fd_d`Zpdaee dbeeeZef eJeIf dee	eZef ee f fdcddZqdaee deeee	eZef eHf  dee	eZef ee	eZef  f fdfdgZrd-e3d(eZdee fdhdiZsdS )j    N)contextmanager)deepcopy)AnyCallable	CoroutineDict
ForwardRefListMappingOptionalSequenceTupleTypeUnioncast)params)PYDANTIC_V2ErrorWrapper
ModelFieldRequired	Undefined_regenerate_error_with_loccopy_field_infocreate_body_modelevaluate_forwardreffield_annotation_is_scalarget_annotation_from_field_infoget_missing_field_erroris_bytes_fieldis_bytes_sequence_fieldis_scalar_fieldis_scalar_sequence_fieldis_sequence_field.is_uploadfile_or_nonable_uploadfile_annotation!is_uploadfile_sequence_annotationlenient_issubclasssequence_typesserialize_sequence_valuevalue_is_sequence)AsyncExitStackasynccontextmanagercontextmanager_in_threadpool)	DependantSecurityRequirement)logger)SecurityBase)OAuth2SecurityScopes)OpenIdConnect)create_response_fieldget_path_param_names)	FieldInfo)BackgroundTasks)run_in_threadpool)FormDataHeadersQueryParams
UploadFile)HTTPConnectionRequest)Response)	WebSocket)	Annotatedget_args
get_originzForm data requires "python-multipart" to be installed. 
You can install "python-multipart" with: 

pip install python-multipart
zForm data requires "python-multipart" to be installed. It seems you installed "multipart" instead. 
You can remove "multipart" with: 

pip uninstall multipart

And then install "python-multipart" with: 

pip install python-multipart
fieldreturnc                 C   s   | j }t|tjrEz*ddlm} |sJ zddlm} |sJ W W d S  ty3   t	
t ttd w  tyD   t	
t ttd w d S )Nr   )__version__)parse_options_header)
field_info
isinstancer   Form	multipartrE   Zmultipart.multipartrF   ImportErrorr.   error!multipart_incorrect_install_errorRuntimeErrormultipart_not_installed_error)rC   rG   rE   rF    rP   qC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\fastapi/dependencies/utils.pycheck_file_fieldR   s"   



rR   )security_scopes
param_namedependspathrS   c                 C   s   |j sJ t||j || |dS )N)rU   
dependencyrV   namerS   )rW   get_sub_dependantrT   rU   rV   rS   rP   rP   rQ   get_param_sub_dependantg   s   
r[   c                 C   s"   t | js	J dt| | j|dS )Nz;A parameter-less dependency must have a callable dependency)rU   rW   rV   )callablerW   rY   )rU   rV   rP   rP   rQ   get_parameterless_sub_dependantx   s   r]   )rX   rS   rW   .rX   c           	      C   s|   d }|pg }t | tjr| j}|| t |tr*g }t |ttfr$|}t||d}t	||||| j
d}|r<|j| |S )N)Zsecurity_schemescopes)rV   callrX   rS   	use_cache)rH   r   ZSecurityr^   extendr/   r0   r2   r-   get_dependantr`   security_requirementsappend)	rU   rW   rV   rX   rS   Zsecurity_requirementZdependency_scopesZ
use_scopessub_dependantrP   rP   rQ   rY      s,   

rY   Fskip_repeatsvisited	dependantrg   rh   c             
   C   s   |d u rg }| | j t| j | j | j | j | j | j	 | j
| jd}| jD ];}|r9|j|v r9q/t|||d}|j|j |j|j |j|j |j|j |j|j |j	|j	 q/|S )N)path_paramsquery_paramsheader_paramscookie_paramsbody_paramsZsecurity_schemesr`   rV   rf   )rd   	cache_keyr,   rj   copyrk   rl   rm   rn   rc   r`   rV   dependenciesget_flat_dependantra   )ri   rg   rh   flat_dependantre   Zflat_subrP   rP   rQ   rr      s4   

rr   c                 C   s$   t | dd}|j|j |j |j S )NT)rg   )rr   rj   rk   rl   rm   )ri   rs   rP   rP   rQ   get_flat_params   s   rt   r_   c                    s<   t | }t| di   fdd|j D }t |}|S )N__globals__c              	      s,   g | ]}t j|j|j|jt|j d qS ))rX   kinddefault
annotation)inspect	ParameterrX   rv   rw   get_typed_annotationrx   .0paramglobalnsrP   rQ   
<listcomp>   s    
z'get_typed_signature.<locals>.<listcomp>)ry   	signaturegetattr
parametersvalues	Signature)r_   r   Ztyped_paramsZtyped_signaturerP   r   rQ   get_typed_signature   s   


	r   rx   r   c                 C   s"   t | trt| } t| ||} | S N)rH   strr   r   )rx   r   rP   rP   rQ   r{      s   
r{   c                 C   s6   t | }|j}|t jju rd S t| di }t||S )Nru   )ry   r   return_annotationr   emptyr   r{   )r_   r   rx   r   rP   rP   rQ   get_typed_return_annotation   s   

r   T)rX   rS   r`   r`   c                 C   s   t | }t|}|j}t||| ||d}| D ]T\}	}
|	|v }t|	|
j|
j|d\}}}|d ur@t|	|| |d}|j	
| qt|	||drS|d u sRJ d|	q|d usYJ t||drf|j
| qt||d q|S )N)r_   rX   rV   rS   r`   )rT   rx   valueis_path_paramrZ   rT   type_annotationri   z0Cannot specify multiple FastAPI annotations for param_fieldr   )rC   ri   )r4   r   r   r,   itemsanalyze_paramrx   rw   r[   rq   rd   !add_non_field_param_to_dependencyis_body_paramrn   add_param_to_fields)rV   r_   rX   rS   r`   Zpath_param_namesZendpoint_signatureZsignature_paramsri   rT   r~   r   r   rU   r   re   rP   rP   rQ   rb      sR   
rb   r   c                 C   s|   t |tr
| |_dS t |tr| |_dS t |tr| |_dS t |tr(| |_dS t |t	r2| |_
dS t |tr<| |_dS d S )NT)r%   r=   request_param_namer?   websocket_param_namer<   http_connection_param_namer>   response_param_namer6   background_tasks_param_namer1   security_scopes_param_namer   rP   rP   rQ   r   %  s&   





r   r   r   c                 C   s$  d }d }t }|tjjurxt|tu rxt|}|d }dd |dd  D }t|dks2J d| tt	|d }	t
|	trot|	|d}|jtu s[|jtu s[J d|jj d| d	|tjjurk|rgJ d
||_nt|_nt
|	tjrw|	}n|tjjur|}t
|tjr|d u sJ d| |d u sJ d| |}nt
|tr|d u sJ d| |}tr||_|d ur|jd u r||_t|ttttttfr|d u sJ d||d u sJ d|nE|d u r)|d u r)|tjjur|nt}
|rtj|d}n't|st |rtj!||
d}nt"|ds"tj#||
d}ntj$||
d}d }|d ur|rGt
|tjsFJ d|jj d| nt
|tj%r\t&|dd d u r\tj'j(|_)t*||| }|j+stt&|dd rt| ,dd}n|j+py| }||_+t-| ||j||jttfv |d}|||fS )Nr   c                 S   s    g | ]}t |ttjfr|qS rP   )rH   r5   r   Depends)r}   argrP   rP   rQ   r   M  s    z!analyze_param.<locals>.<listcomp>   z:Cannot specify multiple `Annotated` FastAPI arguments for )rG   rx   `z1` default value cannot be set in `Annotated` for z). Set the default value with `=` instead.z*Path parameters cannot have default valueszGCannot specify `Depends` in `Annotated` and default value together for zaCannot specify a FastAPI annotation in `Annotated` and `Depends` as a default value together for zQCannot specify FastAPI annotations in `Annotated` and default value together for z"Cannot specify `Depends` for type z+Cannot specify FastAPI annotation for type )rx   )rx   rw   zCannot use `z` for path param in_Zconvert_underscores_-)rX   type_rw   aliasrequiredrG   ).r   ry   r   r   rB   r@   rA   lennextiterrH   r5   r   rw   r   r   	__class____name__r   r   r   rx   rW   r%   r=   r?   r<   r>   r6   r1   Pathr#   r$   Filer   BodyQueryParamr   
ParamTypesqueryr   r   r   replacer3   )rT   rx   r   r   rG   rU   r   Zannotated_argsZfastapi_annotationsZfastapi_annotationdefault_valuerC   Zuse_annotationr   rP   rP   rQ   r   =  s   










	r   r   c                 C   sl   |rt | dsJ ddS t | drdS t| jtjtjfr$t| r$dS t| jtjs4J d| j ddS )N)rC   z1Path params must be of one of the supported typesFzParam: z) can only be a request body, using Body()T)	r    rH   rG   r   r   Headerr!   r   rX   r   rP   rP   rQ   r     s*   
r   c                 C   s   t tj| j}|jtjjkr|j|  d S |jtjj	kr%|j
|  d S |jtjjkr4|j|  d S |jtjjksCJ d| j |j|  d S )Nz>non-body parameters must be in path, query, header or cookie: )r   r   r   rG   r   r   rV   rj   rd   r   rk   headerrl   cookierX   rm   )rC   ri   rG   rP   rP   rQ   r     s   
r   c                 C   s8   t | r
t | S t | rdS t| dd }t |S )NF__call__)ry   	isroutineiscoroutinefunctionisclassr   r_   Zdunder_callrP   rP   rQ   is_coroutine_callable  s   



r   c                 C   $   t | rdS t| dd }t |S NTr   )ry   isasyncgenfunctionr   r   rP   rP   rQ   is_async_gen_callable     

r   c                 C   r   r   )ry   isgeneratorfunctionr   r   rP   rP   rQ   is_gen_callable  r   r   stack
sub_valuesc                    sL   t | rtt| di |}nt| rt| di |}||I d H S )NrP   )r   r+   r   r   r*   enter_async_context)r_   r   r   cmrP   rP   rQ   solve_generator  s   r   )bodybackground_tasksresponsedependency_overrides_providerdependency_cacherequestr   r   r   r   r   c              
      s  i }g }|d u rt  }|jd= d |_|pi }|jD ]}	ttdtf |	j|	_tttdtf tt	 f |	j
|	_
|	j}
|	}|r\|jr\|	j}t|di ||}
|	j}t||
|	j|	jd}t| ||||||dI d H }|\}}}}}|| |r~|| q|	jr|	j
|v r||	j
 }n:t|
st|
r| jd}t|tsJ t|
||dI d H }nt|
r|
d
i |I d H }nt|
fi |I d H }|	jd ur|||	j< |	j
|vr|||	j
< qt|j| j\}}t|j | j \}}t|j!| j\}}t|j"| j#\}}|| || || || ||| | | 7 }|j$r7t%|j$|dI d H \}}|| || |j&r@| ||j&< |j'rPt| t(rP| ||j'< n|j)r_t| t*r_| ||j)< |j+rp|d u rkt, }|||j+< |j-ry|||j-< |j.rt/|jd	||j.< |||||fS )Nzcontent-length.dependency_overrides)rV   r_   rX   rS   )r   ri   r   r   r   r   r   Zfastapi_astack)r_   r   r   )required_paramsreceived_body)r^   rP   )0r>   headersstatus_coderq   r   r   r   r_   r   r   ro   r   r   getrV   rb   rX   rS   solve_dependenciesupdatera   r`   r   r   scoperH   r)   r   r   r7   request_params_to_argsrj   rk   rl   rm   cookiesrn   request_body_to_argsr   r   r=   r   r?   r   r6   r   r   r1   )r   ri   r   r   r   r   r   r   errorsre   r_   Zuse_sub_dependantZoriginal_callZuse_pathZsolved_resultr   Z
sub_errorsr   Zsub_dependency_cacheZsolvedr   Zpath_valuesZpath_errorsZquery_valuesZquery_errorsheader_valuesZheader_errorsZcookie_valuesZcookie_errorsZbody_valuesZbody_errorsrP   rP   rQ   r     s   


















r   r   received_paramsc                 C   s   i }g }| D ]u}t |rt|ttfr||jp|j}n||j}|j}t|t	j
s0J d|jj|jf}|d u rP|jrG|t|d nt|j||j< q|j|||d\}}	t|	tre||	 qt|	trvt|	dd}
||
 q|||j< q||fS )Nz"Params must be subclasses of ParamlocrP   )r   Z
loc_prefix)r!   rH   r:   r9   getlistr   rw   r   rG   r   r   r   r   r   rd   r   r   rX   validater   listr   ra   )r   r   r   r   rC   r   rG   r   v_errors_Z
new_errorsrP   rP   rQ   r   |  s8   


r   r   c              
      sf  i }g }| r/| d }|j }t|dd }t| dko| }|r%|j|i}| D ]}|r/d}nd|jf}d }	|d urct|rJt|trJ||j}	nz||j}	W n t	yb   |
t| Y q'w |	d u st|tjrq|	dkst|tjrt|rt|	dkr|jr|
t| nt|j||j< q't|tjrt|rt|	tr|	 I d H }	n^t|r
t|tjr
t|	r
t|	tsJ g  dtg ttttf f dd f fd	d
}
t 4 I d H }|	D ]	}||
|j qW d   I d H  n1 I d H sw   Y  t| d}	|j |	||d\}}t|t!r |"| q'|r)|
| q'|||j< q'||fS )Nr   embedr   )r   r    fnrD   c                    s   |  I d H }  | d S r   )rd   )r   resultresultsrP   rQ   
process_fn  s   z(request_body_to_args.<locals>.process_fn)rC   r   r   )#rG   r   r   r   r"   rH   r8   r   r   AttributeErrorrd   r   r   rI   r   r   rw   rX   r   r   r;   readr   r(   r&   r   r   r   anyioZcreate_task_groupZ
start_soonr'   r   r   ra   )r   r   r   r   rC   rG   r   Zfield_alias_omittedr   r   r   tgZ	sub_valuer   r   rP   r   rQ   r     s   






(r   c              	   C   sF  t | }|js	d S |jd }|j}t|dd }dd |jD }t|dkr-|s-t| |S |jD ]	}t|jdd q0d| }t|j|d}	td	d
 |jD }
|	dd}|
sZd |d< tdd
 |jD rht	j
}n'tdd
 |jD rvt	j}nt	j}dd |jD }tt|dkr|d |d< td|	|
d|di |d}t| |S )Nr   r   c                 S   s   h | ]}|j qS rP   )rX   r|   rP   rP   rQ   	<setcomp>  s    z!get_body_field.<locals>.<setcomp>r   TZBody_)fields
model_namec                 s   s    | ]}|j rd V  qdS )TN)r   r}   frP   rP   rQ   	<genexpr>  s    z!get_body_field.<locals>.<genexpr>r   )rx   r   rw   c                 s       | ]
}t |jtjV  qd S r   )rH   rG   r   r   r   rP   rP   rQ   r         c                 s   r   r   )rH   rG   r   rI   r   rP   rP   rQ   r     r   c                 S   s"   g | ]}t |jtjr|jjqS rP   )rH   rG   r   r   
media_typer   rP   rP   rQ   r     s    z"get_body_field.<locals>.<listcomp>r   )rX   r   r   r   rG   rP   )rr   rn   rG   r   r   rR   setattrr   anyr   r   rI   r   setr3   )ri   rX   rs   Zfirst_paramrG   r   Zbody_param_names_setr~   r   Z	BodyModelr   ZBodyFieldInfo_kwargsZBodyFieldInfoZbody_param_media_typesZfinal_fieldrP   rP   rQ   get_body_field  sR   

r   )try   
contextlibr   rp   r   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   Zfastapir   Zfastapi._compatr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   Zfastapi.concurrencyr)   r*   r+   Zfastapi.dependencies.modelsr,   r-   Zfastapi.loggerr.   Zfastapi.security.baser/   Zfastapi.security.oauth2r0   r1   Z$fastapi.security.open_id_connect_urlr2   Zfastapi.utilsr3   r4   Zpydantic.fieldsr5   Zstarlette.backgroundr6   Zstarlette.concurrencyr7   Zstarlette.datastructuresr8   r9   r:   r;   Zstarlette.requestsr<   r=   Zstarlette.responsesr>   Zstarlette.websocketsr?   Ztyping_extensionsr@   rA   rB   rO   rM   rR   r   r   r[   r]   rY   ZCacheKeyboolrr   rt   r   r   r{   r   rb   r   r   r   r   r   r   r   r   r   r   r   r   rP   rP   rP   rQ   <module>   sL   <d





  

#



4

|	



"	

 
#
R