a
    �ÏOc›[  ã                   @   s(  d Z ddl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 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 ddl
mZ ddl
mZ ddlmZ ddlmZ e d¡ZejdkrÖdZdZndZdZG dd„ deje ƒZd3eje ej e! ddœdd„Z"eje eej e! ddœdd„Z#eje eej e! ddœdd„Z$ej%eje ej e! ddœd d!„Z&G d"d#„ d#ƒZ'd4ee!e!e(d%œd&d'„Z)eej e* d(œd)d*„Z+e�rêddl,Z,ej-ej.e( d+œd,d-„ƒZ/e!ed.œd/d0„Z0n:ddl1Z1ddl2Z2ej-ej.e( d+œd1d-„ƒZ/e!ed.œd2d0„Z0dS )5z¿
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.
é    N)Úgettexté   )Ú_default_text_stdout)ÚCYGWIN)Úget_best_encoding)Úisatty)Úopen_stream)Ú
strip_ansi)Úterm_len)ÚWIN)ÚClickException)ÚechoÚVÚntúÚ
z[?25lz[?25h
c                   @   s   e Zd Zd4ejeje  eje eeeee	eje	 e	ejej
eje geje f  eje ejej eje	 eedd
œdd„Zd dœdd„Zdd„ Zeje dœdd„Zedœdd„Zddœdd„Zeedœdd„ƒZeedœdd„ƒZeedœdd„ƒZedœdd„Zedœd d!„Zedœd"d#„Zedœd$d%„Zedœd&d'„Zddœd(d)„Zedd*œd+d,„Zd5eeje dd-œd.d/„Zddœd0d1„Z eje dœd2d3„Z!dS )6ÚProgressBarNú#ú ú%(bar)sú  TFr   é   )ÚiterableÚlengthÚ	fill_charÚ
empty_charÚbar_templateÚinfo_sepÚshow_etaÚshow_percentÚshow_posÚitem_show_funcÚlabelÚfileÚcolorÚupdate_min_stepsÚwidthÚreturnc                 C   s*  || _ || _|| _|| _|| _|| _|	| _|
| _|p6d| _|d u rHt	ƒ }|| _
|| _|| _d| _|| _|dk| _|d u ršddlm} ||dƒ}|dkršd }|d u rÈ|d u r²tdƒ‚t tjt t|ƒ¡}t|ƒ| _|| _d| _g | _t ¡  | _| _d| _d| _ d | _!d| _"d | _#t$| j
ƒ | _%d | _&d S )NÚ r   )Úlength_hintéÿÿÿÿziterable or length is requiredF)'r   r   r   r   r   r   r    r!   r"   r   r#   r$   r%   Ú_completed_intervalsr&   Ú	autowidthÚoperatorr)   Ú	TypeErrorÚtÚcastÚIterabler   ÚrangeÚiterr   ÚposÚavgÚtimeÚstartÚlast_etaÚ	eta_knownÚfinishedÚ	max_widthÚenteredÚcurrent_itemr   Ú	is_hiddenÚ
_last_line)Úselfr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r)   © rA   úI/var/www/html/gsl.tools/lib/python3.9/site-packages/click/_termui_impl.pyÚ__init__$   sL    



