
     Rne                       d Z ddlmZ ddlZddlZddlmZ ddlmZmZm	Z	m
Z
 ddlmZmZ erddlmZ d	Z e	d
      Z G d dej$                        Zej(                  Ze
dddej(                  df	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Ze
ddddd	 	 	 	 	 	 	 	 	 	 	 dd       Zej(                  dddej(                  df	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 ddZy)z#Abstractions over dataclass fields.    )annotationsN)fields)TYPE_CHECKINGCallableTypeVaroverload   )ConfigFieldUniversalKey)DataclassInstancepytoolconfigTc                  .    e Zd Z ej                         Zy)_MISSINGTYPEN)__name__
__module____qualname__enumautoMISSING     3lib/python3.12/site-packages/pytoolconfig/fields.pyr   r      s    diikGr   r   Tc                     y Nr   )defaultdescriptioncommand_lineuniversal_configdefault_factoryinits         r   fieldr"           	r   )r   r   r   r!   c                     y r   r   )r    r   r   r   r!   s        r   r"   r"   %   r#   r   c                    t         t        ||||       i}|t        ur+ |       |t            _        t	        j
                  |||      S | t        usJ t	        j
                  | ||      S )z'Create a dataclass field with metadata.)r   r   r   _default)r    metadatar!   )r   r'   r!   )_METADATA_KEYr
   r   r&   dataclassesr"   )r   r   r   r   r    r!   r'   s          r   r"   r"   1   sy     	{#-%	
H g%+:+<(  +
 	

 '!!WxdKKr   c                F   i }t        |       D ]  }|j                  st        |j                  v r!|j                  t           ||j                  <   n#t        |j                        ||j                  <   |j                  ||j                     _         t        | d      r | j                  j                  j                         D ]  }|j                  st        |j                  j                  |j                  |j                        ||j                  <   d|j                  j                   v r+|j                  j                   d   ||j                     _        d|j                  j                   v s|j                  j                   d   ||j                     _         |S )N)r&   __pydantic_model__)r   _typer&   r   r   )r   r!   r(   r'   namer
   r   typer,   hasattrr+   
__fields__values
field_infor   type_extrar   r   )modelresultdataclass_fieldpydantic_fields       r   _gather_config_fieldsr9   N   s    F!%= F 8 88/>/G/G/V++,/:,440++, 2A1E1EF?''(.F u*+#66AAHHJ 	UN"".9 . 9 9 E E(..+33/~**+
 &)B)B)H)HH *8)B)B)H)H** &++& "^%>%>%D%DD &4%>%>%D%D^%T &++"!	U" Mr   )r   r   r   
str | Noner   tuple[str] | Noner   UniversalKey | Noner    r   r!   boolreturnr   )r    zCallable[[], T]r   r:   r   r;   r   r<   r!   r=   r>   r   )r   zT | _MISSINGTYPEr   r:   r   r;   r   r<   r    zCallable[[], T] | _MISSINGTYPEr!   r=   r>   r   )r5   z+type[DataclassInstance] | DataclassInstancer>   zdict[str, ConfigField])__doc__
__future__r   r)   r   r   typingr   r   r   r   typesr
   r   	_typeshedr   r(   r   Enumr   r   r"   r9   r   r   r   <module>rE      s   ) "    = = ,+CL499  

 
 #&*,0$0$8$8			 $	 *		
 "	 	 	 
	 
 #&*,0	$	 	 $		
 *	 	 	 
	 !- 4 4"&*,06B6J6JLLL $L *	L
 4L L L:!6!!r   