
     -Di#                     |   U d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	m
Z
mZ d dlm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mZ d dlmZ d d	lm Z  d d
l!m"Z" erddl#m$Z$  e       Z%ee&e   e&e   f   e'd<   de
e(e)df   de*fdZ+de)de,e)   fdZ-dZ.deedddddfde)dede	e/e)ef      de	e   de
e*ef   de
e&e   df   de	e    de	e)   de"d   d e"d!   defd"Z0dd#d$ed%e	ee&e   e&e   f      defd&Z1de)de)d'e)de)fd(Z2d)d*de)fd+Z3d,e/eef   d-e/eef   ddfd.Z4d/e
eef   d0e
eef   de
eef   fd1Z5y)2    N)MutableMapping)is_dataclass)TYPE_CHECKINGAnyOptionalUnioncast)WeakKeyDictionary)
PYDANTIC_V2
BaseConfig
ModelFieldPydanticSchemaGenerationError	UndefinedUndefinedType	Validatorannotation_is_pydantic_v1lenient_issubclassmay_v1)DefaultPlaceholderDefaultType)	BaseModel)	FieldInfo)Literal   )APIRoute_CLONED_TYPES_CACHEstatus_codereturnc                 @    | y| dv ryt        |       }|dk  xs |dv  S )NT>   1XX2XX3XX4XX5XXdefault   >   0        )int)r   current_status_codes     P/var/www/html/backtest/python_venv/lib/python3.12/site-packages/fastapi/utils.pyis_body_allowed_for_status_coder-   )   sA       k*#c)S-@O-STT    pathc                 @    t        t        j                  d|             S )Nz{(.*?)})setrefindall)r/   s    r,   get_path_param_namesr4   :   s    rzz)T*++r.   a  Invalid args for response field! Hint: check that {type_} is a valid Pydantic field type. If you are using a return type annotation that is not a valid Pydantic field (e.g. Union[Response, dict, None]) you can disable generating the response model from the type annotation with the path operation decorator parameter response_model=None. Read more: https://fastapi.tiangolo.com/tutorial/response-model/
validationautonametype_class_validatorsr%   requiredmodel_config
field_infoaliasmode)r5   serializationversion)1r6   c
           	          |xs i }t         j                  }
|xs t        j                         }| ||||||
|d}t        |      st	        |t         j                        s|	dk(  rddlm} 	  |j                  d
i |S t        r1ddlm} |xs t        |||      }|| |d	}	  |j                  d
i |S ddlm} 	  |j                  d
i |S # t        $ r5 t        j                  j                  t        j                  |            d w xY w# t"        $ r5 t        j                  j                  t        j                  |            d w xY w# t        $ r5 t        j                  j                  t        j                  |            d w xY w)N)r7   r<   r8   r9   r%   r:   r;   r=   rA   r   v1)r8   r   v2)
annotationr%   r=   )r>   r7   r<    )r   r   r   r   
isinstancefastapi._compatrD   r   RuntimeErrorfastapi
exceptionsFastAPIError_invalid_args_messageformatr   _compatrF   r   )r7   r8   r9   r%   r:   r;   r<   r=   r>   r@   v1_model_configv1_field_info	v1_kwargsrD   rF   kwargss                   r,   create_model_fieldrV   I   s    (-2''O4&"2"2"4M#,'	I 	"%(j&"2"23c>&	 2==-9--
 
 
9gU$

 JG	 2==*6** #r}})y))-  	$$11%,,5,9	 - 	$$11%,,5,9	    --!((u(5
	s$   +C "D ;E >D>E>Fcloned_typesfieldrX   c                6   t         rddlm} t        | |j                        r| S ddlm} |t        }| j                  }t        |      rt        |d      r|j                  }|}t        ||j                        rt        t        |j                     |      }|j!                  |      }|e|j#                  |j$                  |      }|||<   |j&                  j)                         D ]&  }t+        ||      |j&                  |j,                  <   ( t/        | j,                  |d	      }| j0                  |_        | j2                  |_        | j4                  |_        | j6                  |_        | j8                  |_        | j:                  |_        | j<                  |_        | j>                  |_        | j@                  |_         | jB                  |_!        | jD                  r*| jD                  D cg c]  }t+        ||       c}|_"        | jF                  rt+        | jF                  |      |_#        | jH                  |_$        | jJ                  |_%        | jL                  |_&        | jN                  |_'        | jP                  |_(        |jS                          |S c c}w )
Nr   rE   r   rC   __pydantic_model__)__base__rW   rA   )r7   r8   r@   )*r   rQ   rF   rI   r   rJ   rD   r   r8   r   hasattrr[   r   r   r	   typegetcreate_model__name__
__fields__valuescreate_cloned_fieldr7   rV   	has_aliasr=   r9   r%   default_factoryr:   r;   r<   
allow_nonevalidate_always
sub_fields	key_field
validatorspre_validatorspost_validators
parse_jsonshapepopulate_validators)	rY   rX   rF   rD   original_typeuse_typef	new_field	sub_fields	            r,   rd   rd      s6   
 eR]]+L" *KKMM"w}>R'S%88H-6T",,/?##M2}'='=VH*2L'"--446 .A!-/##AFF+
 #

