a
    Fb2                     @   s8   d Z ddlZddlmZ ddlmZ G dd deZdS )zZ
A context manager for handling sys.displayhook.

Authors:

* Robert Kern
* Brian Granger
    N)Configurable)Anyc                       sH   e Zd ZdZe Zd fdd	Zdd Zdd Zd	d
 Z	dd Z
  ZS )DisplayTrapzObject to manage sys.displayhook.

    This came from IPython.core.kernel.display_hook, but is simplified
    (no callbacks or formatters) until more of the core is refactored.
    Nc                    s$   t t| j|d d d | _d| _d S )N)hookZconfigr   )superr   __init__old_hook_nested_level)selfr   	__class__ 8lib/python3.9/site-packages/IPython/core/display_trap.pyr   )   s    zDisplayTrap.__init__c                 C   s$   | j dkr|   |  j d7  _ | S )Nr      )r	   setr
   r   r   r   	__enter__0   s    
zDisplayTrap.__enter__c                 C   s$   | j dkr|   |  j d8  _ dS )Nr   F)r	   unset)r
   typevalue	tracebackr   r   r   __exit__6   s    
zDisplayTrap.__exit__c                 C   s    t j| jurt j| _| jt _dS )zSet the hook.N)sysdisplayhookr   r   r   r   r   r   r   =   s    zDisplayTrap.setc                 C   s   | j t_dS )zUnset the hook.N)r   r   r   r   r   r   r   r   C   s    zDisplayTrap.unset)N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   __classcell__r   r   r   r   r       s   r   )r   r   Ztraitlets.config.configurabler   Z	traitletsr   r   r   r   r   r   <module>   s   