o
    Zh?                     @   sz  d dl mZmZ d dlmZmZmZ d dlmZ d dlm	Z	 d dl
Z
d dlZd dlZG dd deZdd	 Zd
d ZdedefddZdedefddZdedefddZG dd dejZG dd dZeejejg jg jejd eej e j!ej"ej#ej$e
eedZ%dd d& D Z'e(dd e%) D Z*e(dd e') D Z+d d! Z,d"d# Z-d$d% Z.d&d' Z/d(d) Z0d*d+ Z1dS ),    )OrderedDictdeque)datetimedatetime)Decimal)FractionNc                   @   s   e Zd Zdd ZeZdS )
CannotEvalc                 C   s   | j jS N)	__class____name__self r   F/var/www/html/lang_env/lib/python3.10/site-packages/pure_eval/utils.py__repr__   s   zCannotEval.__repr__N)r   
__module____qualname__r   __str__r   r   r   r   r	   
   s    r	   c                    s   t  fdd|D S )Nc                 3   s    | ]} |u V  qd S r
   r   ).0argxr   r   	<genexpr>   s
    
zis_any.<locals>.<genexpr>)any)r   argsr   r   r   is_any   s   r   c                 G   s   t t| g|R  r| S tr
   )r   typer	   )r   typesr   r   r   of_type   s   r   check_dict_valuesdeepc                C   s   t | ||dr	| S t)N)r    r!   )is_standard_typesr	   r   r    r!   r   r   r   of_standard_types   s   r$   c                C   s(   z	t | ||d W S  ty   Y dS w )Nr   F)_is_standard_types_deepRecursionErrorr#   r   r   r   r"   &   s
   r"   c           	      C   s  t | }t|tttttttt	t
ttt d trdS t|tttttttt	r|tfv r-d}nt| }t|ts8J |s>d|fS |rP|ttfv rPdd |  D }n|tu r]| j| j| jg}n| }|D ] }|dkrmd|f  S t|||\}}|s}d|f  S ||7 }qad|fS dS )	N)Tr   r   Tc                 s   s    | ]
}|D ]}|V  qqd S r
   r   )r   pairvr   r   r   r   K   s    z*_is_standard_types_deep.<locals>.<genexpr>i F)Fr   )r   r   strintboolfloatbytescomplexr   r   r   r   r   objecttuple	frozensetlistsetdictr   r   slicelen
isinstanceitemsstartstopstepr%   )	r   r    r!   typlengthr8   itemZis_standardZitem_lengthr   r   r   r%   -   sR   

r%   c                   @   s   e Zd ZdS )_EN)r   r   r   r   r   r   r   r?   ^   s    r?   c                   @   s4   e Zd Zdd Zdd Zedd Zedd Zd	S )
_Cc                 C      d S r
   r   r   r   r   r   fooc       z_C.fooc                 C   rA   r
   r   r   r   r   r   bare   rC   z_C.barc                 C   rA   r
   r   )clsr   r   r   cmg      z_C.cmc                   C   rA   r
   r   r   r   r   r   smj   rG   z_C.smN)	r   r   r   rB   rD   classmethodrF   staticmethodrH   r   r   r   r   r@   b   s    
r@   fromkeys)r6   append__add__insert__mul__rK   r   r   rB   rD   rF   rH   astr	   r?   c                 C   s   i | ]}|t t|qS r   )getattrtyping)r   namer   r   r   
<dictcomp>   s    
rT   z$List Dict Tuple Set Callable Mappingc                 C      h | ]}t |qS r   r   r   fr   r   r   	<setcomp>       rY   c                 C   rU   r   rV   rW   r   r   r   rY      rZ   c                 C   s   t | t |u o| |kS r
   rV   )abr   r   r   eq_checking_types   s   r]   c                 C   s(   t | tjr	| jS t | tjr| jS d S r
   )r7   rP   Nameid	Attributeattr)noder   r   r   ast_name   s
   rc   c                 C   sf   t | }t|gtR  r| jS | tju rdS | tju rdS t|gtR  r1t| dd p0t| dd S d S )NOptionalUnionr   _name)	r   r   safe_name_typesr   rR   rd   re   typing_annotation_typesrQ   )valuer<   r   r   r   	safe_name   s   

rj   c                 C   s&   t | }t|turdS tt||S )NF)rj   r   r)   r]   rc   )ri   rb   Z
value_namer   r   r   has_ast_name   s   rk   c                    sN   t  tjr fdd jD }t di |S t  tr%ttt S  S )Nc                    s.   i | ]}|d krt  |r|tt |qS )ctx)hasattrcopy_ast_without_contextrQ   )r   fieldr   r   r   rT      s    z,copy_ast_without_context.<locals>.<dictcomp>r   )r7   rP   AST_fieldsr   r2   maprn   )r   kwargsr   r   r   rn      s   

rn   c                 C   s"   zt | W S  ty   i  Y S w )z)
    Handles invalid non-dict inputs
    )r4   	Exceptionr   r   r   r   ensure_dict   s
   
ru   )2collectionsr   r   r   r   r   decimalr   	fractionsr   rP   enumrR   rt   r	   r   r   r+   r$   r"   r%   Enumr?   r@   r6   r2   rL   rM   rN   rO   r4   __dict__r   rB   rD   rF   rH   Zsafe_name_samplessplitZtyping_annotation_samplesr0   valuesrg   rh   r]   rc   rj   rk   rn   ru   r   r   r   r   <module>   s\    1	