
    ]j6                     J   U d dl 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mZ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mZ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&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1m2Z2m3Z3  ee4      jj                  d    dz  Z6ee7d<   dZ8e9e7d<    edd      Z: G d de'      Z; G d de'      Z< e       dedefd       Z=de9dee   dee9   fdZ>de9dee   de9fdZ? G d de      Z@ G d  d!e,      ZA eB       ZCee7d"<    G d# d$e@e-e      ZDy%)&    )ABCabstractmethod)defaultdict)	lru_cache)Path)TYPE_CHECKINGAnyClassVarDefaultDictDict	FrozenSetIteratorListOptionalSetTupleTypeVarUnion)warn)EnvironmentFileSystemLoaderTemplate)Field)IMPORT_ANNOTATEDIMPORT_ANNOTATED_BACKPORTIMPORT_OPTIONALIMPORT_UNIONImport)	Reference
_BaseModel)ANYNONEUNION_PREFIXDataTypeNullablechain_as_tupleget_optional_type)PYDANTIC_V2
ConfigDictcached_propertytemplateTEMPLATE_DIRz#all#	ALL_MODELConstraintsBaseTConstraintsBase)boundc                       e Zd ZU  edd      Zee   ed<   dhZe	e
e      ed<   er edef      Zn
 G d	 d
      Zedefd       Zedededee   fd       Zy)r/   NuniqueItems)aliasunique_itemshas_constraints_exclude_fieldsT)arbitrary_types_allowedignored_typesc                       e Zd ZdZefZy)ConstraintsBase.ConfigTN)__name__
__module____qualname__r7   r*   keep_untouched     M/root/env/lib/python3.12/site-packages/datamodel_code_generator/model/base.pyConfigr:   <   s    &*#-/Nr@   rB   returnc                 ^    t        d | j                         j                         D              S )Nc              3   $   K   | ]  }|d u 
 y wNr?   ).0vs     rA   	<genexpr>z2ConstraintsBase.has_constraints.<locals>.<genexpr>B   s     ?Q1D=?s   )anydictvaluesselfs    rA   r5   zConstraintsBase.has_constraints@   s"    ?$))+*<*<*>???r@   abc                    d }t        | t              rC| j                  d      j                         D ci c]  \  }}|	|| }}}| j                  }ni }t        |t              rG|j                  d      j                         D ci c]  \  }}|	|| }}}|xs |j                  }ni }t        |t              sy |j                  i ||      S c c}}w c c}}w )NT)by_alias)
