o
    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Z"d'ddZ#ddd(ddZ$dddd)d!d"Z%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_progressiterableIterable[bytes]bar_typeBarTypesize
int | Noner   returnGenerator[bytes, None, None]c          	      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rS|j||d |! | D ]}|V  |j|t|d qX|j|dd W d    d S 1 syw   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)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progresstask_idchunk r:   R/var/www/html/venv/lib/python3.10/site-packages/pip/_internal/cli/progress_bars.py_rich_download_progress_bar   s<   
	"r<   Iterable[InstallRequirement]r.   intIterator[InstallRequirement]c                c  s    t dt t t df}t }t|d|dd}|jd|dt  dd	}|# | D ]}|j|d
|j ddd |V  |	| q*W d    d S 1 sMw   Y  d S )Nz{task.fields[indent]}z{task.description}   T)r)   console	transientr1   r+   F)r.   indentvisiblez\[])descriptionrD   )
r   r	   r   r   r   r3   r   r4   namer0   )r   r.   r6   rA   bartaskreqr:   r:   r;   _rich_install_progress_barI   s    "rK   c                c  sp    d
dd}|p	d}|pd}t d	}||| | D ]}|t|7 }| s)||kr2||| |  |V  qd S )Ncurrentr>   r.   r#   Nonec                 S  s(   t jd|  d| d t j  d S )Nz	Progress z of 
)sysstdoutwriteflush)rL   r.   r:   r:   r;   write_progresse   s   z)_raw_progress_bar.<locals>.write_progressr   g      ?)rL   r>   r.   r>   r#   rM   )r   r5   readyreset)r   r!   r   rS   rL   r.   rate_limiterr9   r:   r:   r;   _raw_progress_bar_   s   


rW   r!   r   ProgressRenderer[bytes]c                 C  s6   | dkrt jt| ||dS | dkrt jt||dS t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   rX   )	functoolspartialr<   rW   iterrZ   r:   r:   r;   get_download_progress_rendererv   s   r^   $ProgressRenderer[InstallRequirement]c                 C  s   | dkrt jt|dS t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.   )r[   r\   rK   r]   )r   r.   r:   r:   r;   get_install_progress_renderer   s   r`   )
r   r   r   r    r!   r"   r   r"   r#   r$   )r   r=   r.   r>   r#   r?   )r   r   r!   r"   r   r"   r#   r$   )r   r    r!   r"   r   r"   r#   rY   )r   r    r.   r>   r#   r_   )'
__future__r   r[   rO   collections.abcr   r   r   typingr   r   r   pip._vendor.rich.progressr	   r
   r   r   r   r   r   r   r   r   r   pip._internal.cli.spinnersr   pip._internal.req.req_installr   pip._internal.utils.loggingr   r   r   ProgressRendererr    r<   rK   rW   r^   r`   r:   r:   r:   r;   <module>   s(    4
*