
    ilC                     :   d dl Z d dl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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 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l*m,Z, d dl-m.Z. d dl-m/Z/m0Z0 d dl-m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6 	 d dl7m8Z8 e/Z;e/Z<e0Z=e%Z>e	Z? G d d      Z@ G d deA      ZBe G d d             ZCde	d e)d!eDd"e	fd#ZEd$ee   d"dfd%ZF	 dTd$ed&e4d'   d(e	d"e	fd)ZGd$ed"e	fd*ZHd+eCd"eIfd,ZJd-d.d+eCd/ed0e
eeCe4d1   f   e,f   d2eId"e
eDe	f   f
d3ZKd-d.d4eeC   d/ed2eId"ee
eeCe4d1   f   e,f   e
eDe
eDe	f   f   f   fd5ZLd6e
eDe	f   d7e
eDeDf   d"e
eDe	f   fd8ZMd/ed9e
eDe	f   d0e
eeCe4d1   f   e,f   d"ee
eeCe4d1   f   e,f   e
eDe	f   f   fd:ZNd+eCd"eIfd;ZOd+eCd"eIfd<ZPd+eCd"eIfd=ZQd+eCd"eIfd>ZRd+eCd"eIfd?ZSd e)de	d"e)fd@ZTd+eCdAe	d"ee	   fdBZUdCeeDdDf   d"e
eDe	f   fdEZVd4eeC   dFeDd"ee   fdGZWd$ee   d"eeC   fdHZXeedI   ee   f   ZYeeY   ZZdJeDd"eDfdKZ[dLeZd"e
eYeDf   fdMZ\	 dUd$edI   dNeeZdf   d"eZfdOZ]de	dNeZd"eZfdPZ^d+eCdNeZd"eZfdQZ_d4eeC   dNeZd"eZfdRZ`d$eYd"eDfdSZay# e9$ r
 d dl7m:Z8 Y w xY w)V    N)copydeepcopy)	dataclass)Enum)	AnyDictListSequenceSetTupleTypeUnioncast)may_v1shared)REF_TEMPLATE)IncExModelNameMap	UnionType)	BaseModelTypeAdaptercreate_model)PydanticSchemaGenerationError)PydanticUndefinedAnnotation)ValidationError)GetJsonSchemaHandler)eval_type_lenient)lenient_issubclass)	FieldInfo)GenerateJsonSchema)JsonSchemaValue)
CoreSchema)PydanticUndefinedPydanticUndefinedType)Url)	AnnotatedLiteralget_args
get_origin)"with_info_plain_validator_function) general_plain_validator_functionc                       e Zd Zy)
BaseConfigN__name__
__module____qualname__     b/Users/bowang/.openclaw/workspace/ChatDev/.venv/lib/python3.12/site-packages/fastapi/_compat/v2.pyr-   r-   6       r3   r-   c                       e Zd Zy)ErrorWrapperNr.   r2   r3   r4   r7   r7   :   r5   r3   r7   c                   j   e Zd ZU eed<   eed<   dZed   ed<   edefd       Z	ede
fd       Zede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ef   df   deeeeeeef      df   f   fdZdddddddddeded   deedf   deedf   de
de
de
de
defd Zdefd!Zy)#
ModelField
field_infoname
validationr<   serializationmodereturnc                 N    | j                   j                  }||S | j                  S N)r:   aliasr;   )selfas     r4   rC   zModelField.aliasD   s$    OO!!Mq0tyy0r3   c                 6    | j                   j                         S rB   )r:   is_requiredrD   s    r4   requiredzModelField.requiredI   s    **,,r3   c                 "    | j                         S rB   )get_defaultrH   s    r4   defaultzModelField.defaultM   s    !!r3   c                 .    | j                   j                  S rB   )r:   
annotationrH   s    r4   type_zModelField.type_Q   s    )))r3   Nc                 $   t        j                         5  t        j                  dk\  rddlm} t        j                  d|       t        t        | j                  j                  | j                  f         | _        d d d        y # 1 sw Y   y xY w)N)      r   ) UnsupportedFieldAttributeWarningignore)category)warningscatch_warningsr   PYDANTIC_VERSION_MINOR_TUPLEpydantic.warningsrS   simplefilterr   r&   r:   rN   _type_adapter)rD   rS   s     r4   __post_init__zModelField.__post_init__U   sk    $$&
 22g=N%%'G 4?$//44dooEF4D '&&s   A(BBc                 z    | j                   j                         rt        S | j                   j                  d      S )NT)call_default_factory)r:   rG   	UndefinedrK   rH   s    r4   rK   zModelField.get_defaulte   s0    ??&&(***EEr3   r2   )locvaluevaluesr`   .c                    	 | j                   j                  |d      d fS # t        $ r3}d t        j                  |j                  d      |      fcY d }~S d }~ww xY w)NT)from_attributesFinclude_url)errors
