o
    é’Oj$i  ã                !   @   sx  U d dl Z d dlZd dlZd dl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mZmZmZmZmZ d dlmZmZ d dlmZ d dl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$ 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l0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 dddddddiddigidœdddœd ddœd!d"id#ddœd$œg d%¢d&œZ:d'dd(d)dd*e$d idœid+œZ;d,d-d.d/d0d1d2œZ<e=e>e>f e?d3< d4ed5e@e=e>ef eAe=e>ef  f fd6d7„ZBd8d9œd:ed;e/d<e=e@ee	d= f e=e>ef f d>eCd5eAe=e>ef  f
d?d@„ZDd8d9œdAedB d;e/d<e=e@ee	d= f e=e>ef f d>eCd5e=e>ef dB f
dBdC„ZEdDejFdEe>d5e>fdFdG„ZGdDejFdEe>d5e>fdHdI„ZHdDejFdEe>dJeIe> d5e=e>ef fdKdL„ZJd8d9œdDejFdJeIe> d;e/d<e=e@ee	d= f e=e>ef f d>eCd5e@e=e>ef e=e>ef e=e>ef f fdMdN„ZKdOejLd5ejFdB fdPdQ„ZMdRee9ejLB  d5eAe fdSdT„ZNdUddddddddd8ddVœd!e>dWe>dXe>dYe>dB dZe>dB dRee9ejLB  d[ee9ejLB  dB d\eAe=e>ef  dB d]eAe=e>e>eB f  dB d^e>dB d_e=e>e>eB f dB d`e=e>e>eB f dB d>eCdae=e>ef dB d5e=e>ef fdbdc„ZOdS )dé    N)ÚSequence)ÚAnyÚLiteralÚcast)Úrouting)Ú
ModelFieldÚget_definitionsÚget_flat_models_from_fieldsÚget_model_name_mapÚget_schema_from_model_fieldÚlenient_issubclass)ÚDefaultPlaceholderÚ_Unset)Ú	Dependant)Ú_get_flat_fields_from_paramsÚget_flat_dependantÚget_flat_paramsÚget_validation_alias)Újsonable_encoder)ÚFastAPIDeprecationWarning)ÚMETHODS_WITH_BODYÚ
REF_PREFIX)ÚOpenAPI)ÚBodyÚ
ParamTypes)ÚResponse)Ú_SSE_EVENT_SCHEMA)ÚModelNameMap)Údeep_dict_updateÚgenerate_operation_id_for_pathÚis_body_allowed_for_status_code)Ú	BaseModel)ÚJSONResponse)Ú	BaseRouteÚValidationErrorÚobjectÚLocationÚarrayÚanyOfÚtypeÚstringÚinteger)Útitler)   ÚitemsÚMessage)r,   r)   z
Error Typer,   ÚInputÚContext)ÚlocÚmsgr)   ÚinputÚctx)r1   r2   r)   )r,   r)   Ú
propertiesÚrequiredÚHTTPValidationErrorÚdetailÚDetailú$ref)r,   r)   r5   ÚInformationÚSuccessÚRedirectionzClient ErrorzServer ErrorzDefault Response)Ú1XXÚ2XXÚ3XXÚ4XXÚ5XXÚDEFAULTÚstatus_code_rangesÚflat_dependantÚreturnc                 C   sŠ   i }i }| j D ]0}t|jjddd�}|jj}|||< ||vr"g ||< |jp&g D ]}||| vr6||  |¡ q'qdd„ | ¡ D ƒ}||fS )NT©Úby_aliasÚexclude_nonec                 S   s   g | ]\}}||i‘qS © rJ   )Ú.0ÚnameÚscopesrJ   rJ   ú[/var/www/html/pharmsmart-cdr-gen/venv/lib/python3.10/site-packages/fastapi/openapi/utils.pyÚ
<listcomp>e   s    ÿz4get_openapi_security_definitions.<locals>.<listcomp>)Ú_security_dependenciesr   Ú_security_schemeÚmodelÚscheme_nameÚoauth_scopesÚappendr-   )rE   Úsecurity_definitionsÚoperation_security_dictÚsecurity_dependencyÚsecurity_definitionÚsecurity_nameÚscopeÚoperation_securityrJ   rJ   rN   Ú get_openapi_security_definitionsQ   s*   
ý€þÿr]   T)Úseparate_input_output_schemasÚ	dependantÚmodel_name_mapÚfield_mapping)Ú
validationÚserializationr^   c                 C   s’  g }t | dd�}t|jƒ}t|jƒ}t|jƒ}t|jƒ}	tj|ftj|ftj	|ftj
|	fg}
d}t|jƒdkrJ|jd }t|jjtƒrJt|jddƒ}|
D ]z\}}|D ]s}|j}t|ddƒs^qRt||||d�}t|ƒ}t|jd|ƒ}|tj	kr„||jkr„|r„|j dd	¡}||j|j ¡ |d
œ}|jr—|j|d< t|dd ƒ}t|dd ƒ}|r¬t|ƒ|d< n
|tur¶t|ƒ|d< t|dd ƒrÀd|d< | |¡ qRqL|S )NT©Úskip_repeatsé   r   Úconvert_underscoresÚinclude_in_schema©Úfieldr`   ra   r^   Ú_ú-)rL   Úinr6   ÚschemaÚdescriptionÚopenapi_examplesÚexampleÚexamplesÚ
deprecated)r   r   Úpath_paramsÚquery_paramsÚheader_paramsÚcookie_paramsr   ÚpathÚqueryÚheaderÚcookieÚlenr   Ú
field_infoÚ
annotationr!   Úgetattrr   r   rL   ÚreplaceÚvalueÚis_requiredro   r   r   rU   )r_   r`   ra   r^   Ú
parametersrE   rt   ru   rv   rw   Úparameter_groupsÚdefault_convert_underscoresÚfirst_fieldÚ
param_typeÚparam_groupÚparamr}   Úparam_schemarL   rg   Ú	parameterrp   rq   rJ   rJ   rN   Ú!_get_openapi_operation_parametersk   sx   	



ü
ÿüýÿþýü
Ø)rŒ   Ú
body_fieldc           
      C   s˜   | sd S t | tƒsJ ‚t| |||d�}tt| jƒ}|j}| j ¡ }i }|r)||d< d|i}	|jr8t	|jƒ|	d< n|j
turDt	|j
ƒ|	d< ||	i|d< |S )Nri   r6   rn   rr   rq   Úcontent)Ú
isinstancer   r   r   r   r}   Ú
media_typer‚   rp   r   rq   r   )
r�   r`   ra   r^   Úbody_schemar}   Úrequest_media_typer6   Úrequest_body_oaiÚrequest_media_contentrJ   rJ   rN   Ú"get_openapi_operation_request_body´   s0   	ü

