
    o iZ              !          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 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% 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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/<   d0ed1eee@ef         eee@ef                  f         fd2ZBd3d4d5ed6e.d7eeee:d8         f         ef         d9eCd1eee@ef                  f
d:ZDd3d4d;ee         d6e.d7eeee:d8         f         ef         d9eCd1eee@ef                  f
d<ZEd=ejF        d>e@d1e@fd?ZGd=ejF        d>e@d1e@fd@ZHd=ejF        d>e@dAe
e@         d1ee@ef         fdBZId3d4d=ejF        dAe
e@         d6e.d7eeee:d8         f         ef         d9eCd1eee@ef         ee@ef         ee@ef         f         fdCZJdDe	e8         d1ee         fdEZKdFddddddddd3ddGdHe@dIe@dJe@dKee@         dLee@         dDe	e8         dMee	e8                  dNeeee@ef                           dOeeee@ee@ef         f                           dPee@         dQeee@ee@ef         f                  dReee@ee@ef         f                  d9eCdSeee@ef                  d1ee@ef         fdTZLdS )U    N)
AnyDictListOptionalSequenceSetTupleTypeUnioncast)routing)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)OpenAPI)Body
ParamTypes)Response)ModelNameMap)deep_dict_updategenerate_operation_id_for_pathis_body_allowed_for_status_code)	BaseModel)JSONResponse)	BaseRoute)Literal   )_is_model_field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         L/var/www/findabus/venv/lib/python3.11/site-packages/fastapi/openapi/utils.py get_openapi_security_definitionsrZ   N   s      . D P P. 06
 
 

 -<H.A]+!!=2F2M"NOOOO!333    T)separate_input_output_schemas	dependantmodel_name_mapfield_mapping)
validationserializationr\   c                 V   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    r=|j        d         }t          |j        t                    rt          |j        dd          }|
D ]4\  }}|D ]*}|j        }t          |dd          st#          ||||          }|j        }t          |j        d|          }|t          j	        k    r-|j        |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<   |                    |           ,6|S )NTskip_repeats   r   convert_underscoresinclude_in_schemafieldr^   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lenr   type_r%   getattr
field_infor   aliasrl   replacevaluer9   ro   r   r   rR   )r]   r^   r_   r\   
parametersrH   rt   ru   rv   rw   parameter_groupsdefault_convert_underscoresfirst_field
param_typeparam_groupparamr   param_schemarl   rf   	parameterrp   rq   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*	 #'
>'((A--$215k/;; 	*1&(=t+ +' $4 )) ))
K  (	) (	)E)J:':DAA 6-+.K	  L ;D") %+# # j///K5:--' . z))#s33  &!N&	 I % B+5+A	-(&z3EtLLj)T::G A(89I(J(J	*%%I%%'7'@'@	)$z<66 /*.	,'i((((Q(	)R r[   
body_fieldc                 Z   | sd S 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 )Nrh   r9   rn   rr   rq   content)r*   r   r   r   r   
media_typer9   rp   r   rq   r   )
r   r^   r_   r\   body_schemar   request_media_typer9   request_body_oairequest_media_contents
             rY   "get_openapi_operation_request_bodyr      s      t:&&&&&-%#&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 soonr)   
