
    ZiXf              !          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/ 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j                  dBe>d5e>fdCZGdAej                  dBe>d5e>fdDZHdAej                  dBe>dEeIe>   d5e=e>ef   fdFZJd7d8dAej                  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ZMy)X    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)_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                 v   i }i }| j                   D ]y  }t        |j                  j                  dd      }|j                  j                  }|||<   ||vrg ||<   |j
                  xs g D ]  }|||   vs||   j                  |         { |j                         D cg c]	  \  }}||i }	}}||	fS c c}}w )NTby_aliasexclude_none)_security_dependenciesr   _security_schememodelscheme_nameoauth_scopesappendr.   )
rF   security_definitionsoperation_security_dictsecurity_dependencysecurity_definitionsecurity_namescopenamescopesoperation_securitys
             Q/home/portmadness/app/.venv/lib/python3.12/site-packages/fastapi/openapi/utils.py get_openapi_security_definitionsr\   R   s     46-DD E.0066

 ,<<HH.A]+ 7757#M2(55; 	EE3MBB'6==eD	EE ,C+H+H+J'4v   !333s    B5T)separate_input_output_schemas	dependantmodel_name_mapfield_mapping)
validationserializationr]   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(  rJ|j                  d   }t        |j                  j                  t              rt!        |j                  dd      }|
D ]C  \  }}|D ]7  }|j                  }t!        |dd      st#        ||||      }t%        |      }t!        |j                  d|      }|t        j                  k(  r-||j&                  k(  r|r|j&                  j)                  dd	      }||j*                  |j                  j-                         |d
}|j.                  r|j.                  |d<   t!        |dd       }t!        |dd       }|rt1        |      |d<   n|t2        k7  rt1        |      |d<   t!        |dd       rd|d<   |j5                  |       : F |S )NTskip_repeats   r   convert_underscoresinclude_in_schemafieldr_   r`   r]   _-)rX   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   rX   replacevalueis_requiredro   r   r	   rQ   )r^   r_   r`   r]   
parametersrF   rt   ru   rv   rw   parameter_groupsdefault_convert_underscoresfirst_field
param_typeparam_groupparamr}   param_schemarX   rg   	parameterrp   rq   s                          r[   !_get_openapi_operation_parametersr   l   sY    J'	EN.~/I/IJK/0K0KLL01M1MNM01M1MNM	+&			<(			M*			M*	 #'
>''(A-$2215k44??K*1&&(=t+' $4 ))
K  (	)E))J:':DA6-+.K	L (.D")  %+# j///EJJ&'zz))#s3  &&!,,88:&	I %%+5+A+A	-(&z3EtLj)T:G(89I(J	*%I%'7'@	)$z<6*.	,'i(Q(	)))T     
body_fieldc                    | sy t        | t              sJ t        | |||      }t        t        | j
                        }|j                  }| j
                  j                         }i }|r||d<   d|i}	|j                  rt        |j                        |	d<   n+|j                  t        k7  rt        |j                        |	d<   ||	i|d<   |S )Nri   r7   rn   rr   rq   content)
