
    iB                     `   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 d dl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mZ d d	lmZ d d
lmZmZmZ d dl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% d dl&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z. d dl,m/Z/ d dl0m1Z1 d dl0m2Z2 d dl0m3Z3 d dl4m5Z5 e2Z6e2Z7e)Z8 G d de.          Z-i ddddddddddd dd!dd"dd#dd$dd%dd&dd'dd(dd)dd*dd+dd,dddd-Z9d.e+d/e:e;ef         fd0Z<e G d1 d2                      Z=d3e=d/e>fd4Z?d,d5d3e=d6ed7e:e@e=ed8         f         e/f         d9e>d/e:e;ef         f
d:ZAd,d5d;ee=         d6ed9e>d/e@e:e@e=ed8         f         e/f         e:e;e:e;ef         f         f         fd<ZBd3e=d/e>fd=ZCd.e+d>ed/e+fd?ZDd3e=d@ed/ee         fdAZEdBe@eFe;z  df         d/e:e;ef         fdCZGd;ee=         dDe;d/eHe         fdEZIdFeHe         d/eJe=         fdGZKedFeHe         d/eJe=         fdH            ZLeHdI         eHe	         z  ZMeNeM         ZOdJe;d/e;fdKZPdLeOd/e:eMe;f         fdMZQ	 dVdFeHdI         dNeOdz  d/eOfdOZRd>edNeOd/eOfdPZSd3e=dNeOd/eOfdQZTd;ee=         dNeOd/eOfdRZUdSee         dTe@e;eFz  df         d/eJe:e;ef                  fdUZVdS )W    N)Sequence)copy)	dataclassis_dataclass)Enum)	lru_cache)	AnnotatedAnyLiteralUnioncastget_args
get_origin)lenient_issubclassshared)REF_TEMPLATE)IncExModelNameMap	UnionType)	BaseModel
ConfigDictFieldTypeAdaptercreate_model)PydanticSchemaGenerationError)PydanticUndefinedAnnotation)ValidationError)GetJsonSchemaHandler)eval_type_lenient)	FieldInfo)GenerateJsonSchema)JsonSchemaValue)
CoreSchema)PydanticUndefined)Url)"with_info_plain_validator_functionc                       e Zd ZdedefdZdS )r!   schemareturnc                     ddd}| j         dk    r| j        j        n| j        j        }|dk    rd|d<   |                     ||| j        j                   |S )Nstringzapplication/octet-stream)typecontentMediaTypeserializationbase64contentEncoding)mode_configser_json_bytesval_json_bytesupdate_with_validationsValidationsMappingbytes)selfr(   json_schema
bytes_modes       O/root/projects/qq-shell/venv/lib/python3.11/site-packages/fastapi/_compat/v2.pybytes_schemazGenerateJsonSchema.bytes_schema/   su    '=WXX yO++ L'', 	
 !!-5K)*$$[&$:Q:WXXX    N)__name__
__module____qualname__r#   r"   r<    r=   r;   r!   r!   ,   s6        
: 
/ 
 
 
 
 
 
r=   r!   default.default_factoryaliasalias_priorityvalidation_aliasserialization_aliastitlefield_title_generatordescriptionexamplesexclude
exclude_ifdiscriminator
deprecatedjson_schema_extrafrozenvalidate_defaultT)reprinitinit_varkw_only
field_infor)   c                     i }t           D ]&}t          | |t                    }|t          ur|||<   '| j        | j        |dS )N)
annotationmetadata
attributes)_Attrsgetattr	UndefinedrY   rZ   )rW   r[   attrvalues       r;   asdictra   W   s[    J % %
D)44	!!$Jt +'   r=   c                      e Zd ZU eed<   eed<   dZed         ed<   dZe	dz  ed<   e
defd	            Ze
dedz  fd
            Ze
dedz  fd            Ze
defd            Zd%dZdefdZi fdddedeeef         deeez  df         deeeeeef                  f         fdZdddddddddeded         dedz  dedz  dededed edefd!Zddddddd"dededz  dedz  dededed edefd#Zdefd$ZdS )&
ModelFieldrW   name
validationre   r.   r1   Nconfigr)   c                 0    | j         j        }||n| j        S N)rW   rD   rd   )r8   as     r;   rD   zModelField.aliask   s    O!Mqqty0r=   c                 P    | j         j        }t          |t                    r|r|S d S ri   )rW   rF   
isinstancestr)r8   vas     r;   rF   zModelField.validation_aliasp   s/    _-b# 	2 	Itr=   c                 "    | j         j        }|pd S ri   )rW   rG   )r8   sas     r;   rG   zModelField.serialization_aliasw   s    _0zTr=   c                 *    |                                  S ri   )get_defaultr8   s    r;   rB   zModelField.default|   s    !!!r=   c                 r   t          j                    5  t          j        dk    rddlm} t          j        d|           t          | j                  }|d         g|d         t          d
i |d         R }t          t          |         | j        	          | _        d d d            d S # 1 swxY w Y   d S )N)      r   ) UnsupportedFieldAttributeWarningignore)categoryrY   rZ   r[   )rg   rA   )warningscatch_warningsr   PYDANTIC_VERSION_MINOR_TUPLEpydantic.warningsrw   simplefilterra   rW   r   r   r	   rg   _type_adapter)r8   rw   
field_dictannotated_argss       r;   __post_init__zModelField.__post_init__   s,   $&& 	 	
 2g==NNNNNN%'G   
  00J<(J'
 11
<011 N 4?.){4 4 4D+	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   BB,,B03B0c                 x    | j                                         rt          S | j                             d          S )NT)call_default_factory)rW   is_requiredr^   rr   rs   s    r;   rr   zModelField.get_default   s7    ?&&(( 	***EEEr=   rA   )locr`   valuesr   .c                    	 | j                             |d          g fS # t          $ r1}d t          |                    d          |          fcY d }~S d }~ww xY w)NT)from_attributesFinclude_url)errors
loc_prefix)r   validate_pythonr   _regenerate_error_with_locr   )r8   r`   r   r   excs        r;   validatezModelField.validate   s    	"225$2OO   	 	 	3zzez44         	s     
A&AAAjsonTFr1   includerL   by_aliasexclude_unsetexclude_defaultsexclude_none)r   pythonr   rL   r   r   r   r   c          
      F    | j                             ||||||||          S )Nr   )r   dump_python)	r8   r`   r1   r   rL   r   r   r   r   s	            r;   	serializezModelField.serialize   s<     !--'-% . 	
 	
 		
