o
    û›hÁ  ã                   @   sd   d Z ddlZddlmZ ddlmZ G dd„ deƒZeƒ Z	G dd„ deƒZ
e
ƒ ZG d	d
„ d
eƒZdS )zF
A context manager for managing things injected into :mod:`builtins`.
é    N)ÚConfigurable)ÚInstancec                   @   ó   e Zd ZdS )Ú__BuiltinUndefinedN©Ú__name__Ú
__module__Ú__qualname__© r
   r
   úOc:\Users\shubh\Videos\agent\nova\Lib\site-packages\IPython/core/builtin_trap.pyr      ó    r   c                   @   r   )Ú__HideBuiltinNr   r
   r
   r
   r   r      r   r   c                       sZ   e Zd Zeddd�Zd‡ fdd„	Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Z‡  ZS )ÚBuiltinTrapz1IPython.core.interactiveshell.InteractiveShellABCT)Ú
allow_noneNc                    s<   t t| ƒj|d d� i | _d| _|| _tt| jjdœ| _d S )N)ÚshellÚconfigr   )ÚexitÚquitÚget_ipython)	Úsuperr   Ú__init__Ú_orig_builtinsÚ_nested_levelr   ÚHideBuiltinr   Úauto_builtins)Úselfr   ©Ú	__class__r
   r   r      s   þzBuiltinTrap.__init__c                 C   s$   | j dkr	|  ¡  |  j d7  _ | S )Nr   é   )r   Úactivate)r   r
   r
   r   Ú	__enter__'   ó   
zBuiltinTrap.__enter__c                 C   s$   | j dkr	|  ¡  |  j d8  _ dS )Nr   F)r   Ú
deactivate)r   ÚtypeÚvalueÚ	tracebackr
   r
   r   Ú__exit__.   r!   zBuiltinTrap.__exit__c                 C   sP   t j}| |t¡}|tu r|tur|| j|< ||= dS dS || j|< |||< dS )z$Add a builtin and save the original.N)Úbuiltin_modÚ__dict__ÚgetÚBuiltinUndefinedr   r   )r   Úkeyr$   ZbdictÚorigr
   r
   r   Úadd_builtin5   s   

þ
zBuiltinTrap.add_builtinc                 C   s"   |t u r
tj|= dS |tj|< dS )z0Remove an added builtin and re-set the original.N)r*   r'   r(   )r   r+   r,   r
   r
   r   Úremove_builtinA   s   zBuiltinTrap.remove_builtinc                 C   s(   | j }| j ¡ D ]	\}}|||ƒ qdS )z6Store ipython references in the __builtin__ namespace.N)r-   r   Úitems)r   r-   ÚnameÚfuncr
   r
   r   r   H   s   ÿzBuiltinTrap.activatec                 C   s8   | j }| j ¡ D ]	\}}|||ƒ q| j ¡  d| _dS )z~Remove any builtins which might have been added by add_builtins, or
        restore overwritten ones to their previous values.FN)r.   r   r/   ÚclearZ_builtins_added)r   r.   r+   Úvalr
   r
   r   r"   O   s
   

zBuiltinTrap.deactivate)N)r   r   r	   r   r   r   r    r&   r-   r.   r   r"   Ú__classcell__r
   r
   r   r   r      s    ÿr   )Ú__doc__Úbuiltinsr'   Ztraitlets.config.configurabler   Z	traitletsr   Úobjectr   r*   r   r   r   r
   r
   r
   r   Ú<module>   s    