
    ^h                         S r SSKrSSKJr  SSKJr   " S S\5      r\" 5       r	 " S S\5      r
\
" 5       r " S	 S
\5      rg)zF
A context manager for managing things injected into :mod:`builtins`.
    N)Configurable)Instancec                       \ rS rSrSrg)__BuiltinUndefined    N__name__
__module____qualname____firstlineno____static_attributes__r       S/home/james-whalen/.local/lib/python3.13/site-packages/IPython/core/builtin_trap.pyr   r      s    $r   r   c                       \ rS rSrSrg)__HideBuiltin   r   Nr	   r   r   r   r   r      s    Tr   r   c                   ^   ^  \ rS rSr\" SSS9rSU 4S jjrS rS rS r	S	 r
S
 rS rSrU =r$ )BuiltinTrap   z1IPython.core.interactiveshell.InteractiveShellABCT)
allow_nonec                    > [         [        U ]  US S9  0 U l        SU l        Xl        [        [        U R
                  R                  S.U l        g )N)shellconfigr   )exitquitget_ipython)	superr   __init___orig_builtins_nested_levelr   HideBuiltinr   auto_builtins)selfr   	__class__s     r   r   BuiltinTrap.__init__   sM    k4)d)C  
 '2&1-1ZZ-C-C r   c                 p    U R                   S:X  a  U R                  5         U =R                   S-  sl         U $ )Nr      )r!   activate)r$   s    r   	__enter__BuiltinTrap.__enter__'   s/    "MMOar   c                 n    U R                   S:X  a  U R                  5         U =R                   S-  sl         g)Nr(   F)r!   
deactivate)r$   typevalue	tracebacks       r   __exit__BuiltinTrap.__exit__.   s.    "OOar   c                     [         R                  nUR                  U[        5      nU[        L a  U[        La  X@R
                  U'   X1	 ggX@R
                  U'   X#U'   g)z$Add a builtin and save the original.N)builtin_mod__dict__getBuiltinUndefinedr"   r    )r$   keyr/   bdictorigs        r   add_builtinBuiltinTrap.add_builtin5   s^    $$yy./K+++/##C(J , (,$#Jr   c                 `    U[         L a  [        R                  U	 gU[        R                  U'   g)z0Remove an added builtin and re-set the original.N)r7   r4   r5   )r$   r8   r:   s      r   remove_builtinBuiltinTrap.remove_builtinA   s)    ##$$S)(,K  %r   c                 r    U R                   nU R                  R                  5        H  u  p#U" X#5        M     g)z6Store ipython references in the __builtin__ namespace.N)r;   r#   items)r$   r;   namefuncs       r   r)   BuiltinTrap.activateH   s2     &&,,224JD# 5r   c                     U R                   nU R                  R                  5        H  u  p#U" X#5        M     U R                  R                  5         SU l        g)zvRemove any builtins which might have been added by add_builtins, or
restore overwritten ones to their previous values.FN)r>   r    rA   clear_builtins_added)r$   r>   r8   vals       r   r-   BuiltinTrap.deactivateO   sL     ,,++113HC3$ 4!!#$r   )rG   r!   r    r#   r   )N)r
   r   r   r   r   r   r   r*   r1   r;   r>   r)   r-   r   __classcell__)r%   s   @r   r   r      s;    H $&E 
-$% %r   r   )__doc__builtinsr4   traitlets.config.configurabler   	traitletsr   objectr   r7   r   r"   r   r   r   r   <module>rP      sE   
  6  ' &%'  !F !oB%, B%r   