
    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y)zF
A context manager for managing things injected into :mod:`builtins`.
    N)Configurable)Instancec                       e Zd Zy)__BuiltinUndefinedN__name__
__module____qualname__     T/var/www/cvtools/html/venv/lib/python3.12/site-packages/IPython/core/builtin_trap.pyr   r          r   r   c                       e Zd Zy)__HideBuiltinNr   r   r   r   r   r      r   r   r   c                   X     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_nonec                     t         t        |   |d        i | _        d| _        || _        t        t        | j
                  j                  d| _        y )N)shellconfigr   )exitquitget_ipython)	superr   __init___orig_builtins_nested_levelr   HideBuiltinr   auto_builtins)selfr   	__class__s     r   r   zBuiltinTrap.__init__   sO    k4)d)C  
 '2&1-1ZZ-C-C r   c                 n    | j                   dk(  r| j                          | xj                   dz  c_         | S )Nr      )r   activate)r    s    r   	__enter__zBuiltinTrap.__enter__'   s/    "MMOar   c                 l    | j                   dk(  r| j                          | xj                   dz  c_         y)Nr#   F)r   
deactivate)r    typevalue	tracebacks       r   __exit__zBuiltinTrap.__exit__.   s.    "OOar   c                     t         j                  }|j                  |t              }|t        u r|t        ur|| j
                  |<   ||= yy|| j
                  |<   |||<   y)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   sf    $$yy./K+++/##C(#J , (,D$E#Jr   c                 ^    |t         u rt        j                  |= y|t        j                  |<   y)z0Remove an added builtin and re-set the original.N)r0   r-   r.   )r    r1   r3   s      r   remove_builtinzBuiltinTrap.remove_builtinA   s)    ##$$S)(,K  %r   c                 r    | j                   }| j                  j                         D ]  \  }} |||        y)z6Store ipython references in the __builtin__ namespace.N)r4   r   items)r    r4   namefuncs       r   r$   zBuiltinTrap.activateH   s;     &&,,224 	$JD$d#	$r   c                     | j                   }| j                  j                         D ]  \  }} |||        | j                  j                          d| _        y)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   sU     ,,++113 	%HC3$	%!!#$r   )N)r   r	   r
   r   r   r   r%   r+   r4   r6   r$   r'   __classcell__)r!   s   @r   r   r      s6    H $&E 
-$%r   r   )__doc__builtinsr-   traitlets.config.configurabler   	traitletsr   objectr   r0   r   r   r   r   r   r   <module>rE      sE   
  6  ' &%'  !F !oB%, B%r   