ÿ
r•   ÚrouteÚmethodc                 C   s2   t jdtdd� | jr| jS | j}t| j||d�S )Nzqfastapi.openapi.utils.generate_operation_id() was deprecated, it is not used internally, and will be removed sooné   )ÚmessageÚcategoryÚ
stacklevel)rL   rx   r—   )ÚwarningsÚwarnr   Úoperation_idÚpath_formatr   rL   )r–   r—   rx   rJ   rJ   rN   Úgenerate_operation_id×   s   ür    c                 C   s   | j r| j S | j dd¡ ¡ S )Nrk   ú )ÚsummaryrL   r€   r,   ©r–   r—   rJ   rJ   rN   Úgenerate_operation_summaryæ   s   r¤   Úoperation_idsc                 C   sÀ   i }| j r
| j |d< t| |d�|d< | jr| j|d< | jp| j}||v rMt| jddƒ}d|› d|› �}t| jd	i ƒ d
¡}|rF|d|› �7 }tj	|dd� | 
|¡ ||d< | jr^| j|d< |S )NÚtagsr£   r¢   ro   Ú__name__z<unnamed_endpoint>zDuplicate Operation ID z for function Ú__globals__Ú__file__z at rf   )r›   ÚoperationIdrs   )r¦   r¤   ro   rž   Ú	unique_idr   ÚendpointÚgetrœ   r�   Úaddrs   )r–   r—   r¥   Ú	operationrž   Úendpoint_namer™   Ú	file_namerJ   rJ   rN   Úget_openapi_operation_metadataì   s&   



