
    wi]              !          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
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/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: 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z   idid+Z<d,d-d.d/d0d1d2Z=e>e?e?f         e@d3<   d4ed5eAe>e?ef         eBe>e?ef                  f         fd6ZCd7d8d9ed:e.d;e>eAee:d<         f         e>e?ef         f         d=eDd5eBe>e?ef                  f
d>ZEd7d8d?e	e         d:e.d;e>eAee:d<         f         e>e?ef         f         d=eDd5e	e>e?ef                  f
d@ZFdAejG        dBe?d5e?fdCZHdAejG        dBe?d5e?fdDZIdAejG        dBe?dEeJe?         d5e>e?ef         fdFZKd7d8dAejG        dEeJe?         d:e.d;e>eAee:d<         f         e>e?ef         f         d=eDd5eAe>e?ef         e>e?ef         e>e?ef         f         fdGZLdHee8         d5eBe         fdIZMdJddddddddd7ddKd!e?dLe?dMe?dNe	e?         dOe	e?         dHee8         dPe	ee8                  dQe	eBe>e?ef                           dRe	eBe>e?e
e?ef         f                           dSe	e?         dTe	e>e?e
e?ef         f                  dUe	e>e?e
e?ef         f                  d=eDdVe	e>e?ef                  d5e>e?ef         fdWZNdS )X    N)Sequence)AnyOptionalUnion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)LiteralValidationErrorobjectLocationarrayanyOftypestringinteger)titler+   itemsMessage)r.   r+   z
Error Typer.   InputContext)locmsgr+   inputctx)r3   r4   r+   )r.   r+   
propertiesrequiredHTTPValidationErrordetailDetail$ref)r.   r+   r7   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  rN   ).0namescopess      e/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/fastapi/openapi/utils.py
<listcomp>z4get_openapi_security_definitions.<locals>.<listcomp>f   s-       '4v      )_security_dependenciesr   _security_schememodelscheme_nameoauth_scopesappendr/   )rG   security_definitionsoperation_security_dictsecurity_dependencysecurity_definitionsecurity_namescopeoperation_securitys           rR    get_openapi_security_definitionsrb   R   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3rT   T)separate_input_output_schemas	dependantmodel_name_mapfield_mapping)
validationserializationrc   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fieldre   rf   rc   _-)rP   inr8   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   rP   replacevalueis_requiredru   r   r
   rZ   )rd   re   rf   rc   
parametersrG   rz   r{   r|   r}   parameter_groupsdefault_convert_underscoresfirst_field
param_typeparam_groupparamr   param_schemarP   rm   	parameterrv   rw   s                          rR   !_get_openapi_operation_parametersr   l   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 rT   
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 )Nro   r8   rt   rx   rw   content)
isinstancer	   r   r   r   r   
media_typer   rv   r   rw   r
   )
r   re   rf   rc   body_schemar   request_media_typer8   request_body_oairequest_media_contents
             rR   "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rT   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)rP   r~   r   )warningswarnr   operation_idpath_formatr    rP   )r   r   r~   s      rR   generate_operation_idr      s]     M>*	     "!!!D)uzVTTTTrT   c                 x    | j         r| j         S | j                            dd                                          S )Nrq    )summaryrP   r   r.   r   r   s     rR   generate_operation_summaryr      s8    } }:c3''--///rT   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   ru   zDuplicate Operation ID z for function __globals____file__z at rl   )r   operationIdry   )r   r   ru   r   	unique_idendpoint__name__r   getr   r   addry   )r   r   r   	operationr   r   	file_names          rR   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	,rT   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   Trj   )rG   security)rd   re   rf   rc   c                 0    i | ]}|d          |d         f|S )rs   rP   rN   rO   r   s     rR   
<dictcomp>z$get_openapi_path.<locals>.<dictcomp>1  s4     " " "<AU4[%-0%" " "rT   c                 Z    i | ](}|                     d           |d         |d         f|)S )r8   rs   rP   )r   r   s     rR   r   z$get_openapi_path.<locals>.<dictcomp>4  sI     ' ' 'yy,,'4[%-0%' ' 'rT   r   )r   re   rf   rc   requestBodyr   r   re   rf   rc   	callbacksstatus_code	responsesru   r+   r,   ro   r   rt   rW   rE   defaultz%An additional response must be a dictzapplication/jsonzAdditional Response422c              3   ,   K   | ]}|d          v V  dS )r   NrN   )rO   statusr   s     rR   	<genexpr>z#get_openapi_path.<locals>.<genexpr>  sI       B B )K00B B B B B BrT   rC   zValidation Errorr<   r9   )ru   r   r&   )r&   r9   )<methodsr   response_classr   r   r   rn   r   r   rd   rb   
setdefaultextendupdater   listvaluesr   r   r   r   r   APIRouteget_openapi_pathr~   rP   r   strinspect	signature__init__r   r   r   intresponse_descriptionr!   r   r#   response_fieldr   r   r/   copydeepcopypopupperdictresponse_fieldsr   rF   httpclientr   anyr   validation_error_definition$validation_error_response_definitionopenapi_extralower)+r   r   re   rf   rc   r~   security_schemesdefinitionscurrent_response_classroute_response_media_typer   r   rG   r[   ra   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_responserp   additional_field_schemar   additional_schemastatus_textru   http422all_route_paramsr   s+                                             @rR   r   r     s    D')"$K=$$&>$$$%&(:;; 6161E1K!&!5!SS#SSS!/E/P 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MEHL+ U2M"'+9*7:W	3 3 3/ &?%TBT
,77	2FF'Z
B77'Z"55 *
 )):<STTT1C1G1G23399;;2 2 2P.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  !;..rT   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 )Nrn   z'A request body must be a Pydantic Field)r   r   r   r   r   r	   rZ   r   r   r   r   r   get_fields_from_routesr   rd   r   )r  body_fields_from_routesresponses_from_routesrequest_fields_from_routescallback_flat_modelsr   paramsflat_modelss           rR   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 rT   z3.1.0)openapi_versionr   ru   webhooksr   serversterms_of_servicecontactlicense_inforc   external_docsversionr  r   ru   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   ru   termsOfServicer  license)openapiinfor  )known_models)fieldsre   rc   r   securitySchemesc                 "    i | ]}||         S rN   rN   )rO   kr   s     rR   r   zget_openapi.<locals>.<dictcomp>2  s     P P PqKN P P PrT   schemas
componentspathsr  r   externalDocsTrJ   rN   )setr  r   r   r   r   r   r   r   r   r   r   r   sortedr   r   )r.   r  r  r   ru   r  r  r   r  r  r  r  rc   r  r  outputr  r  webhook_pathsr   
all_fieldsr
  re   rf   r   resultr~   r   path_definitionswebhookr   s                                 @rR   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PrT   )Or   http.clientr   r   r   collections.abcr   typingr   r   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$   typing_extensionsr%   r   r   rF   r   r   __annotations__tupler   rb   boolr   r   r   r   r   r!  r   r   r  r)  rN   rT   rR   <module>rA     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` +/     $  !  j'"?@@A4S>Q	  $(  d38n       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 #!!%.2+/:>&*489=*..2\Q \Q \Q\Q \Q 	\Q
 c]\Q #\Q Y\Q x	*+\Q 4S#X'
(\Q d4U38_ 4567\Q sm\Q d3c3h/01\Q 4U38_ 456\Q $(\Q DcN+\Q  
#s(^!\Q \Q \Q \Q \Q \QrT   