
    GJje              
       N   d dl 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mZmZ d dlmZ 	 d dlmZmZmZ ddlmZ ded	e	d
eee
f   ddfdZdede
de
fdZdee
eef   d
eee
f   de
dee
ef   fdZde
defdZde
deeef   fdZde
dee   fdZy# e$ r d dlmZmZmZ Y ow xY w)    N)Fieldis_dataclass)	AnyDictGenericListTupleTypeTypeVarUnionget_type_hints)DaciteError)get_args
get_originLiteral   )
get_fieldstype_origin	type_argsgenericsreturnc                     | re|rbt        | d      rUt        | j                  |      D ];  \  }}t        |t              s||v r||   |k7  rt        d||    d|       |||<   = yyyy)zkAdds (type var, concrete type) entries derived from a type's origin and args to the provided generics dict.__parameters__zAmbiguous TypeVar: z != N)hasattrzipr   
isinstancer   r   )r   r   r   paramargs        Y/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/dacite/generics.py__add_genericsr       s}    yW[:J%Kk88)DJE3%)H$%C)?%(;HUO;LDQTPU&VWW"%	 E &Ly{    	type_name
data_classc                 H   |j                   j                  | k(  r|S |j                  }|j                  d      }t	        t        |            D ]:  }	 t        j                  |rdj                  |d|        n|   }t        ||       c S  t        d      # t        $ r Y Sw xY w)z
    Try to find the class belonging to the reference in the provided module and,
    if not found, iteratively look in parent modules.
    .NzCould not find reference.)	__class____name__
__module__splitrangelensysmodulesjoingetattrAttributeError)r"   r#   module_namepartsimodules         r   __dereferencer5      s    
 $$	1''Kc"E3u:	[[%!*!5LF69--  4
55  		s   5B	B! B!hintc                 <   t        | t              rt        |       S t        | t              rj	                  | |       S t        |       }t        |       }|rC|rA|t        ur9t        fd|D              }||k7  rt        j                  dk\  r||   S || _        | S )zGRecursively replace type vars and forward references by concrete types.c              3   8   K   | ]  }t        |        y wN)__concretize).0ar#   r   s     r   	<genexpr>z__concretize.<locals>.<genexpr>;   s     "\R[Q<8Z#HR[s   )   	   )r   strr5   r   getr   r   r   tupler,   version_info__args__)r6   r   r#   hint_origin	hint_argsconcrete_hint_argss    ``   r   r:   r:   +   s    
 $T:..$  ||D$''T"KIy[%?""\R["\\*6)"#566
 /DMKr!   c                 2    t        |       r| S t        |       S r9   )r   r   r#   s    r   origrJ   H   s    Jj!!r!   c                    i }t        |       }t        |       }t        |||       t        | d      r=| j                  D ].  }t        |      }t        |      }|t
        us"t        |||       0 t        |       } t        | g|i |}	|	j                         j                         D ]  \  }
}t        |||       |	|
<    |	S )z
    An overwrite of typing.get_type_hints supporting generics and forward references,
    i.e. substituting concrete types in type vars and references.
    __orig_bases__)r   r   r    r   rL   r   rJ   r   copyitemsr:   )r#   argskwargsr   	dc_origindc_argsbasebase_origin	base_argshintskeyr6   s               r   get_concrete_type_hintsrX   N   s    
 %'H:&Iz"G9gx0z+,--D$T*K I'){Ix@	 . j!J:777EZZ\'')	T!$*=c
 * Lr!   c                 *    t        t        |             S )zBAn overwrite of dacite.dataclasses.get_fields supporting generics.)dataclasses_get_fieldsrJ   rI   s    r   r   r   i   s    !$z"233r!   )r,   dataclassesr   r   typingr   r   r   r   r	   r
   r   r   r   dacite.exceptionsr   r   r   r   ImportErrortyping_extensionsr   rZ   r    r@   r5   r:   rJ   rX    r!   r   <module>ra      s   
 + X X X )@44 >& & &gtmAT &Y] &6S 6d 6t 6&
gs"
#/3GTM/BPT
4=:"T "c " $sCx. 644 4DK 4C  @??@s   
B B$#B$