
    9 f                         d Z ddlZddlmZ ddlmZ  G d de          Z e            Z	 G d de          Z
 e
            Z G 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__     O/var/www/equiseq/venv/lib/python3.11/site-packages/IPython/core/builtin_trap.pyr   r                r   r   c                       e Zd ZdS )__HideBuiltinNr   r   r   r   r   r      r   r   r   c                   ^     e Zd Z edd          Zd fd	Zd Zd Zd Zd	 Z	d
 Z
d Z xZS )BuiltinTrapz1IPython.core.interactiveshell.InteractiveShellABCT)
allow_noneNc                     t          t          |                               |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__s     r   r   zBuiltinTrap.__init__   sd    k4  ))d)CCC  
 '2&1-1Z-C   r   c                 d    | j         dk    r|                                  | xj         dz  c_         | S )Nr      )r   activate)r    s    r   	__enter__zBuiltinTrap.__enter__'   s6    ""MMOOOar   c                 d    | j         dk    r|                                  | xj         dz  c_         dS )Nr#   F)r   
deactivate)r    typevalue	tracebacks       r   __exit__zBuiltinTrap.__exit__.   s9    ""OOaur   c                     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)   bdictorigs        r   add_builtinzBuiltinTrap.add_builtin5   sq    $yy.//K++++/#C(#JJJ ,+ (,D$E#JJJr   c                 T    |t           u rt          j        |= dS |t          j        |<   dS )z0Remove an added builtin and re-set the original.N)r0   r-   r.   )r    r1   r3   s      r   remove_builtinzBuiltinTrap.remove_builtinA   s2    ###$S)))(,K %%%r   c                 j    | j         }| j                                        D ]\  }} |||           dS )z6Store ipython references in the __builtin__ namespace.N)r4   r   items)r    r4   namefuncs       r   r$   zBuiltinTrap.activateH   sM     &,2244 	$ 	$JD$Kd####	$ 	$r   c                     | j         }| j                                        D ]\  }} |||           | 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)r6   r   r8   clear_builtins_added)r    r6   r1   vals       r   r'   zBuiltinTrap.deactivateO   sf     ,+1133 	% 	%HCN3$$$$!!###$r   )N)r   r	   r
   r   r   r   r%   r+   r4   r6   r$   r'   __classcell__)r!   s   @r   r   r      s        HH $& & &E               
 
 
- - -$ $ $% % % % % % %r   r   )__doc__builtinsr-   traitlets.config.configurabler   	traitletsr   objectr   r0   r   r   r   r   r   r   <module>rE      s    
     6 6 6 6 6 6       ' & & & & & & &%%''  ! ! ! ! !F ! ! !mooB% B% B% B% B%, B% B% B% B% B%r   