zProgressBar.__init__©r'   c                 C   s   d| _ |  ¡  | S )NT)r<   Úrender_progress©r@   rA   rA   rB   Ú	__enter__`   s    zProgressBar.__enter__c                 C   s   |   ¡  d S ©N)Úrender_finish)r@   Úexc_typeÚ	exc_valueÚtbrA   rA   rB   Ú__exit__e   s    zProgressBar.__exit__c                 C   s   | j stdƒ‚|  ¡  |  ¡ S )Nú.You need to use progress bars in a with block.)r<   ÚRuntimeErrorrE   Ú	generatorrF   rA   rA   rB   Ú__iter__h   s    zProgressBar.__iter__c                 C   s   t t| ƒƒS rH   )Únextr3   rF   rA   rA   rB   Ú__next__n   s    zProgressBar.__next__c                 C   s$   | j r
d S | j t¡ | j ¡  d S rH   )r>   r#   ÚwriteÚ	AFTER_BARÚflushrF   rA   rA   rB   rI   v   s    zProgressBar.render_finishc                 C   s(   | j r
dS t| jt| jpdƒp d dƒS )Nç      ð?r   )r:   Úminr4   Úfloatr   rF   rA   rA   rB   Úpct|   s    zProgressBar.pctc                 C   s"   | j s
dS t| j ƒtt| j ƒƒ S ©Ng        )r5   ÚsumrY   ÚlenrF   rA   rA   rB   Útime_per_iteration‚   s    zProgressBar.time_per_iterationc                 C   s&   | j d ur"| js"| j| j | j  S dS r[   )r   r:   r^   r4   rF   rA   rA   rB   Úetaˆ   s    zProgressBar.etac                 C   s†   | j r‚t| jƒ}|d }|d }|d }|d }|d }|d }|dkrh|› d|d›d|d›d|d›�S |d›d|d›d|d›�S dS )Né<   é   r   zd Ú02ú:r(   )r9   Úintr_   )r@   r/   ÚsecondsÚminutesÚhoursrA   rA   rB   Ú
format_etaŽ   s    
 zProgressBar.format_etac                 C   s(   t | jƒ}| jd ur$|d| j› �7 }|S )Nú/)Ústrr4   r   )r@   r4   rA   rA   rB   Ú
format_pos�   s    

zProgressBar.format_posc                 C   s   t | jd ƒd›d�dd … S )Néd   z 4ú%r   )rd   rZ   rF   rA   rA   rB   Ú
format_pct£   s    zProgressBar.format_pctc                 C   s¤   | j d ur:t| j| j ƒ}| j| }|| j| j|  7 }nf| jrN| j| j }nRt| j| jp\d ƒ}| jdkr–| j|tt	 
| j| j ¡d d | j ƒ< d |¡}|S )Nr   r   g       @g      à?r(   )r   rd   rZ   r&   r   r   r:   Úlistr^   ÚmathÚcosr4   Újoin)r@   Z
bar_lengthÚbarÚcharsrA   rA   rB   Ú
format_bar¦   s$    


ûÿÿÿ
zProgressBar.format_barc                 C   s¶   | j }g }| jd ur$|d u r$| j }| jr8| |  ¡ ¡ |rJ| |  ¡ ¡ | jrj| jrj| jsj| |  	¡ ¡ | j
d ur’|  
| j¡}|d ur’| |¡ | j| j|  ¡ | j |¡dœ  ¡ S )N)r"   rs   Úinfo)r   r   r    Úappendrk   rn   r   r9   r:   rh   r!   r=   r   r"   ru   r   rr   Úrstrip)r@   r   Z	info_bitsZ	item_inforA   rA   rB   Úformat_progress_line¹   s*    


ýÿÿz ProgressBar.format_progress_linec           	      C   sB  dd l }| jr:| j| jkr6| j| _t| j| j| jd� d S g }| jrž| j}d| _t	|  
¡ ƒ}td| ¡ j| ƒ}||k r˜| t¡ | d| j ¡ || _|| _| j}| jd ur´| j}| t¡ |  
¡ }t	|ƒ}| jd u sâ| j|k rè|| _| |¡ | d||  ¡ d |¡}|| jk�r>|| _t|| j| jdd� | j ¡  d S )Nr   )r#   r$   r   r(   F)r#   r$   Únl)Úshutilr>   r?   r"   r   r#   r$   r,   r&   r
   ry   ÚmaxÚget_terminal_sizeÚcolumnsrw   Ú
