o
    Mfy                     @   s   d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
 e
r2ddlmZmZmZmZmZmZ ddlmZ ddlmZ ddlmZ e	dZG d	d
 d
ZG dd dZdS )    )zip_longest)IteratorIterableListOptionalUnionoverloadTypeVarTYPE_CHECKING   )ConsoleConsoleOptionsJustifyMethodOverflowMethodRenderResultRenderableTypeText)cell_len)MeasurementTc                   @   sv   e Zd ZdZ	ddeed  ddfddZ				
			dddZ				
			dddZdddZ	ded fddZ
dS )Renderablesz:A list subclass which renders its contents to the console.Nrenderablesr   returnc                 C   s    |d urt || _d S g | _d S N)list_renderables)selfr    r   ]/var/www/html/analyze/labelStudio/lib/python3.10/site-packages/pip/_vendor/rich/containers.py__init__!   s   zRenderables.__init__consoler   optionsr   r   c                 c       | j E dH  dS z,Console render method to insert line-breaks.N)r   r   r!   r"   r   r   r   __rich_console__(      zRenderables.__rich_console__r   c                    sR    fdd| j D }|stddS tdd |D }tdd |D }t||S )Nc                    s   g | ]	}t  |qS r   )r   get).0
renderabler!   r"   r   r   
<listcomp>1   s    z0Renderables.__rich_measure__.<locals>.<listcomp>r   c                 s       | ]}|j V  qd S r   )minimumr)   	dimensionr   r   r   	<genexpr>7       z/Renderables.__rich_measure__.<locals>.<genexpr>c                 s   r-   r   )maximumr/   r   r   r   r1   8   r2   )r   r   max)r   r!   r"   
dimensions_min_maxr   r+   r   __rich_measure__.   s   

zRenderables.__rich_measure__r*   c                 C      | j | d S r   )r   append)r   r*   r   r   r   r:   ;      zRenderables.appendc                 C   
   t | jS r   )iterr   r   r   r   r   __iter__>      
zRenderables.__iter__r   r!   r   r"   r   r   r   )r!   r   r"   r   r   r   )r*   r   r   N)__name__
__module____qualname____doc__r   r   r    r&   r8   r:   r?   r   r   r   r   r      s0    




r   c                   @   s0  e Zd ZdZd/ded ddfddZdefd	d
Zded fddZ	e
deddfddZe
deded fddZdeeef deded f fddZdedddd fddZdefddZ						d0ddZd1dd Zded ddfd!d"Zd2deddfd$d%Z	&	'd3ddd(ed)d*d+d,ddf
d-d.ZdS )4Linesz0A list subclass which can render to the console.r   linesr   r   Nc                 C   s   t || _d S r   )r   _linesr   rG   r   r   r   r    E      zLines.__init__c                 C   s   d| j dS )NzLines()rH   r>   r   r   r   __repr__H   rJ   zLines.__repr__c                 C   r<   r   )r=   rH   r>   r   r   r   r?   K   r@   zLines.__iter__indexc                 C      d S r   r   r   rN   r   r   r   __getitem__N      zLines.__getitem__c                 C   rO   r   r   rP   r   r   r   rQ   R   rR   c                 C   s
   | j | S r   rL   rP   r   r   r   rQ   V   r@   valuec                 C   s   || j |< | S r   rL   )r   rN   rS   r   r   r   __setitem__Y   s   
zLines.__setitem__c                 C   s
   | j  S r   )rH   __len__r>   r   r   r   rU   ]   r@   zLines.__len__r!   r   r"   r   r   c                 c   r#   r$   rL   r%   r   r   r   r&   `   r'   zLines.__rich_console__linec                 C   r9   r   )rH   r:   )r   rV   r   r   r   r:   f   r;   zLines.appendc                 C   r9   r   )rH   extendrI   r   r   r   rW   i   r;   zLines.extendc                 C   s   | j |S r   )rH   poprP   r   r   r   rY   l   s   z	Lines.popleftfoldwidthjustifyr   overflowr   c                 C   s2  ddl m} |dkr| jD ]
}|j||dd qdS |dkrG| jD ]#}|  |j||d ||t|j d  ||t|j  q!dS |d	krh| jD ]}|  |j||d ||t|j  qNdS |d
krt	| jD ]\}}|t
| jd kr dS |d}tdd |D }	t
|d }
dd t|
D }d}|r|	|
 |k r|t
|| d   d7  < |
d7 }
|d t
| }|	|
 |k sg }t	t||dd D ]4\}\}}|| |t
|k r
||d}||d}||kr|n|j}||d||  |d q|d|| |< qrdS dS )a  Justify and overflow text to a given width.

        Args:
            console (Console): Console instance.
            width (int): Number of characters per line.
            justify (str, optional): Default justify method for text: "left", "center", "full" or "right". Defaults to "left".
            overflow (str, optional): Default overflow for text: "crop", "fold", or "ellipsis". Defaults to "fold".

        r   r   rZ   T)r^   padcenter)r^      rightfull c                 s   s    | ]}t |jV  qd S r   )r   plain)r)   wordr   r   r   r1      s    z Lines.justify.<locals>.<genexpr>c                 S   s   g | ]}d qS )r   r   )r)   _r   r   r   r,      s    z!Lines.justify.<locals>.<listcomp>r   NrX   )style )textr   rH   truncaterstrippad_leftr   re   	pad_right	enumeratelensplitsumranger   r:   get_style_at_offsetrh   join)r   r!   r\   r]   r^   r   rV   
line_indexwords
words_size
num_spacesspacesrN   tokensrf   	next_wordrh   
next_stylespace_styler   r   r   r]   o   s^   





zLines.justify)r   rA   )rV   r   r   N)rX   )rZ   r[   )rB   rC   rD   rE   r   r    strrM   r   r?   r   intrQ   slicer   r   rT   rU   r&   r:   rW   rY   r]   r   r   r   r   rF   B   sF    &

rF   N)	itertoolsr   typingr   r   r   r   r   r   r	   r
   r!   r   r   r   r   r   r   rj   r   cellsr   measurer   r   r   rF   r   r   r   r   <module>   s    ( $