o
    ­—Žjb  ã                   @  s  d dl mZ d dlZd dlZd dlmZ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mZ e
rTd dl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)ÚCallableÚ	GeneratorÚIterableÚIterator)ÚTYPE_CHECKINGÚLiteralÚTypeVar)Ú	BarColumnÚDownloadColumnÚFileSizeColumnÚMofNCompleteColumnÚProgressÚProgressColumnÚSpinnerColumnÚ
TextColumnÚTimeElapsedColumnÚTimeRemainingColumnÚTransferSpeedColumn)ÚRateLimiter)Úget_consoleÚget_indentation)ÚInstallRequirementÚ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Ú )r0   )Úfloatr   r   r   r   r   r
   r   r   r   Úadd_taskr   ÚupdateÚlen)	r   r    r"   r   r/   ÚcolumnsÚprogressÚtask_idÚchunk© r;   ú\/var/www/kodo/Anonymous/send/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Ú	transientr2   r,   F)r/   ÚindentÚvisiblez\[ú])ÚdescriptionrE   )
r   r
   r   r   r   r4   r   r5   Únamer1   )r   r/   r7   rB   ÚbarÚtaskÚreqr;   r;   r<   Ú_rich_install_progress_barK   s    €üý"ÿrL   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)rM   r/   r;   r;   r<   Úwrite_progressg   s   z)_raw_progress_bar.<locals>.write_progressr   g      Ð?)rM   r?   r/   r?   r$   rN   )r   r6   ÚreadyÚreset)r   r"   r   rT   rM   r/   Úrate_limiterr:   r;   r;   r<   Ú_raw_progress_bara   s   €


ûrX   ©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   rY   )Ú	functoolsÚpartialr=   rX   Úiterr[   r;   r;   r<   Úget_download_progress_rendererx   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]   rL   r^   )r    r/   r;   r;   r<   Úget_install_progress_renderer�   s   ra   )
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$   rZ   )r    r!   r/   r?   r$   r`   )(Ú
__future__r   r\   rP   Úcollections.abcr   r   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.utils.loggingr   r   Úpip._internal.req.req_installr   r   ÚProgressRendererr!   r=   rL   rX   r_   ra   r;   r;   r;   r<   Ú<module>   s*    4û
*üÿ