
    if              !          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z   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d6ZBd7d8d9ed:e/d;e=e@ee	d<         f         e=e>ef         f         d=eCd5eAe=e>ef                  f
d>ZDd7d8d?edz  d:e/d;e=e@ee	d<         f         e=e>ef         f         d=eCd5e=e>ef         dz  f
d@ZEdAejF        dBe>d5e>fdCZGdAejF        dBe>d5e>fdDZHdAejF        dBe>dEeIe>         d5e=e>ef         fdFZJd7d8dAejF        dEeIe>         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dGZKdHee9         d5eAe         fdIZLdJddddddddd7ddKd!e>dLe>dMe>dNe>dz  dOe>dz  dHee9         dPee9         dz  dQeAe=e>ef                  dz  dReAe=e>e>ez  f                  dz  dSe>dz  dTe=e>e>ez  f         dz  dUe=e>e>ez  f         dz  d=eCdVe=e>ef         dz  d5e=e>ef         fdWZMdS )X    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)r2   r3   r*   )r-   r*   
propertiesrequiredHTTPValidationErrordetailDetail$ref)r-   r*   r6   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  rM   ).0namescopess      R/root/projects/qq-shell/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.   )rF   security_definitionsoperation_security_dictsecurity_dependencysecurity_definitionsecurity_namescopeoperation_securitys           rQ    get_openapi_security_definitionsra   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3rS   T)separate_input_output_schemas	dependantmodel_name_mapfield_mapping)
validationserializationrb   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 ]G\  }}|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          urt1          |          |d<   t!          |dd           rd|d<   |                    |           ?I|S )NTskip_repeats   r   convert_underscoresinclude_in_schemafieldrd   re   rb   _-)rO   inr7   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   rO   replacevalueis_requiredrt   r   r   rY   )rc   rd   re   rb   
parametersrF   ry   rz   r{   r|   parameter_groupsdefault_convert_underscoresfirst_field
param_typeparam_groupparamr   param_schemarO   rl   	parameterru   rv   s                          rQ   !_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	*%%&&'7'@'@	)$z<66 /*.	,'i((((Q(	)R rS   
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          urt          |j
                  |	d<   ||	i|d<   |S )Nrn   r7   rs   rw   rv   content)
isinstancer   r   r   r   r   
media_typer   ru   r   rv   r   )
r   rd   re   rb   body_schemar   request_media_typer7   request_body_oairequest_media_contents
             rQ   "get_openapi_operation_request_bodyr      s     tj*------%#&C	  K dJ122J#.$0022H') 0'/$-5{,C" P,<'-
 -
j)) 
	6	)	)+;J<N+O+Oi(#57L"MYrS   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)rO   r}   r   )warningswarnr   operation_idpath_formatr    rO   )r   r   r}   s      rQ   generate_operation_idr      s]     M>*	     "!!!D)uzVTTTTrS   c                 x    | j         r| j         S | j                            dd                                          S )Nrp    )summaryrO   r   r-   r   r   s     rQ   generate_operation_summaryr      s8    } }:c3''--///rS   operation_idsc                    i }| j         r
| j         |d<   t          | |          |d<   | j        r
| j        |d<   | j        p| j        }||v rgt          | j        dd          }d| d| }t          | j        d	i                               d
          }|r|d| z  }t          j	        |d           |
                    |           ||d<   | j        r