r²   c           .   	      sú  i }i }i }| j d usJ dƒ‚t| jtƒr| jj}n| j}|s#J dƒ‚|j}	| j�rx| j D �]I}
t| |
|d�‰ g }t| j	dd�}t
|d�\}}|rRˆ  dg ¡ |¡ |rY| |¡ t| j	|||d�}| |¡ |r„d	d
„ |D ƒ}dd
„ |D ƒ}| |¡ t| ¡ ƒˆ d< |
tv r—t| j|||d�}|r—|ˆ d< | jrÄi }| jD ] }t|tjƒr¿tttj|ƒ||||d�\}}}|j|i||j< qŸ|ˆ d< | jd urÏt| jƒ}nt |j ¡}|j! "d¡}|d urêt|j#t$ƒrêt|j#ƒ}| j%ˆ  di ¡ |i ¡d< t&| jƒ�r—| j'�r*i }| j(�rt)| j(|||d�}||d< ni |d< |ˆ  di ¡ |i ¡ di ¡d< nm| j*�rfi }t+ ,t-¡}| j(�rQt)| j(|||d�}dg|d< dd|dœ|d d< ||d< |ˆ  di ¡ |i ¡ di ¡d< n1|	�r—ddi}t.|t/ƒ�rƒ| j0�r�t)| j0|||d�}ni }|ˆ  di ¡ |i ¡ di ¡ |	i ¡d < | j1�r,ˆ  di ¡} | j1 2¡ D ]…\}!}"t+ ,|"¡}#|# 3d!d ¡ t|!ƒ 4¡ }$|$d"k�rÂd#}$|  |$i ¡}%t|#t5ƒ�sÒJ d$ƒ‚| j6 "|!¡}&d }'|&�rýt)|&|||d�}'|	�péd}(|# di ¡ |(i ¡ d i ¡})t7|)|'ƒ t8 "t|!ƒ 4¡ ¡�pt9j:j1 "t$|!ƒ¡}*|# "d¡�p |% "d¡�p |*�p d%}+t7|%|#ƒ |+|%d< �q¦d&},t;| j	ƒ}-|-�s:| j�rgt<‡ fd'd(„|,d)d#fD ƒƒ�sgd*dd d+t=d, iiid-œˆ d |,< d.|v�rg| t>t?d/œ¡ | j@�rqt7ˆ | j@ƒ ˆ ||
 A¡ < q-|||fS )0NzMethods must be a listz.A response class is needed to generate OpenAPI)r–   r—   r¥   Trd   )rE   Úsecurity)r_   r`   ra   r^   c                 S   s   i | ]}|d  |d f|“qS )rm   rL   rJ   ©rK   r‰   rJ   rJ   rN   Ú
<dictcomp>.  s    ÿz$get_openapi_path.<locals>.<dictcomp>c                 S   s(   i | ]}|  d ¡r|d |d f|“qS )r6   rm   rL   )r­   r´   rJ   rJ   rN   rµ   1  s    ýÿrƒ   )r�   r`   ra   r^   ÚrequestBody©r–   r¥   r`   ra   r^   Ú	callbacksÚstatus_codeÚ	responsesro   ri   Ú
itemSchemarŽ   zapplication/jsonlÚdatar6   r*   zapplication/json)r)   ÚcontentMediaTypeÚcontentSchemar5   ztext/event-streamr)   rn   rR   rC   Údefaultz%An additional response must be a dictzAdditional ResponseÚ422c                 3   s   � | ]	}|ˆ d  v V  qdS )rº   NrJ   )rK   Ústatus©r¯   rJ   rN   Ú	<genexpr>È  s
   € 
ÿ
ÿz#get_openapi_path.<locals>.<genexpr>rA   zValidation Errorr:   r7   )ro   rŽ   r$   )r$   r7   )BÚmethodsr�   Úresponse_classr   r�   r�   rh   r²   r   r_   r]   Ú
setdefaultÚextendÚupdaterŒ   ÚlistÚvaluesr   r•   r�   r¸   r   ÚAPIRouteÚget_openapi_pathr   Ú_APIRouteLikerx   rL   r¹   ÚstrÚinspectÚ	signatureÚ__init__rƒ   r­   r¿   ÚintÚresponse_descriptionr    Úis_json_streamÚstream_item_fieldr   Úis_sse_streamÚcopyÚdeepcopyr   r   r"   Úresponse_fieldrº   r-   ÚpopÚupperÚdictÚresponse_fieldsr   rD   ÚhttpÚclientr   Úanyr   Úvalidation_error_definitionÚ$validation_error_response_definitionÚopenapi_extraÚlower).r–   r¥   r`   ra   r^   rx   Úsecurity_schemesÚdefinitionsÚcurrent_response_classÚroute_response_media_typer—   rƒ   rE   rV   r\   Úoperation_parametersÚall_parametersÚrequired_parametersr“   r¸   ÚcallbackÚcb_pathÚcb_security_schemesÚcb_definitionsr¹   Úresponse_signatureÚstatus_code_paramÚjsonl_contentÚitem_schemaÚsse_contentÚcontent_schemaÚresponse_schemaÚoperation_responsesÚadditional_status_codeÚadditional_responseÚprocess_responseÚstatus_code_keyÚopenapi_responserj   Úadditional_field_schemar�   Úadditional_schemaÚstatus_textro   Úhttp422Úall_route_paramsrJ   rÂ   rN   rÌ     s˜  

ÿ
ÿ
ü
ÿþ
ü

ûü€

þÿü
þÿ
þ
ü
ýþÿ
þüüÿ
ÿüý

ÿÿü

ý

ÿþÿþü


