
    +DCfW                        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  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/ d dl0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 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   e@d-<   d.ed/eee?ef   eee?ef      f   fd0ZAd1d2d3e	e   d4ed5e/d6eeee;d7   f   ef   d8eBd/eee?ef      fd9ZCd1d2d:ee   d4ed5e/d6eeee;d7   f   ef   d8eBd/eee?ef      fd;ZDd<ej                  d=e?d/e?fd>ZFd<ej                  d=e?d/e?fd?ZGd<ej                  d=e?d@e
e?   d/ee?ef   fdAZHd1d2d<ej                  d@e
e?   d4ed5e/d6eeee;d7   f   ef   d8eBd/eee?ef   ee?ef   ee?ef   f   fdBZIdCe	e7   d/ee   fdDZJdEddddddddd1dF
dGe?dHe?dIe?dJee?   dKee?   dCe	e7   dLee	e7      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      d8eBd/ee?ef   fdRZKy)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_dependantget_flat_params)jsonable_encoder)METHODS_WITH_BODY
REF_PREFIXREF_TEMPLATE)OpenAPI)BodyParam)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)titler/   itemsMessage)r2   r/   z
Error Type)locmsgr/   )r2   r/   
propertiesrequiredHTTPValidationErrordetailDetail$ref)r2   r/   r7   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)rG   security_definitionsoperation_securitysecurity_requirementsecurity_definitionsecurity_names         U/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/fastapi/openapi/utils.py get_openapi_security_definitionsrY   I   s      . D D P. 0066

 -<<HH.A]+!!=2F2M2M"NOP  !333    T)separate_input_output_schemasall_route_paramsschema_generatormodel_name_mapfield_mapping)
validationserializationr[   c                    g }| D ]  }|j                   }t        t        |      }|j                  s,t	        |||||      }|j
                  |j                  j                  |j                  |d}	|j                  r|j                  |	d<   |j                  rt        |j                        |	d<   n+|j                  t        k7  rt        |j                        |	d<   |j                  rd|	d<   |j                  |	        |S )Nfieldr]   r^   r_   r[   )nameinr8   schemadescriptionexamplesexampleT
deprecated)
field_infor   r    include_in_schemar   aliasin_valuer8   rh   openapi_examplesr   rj   r   rk   rQ   )
r\   r]   r^   r_   r[   
parametersparamrl   param_schema	parameters
             rX    get_openapi_operation_parametersrv   Z   s     J! %%%
%,
++2-)'*G
 KK..&&"	
	 !!'1'='=Im$&&$4Z5P5P$QIj!9,#3J4F4F#GIi   &*Il#)$5%6 rZ   
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 )Nrc   r8   rg   ri   rj   content)
isinstancer   r   r   r   rl   
media_typer8   rq   r   rj   r   )rw   r]   r^   r_   r[   body_schemarl   request_media_typer8   request_body_oairequest_media_contents              rX   "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rZ   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)re   pathr   )warningswarnDeprecationWarningoperation_idpath_formatr$   re   )r   r   r   s      rX   generate_operation_idr      sP     MM	>	 !!!!!D)uzzVTTrZ   c                     | j                   r| j                   S | j                  j                  dd      j                         S )N_ )summaryre   replacer2   r   r   s     rX   generate_operation_summaryr      s3    }}}}::c3'--//rZ   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   rh   zDuplicate Operation ID z for function __globals____file__z at    r   operationIdrk   )r   r   rh   r   	unique_idendpoint__name__getattrgetr   r   addrk   )r   r   r   	operationr   message	file_names          rX   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	,rZ   c           
        , i }i }i }| j                   J d       t        | j                  t              r| j                  j                  }	n| j                  }	|	sJ d       |	j
                  }
