
    /h]              !          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j                  d=e@d/e@fd>ZGd<ej                  d=e@d/e@fd?ZHd<ej                  d=e@d@e
e@   d/ee@ef   fdAZId1d2d<ej                  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	e:   d/ee   fdDZKdEddddddddd1ddFdGe@dHe@dIe@dJee@   dKee@   dCe	e:   dLee	e:      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      d8eCdReee@ef      d/ee@ef   fdSZLy)T    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)	BaseModel)JSONResponse)	BaseRoute)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 ]\  }t        |j                  j                  dd      }|j                  j                  }|||<   |j                  ||j                  i       ^ ||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         V/var/www/html/axiom-chatbot/venv/lib/python3.12/site-packages/fastapi/openapi/utils.py get_openapi_security_definitionsrZ   M   s      . D D P. 0066

 -<<HH.A]+!!=2F2M2M"NOP  !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}t        |j                        dk(  r@|j                  d   }t        |j                  t              rt        |j                   dd      }|D ]A  \  }}|D ]5  }|j                   }t        |dd      st#        |||||      }|j$                  }t        |j                   d|      }|t        j                  k(  r7|j$                  |j&                  k(  r|r|j&                  j)                  dd	      }||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                  |       8 D |S )NTskip_repeats   r   convert_underscores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lenr   type_r'   getattr
