
    df                     x   U d dl Z d dl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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 d dlmZmZ d dlmZ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eeedddfde)dee   de	ee)ef      de	e   dee*ef   dee   de	e!   de	e)   de#d   defdZ-ddded e	eee   ee   f      defd!Z.de)de)d"e)de)fd#Z/d$d%de)fd&Z0d'eeef   d(eeef   ddfd)Z1d*eeef   d+eeef   deeef   fd,Z2d-e)defd.Z3y)/    N)is_dataclass)	TYPE_CHECKINGAnyDictMutableMappingOptionalSetTypeUnioncast)WeakKeyDictionary)PYDANTIC_V2
BaseConfig
ModelFieldPydanticSchemaGenerationError	UndefinedUndefinedType	Validatorlenient_issubclass)DefaultPlaceholderDefaultType)	BaseModelcreate_model)	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     F/home/api-vastappli/venv/lib/python3.12/site-packages/fastapi/utils.pyis_body_allowed_for_status_coder.   *   sA       k*#c)N-@J-NOO    pathc                 @    t        t        j                  d|             S )Nz{(.*?)})setrefindall)r0   s    r-   get_path_param_namesr5   ;   s    rzz)T*++r/   
validationnametype_class_validatorsr'   requiredmodel_config
field_infoaliasmode)r6   serializationc	           	      P   |xs i }t         r|xs t        |||      }n|xs
 t               }| |d}	t         r|	j                  d|i       n|	j                  ||||||d       	 t        di |	S # t        t
        f$ r% t        j                  j                  d| d      dw xY w)	zB
    Create a new response field. Raises if type_ is invalid.
    )
annotationr'   r=   )r7   r<   r>   )r8   r9   r'   r:   r;   r=   z2Invalid args for response field! Hint: check that aY   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/N )	r   r   updater   RuntimeErrorr   fastapi
exceptionsFastAPIError)
r7   r8   r9   r'   r:   r;   r<   r=   r>   kwargss
             r-   create_response_fieldrI   ?   s     (-2 
9gU$

  .9;
*5Fvtn%$4"$ ,		
#F##78 	  -- !DD
 		s   &
A1 14B%cloned_typesfieldrK   c                   t         r| S |t        }| j                  }t        |      rt	        |d      r|j
                  }|}t        |t              rt        t        t           |      }|j                  |      }|_t        |j                  |      }|||<   |j                  j                         D ]&  }t        ||      |j                  |j                   <   ( t#        | j                   |      }| j$                  |_        | j&                  |_        | j(                  |_        | j*                  |_        | j,                  |_        | j.                  |_        | j0                  |_        | j2                  |_        | j4                  |_        | j6                  r*| j6                  D cg c]  }t        ||       c}|_        | j8                  rt        | j8                  |      |_        | j:                  |_        | j<                  |_        | j>                  |_        | j@                  |_         | jB                  |_!        |jE                          |S c c}w )N__pydantic_model__)__base__rJ   )r7   r8   )#r   r   r8   r   hasattrrN   r   r   r   r
   getr   __name__
__fields__valuescreate_cloned_fieldr7   rI   	has_aliasr=   r9   r'   r:   r;   r<   
allow_nonevalidate_always
sub_fields	key_field
validatorspre_validatorspost_validators
parse_jsonshapepopulate_validators)rL   rK   original_typeuse_typef	new_field	sub_fields          r-   rU   rU   p   s   
  *KKMM"w}>R'S%88H-3T)_m<##M2#M$:$:]SH*2L'"--446 .AL/##AFF+ &5::XFI//IkkIO!&!7!7III"//I ++I ++I % 5 5I #-- 
  	E 
	 1OO,
	 !++I$33I % 5 5I ++IkkIO!!# 
s   %Imethodc                     t        j                  dt        d       | |z   }t        j                  dd|      }|dz   |j                         z   }|S )Nzrfastapi.utils.generate_operation_id_for_path() was deprecated, it is not used internally, and will be removed soon   )
stacklevel\W_)warningswarnDeprecationWarningr3   sublower)r7   r0   rf   operation_ids       r-   generate_operation_id_for_pathrr      sS     MM	>	 $;L66%l3L#%6Lr/   router   c                     | j                   | j                  z   }t        j                  dd|      }| j                  sJ |dz   t        | j                        d   j                         z   }|S )Nrj   rk   r   )r7   path_formatr3   ro   methodslistrp   )rs   rq   s     r-   generate_unique_idrx      s^    :: 1 11L66%l3L==#%U]](;A(>(D(D(FFL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)items
isinstancedictdeep_dict_updaterw   )ry   rz   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.
    )r}   r   )r   r   r|   items       r-   get_value_or_defaultr      s7     MK'E $ 23K r/   
error_typec                 &    ddl m}  |d|        S )Nr   )IsStrz$^https://errors\.pydantic\.dev/.*/v/)regex)dirty_equalsr   )r   r   s     r-   match_pydantic_error_urlr      s    ">zlKLLr/   )4r3   rl   dataclassesr   typingr   r   r   r   r   r	   r
   r   r   weakrefr   rE   fastapi._compatr   r   r   r   r   r   r   r   fastapi.datastructuresr   r   pydanticr   r   pydantic.fieldsr   typing_extensionsr   routingr   r   __annotations__r+   strboolr.   r5   rI   rU   rr   rx   r   r   r   rB   r/   r-   <module>r      sT   	  $
 
 
 & 	 	 	 C , % %!
  ^OT)_$ 
PsC~1F P4 P",s ,s3x , 8<&+4%/&*3?.
.9. tCN34. c]	.
 D-'(. z". #. C=. /
0. .h PT33 >$y/4	?*JKL3 	3l%(j S #S#X #T#s(^ #PT #$(+56*K78 {*+$M M Mr/   