o
    MEg                  	   @   s   d dl mZmZmZmZmZmZ er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dlmZ eeee eeef eeeeef f ZG dd	 d	eZed
krgd dlmZ eedddd dS dS )    )castListOptionalTupleTYPE_CHECKINGUnion   )ConsoleConsoleOptionsRenderableTypeRenderResult)JupyterMixin)Measurement)Style)Segmentc                
   @   s   e Zd ZdZ	d!ddddddd	d
eeef defddZe	ddde
dd fddZedd	dee
e
e
e
f fddZdefddZ						d"ddZ						d#ddZd S )$Paddinga
  Draw space around content.

    Example:
        >>> print(Padding("Hello", (2, 4), style="on blue"))

    Args:
        renderable (RenderableType): String or other renderable.
        pad (Union[int, Tuple[int]]): Padding for top, right, bottom, and left borders.
            May be specified with 1, 2, or 4 integers (CSS style).
        style (Union[str, Style], optional): Style for padding characters. Defaults to "none".
        expand (bool, optional): Expand padding to fit available width. Defaults to True.
    r   r   r   r   noneT)styleexpand
renderabler   padPaddingDimensionsr   r   c                C   s0   || _ | |\| _| _| _| _|| _|| _d S )N)r   unpacktoprightbottomleftr   r   )selfr   r   r   r    r   f/var/www/eduai.edurigo.com/doc_train/edurigo_ai/Puru/venv/lib/python3.10/site-packages/rich/padding.py__init__!   s   
zPadding.__init__levelreturnc                 C   s   t |ddd|fddS )zMake padding instance to render an indent.

        Args:
            renderable (RenderableType): String or other renderable.
            level (int): Number of characters to indent.

        Returns:
            Padding: A Padding instance.
        r   F)r   r   )r   )clsr   r"   r   r   r    indent.   s   zPadding.indentc                 C   s   t | tr| | | | fS t| dkr| d }||||fS t| dkr2ttttf | \}}||||fS t| dkrMttttttf | \}}}}||||fS tdt|  d)z&Unpack padding specified in CSS style.r   r         z)1, 2 or 4 integers required for padding; z given)
isinstanceintlenr   r   
ValueError)r   _padpad_top	pad_rightr   r   r   r   r   r   r    r   <   s   
zPadding.unpackc                 C   s.   d| j d| j d| j d| j d| j dS )NzPadding(z, (,z)))r   r   r   r   r   )r   r   r   r    __repr__L   s   .zPadding.__repr__consoler	   optionsr
   r   c                 c   s`   | | j}| jr|j}ntt||| jj| j	 | j
 |j}|j| j||| j	 | j
 |dd}t}| j	rA|d| j	 |nd }| j
rS|d| j
  || gn| g}d }	| jrp|d|  d|g}	|	| j E d H  |r|D ]}
|V  |
E d H  |E d H  qtn|D ]}
|
E d H  |E d H  q| jr|	p|d|  d|g}	|	| j E d H  d S d S )NT)r   r    
)	get_styler   r   	max_widthminr   getr   maximumr   r   render_linesupdate_widthr   liner   r   )r   r1   r2   r   widthlines_Segmentr   r   
blank_liner<   r   r   r    __rich_console__O   sR   

zPadding.__rich_console__r   c                 C   s\   |j }| j| j }|| dk rt||S t||| j\}}t|| || }||}|S )Nr   )r6   r   r   r   r8   r   with_maximum)r   r1   r2   r6   extra_widthmeasure_minmeasure_maxmeasurementr   r   r    __rich_measure__{   s   

zPadding.__rich_measure__N)r   )r1   r	   r2   r
   r#   r   )r1   r	   r2   r
   r#   r   )__name__
__module____qualname____doc__r   strr   boolr!   classmethodr)   r%   staticmethodr   r   r0   rA   rG   r   r   r   r    r      sD    

 
,r   __main__)printzHello, World)r&   r'   zon blue)r   N)typingr   r   r   r   r   r   r1   r	   r
   r   r   jupyterr   measurer   r   r   segmentr   r)   r   r   rH   richrQ   r   r   r   r    <module>   s     (u