o
    h                     @  sT  U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
mZ d dlmZmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ eeZdZde d< dZ!de d< G dd dZ"G dd de"Z#G dd de"Z$G dd dZ%ej&d-ddZ'G dd dZ(ej&d.d/d$d%Z)d&Z*d'Z+ej&d0d+d,Z,dS )1    )annotationsN)	Generator)IOFinal)ConsoleConsoleOptionsRenderableTypeRenderResult)Live)Measurement)Text)WINDOWS)get_consoleget_indentationz-\|/r   SPINNER_CHARS   SPINS_PER_SECONDc                   @  s    e Zd Zd
ddZdddZd	S )SpinnerInterfacereturnNonec                 C     t  NNotImplementedErrorself r   M/var/www/html/venv/lib/python3.10/site-packages/pip/_internal/cli/spinners.pyspin      zSpinnerInterface.spinfinal_statusstrc                 C  r   r   r   r   r    r   r   r   finish"   r   zSpinnerInterface.finishNr   r   r    r!   r   r   )__name__
__module____qualname__r   r#   r   r   r   r   r      s    
r   c                   @  s@   e Zd Zdede fdd
dZdddZdddZdddZdS )InteractiveSpinnerN   messager!   fileIO[str] | None
spin_charsmin_update_interval_secondsfloatc                 C  s\   || _ |d u r
tj}|| _t|| _d| _t|| _	| j
dt  | j  d  d| _d S )NF  ... r   )_messagesysstdout_fileRateLimiter_rate_limiter	_finished	itertoolscycle_spin_cyclewriter   _width)r   r+   r,   r.   r/   r   r   r   __init__'   s   

zInteractiveSpinner.__init__statusr   r   c                 C  s\   | j rJ d| j }| j|d| j  |  | j| t|| _| j  | j  d S )Nr1   )r9   r>   r6   r=   lenflushr8   reset)r   r@   backupr   r   r   _write;   s   



zInteractiveSpinner._writec                 C  s,   | j rd S | j sd S | t| j d S r   )r9   r8   readyrF   nextr<   r   r   r   r   r   G   s
   
zInteractiveSpinner.spinr    c                 C  s4   | j rd S | | | jd | j  d| _ d S )N
T)r9   rF   r6   r=   rC   r"   r   r   r   r#   N   s   


zInteractiveSpinner.finish)r+   r!   r,   r-   r.   r!   r/   r0   r@   r!   r   r   r$   r%   )	r&   r'   r(   r   r   r?   rF   r   r#   r   r   r   r   r)   &   s    

r)   c                   @  s6   e Zd Zdddd	ZdddZdddZdddZdS )NonInteractiveSpinner      N@r+   r!   r/   r0   r   r   c                 C  s$   || _ d| _t|| _| d d S )NFstarted)r3   r9   r7   r8   _update)r   r+   r/   r   r   r   r?   \   s   
zNonInteractiveSpinner.__init__r@   c                 C  s(   | j rJ | j  td| j| d S )Nz%s: %s)r9   r8   rD   loggerinfor3   r   r@   r   r   r   rN   b   s   

zNonInteractiveSpinner._updatec                 C  s&   | j rd S | j sd S | d d S )Nzstill running...)r9   r8   rG   rN   r   r   r   r   r   g   s
   
zNonInteractiveSpinner.spinr    c                 C  s&   | j rd S | d| d d| _ d S )Nzfinished with status ''T)r9   rN   r"   r   r   r   r#   n   s   
zNonInteractiveSpinner.finishN)rL   )r+   r!   r/   r0   r   r   rJ   r$   r%   )r&   r'   r(   r?   rN   r   r#   r   r   r   r   rK   [   s
    

rK   c                   @  s*   e Zd ZdddZddd	Zdd
dZdS )r7   r/   r0   r   r   c                 C  s   || _ d| _d S )Nr   )_min_update_interval_seconds_last_update)r   r/   r   r   r   r?   v   s   
zRateLimiter.__init__boolc                 C  s   t   }|| j }|| jkS r   )timerT   rS   )r   nowdeltar   r   r   rG   z   s   

