
    ]j#                     n   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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mZ d d	lmZ d d
l m!Z" d dl#m$Z$ d dl%m&Z&m'Z' dede(fdZ) ede      Z*dee*   dee*   fdZ+ G d de"      Z! G d de      Z, G d de      Ze+ G d de             Z-y)    )wraps)Path)
AnyClassVarDefaultDictDictListOptionalSetTupleTypeTypeVar)Field)Import)	DataModelDataModelFieldBase)	UNDEFINED)IMPORT_MSGSPEC_CONVERTIMPORT_MSGSPEC_FIELDIMPORT_MSGSPEC_METAIMPORT_MSGSPEC_STRUCT)Constraints)	RootModel)	Reference)chain_as_tupleget_optional_typefieldreturnc                 Z    | j                   xs | j                  dk(  xr | j                   S )NNone)requiredrepresented_defaultstrip_default_none)r   s    P/root/env/lib/python3.12/site-packages/datamodel_code_generator/model/msgspec.py_has_field_assignmentr%   #   s2     	N%%/LE4L4L     DataModelFieldBaseT)boundclsc                     t        | dd       t        j                        dt        dt        t
        df   ffd       }t        | dt        |             | S )Nimportsselfr   .c                 F   g }| j                   }|r&|j                  d      r|j                  t               | j                   r#d| j                   v r|j                  t               | j
                  r|j                  t               t        j                  |       |      S )Nfield(zlambda: convert)	r   
startswithappendr   r   	annotatedr   r   fget)r,   extra_importsr   original_importss      r$   new_importsz$import_extender.<locals>.new_imports0   s    

U%%h/  !56::+tzz9  !78>>  !45.33D9=IIr&   )getattrr   r2   r'   r   r   setattrproperty)r)   r5   r4   s     @r$   import_extenderr9   -   sd    !(i!>
  !
J- 
J%2D 
J "
J CH[12Jr&   c                       e Zd Zy)r   N)__name__
__module____qualname__ r&   r$   r   r   A   s    r&   r   c                       e Zd ZU dZee   ed<   dZee   ed<   efZ	ee
edf      ed<   ddddddddedd	
d
edee   deee      deee      dee   dee   deeeeeef   f      deee      dee   dee   dededdf fdZ xZS )Structzmsgspec.jinja2TEMPLATE_FILE_PATHzmsgspec.Struct
BASE_CLASS.DEFAULT_IMPORTSNF)

decoratorsbase_classescustom_base_classcustom_template_dirextra_template_datamethodspathdescriptiondefaultnullable	referencefieldsrD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   r   c                \    t         |   |t        |t        d      |||||||	|
||       y )NF)keyreverse)rN   rO   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   )super__init__sortedr%   )r,   rN   rO   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   	__class__s                r$   rT   zStruct.__init__J   sE      	&&;UK!%/ 3 3# 	 	
r&   )r;   r<   r=   rA   r   str__annotations__rB   r   rC   r   r   r   r   r	   r   r
   r   r   r   r   boolrT   __classcell__)rV   s   @r$   r@   r@   E   s/   (88 0J05J4LOXeFCK01L +/26+/.2JN'+#%) 
 
 '(	

 T#Y'
 tI/
 $C=
 &d^
 &k#tCH~2E&FG
 $s)$
 tn
 c]
 
 
 

 
r&   r@   c                   V    e Zd ZU  edd      Zee   ed<    edd      Zee   ed<   y)r   Nregex)aliaspattern)	r;   r<   r=   r   r\   r
   rW   rX   r^   r>   r&   r$   r   r   j   s,     W5E8C=5"4y9GXc]9r&   r   c                       e Zd ZU ddhZeee      ed<   h dZeee      ed<   dZ	h dZ
eee      ed<   d	Zee   ed
<   defdZddZdededefdZedee   fd       ZdefdZedee   fd       Zdee   fdZy	)DataModelFieldrL   default_factory_FIELD_KEYS>   gegtlelttitler^   examples
max_length
min_lengthrK   multiple_of_META_FIELD_KEYSconvert>   rc   rd   re   rf   rk   _COMPARE_EXPRESSIONSNconstraintsr   c                    t        | j                  t              xre | j                  j                  j                  | j
                  j                  D ch c]%  }|j                  s|j                  j                  ' c}v S c c}w )N)
isinstanceparentr@   rN   rJ   	data_typeall_data_types)r,   ds     r$   self_referencezDataModelField.self_reference   sf    $++v. 
4;;3H3H3M3M&*nn&C&CR
!"q{{AKKR
 4
 	
 R
