o
    MEg                     @   s   d dl mZmZmZmZ ddlmZ ddlmZ ddl	m
Z
 dZG dd dZG d	d
 d
Zdee defddZdee deddfddZdededdfddZdS )    )AnyDictIterableList   )get_console)Segment)DEFAULT_TERMINAL_THEMEz<pre style="white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace">{code}</pre>
c                
   @   sP   e Zd ZdZdededdfddZdee d	ee d
edeeef fddZ	dS )JupyterRenderablez)A shim to write html to Jupyter notebook.htmltextreturnNc                 C   s   || _ || _d S )N)r   r   )selfr   r    r   f/var/www/eduai.edurigo.com/doc_train/edurigo_ai/Puru/venv/lib/python3.10/site-packages/rich/jupyter.py__init__   s   
zJupyterRenderable.__init__includeexcludekwargsc                    sF   | j | jd}rfdd| D } r! fdd| D }|S )Nz
text/plainz	text/htmlc                       i | ]\}}| v r||qS r   r   .0kvr   r   r   
<dictcomp>       z7JupyterRenderable._repr_mimebundle_.<locals>.<dictcomp>c                       i | ]\}}| vr||qS r   r   r   r   r   r   r      r   )r   r   items)r   r   r   r   datar   r   r   r   _repr_mimebundle_   s   z#JupyterRenderable._repr_mimebundle_)
__name__
__module____qualname____doc__strr   r   r   r   r#   r   r   r   r   r
      s    
r
   c                
   @   s:   e Zd ZdZdee dee dedeeef fddZdS )	JupyterMixinz@Add to an Rich renderable to make it render in Jupyter notebook.r   r   r   r   c           	         sl   t  }t|| |j}t|}||}||d}r'fdd| D } r4 fdd| D }|S )Nr   c                    r   r   r   r   r   r   r   r   +   r   z2JupyterMixin._repr_mimebundle_.<locals>.<dictcomp>c                    r   r   r   r   r   r   r   r   -   r   )r   listrenderoptions_render_segments_render_bufferr    )	r   r   r   r   consolesegmentsr   r   r!   r   r"   r   r#   "   s   

zJupyterMixin._repr_mimebundle_N)	r$   r%   r&   r'   r   r(   r   r   r#   r   r   r   r   r)      s    
r)   r0   r   c                 C   s   dt dt fdd}g }|j}t}t| D ]1\}}}|rq||}|rB||}|r3d| d| dn|}|jrBd|j d| d	}|| qd
|}	tj	|	d}
|
S )Nr   r   c                 S   s   |  dd dd ddS )zEscape html.&z&amp;<z&lt;>z&gt;)replace)r   r   r   r   escape2   s   z _render_segments.<locals>.escapez<span style="z">z</span>z	<a href="z</a> )code)
r(   appendr	   r   simplifyget_html_stylelinkjoinJUPYTER_HTML_FORMATformat)r0   r5   	fragmentsappend_fragmentthemer   stylecontrolruler7   r   r   r   r   r-   1   s"   


r-   r   Nc                 C   s*   ddl m} t| }t||}|| dS )zRender segments to Jupyter.r   )displayN)IPython.displayrE   r-   r
   )r0   r   ipython_displayr   jupyter_renderabler   r   r   rE   J   s   
rE   argsr   c                  O   s   t  }|j| i |S )zProxy for Console print.)r   print)rI   r   r/   r   r   r   rJ   S   s   rJ   )typingr   r   r   r   r6   r   segmentr   terminal_themer	   r=   r
   r)   r(   r-   rE   rJ   r   r   r   r   <module>   s    	