r=   r   rL   r   r   r   r   c          	      D    | j                             |||||||          S )Nr   )r   	dump_json)r8   r`   r   rL   r   r   r   r   s           r;   serialize_jsonzModelField.serialize_json   s9      !++'-% , 
 
 	
r=   c                      t          |           S ri   )idrs   s    r;   __hash__zModelField.__hash__   s     $xxr=   )r)   N)r>   r?   r@   r    __annotations__rm   r1   r   rg   r   propertyrD   rF   rG   r
   rB   r   rr   dicttupleintlistr   r   boolr   r7   r   r   rA   r=   r;   rc   rc   d   s        
III3?D'/
0??? $FJ$$$1s 1 1 1 X1 #*    X S4Z    X " " " " X"   6FS F F F F "$
 &(   S#X
 39c>" 
sDc3h((	)   * +1 $ $#!&"
 
 

 &'	

 
 
 
 
 
 
 

 
 
 
: !% $#!&"
 
 

 	

 
 
 
 
 
 

 
 
 
4#      r=   rc   fieldc                     | j         j                            di                               dg           }t          |          dk    S )Nr(   computed_fieldsr   )r   core_schemagetlen)r   r   s     r;   _has_computed_fieldsr      sG    )599(BGGKK2 O !##r=   )separate_input_output_schemasmodel_name_mapfield_mappingrf   r   c                    |st          |           rd nd}| j        dk    r| j        p| j        n| j        p| j        }|| |p| j        f         }d|vr7| j        j        p'|                                                    dd          |d<   |S )Nre   z$ref_ rH   )r   r1   rF   rD   rG   rW   rH   replace)r   r   r   r   override_modefield_aliasr9   s          r;   get_schema_from_model_fieldr      s     *	-A%-H-H	  :%% 
		.5;'65;   (C DEK[    %/5  
9J9J9L9L9T9T:
 :
G r=   fieldsc                 V   t          t                    }d | D             }d | D             }t          |t                                }t          |t                                }d |D             }d |D             }	||	z   }
d | D             fd|
D             }fd	t	          |           t	          |          z   D             }|                    |
          \  }}t          t          t          t          t          t          f         f         |          
                                D ]?}d|v r9t          t          |d                                       d          d         }||d<   @|t          t          t          t          t          t          f         f         |          fS )N)ref_templatec                 (    g | ]}|j         d k    |S re   r1   .0r   s     r;   
<listcomp>z#get_definitions.<locals>.<listcomp>  s$    QQQ5ejL6P6P6P6P6Pr=   c                 (    g | ]}|j         d k    |S )r.   r   r   s     r;   r   z#get_definitions.<locals>.<listcomp>  s$    WWWe9V9VE9V9V9Vr=   known_modelsc                 X    g | ]'}t          t          |           |j        d          (S )rY   re   rW   rd   r1   rc   r    r>   r   models     r;   r   z#get_definitions.<locals>.<listcomp>"  sO     $ $ $  	 E222	
 	
 	
$ $ $r=   c                 X    g | ]'}t          t          |           |j        d          (S )r   r.   r   r   r   s     r;   r   z#get_definitions.<locals>.<listcomp>*  sO     ' ' '  	 E222 	
 	
 	
' ' 'r=   c                 &    h | ]}|j         j        S rA   rW   rY   r   fs     r;   	<setcomp>z"get_definitions.<locals>.<setcomp>3  s    ;;;q1<*;;;r=   c                 0    h | ]}|j         j        v|S rA   r   )r   r   input_typess     r;   r   z"get_definitions.<locals>.<setcomp>4  s/          (?{(R(R(R(R(Rr=   c                 ^    g | ])}|st          |          r|j        nd |j        j        f*S r   )r   r1   r   r   )r   r   r   s     r;   r   z#get_definitions.<locals>.<listcomp>7  s\          2"5I%5P5P"

!+	
  r=   )inputsrJ   r   )r!   r   get_flat_models_from_fieldssetr   generate_definitionsr   r   rm   r
   r   split)r   r   r   schema_generatorvalidation_fieldsserialization_fieldsflat_validation_modelsflat_serialization_modelsflat_validation_model_fieldsflat_serialization_model_fieldsflat_model_fieldsunique_flat_model_fieldsr   r   definitionsitem_defitem_descriptionr   s     `              @r;   get_definitionsr     s    *|DDDQQFQQQWWvWWW8   !<355! ! !$ $ ,$ $ $ ' ' /' ' '# 57VV;;F;;;K       $         &\\D)A$B$BB  F "2!F!Ff!F!U!UM;c4S>12K@@GGII 7 7H$$#C-)@AAGGMMaP&6H]# $tCc3h$78+FFFFr=   c                     ddl m} t          j        | j        j                  ot          | j        |j                   S )Nr   )params)fastapir   r   field_annotation_is_scalarrW   rY   rl   Body)r   r   s     r;   is_scalar_fieldr   P  sL    ,#  8)6;77