isinstancer/   rK   items	__class__
issubclass	parse_obj)rO   rP   constraints_classkrH   root_type_field_constraintsmodel_field_constraintss          rA   merge_constraintsz!ConstraintsBase.merge_constraintsD   s     !a)!"!6!<!<!>+A!-1+' + !"*,'a)!"!6!<!<!>'A!-1'# ' !2 @Q[[&(#+_= **-)
 	
%+'s   
CC
CC)r;   r<   r=   r   r4   r   bool__annotations__r6   r
   r   strr(   r)   r*   model_configrB   r5   staticmethodr.   r\   r?   r@   rA   r/   r/   3   s    #(]#CL(4.C+<*=OXc#h'=!$(8J

	0 	0 @ @ @ 

 0
	"	#
 
r@   c                       e Zd ZU dZee   ed<   dZee   ed<   dZ	e
ed<   dZee   ed<   eed<   dZeed<   dZe
ed	<   dZee
   ed
<   dZee   ed<   i Zeeef   ed<   dZe
ed<   dZe
ed<   dZe
ed<   dZe
ed<   dZee   ed<   dZe
ed<   dZe
ed<   dhZeee      ed<   ddhZeee      ed<   dZee
   ed<   es
deddf fdZ d'dZ!e"defd       Z#e"de$e%df   fd       Z&e"dee   fd       Z'e"de(e   fd        Z)e"dee   fd!       Z*e"dee   fd"       Z+e"defd#       Z,e"dee   fd$       Z-e"de
fd%       Z.e"de
fd&       Z/ xZ0S )(DataModelFieldBaseNnamedefaultFrequiredr3   	data_typeconstraintsstrip_default_nonenullableparentextrasuse_annotatedhas_defaultuse_field_descriptionconstoriginal_nameuse_default_kwarguse_one_literal_as_defaultr6   _pass_fieldsTcan_have_extra_keysdatarC   c                     t        |   di | | j                  j                  s| j                  j                  r| | j                  _        | j                          y )Nr?   )super__init__rg   	reference
data_typesrk   process_const)rN   rv   rU   s     rA   ry   zDataModelFieldBase.__init__|   sD    G$t$~~''4>>+D+D(,% r@   c                 t    d| j                   vry | j                   d   | _        d| _        d| _        d| _        y )Nrp   TF)rl   re   rp   rf   rj   rM   s    rA   r|   z DataModelFieldBase.process_const   s6    $++%{{7+
r@   c                    | j                   j                  }|st        S | j                  r|S | j                   j                  r| j                   j
                  t        k7  r|S | j                  .| j                  r t        || j                   j                        S |S | j                  r|S | j                  r t        || j                   j                        S |S rF   )rg   	type_hintr"   has_default_factoryis_optionaltyper!   rj   r'   use_union_operatorrf   fall_back_to_nullable)rN   r   s     rA   r   zDataModelFieldBase.type_hint   s    NN,,	K%%^^''DNN,?,?3,F]]&}}(DNN4U4UVV]]''$Y0Q0QRRr@   .c                    | j                   }| j                  j                   xr t        |v fd| j                  j                  D        g}| j
                  rQ| j                  s| j                  q| j                  se| j                  j                  sO|j                  t        f       n8| j                  r,| j                  j                  s|j                  t        f       | j                  rJ| j                  r>| j                  j                  j                  rt        nt        }|j                  |f       t!        | S )Nc              3   8   K   | ]  }s	|t         k(  s|  y wrF   )r   )rG   i	has_unions     rA   rI   z-DataModelFieldBase.imports.<locals>.<genexpr>   s#      %!|*; s   )r   rg   r   r#   all_importsr   rj   rf   appendr   rm   	annotatedpython_versionhas_annotated_typer   r   r&   )rN   r   importsimport_annotatedr   s       @rA   r   zDataModelFieldBase.imports   s    NN	999Wli>W	33A
 %%$--"7nn7712 dnn&G&G12$.. >>00CC !. 
 NN,./w''r@   c                 ^    | j                   r!| j                  j                  dd       }|| S y )Ndescription)ro   rl   get)rN   r   s     rA   	docstringzDataModelFieldBase.docstring   s0    %%++//->K&%'r@   c                 .    | j                   j                  S rF   )rg   unresolved_typesrM   s    rA   r   z#DataModelFieldBase.unresolved_types   s    ~~...r@   c                      y)zfor backwards compatibilityNr?   rM   s    rA   fieldzDataModelFieldBase.field   s     r@   c                      y rF   r?   rM   s    rA   methodzDataModelFieldBase.method       r@   c                 ,    t        | j                        S rF   )reprre   rM   s    rA   represented_defaultz&DataModelFieldBase.represented_default   s    DLL!!r@   c                      y rF   r?   rM   s    rA   r   zDataModelFieldBase.annotated   r   r@   c                     d| j                   v S )Ndefault_factory)rl   rM   s    rA   r   z&DataModelFieldBase.has_default_factory   s     DKK//r@   c                      y)NTr?   rM   s    rA   r   z(DataModelFieldBase.fall_back_to_nullable   r   r@   rC   N)1r;   r<   r=   rd   r   r_   r^   re   r	   rf   r]   r3   r$   rh   ri   rj   rk   rl   r   rm   rn   ro   rp   rq   rr   rs   r6   r
   r   rt   ru   r   ry   r|   propertyr   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)rU   s   @rA   rc   rc   d   sO   D(3-!GXc]!HdE8C=K$$#Hhtn# FHSM FDcNM4K"'4'E4#'M8C='#t#',,+3*OXc#h'4(0+'>L(3s8$>*.$.	!3 	!4 	! 3  ( (vs{+ ( (< 8C=   /)C. / / x}      "S " " 8C=   0T 0 0 t  r@   rc   template_file_pathrC   c                     t        t        t        | j                  z              }t	        |      }|j                  | j                        S )N)loader)r   r_   r,   rk   r   get_templaterd   )r   r   environments      rA   r   r      s?    c,1C1J1J"JKLF*&9K##$6$;$;<<r@   rd   	file_pathc                     |r1g |j                   d d |j                  | j                  d      d d S | j                  d      d d S )N.)partsstemsplitrd   r   s     rA   get_module_pathr      s^    
__Sb!
NN
 ZZ_Sb!
 	

 ::c?3Br@   c                 8    dj                  t        | |            S )Nr   )joinr   r   s     rA   get_module_namer      s    88OD)455r@   c                   x    e Zd Zeedefd              Zedefd       Z	ede
