a
    hbòf²  ã                   @   s`  U d dl mZmZmZmZmZmZmZ ddlm	Z	m
Z
mZ erRddlmZmZmZ g d¢Zdd„ eD ƒZe
jdd	„ e
jd
d	„ e
jdd	„ e
jdd	„ e
jdd	„ e
jdd	„ e
jdd	„ e
jdd	„ e
jdd	„ e
jdd	„ e
jdd	„ e
jdd	„ e
jdd	„ e
jdd	„ e
j dd	„ iZ!ee"ede#f f e$d< G dd„ dƒZ%efe#ee"df e#dœdd„Z&e'd k�r\e(e&d!ƒƒ dS )"é    )ÚAnyÚCallableÚDictÚIterableÚListÚTYPE_CHECKINGÚUnioné   )ÚControlCodeÚControlTypeÚSegment)ÚConsoleÚConsoleOptionsÚRenderResult)é   é   é   é   c                 C   s   i | ]
}|d “qS ©N© )Ú.0Z
_codepointr   r   úU/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/pip/_vendor/rich/control.pyÚ
<dictcomp>   ó    r   c                   C   s   dS )Núr   r   r   r   r   Ú<lambda>   r   r   c                   C   s   dS )Núr   r   r   r   r   r      r   c                   C   s   dS )Nz[Hr   r   r   r   r   r      r   c                   C   s   dS )Nz[2Jr   r   r   r   r   r      r   c                   C   s   dS )Nz[?1049hr   r   r   r   r   r      r   c                   C   s   dS )Nz[?1049lr   r   r   r   r   r      r   c                   C   s   dS )Nz[?25hr   r   r   r   r   r      r   c                   C   s   dS )Nz[?25lr   r   r   r   r   r      r   c                 C   s   d| › d�S )Nú[ÚAr   ©Úparamr   r   r   r      r   c                 C   s   d| › d�S )Nr   ÚBr   r   r   r   r   r      r   c                 C   s   d| › d�S )Nr   ÚCr   r   r   r   r   r      r   c                 C   s   d| › d�S )Nr   ÚDr   r   r   r   r   r      r   c                 C   s   d| d › d�S )Nr   r	   ÚGr   r   r   r   r   r      r   c                 C   s   d| › d�S )Nr   ÚKr   r   r   r   r   r      r   c                 C   s   d|d › d| d › d�S )Nr   r	   ú;ÚHr   ©ÚxÚyr   r   r   r       r   .ÚCONTROL_CODES_FORMATc                   @   sò   e Zd ZdZdgZeeef ddœdd„Ze	d dœdd	„ƒZ
e	d dœd
d„ƒZe	d$eed dœdd„ƒZe	d%eed dœdd„ƒZe	eed dœdd„ƒZe	d dœdd„ƒZe	ed dœdd„ƒZe	ed dœdd„ƒZedœdd„Zddd d!œd"d#„ZdS )&ÚControlzüA renderable that inserts a control code (non printable but may move cursor).

    Args:
        *codes (str): Positional arguments are either a :class:`~rich.segment.ControlType` enum or a
            tuple of ControlType and an integer parameter
    ÚsegmentN)ÚcodesÚreturnc                    s<   dd„ |D ƒ}t ‰ d ‡ fdd„|D ƒ¡}t|d |ƒ| _d S )Nc                 S   s    g | ]}t |tƒr|fn|‘qS r   )Ú
isinstancer   )r   Úcoder   r   r   Ú
<listcomp>/   s   z$Control.__init__.<locals>.<listcomp>Ú c                 3   s   | ]^}}ˆ | |Ž V  qd S r   r   )r   r1   Ú
parameters©Ú_format_mapr   r   Ú	<genexpr>3   s   z#Control.__init__.<locals>.<genexpr>)r+   Újoinr   r-   )Úselfr.   Úcontrol_codesÚrendered_codesr   r5   r   Ú__init__.   s    ÿÿzControl.__init__©r/   c                 C   s
   | t jƒS )zRing the 'bell'.)r   ÚBELL©Úclsr   r   r   Úbell8   s    zControl.bellc                 C   s
   | t jƒS )zMove cursor to 'home' position.)r   ÚHOMEr?   r   r   r   Úhome=   s    zControl.homer   )r)   r*   r/   c                    s&   t t dœ‡ ‡fdd„}| |ƒ Ž }|S )z¸Move cursor relative to current position.

        Args:
            x (int): X offset.
            y (int): Y offset.

        Returns:
            ~Control: Control object.

        r=   c                  3   sL   t } ˆ r&ˆ dkr| jn| jtˆ ƒfV  ˆrHˆdkr8| jn| jtˆƒfV  d S )Nr   )r   ÚCURSOR_FORWARDÚCURSOR_BACKWARDÚabsÚCURSOR_DOWNÚ	CURSOR_UP)Úcontrolr(   r   r   Ú	get_codesO   s    þþzControl.move.<locals>.get_codes)r   r
   )r@   r)   r*   rJ   rI   r   r(   r   ÚmoveB   s    
zControl.movec                 C   s:   |r,| t j|f|dkrt jnt jt|ƒfƒS | t j|fƒS )zàMove to the given column, optionally add offset to row.

        Returns:
            x (int): absolute x (column)
            y (int): optional y offset (row)

        Returns:
            ~Control: Control object.
        r   )r   ÚCURSOR_MOVE_TO_COLUMNrG   rH   rF   ©r@   r)   r*   r   r   r   Úmove_to_column_   s    ùþþ÷zControl.move_to_columnc                 C   s   | t j||fƒS )z¼Move cursor to absolute position.

        Args:
            x (int): x offset (column)
            y (int): y offset (row)

        Returns:
            ~Control: Control object.
        )r   ÚCURSOR_MOVE_TOrM   r   r   r   Úmove_tow   s    zControl.move_toc                 C   s
   | t jƒS )zClear the screen.)r   ÚCLEARr?   r   r   r   Úclear„   s    zControl.clear)Úshowr/   c                 C   s   | |rt jnt jƒS )zShow or hide the cursor.)r   ÚSHOW_CURSORÚHIDE_CURSOR)r@   rS   r   r   r   Úshow_cursor‰   s    zControl.show_cursor)Úenabler/   c                 C   s    |r| t jt jƒS | t jƒS dS )zEnable or disable alt screen.N)r   ÚENABLE_ALT_SCREENrB   ÚDISABLE_ALT_SCREEN)r@   rW   r   r   r   Ú
alt_screenŽ   s    zControl.alt_screenc                 C   s   | j jS r   ©r-   Útext)r9   r   r   r   Ú__str__–   s    zControl.__str__r   r   r   )ÚconsoleÚoptionsr/   c                 c   s   | j jr| j V  d S r   r[   )r9   r^   r_   r   r   r   Ú__rich_console__™   s    zControl.__rich_console__)r   r   )r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r   r
   r<   ÚclassmethodrA   rC   ÚintrK   rN   rP   rR   ÚboolrV   rZ   Ústrr]   r`   r   r   r   r   r,   $   s.   
þr,   N)r\   Ú_translate_tabler/   c                 C   s
   |   |¡S )zªRemove control codes from text.

    Args:
        text (str): A string possibly contain control codes.

    Returns:
        str: String with control codes removed.
    )Ú	translate)r\   rj   r   r   r   Ústrip_control_codes    s    rl   Ú__main__zhelloWorld))Útypingr   r   r   r   r   r   r   r-   r
   r   r   r^   r   r   r   ÚSTRIP_CONTROL_CODESÚ_CONTROL_TRANSLATEr>   ÚCARRIAGE_RETURNrB   rQ   rX   rY   rT   rU   rH   rG   rD   rE   rL   ÚERASE_IN_LINErO   r+   rg   ri   Ú__annotations__r,   rl   ra   Úprintr   r   r   r   Ú<module>   s:   &














ñ}ÿþ
