o
    MEgf                     @   s  d dl mZmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZmZ ddlmZ dd	lmZmZ dd
lmZ erNddlmZmZmZmZ G dd de	ZedkrddlmZ e ZddlmZ ddlmZmZ edddeddZ e!  e!e  dS dS )    )OptionalTYPE_CHECKING   )BoxROUNDED)AlignMethod)JupyterMixin)Measurementmeasure_renderables)PaddingPaddingDimensions)	StyleType)TextTextType)Segment)ConsoleConsoleOptionsRenderableTypeRenderResultc                   @   s  e Zd ZdZefddddddddddd
d	d
dedee dedee	 de	de
de
dee dee dede	ddfddZeefddddddddd	d
dedee dedee	 de
de
dee dedd fddZedee fddZ			 	!		"d(d#d$Z			 	!		%d)d&d'ZdS )*Panela  A console renderable that draws a border around its contents.

    Example:
        >>> console.print(Panel("Hello, World!"))

    Args:
        renderable (RenderableType): A console renderable object.
        box (Box, optional): A Box instance that defines the look of the border (see :ref:`appendix_box`.
            Defaults to box.ROUNDED.
        safe_box (bool, optional): Disable box characters that don't display on windows legacy terminal with *raster* fonts. Defaults to True.
        expand (bool, optional): If True the panel will stretch to fill the console
            width, otherwise it will be sized to fit the contents. Defaults to True.
        style (str, optional): The style of the panel (border and contents). Defaults to "none".
        border_style (str, optional): The style of the border. Defaults to "none".
        width (Optional[int], optional): Optional width of panel. Defaults to None to auto-detect.
        height (Optional[int], optional): Optional height of panel. Defaults to None to auto-detect.
        padding (Optional[PaddingDimensions]): Optional padding around renderable. Defaults to 0.
        highlight (bool, optional): Enable automatic highlighting of panel title (if str). Defaults to False.
    NcenterTnone)r   r   F)
titletitle_alignsafe_boxexpandstyleborder_stylewidthheightpadding	highlight
renderabler   boxr   r   r   r   r   r   r   r   r    r!   returnc       
         C   sL   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _d S )N)r"   r#   r   r   r   r   r   r   r   r   r    r!   )selfr"   r#   r   r   r   r   r   r   r   r   r    r!    r&   d/var/www/eduai.edurigo.com/doc_train/edurigo_ai/Puru/venv/lib/python3.10/site-packages/rich/panel.py__init__&   s   
zPanel.__init__)r   r   r   r   r   r   r    c          
      C   s   | |||||||||	dd
S )z2An alternative constructor that sets expand=False.F)r   r   r   r   r   r   r    r   r&   )
clsr"   r#   r   r   r   r   r   r   r    r&   r&   r'   fitC   s   z	Panel.fitc                 C   s^   | j r-t| j trt| j n| j  }d|_|jdd|_d|_	|
  |d |S d S )N 
 Tr   )r   
isinstancestrr   from_markupcopyendplainreplaceno_wrapexpand_tabspad)r%   
title_textr&   r&   r'   _title_   s   

zPanel._titleconsoler   optionsr   r   c                 c   s   t | j}t|rt | j|n| j}|| j}||| j }| jd u r*|j	nt
|j	| j}| jd u r9|jn| j}| jj||d}	| j}
|
d urN||
_| jrU|d n|j|||d dj}| jpi|jpid }|rp|d8 }|
d urt
|j	d t||
jd }|d }|j||| jd}|j|||d}t|	j|}t|	j |}t }|
d u s|dkrt|	|d g|V  n(|
j| j|d |	j d t|	j!|	j  |V  |"|
E d H  t|	j |	j# |V  |V  |D ]}|V  |E d H  |V  |V  qt|	$|d g|V  |V  d S )N)safe   )r;   )r   r   r!   )r      )	character)%r   unpackr    anyr"   	get_styler   r   r   	max_widthminr   r#   
substituter9   r   measureupdate_widthmaximumr   maxcell_lenupdater!   render_linesr   mid_left	mid_rightlineget_topalignr   toptop_leftrender	top_right
get_bottom)r%   r:   r;   _paddingr"   r   r   r   r   r#   r8   child_widthchild_heightchild_optionslines
line_startline_endnew_linerO   r&   r&   r'   __rich_console__o   sf   



zPanel.__rich_console__r	   c           
      C   sz   | j }t| j\}}}}|| }|r| j|gn| jg}| jd u r5t|||j| d |j	| d }	n| j}	t
|	|	S )Nr=   )r9   r   r@   r    r"   r   r
   rG   rC   rH   r	   )
r%   r:   r;   r9   _rightleftr    renderablesr   r&   r&   r'   __rich_measure__   s$   


zPanel.__rich_measure__)r:   r   r;   r   r$   r   )r:   r   r;   r   r$   r	   )__name__
__module____qualname____doc__r   r   r   r   r   boolr   intr   r(   classmethodr*   propertyr   r9   r_   rd   r&   r&   r&   r'   r      s    	

	

?r   __main__)r   )r   )r   DOUBLEzHello, World!z
rich.Panelzwhite on blue)r   r   r#   r    N)"typingr   r   r#   r   r   rQ   r   jupyterr   rF   r	   r
   r    r   r   r   r   textr   r   segmentr   r:   r   r   r   r   r   re   crn   pprintr&   r&   r&   r'   <module>   s8     5