BEFORE_BARr;   rr   rV   )	r@   r{   ÚbufZ	old_widthZclutter_lengthZ	new_widthZclear_widthÚlineÚline_lenrA   rA   rB   rE   Ô   s@    




zProgressBar.render_progress)Ún_stepsr'   c                 C   sš   |  j |7  _ | jd ur*| j | jkr*d| _t ¡ | j dk r@d S t ¡ | _| j rft ¡ | j | j  }nt ¡ | j }| jdd … |g | _| jd u| _d S )NTrW   iúÿÿÿ)r4   r   r:   r6   r8   r7   r5   r9   )r@   rƒ   ÚsteprA   rA   rB   Ú	make_step  s    
zProgressBar.make_step)rƒ   r=   r'   c                 C   sF   |dur|| _ |  j|7  _| j| jkrB|  | j¡ |  ¡  d| _dS )a  Update the progress bar by advancing a specified number of
        steps, and optionally set the ``current_item`` for this new
        position.

        :param n_steps: Number of steps to advance.
        :param current_item: Optional item to set as ``current_item``
            for the updated position.

        .. versionchanged:: 8.0
            Added the ``current_item`` optional parameter.

        .. versionchanged:: 8.0
            Only render when the number of steps meets the
            ``update_min_steps`` threshold.
        Nr   )r=   r+   r%   r…   rE   )r@   rƒ   r=   rA   rA   rB   Úupdate  s    zProgressBar.updatec                 C   s   d| _ d | _d| _d S )NFT)r9   r=   r:   rF   rA   rA   rB   Úfinish1  s    zProgressBar.finishc                 c   sj   | j stdƒ‚| jr"| jE dH  nD| jD ],}|| _| jdkrD|  ¡  |V  |  d¡ q(|  ¡  |  ¡  dS )z¨Return a generator which yields the items added to the bar
        during construction, and updates the progress bar *after* the
        yielded block returns.
        rN   Nr   r   )	r<   rO   r>   r3   r=   r+   rE   r†   r‡   )r@   ÚrvrA   rA   rB   rP   6  s    

zProgressBar.generator)Nr   r   r   r   TNFNNNNr   r   )N)"Ú__name__Ú
__module__Ú__qualname__r/   ÚOptionalr1   r   rd   rj   ÚboolÚCallableÚTextIOrC   rG   rM   ÚIteratorrQ   rS   rI   ÚpropertyrY   rZ   r^   r_   rh   rk   rn   ru   ry   rE   r…   r†   r‡   rP   rA   rA   rA   rB   r   #   sj                 ð 
ï<-r   )rP   r$   r'   c              	   C   s:  t ƒ }ttjƒrt|ƒs$t|| |ƒS tj dd¡p4d ¡ }|rZt	rNt
| ||ƒS t| ||ƒS tj d¡dv rvt|| |ƒS t	s†tj d¡r’t
| d|ƒS ttdƒr¶t d	¡d
kr¶t| d|ƒS d
dl}| ¡ \}}t |¡ zTttdƒ�rt d|› d�¡d
k�rt| d|ƒW t |¡ S t|| |ƒW t |¡ S t |¡ 0 dS )z2Decide what method to use for paging through text.ZPAGERNr(   ÚTERM)ZdumbZemacsZos2zmore <Úsystemz(less) 2>/dev/nullr   Úlesszmore "ú"Zmore)r   r   ÚsysÚstdinÚ
_nullpagerÚosÚenvironÚgetÚstripr   Ú_tempfilepagerÚ
_pipepagerÚplatformÚ
startswithÚhasattrr“   ÚtempfileÚmkstempÚcloseÚunlink)rP   r$   ÚstdoutZ	pager_cmdr¢   ÚfdÚfilenamerA   rA   rB   ÚpagerX  s4    
$
ý
þr©   )rP   Úcmdr$   r'   c              	   C   s(  ddl }ttjƒ}| dd¡d  ¡ }|du r„|d dkr„tj dd¡› d	 |dd… ¡› �}|spd
|d< d}nd|v s€d|v r„d}|j|d|j	|d�}t
 t
j|j¡}t|ƒ}	z,| D ]"}
|sÆt|
ƒ}
| |
 |	d¡¡ q¶W n ttfyò   Y n
0 | ¡  z| ¡  W n t�y   Y qü0 �q$qüdS )zqPage through text by feeding it to another program.  Invoking a
    pager through this might support colors.
    r   Nri   r   r*   r”   ÚLESSr(   r   ú-RTÚrÚR)Úshellr—   ÚenvÚreplace)Ú
