o
    ߭hu                     @   s  d dl Z d dlmZ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/m0Z0 d dl1m2Z2m3Z3 d d	l4m5Z5m6Z6 d d
l7m8Z8 d dl9m:Z: d dl;m<Z<m=Z= d dl>m?Z? d dl@mAZAmBZB d dlCmDZD d dlEm0ZF d dlGmHZH d dlImJZJmKZKmLZLmMZM d dlNmOZOmPZP d dlQmRZR d dlSmTZT d dlUmVZVmWZWmXZX dZYdZZdeddfddZ[ddde\dej]de\d eee\  de5f
d!d"Z^dej]de\de5fd#d$Z_ddd%dej]d&ed'ef de\d(ee\ d eee\  de5fd)d*Z`eeed'ef  ee\d'f f Zad+dd,d-e5d.ebd/eeea  de5fd0d1Zcd-e5dee fd2d3Zdd4ed'ef de jefd5d6Zfd7ed8e
e\ef defd9d:Zgd4ed'ef defd;d<Zhddd=d>de\d4ed'ef d(ee\ d eee\  d?ebde5fd@dAZide\dBed-e5deeb fdCdDZjde\d7edEedFebdeeeej] ee f f
dGdHZkdIedFebdebfdJdKZlded-e5ddfdLdMZmd4ed'ef debfdNdOZnd4ed'ef debfdPdQZod4ed'ef debfdRdSZpd4ed'ef dTedUe
e\ef defdVdWZqddddddXdYeePeTf d-e5dZeee
e\ef eJf  d[eeF d\eeR d]ee d^ee
eed'ef ee\ f ef  d_edee
e\ef ee eeF eRe
eed'ef ee\ f ef f fd`daZrdbee dceee\ef eLeKf dee
e\ef ee f fdddeZsdbee dfeee
e\ef eJf  dee
e\ef ee
e\ef  f fdgdhZtd-e5d(e\dee fdidjZudS )k    N)AsyncExitStack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)BackgroundTasks)asynccontextmanagercontextmanager_in_threadpool)	DependantSecurityRequirement)logger)SecurityBase)OAuth2SecurityScopes)OpenIdConnect)create_response_fieldget_path_param_names)	FieldInfo)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   multipart.multipartrF   ImportErrorr/   error!multipart_incorrect_install_errorRuntimeErrormultipart_not_installed_error)rC   rG   rE   rF    rQ   _/var/www/html/stock_analysis/be/venv/lib/python3.10/site-packages/fastapi/dependencies/utils.pycheck_file_fieldR   s"   



