o
    HJey                     @   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   i/home/seandotau/au.memorygallery.club/gallery/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)   Z	dimensionr   r   r   	<genexpr>7       z/Renderables.__rich_measure__.<locals>.<genexpr>c                 s   r-   r   )maximumr/   r   r   r   r0   8   r1   )r   r   max)r   r!   r"   Z
dimensionsZ_minZ_maxr   r+   r   __rich_measure__.   s   

zRenderables.__rich_measure__r*   c                 C      | j | d S r   )r   append)r   r*   r   r   r   r6   ;      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&   r4   r6   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   rC   r   r   r   r    E      zLines.__init__c                 C   s   d| j dS )NzLines()rD   r:   r   r   r   __repr__H   rF   zLines.__repr__c                 C   r8   r   )r9   rD   r:   r   r   r   r;   K   r<   zLines.__iter__indexc                 C      d S r   r   r   rJ   r   r   r   __getitem__N      zLines.__getitem__c                 C   rK   r   r   rL   r   r   r   rM   R   rN   c                 C   s
   | j | S r   rH   rL   r   r   r   rM   V   r<   valuec                 C   s   || j |< | S r   rH   )r   rJ   rO   r   r   r   __setitem__Y   s   
zLines.__setitem__c                 C   s
   | j  S r   )rD   __len__r:   r   r   r   rQ   ]   r<   zLines.__len__r!   r   r"   r   r   c                 c   r#   r$   rH   r%   r   r   r   r&   `   r'   zLines.__rich_console__linec                 C   r5   r   )rD   r6   )r   rR   r   r   r   r6   f   r7   zLines.appendc                 C   r5   r   )rD   extendrE   r   r   r   rS   i   r7   zLines.extendc                 C   s   | j |S r   )rD   poprL   r   r   r   rU   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   rV   T)rZ   padcenter)rZ      rightfull c                 s   s    | ]}t |jV  qd S r   )r   plain)r)   wordr   r   r   r0      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   NrT   )style )textr   rD   truncaterstrippad_leftr   ra   	pad_right	enumeratelensplitsumranger   r6   get_style_at_offsetrd   join)r   r!   rX   rY   rZ   r   rR   Z
line_indexwordsZ
words_sizeZ
num_spacesspacesrJ   tokensrb   Z	next_wordrd   Z
next_styleZspace_styler   r   r   rY   o   s^   





zLines.justify)r   r=   )rR   r   r   N)rT   )rV   rW   )r>   r?   r@   rA   r   r    strrI   r   r;   r   intrM   slicer   r   rP   rQ   r&   r6   rS   rU   rY   r   r   r   r   rB   B   sF    &

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