fd       Zdedede
fdZde
fdZy	)
TemplateBaserC   c                     t         rF   NotImplementedErrorrM   s    rA   r   zTemplateBase.template_file_path   s
     "!r@   c                 ,    t        | j                        S rF   )r   r   rM   s    rA   r+   zTemplateBase.template   s    D3344r@   c                     t         rF   r   rM   s    rA   renderzTemplateBase.render  s    !!r@   argskwargsc                 :     | j                   j                  |i |S rF   )r+   r   )rN   r   r   s      rA   _renderzTemplateBase._render  s    #t}}##T4V44r@   c                 "    | j                         S rF   )r   rM   s    rA   __str__zTemplateBase.__str__
  s    {{}r@   N)r;   r<   r=   r   r   r   r   r*   r   r+   r_   r   r	   r   r   r?   r@   rA   r   r      s    "D "  " 5( 5 5 " " "5S 5C 5C 5 r@   r   c                       e Zd Zy)BaseClassDataTypeN)r;   r<   r=   r?   r@   rA   r   r     s    r@   r   	UNDEFINEDc                      e Zd ZU dZee   ed<   dZee   ed<   d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dZdee   dee   fdZd-dZedefd       Zede	e
df   fd       Zedee   fd       Zedefd       Zedefd       Zedefd       Z e!d edefd!       Z"edefd"       Z#e#jH                  d#eddfd$       Z#edefd%       Z%edee   fd&       Z&edefd'       Z'ede(e)   fd(       Z*edefd)       Z+edefd*       Z,dd+d#ee   defd,Z-y).	DataModel TEMPLATE_FILE_PATH
BASE_CLASSr?   .DEFAULT_IMPORTSNF)

decoratorsbase_classescustom_base_classcustom_template_dirextra_template_datamethodspathr   re   rj   rz   fieldsr   r   r   r   r   r   r   r   re   rj   rC   c                D   | j                   st        d      || _        |xs g | _        g | _        || _        |r |D cg c]  }t        |       c}| _        n| j                          |	| _	        || _
        | | j                  _        ||| j                     nt        t              | _        |r| j!                  |      ng | _        | j                  D ]4  }|j                  s|j                  j$                  j'                  |        6 |r2|j)                  t*              }|r| j                  j-                  |       |xs g | _        |
| _        | j"                  D ]	  }| |_         | j                  j5                  | j6                         || _        || _        y c c}w )NzTEMPLATE_FILE_PATH is undefined)rz   )r   	Exception_custom_template_dirr   _additional_importsr   r   r   set_base_classr   rz   sourcerd   r   rK   r   _validate_fieldsr   childrenr   r   r-   updater   r   rk   extendr   re   	_nullable)rN   rz   r   r   r   r   r   r   r   r   r   re   rj   rP   
base_classall_model_extra_template_datar   s                    rA   ry   zDataModel.__init__  s     &&=>>4G!%/%5213 !28D:34!A.:D !)-$- $ #.  		*T" 	  8>d++F32++ 	;J##$$--44T:	; ,?,C,CI,N),((//0MN")-R&[[ 	 EEL	  	  ''(<(<=#'I:s   Fc                    t               }g }|D ]n  }|j                  rO|j                  |v r&t        d|j                   d| j                          C|j                  |j                         |j	                  |       p |S )NzField name `z` is duplicated on )setrd   r   addr   )rN   r   namesunique_fieldsr   s        rA   r   zDataModel._validate_fieldsW  sy     %24 	(Ezz::&<

|3FtyykRSIIejj)  '	( r@   c                     | j                   xs | j                  }|sg | _        y t        j                  |      }| j
                  j                  |       t        j                  |      g| _        y rF   )	r   r   r   r   from_full_pathr   r   r   from_import)rN   r   base_class_imports      rA   r   zDataModel.set_base_classf  sa    ++>t
 "D"11*=  ''(9:.::;LMNr@   c                     t        | j                        }| j                  !| j                  |z  }|j                         r|S |S rF   )r   r   r   exists)rN   r   custom_template_file_paths      rA   r   zDataModel.template_file_patho  sI    !$"9"9:$$0(,(A(ADV(V%(//100!!r@   c                 P    t        d | j                  D        | j                        S )Nc              3   B   K   | ]  }|j                   D ]  }|   y wrF   )r   )rG   fr   s      rA   rI   z$DataModel.imports.<locals>.<genexpr>{  s      71QYY7Q7Q7s   )r&   r   r   rM   s    rA   r   zDataModel.importsx  s$    77$$
 	
r@   c           	          t        | j                  D ch c]%  }|j                  s|j                  j                  ' c}| j                  D ch c]  }|j
                  D ]  }|  c}}z        S c c}w c c}}w rF   )	frozensetr   rz   r   r   r   )rN   rr   ts       rA   reference_classeszDataModel.reference_classes  sc    '+'8'8H!AKKQ[[H++BQq/A/AB!qBqBC
 	