þÿÿþ
þÿ
rÌ   Úroute_contextc                 C   s   t | jtjƒrttj| ƒS d S )N)r�   Úoriginal_router   rË   r   rÍ   )r  rJ   rJ   rN   Ú_get_api_route_for_openapiá  s   r  Úroutesc           	      C   sÚ   g }g }g }g }t  | ¡D ]S}t|ƒ}|d u rq|jr`|jr.t|jtƒs(J dƒ‚| |j¡ |jr7| |j¡ |j	rB| 
|j	 ¡ ¡ |jrK| |j¡ |jrV| 
t|jƒ¡ t|jƒ}| 
|¡ q|t|| | ƒ }|S )Nz'A request body must be a Pydantic Field)r   Úiter_route_contextsr  rh   r�   r�   r   rU   rÙ   rÝ   rÇ   rÊ   rÕ   r¸   Úget_fields_from_routesr   r_   rÉ   )	r  Úbody_fields_from_routesÚresponses_from_routesÚrequest_fields_from_routesÚcallback_flat_modelsr  Ú	api_routeÚparamsÚflat_modelsrJ   rJ   rN   r  é  s:   ÿ

€
ÿr  z3.1.0)Úopenapi_versionr¢   ro   Úwebhooksr¦   ÚserversÚterms_of_serviceÚcontactÚlicense_infor^   Úexternal_docsÚversionr  r¢   ro   r  r¦   r  r  r  r  r  c                     s  | |dœ}|r||d< |r||d< |	r|	|d< |
r|
|d< |r#||d< ||dœ}|r.||d< i }i }i }t ƒ }tt|ƒt|p?g ƒ ƒ}t|t ƒ d	�}t|ƒ}t|||d
�\}‰ t |¡D ]8}t|ƒ}|d ur”t	|||||d�}|r”|\}}}|r‚| 
|ji ¡ |¡ |r�| 
di ¡ |¡ |r”ˆ  |¡ q\t |pšg ¡D ]8}t|ƒ}|d urÔt	|||||d�}|rÔ|\}}}|rÂ| 
|ji ¡ |¡ |rÍ| 
di ¡ |¡ |rÔˆ  |¡ qœˆ rä‡ fdd„tˆ ƒD ƒ|d< |rê||d< ||d< |rô||d< |rú||d< |�r||d< ttdi |¤Žddd�S )N)r,   r  r¢   ro   ÚtermsOfServicer  Úlicense)ÚopenapiÚinfor  )Úknown_models)Úfieldsr`   r^   r·   ÚsecuritySchemesc                    s   i | ]}|ˆ | “qS rJ   rJ   )rK   Úk©ræ   rJ   rN   rµ   _  s    zget_openapi.<locals>.<dictcomp>ÚschemasÚ
componentsÚpathsr  r¦   ÚexternalDocsTrG   rJ   )Úsetr  rÉ   r	   r
   r   r   r  r  rÌ   rÆ   rŸ   rÈ   Úsortedr   r   ) r,   r  r  r¢   ro   r  r  r¦   r  r  r  r  r^   r  r  Úoutputr!  r"  Úwebhook_pathsr¥   Ú
all_fieldsr  r`   ra   r  r  Úresultrx   rå   Úpath_definitionsÚwebhook_contextÚapi_webhookrJ   r  rN   Úget_openapi  s    


ýû
ÿ
€û
ÿ
€r-  )Pr×   Úhttp.clientrÞ   rÏ   rœ   Úcollections.abcr   Útypingr   r   r   Úfastapir   Úfastapi._compatr   r   r	   r
   r   r   Úfastapi.datastructuresr   r   Úfastapi.dependencies.modelsr   Úfastapi.dependencies.utilsr   r   r   r   Úfastapi.encodersr   Úfastapi.exceptionsr   Úfastapi.openapi.constantsr   r   Úfastapi.openapi.modelsr   Úfastapi.paramsr   r   Úfastapi.responsesr   Úfastapi.sser   Úfastapi.typesr   Úfastapi.utilsr   r   r    Úpydanticr!   Ústarlette.responsesr"   Ústarlette.routingr#   rá   râ   rD   rÜ   rÎ   Ú__annotations__ÚtuplerÉ   r]   ÚboolrŒ   r•   rÍ   r    r¤   r$  r²   rÌ   ÚRouteContextr  r  r-  rJ   rJ   rJ   rN   Ú<module>   sV  
  ý÷ò
ýÿýú
ÿ
þ!ùþýÿüù
øPùþýÿüù
ø#ÿÿ
þÿÿÿ

þ øþýüÿûø$	
÷ ^ÿ
þÿ
þ&ñþýüûúùø	÷
öõôóòñ
ð