HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib/python3/dist-packages/click/__pycache__/_termui_impl.cpython-38.pyc
U

x6�[�L�@s@dZddlZddlZddlZddlZddlZddlmZmZm	Z	m
Z
mZmZm
Z
mZmZmZmZddlmZddlmZejdkr�dZd	Znd
ZdZdd
�ZGdd�de�Zd%dd�Zdd�Zdd�Zdd�ZGdd�de�Z d&dd�Z!dd�Z"e�rddl#Z#ej$dd ��Z%d!d"�Z&n&ddl'Z'ddl(Z(ej$d#d ��Z%d$d"�Z&dS)'uA
click._termui_impl
~~~~~~~~~~~~~~~~~~

This module contains implementations for the termui module. To keep the
import time of Click down, some infrequently used functionality is
placed in this module and only imported as needed.

:copyright: © 2014 by the Pallets team.
:license: BSD, see LICENSE.rst for more details.
�N�)�_default_text_stdout�
range_type�PY2�isatty�open_stream�
strip_ansi�term_len�get_best_encoding�WIN�	int_types�CYGWIN)�echo)�ClickException�nt�
�
z
[?25lz[?25h
cCs�z
t|�WSttfk
r�zt|�j}Wntk
rDYYdSXz||�}Wntk
rjYYdSX|tks�t|t�r�|dkr�YdS|YSXdS)z%Returns the length hint of an object.Nr)�len�AttributeError�	TypeError�type�__length_hint__�NotImplemented�
isinstancer)�objZget_hintZhint�r�4/usr/lib/python3/dist-packages/click/_termui_impl.py�_length_hint"s$


��rc
@s�eZdZd/d	d
�Zdd�Zd
d�Zdd�Zdd�Zdd�Ze	dd��Z
e	dd��Ze	dd��Zdd�Z
dd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�ZdS)0�ProgressBarN�#� �%(bar)s�  TF�cCs||_||_||_||_||_||_|	|_|
|_|p6d|_|dkrHt	�}||_
|
|_||_|dk|_
|dkrtt|�}|dkr�|dkr�td��t|�}t|�|_||_|dk	|_d|_g|_t��|_|_d|_d|_d|_d|_d|_t|j
�|_d|_ d|_!dS)N�rziterable or length is requiredF��?)"�	fill_char�
empty_char�bar_template�info_sep�show_eta�show_percent�show_pos�item_show_func�labelr�file�color�width�	autowidthrrr�iter�length�length_known�pos�avg�time�start�last_eta�	eta_known�finished�	max_width�entered�current_itemr�	is_hidden�
_last_line�short_limit)�self�iterabler4r&r'r(r)r*r+r,r-r.r/r0r1rrr�__init__8sF



zProgressBar.__init__cCsd|_|��|S)NT)r>�render_progress�rCrrr�	__enter__aszProgressBar.__enter__cCs|��dS�N)�
render_finish)rC�exc_type�	exc_value�tbrrr�__exit__fszProgressBar.__exit__cCs|jstd��|��|��S)N�.You need to use progress bars in a with block.)r>�RuntimeErrorrF�	generatorrGrrr�__iter__iszProgressBar.__iter__cCst��|j|jkSrI)r8r9rBrGrrr�is_fastoszProgressBar.is_fastcCs,|js|��rdS|j�t�|j��dSrI)r@rSr/�write�	AFTER_BAR�flushrGrrrrJrszProgressBar.render_finishcCs$|jr
dSt|jt|j�pdd�S)N��?r)r<�minr6�floatr4rGrrr�pctxszProgressBar.pctcCs"|js
dSt|j�tt|j��S�Ng)r7�sumrYrrGrrr�time_per_iteration~szProgressBar.time_per_iterationcCs"|jr|js|j|j|jSdSr[)r5r<r]r4r6rGrrr�eta�szProgressBar.etacCsn|jrjt|j�}|d}|d}|d}|d}|d}|d}|dkr\|}d||||fSd|||fSdS)N�<�rz%dd %02d:%02d:%02dz%02d:%02d:%02dr$)r;�intr^)rC�tZsecondsZminutesZhoursZdaysrrr�
format_eta�s
zProgressBar.format_etacCs"t|j�}|jr|d|j7}|S)Nz/%s)�strr6r5r4)rCr6rrr�
format_pos�s
zProgressBar.format_poscCsdt|jd�dd�S)Nz% 4d%%�dr)rarZrGrrr�
format_pct�szProgressBar.format_pctcCs�|jr6t|j|j�}|j|}||j|j|7}nf|jrJ|j|j}nRt|j|jpXd�}|jdkr�|j|tt	�
|j|j�dd|j�<d�|�}|S)Nrrg@r%r$)
r5rarZr1r&r'r<�listr]�mathZcosr6�join)rCZ
bar_length�barrrr�
format_bar�s$