field_infor   aliasrm   replacevaluer9   rp   r   r   rR   )r]   r^   r_   r`   r\   
parametersrH   ru   rv   rw   rx   parameter_groupsdefault_convert_underscoresfirst_field
param_typeparam_groupparamr   param_schemarm   rg   	parameterrq   rr   s                           rY   !_get_openapi_operation_parametersr   ^   sN    J'	EN.~/I/IJK/0K0KLL01M1MNM01M1MNM	+&			<(			M*			M*	 #'
>''(A-$2215k//;*1&&(=t+' $4 *)
K  )	)E))J:':DA6!1-+.KL ;;D")  %+# j///KK5::-'zz))#s3  &&!NN&	I %%+5+A+A	-(&z3EtLj)T:G(89I(J	*%I%'7'@	)$z<6*.	,'i(S)	)*)V r[   
body_fieldc                 |   | sy t        | t              sJ t        | ||||      }t        t        | 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   r9   ro   rs   rr   content)
isinstancer   r   r   r    r   
media_typer9   rq   r   rr   r   )r   r^   r_   r`   r\   body_schemar   request_media_typer9   request_body_oairequest_media_contents              rY   "get_openapi_operation_request_bodyr      s     j*----)%#&CK dJ112J#..""H')'/$-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   
stacklevel)rm   ry   r   )warningswarnDeprecationWarningoperation_idpath_formatr%   rm   )r   r   ry   s      rY   generate_operation_idr      sP     MM	>	 !!!!!D)uzzVTTr[   c                     | j                   r| j                   S | j                  j                  dd      j                         S )Nrk    )summaryrm   r   r3   r   r   s     rY   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   rp   zDuplicate Operation ID z for function __globals____file__z at rf   r   operationIdrt   )r   r   rp   r   	unique_idendpoint__name__r   getr   r   addrt   )r   r   r   	operationr   message	file_names          rY   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                  rn| j                   D ]^  }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*                  rci }| j*                  D ]M  }t        |t,        j.                        st1        ||||||      \  }}}|j2                  |i||j4                  <   O |,d<   | j6                  t9        | j6                        }nkt;        j<                  |	j>                        }|j@                  j                  d      }|/t        |jB                  tD              rt9        |jB                        }| jF                  ,j                  di       j                  i       d<   |
rtI        | j6                        rddi}tK        |	tL              r)| jN                  rtQ        | jN                  ||||      }ni }|,j                  di       j                  |i       j                  di       j                  |
i       d<   | jR                  r,j                  di       }| jR                  jU                         D ]  \  }} | jW                         }!|!jY                  dd        t9        |      j[                         }"|"dk(  rd}"|j                  |"i       }#t        |!t\              sJ d       | j^                  j                  |      }$d }%|$rTtQ        |$||||      }%|
xs d}&|!j                  di       j                  |&i       j                  di       }'ta        |'|%       tb        j                  t9        |      j[                               xs2 td        jf                  jR                  j                  tE        |            }(|!j                  d      xs |#j                  d      xs |(xs d})ta        |#|!       |)|#d<    d}*ti        | j                        }+|+s| j(                  rOtk        ,fd |*d!dfD              s8d"ddd#tl        d$z   iiid%,d   |*<   d&|vr|j                  tn        tp        d'       | jr                  rta        ,| jr                         ,||ju                         <   a |||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   )rH   security)r]   r^   r_   r`   r\   rn   rm   r9   r   )r   r^   r_   r`   r\   requestBodyr   r   r^   r_   r`   r\   	callbacksstatus_code	responsesrp   r0   r1   ri   r   ro   rP   rF   defaultz%An additional response must be a dictzapplication/jsonzAdditional Response422c              3   ,   K   | ]  }|d    v   yw)r   N ).0statusr   s     rY   	<genexpr>z#get_openapi_path.<locals>.<genexpr>  s%      B )K00Bs   rD   zValidation Errorr=   r:   )rp   r   r+   )r+   r:   );methodsr   response_classr   r   r   rh   r   r   r]   rZ   
setdefaultextendupdater   r   listvaluesr   r   r   r   r   APIRouteget_openapi_pathry   rm   r   strinspect	signature__init__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`   r\   ry   security_schemesdefinitionscurrent_response_classroute_response_media_typer   r   rH   rT   rU   operation_parametersr   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_responserj   additional_field_schemar   additional_schemastatus_textrp   http422all_route_paramsr   s-                                               @rY   r   r      s    D')"$K==$>&>>$%&&(:;161E1E1K1K!&!5!5!S#SS!/E/P/Pmm f	-F6F-I 02J/dSN7W-84 "4 "$$Z4;;<NO# ''(<=#D//!1-+.K$  23EO"<AU4[%-0%7" "
 ",'yy, 4[%-0%7'# ' %%&9:*.~/D/D/F*G	,'**#E$//%5#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 )-L!!. $*8"4%&<lK++*E"'"6"6-=+9*7:W+ +-
 $	 $$["5@@*Y+JJ7PRT,U
 &/&:&:;&K# __**,*B *'':'?'?'A$$(($7&)*@&A&G&G&IO&)3*3':'E'E'($ &&6= ?= "11556LMEHL+2M"'-=+9*7:W3/ &?%TBT
,77	2F'Z
B7'Z"5 *
 )):<ST1C1G1G2399;2 2P..2237M3NO   ),,]; 1+//>1&1 1	   %%57GH6A$]3U*BV G.u? E$4$4c B&y9B ?
 $6*$vz<Q/Q&R- 3	+&w/ %K7&&/J3W "" E,?,?@#,D Mf	-N !;..c"'s   'W-?#W2routesc                    g }g }g }g }| D ]&  }t        |dd       st        |t        j                        s-|j                  r<t        |j                  t
              sJ d       |j                  |j                         |j                  r|j                  |j                         |j                  r)|j                  |j                  j                                |j                  r$|j                  t        |j                               t        |j                        }|j                  |       ) |t        ||z   |z         z   }|S )Nrh   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     s3    13.035-/ 65-t47##:
 !%"2"2J? =? (..u/?/?@##%,,U-A-AB$$%,,U-B-B-I-I-KL$++,B5??,ST$U__5F&--f5!6$ '"77:TT* K r[   z3.1.0)openapi_versionr   rp   webhooksr   serversterms_of_servicecontactlicense_infor\   external_docsr3   versionr  r   rp   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2|\  }}}|r+|j                  |j                  i       j                  |       |r!|j                  di       j                  |       |s|j                  |        |xs g D ]  }t        |t        j                        st        ||||||      }|s2|\  }}}|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)r3   r  r   rp   termsOfServicer  license)openapiinfor  )ref_template)fieldsr^   r_   r\   r   securitySchemesschemas
componentspathsr  r   externalDocsTrK   r   )setr   r   r   r   r   r   r   r   r   r   r   r   r   sortedr   r   ) r3   r  r  r   rp   r   r  r   r  r  r  r	  r\   r
  r  outputr  r  webhook_pathsr   
all_fieldsr_   r^   r`   r   r   resultry   r   path_definitionswebhookks                                    rY   get_openapir!    s   " &+w?D!Y)]!1!Y&Y)8$GF#y,.J')E/1M!eM'V\r(:T(.b=Q(QRJ.z:N)|D!0)%&C	"M; 2 9eW--.%+!1-+.KF ;A8&(8$$U%6%6;BB4H#))*;R@GG( $&&'78'9( >r 9gw//0%+!1-+.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   1H<)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&   pydanticr'   starlette.responsesr(   starlette.routingr)   typing_extensionsr*   r   r   rG   r   __annotations__rZ   boolr   r   r   r   r   r   r   r   r!  r   r[   rY   <module>r6     s      U U U 	 	 	 6 1 
 . Q Q * + & & 
  , ' %    2VY4GHI

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