stacklevel)rl   rx   r   )warningswarnDeprecationWarningoperation_idpath_formatr#   rl   )r   r   rx   s      rY   generate_operation_idr      s]     M	>	     "!!!D)uzVTTTTr[   c                 x    | j         r| j         S | j                            dd                                          S )Nrj    )summaryrl   r   r3   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   ro   zDuplicate Operation ID z for function __globals____file__z at re   r   operationIdrs   )r   r   ro   r   	unique_idendpoint__name__r~   getr   r   addrs   )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        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 ]\  }}|+                                }|,                    dd            t7          |          -                                } | dk    rd} |                    | i           }!t          |t\                    s
J d            | j/                             |          }"d }#|"retQ          |"|||          }#|	pd}$|                    di                               |$i                               di           }%ta          |%|#           tb                               t7          |          -                                          p0td          j3        j)                             tE          |                    }&|                     d          p|!                     d          p|&pd}'ta          |!|           |'|!d<   d}(ti          | j	                  })|)s| j        r`tk          *fd|(d dfD                       sBd!ddd"tl          d#z   iiid$*d         |(<   d%|vr"|                    tn          tp          d&           | j9        rta          *| j9                   *||
:                                <   |||fS )'NzMethods must be a listz.A response class is needed to generate OpenAPI)r   r   r   Trc   )rH   security)r]   r^   r_   r\   c                 0    i | ]}|d          |d         f|S )rm   rl    .0r   s     rY   
<dictcomp>z$get_openapi_path.<locals>.<dictcomp>$  s4     " " "<AU4[%-0%" " "r[   c                 Z    i | ](}|                     d           |d         |d         f|)S )r9   rm   rl   )r   r   s     rY   r   z$get_openapi_path.<locals>.<dictcomp>'  sI     ' ' 'yy,,'4[%-0%' ' 'r[   r   )r   r^   r_   r\   requestBodyr   r   r^   r_   r\   	callbacksstatus_code	responsesro   r0   r1   rh   r   rn   rP   rF   defaultz%An additional response must be a dictzapplication/jsonzAdditional Response422c              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:   )ro   r   r+   )r+   r:   );methods
isinstanceresponse_classr   r   r   rg   r   r   r]   rZ   
setdefaultextendupdater   listvaluesr   r   r   r   r   APIRouteget_openapi_pathrx   rl   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   anyr   validation_error_definition$validation_error_response_definitionopenapi_extralower)+r   r   r^   r_   r\   rx   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_responseri   additional_field_schemar   additional_schemastatus_textro   http422all_route_paramsr   s+                                             @rY   r   r      s    D')"$K=$$&>$$$%&(:;; 6161E1K!&!5!S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 *'':'?'?'A'A$$(($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  !;..r[   routesc                    g }g }g }g }| D ]}t          |dd           rt          |t          j                  r|j        r8t          |j                  s
J d            |                    |j                   |j        r|                    |j                   |j        r,|	                    |j        
                                           |j        r'|	                    t          |j                             t          |j                  }|	                    |           |t          ||z   |z             z   }|S )Nrg   z'A request body must be a Pydantic Field)r~   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     sw    13.035-/ 6 65-t44 	67#:
 :
 	6  A&u'788  =   (..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   ro   webhooksr   serversterms_of_servicecontactlicense_infor\   external_docsr3   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          |pg           t          |pg           z             }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)r3   r  r   ro   termsOfServicer
  license)openapiinfor  )fieldsr^   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   externalDocsTrK   r   )setr   r   r   r   r   r   r   r   r   r   r   sortedr   r   )r3   r  r  r   ro   r   r  r   r  r	  r
  r  r\   r  r  outputr  r  webhook_pathsr   
all_fieldsr^   r_   r   resultrx   r   path_definitionswebhookr   s                                @rY   get_openapir#    sl   " &+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!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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   fastapi.datastructuresr   fastapi.dependencies.modelsr   fastapi.dependencies.utilsr   r   r   fastapi.encodersr   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(   _compatr*   r   r   rG   r   __annotations__rZ   boolr   r   r   r   r   r   r   r   r#  r   r[   rY   <module>r9     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         
 . - - - - - C C C C C C C C * * * * * * + + + + + + + + & & & & & & & & & & & &         
       , , , , , , ' ' ' ' ' ' % % % % % % % % % % % %    2VY4GHI
 

 #H55&99  '&&    #j+<<=
 

( 
( $ !& & DcN   44
4S>4S#X//04 4 4 40 +/F F FF !F j'"?@@A?R	F $(F 
$sCx.F F F F` +/     $  !  j'"?@@A?R	  $(  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'"?@@A?R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r[   