rS   )security_scopes
param_namedependspathrT   c                 C   s   |j sJ t||j || |dS )N)rV   
dependencyrW   namerT   )rX   get_sub_dependantrU   rV   rW   rT   rQ   rQ   rR   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)rV   rX   rW   )callablerX   rZ   )rV   rW   rQ   rQ   rR   get_parameterless_sub_dependantx   s   r^   )rY   rT   rX   .rY   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)security_schemescopes)rW   callrY   rT   	use_cache)rH   r   Securityr`   extendr0   r1   r3   r.   get_dependantrb   security_requirementsappend)	rV   rX   rW   rY   rT   security_requirementdependency_scopes
use_scopessub_dependantrQ   rQ   rR   rZ      s,   

rZ   Fskip_repeatsvisited	dependantrm   rn   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_paramssecurity_schemesrb   rW   rl   )rg   	cache_keyr-   rp   copyrq   rr   rs   rt   rf   rb   rW   dependenciesget_flat_dependantrd   )ro   rm   rn   flat_dependantrk   flat_subrQ   rQ   rR   ry      s4   

ry   c                 C   s$   t | dd}|j|j |j |j S )NT)rm   )ry   rp   rq   rr   rs   )ro   rz   rQ   rQ   rR   get_flat_params   s   r|   ra   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 ))rY   kinddefault
annotation)inspect	ParameterrY   r~   r   get_typed_annotationr   .0paramglobalnsrQ   rR   
<listcomp>   s    
z'get_typed_signature.<locals>.<listcomp>)r   	signaturegetattr
parametersvalues	Signature)ra   r   typed_paramstyped_signaturerQ   r   rR   get_typed_signature   s   


	r   r   r   c                 C   s"   t | trt| } t| ||} | S N)rH   strr	   r   )r   r   rQ   rQ   rR   r      s   
r   c                 C   s6   t | }|j}|t jju rd S t| di }t||S )Nr}   )r   r   return_annotationr   emptyr   r   )ra   r   r   r   rQ   rQ   rR   get_typed_return_annotation   s   

r   T)rY   rT   rb   rb   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)ra   rY   rW   rT   rb   )rU   r   valueis_path_paramr[   rU   type_annotationro   z0Cannot specify multiple FastAPI annotations for param_fieldr   )rC   ro   )r5   r   r   r-   itemsanalyze_paramr   r   r\   rx   rg   !add_non_field_param_to_dependencyis_body_paramrt   add_param_to_fields)rW   ra   rY   rT   rb   path_param_namesendpoint_signaturesignature_paramsro   rU   r   r   r   rV   r   rk   rQ   rQ   rR   re      sT   re   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_nameStarletteBackgroundTasksbackground_tasks_param_namer2   security_scopes_param_namer   rQ   rQ   rR   r   %  s&   





r   r   r   c                 C   s  d }d }t }t }|tjjur|}|}t|tu ryt|}|d }dd |dd  D }	dd |	D }
|
r9|
d }nd }t|trqt	||d}|j
tu s]|j
tu s]J d|jj d	| d
|tjjurm|riJ d||_
nt|_
nt|tjry|}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|nD|d u r!|d u r!|tjjur|nt}|rt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|r?t|tjs>J d|jj d| nt|tj"rTt#|dd d u rTtj$j%|_&t'||| }|j(slt#|dd rl| )dd}n|j(pq| }||_(t*| ||j
||j
ttfv |d}|||fS )Nr   c                 S   s    g | ]}t |ttjfr|qS rQ   )rH   r6   r   Dependsr   argrQ   rQ   rR   r   N  s    z!analyze_param.<locals>.<listcomp>   c                 S   s&   g | ]}t |tjtjtjfr|qS rQ   )rH   r   ParamBodyr   r   rQ   rQ   rR   r   S  s    )rG   r   `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 )r   )r   r   zCannot use `z` for path param in_convert_underscores_-)rY   type_r   aliasrequiredrG   )+r   r   r   r   rB   r@   rA   rH   r6   r   r   r   r   	__class____name__r   r   r   r   rX   r&   r=   r?   r<   r>   r   r2   Pathr$   r%   Filer   r   Queryr   r   
ParamTypesqueryr   r   r   replacer4   )rU   r   r   r   rG   rV   r   use_annotationannotated_argsfastapi_annotationsfastapi_specific_annotationsfastapi_annotationdefault_valuerC   use_annotation_from_field_infor   rQ   rQ   rR   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   rY   r   rQ   rQ   rR   r     s*   
r   c                 C   s   | j }t|dd }|tjjkr|j|  d S |tjjkr%|j|  d S |tjj	kr3|j
|  d S |tjjksAJ d| j |j|  d S )Nr   z>non-body parameters must be in path, query, header or cookie: )rG   r   r   r   rW   rp   rg   r   rq   headerrr   cookierY   rs   )rC   ro   rG   field_info_inrQ   rQ   rR   r     s   

r   c                 C   s8   t | r
t | S t | rdS t| dd }t |S )NF__call__)r   	isroutineiscoroutinefunctionisclassr   ra   dunder_callrQ   rQ   rR   is_coroutine_callable  s   



r   c                 C   $   t | rdS t| dd }t |S NTr   )r   isasyncgenfunctionr   r   rQ   rQ   rR   is_async_gen_callable     