����
zProgressBar.format_barcCs�|j}g}|jr |dkr |j}|jr4|�|���|rF|�|���|jrf|jrf|jsf|�|�	��|j
dk	r�|�
|j�}|dk	r�|�|�|j|j
|��|j�|�d���S)N)r.rk�info)r+r5r,�appendrergr*r;r<rcr-r?r(r.rlr)rj�rstrip)rCr+Z	info_bitsZ	item_inforrr�format_progress_line�s&


�z ProgressBar.format_progress_linec	Cs(ddlm}|jrdSg}|jrz|j}d|_t|���}td|�d|�}||krt|�t	�|�d|j
�||_
||_|j}|j
dk	r�|j
}|�t	�|��}t|�}|j
dks�|j
|kr�||_
|�|�|�d||�d�|�}||jk�r$|�
��s$||_t||j|jdd�|j��dS)Nr)�get_terminal_sizerr r$F)r/r0�nl)Ztermuirqr@r2r1r	rp�maxrn�
BEFORE_BARr=rjrArSrr/r0rV)	rCrqZbufZ	old_widthZclutter_lengthZ	new_widthZclear_width�lineZline_lenrrrrF�s:




zProgressBar.render_progresscCs�|j|7_|jr&|j|jkr&d|_t��|jdkr<dSt��|_|jrbt��|j|j}nt��|j}|jdd�|g|_|j|_dS)NTrWi����)	r6r5r4r<r8r:r9r7r;)rC�n_steps�steprrr�	make_step�s
zProgressBar.make_stepcCs|�|�|��dSrI)rxrF)rCrvrrr�updates
zProgressBar.updatecCsd|_d|_d|_dS)NrT)r;r?r<rGrrr�finishszProgressBar.finishccs^|jstd��|jr(|jD]
}|Vqn2|jD]}||_|V|�d�q.|��|��dS)z�
        Returns a generator which yields the items added to the bar during
        construction, and updates the progress bar *after* the yielded block
        returns.
        rOrN)r>rPr@r3r?ryrzrF)rC�rvrrrrQs


zProgressBar.generator)
Nrr r!r"TNFNNNNr#)�__name__�
__module__�__qualname__rErHrNrRrSrJ�propertyrZr]r^rcrergrlrprFrxryrzrQrrrrr6sB�
)


'rc	Cs&t�}ttj�rt|�s$t|||�Stj�dd�p4d��}|rZt	rNt
|||�St|||�Stj�d�dkrvt|||�St	s�tj�
d�r�t
|d|�Sttd�r�t�d	�d
kr�t|d|�Sd
dl}|��\}}t�|�z@ttd��rt�d|�d
k�rt|d
|�W�St|||�W�St�|�XdS)z2Decide what method to use for paging through text.ZPAGERNr$ZTERM)ZdumbZemacsZos2zmore <�systemz(less) 2>/dev/nullr�lessz	more "%s"Zmore)rr�sys�stdin�
_nullpager�os�environ�get�stripr�_tempfilepager�
_pipepager�platform�
startswith�hasattrr��tempfile�mkstemp�close�unlink)rQr0�stdoutZ	pager_cmdr��fd�filenamerrr�pager%s,
 r�c
	Csddl}ttj�}|�dd�d��}|dkr�|ddkr�tj�dd�d	�|dd��}|sld
|d<d}nd|ks|d
|kr�d}|j|d|j	|d�}t
|j�}z.|D]$}	|s�t|	�}	|j�
|	�|d��q�Wnttfk
r�YnX|j��z|��Wntk
�rYq�X�qq�dS)zqPage through text by feeding it to another program.  Invoking a
    pager through this might support colors.
    rN�/r���r��LESSr$r �-RT�r�R)�shellr��env�replace)�
subprocess�dictr�r��rsplit�splitr�rj�Popen�PIPEr
r�rrT�encode�IOError�KeyboardInterruptr��wait)
rQ�cmdr0r�r�Z
cmd_detailZ
less_flags�c�encoding�textrrrr�As6
 �

r�c	Cs�ddl}|��}d�|�}|s&t|�}ttj�}t|d�d�}|�|�	|��W5QRXzt
�|d|d�W5t
�|�XdS)z<Page through text by invoking a program on a temporary file.rNr$�wbz "�")
r�Zmktemprjrr
r�r�rrTr�r�r�r�)rQr�r0r�r�r�r��frrrr�rs