s   B&Bc                     d| j                   vry d| _        d| _        | j                   d   }| j                  j                  dk(  r4t        |t              r#| j                  j                  |g      | _        y y y )NconstTFrW   )literals)extrasrx   rM   rs   typerq   rW   rV   )r,   rx   s     r$   process_constzDataModelField.process_const   sp    $++%
G$>>%'J3-
 "^^55w5GDN-
'r&   
constraintvaluec                     ||| j                   vr|S t        d | j                  j                  D              rt	        |      S t        |      S )Nc              3   :   K   | ]  }|j                   d k(    yw)floatN)r{   ).0rs   s     r$   	<genexpr>zDDataModelField._get_strict_field_constraint_value.<locals>.<genexpr>   s      
*3INNg%
s   )rn   anyrs   rt   r   int)r,   r}   r~   s      r$   "_get_strict_field_constraint_valuez1DataModelField._get_strict_field_constraint_value   sN    =Jd.G.GGL 
7;~~7T7T
 
 <5zr&   c                 (    t        |       }|dk(  ry|S )zfor backwards compatibility N)rW   )r,   results     r$   r   zDataModelField.field   s     TR<r&   c           	      
   | j                   j                         D ci c]  \  }}|| j                  v s|| }}}| j                  r| j                  |d<   | j                  t
        k7  r| j                  | j                  |d<   n| j                  sd |d<   | j                  r(|j                         D ci c]  \  }}|dvr|| }}}n8| j                  r,d|vr(| j                         }||j                  d       ||d<   |syt        |      dk(  rd|v rt        |d         S |j                         D cg c]  \  }}| d|dk(  r|n
t        |        }}}dd	j                  |       d
S c c}}w c c}}w c c}}w )NnamerL   )rL   ra   ra   r      =r.   , ))rz   itemsrb   r]   rL   r   r!   _get_default_as_struct_modelpoplenreprjoin)r,   kvdatara   kwargss         r$   __str__zDataModelField.__str__   s   ![[..0 
QA9I9I4IAqD 
  
 ::::DL<<9$)A"llDO"DO== !JJLAq 1D  \\/t;"??AO*#*9&'t9>i4/Y(( KO**,
BF!Qqc..1DG<=
 
 		&)*!,,I 
*
s   E3E37E9:!E?c           
         | j                   sy | j                  j                         D ci c]  \  }}|| j                  v s|| }}}| j                  | j                         st| j                  j                  s^i || j                  j                         j                         D ci c]&  \  }}|| j                  v r|| j                  ||      ( c}}}t        d |j                         D              }|sy ddj                  |       d}| j                  s?| j                  j                  }d| d| d}t        || j                  j                        S d| j                   d| dS c c}}w c c}}w )Nc              3   H   K   | ]  \  }}|	| dt        |         y w)Nr   )r   )r   r   r   s      r$   r   z+DataModelField.annotated.<locals>.<genexpr>   s,       
!%Aqc47) 
s   
""zMeta(r   r   z
Annotated[])use_annotatedrz   r   rl   ro   rv   rs   strictdictr   rU   r   r!   	type_hintr   use_union_operator)r,   r   r   r   meta_argumentsmetar   annotated_types           r$   r1   zDataModelField.annotated   s   !! "[[..0 
QA9N9N4NAqD 
  
 ('')NN)) !% 0 0 5 5 7 = = ?1D111 t>>q!DDD    
)- 
 
 tyy013}}00I))BtfA>N$^T^^5V5VWWDNN+2dV155; 
s   E0E0*+E6c                    | j                   j                  xs | j                   fD ]  }|j                  s| j                   j                  r'|j                  rt        |j                        dk(  r|j                  d   }|j                  sgt        |j                  j                  t              s%t        |j                  j                  t              st        | j                  t              sd| j                   dt        | j                         d|j                  xs  |j                  j                  j                    dc S |j                  s0t        |j                  j                  t              sVd| j                   dt        | j                         d|j                  xs  |j                  j                  j                    dc S  y )	Nr   r   zlambda: (z,  type=list[z])z,  type=r   )rs   
data_typesis_dictis_unionis_listr   rN   rq   sourcer@   r   rL   list_PARSE_METHODr   r]   
class_name)r,   rs   s     r$   r   z+DataModelField._get_default_as_struct_model   s   22Gt~~6G 	OI  DNN$;$;""s9+?+?'@A'E%003	''"9#6#6#=#=vF%i&9&9&@&@)L"4<<6%d&8&8%94;M:Nm\e\k\k  ]Uox  pC  pC  pJ  pJ  pU  pU  \V  VX  Y  Y$$I4G4G4N4NPV)W!$"4"4!5QtDLL7I6J(S\SbSb  TLfofyfy  gA  gA  gL  gL  SM  MN  O  O#	O$ r&   )r   N)r;   r<   r=   rb   r   r   rW   rX   rl   r   rn   ro   r
   r   rY   rv   r|   r   r   r8   r   r   r1   r   r>   r&   r$   r`   r`   p   s     	'K#c(# ,hs3x(   M/V(3s8,V)-K+&-
 

	HS  QT  x}  %- %-N !68C= !6 !6Fhsm r&   r`   N).	functoolsr   pathlibr   typingr   r   r   r   r	   r
   r   r   r   r   pydanticr    datamodel_code_generator.importsr   datamodel_code_generator.modelr   r   #datamodel_code_generator.model.baser   &datamodel_code_generator.model.importsr   r   r   r   2datamodel_code_generator.model.pydantic.base_modelr   _Constraints(datamodel_code_generator.model.rootmodelr   
_RootModel"datamodel_code_generator.referencer   datamodel_code_generator.typesr   r   rY   r%   r'   r9   r@   r`   r>   r&   r$   <module>r      s         3 H 9  M 8 L!3   3;MN 12 t<O7P (	
 	"
Y "
J:, : Z' Z Zr&   