r   c                 C   r   r   )r   isgeneratorfunctionr   r   rQ   rQ   rR   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 )NrQ   )r   r,   r   r   r+   enter_async_context)ra   r   r   cmrQ   rQ   rR   solve_generator   s   r   )bodybackground_tasksresponsedependency_overrides_providerdependency_cacherequestr   r   r   r   r   async_exit_stackc                    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|rt|||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!r+t"|j!|dI d H \}}|| |	| |j#r4| ||j#< |j$rDt%| t&rD| ||j$< n|j'rSt%| t(rS| ||j'< |j)rd|d u r_t* }|||j)< |j+rm|||j+< |j,rzt-|jd||j,< ||	|||fS )
Nzcontent-length.dependency_overrides)rW   ra   rY   rT   )r   ro   r   r   r   r   r   r   )ra   r   r   )required_paramsreceived_body)r`   rQ   ).r>   headersstatus_coderx   r   r   r   ra   r   r   rv   r   r   getrW   re   rY   rT   solve_dependenciesupdaterd   rb   r   r   r   r   r7   request_params_to_argsrp   rq   rr   rs   cookiesrt   request_body_to_argsr   r   rH   r=   r   r?   r   r*   r   r   r2   )r   ro   r   r   r   r   r   r   r   errorsrk   ra   use_sub_dependantoriginal_calluse_pathsolved_resultr   
sub_errorsr   sub_dependency_cachesolvedpath_valuespath_errorsquery_valuesquery_errorsheader_valuesheader_errorscookie_valuescookie_errorsbody_valuesbody_errorsrQ   rQ   rR   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locrQ   )r   
loc_prefix)r"   rH   r:   r9   getlistr   r   r   rG   r   r   r   r   r   rg   r   r   rY   validater   listr   rd   )r   r  r   r   rC   r   rG   r  v_errors_
new_errorsrQ   rQ   rR   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   )rg   )r  resultresultsrQ   rR   
process_fn  s   z(request_body_to_args.<locals>.process_fn)rC   r   r  )#rG   r   lenr   r#   rH   r8   r	  r   AttributeErrorrg   r   r   rI   r   r   r   rY   r   r   r;   readr    r)   r'   r   r   r   anyiocreate_task_group
start_soonr(   r
  r  rd   )r   r   r   r   rC   rG   r  field_alias_omittedr  r   r  tg	sub_valuer  r  rQ   r  rR   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 rQ   )rY   r   rQ   rQ   rR   	<setcomp>  s    z!get_body_field.<locals>.<setcomp>r   TBody_)fields
model_namec                 s   s    | ]}|j rd V  qdS )TN)r   r   frQ   rQ   rR   	<genexpr>  s    z!get_body_field.<locals>.<genexpr>r   )r   r   r   c                 s       | ]
}t |jtjV  qd S r   )rH   rG   r   r   r#  rQ   rQ   rR   r%        c                 s   r&  r   )rH   rG   r   rI   r#  rQ   rQ   rR   r%    r'  c                 S   s"   g | ]}t |jtjr|jjqS rQ   )rH   rG   r   r   
media_typer#  rQ   rQ   rR   r   !  s    z"get_body_field.<locals>.<listcomp>r(  )rY   r   r   r   rG   rQ   )ry   rt   rG   r   r  rS   setattrr   anyr   r   rI   r   setr4   )ro   rY   rz   first_paramrG   r  body_param_names_setr   r"  	BodyModelr   BodyFieldInfo_kwargsBodyFieldInfobody_param_media_typesfinal_fieldrQ   rQ   rR   get_body_field  sR   

r3  )vr   
contextlibr   r   rw   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r  fastapir   fastapi._compatr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   fastapi.backgroundr*   fastapi.concurrencyr+   r,   fastapi.dependencies.modelsr-   r.   fastapi.loggerr/   fastapi.security.baser0   fastapi.security.oauth2r1   r2   $fastapi.security.open_id_connect_urlr3   fastapi.utilsr4   r5   pydantic.fieldsr6   starlette.backgroundr   starlette.concurrencyr7   starlette.datastructuresr8   r9   r:   r;   starlette.requestsr<   r=   starlette.responsesr>   starlette.websocketsr?   typing_extensionsr@   rA   rB   rP   rN   rS   r   r   r\   r^   rZ   CacheKeyboolry   r|   r   r   r   r   re   r   r   r   r   r   r   r   r   r   r   r   r3  rQ   rQ   rQ   rR   <module>   sT   <d





  

#



4

 
	



"	


 
#
R