o
    Uh                     @  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   b/var/www/html/figdemos/bartoux_crm/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@   Z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   readyrE   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   rE   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?   rE   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   rM   b   s   

zNonInteractiveSpinner._updatec                 C  s&   | j rd S | j sd S | d d S )Nzstill running...)r9   r8   rF   rM   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   rM   r"   r   r   r   r#   n   s   
zNonInteractiveSpinner.finishN)rK   )r+   r!   r/   r0   r   r   rI   r$   r%   )r&   r'   r(   r?   rM   r   r#   r   r   r   r   rJ   [   s
    

rJ   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   )timerS   rR   )r   ZnowZdeltar   r   r   rF   z   s   

zRateLimiter.readyc                 C  s   t   | _d S r   )rU   rS   r   r   r   r   rD      s   zRateLimiter.resetN)r/   r0   r   r   )r   rT   r$   )r&   r'   r(   r?   rF   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   isattyrN   getEffectiveLevelloggingINFOr)   rJ   hidden_cursorKeyboardInterruptr#   	Exception)r+   spinnerr   r   r   open_spinner   s"   


rb   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   )	rd   r:   r;   r   r<   _spinner_textr9   r   _indent)r   rd   r   r   r   r?      s
   z_PipRichSpinner.__init__consoler   optionsr   r	   c                 c  s    |   V  d S r   )render)r   rh   ri   r   r   r   __rich_console__   s   z _PipRichSpinner.__rich_console__r   c                 C  s   |   }t|||S r   )rj   r   get)r   rh   ri   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   rG   r<   rf   r   Zassemblerg   rd   r   r   r   r   rj      s   z_PipRichSpinner.renderr@   c                 C  s   || _ d| _dS )z-Stop spinning and set a final status message.TN)rf   r9   rP   r   r   r   r#      s   
z_PipRichSpinner.finishN)rd   r!   r   r   )rh   r   ri   r   r   r	   )rh   r   ri   r   r   r   )r   r   rI   )	r&   r'   r(   __doc__r?   rk   rn   rj   r#   r   r   r   r   rc      s    



rc   rd   rh   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)Zrefresh_per_secondrh   rW   rX   rY   )rN   isEnabledForr\   r]   r   rc   r
   r   r_   r#   r`   )rd   rh   ra   r   r   r   open_rich_spinner   s$   



"rs   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   rZ   rN   r[   r\   r]   r=   HIDE_CURSORSHOW_CURSOR)r,   r   r   r   r^      s   


r^   )r+   r!   r   rV   r   )rd   r!   rh   rp   r   rq   )r,   rt   r   ru   )-
__future__r   
contextlibr:   r\   r4   rU   collections.abcr   typingr   r   Zpip._vendor.rich.consoler   r   r   r	   Zpip._vendor.rich.liver
   Zpip._vendor.rich.measurer   Zpip._vendor.rich.textr   Zpip._internal.utils.compatr   pip._internal.utils.loggingr   r   	getLoggerr&   rN   r   __annotations__r   r   r)   rJ   r7   contextmanagerrb   rc   rs   rv   rw   r^   r   r   r   r   <module>   s<    
5&