zRateLimiter.readyc                 C  s   t   | _d S r   )rV   rT   r   r   r   r   rD      s   zRateLimiter.resetN)r/   r0   r   r   )r   rU   r$   )r&   r'   r(   r?   rG   rD   r   r   r   r   r7   u   s    

r7   r+   r!   r   'Generator[SpinnerInterface, None, None]c                 c  s    t j rt tjkrt| }nt| }zt	t j |V  W d    n1 s*w   Y  W n t
y=   |d   tyI   |d  w |d d S )Ncancelederrordone)r4   r5   isattyrO   getEffectiveLevelloggingINFOr)   rK   hidden_cursorKeyboardInterruptr#   	Exception)r+   spinnerr   r   r   open_spinner   s"   


re   c                   @  sB   e Zd ZdZdddZdddZdddZdddZdddZdS )_PipRichSpinnerz
    Custom rich spinner that matches the style of the legacy spinners.

    (*) Updates will be handled in a background thread by a rich live panel
        which will call render() automatically at the appropriate time.
    labelr!   r   r   c                 C  s.   || _ tt| _d| _d| _t d | _d S )N Fr1   )	rg   r:   r;   r   r<   _spinner_textr9   r   _indent)r   rg   r   r   r   r?      s
   z_PipRichSpinner.__init__consoler   optionsr   r	   c                 c  s    |   V  d S r   )render)r   rk   rl   r   r   r   __rich_console__   s   z _PipRichSpinner.__rich_console__r   c                 C  s   |   }t|||S r   )rm   r   get)r   rk   rl   textr   r   r   __rich_measure__   s   z _PipRichSpinner.__rich_measure__r   c                 C  s(   | j s	t| j| _t| j| jd| jS )Nr2   )r9   rH   r<   ri   r   assemblerj   rg   r   r   r   r   rm      s   z_PipRichSpinner.renderr@   c                 C  s   || _ d| _dS )z-Stop spinning and set a final status message.TN)ri   r9   rQ   r   r   r   r#      s   
z_PipRichSpinner.finishN)rg   r!   r   r   )rk   r   rl   r   r   r	   )rk   r   rl   r   r   r   )r   r   rJ   )	r&   r'   r(   __doc__r?   rn   rq   rm   r#   r   r   r   r   rf      s    



rf   rg   rk   Console | NoneGenerator[None]c              	   c  s    t tjsd V  d S |pt }t| }t|t|d- zd V  W n ty/   |	d   t
y;   |	d  w |	d W d    d S 1 sLw   Y  d S )N)refresh_per_secondrk   rZ   r[   r\   )rO   isEnabledForr_   r`   r   rf   r
   r   rb   r#   rc   )rg   rk   rd   r   r   r   open_rich_spinner   s$   



"rx   z[?25lz[?25hr,   IO[str]Generator[None, None, None]c              	   c  s^    t rd V  d S |  rt tjkrd V  d S | t zd V  W | t d S | t w r   )	r   r]   rO   r^   r_   r`   r=   HIDE_CURSORSHOW_CURSOR)r,   r   r   r   ra      s   


ra   )r+   r!   r   rY   r   )rg   r!   rk   rt   r   ru   )r,   ry   r   rz   )-
__future__r   
contextlibr:   r_   r4   rV   collections.abcr   typingr   r   pip._vendor.rich.consoler   r   r   r	   pip._vendor.rich.liver
   pip._vendor.rich.measurer   pip._vendor.rich.textr   pip._internal.utils.compatr   pip._internal.utils.loggingr   r   	getLoggerr&   rO   r   __annotations__r   r   r)   rK   r7   contextmanagerre   rf   rx   r{   r|   ra   r   r   r   r   <module>   s<    
5&