
    h;                        S SK Jr  S SKrS SKrS SKJrJr  SSKJrJ	r	  SSK
JrJrJr  SSKJrJrJr  SS	KJr        SS
 jr      SS jrSS jrg)    )annotationsN)Anycast   )_docstrings	_resolver)MISSINGMISSING_AND_MISSING_NONPROPMISSING_NONPROP   )StructConstructorSpecStructFieldSpecStructTypeInfo)is_flax_modulec           	         [         R                  " U5      (       d   e[        U5      nUR                  R                  (       d+  [
        R                  " SU SU R                   SU S35        gg)zREnsure that a dataclass type used directly as a default value is marked as
frozen.zMutable type z! is used as a default value for `zY`. This is dangerous! Consider using `dataclasses.field(default_factory=...)` or marking z as frozen.N)dataclassesis_dataclasstype__dataclass_params__frozenwarningswarnname)fielddefault_instanceclss      b/home/james-whalen/.local/lib/python3.13/site-packages/tyro/constructors/_struct_spec_dataclass.py4_ensure_dataclass_instance_used_as_default_is_frozenr      sk    
 ##$45555

 C##**C5 A%** NuK)	
 +    c                @   U[         L a  [         $ U[        ;  a2  Ub/  [        XR                  5      (       a  [	        XR                  5      $ U R
                  [        R                   LaF  U R
                  n[        U5      [        La&  [        R                  " U5      (       a  [        X5        U$ U R                  [        R                   LaN  [        R                  " U R                  5      (       a  U R                  U R                  L d  U R                  5       $ [        $ )z>Helper for getting the default instance for a dataclass field.)r	   r
   hasattrr   getattrdefaultr   r   r   r   default_factoryr   )r   parent_default_instancer#   s      r   _get_dataclass_field_defaultr&      s     ') 	 'BB#/ *JJ772JJ?? }}K///-- =$)A)A')J)J@P K$7$77 	  ,,1F1F%**1T$$&& r   c           
     (   [         R                  " U R                  5      (       d  g[        U R                  5      u  p/ n[	        S [
        R                  " U R                  5      5       GH  nU(       a  UR                  U;   a  M  [        X@R                  5      nUR                  R                  SS5      n[        U[        [        S5      45      (       d   eUc6  [        R                  " U R                  UR                  U R                   5      n[        UR                  [        5      (       a   eUR#                  [%        UR                  ['        [(        UR                  5      UUS95        GM
     [+        U R                  [-        U5      S9$ )z"Rule for handling dataclass types.Nc                    U R                   $ )N)init)r   s    r   <lambda> dataclass_rule.<locals>.<lambda>T   s    ejjr   help)r   r   r#   helptext)instantiatefields)r   r   r   r   filterr   resolved_fieldsr   r&   r#   metadataget
isinstancestrr   get_field_docstringmarkersappendr   r   r   r   tuple)infois_flaxflax_skip_fields
field_listdc_fieldr#   r-   s          r   dataclass_ruler?   I   s<   ##DII.. !/tyy 9G J )";";DII"F x}}(88.xF $$((6(S$t*$56666 "66		8==$,,H hmmS1111]]#x}}-!		
-< !TYYuZ?PQQr   )r   dataclasses.Fieldr   r   returnNone)r   r@   r%   r   rA   r   )r:   r   rA   zStructConstructorSpec | None)
__future__r   r   r   typingr   r    r   r   
_singletonr	   r
   r   _struct_specr   r   r   _struct_spec_flaxr   r   r&   r?    r   r   <module>rJ      sd    "    % N N P P -

03
	
**7:**Z(Rr   