
    9CgZ                        U d dl Zd dlZd dlZd dlmZmZmZmZm	Z	m
Z
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mZ d dlm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' d d
l(m)Z) d dl*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< dddddddiddigidddd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)d*d+d,Z?ee@e@f         eAd-<   d.ed/eee@ef         eee@ef                  f         fd0ZBd1d2d3ed4ed5e0d6eeee<d7         f         ef         d8eCd/eee@ef                  fd9ZDd1d2d:ee         d4ed5e0d6eeee<d7         f         ef         d8eCd/eee@ef                  fd;ZEd<ejF        d=e@d/e@fd>ZGd<ejF        d=e@d/e@fd?ZHd<ejF        d=e@d@e
e@         d/ee@ef         fdAZId1d2d<ejF        d@e
e@         d4ed5e0d6eeee<d7         f         ef         d8eCd/eee@ef         ee@ef         ee@ef         f         fdBZJdCe	e8         d/ee         fdDZKdEddddddddd1dF
dGe@dHe@dIe@dJee@         dKee@         dCe	e8         dLee	e8                  dMeeee@ef                           dNeeee@ee@ef         f                           dOee@         dPeee@ee@ef         f                  dQeee@ee@ef         f                  d8eCd/ee@ef         fdRZLdS )S    N)
AnyDictListOptionalSequenceSetTupleTypeUnioncast)routing)GenerateJsonSchemaJsonSchemaValue
ModelField	Undefinedget_compat_model_name_mapget_definitionsget_schema_from_model_fieldlenient_issubclass)DefaultPlaceholder)	Dependant)_get_flat_fields_from_paramsget_flat_dependantget_flat_params)jsonable_encoder)METHODS_WITH_BODY
REF_PREFIXREF_TEMPLATE)OpenAPI)Body
ParamTypes)Response)ModelNameMap)deep_dict_updategenerate_operation_id_for_pathis_body_allowed_for_status_code)JSONResponse)	BaseRoute)HTTP_422_UNPROCESSABLE_ENTITY)LiteralValidationErrorobjectLocationarrayanyOftypestringinteger)titler0   itemsMessage)r3   r0   z
Error Type)locmsgr0   )r3   r0   
propertiesrequiredHTTPValidationErrordetailDetail$ref)r3   r0   r8   InformationSuccessRedirectionzClient ErrorzServer ErrorzDefault Response)1XX2XX3XX4XX5XXDEFAULTstatus_code_rangesflat_dependantreturnc                     i }g }| j         D ]K}t          |j        j        dd          }|j        j        }|||<   |                    ||j        i           L||fS )NTby_aliasexclude_none)security_requirementsr   security_schememodelscheme_nameappendscopes)rH   security_definitionsoperation_securitysecurity_requirementsecurity_definitionsecurity_names         G/var/www/api/venv/lib/python3.11/site-packages/fastapi/openapi/utils.py get_openapi_security_definitionsrZ   M   s      . D P P. 06
 
 

 -<H.A]+!!=2F2M"NOOOO!333    T)separate_input_output_schemas	dependantschema_generator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 ]\  }}|D ]}|j        }t          |dd          st          |||||          }|j        |j        |j        |d}|j        r
