
    Yj]              !          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mZ d dl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/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 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%Z8d&dd'd(dd)e$dz   idid*Z9d+d,d-d.d/d0d1Z:e;e<e<f         e=d2<   d3ed4e>e;e<ef         e?e;e<ef                  f         fd5Z@d6d7d8ed9e-d:e;e>ee	d;         f         e;e<ef         f         d<eAd4e?e;e<ef                  f
d=ZBd6d7d>edz  d9e-d:e;e>ee	d;         f         e;e<ef         f         d<eAd4e;e<ef         dz  f
d?ZCd@ejD        dAe<d4e<fdBZEd@ejD        dAe<d4e<fdCZFd@ejD        dAe<dDeGe<         d4e;e<ef         fdEZHd6d7d@ejD        dDeGe<         d9e-d:e;e>ee	d;         f         e;e<ef         f         d<eAd4e>e;e<ef         e;e<ef         e;e<ef         f         fdFZIdGee7         d4e?e         fdHZJdIddddddddd6ddJd e<dKe<dLe<dMe<dz  dNe<dz  dGee7         dOee7         dz  dPe?e;e<ef                  dz  dQe?e;e<e<ez  f                  dz  dRe<dz  dSe;e<e<ez  f         dz  dTe;e<e<ez  f         dz  d<eAdUe;e<ef         dz  d4e;e<ef         fdVZKdS )W    N)Sequence)AnyLiteralcast)routing)
ModelField	Undefinedget_definitionsget_flat_models_from_fieldsget_model_name_mapget_schema_from_model_fieldlenient_issubclass)DefaultPlaceholder)	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)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                 0   i }i }| j         D ]i}t          |j        j        dd          }|j        j        }|||<   ||vrg ||<   |j        pg D ]'}|||         vr||                             |           (jd |                                D             }||fS )NTby_aliasexclude_nonec                     g | ]	\  }}||i
S  rL   ).0namescopess      \/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/fastapi/openapi/utils.py
<listcomp>z4get_openapi_security_definitions.<locals>.<listcomp>e   s-       '4v      )_security_dependenciesr   _security_schememodelscheme_nameoauth_scopesappendr-   )rE   security_definitionsoperation_security_dictsecurity_dependencysecurity_definitionsecurity_namescopeoperation_securitys           rP    get_openapi_security_definitionsr`   Q   s     46-D E E.06
 
 

 ,<H.A]+ 77757#M2(5; 	E 	EE3MBBB'6==eDDD	E +B+H+H+J+J    !333rR   T)separate_input_output_schemas	dependantmodel_name_mapfield_mapping)