(CPI//IkkIO!&!7!7II % 5 5II"//I ++I ++I % 5 5I #-- 
  	E 
	 1OO%
	 !++I$33I % 5 5I ++IkkIO!!# 
s   +Jmethodc                     t        j                  dt        d       |  | }t        j                  dd|      }| d|j                          }|S )Nzrfastapi.utils.generate_operation_id_for_path() was deprecated, it is not used internally, and will be removed soon   )
stacklevel\W_)warningswarnDeprecationWarningr2   sublower)r7   r/   rv   operation_ids       r,   generate_operation_id_for_pathr      sY     MM	>	 VD6?L66%l3L"^1V\\^$45Lr.   router   c                     | j                    | j                   }t        j                  dd|      }| j                  sJ | dt        | j                        d   j                          }|S )Nrz   r{   r   )r7   path_formatr2   r   methodslistr   )r   r   s     r,   generate_unique_idr      sg    jj\%"3"3!45L66%l3L==="^1T%--%8%;%A%A%C$DELr.   	main_dictupdate_dictc                    |j                         D ]z  \  }}|| v r3t        | |   t              r t        |t              rt        | |   |       =|| v r5t        | |   t              r"t        ||   t              r| |   ||   z   | |<   v|| |<   | y )N)itemsrI   dictdeep_dict_updater   )r   r   keyvalues       r,   r   r      s    !'') #
U99S>405$'Ys^U399S>40;s+T2&s^k#.>>IcN"IcN#r.   
first_itemextra_itemsc                 H    | f|z   }|D ]  }t        |t              r|c S  | S )z
    Pass items or `DefaultPlaceholder`s by descending priority.

    The first one to _not_ be a `DefaultPlaceholder` will be returned.

    Otherwise, the first item (a `DefaultPlaceholder`) will be returned.
    )rI   r   )r   r   r   items       r,   get_value_or_defaultr      s7     MK'E $ 23K r.   )6r2   r|   collections.abcr   dataclassesr   typingr   r   r   r   r	   weakrefr
   rL   rJ   r   r   r   r   r   r   r   r   r   r   fastapi.datastructuresr   r   pydanticr   pydantic.fieldsr   typing_extensionsr   routingr   r   r^   __annotations__r*   strboolr-   r1   r4   rO   r   rV   rd   r   r   r   r   rH   r.   r,   <module>r      s[   	  * $  &    C  % %!  ^DOT)_$DE 
UsC~1F U4 U",s ,s3x ,
<  8<&+426&*3?$*>
>> tCN34> c]	>
 D-'(> Z($./> #> C=> /
0> [!> >H PT<< >$y/4	?*JKL< 	<~%(j S #S#X #T#s(^ #PT #$(+56*K78 {*+r.   