o
    +&]i
                     @  s   d dl mZ d dlZd dlZd dlmZmZmZmZ er@d dl	m
Z
 d dlmZ d dlmZ ejdkr:d dlmZ nd dlmZ G d	d
 d
Ze		d ddd!ddZe		d d"ddZ		d#ddd$ddZdS )%    )annotationsN)TYPE_CHECKINGAnyLiteraloverload)Callable)PathLike)ReadableBuffer)      )Selfc                   @  s8   e Zd ZdZdddZdddZdd
dZdddZdS )_CatchDisplayz+Class to temporarily catch sys.displayhook.returnNonec                 C  s
   d | _ d S Noutputself r   S/var/www/html/IGF-ODF-V3/venv/lib/python3.10/site-packages/altair/utils/execeval.py__init__      
z_CatchDisplay.__init__r   c                 C  s   t j| _| t _| S r   )sysdisplayhookold_hookr   r   r   r   	__enter__   s   z_CatchDisplay.__enter__Literal[False]c                 C  s   | j t_dS )NF)r   r   r   )r   typevalue	tracebackr   r   r   __exit__   s   z_CatchDisplay.__exit__r   r   c                 C  s
   || _ d S r   r   )r   r   r   r   r   __call__#   r   z_CatchDisplay.__call__N)r   r   )r   r   )r   r   )r   r   r   r   )__name__
__module____qualname____doc__r   r   r!   r"   r   r   r   r   r      s    


r   .)strictcode	str | Any	namespacedict[str, Any] | Nonefilename$str | ReadableBuffer | PathLike[Any]r'   r   r   
Any | Nonec                C     d S r   r   r(   r*   r,   r'   r   r   r   
eval_block'      r1   Literal[True]r   c                C  r/   r   r   r0   r   r   r   r1   /   r2   <string>Fboolc                C  s  t j| ddd}|du ri }t }t|jd t jr*|jdd |jdd }}n|jg }}|D ]}tt |gg |dd}	t|	| q2| |D ]}tt 	|g|dd}	t|	| qKW d   n1 shw   Y  |r|j
}
|
du rd|
}t||
S |j
S )z
    Execute a multi-line block of code in the given namespace.

    If the final statement in the code is an expression, return
    the result of the expression.

    If ``strict``, raise a ``TypeError`` when the return value would be ``None``.
    z<ast>exec)r,   modeNsinglez"Expected a non-None value but got )astparser   
isinstancebodyExprcompileModuler6   Interactiver   	TypeError)r(   r*   r,   r'   treecatch_displayto_execto_evalnodecompiledr   msgr   r   r   r1   7   s2    
)..)
r(   r)   r*   r+   r,   r-   r'   r   r   r.   )
r(   r)   r*   r+   r,   r-   r'   r3   r   r   )Nr4   )
r(   r)   r*   r+   r,   r-   r'   r5   r   r.   )
__future__r   r:   r   typingr   r   r   r   collections.abcr   osr   	_typeshedr	   version_infor   typing_extensionsr   r1   r   r   r   r   <module>   s6    
	