subprocessÚdictr™   rš   ÚrsplitÚsplitr›   rr   ÚPopenÚPIPEr/   r0   ÚBinaryIOr—   r   r	   rT   ÚencodeÚOSErrorÚKeyboardInterruptr¤   Úwait)rP   rª   r$   r²   r°   Z
cmd_detailZ
less_flagsÚcr—   ÚencodingÚtextrA   rA   rB   rž   u  s4    
$rž   c           	   	   C   s¼   ddl }| ¡ \}}d | ¡}|s*t|ƒ}ttjƒ}t|dƒd � }| | 	|¡¡ W d  ƒ n1 sh0    Y  z.t
 |› d|› d�¡ W t
 |¡ t
 |¡ nt
 |¡ t
 |¡ 0 dS )z<Page through text by invoking a program on a temporary file.r   Nr(   Úwbú "r•   )r¢   r£   rr   r	   r   r–   r¦   r   rT   r¹   r™   r“   r¤   r¥   )	rP   rª   r$   r¢   r§   r¨   r¿   r¾   ÚfrA   rA   rB   r�   §  s    

.
ÿ
r�   )ÚstreamrP   r$   r'   c                 C   s$   |D ]}|st |ƒ}|  |¡ qdS )z>Simply print unformatted text.  This is the ultimate fallback.N)r	   rT   )rÃ   rP   r$   r¿   rA   rA   rB   r˜   ¼  s    r˜   c                   @   sx   e Zd Zdeje ejejeef  eeddœdd„Zedœdd	„Z	edd
œdd„Z
ejej ejej dœdd„ZdS )ÚEditorNTú.txt)Úeditorr°   Úrequire_saveÚ	extensionr'   c                 C   s   || _ || _|| _|| _d S rH   )rÆ   r°   rÇ   rÈ   )r@   rÆ   r°   rÇ   rÈ   rA   rA   rB   rC   Ç  s    zEditor.__init__rD   c                 C   sf   | j d ur| j S dD ]}tj |¡}|r|  S qtr:dS dD ]"}t d|› d�¡dkr>|  S q>dS )N)ZVISUALZEDITORZnotepad)zsensible-editorZvimZnanozwhich z >/dev/null 2>&1r   Úvi)rÆ   r™   rš   r›   r   r“   )r@   Úkeyrˆ   rÆ   rA   rA   rB   Ú
get_editorÓ  s    


zEditor.get_editor)r¨   r'   c              
   C   s¶   dd l }|  ¡ }d }| jr0tj ¡ }| | j¡ zD|j|› d|› d�|dd�}| ¡ }|dkrrt	t
dƒj|d�ƒ‚W n< ty° } z$t	t
dƒj||d	�ƒ|‚W Y d }~n
d }~0 0 d S )
Nr   rÁ   r•   T)r°   r¯   z{editor}: Editing failed)rÆ   z{editor}: Editing failed: {e})rÆ   Úe)r²   rË   r°   r™   rš   Úcopyr†   r¶   r¼   r   Ú_Úformatrº   )r@   r¨   r²   rÆ   rš   r½   Z	exit_coderÌ   rA   rA   rB   Ú	edit_fileá  s&    
ÿÿþzEditor.edit_file)r¿   r'   c           	   	   C   s’  dd l }|sd}nLt|ttfƒr&|}n8|r<| d¡s<|d7 }trT| dd¡ d¡}n
| d¡}|jd| j	d�\}}�zt
 |d	¡�}| |¡ W d   ƒ n1 s¢0    Y  t
 |t
j |¡t
j |¡d
 f¡ t
j |¡}|  |¡ | j�rt
j |¡|k�rW t
 |¡ d S t|dƒ�}| ¡ }W d   ƒ n1 �s:0    Y  t|ttfƒ�rd|W t
 |¡ S | d¡ dd¡W t
 |¡ S t
 |¡ 0 d S )Nr   ó    r   z
z	utf-8-sigzutf-8zeditor-)ÚprefixÚsuffixrÀ   é   Úrb)r¢   Ú
isinstanceÚbytesÚ	bytearrayÚendswithr   r±   r¹   r£   rÈ   r™   ÚfdopenrT   ÚutimeÚpathÚgetatimeÚgetmtimerÐ   rÇ   r¥   ÚopenÚreadÚdecode)	r@   r¿   r¢   Údatar§   ÚnamerÂ   Ú	timestamprˆ   rA   rA   rB   Úedit÷  s>    
($


ö(
ü
þzEditor.edit)NNTrÅ   )r‰   rŠ   r‹   r/   rŒ   rj   ÚMappingr�   rC   rË   rÐ   ÚAnyStrrå   rA   rA   rA   rB   rÄ   Æ  s       ûúrÄ   F)Úurlr¼   Úlocater'   c           
      C   sÞ  dd l }ttdœdd„}tjdkr†dg}|r6| d¡ |rD| d¡ | || ƒ¡ td	d