loc_prefix)r[   validate_pythonr   r   _regenerate_error_with_locrg   )rD   ra   rb   r`   excs        r4   validatezModelField.validatej   si    	""225$2O   	::zzez4  	s   ! 	A(AAAjsonTFr?   includeexcludeby_aliasexclude_unsetexclude_defaultsexclude_nonerm   pythonro   rp   rq   rr   rs   rt   c          
      H    | j                   j                  ||||||||      S )Nrn   )r[   dump_python)	rD   ra   r?   ro   rp   rq   rr   rs   rt   s	            r4   	serializezModelField.serialize{   s:     !!--'-% . 	
 		
r3   c                     t        |       S rB   )idrH   s    r4   __hash__zModelField.__hash__   s     $xr3   )r@   N)r/   r0   r1   r   __annotations__strr?   r'   propertyrC   boolrI   r   rL   rO   r\   rK   r   r   r   intr	   rl   r   ry   r|   r2   r3   r4   r9   r9   >   s   
I3?D'/
0?1s 1 1 -$ - - " " " *s * * FS F "$
 ,. S#X
 5c?C'( 
sE$tCH~.455	6* +1&*&*#!&"

 &'	

 ud{#
 ud{#
 
 
 
 
 

2# r3   r9   rN   r:   
field_namer@   c                     | S rB   r2   )rN   r:   r   s      r4   get_annotation_from_field_infor      s
     r3   modelc                 $    | j                          y rB   )model_rebuildr   s    r4   _model_rebuildr      s    	r3   r?   ru   kwargsc                 *     | j                   dd|i|S )Nr?   r2   )
model_dump)r   r?   r   s      r4   _model_dumpr      s     50000r3   c                     | j                   S rB   )model_configr   s    r4   _get_model_configr      s    r3   fieldc                     | j                   j                  j                  di       j                  dg       }t        |      dkD  S )Nschemacomputed_fieldsr   )r[   core_schemagetlen)r   r   s     r4   _has_computed_fieldsr      sB    ))5599(BGKK2O !##r3   T)separate_input_output_schemasmodel_name_mapfield_mappingr=   r   c                     |st        |       rd nd}|| |xs | j                  f   }d|vrE| j                  j                  xs* | j                  j                         j                  dd      |d<   |S )Nr<   $ref_ title)r   r?   r:   r   rC   replace)r   r   r   r   override_modejson_schemas         r4   get_schema_from_model_fieldr      s     *-A%-H 	   (C DEK[   %//55  
9J9J9L9T9T:
G r3   fieldsc                 @   t        t              }| D cg c]  }|j                  dk(  s| }}| D cg c]  }|j                  dk(  s| }}t        |t	                     }t        |t	                     }|D 	cg c]$  }	t        t        |	      |	j                  d      & }
}	|D 	cg c]$  }	t        t        |	      |	j                  d      & }}	|
|z   }| D ch c]  }|j                   }}|D ch c]  }|j                  |vs| }}t        |       t        |      z   D cg c]4  }||st        |      r|j                  nd|j                  j                  f6 }}|j                  |      \  }}t        t        t         t        t         t"        f   f   |      j%                         D ]1  }d|v st        t         |d         j'                  d	      d
   }||d<   3 t)        |||      \  }}||fS c c}w c c}w c c}	w c c}	w c c}w c c}w c c}w )N)ref_templater<   r>   known_models)rN   )r:   r;   r?   )inputsdescriptionr   )r   definitionsr   )r    r   r?   get_flat_models_from_fieldssetr9   r   r/   rO   listr   r[   r   generate_definitionsr   r   r~   r   rb   split%_remap_definitions_and_field_mappings)r   r   r   schema_generatorr   validation_fieldsserialization_fieldsflat_validation_modelsflat_serialization_modelsr   flat_validation_model_fieldsflat_serialization_model_fieldsflat_model_fieldsfinput_typesunique_flat_model_fieldsr   r   r   item_defitem_descriptionnew_mappingnew_definitionss                          r4   get_definitionsr      sg    *|D,2QF5ejjL6PFQ/5Wve9VEvW8 !<35! ,$ ,E 	 E2	

 , ! $ /' /E 	 E2 	

 / $ ' 57VV$*+Fq177FK+$ $a{(B$    &\D)A$BB CE  25I%5P 

!++	
 C   "2!F!Ff!F!UM;c4S>12K@GGIH$#C-)@AGGMaP&6H]# J $I%#$ K
 ''g RW$' , s9   G=G=H	H=)H,)H H9HH,9Hr   old_name_to_new_name_mapc                    t        |       }|j                         D ]  \  }}|dk(  rO| d   }t        |t              r9| d   j	                  d      d   }||v r||   }t        j                  |      |d<   Zt        |t              rt        ||      ||<   {t        |t              sg }|D ]B  }t        |t              rt        ||      }	|j                  |	       2|j                  |       D |||<    |S )Nr   /r   r   r   )r   items
isinstancer~   r   r   formatdict_replace_refsr   append)
r   r   
new_schemakeyra   ref_namenew_name	new_valueitemnew_items
             r4   r   r     s	   
 &!J &&(
U&=6NE%%!&>//4R8777AH)5)<)<8)LJv&eT"+)AJsO t$IdD),#1I H $$X. $$T*  (JsO5 )6 r3   r   c                    i }|j                         D ]K  \  }}|d   j                  }|| vsd|vr| |   }|d   j                  d      d   }|| d| dhv rG|||<   M i }	|j                         D ]  \  }}t        ||      }
|
|	|<    i }|j                         D ]#  \  }}||v r||   }n|}t        ||      }|||<   % |	|fS )Nr   r   r   r   z-Inputz-Outputr   )r   rO   r   r   )r   r   r   r   	field_keyr   r   r   old_namenew_field_mappingr   r   r   ra   new_keyr   s                   r4   r   r   2  s/     "*002	6!""&&*>!%(&>'',R08*F+z-ABB-5 * 3 	  +002	6"%=

 (2)$ 3 O!'')
U**.s3GG!%=
	 $-  * o--r3   c                     ddl m} t        j                  | j                  j
                        xr! t        | j                  |j                         S )Nr   )params)fastapir   r   field_annotation_is_scalarr:   rN   r   Body)r   r   s     r4   is_scalar_fieldr   `  sC    ,,## 8))6;;7
