
    f3i2                        d dl Z d dlZd dlmZmZmZmZmZmZm	Z	 d dl
Z
d dl
mZ ej                  dk\  rd dlmZ n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mZ e j@                  jB                  Z!e j@                  jD                  Z"e j@                  jF                  Z#e j@                  jH                  Z$e j@                  jJ                  Z%d Z&e
jN                   G d	 d
             Z(de)e*e(f   fdZ+	 	 dde)e*e(f   fdZ,de)e*e(f   fdZ-de)e*e(f   fdZ.de)e*e(f   fdZ/de)e*e(f   fdZ0de)e*e(f   fdZ1de)e*e(f   fdZ2dede)e*e(f   fdZ3y)    N)	AnnotatedAnyClassVarOptionalget_args
get_originget_type_hints)field)      )Self)NotRequiredRequiredis_annotatedis_attrsis_dataclassis_enum_flagis_namedtupleis_pydanticis_pydantic_secretis_typeddictresolveresolve_annotatedresolve_optional)UNSET
is_builtinc                 N    t        |       s|S t        |ft        |       dd  z      S )N   )r   r   r   )src_typedst_types     ]/mnt/e/genesis-system/.venvs/voice-bridge/lib/python3.12/site-packages/cyclopts/field_info.py_replace_annotated_typer"   -   s-    !h[8H#5ab#99::    c            
          e Zd ZU dZdZeedf   ed<   ej                  j                  Zej                  ed<    edd      Zeed	<    eej                  j                   d
      Zeed<    eej                  j                   d
      Zeed<    edd
      Zedz  ed<   	 ej                  j                   Zeed<   ej                  j                  Z
eed<   ej                  j,                  Zeed<   ej                  j.                  Zeed<   ej                  j0                  Zeed<   ej                  j2                  Zeed<    ee
eeh      Zeeej                        ed<    ee
eeh      Zeeej                        ed<   eedddej                  ded	edz  defd       Z e!d        Z"e!d        Z#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! Z(y)"	FieldInfoz(Extension of :class:`inspect.Parameter`. .nameskindTF)kw_onlydefaultrequired)r*   r)   r*   
annotationNhelpemptyPOSITIONAL_OR_KEYWORDPOSITIONAL_ONLYKEYWORD_ONLYVAR_POSITIONALVAR_KEYWORD
POSITIONALKEYWORDr,   r+   iparamreturnc                "   |N|j                   |j                  u xr4 |j                  |j                  k7  xr |j                  |j                  k7  } | |j
                  f|t        u r|j                  n||j                  |j                   |      S )N)r'   r,   r(   r*   r+   )r*   r.   r(   r3   r2   namer   r,   )clsr7   r,   r+   s       r!   from_iparamzFieldInfo.from_iparamO   s    &,,. 9KK6#5#559KK6#8#88  ;;.,6%,?v((ZNN
 	
r#   c                 <   | j                   }|t        j                  j                  u st	        |      t
        u rWt        || j                  t        j                  j                  u s| j                  t        nt        | j                              }t        |      }|S )z=Annotation with Optional-removed and cyclopts type-inferring.)r,   inspect	Parameterr.   r   r   r"   r*   strtyper   )selfhints     r!   rC   zFieldInfo.hint`   s{     7$$***gdms.B*T\\W->->-D-DDH\cbfgkgsgsbtD  %r#   c                      | j                   d   S )zThe **first** provided name.r   )r'   rB   s    r!   r:   zFieldInfo.namek   s     zz!}r#   c                 2    | j                   | j                  v S N)r(   r4   rE   s    r!   is_positionalzFieldInfo.is_positionalp   s    yyDOO++r#   c                 2    | j                   t        t        fv S rG   )r(   r0   r2   rE   s    r!   is_positional_onlyzFieldInfo.is_positional_onlyt   s    yy_n===r#   c                 2    | j                   | j                  v S rG   )r(   r5   rE   s    r!   