validationserializationra   c                    g }t          | 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    rB|j        d         }t          |j        j        t                    rt!          |j        dd          }|
D ]I\  }}|D ]?}|j        }t!          |dd          st#          ||||          }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t1          |          |d<   n|t2          k    rt1          |          |d<   t!          |dd           rd|d<   |                    |           AK|S )NTskip_repeats   r   convert_underscoresinclude_in_schemafieldrc   rd   ra   _-)rN   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   rN   replacevalueis_requiredrs   r   r	   rX   )rb   rc   rd   ra   
parametersrE   rx   ry   rz   r{   parameter_groupsdefault_convert_underscoresfirst_field
param_typeparam_groupparamr   param_schemarN   rk   	parameterrt   ru   s                          rP   !_get_openapi_operation_parametersr   k   s    J'	EEEN.~/IJJK/0KLLL01MNNM01MNNM	+&		<(		M*		M*	 #'
>'((A--$215k4?KK 	*1&(=t+ +' $4 )) ))
K  (	) (	)E)J:':DAA 6-+.K	  L (..D") %+# # j///EJ&&' ' z))#s33  &!,88::&	 I % B+5+A	-(&z3EtLLj)T::G A(89I(J(J	*%%I%%'7'@'@	)$z<66 /*.	,'i((((Q(	)R rR   
body_fieldc                    | sd S t          | t                    sJ t          | |||          }t          t          | j                  }|j        }| j                                        }i }|r||d<   d|i}	|j        rt          |j                  |	d<   n'|j
        t          k    rt          |j
                  |	d<   ||	i|d<   |S )Nrm   r6   rr   rv   ru   content)
isinstancer   r   r   r   r   
media_typer   rt   r   ru   r	   )
r   rc   rd   ra   body_schemar   request_media_typer6   request_body_oairequest_media_contents
             rP   "get_openapi_operation_request_bodyr      s     tj*------%#&C	  K dJ122J#.$0022H') 0'/$-5{,C" P,<'-
 -
j)) 
	y	(	(+;J<N+O+Oi(#57L"MYrR   routemethodc                     t          j        dt          d           | j        r| j        S | j        }t          | j        ||          S )Nzqfastapi.openapi.utils.generate_operation_id() was deprecated, it is not used internally, and will be removed soon   )messagecategory
stacklevel)rN   r|   r   )warningswarnr   operation_idpath_formatr   rN   )r   r   r|   s      rP   generate_operation_idr      s]     M>*	     "!!!D)uzVTTTTrR   c                 x    | j         r| j         S | j                            dd                                          S )Nro    )summaryrN   r   r,   r   r   s     rP   generate_operation_summaryr      s8    } }:c3''--///rR   operation_idsc                    i }| j         r
| j         |d<   t          | |          |d<   | j        r
| j        |d<   | j        p| j        }||v r]d| d| j        j         z   }t          | j        di                               d          }|r|d	| z  }t          j
        |d
           |                    |           ||d<   | j        r
| j        |d<   |S )Ntagsr   r   rs   zDuplicate Operation ID z for function __globals____file__z at rj   )r   operationIdrw   )r   r   rs   r   	unique_idendpoint__name__r   getr   r   addrw   )r   r   r   	operationr   r   	file_names          rP   get_openapi_operation_metadatar      s    !#Iz '!J	&5E&QQQIi 5#(#4	- %8L}$$BlBBB(*+ 	 ENM2>>BB:NN	 	*)i)))Gg!,,,,l###+Im 3"'"2	,rR   c           	        * i }i }i }| j         
J d            t          | j        t                    r| j        j        }n| j        }|s
J d            |j        }	| j        r| j         D ]}
t          | |
|          *g }t          | j	        d          }t          |          \  }}|r)*                    dg                               |           |r|                    |           t          | j	        |||          }|                    |           |rQd	 |D             }d
 |D             }|                    |           t          |                                          *d<   |
t"          v rt%          | j        |||          }|r|*d<   | j        rTi }| j        D ]E}t          |t*          j                  r)t/          |||||          \  }}}|j        |i||j        <   F|*d<   | j        t7          | j                  }nct9          j        |j                  }|j                             d          }|.t          |j!        tD                    rt7          |j!                  }| j#        *                    di                               |i           d<   |	rtI          | j                  rddi}tK          |tL                    r"| j'        rtQ          | j'        |||          }ni }|*                    di                               |i                               di                               |	i           d<   | j)        r*                    di           }| j)        *                                D ]\  }}tW          j,        |          }|-                    dd            t7          |          .                                } | dk    rd} |                    | i           }!t          |t^                    s
J d            | j0                             |          }"d }#|"retQ          |"|||          }#|	pd}$|                    di                               |$i                               di           }%tc          |%|#           td                               t7          |          .                                          p0tf          j4        j)                             tE          |                    }&|                     d          p|!                     d          p|&pd}'tc          |!|           |'|!d<   d}(tk          | j	                  })|)s| j        r`tm          *fd|(d dfD                       sBd!ddd"tn          d#z   iiid$*d         |(<   d%|vr"|                    tp          tr          d&           | j:        rtc          *| j:                   *||
;                                <   |||fS )'NzMethods must be a listz.A response class is needed to generate OpenAPI)r   r   r   Trh   )rE   security)rb   rc   rd   ra   c                 0    i | ]}|d          |d         f|S )rq   rN   rL   rM   r   s     rP   
<dictcomp>z$get_openapi_path.<locals>.<dictcomp>0  s4     " " "<AU4[%-0%" " "rR   c                 Z    i | ](}|                     d           |d         |d         f|)S )r6   rq   rN   )r   r   s     rP   r   z$get_openapi_path.<locals>.<dictcomp>3  sI     ' ' 'yy,,'4[%-0%' ' 'rR   r   )r   rc   rd   ra   requestBodyr   r   rc   rd   ra   	callbacksstatus_code	responsesrs   r)   r*   rm   r   rr   rU   rC   defaultz%An additional response must be a dictzapplication/jsonzAdditional Response422c              3   ,   K   | ]}|d          v V  dS )r   NrL   )rM   statusr   s     rP   	<genexpr>z#get_openapi_path.<locals>.<genexpr>  sI       B B )K00B B B B B BrR   rA   zValidation Errorr:   r7   )rs   r   r$   )r$   r7   )<methodsr   response_classr   r   r   rl   r   r   rb   r`   
setdefaultextendupdater   listvaluesr   r   r   r   r   APIRouteget_openapi_pathr|   rN   r   strinspect	signature__init__r   r   r   intresponse_descriptionr    r   r"   response_fieldr   r   r-   copydeepcopypopupperdictresponse_fieldsr   rD   httpclientr   anyr   validation_error_definition$validation_error_response_definitionopenapi_extralower)+r   r   rc   rd   ra   r|   security_schemesdefinitionscurrent_response_classroute_response_media_typer   r   rE   rY   r_   operation_parametersall_parametersrequired_parametersr   r   callbackcb_pathcb_security_schemescb_definitionsr   response_signaturestatus_code_paramresponse_schemaoperation_responsesadditional_status_codeadditional_responseprocess_responsestatus_code_keyopenapi_responsern   additional_field_schemar   additional_schemastatus_textrs   http422all_route_paramsr   s+                                             @rP   r   r     s    D')"$K=$$&>$$$%&(:;; 6161E1K!&!5!SS#SSS!,B,M b-m a	- a	-F6F-  I 02J/dSSSN7W-8 8 84 "4 " P$$Z44;;<NOOO# > ''(<===#D/-+.K	$ $ $  2333 H" "EO" " "' '!+' ' '# %%&9:::*.~/D/D/F/F*G*G	,'***#E$/#1"/2O	$ $ $  $ @/?Im, 3	 % L LH!(G,<== L
 -"**7+9*7:W  	#/* 5=M73K	(-0)2	+& ,!%"344 &-%67M7V%W%W"$6$A$E$Em$T$T!$0!"3";SAA E&)*;*C&D&D *   b11<<["MM ) $-L!. . $ $*8"4%&<lKK 	-+ -*E"'"6+9*7:W	+ + + +-
 $	 $$["55@@ *Y++JJ7PRT,U,U
  +B&/&:&:;&K&K# _**,,)B )B *''+}5H'I'I$$(($777&)*@&A&A&G&G&I&IO&)33*3':'E'E'( ($ &&6==  ? = "1556LMMEEI+ U2M"'+9*7:W	3 3 3/ &?%TBT
,77	2FF'Z
B77'Z"55 *
 )):<STTT.@.D.D23399;;/ / /P.2237M3N3NOO   ),,];; 1+//>>1&1 1	   %%57GHHH6A$]33G.u??  E$4 c B B B B&y9B B B ? ? 
 $6*$vz<Q/Q&R- 3 3	+&w/ %K77&&/J3W    " A E,?@@@#,D  !;..rR   routesc                    g }g }g }g }| D ]}t          |dd           r
t          |t          j                  r|j        r>t          |j        t
                    s
J d            |                    |j                   |j        r|                    |j                   |j        r,|	                    |j        
                                           |j        r'|	                    t          |j                             t          |j                  }|	                    |           !|t          ||z   |z             z   }|S )Nrl   z'A request body must be a Pydantic Field)r   r   r   r   r   r   rX   r   r   r   r   r   get_fields_from_routesr   rb   r   )r   body_fields_from_routesresponses_from_routesrequest_fields_from_routescallback_flat_modelsr   paramsflat_modelss           rP   r  r    sw    13.035-/ 6 65-t44 	67#:
 :
 	6  A!%"2J??  = ? (..u/?@@@# C%,,U-ABBB$ M%,,U-B-I-I-K-KLLL U$++,B5?,S,STTT$U_55F&--f555&"77:TT* * K rR   z3.1.0)openapi_versionr   rs   webhooksr   serversterms_of_servicecontactlicense_infora   external_docsversionr	  r   rs   r
  r   r  r  r  r  r  c                    | |d}|r||d<   |r||d<   |	r|	|d<   |
r|
|d<   |r||d<   ||d}|r||d<   i }i }i }t                      }t          t          |pg           t          |pg           z             }t          |t                      	          }t	          |          }t          |||
          \  }|pg D ]}t          |t          j                  rt          |||||          }|rx|\  }}}|r.|
                    |j        i                               |           |r)|
                    di                               |           |r                    |           |pg D ]}t          |t          j                  rt          |||||          }|rx|\  }}}|r.|
                    |j        i                               |           |r)|
                    di                               |           |r                    |           rfdt                    D             |d<   |r||d<   ||d<   |r||d<   |r||d<   |r||d<   t          t          di |dd          S )N)r,   r  r   rs   termsOfServicer  license)openapiinfor  )known_models)fieldsrc   ra   r   securitySchemesc                 "    i | ]}||         S rL   rL   )rM   kr   s     rP   r   zget_openapi.<locals>.<dictcomp>1  s     P P PqKN P P PrR   schemas
componentspathsr
  r   externalDocsTrH   rL   )setr  r   r   r   r
   r   r   r   r   r   r   r   sortedr   r   )r,   r  r	  r   rs   r   r
  r   r  r  r  r  ra   r  r  outputr  r  webhook_pathsr   
all_fieldsr  rc   rd   r   resultr|   r   path_definitionswebhookr   s                                 @rP   get_openapir'    s   " &+w??D "!Y *)] 2!1 "!Y '&Y)8$GGF $#y,.J')E/1M!eeM'V\r(:(:T(.b=Q=Q(QRRJ-jsuuMMMK'44N!0%&C" " "M;
 2 9 9eW-.. 	9%+-+.K  F  	9;A8&(8 I$$U%6;;BB4HHH# ))*;R@@GG(   $ 9&&'7888>r 9 9gw/00 	9%+-+.K  F  	9;A8&(8 S!,,W-@"EELLTRRR# ))*;R@@GG(   $ 9&&'7888 Q P P P PF;<O<O P P P
9 *)|F7O +*z v /!.~G--f--4PPPPrR   )Lr   http.clientr   r   r   collections.abcr   typingr   r   r   fastapir   fastapi._compatr   r	   r
   r   r   r   r   fastapi.datastructuresr   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.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   r  r'  rL   rR   rP   <module>r>     s          $ $ $ $ $ $ % % % % % % % % % %                        6 5 5 5 5 5 1 1 1 1 1 1            . - - - - - 8 8 8 8 8 8 C C C C C C C C * * * * * * + + + + + + + + & & & & & & & & & & & &         
       , , , , , , ' ' ' ' ' '    2VY4GHI
 

 #H55&997#"H55
 
 '&&  $ #j+<<=
 

( 
( $ !& & DcN   44
4S>4S#X//04 4 4 4B +/F F FF !F j'"?@@A4S>Q	F $(F 
$sCx.F F F F` +/     T!  !  j'"?@@A4S>Q	  $(  
#s(^d       FUU(+UU U U U0)9 03 03 0 0 0 0(+<?H	#s(^   D +/w/ w/ w/w/ s8w/ !	w/
 j'"?@@A4S>Qw/ $(w/ 4S>4S>4S>9:w/ w/ w/ w/tY	*   F #"+/(,15#'+/04*.+/\Q \Q \Q\Q \Q 	\Q
 4Z\Q t\Q Y\Q y!D(\Q tCH~

%\Q $sC#I~&'$.\Q Dj\Q #sSy.!D(\Q sC#I~&-\Q $(\Q S>D(\Q  
#s(^!\Q \Q \Q \Q \Q \QrR   