
    c
                    t    d Z ddlmZ ddlZddlmZmZ ddlmZmZ ddl	m
Z
mZmZ dZeddded	fddZddZdS )z#Abstractions over dataclass fields.    )annotationsN)MISSINGfields)AnyCallable   )ConfigField	DataclassUniversalKeypytoolconfigTdefaultr   description
str | Nonecommand_linetuple[str] | Noneuniversal_configUniversalKey | Nonedefault_factoryCallable[[], Any] | Noneinitboolreturndataclasses.Fieldc                    t           t          ||||           i}|t          ur3|1 |            |t                    _        t	          j        |||          S | t          usJ t	          j        | ||          S )z'Create a dataclass field with metadata.)r   r   r   _defaultN)r   metadatar   )r   r   r   )_METADATA_KEYr	   r   r   dataclassesfield)r   r   r   r   r   r   r   s          3lib/python3.11/site-packages/pytoolconfig/fields.pyr   r      s     	{#-%	
 
 
H g% 
/ 
+:?+<+<( +hT
 
 
 	
 '!!!!WxdKKKK    modeltype[Dataclass] | Dataclassdict[str, ConfigField]c                   i }t          |           D ]f}|j        r]t          |j        v r|j        t                   ||j        <   nt          |j                  ||j        <   |j        ||j                 _        gt          | d          r| j
        j                                        D ]}|j        rt          |j        j        |j        |j                  ||j        <   d|j        j        v r"|j        j        d         ||j                 _        d|j        j        v r"|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   )r"   resultdataclass_fieldpydantic_fields       r    _gather_config_fieldsr3   (   s{    F!%== F F 	F 88 />/G/V+,,/:,40 0 0+, 2A1EF?'(.u*++ U#6AHHJJ 	U 	UN" U.9 . 9 E(.+3/ / /~*+
 &)B)HH  *8)B)H** &+& "^%>%DD U &4%>%D^%T &+"Mr!   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r"   r#   r   r$   )__doc__
__future__r   r   r   r   typingr   r   typesr	   r
   r   r   r   r3    r!   r    <module>r9      s    ) ) " " " " " "     ' ' ' ' ' ' ' '                 7 7 7 7 7 7 7 7 7 7 "&*,007L L L L L6! ! ! ! ! !r!   