78r=   rY   c                     t          |           }|                    |          }t          |           }|j        |_        |j        |_        |S ri   )r,   from_annotationr   rZ   rY   )rW   rY   clsmerged_field_infonew_field_infos        r;   copy_field_infor   X  sL    
z

C++J77*%%N/8N 1 <Nr=   r`   c                 ^   t          | j        j                  p| j        j        }|t          u s	|t          u rAt          | j        j                  }|D ]%}|t          d           u rt          |          p|} t          |t          j	                  sJ t          j
        |         |          S ri   )r   rW   rY   r   r   r   r,   
issubclassr   sequence_typessequence_annotation_to_type)r   r`   origin_type
union_args	union_args        r;   serialize_sequence_valuer   a  s    U-899XU=M=XKe{i77e.9::
# 	 	IDJJ&&$Y//<9Kk6#899999-k:5AAAr=   r   c                 x    t          j        dd| i dg                              d          d         }d |d<   |S )NzField requiredmissing)r,   r   inputFr   r   r   )r   from_exception_datar   )r   errors     r;   get_missing_field_errorr  n  sL    /IcBGGH ff#E E'NLr=   
model_namec                 8    d | D             }t          |fi |}|S )Nc                 @    i | ]}|j         |j        j        |j        fS rA   )rd   rW   rY   r   s     r;   
<dictcomp>z%create_body_model.<locals>.<dictcomp>y  s(    TTTAFQ\4alCTTTr=   )r   )r   r  field_params	BodyModels       r;   create_body_modelr
  v  s3     UTVTTTL!-j!I!IL!I!IIr=   r   c                 
   g }| j                                         D ]f\  }}|j        }t          |t          t
          f          st          |          rd }n| j        }|                    t          |||                     g|S )N)rW   rd   rg   )
model_fieldsitemsrY   r   r   r   r   model_configappendrc   )r   r  rd   rW   type_r  s         r;   get_model_fieldsr  ~  s    %'L!.4466 
 