| j        |d<   |S )Ntagsr   r   rt   __name__z<unnamed_endpoint>zDuplicate Operation ID z for function __globals____file__z at rk   )r   operationIdrx   )r   r   rt   r   	unique_idr   endpointgetr   r   addrx   )r   r   r   	operationr   endpoint_namer   	file_names           rQ   get_openapi_operation_metadatar      s    !#Iz '!J	&5E&QQQIi 5#(#4	- %8L}$$
<PQQWLWWWWENM2>>BB:NN	 	*)i)))Gg!,,,,l###+Im 3"'"2	,rS   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<   tI          | j                  r| j%        roi }| j&        rtO          | j&        |||          }||d<   ni |d<   |.                    di                               |i                               di           d<   n/| j(        ri }tS          j*        tV                    }| j&        r-tO          | j&        |||          }dg|d<   dd|d|d         d<   ||d<   |.                    di                               |i                               di           d<   n|	rddi}tY          |tZ                    r"| j.        rtO          | j.        |||          }ni }|.                    di                               |i                               di                               |	i           d<   | j/        r.                    di           } | j/        0                                D ]\  }!}"tS          j*        |"          }#|#1                    d d            t7          |!          2                                }$|$d!k    rd"}$|                     |$i           }%t          |#tf                    s
J d#            | j4                             |!          }&d }'|&retO          |&|||          }'|	pd}(|#                    di                               |(i                               di           })tk          |)|'           tl                               t7          |!          2                                          p0tn          j8        j/                             tE          |!                    }*|#                     d          p|%                     d          p|*pd$}+tk          |%|#           |+|%d<   d%},ts          | j	                  }-|-s| j        r`tu          .fd&|,d'd"fD                       sBd(ddd)tv          d*z   iiid+.d         |,<   d,|vr"|                    tx          tz          d-           | j>        rtk          .| j>                   .||
?                                <   |||fS ).NzMethods must be a listz.A response class is needed to generate OpenAPI)r   r   r   Tri   )rF   security)rc   rd   re   rb   c                 0    i | ]}|d          |d         f|S )rr   rO   rM   rN   r   s     rQ   
<dictcomp>z$get_openapi_path.<locals>.<dictcomp>.  s4     " " "<AU4[%-0%" " "rS   c                 Z    i | ](}|                     d           |d         |d         f|)S )r7   rr   rO   )r   r   s     rQ   r   z$get_openapi_path.<locals>.<dictcomp>1  sI     ' ' 'yy,,'4[%-0%' ' 'rS   r   )r   rd   re   rb   requestBodyr   r   rd   re   rb   	callbacksstatus_code	responsesrt   rn   
itemSchemar   zapplication/jsonldatar7   r+   zapplication/json)r*   contentMediaTypecontentSchemar6   ztext/event-streamr*   rs   rV   rD   defaultz%An additional response must be a dictzAdditional Response422c              3   ,   K   | ]}|d          v V  dS )r   NrM   )rN   statusr   s     rQ   	<genexpr>z#get_openapi_path.<locals>.<genexpr>  sI       B B )K00B B B B B BrS   rB   zValidation Errorr;   r8   )rt   r   r%   )r%   r8   )@methodsr   response_classr   r   r   rm   r   r   rc   ra   
setdefaultextendupdater   listvaluesr   r   r   r   r   APIRouteget_openapi_pathr}   rO   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   rE   httpclientr   anyr   validation_error_definition$validation_error_response_definitionopenapi_extralower)/r   r   rd   re   rb   r}   security_schemesdefinitionscurrent_response_classroute_response_media_typer   r   rF   rZ   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_responsero   additional_field_schemar   additional_schemastatus_textrt   http422all_route_paramsr   s/                                                 @rQ   r   r     s	    D')"$K=$$&>$$$%&(:;; 6161E1K!&!5!SS#SSSS,B,M E-m D	- D	-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 /u/@AA 52' 3246M. 	9&A"'"9+9*7:W	' ' ' 7Bl3368l3 HU ((b99DD#R  jB//0CE E ( $224K"&-0A"B"BK. )D"'"9+9*7:W	* * * 4:(J/$,0B-;= =L1&9
 1<K- HS ((b99DD#R  jB//0CE E / 2'-x&8O)*@,OO 	1 / 1.I&+&:/=.;>[	/ / /OO /1O
 #2	 ((b99DD#R  jB//

121 1	 
  +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  !;..rS   routesc                    g }g }g }g }| D ]7}t          |t          j                  s|j        r|j        r>t          |j        t
                    s
J d            |                    |j                   |j        r|                    |j                   |j        r,|	                    |j        
                                           |j        r|                    |j                   |j        r'|	                    t          |j                             t          |j                  }|	                    |           9|t!          ||z   |z             z   }|S )Nz'A request body must be a Pydantic Field)r   r   r   rm   r   r   rY   r   r   r   r   r   r   get_fields_from_routesr   rc   r   )r  body_fields_from_routesresponses_from_routesrequest_fields_from_routescallback_flat_modelsr   paramsflat_modelss           rQ   r  r    s    13.035-/ 6 6%!122 	" 	6 A!%"2J??  =   (..u/?@@@# C%,,U-ABBB$ M%,,U-B-I-I-K-KLLL& F%,,U-DEEE U$++,B5?,S,STTT$U_55F&--f555&"77:TT* * K rS   z3.1.0)openapi_versionr   rt   webhooksr   serversterms_of_servicecontactlicense_inforb   external_docsversionr  r   rt   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   rt   termsOfServicer  license)openapiinfor  )known_models)fieldsrd   rb   r   securitySchemesc                 "    i | ]}||         S rM   rM   )rN   kr   s     rQ   r   zget_openapi.<locals>.<dictcomp>T  s     P P PqKN P P PrS   schemas
componentspathsr  r   externalDocsTrI   rM   )setr  r   r
   r   r	   r   r   r   r   r   r   r   sortedr   r   )r-   r  r  r   rt   r  r  r   r  r  r  r  rb   r  r"  outputr)  r*  webhook_pathsr   
all_fieldsr  rd   re   r   resultr}   r   path_definitionswebhookr   s                                 @rQ   get_openapir4    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PrS   )Nr   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   rE   r   r   __annotations__tupler   ra   boolr   r   r   r   r   r,  r   r   r  r4  rM   rS   rQ   <module>rL     s          $ $ $ $ $ $ % % % % % % % % % %                      > = = = = = = = 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(^   @ +/Z/ Z/ Z/Z/ s8Z/ !	Z/
 j'"?@@A4S>QZ/ $(Z/ 4S>4S>4S>9:Z/ Z/ Z/ Z/zY	*   J #"+/(,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rS   