| j                  rq| j                   D ]a  }t        | ||      ,g }t        | j                  d      }t        |      \  }}|r!,j                  dg       j                  |       |r|j                  |       t        | j                        }t        |||||      }|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.        j0                        st3        ||||||      \  }}}|j4                  |i||j6                  <   O |,d<   | j8                  t;        | j8                        }nkt=        j>                  |	j@                        }|jB                  j!                  d      }|/t        |jD                  tF              rt;        |jD                        }| jH                  ,j                  di       j                  i       d<   |
rtK        | j8                        rddi}tM        |	tN              r)| jP                  rtS        | jP                  ||||      }ni }|,j                  di       j                  |i       j                  di       j                  |
i       d<   | jT                  r,j                  di       }| jT                  jW                         D ]  \  } }!|!jY                         }"|"j[                  dd        t;        |       j]                         }#|#dk(  rd}#|j                  |#i       }$t        |"t^              sJ d       | j`                  j!                  |       }%d }&|%rTtS        |%||||      }&|
xs d}'|"j                  di       j                  |'i       j                  di       }(tc        |(|&       td        j!                  t;        |       j]                               xs2 tf        jh                  jT                  j!                  tG        |             })|"j!                  d      xs |$j!                  d      xs |)xs d}*tc        |$|"       |*|$d<    t;        tj              }+|s| j*                  rOtm        ,fd|+d dfD              s8d!ddd"tn        d#z   iiid$,d   |+<   d%|vr|j                  tp        tr        d&       | jt                  rtc        ,| jt                         ,||jw                         <   d |||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   T)skip_repeats)rG   security)r\   r]   r^   r_   r[   rf   re   r8   rr   )rw   r]   r^   r_   r[   requestBodyr   r   r]   r^   r_   r[   	callbacksstatus_code	responsesrh   r/   r0   rc   ry   rg   rO   rE   defaultz%An additional response must be a dictzapplication/jsonzAdditional Responsec              3   ,   K   | ]  }|d    v   yw)r   N ).0statusr   s     rX   	<genexpr>z#get_openapi_path.<locals>.<genexpr>~  s%      B )K00Bs   rC   zValidation Errorr<   r9   )rh   ry   r*   )r*   r9   )<methodsrz   response_classr   rp   r{   rm   r   r   	dependantrY   
setdefaultextendupdater   rv   r   listvaluesr   r   rw   r   r   APIRouteget_openapi_pathr   re   r   strinspect	signature__init__rr   r   intresponse_descriptionr%   r   r&   response_fieldr   r   r3   copypopupperdictresponse_fieldsr#   rF   httpclientr(   anyr   validation_error_definition$validation_error_response_definitionopenapi_extralower)-r   r   r]   r^   r_   r[   r   security_schemesdefinitionscurrent_response_classroute_response_media_typer   rr   rG   rS   rT   r\   operation_parametersrs   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_responserd   additional_field_schemar{   additional_schemastatus_textrh   http422r   s-                                               @rX   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# ''(<=.u?#C!1!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'($ &($ ?>?  "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 78G E$4$4c B&y9B ?
 $6*$vz<Q/Q&R- 3	+&w/ %K7&&/J3W "" E,?,?@#,D Mf	-N !;..a"'s   2W0
#W5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 )Nrm   z'A request body must be a Pydantic Field)r   rz   r   r   rw   r   rQ   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           rX   r   r     s8    13.035-/ 65-t47##:
 !$$j =<=  (..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 rZ   z3.1.0)
openapi_versionr   rh   webhooksr   serversterms_of_servicecontactlicense_infor[   r2   versionr   r   rh   r   r   r   r   r   r   c           	      t   | |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<   t        t!        di |dd      S c c}w )N)r2   r   r   rh   termsOfServicer   license)openapiinfor   )ref_template)fieldsr]   r^   r[   r   securitySchemesschemas
componentspathsr   r   TrJ   r   )setr   r   r   r   r   r   rz   r   r   r   r   r   r   sortedr   r   )r2   r   r   r   rh   r   r   r   r   r   r   r   r[   r   outputr  r  webhook_pathsr   
all_fieldsr^   r]   r_   r   r   resultr   r   path_definitionswebhookks                                  rX   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H5)L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   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   rF   r   __annotations__rY   boolrv   r   r   r   r   r   r   r   r  r   rZ   rX   <module>r"     s      U U U 	 	 	 6 1 J - Q Q * & & & 
 - ' : %    2VY4GHI

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