a
    sh<                     @  s@  d dl mZ d dlZd dlZd dlmZmZmZ d dlm	Z	m
Z
mZ d dlmZmZmZmZmZ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mZ ed	Ze	ee gee f Z e
d
 Z!ddddddddddZ"ddddddZ#dddddddddZ$dddddddddd Z%ddd!d"d#d$Z&dS )%    )annotationsN)	GeneratorIterableIterator)CallableLiteralTypeVar)	BarColumnDownloadColumnFileSizeColumnMofNCompleteColumnProgressProgressColumnSpinnerColumn
TextColumnTimeElapsedColumnTimeRemainingColumnTransferSpeedColumn)RateLimiter)InstallRequirement)get_consoleget_indentationT)onoffraw)initial_progresszIterable[bytes]BarTypez
int | NonezGenerator[bytes, None, None])iterablebar_typesizer   returnc          	      c  s   |dksJ d|s>t d}tdtdddt t t f}n(|}tdt t t tdtd	d
f}t	|ddi}|j
dt d  |dd}|d ur|j||d |@ | D ]}|V  |j|t|d q|j|dd W d    n1 s0    Y  d S )Nr   z-This should only be used in the default mode.infz([progress.description]{task.description}lineg      ?)speedz{task.fields[time_description]}T)Zelapsed_when_finishedrefresh_per_second       eta)totaltime_description)advance )r+   )floatr   r   r   r   r   r	   r
   r   r   add_taskr   updatelen)	r   r   r    r   r*   columnsprogressZtask_idchunk r5   [/var/www/html/assistant/venv/lib/python3.9/site-packages/pip/_internal/cli/progress_bars.py_rich_download_progress_bar   s8    
	r7   zIterable[InstallRequirement]intzIterator[InstallRequirement])r   r*   r!   c                c  s   t dt t t df}t }t|d|dd}|jd|dt  dd	}|D | D ].}|j|d
|j ddd |V  |	| qRW d    n1 s0    Y  d S )Nz{task.fields[indent]}z{task.description}   T)r%   consoleZ	transientr-   r'   F)r*   indentvisiblez\[])descriptionr<   )
r   r	   r   r   r   r/   r   r0   namer,   )r   r*   r2   r:   barZtaskreqr5   r5   r6   _rich_install_progress_barI   s    rB   )r   r    r   r!   c                c  sv   dddddd}|pd}|p d}t d}||| | D ]8}|t|7 }| sX||krj||| |  |V  q8d S )Nr8   None)currentr*   r!   c                 S  s(   t jd|  d| d t j  d S )Nz	Progress z of 
)sysstdoutwriteflush)rD   r*   r5   r5   r6   write_progresse   s    z)_raw_progress_bar.<locals>.write_progressr   g      ?)r   r1   readyreset)r   r    r   rJ   rD   r*   Zrate_limiterr4   r5   r5   r6   _raw_progress_bar_   s    

rM   r    r   zProgressRenderer[bytes])r   r    r   r!   c                 C  s:   | dkrt jt| ||dS | dkr2t jt||dS tS dS )zGet an object that can be used to render the download progress.

    Returns a callable, that takes an iterable to "wrap".
    r   r   r    r   r   rN   N)	functoolspartialr7   rM   iterrO   r5   r5   r6   get_download_progress_rendererv   s    rS   z$ProgressRenderer[InstallRequirement])r   r*   r!   c                 C  s   | dkrt jt|dS tS dS )z}Get an object that can be used to render the install progress.
    Returns a callable, that takes an iterable to "wrap".
    r   )r*   N)rP   rQ   rB   rR   )r   r*   r5   r5   r6   get_install_progress_renderer   s    rT   )'
__future__r   rP   rF   collections.abcr   r   r   typingr   r   r   Zpip._vendor.rich.progressr	   r
   r   r   r   r   r   r   r   r   r   pip._internal.cli.spinnersr   Zpip._internal.req.req_installr   pip._internal.utils.loggingr   r   r   ZProgressRendererr   r7   rB   rM   rS   rT   r5   r5   r5   r6   <module>   s&   4*