|j        |d<   t          |dd           }t          |dd           }|rt%          |          |d	<   n|t&          k    rt%          |          |d<   t          |d
d           rd|d
<   |                    |           ֌|S )NTskip_repeatsinclude_in_schemafieldr^   r_   r`   r\   )nameinr9   schemadescriptionopenapi_examplesexampleexamples
deprecated)r   r   path_paramsquery_paramsheader_paramscookie_paramsr!   pathqueryheadercookie
field_infogetattrr   aliasvaluer9   rl   r   r   rR   )r]   r^   r_   r`   r\   
parametersrH   rq   rr   rs   rt   parameter_groups
param_typeparam_groupparamry   param_schema	parameterrm   rn   s                       rY   !_get_openapi_operation_parametersr   ^   s    J'	EEEN.~/IJJK/0KLLL01MNNM01MNNM	+&		<(		M*		M*	 $4 ) )
K  	) 	)E)J:':DAA 6!1-+.K  L  &!N&	 I % B+5+A	-(&z3EtLLj)T::G A(89I(J(J	*%%I%%'7'@'@	)$z<66 /*.	,'i((((9	): r[   
body_fieldc                 h   | 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 )Nrg   r9   rk   ro   rn   content)
isinstancer   r   r   r    ry   
media_typer9   rm   r   rn   r   )r   r^   r_   r`   r\   body_schemary   request_media_typer9   request_body_oairequest_media_contents              rY   "get_openapi_operation_request_bodyr      s      tj*------)%#&C  K dJ122J#."H') 0'/$-5{,C" P,<'-
 -
j)) 
	y	(	(+;J<N+O+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   
stacklevel)ri   ru   r   )warningswarnDeprecationWarningoperation_idpath_formatr%   ri   )r   r   ru   s      rY   generate_operation_idr      s]     M	>	     "!!!D)uzVTTTTr[   c                 x    | j         r| j         S | j                            dd                                          S )N_ )summaryri   replacer3   r   r   s     rY   generate_operation_summaryr      s8    } }:c3''--///r[   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   rl   zDuplicate Operation ID z for function __globals____file__z at    r   operationIdrp   )r   r   rl   r   	unique_idendpoint__name__rz   getr   r   addrp   )r   r   r   	operationr   message	file_names          rY   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	,r[   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        rUi }| j        D ]F}t          |t*          j                  r*t/          ||||||          \  }}}|j        |i||j        <   G|+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 ]\  }}|+                                } | ,                    dd            t7          |          -                                }!|!dk    rd}!|                    |!i           }"t          | t\                    s
J d            | j/                             |          }#d }$|#rftQ          |#||||          }$|
pd}%|                     di                               |%i                               di           }&ta          |&|$           tb                               t7          |          -                                          p0td          j3        j)                             tE          |                    }'|                      d          p|"                     d          p|'pd}(ta          |"|            |(|"d<   t7          th                    })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ta          +| j:                   +||;                                <   |||fS )&NzMethods must be a listz.A response class is needed to generate OpenAPI)r   r   r   Trd   )rH   security)r]   r^   r_   r`   r\   c                 0    i | ]}|d          |d         f|S )rj   ri    .0r   s     rY   
<dictcomp>z$get_openapi_path.<locals>.<dictcomp>  s4     " " "<AU4[%-0%" " "r[   c                 Z    i | ](}|                     d           |d         |d         f|)S )r9   rj   ri   )r   r   s     rY   r   z$get_openapi_path.<locals>.<dictcomp>  sI     ' ' 'yy,,'4[%-0%' ' 'r[   r}   )r   r^   r_   r`   r\   requestBodyr   r   r^   r_   r`   r\   	callbacksstatus_code	responsesrl   r0   r1   rg   r   rk   rP   rF   defaultz%An additional response must be a dictzapplication/jsonzAdditional Responsec              3   ,   K   | ]}|d          v V  dS )r   Nr   )r   statusr   s     rY   	<genexpr>z#get_openapi_path.<locals>.<genexpr>  sI       B B )K00B B B B B Br[   rD   zValidation Errorr=   r:   )rl   r   r+   )r+   r:   )<methodsr   response_classr   r|   r   rf   r   r   r]   rZ   
setdefaultextendupdater   listvaluesr   r   r   r   r   APIRouteget_openapi_pathru   ri   r   strinspect	signature__init__r}   r   r   intresponse_descriptionr&   r   r'   response_fieldr   r   r4   copypopupperdictresponse_fieldsr$   rG   httpclientr)   r   anyr   validation_error_definition$validation_error_response_definitionopenapi_extralower),r   r   r^   r_   r`   r\   ru   security_schemesdefinitionscurrent_response_classroute_response_media_typer   r}   rH   rT   rU   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_responserh   additional_field_schemar   additional_schemastatus_textrl   http422all_route_paramsr   s,                                              @rY   r   r      s    D')"$K=$$&>$$$%&(:;; 6161E1K!&!5!SS#SSSS/E/P g-m f	- f	-F6F-  I 02J/dSSSN7W-8 8 84 "4 " P$$Z44;;<NOOO# > ''(<===#D/!1-+.K$ $ $  2333 H" "EO" " "' '!+' ' '# %%&9:::*.~/D/D/F/F*G*G	,'***#E$/%5#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 *'':'?'?'A'A$$(($777&)*@&A&A&G&G&I&IO&)33*3':'E'E'( ($ &($  ? ?>? ? ? "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788G.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  !;..r[   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 )Nrf   z'A request body must be a Pydantic Field)rz   r   r   r   r   r   rR   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           rY   r   r     s~    13.035-/ 6 65-t44 	67#:
 :
 	6  A!$j  = =<= = = (..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 r[   z3.1.0)
openapi_versionr   rl   webhooksr   serversterms_of_servicecontactlicense_infor\   r3   versionr  r   rl   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<   t          t!          di |dd          S )N)r3   r  r   rl   termsOfServicer  license)openapiinfor  )ref_template)fieldsr^   r_   r\   r   securitySchemesc                 "    i | ]}||         S r   r   )r   kr   s     rY   r   zget_openapi.<locals>.<dictcomp>  s     P P PqKN P P Pr[   schemas
componentspathsr  r   TrK   r   )setr   r   r   r   r   r   r   r   r   r   r   r   r   sortedr   r   )r3   r  r  r   rl   r   r  r   r  r  r  r  r\   r  outputr  r  webhook_pathsr   
all_fieldsr_   r^   r`   r   resultru   r   path_definitionswebhookr   s                                @rY   get_openapir    st     &+w??D "!Y *)] 2!1 "!Y '&Y)8$GGF $#y,.J')E/1M!eeM'V\r(:(:T(.b=Q=Q(QRRJ.z::N)|DDD!0)%&C	" " "M; 2 9 9eW-.. 	9%+!1-+.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%+!1-+.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Pr[   )Mhttp.clientr   r   r   typingr   r   r   r   r   r   r	   r
   r   r   fastapir   fastapi._compatr   r   r   r   r   r   r   r   fastapi.datastructuresr   fastapi.dependencies.modelsr   fastapi.dependencies.utilsr   r   r   fastapi.encodersr   fastapi.openapi.constantsr   r   r   fastapi.openapi.modelsr   fastapi.paramsr    r!   fastapi.responsesr"   fastapi.typesr#   fastapi.utilsr$   r%   r&   starlette.responsesr'   starlette.routingr(   starlette.statusr)   typing_extensionsr*   r   r   rG   r   __annotations__rZ   boolr   r   r   r   r   r   r   r   r  r   r[   rY   <module>r2     s          U U U U U U U U U U U U U U U U U U U U U U U U      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 6 5 5 5 5 5 1 1 1 1 1 1         
 . - - - - - Q Q Q Q Q Q Q Q Q Q * * * * * * + + + + + + + + & & & & & & & & & & & &         
 - , , , , , ' ' ' ' ' ' : : : : : : % % % % % %    2VY4GHI
 

 #H55&99  '&&    #j+<<=
 

( 
( $ !& & DcN   44
4S>4S#X//04 4 4 42 +/4 4 44 )4 !	4
 j'"?@@A?R4 $(4 
$sCx.4 4 4 4~ +/" " "$" )" !	"
 j'"?@@A?R" $(" d38n" " " "JUU(+UU U U U0)9 03 03 0 0 0 0(+<?H	#s(^   F +/}/ }/ }/}/ s8}/ )	}/
 !}/ j'"?@@A?R}/ $(}/ 4S>4S>4S>9:}/ }/ }/ }/@Y	*   F #!!%.2+/:>&*489=*.\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 
#s(^\Q \Q \Q \Q \Q \Qr[   