r�cCs$|D]}|st|�}|�|�qdS)z>Simply print unformatted text.  This is the ultimate fallback.N)rrT)�streamrQr0r�rrrr��sr�c@s.eZdZddd�Zdd�Zdd	�Zd
d�ZdS)
�EditorNT�.txtcCs||_||_||_||_dSrI)�editorr��require_save�	extension)rCr�r�r�r�rrrrE�szEditor.__init__cCsb|jdk	r|jSdD]}tj�|�}|r|Sqtr:dSdD]}t�d|�dkr>|Sq>dS)N)ZVISUALZEDITORZnotepad)ZvimZnanozwhich %s >/dev/null 2>&1rZvi)r�r�r�r�rr�)rC�keyr{r�rrr�
get_editor�s


zEditor.get_editorc
Cs�ddl}|��}|jr.tj��}|�|j�nd}z8|jd||f|dd�}|��}|dkrht	d|��Wn2t
k
r�}zt	d||f��W5d}~XYnXdS)Nrz%s "%s"T)r�r�z%s: Editing failed!z%s: Editing failed: %s)r�r�r�r�r��copyryr�r�r�OSError)rCr�r�r�r�r�Z	exit_code�errr�	edit_file�s 
�zEditor.edit_filec		Cs�ddl}|pd}|r&|�d�s&|d7}|jd|jd�\}}z�trRd}|�dd�}nd}|�|�}t�	|d	�}|�
|�|��tj�
|�}|�|�|jr�tj�
|�|kr�W�<dSt|d
�}z|��}W5|��X|�d��dd�W�St�|�XdS)Nrr$rzeditor-)�prefix�suffixz	utf-8-sigz
zutf-8r��rb)r��endswithr�r�r�r�rr�r��fdopenrTr��path�getmtimer�r��open�read�decode)	rCr�r�r��namer�r�Z	timestampr{rrr�edit�s4


�

zEditor.edit)NNTr�)r|r}r~rEr�r�r�rrrrr��s�
r�Fc	Cs�ddl}dd�}tjdkrxdg}|r.|�d�|r<|�d�|�||��tdd	�}z|j||d
���W�S|��Xn�tr�|r�||�}d||�	dd
��}nd|r�dp�d
|�	dd
�f}t
�|�St�r|r�||�}dt
j
�|��	dd
�}nd|o�d�p�d
|�	dd
�f}t
�|�SzJ|�r8t
j
�||���p4d}n||�}|�d|g�}|�r^|��WSWdStk
�r�|�d��r�|�s�|�s�ddl}|�|�YdSYdSXdS)NrcSsJzddl}Wntk
r(ddl}YnX|�d�rF|�|dd��}|S)Nrzfile://�)�urllib�ImportErrorr�Zunquote)�urlr�rrr�
_unquote_file�s
zopen_url.<locals>._unquote_file�darwinr�z-Wr�z	/dev/null�w)�stderrzexplorer /select,"%s"r�r$zstart %s "" "%s"z/WAITz
cygstart "%s"zcygstart %s "%s"z-w�.zxdg-open)zhttp://zhttps://r)r�r�r�rnr�r�r�r�rr�r�r�r
r��dirnamer�r��
webbrowser)	r�r�Zlocater�r��argsZnullr�r�rrr�open_url�s^	




�

�

�


r�cCs6|dkrt��|dkr ts t��|dkr2tr2t��dS)N���)r�r�EOFError)�chrrr�_translate_ch_to_excsr�ccs
dVdSrIrrrrr�raw_terminalsr�cCs6|rtj}ntj}|�}|dkr*||�7}t|�|S)N)��à)�msvcrtZgetwcheZgetwchr�)r�funcr{rrr�getchar#s
r�ccs�ttj�std�}|��}ntj��}d}zPt�|�}zt�
|�|VW5t�|tj|�tj	�
�|dk	rv|��XWntjk
r�YnXdS)Nz/dev/tty)rr�r�r��fileno�termiosZ	tcgetattrZ	tcsetattrZ	TCSADRAINr�rVr��ttyZsetraw�error)r�r�Zold_settingsrrrr�Qs 






c
Csbt��R}t�|d�}|�ttj�d�}|r@ttj�r@tj�	|�t
|�|W5QR�SQRXdS)N� r�)r�r�r�r�r
r�r�rr�rTr�)rr�r�rrrr�fs)N)FF))�__doc__r�r�r8ri�
contextlibZ_compatrrrrrrr	r
rrr
Zutilsr�
exceptionsrr�rtrUr�objectrr�r�r�r�r�r�r�r��contextmanagerr�r�r�r�rrrr�<module>sB4
p
1M
;	

+