isinstancer   r   r   r   r}   
media_typer   rp   r   rq   r	   )
r   r_   r`   r]   body_schemar}   request_media_typer7   request_body_oairequest_media_contents
             r[   "get_openapi_operation_request_bodyr      s     j*----%#&C	K dJ112J#..$$002H')'/$-5{,C"",<''-
j) 
		y	(+;J<N<N+Oi(#57L"MYr   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)rX   rx   r   )warningswarnr   operation_idpath_formatr    rX   )r   r   rx   s      r[   generate_operation_idr      sP     MM>*	 !!!!!D)uzzVTTr   c                     | j                   r| j                   S | j                  j                  dd      j                         S )Nrk    )summaryrX   r   r-   r   r   s     r[   generate_operation_summaryr      s3    }}}}::c3'--//r   operation_idsc                    i }| j                   r| j                   |d<   t        | |      |d<   | j                  r| j                  |d<   | j                  xs | j                  }||v red| d| j
                  j                   z   }t        | j
                  di       j                  d      }|r|d	| z  }t        j                  |d
       |j                  |       ||d<   | j                  r| j                  |d<   |S )Ntagsr   r   ro   zDuplicate Operation ID z for function __globals____file__z at rf   )r   operationIdrs   )r   r   ro   r   	unique_idendpoint__name__r   getr   r   addrs   )r   r   r   	operationr   r   	file_names          r[   get_openapi_operation_metadatar      s    !#Izz!JJ	&5E&QIi#(#4#4	- %%8L}$%l^>B(()+ 	 ENNM2>BB:N	i[))Gg!,l#+Im"'"2"2	,r   c           	        / i }i }i }| j                   J d       t        | j                  t              r| j                  j                  }n| j                  }|sJ d       |j
                  }	| j                  r}| j                   D ]m  }
t        | |
|      /g }t        | j                  d      }t        |      \  }}|r!/j                  dg       j                  |       |r|j                  |       t        | j                  |||      }|j                  |       |rn|D ci c]  }|d	   |d
   f| }}|D ci c]  }|j                  d      r|d	   |d
   f|  }}|j                  |       t!        |j#                               /d<   |
t$        v r t'        | j(                  |||      }|r|/d<   | j*                  rbi }| j*                  D ]L  }t        |t,        j.                        st1        |||||      \  }}}|j2                  |i||j4                  <   N |/d<   | j6                  t9        | j6                        }nkt;        j<                  |j>                        }|j@                  j                  d      }|/t        |jB                  tD              rt9        |jB                        }| jF                  /j                  di       j                  i       d<   tI        | j6                        r| jJ                  rii }| jL                  rtO        | jL                  |||      }||d<   ni |d<   |/j                  di       j                  |i       j                  di       d<   n| jP                  ri }tS        jT                  tV              }| jL                  r+tO        | jL                  |||      }dg|d<   dd|d|d   d<   ||d<   |/j                  di       j                  |i       j                  di       d<   n|	rddi} tY        |tZ              r(| j\                  rtO        | j\                  |||      } ni } | /j                  di       j                  |i       j                  di       j                  |	i       d<   | j^                  r/j                  di       }!| j^                  ja                         D ]  \  }"}#tS        jT                  |#      }$|$jc                  d d        t9        |"      je                         }%|%d!k(  rd"}%|!j                  |%i       }&t        |$tf              sJ d#       | jh                  j                  |"      }'d }(|'rStO        |'|||      }(|	xs d})|$j                  di       j                  |)i       j                  di       }*tk        |*|(       tl        j                  t9        |"      je                               xs2 tn        jp                  j^                  j                  tE        |"            }+|$j                  d      xs |&j                  d      xs |+xs d$},tk        |&|$       |,|&d<    d%}-ts        | j                        }.|.s| j(                  rOtu        /fd&|-d'd"fD              s8d(ddd)tv        d*z   iiid+/d   |-<   d,|vr|j                  tx        tz        d-       | j|                  rtk        /| j|                         /||
j                         <   p |||fS c c}w c c}w ).NzMethods must be a listz.A response class is needed to generate OpenAPI)r   r   r   Trd   )rF   security)r^   r_   r`   r]   rm   rX   r7   r   )r   r_   r`   r]   requestBodyr   r   r_   r`   r]   	callbacksstatus_code	responsesro   ri   
itemSchemar   zapplication/jsonldatar+   zapplication/json)r*   contentMediaTypecontentSchemar6   ztext/event-streamr*   rn   rN   rD   defaultz%An additional response must be a dictzAdditional Response422c              3   ,   K   | ]  }|d    v   yw)r   N ).0statusr   s     r[   	<genexpr>z#get_openapi_path.<locals>.<genexpr>  s%      B )K00Bs   rB   zValidation Errorr;   r8   )ro   r   r%   )r%   r8   )@methodsr   response_classr   r   r   rh   r   r   r^   r\   
setdefaultextendupdater   r   listvaluesr   r   r   r   r   APIRouteget_openapi_pathrx   rX   r   strinspect	signature__init__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)0r   r   r_   r`   r]   rx   security_schemesdefinitionscurrent_response_classroute_response_media_typer   r   rF   rR   rZ   operation_parametersr   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_paramsr   s0                                                  @r[   r   r     s    D')"$K==$>&>>$%&&(:;161E1E1K1K!&!5!5!S#SS!,B,M,Mmm D	-F6F-I 02J/dSN7W-84 "4 "$$Z4;;<NO# ''(<=#D//-+.K	$  23EO"<AU4[%-0%7" "
 ",'yy, 4[%-0%7'# ' %%&9:*.~/D/D/F*G	,'**#E$//#1"/2O	$  $/?Im,	 % LH!(G,<,<=
 -"**7+9*7:W	#/* 5=MM73K	(--0L *3	+&  ,!%"3"34 &-%6%67M7V7V%W"$6$A$A$E$Em$T!$0!"3";";SA&)*;*C*C&D **   b1<<["M /u/@/@A''46M..&A"'"9"9+9*7:W	' 7Bl368l3 HU ((b9DD#R jB/0CE ((24K"&--0A"BK..)D"'"9"9+9*7:W	* 4:(J/$,0B-;=L1&9
 1<K- HS ((b9DD#R jB/0CE /'-x&8O)*@,O //.I&+&:&:/=.;>[	/O /1O
 #2	 ((b9DD#R jB/

121	 
 &/&:&:;&K# __**,)B *''+}}5H'I$$(($7&)*@&A&G&G&IO&)3*3':'E'E'($ &&6= ?= "11556LMEEI+2M"'+9*7:W	3/ &?%TBT
,77	2F'Z
B7'Z"5 *
 )):<ST.@.D.D2399;/ /P..2237M3NO   ),,]; 1+//>1&1 1	   %%57GH6A$]3S)BT G.u? E$4$4c B&y9B ?
 $6*$vz<Q/Q&R- 3	+&w/ %K7&&/J3W "" E,?,?@#,D ID	-J !;..a"'s   &[<>#\routesc                    g }g }g }g }| D ]L  }t        |t        j                        s|j                  s,|j                  r<t        |j                  t
              sJ d       |j                  |j                         |j                  r|j                  |j                         |j                  r)|j                  |j                  j                                |j                  r|j                  |j                         |j                  r$|j                  t        |j                               t        |j                        }|j                  |       O |t!        ||z   |z         z   }|S )Nz'A request body must be a Pydantic Field)r   r   r   rh   r   r   rQ   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   paramsflat_modelss           r[   r  r    sK    13.035-/ 6%!1!12""!%"2"2J? =? (..u/?/?@##%,,U-A-AB$$%,,U-B-B-I-I-KL&&%,,U-D-DE$++,B5??,ST$U__5F&--f5%6( '"77:TT* K 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                    | |d}|r||d<   |r||d<   |	r|	|d<   |
r|
|d<   |r||d<   ||d}|r||d<   i }i }i }t               }t        t        |xs g       t        |xs g       z         }t        |t               	      }t	        |      }t        |||
      \  }}|xs g D ]  }t        |t        j                        st        |||||      }|s1|\  }}}|r+|j                  |j                  i       j                  |       |r!|j                  di       j                  |       |s|j                  |        |xs g D ]  }t        |t        j                        st        |||||      }|s1|\  }}}|r+|j                  |j                  i       j                  |       |r!|j                  di       j                  |       |s|j                  |        |r t        |      D ci c]  }|||   
 c}|d<   |r||d<   ||d<   |r||d<   |r||d<   |r||d<   t        t        di |dd      S c c}w )N)r-   r  r   ro   termsOfServicer  license)openapiinfor  )known_models)fieldsr_   r]   r   securitySchemesschemas
componentspathsr  r   externalDocsTrI   r   )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_   r`   r   r   resultrx   r   path_definitionswebhookks                                    r[   get_openapir,    s   " &+w?D!Y)]!1!Y&Y)8$GF#y,.J')E/1M!eM'V\r(:T(.b=Q(QRJ-jsuMK'4N!0%&C"M;
 2 9eW--.%+-+.KF ;A8&(8$$U%6%6;BB4H#))*;R@GG( $&&'78%9& >r 9gw//0%+-+.KF ;A8&(8!,,W-@-@"ELLTR#))*;R@GG( $&&'78%9& <B;<O PqKN!2 P
9)|F7O*zv!.~G-f-4PP !Qs   3H>)Nr   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.sser   fastapi.typesr   fastapi.utilsr   r    r!   pydanticr"   starlette.responsesr#   starlette.routingr$   r   r   rE   r   r   __annotations__tupler   r\   boolr   r   r   r   r   r#  r   r   r  r,  r   r   r[   <module>rD     s       $ % %    6 1  . 8 C * + & ) & 
  , '    2VY4GHI

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