
    Ej$i              !          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jL        d5ejF        dz  fdIZMdJee9ejL        z           d5eAe         fdKZNdLddddddddd7ddMd!e>dNe>dOe>dPe>dz  dQe>dz  dJee9ejL        z           dRee9ejL        z           dz  dSeAe=e>ef                  dz  dTeAe=e>e>ez  f                  dz  dUe>dz  dVe=e>e>ez  f         dz  dWe=e>e>ez  f         dz  d=eCdXe=e>ef         dz  d5e=e>ef         fdYZOdS )Z    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      O/wd/license_services/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           	      B  . 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        rli }| j        D ]]}t          |t*          j                  rAt/          t1          t*          j        |          ||||          \  }}}|j        |i||j        <   ^|.d<   | j        t;          | j                  }nct=          j        |j                   }|j!        "                    d          }|.t          |j#        tH                    rt;          |j#                  }| j%        .                    di                               |i           d<   tM          | j                  r| j'        roi }| j(        rtS          | j(        |||          }||d<   ni |d<   |.                    di                               |i                               di           d<   n/| j*        ri }tW          j,        tZ                    }| j(        r-tS          | j(        |||          }dg|d<   dd|d|d         d<   ||d<   |.                    di                               |i                               di           d<   n|	rddi}t]          |t^                    r"| j0        rtS          | j0        |||          }ni }|.                    di                               |i                               di                               |	i           d<   | j1        r.                    di           } | j1        2                                D ]\  }!}"tW          j,        |"          }#|#3                    d d            t;          |!          4                                }$|$d!k    rd"}$|                     |$i           }%t          |#tj                    s
J d#            | j6        "                    |!          }&d }'|&retS          |&|||          }'|	pd}(|#                    di                               |(i                               di           })to          |)|'           tp          "                    t;          |!          4                                          p0tr          j:        j1        "                    tI          |!                    }*|#"                    d          p|%"                    d          p|*pd$}+to          |%|#           |+|%d<   d%},tw          | j	                  }-|-s| j        r`ty          .fd&|,d'd"fD                       sBd(ddd)tz          d*z   iiid+.d         |,<   d,|vr"|                    t|          t~          d-           | j@        rto          .| j@                   .||
A                                <   |||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   )Bmethodsr   response_classr   r   r   rm   r   r   rc   ra   
setdefaultextendupdater   listvaluesr   r   r   r   r   APIRouteget_openapi_pathr   _APIRouteLiker}   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
 -"&w'<h"G"G*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   route_contextc                 x    t          | j        t          j                  rt	          t          j        |           S d S )N)r   original_router   r   r   r   )r  s    rQ   _get_api_route_for_openapir    s4     -.0@AA :G)=9994rS   routesc                    g }g }g }g }t          j        |           D ].}t          |          }||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                  }|
                    |           0|t#          ||z   |z             z   }|S )Nz'A request body must be a Pydantic Field)r   iter_route_contextsr  rm   r   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  	api_routeparamsflat_modelss	            rQ   r  r    s    13.035-/ 4V<< 6 6.}==	& 	6# E!)"6
CC  =   (..y/CDDD' G%,,Y-EFFF( Q%,,Y-F-M-M-O-OPPP* J%,,Y-HIII" Y$++,B9CV,W,WXXX$Y%899F&--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          |          t          |pg           z             }t          |t                      	          }t	          |          }t          |||
          \  } t          j        |          D ]}t          |          }|t          |||||          }|rx|\  }}}|r.|
                    |j        i                               |           |r)|
                    di                               |           |r                     |           t          j        |pg           D ]}t          |          }|t          |||||          }|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>_  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)  outputr0  r1  webhook_pathsr   
all_fieldsr  rd   re   r  r  resultr}   r   path_definitionswebhook_contextapi_webhookr   s!                                   @rQ   get_openapir<    s   " &+w??D "!Y *)] 2!1 "!Y '&Y)8$GGF $#y,.J')E/1M!eeM'VtHN7K7K(KLLJ-jsuuMMMK'44N!0%&C" " "M;
 !4V<< 9 9.}==	 %+-+.K  F  	9;A8&(8 M$$Y%:B??FFtLLL# ))*;R@@GG(   $ 9&&'7888"6x~2FF 9 90AA"%!+-+.K  F  	9;A8&(8 W!,,[-DbIIPPQUVVV# ))*;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   )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   rE   r   r   __annotations__tupler   ra   boolr   r   r   r   r   r3  r   r   RouteContextr  r  r<  rM   rS   rQ   <module>rU     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-0UU U U U0)> 0 0PS 0 0 0 0#-0ADS	#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'T!   Y!556	*   L #"BF(,15#'+/04*.+/^Q ^Q ^Q^Q ^Q 	^Q
 4Z^Q t^Q Y!556^Q y7#7784?^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   