
    J/Phe              
       v   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 n# e$ r d dlmZmZmZ Y nw xY w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dS )    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                     | rr|rrt          | d          rdt          | j        |          D ]P\  }}t          |t                    r0||v r'||         |k    rt          d||          d|           |||<   KdS dS dS dS )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        O/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/dacite/generics.py__add_genericsr       s     &y &W[:J%K%K &k8)DD 	& 	&JE3%)) &H$$%C)?)?%&VHUO&V&VQT&V&VWWW"%& & & & & &	& 	&    	type_name
data_classc                 b   |j         j        | k    r|S |j        }|                    d          }t	          t          |                    D ]V}	 t          j        |rd                    |d|                    n|         }t          ||           c S # t          $ r Y Sw xY wt          d          )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1'Kc""E3u::  	[!K%!*!5!5!5LF69----- 	 	 	D	
4
5
55s   AB
BBhintc                    t          | t                    rt          |           S t          | t                    r                    | |           S t          |           }t          |           }|rL|rJ|t          urAt          fd|D                       }||k    rt          j
        dk    r||         S || _        | S )zGRecursively replace type vars and forward references by concrete types.c              3   :   K   | ]}t          |          V  d S N)__concretize).0ar#   r   s     r   	<genexpr>z__concretize.<locals>.<genexpr>;   s/      "\"\Q<8Z#H#H"\"\"\"\"\"\r!   )   	   )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                 B    t          |           r| S t          |           S r9   )r   r   r#   s    r   origrJ   H   s&    J j!!!r!   c                    i }t          |           }t          |           }t          |||           t          | d          rB| j        D ]:}t          |          }t          |          }|t
          urt          |||           ;t          |           } t          | g|R i |}	|	                                	                                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00z+,, A- 	A 	AD$T**K I')){Ix@@@j!!J:777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"23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 X X X X X X X X X X X X X X X X X X X ) ) ) ) ) )@44444444444 @ @ @????????????@ > = = = = =& & &gtmAT &Y] & & & &6S 6d 6t 6 6 6 6&
gs"
#/3GTM/BPT
4=   :"T "c " " " " $sCx.    644 4DK 4 4 4 4 4 4s   
5 AA