a
    hbòfy  ã                   @   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
rdd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                   @   sp   e Zd ZdZdeed  ddœdd„Zddd	d
œdd„Zdddd
œdd„Zdddœdd„Z	ed dœdd„Z
dS )ÚRenderablesz:A list subclass which renders its contents to the console.Nr   )ÚrenderablesÚreturnc                 C   s   |d urt |ƒng | _d S ©N)ÚlistÚ_renderables)Úselfr   © r   úX/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/pip/_vendor/rich/containers.pyÚ__init__!   s    ÿzRenderables.__init__r   r   r   ©ÚconsoleÚoptionsr   c                 c   s   | j E dH  dS ©z,Console render method to insert line-breaks.N)r   ©r   r"   r#   r   r   r   Ú__rich_console__(   s    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   s   | ]}|j V  qd S r   )Úminimum©r(   Ú	dimensionr   r   r   Ú	<genexpr>7   ó    z/Renderables.__rich_measure__.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S r   )Úmaximumr-   r   r   r   r/   8   r0   )r   r   Úmax)r   r"   r#   Ú
dimensionsÚ_minÚ_maxr   r*   r   Ú__rich_measure__.   s    þ
zRenderables.__rich_measure__)r)   r   c                 C   s   | j  |¡ d S r   )r   Úappend)r   r)   r   r   r   r7   ;   s    zRenderables.append©r   c                 C   s
   t | jƒS r   )Úiterr   ©r   r   r   r   Ú__iter__>   s    zRenderables.__iter__)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r    r&   r6   r7   r;   r   r   r   r   r      s    ÿ
þþþr   c                   @   s  e Zd ZdZd,ed ddœdd„Zedœd	d
„Zed dœdd„Z	e
eddœdd„ƒZe
eed dœdd„ƒZeeef eded f dœdd„Zedd dœdd„Zedœdd„Zddddœdd„Zdddœdd„Zed ddœd d!„Zd-eddœd#d$„Zd.ded'd(dd)œd*d+„ZdS )/ÚLinesz0A list subclass which can render to the console.r   r   N)Úlinesr   c                 C   s   t |ƒ| _d S r   )r   Ú_lines©r   rA   r   r   r   r    E   s    zLines.__init__r8   c                 C   s   d| j ›d�S )NzLines(ú)©rB   r:   r   r   r   Ú__repr__H   s    zLines.__repr__c                 C   s
   t | jƒS r   )r9   rB   r:   r   r   r   r;   K   s    zLines.__iter__)Úindexr   c                 C   s   d S r   r   ©r   rG   r   r   r   Ú__getitem__N   s    zLines.__getitem__c                 C   s   d S r   r   rH   r   r   r   rI   R   s    c                 C   s
   | j | S r   rE   rH   r   r   r   rI   V   s    )rG   Úvaluer   c                 C   s   || j |< | S r   rE   )r   rG   rJ   r   r   r   Ú__setitem__Y   s    
zLines.__setitem__c                 C   s
   | j  ¡ S r   )rB   Ú__len__r:   r   r   r   rL   ]   s    zLines.__len__r   r   r   r!   c                 c   s   | j E dH  dS r$   rE   r%   r   r   r   r&   `   s    zLines.__rich_console__)Úliner   c                 C   s   | j  |¡ d S r   )rB   r7   )r   rM   r   r   r   r7   f   s    zLines.appendc                 C   s   | j  |¡ d S r   )rB   ÚextendrC   r   r   r   rN   i   s    zLines.extendéÿÿÿÿc                 C   s   | j  |¡S r   )rB   ÚpoprH   r   r   r   rP   l   s    z	Lines.popÚleftÚfoldr   r   )r"   ÚwidthÚjustifyÚoverflowr   c                 C   s2  ddl m} |dkr4| jD ]}|j||dd� q�nú|dkrŽ| jD ]F}| ¡  |j||d� | |t|jƒ d ¡ | |t|jƒ ¡ qB�n |d	krÐ| jD ].}| ¡  |j||d� | |t|jƒ ¡ qœ�n^|d
k�r.t	| jƒD �]F\}}|t
| jƒd k�r �q.| d¡}tdd„ |D ƒƒ}	t
|ƒd }
dd„ t|
ƒD ƒ}d}|�r’|	|
 |k �r’|t
|ƒ| d   d7  < |
d7 }
|d t
|ƒ }�qLg }t	t||dd… ƒƒD ]l\}\}}| |¡ |t
|ƒk �r¬| |d¡}| |d¡}||k�rö|n|j}| |d||  |d�¡ �q¬|dƒ |¡| |< qä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   rQ   T)rU   ÚpadÚcenter)rU   é   ÚrightÚfullú c                 s   s   | ]}t |jƒV  qd S r   )r   Úplain)r(   Úwordr   r   r   r/   ”   r0   z Lines.justify.<locals>.<genexpr>c                 S   s   g | ]}d ‘qS )r   r   )r(   Ú_r   r   r   r+   –   r0   z!Lines.justify.<locals>.<listcomp>r   NrO   )ÚstyleÚ )Útextr   rB   ÚtruncateÚrstripÚpad_leftr   r\   Ú	pad_rightÚ	enumerateÚlenÚsplitÚsumÚranger   r7   Úget_style_at_offsetr_   Újoin)r   r"   rS   rT   rU   r   rM   Ú
line_indexÚwordsÚ
words_sizeÚ
num_spacesÚspacesrG   Útokensr]   Ú	next_wordr_   Ú
next_styleÚspace_styler   r   r   rT   o   sP    




ÿ
zLines.justify)r   )rO   )rQ   rR   )r<   r=   r>   r?   r   r    ÚstrrF   r   r;   r   ÚintrI   Úslicer   r   rK   rL   r&   r7   rN   rP   rT   r   r   r   r   r@   B   s4   $þ  ûúr@   N)Ú	itertoolsr   Útypingr   r   r   r   r   r   r	   r
   r"   r   r   r   r   r   r   ra   r   Úcellsr   Úmeasurer   r   r   r@   r   r   r   r   Ú<module>   s   ( $