78r3   c                 T    t        j                  | j                  j                        S rB   )r   field_annotation_is_sequencer:   rN   r   s    r4   is_sequence_fieldr   h  s    ..u/?/?/J/JKKr3   c                 T    t        j                  | j                  j                        S rB   )r   #field_annotation_is_scalar_sequencer:   rN   r   s    r4   is_scalar_sequence_fieldr   l  s    55e6F6F6Q6QRRr3   c                 @    t        j                  | j                        S rB   )r   $is_bytes_or_nonable_bytes_annotationrO   r   s    r4   is_bytes_fieldr   p  s    66u{{CCr3   c                 @    t        j                  | j                        S rB   )r   is_bytes_sequence_annotationrO   r   s    r4   is_bytes_sequence_fieldr   t  s    ..u{{;;r3   c                     t        |       }|j                  |      }t        |       }|j                  |_        |j                  |_        |S rB   )typefrom_annotationr   metadatarN   )r:   rN   clsmerged_field_infonew_field_infos        r4   copy_field_infor   x  sI    
z
C++J7*%N/88N 1 < <Nr3   ra   c                    t        | j                  j                        xs | j                  j                  }|t        u s|t        u rDt        | j                  j                        }|D ]   }|t        d       u rt        |      xs |} n t        |t        j                        sJ t        j                  |   |      S rB   )r)   r:   rN   r   r   r(   r   
issubclassr   sequence_typessequence_annotation_to_type)r   ra   origin_type
union_args	union_args        r4   serialize_sequence_valuer     s    U--889XU=M=M=X=XKe{i7e..99:
#IDJ&$Y/<9K	 $
 k6#8#8999--k:5AAr3   r`   .c                 l    t        j                  dd| i dg      j                  d      d   }d |d<   |S )NzField requiredmissing)r   r`   inputFre   r   r   )r   from_exception_datarg   )r`   errors     r4   get_missing_field_errorr    sD    //IcBGHff#E E'NLr3   
model_namec                     | D ci c]/  }|j                   |j                  j                  |j                  f1 }}t        |fi |}|S c c}w rB   )r;   r:   rN   r   )r   r  r   field_params	BodyModels        r4   create_body_modelr    sQ     NTTVAFFQ\\44allCCVLT!-j!IL!II Us   4A	c                 ~    | j                   j                         D cg c]  \  }}t        ||       c}}S c c}}w )N)r:   r;   )model_fieldsr   r9   )r   r;   r:   s      r4   get_model_fieldsr    sD     !& 2 2 8 8 : :D* 	jt4 :  s   9r   r;   c                 0    t        j                  dd|       S )Nz[^a-zA-Z0-9.\-_]r   )resub)r;   s    r4   normalize_namer    s    66%sD11r3   unique_modelsc                 `   i }t               }| D ]t  }t        |j                        }||v rt        |      }|||<   -||v r?|j	                  |       |j                  |      }||t        |      <   ||t        |      <   p|||<   v |j                         D ci c]  \  }}||
 c}}S c c}}w rB   )r   r  r/   get_long_model_nameaddpopr   )r  name_model_mapconflicting_namesr   r  conflicting_modelkvs           r4   get_model_name_mapr    s    N"%%#ENN3
**,U3J).N:&>)!!*- . 2 2: >EVN./@AB9>N.u56).N:&  ,11343TQAqD3444s   B*r   c                 R    |xs
 t               }t        |       }t        ||       |S Nr   )r   r  r   )r   r   r   s      r4   get_flat_models_from_modelr    s*      (35Le$F\Br3   c                     t        |       }|gt        |       D ]Y  }t        |t        t        f      r4||vr0|j                  |       t        |t              s?t        ||       Mt        ||       [ |S r  )r)   r(   r   r   r   r  r  get_flat_models_from_annotation)rN   r   originargs       r4   r  r    sm     
#FJ'C!#	4'89c>U  %%c95.sN/,O ( r3   c                     | j                   }t        |t              r&||v r|S |j                  |       t	        ||       |S t        |t
              r|j                  |       |S t        ||       |S r  )rO   r   r   r  r  r   r  )r   r   
field_types      r4   get_flat_models_from_fieldr$    sy     J*i0%$":LI
 	 
J	-$  	(
Nr3   c                 .    | D ]  }t        ||        |S r  )r$  )r   r   r   s      r4   r   r     s     "5|D r3   c                 X    | j                    d| j                   j                  dd      S )N__.)r0   r1   r   r   s    r4   r  r    s.    r%"4"4!56>>sDIIr3   )rm   rB   )br  rV   r   r   dataclassesr   enumr   typingr   r   r	   r
   r   r   r   r   r   fastapi._compatr   r   fastapi.openapi.constantsr   fastapi.typesr   r   r   pydanticr   r   r   r   r   r   ,pydantic._internal._schema_generation_sharedr    pydantic._internal._typing_extrar   pydantic._internal._utilsr   pydantic.fieldsr   pydantic.json_schemar    r!   pydantic_corer"   r#   r$   r%   typing_extensionsr&   r'   r(   r)   pydantic_core.core_schemar*   ImportErrorr+   RequiredParamr_   UndefinedTypeevaluate_forwardref	Validatorr-   	Exceptionr7   r9   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  TypeModelOrEnumTypeModelSetr  r  r  r  r$  r   r  r2   r3   r4   <module>r@     s   	   ! 
 
 
 + 2 8 8 9 9 S O 7 ? N 2 I C 2 B $ F F "	%' 		 		9 	 X X Xv!*8;$y/ d 
 9?11#$451JM11Y 3 $
 $t $ +/ ! j'"?@@A?R	 $( 
#s(^: +/	=(Z =( !=( $(	=(
 z7#@AA	BO	STd38n	=(@!cN! #38n! 
#s(^	!H+. +. c3h+. j'"?@@A?R	+. z7#@AA	BO	STcN+.\8: 8$ 8LZ LD LSJ S4 SD* D D<: <$ <9 # ) 
Bz 
B# 
B(3- 
BsCx T#s(^ 
#14	)_DO Z0@  [)4:56?#2 2 25l 5tOS<P7Q 5& IM,1,2D,E#/%1 Z 0<J J3 JQ   s   ,J JJ