HBs   A3A3A8c                 .    | j                   j                  S rF   )rz   rd   rM   s    rA   rd   zDataModel.name      ~~"""r@   c                 6    | j                   j                  xs dS )Nr   )rz   duplicate_namerM   s    rA   r   zDataModel.duplicate_name  s    ~~,,22r@   c                 F    dj                  d | j                  D              S )Nz, c              3   4   K   | ]  }|j                     y wrF   )r   )rG   rP   s     rA   rI   z'DataModel.base_class.<locals>.<genexpr>  s     @@s   )r   r   rM   s    rA   r   zDataModel.base_class  s    yy@d.?.?@@@r@   rd   c                 8    d| v r| j                  dd      d   S | S )Nr      r   )rsplit)rd   s    rA   _get_class_namezDataModel._get_class_name  s$    $;;;sA&r**r@   c                 8    | j                  | j                        S rF   )r   rd   rM   s    rA   
class_namezDataModel.class_name  s    ##DII..r@   r  c                     d| j                   j                  v r>| j                   j                  j                  dd      d    d| | j                   _        y || j                   _        y )Nr   r   r   )rz   rd   r   )rN   r  s     rA   r  zDataModel.class_name  sY    $..%%%>>&&--c15a89:,G NN #-DNNr@   c                 8    | j                  | j                        S rF   )r   r   rM   s    rA   duplicate_class_namezDataModel.duplicate_class_name  s    ##D$7$788r@   c                 B    t        | j                  | j                        S rF   )r   rd   r   rM   s    rA   module_pathzDataModel.module_path      tyy$..99r@   c                 B    t        | j                  | j                        S rF   )r   rd   r   rM   s    rA   module_namezDataModel.module_name  r  r@   c              #      K   | j                   D ]   }|j                  j                  E d {    " | j                  E d {    y 7 7 wrF   )r   rg   all_data_typesr   )rN   r   s     rA   r  zDataModel.all_data_types  sD     [[ 	6E5555	6$$$$ 6$s!   )AAAA	A	Ac                     | j                   S rF   )r   rM   s    rA   rj   zDataModel.nullable  s    ~~r@   c                 .    | j                   j                  S rF   )rz   r   rM   s    rA   r   zDataModel.path  r   r@   )r  c          
           | j                   d|xs | j                  | j                  | j                  | j                  | j
                  | j                  d| j                  }|S )N)r  r   r   r   r   r   r?   )r   r  r   r   r   r   r   r   )rN   r  responses      rA   r   zDataModel.render  s_    4<< 
!4T__;;LL((
 &&
 r@   r   ).r;   r<   r=   r   r
   r_   r^   r   r   r   r   r   r   r   rc   r   r   r   r   r	   r]   ry   r   r   r*   r   r   r   r   r   rd   r   r   ra   r   r  setterr  r  r	  r   r$   r  rj   r   r   r?   r@   rA   r   r     s,   (** "J"46OXeFCK016 +/26+/.2JN'+#%) <( <( '(	<(
 T#Y'<( tI/<( $C=<( &d^<( &k#tCH~2E&FG<( $s)$<( tn<( c]<( <( <( 
<(|-.	 	!O "D " " 
vs{+ 
 
 
9S> 
 
 #c # # 3 3 3 AC A A c c  
 /C / / -S -T - - 9c 9 9 :T#Y : : :S : : % 2 % %
 $   #c # # 59 
HSM 
S 
r@   r   N)Eabcr   r   collectionsr   	functoolsr   pathlibr   typingr   r	   r
   r   r   r   r   r   r   r   r   r   r   warningsr   jinja2r   r   r   pydanticr    datamodel_code_generator.importsr   r   r   r   r   "datamodel_code_generator.referencer   r    datamodel_code_generator.typesr!   r"   r#   r$   r%   r&   r'   datamodel_code_generator.utilr(   r)   r*   __file__parentsr,   r^   r-   r_   r.   r/   rc   r   r   r   r   r   objectr   r   r?   r@   rA   <module>r      sK   # # #       : :   E   S R(^++A.;d ;	3 -5FG .
j .
b} }@ =T =h = = #  (4.  T#Y  6# 6(4. 6S 63 * ' & 	3 uh ur@   