j%ei%677 	.<;N;N 	.LL -L%#  	
 	
 	
 	
 r=   c                      t          |           S ri   )r  )r   s    r;   get_cached_model_fieldsr    s    E"""r=   r   rd   c                 .    t          j        dd|           S )Nz[^a-zA-Z0-9.\-_]r   )resub)rd   s    r;   normalize_namer    s    6%sD111r=   unique_modelsc                 ~    i }| D ]}t          |j                  }|||<   d |                                D             S )Nc                     i | ]\  }}||	S rA   rA   )r   kvs      r;   r  z&get_model_name_map.<locals>.<dictcomp>  s    444TQAq444r=   )r  r>   r  )r  name_model_mapr   r  s       r;   get_model_name_mapr    sR    N + +#EN33
%*z""44^11334444r=   r   c                 f    |pt                      }t          |           }t          ||           |S Nr   )r   r  r   )r   r   r   s      r;   get_flat_models_from_modelr!    s8      (355Le$$F\BBBBr=   c                 &   t          |           }|t          |           D ]o}t          |t          t          f          r@||vr;|                    |           t          |t                    rt          ||           ^t          ||           p|S r   )r   r   r   r   r   addr!  get_flat_models_from_annotation)rY   r   originargs       r;   r$  r$    s     
##FJ'' 	P 	PC!#	4'899 Pl** $$S))))#y99 S23\RRRR/,OOOOOr=   c                    | j         j        }t          |t                    r-||v r|S |                    |           t          ||           n<t          |t                    r|                    |           nt          ||           |S r   )rW   rY   r   r   r#  r!  r   r$  )r   r   
field_types      r;   get_flat_models_from_fieldr)    s     !,J*i00 O%%$$$":LIIIII	J	-	- O$$$$'
NNNNr=   c                 2    | D ]}t          ||           |S r   )r)  )r   r   r   s      r;   r   r     s1      E E"5|DDDDDr=   r   r   c                 $    fd| D             }|S )Nc           	      N    g | ]!}i |d |                     d d          z   i"S )r   rA   )r   )r   errr   s     r;   r   z._regenerate_error_with_loc.<locals>.<listcomp>  sI     % % %<?737zCGGE2$6$6677% % %r=   rA   )r   r   updated_loc_errorss    ` r;   r   r     s4    % % % %CI% % % r=   ri   )Wr  rz   collections.abcr   r   dataclassesr   r   enumr   	functoolsr   typingr	   r
   r   r   r   r   r   fastapi._compatr   r   fastapi.openapi.constantsr   fastapi.typesr   r   r   pydanticr   r   r   r   r   r   r   r   ,pydantic._internal._schema_generation_sharedr    pydantic._internal._typing_extrar   pydantic.fieldsr    pydantic.json_schemar!   _GenerateJsonSchemar"   pydantic_corer#   r$   r%   pydantic_core.core_schemar&   RequiredParamr^   evaluate_forwardrefr\   r   rm   ra   rc   r   r   r   r   r   r   r   r   r   r  r,   r
  r   r  r  TypeModelOrEnumr   TypeModelSetr  r  r!  r$  r)  r   r   rA   r=   r;   <module>rC     s   				  $ $ $ $ $ $       / / / / / / / /                              7 6 6 6 6 6 6 6 2 2 2 2 2 2 8 8 8 8 8 8 8 8 8 8 L L L L L L L L L L L L L L S S S S S S O O O O O O 7 7 7 7 7 7      ? > > > > > 2 2 2 2 2 2 J J J J J J C C C C C C 2 2 2 2 2 2 + + + + + + $ $ $ $ $ $      "	'     ,   "
s
t
 T
 d	

 
 4
 T
 T
 4
 
 t
 $
 T
 $
 
  d!
" #
$ +
 
 
4
y 
T#s(^ 
 
 
 
 B B B B B B B BJ$
 $t $ $ $ $ +/   ! j'"?@@A?R	 $( 
#s(^   F +/	=G =G =GZ =G !=G $(	=G
 z7#@AA	BO	STd38n	=G =G =G =G@8: 8$ 8 8 8 89 # )    
Bz 
B# 
B(3- 
B 
B 
B 
BsSy#~!6 4S>    
#14	)_   DO Z0@    $ #4	? #tJ7G # # # # {#d4j0?#2 2 2 2 2 25l 5tOS<P7Q 5 5 5 5 CG ,84,?   #/    %1    Z 0<   }*/c	3*?	$sCx.     r=   