is_keywordzFieldInfo.is_keywordx   s    yyDLL((r#   c                 2    | j                   t        t        fv S rG   )r(   r1   r3   rE   s    r!   is_keyword_onlyzFieldInfo.is_keyword_only|   s    yy\;777r#   c                 .    t        j                  | fi |S rG   )attrsevolve)rB   kwargss     r!   rQ   zFieldInfo.evolve   s    ||D+F++r#   ))__name__
__module____qualname____doc__r'   tupler@   __annotations__r>   r?   r/   r(   _ParameterKindr
   r+   boolr.   r*   r   r,   r-   r   r0   r1   r2   r3   	frozensetr4   r5   classmethodr   r   r<   propertyrC   r:   rH   rJ   rL   rN   rQ   r&   r#   r!   r%   r%   3   sO   2E5c?#*#4#4#J#JD'
 
 J47Hd7!2!2!8!8$GGSGG$5$5$;$;TJJJT48D#*8p
 ''--E8-&-&7&7&M&M8M ' 1 1 A AOXA$..;;L(;&00??NH?#--99K9>G	@?J7#9#9:;  <EF[]ikvEw;xGXi 6 678xINhl 
!2!2 
3 
Z^aeZe 
qu 
 
      ,t , , >D > > )D ) ) 8 8 8,r#   r%   r8   c                    i }t        | d      j                         D ]a  \  }}t        t        |            }|t        u rd}n|t
        u rd}n| j                  rd}nd}t        |ft        j                  ||      ||<   c |S )NTinclude_extrasFr6   )	r	   itemsr   r   r   r   	__total__r%   r1   )	typeddictoutr:   r,   originr+   s         r!   _typed_dict_field_infosrf      s    
C*9TJPPR 
ij-j9:XH{"H  HHtgy'='=*_ghD	
i Jr#   c                     i }t        | j                        j                         D ]P  \  }}|j                  dk(  r|s|j                  |j
                  u r1|s|j                  |j                  u rL|||<   R |S )NrB   )signature_parameters__init__ra   r:   r(   r2   r3   )finclude_var_positionalinclude_var_keywordrd   r:   
field_infos         r!   _generic_class_field_infosrn      s|    
 C0<BBD j??f$%*//Z=V=V*V"z*:P:P'PD	 Jr#   c           	      2   ddl m} i }| j                  j                         D ]  \  }}g }|j                  rx| j
                  j                  dd      r|j                  |       |j                  |j                         |j                  j                         }||vr#|j                  |       n|j                  |       |j                  xs d }|j                  D ](  }t        |d      s|j                  s|j                  }* |j                  r,t        |j                  |ft        |j                        z      }	nC|j                  r+t        |j                  ft        |j                        z      }	n|j                  }	t!        t        |      |j"                  rt$        j&                  j(                  nt$        j&                  j*                  |	|j,                  |u rt         j.                  n|j,                  |j1                         |      ||<    |S )Nr   )PydanticUndefinedpopulate_by_nameFdescription)r'   r(   r,   r*   r+   r-   )pydantic_corerp   model_fieldsra   aliasmodel_configgetappendlowerrr   metadatahasattrdiscriminatorr   r,   rW   r%   r)   r>   r?   r1   r/   r*   r.   is_required)
modelrp   rd   python_namepydantic_fieldr'   legacy_formr-   metar,   s
             r!   _pydantic_field_infosr      s   /
C','9'9'?'?'A *
#^!!%%&8%@[)LL--. )..446K%'[)LL% ))1T"++ 	(Dt]+0@0@''	( ''"N$=$=~#NQVWeWnWnQo#opJ$$"N$=$=#?%H_H_B`#`aJ'22J$,3A3I3I""//wO`O`OvOv!'5'='=AR'RIOOXfXnXn#//1
KG*
V Jr#   c           
         i }t        |       }| j                  D ]l  }t        |ft        j                  |j	                  |t
              | j                  j	                  |t        j                        || j                  v      ||<   n |S )Nr'   r(   r,   r*   r+   )r	   _fieldsr%   r/   rw   r@   _field_defaultsr.   )rC   rd   