ƒ}z|j||d� ¡ W | ¡  S | ¡  0 nÂt	rà|r¬||  
dd¡ƒ} d| › d�}n*|  
dd¡} |rÀdnd}d|› d| › d�}t |¡S t�rH|�rtj || ƒ 
dd¡¡} d| › d�}n,|  
dd¡} |�r(dnd}d|› d| › d�}t |¡S zJ|�rhtj || ƒ¡�pdd} n|| ƒ} | d| g¡}|�rŽ| ¡ W S W dS  t�yØ   |  d¡�rÒ|�sÒ|�sÒdd l}	|	 | ¡ Y dS Y dS 0 d S )Nr   )rè   r'   c                 S   s*   ddl m} |  d¡r&|| dd … ƒ} | S )Nr   )Úunquotezfile://é   )Úurllib.parserê   r    )rè   rê   rA   rA   rB   Ú_unquote_file*  s    
zopen_url.<locals>._unquote_fileÚdarwinrß   z-Wr¬   z	/dev/nullÚw)Ústderrr•   r(   zexplorer /select,"z/WAITzstart z "" "z
cygstart "z-wz	cygstart rÁ   Ú.zxdg-open)zhttp://zhttps://r   )r²   rj   r–   rŸ   rw   rß   r¶   r¼   r¤   r   r±   r™   r“   r   rÜ   Údirnamerº   r    Ú
webbrowser)
rè   r¼   ré   r²   rí   ÚargsÚnullZwait_strr½   ró   rA   rA   rB   Úopen_url'  sZ    



þ



rö   )Úchr'   c                 C   s6   | dkrt ƒ ‚| dkr ts tƒ ‚| dkr2tr2tƒ ‚d S )Núúú)r»   r   ÚEOFError)r÷   rA   rA   rB   Ú_translate_ch_to_excc  s    rü   rD   c                   c   s
   dV  d S )Nr*   rA   rA   rA   rA   rB   Úraw_terminals  s    rý   )r   r'   c                 C   s6   | rt j}nt j}|ƒ }|dv r*||ƒ 7 }t|ƒ |S )N)ú õ   Ã )ÚmsvcrtZgetwcheÚgetwchrü   )r   Úfuncrˆ   rA   rA   rB   Úgetcharw  s     
r  c                  c   s¾   t tjƒstdƒ} |  ¡ }ntj ¡ }d } zzt |¡}z>t |¡ |V  W t 	|tj
|¡ tj ¡  | d ur¢|  ¡  n,t 	|tj
|¡ tj ¡  | d ur |  ¡  0 W n tjy¸   Y n0 d S )Nz/dev/tty)r   r–   r—   rß   ÚfilenoÚtermiosÚ	tcgetattrÚttyZsetrawÚ	tcsetattrÚ	TCSADRAINr¦   rV   r¤   Úerror)rÂ   r§   Zold_settingsrA   rA   rB   rý   ª  s(    






ü
c                 C   sj   t ƒ �P}t |d¡ ttjƒd¡}| r<ttjƒr<tj 	|¡ t
|ƒ |W  d   ƒ S 1 s\0    Y  d S )Né    r±   )rý   r™   rà   rá   r   r–   r—   r   r¦   rT   rü   )r   r§   r÷   rA   rA   rB   r  Å  s    )N)FF)3Ú__doc__Ú
contextlibrp   r™   r–   r6   Útypingr/   r   rÎ   Ú_compatr   r   r   r   r   r	   r
   r   Ú
exceptionsr   Úutilsr   ÚTypeVarr   rã   r   rU   ÚGenericr   r1   rj   rŒ   r�   r©   rž   r�   r�   r˜   rÄ   rd   rö   ÚBaseExceptionrü   r   Úcontextmanagerr�   rý   r  r  r  rA   rA   rA   rB   Ú<module>   s^   

  7  3þþ
a<0