a
    hbòfS  ã                   @   s®   d dl Z d dlmZmZ e jdkr0d dlmZ nd dlmZ ddlmZ ddl	m
Z
mZmZmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZ ed ZG dd„ dƒZdS )é    N)ÚOptionalÚTuple)é   é   )ÚLiteralé   )Ú	loop_last)ÚConsoleÚConsoleOptionsÚRenderableTypeÚRenderResult)ÚControl)ÚControlTypeÚSegment)Ú	StyleType)ÚText)ÚcropÚellipsisÚvisiblec                   @   sd   e Zd ZdZdeeeddœdd„Zeddœd	d
„Ze	dœdd„Z
e	dœdd„Zeeedœdd„ZdS )Ú
LiveRenderzØCreates a renderable that may be updated.

    Args:
        renderable (RenderableType): Any renderable object.
        style (StyleType, optional): An optional style to apply to the renderable. Defaults to "".
    Ú r   N)Ú
renderableÚstyleÚvertical_overflowÚreturnc                 C   s   || _ || _|| _d | _d S )N)r   r   r   Ú_shape)Úselfr   r   r   © r   úY/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/pip/_vendor/rich/live_render.pyÚ__init__   s    zLiveRender.__init__)r   r   c                 C   s
   || _ dS )z|Set a new renderable.

        Args:
            renderable (RenderableType): Any renderable object, including str.
        N)r   )r   r   r   r   r   Úset_renderable'   s    zLiveRender.set_renderable)r   c                 C   sL   | j durF| j \}}ttjtjdfgtjdftjdff|d  ¢R Ž S tƒ S )z•Get control codes to move cursor to beginning of live render.

        Returns:
            Control: A control instance that may be printed.
        Né   r   )r   r   r   ÚCARRIAGE_RETURNÚERASE_IN_LINEÚ	CURSOR_UP©r   Ú_Úheightr   r   r   Úposition_cursor/   s    

þþüüzLiveRender.position_cursorc                 C   s@   | j dur:| j \}}ttjgtjdftjdff| ¢R Ž S tƒ S )z®Get control codes to clear the render and restore the cursor to its previous position.

        Returns:
            Control: A Control instance that may be printed.
        Nr   r!   )r   r   r   r"   r$   r#   r%   r   r   r   Úrestore_cursorD   s    

ÿþzLiveRender.restore_cursor)ÚconsoleÚoptionsr   c                 c   sî   | j }| | j¡}|j|||dd�}t |¡}|\}}||jjkr¶| jdkrh|d |jj… }t |¡}nN| jdkr¶|d |jjd … }t	ddddd	d
�}	| 
t| |	¡ƒ¡ t |¡}|| _t ¡ }
t|ƒD ]\}}|E d H  |sÌ|
V  qÌd S )NF)r   Úpadr   r   r   z...Úcenterr   zlive.ellipsis)ÚoverflowÚjustifyÚendr   )r   Ú	get_styler   Úrender_linesr   Ú	get_shapeÚsizer'   r   r   ÚappendÚlistÚrenderr   Úliner   )r   r*   r+   r   r   ÚlinesÚshaper&   r'   Úoverflow_textÚnew_lineÚlastr8   r   r   r   Ú__rich_console__R   s4    


û

zLiveRender.__rich_console__)r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚVerticalOverflowMethodr   r    r   r(   r)   r	   r
   r   r>   r   r   r   r   r      s   
  üûþr   )ÚsysÚtypingr   r   Úversion_infor   Zpip._vendor.typing_extensionsÚ_loopr   r*   r	   r
   r   r   Úcontrolr   Úsegmentr   r   r   r   Útextr   rC   r   r   r   r   r   Ú<module>   s   