type_hintsr:   s       r!   _namedtuple_field_infosr      s}    
C%J 
'00!~~dC0((,,T9??C!5!55
D	
 Jr#   c                    i }t        | j                        }| j                  D ]  }|j                  s||j                     }t        |j                  t        j                        rd}d }n=|j                  t        j                  u rd}t        j                  }nd}|j                  }|j                  r|j                  j                  d      nd }|j                  |j                  f|||      ||j                  <    |S )NFTr-   )r'   r+   r*   r-   )rh   ri   __attrs_attrs__initru   
isinstancer*   rP   FactoryNOTHINGr%   r.   rz   rw   rQ   r:   )rC   rd   field_infos	attributerm   r+   r*   r-   s           r!   _attrs_field_infosr      s    
C&t}}5K)) 
	~~ 1
i''7HG%--/HooGH''G1:1C1Cy!!%%f-)00??$xt  1  
JOO%
* Jr#   c           	         dd l }i }|j                  |       }t        | d      }|D ]F  }|j                  |j                  ur|j                         }d}n9|j
                  |j                  ur|j
                  }d}nt        j                  }d}|j                  |j                  t        j                        }|j                  rt        j                  nt        j                  }	d }
|j                  r8|j                  j                  d      xs |j                  j                  d      }
|
st        |d      r|j                  }
t        |j                  f|	||||
      ||j                  <   I |S )Nr   Tr_   Fr-   doc)r'   r(   r+   r,   r*   r-   )dataclassesfieldsr	   default_factoryMISSINGr*   r%   r.   rw   r:   r)   r1   r/   rz   r{   r   )rC   r   rd   r   r   rj   r*   r+   r,   r(   r-   s              r!   _dataclass_field_infosr     s4   
C%FT:J  
K$7$77'')GHYYk111iiGHooGH^^AFFIOO<
)*y%%	8W8W ::::>>&)BQZZ^^E-BD5)55D66)!
AFF3 
B Jr#   c                 x    i }| j                   D ](  }t        |ft        j                  t        dd      ||<   * |S )zNExtract field infos from a Flag enum, treating each member as a boolean field.Fr   )__members__r%   r1   rZ   )	enum_flagrd   member_names      r!   _enum_flag_field_infosr   +  sK    
C ,, 

$.'' 	
K

 Jr#   c                    t        |       ri S t        |       ri S t        | d      rt        | j                        S t        |       rt        |       S t        |       rt        |       S t        |       rt        |       S t        |       rt        |       S t        |       rt        |       S t        |       rt!        |       S t#        |       S )N__supertype__)r   r   r{   get_field_infosr   r   r   r   r   r   r   r   rf   r   r   r   r   rn   )rC   s    r!   r   r   <  s     $	 $	 t_%t1122D &d++	T	$T**	t	&t,,	d	&t,,	$!$''	d	%d++)$//r#   rj   c                 d   dt         j                  v r!ddlm} t	        | |      r| j
                  n| }n| }t        |d      }i }t        j                  |       j                  j                         D ];  \  }}|j                  ||j                        }t        j                  ||      ||<   = |S )N	functoolsr   )partialTr_   )r,   )sysmodulesr   r   r   funcr	   r>   	signature
parametersra   rw   r,   r%   r<   )rj   r   r   r   rd   r:   r7   r,   s           r!   rh   rh   ]  s    ckk!%#Aw/qvvQT:J
C))!,77==? If^^D&*;*;<
))&Z)HD	I Jr#   )FF)4r>   r   typingr   r   r   r   r   r   r	   rP   r
   version_infor   typing_extensionscyclopts.annotationsr   r   r   r   r   r   r   r   r   r   r   r   r   cyclopts.utilsr   r   r?   r/   r0   r1   r2   r3   r"   definer%   dictr@   rf   rn   r   r   r   r   r   r   rh   r&   r#   r!   <module>r      s    
    w&    -))?? ##33  --""11++; M, M, M,`$sI~*> & ! 
#y.	"/Di$8 /dT#y.%9 S)^ 4 6'Di$8 'Tc9n)= "0T#y.1 0BC Di$8 r#   