o
    h
                     @  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m	Z	 er<d dl
mZ d dlmZ ejdkr6d 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!ddZ		d"ddd#ddZdS )$    )annotationsN)TYPE_CHECKINGAnyCallableLiteraloverload)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   I/var/www/vscode/kcb/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   6   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   r   osr   	_typeshedr	   version_infor   typing_extensionsr   r1   r   r   r   r   <module>   s8    
	