o
    h`                  	   @   sp  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 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#d9dej$e% dej&e' ddfddZ(dej$e% de%dej&e' de'fd d!Z)dej$e% de%dej&e' de'fd"d#Z*d$ej+dej$e% dej&e' ddfd%d&Z,G d'd( d(Z-d:d*e%d+e'd,e'de.fd-d.Z/d/e%dej&e0 fd0d1Z1erddl2Z2ej3dej4e. fd2d3Z5d4e'de%fd5d6Z6dS ddl7Z7ddl8Z8ej3dej4e. fd7d3Z5d4e'de%fd8d6Z6dS );z
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)StringIO)which)TracebackType   )_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															dFd
ejeje  deje dedededede	deje	 de	dejej
eje geje f  deje dejej deje	 dededdf ddZdGddZdejeje  d eje d!eje ddfd"d#Zdeje fd$d%Zdefd&d'ZdHd(d)Zedefd*d+Zedefd,d-Zedefd.d/Zdefd0d1Zdefd2d3Zdefd4d5Zdefd6d7Zdefd8d9ZdHd:d;Z d<eddfd=d>Z!dId<ed?eje ddfd@dAZ"dHdBdCZ#deje fdDdEZ$dS )J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@  || _ || _|| _|| _|| _|| _|	| _|
| _|pd| _|d u r+t	 }|d u r+t
 }|| _|| _|| _d| _|| _|dk| _|d u rTddlm} ||d}|dkrTd }|d u rk|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_hintziterable or length is requiredF)(r   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,    rD   J/var/www/vip_panel/venv/lib/python3.10/site-packages/click/_termui_impl.py__init__(   sT   




zProgressBar.__init__ProgressBar[V]c                 C   s   d| _ |   | S )NT)r?   render_progressrC   rD   rD   rE   	__enter__m   s   zProgressBar.__enter__exc_type	exc_valuetbc                 C   s   |    d S N)render_finish)rC   rK   rL   rM   rD   rD   rE   __exit__r      zProgressBar.__exit__c                 C   s   | j std|   |  S )N.You need to use progress bars in a with block.)r?   RuntimeErrorrH   	generatorrI   rD   rD   rE   __iter__z   s   zProgressBar.__iter__c                 C   s   t t| S rN   )nextr6   rI   rD   rD   rE   __next__   rQ   zProgressBar.__next__c                 C   s$   | j rd S | jt | j  d S rN   )rA   r&   write	AFTER_BARflushrI   rD   rD   rE   rO      s   zProgressBar.render_finishc                 C   s(   | j rdS t| jt| jpdpd dS )N      ?r   )r=   minr7   floatr   rI   rD   rD   rE   pct   s   zProgressBar.pctc                 C   s"   | j sdS t| j tt| j  S Ng        )r8   sumr]   lenrI   rD   rD   rE   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=   rb   r7   rI   rD   rD   rE   eta   s   zProgressBar.etac                 C   s   | j rAt| j}|d }|d }|d }|d }|d }|d }|dkr4| d|dd|dd|dS |dd|dd|dS dS )N<      r   zd 02:r+   )r<   intrc   )rC   r2   secondsminuteshoursrD   rD   rE   
format_eta   s   
 zProgressBar.format_etac                 C   s(   t | j}| jd ur|d| j 7 }|S )N/)strr7   r   )rC   r7   rD   rD   rE   
format_pos   s   

zProgressBar.format_posc                 C   s   t | jd dddd  S )Nd   z 4%r   )rh   r^   rI   rD   rD   rE   
format_pct   s   zProgressBar.format_pctc                 C   s   | j d urt| j| j }| j| }|| j| j|  7 }|S | jr)| j| j }|S t| j| jp0d }| jdkrM| j|tt	
| j| j d d | j < d|}|S )Nr   r   g       @g      ?r+   )r   rh   r^   r)   r   r   r=   listrb   mathcosr7   join)rC   
bar_lengthbarcharsrD   rD   rE   
format_bar   s(   



zProgressBar.format_barc                 C   s   | j }g }| jd ur|d u r| j }| jr||   |r%||   | jr5| jr5| js5|| 	  | j
d urI| 
| j}|d urI|| | j| j|  | j|d  S )N)r%   rx   info)r"   r   r#   appendro   rr   r!   r<   r=   rl   r$   r@   r   r%   rz   r    rv   rstrip)rC   r"   	info_bits	item_inforD   rD   rE   format_progress_line   s,   


z ProgressBar.format_progress_linec           	      C   sD  dd l }| jr| j| jkr| j| _t| j| j| jd d S g }| jrO| j}d| _t	| 
 }td| j| }||k rL|t |d| j  || _|| _| j}| jd urZ| j}|t | 
 }t	|}| jd u sq| j|k rt|| _|| |d||   d|}|| jkr|| _t|| j| jdd | j  d S d S )Nr   )r&   r'   r   r+   F)r&   r'   nl)shutilrA   rB   r%   r   r&   r'   r/   r)   r   r   maxget_terminal_sizecolumnsr|   
BEFORE_BARr>   rv   rZ   )	rC   r   buf	old_widthclutter_length	new_widthclear_widthlineline_lenrD   rD   rE   rH      sB   





zProgressBar.render_progressn_stepsc                 C   s   |  j |7  _ | jd ur| j | jkrd| _t | j dk r d S t | _| j r3t | j | j  }nt | j }| jdd  |g | _| jd u| _d S )NTr[   i)r7   r   r=   r9   r;   r:   r8   r<   )rC   r   steprD   rD   rE   	make_step  s   
zProgressBar.make_stepr@   c                 C   sJ   |dur|| _ |  j|7  _| j| jkr#| | j |   d| _dS 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   rH   )rC   r   r@   rD   rD   rE   update)  s   
zProgressBar.updatec                 C   s   d| _ d | _d| _d S )NFT)r<   r@   r=   rI   rD   rD   rE   finishC  s   
zProgressBar.finishc                 c   sn    | j std| jr| jE dH  dS | jD ]}|| _| jdkr$|   |V  | d q|   |   dS )zReturn a generator which yields the items added to the bar
        during construction, and updates the progress bar *after* the
        yielded block returns.
        rR   Nr   r   )	r?   rS   rA   r6   r@   r.   rH   r   r   )rC   rvrD   rD   rE   rT   H  s   

zProgressBar.generator)Nr   r   r   r   TNFNNNNr   r   )r*   rG   )r*   NrN   )%__name__
__module____qualname__r2   Optionalr4   r   rh   rn   boolCallableTextIOrF   rJ   TypeBaseExceptionr   rP   IteratorrU   rW   rO   propertyr]   r^   rb   rc   rl   ro   rr   rz   r   rH   r   r   r   rT   rD   rD   rD   rE   r   '   s    	
 


E


-
r   rT   r'   r*   c              	   C   s  t  }|du r
t }ttjrt|st|| |S tjddp!d	 }|r9t
r1t| ||r0dS nt| ||r9dS tjddv rGt|| |S t
sOtjdrWt| d|rWdS t| d|r_dS d	dl}| \}}t| zt| d|r}W t| dS t|| |W t| S t| w )
z2Decide what method to use for paging through text.NPAGERr+   TERM)dumbemacsos2morelessr   )r   r   r
   sysstdin
_nullpagerosenvirongetstripr   _tempfilepager
_pipepagerplatform
startswithtempfilemkstempcloseunlink)rT   r'   stdout	pager_cmdr   fdfilenamerD   rD   rE   pagerj  s<   
r   cmdc           
   	   C   s0  t |}|du r
dS ddl}ttj}|ddd  }|du rL|d dkrLtjdd	 d
|dd  }|sBd|d< d}n
d|v sJd|v rLd}|j	|gd|j
|ddd}|jdus`J z| D ]}	|skt|	}	|j|	 qcW n ttfy~   Y nw |j  	 z|  W 	 dS  ty   Y nw q)zPage through text by feeding it to another program.  Invoking a
    pager through this might support colors.

    Returns True if the command was found, False otherwise and thus another
    pager should be attempted.
    NFr   rm   r   r-   r   LESSr+   r   -RTrRreplace)shellr   enverrorstext)r   
subprocessdictr   r   rsplitsplitr   rv   PopenPIPEr   r   rX   OSErrorKeyboardInterruptr   wait)
rT   r   r'   cmd_absoluter   r   
cmd_detail
less_flagscr   rD   rD   rE   r     sR   
$


r   c              	   C   s   t |}|du r
dS ddl}ddl}| \}}d| }|s#t|}ttj}	t	|dd }
|

||	 W d   n1 sBw   Y  z-z	|||g W n	 tyZ   Y nw W t| t| dS W t| t| dS t| t| w )zPage through text by invoking a program on a temporary file.

    Returns True if the command was found, False otherwise and thus another
    pager should be attempted.
    NFr   r+   wbT)r   r   r   r   rv   r   r	   r   r   r   rX   encodecallr   r   r   r   )rT   r   r'   r   r   r   r   r   r   encodingfrD   rD   rE   r     s8   






r   streamc                 C   s$   |D ]}|s
t |}| | qdS )z>Simply print unformatted text.  This is the ultimate fallback.N)r   rX   )r   rT   r'   r   rD   rD   rE   r     s
   r   c                   @   s   e Zd Z				ddeje dejejeef  dededdf
d	d
ZdefddZ	deddfddZ
dejej dejej fddZdS )EditorNT.txteditorr   require_save	extensionr*   c                 C   s   || _ || _|| _|| _d S rN   )r   r   r   r   )rC   r   r   r   r   rD   rD   rE   rF     s   
zEditor.__init__c                 C   s\   | j d ur| j S dD ]}tj|}|r|  S q
trdS dD ]}t|d ur+|  S qdS )N)VISUALEDITORnotepad)zsensible-editorvimnanovi)r   r   r   r   r   r   )rC   keyr   r   rD   rD   rE   
get_editor  s   
zEditor.get_editorr   c              
   C   s   dd l }|  }d }| jrtj }|| j z#|j| d| d|dd}| }|dkr9t	t
dj|dW d S  tyS } zt	t
dj||d	|d }~ww )
Nr   z ""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   )rC   r   r   r   r   r   	exit_coder   rD   rD   rE   	edit_file  s,   
zEditor.edit_filer   c           	   	   C   s  dd l }|s	d}n&t|ttfr|}n|r|ds|d7 }tr*|ddd}n|d}|jd| j	d\}}zt
|d	}|| W d    n1 sPw   Y  t
|t
j|t
j|d
 f t
j|}| | | jrt
j||krW t
| d S t|d}| }W d    n1 sw   Y  t|ttfr|W t
| S |dddW t
| S t
| w )Nr       r   z
z	utf-8-sigzutf-8zeditor-)prefixsuffixr      rb)r   
isinstancebytes	bytearrayendswithr   r   r   r   r   r   fdopenrX   utimepathgetatimegetmtimer   r   r   openreaddecode)	rC   r   r   datar   namer   	timestampr   rD   rD   rE   edit3  s:   
$


zEditor.edit)NNTr   )r   r   r   r2   r   rn   Mappingr   rF   r   r   AnyStrr   rD   rD   rD   rE   r     s&    
&r   Furlr   locatec           	      C   s  dd l }dtdtfdd}tjdkrCdg}|r|d |r#|d	 |||  td
d}z|j||d W |  S |  w t	rx|rS|| } dd|  g}ndg}|r]|d |d ||  z|
|W S  tyw   Y dS w tr|r|| } dtj| g}ndg}|r|d ||  z|
|W S  ty   Y dS w z"|rtj|| pd} n|| } |d| g}|r| W S W dS  ty   | dr|s|sdd l}||  Y dS Y dS w )Nr   r  r*   c                 S   s*   ddl m} | dr|| dd  } | S )Nr   )unquotezfile://   )urllib.parser  r   )r  r  rD   rD   rE   _unquote_filef  s   
zopen_url.<locals>._unquote_filedarwinr   z-Wr   z	/dev/nullw)stderrexplorerz/select,r:   z/WAITr+      cygstartz-w.zxdg-open)zhttp://zhttps://r   )r   rn   r   r   r|   r   r   r   r   r   r   r   r   r   r   dirnamer   
webbrowser)	r  r   r  r   r  argsnullr   r  rD   rD   rE   open_urlc  sn   










r  chc                 C   s6   | dkrt  | dkrtst | dkrtrt d S )N)r   r   EOFError)r  rD   rD   rE   _translate_ch_to_exc  s   r  c                   c   s    dV  d S )Nr-   rD   rD   rD   rD   rE   raw_terminal  s   
r  r   c                 C   s6   | rt j}nt j}| }|dv r|| 7 }t| |S )N)    à)msvcrtgetwchegetwchr  )r   funcr   rD   rD   rE   getchar  s    
r!  c                  c   s    t tjstd} |  }ntj }d } zAt|}z$t| |V  W t	|tj
| tj  | d ur>|   W d S W d S t	|tj
| tj  | d urW|   w w  tjyb   Y d S w )Nz/dev/tty)r
   r   r   r   filenotermios	tcgetattrttysetraw	tcsetattr	TCSADRAINr   rZ   r   error)r   r   old_settingsrD   rD   rE   r    s0   







c                 C   sj   t  (}t|dttjd}| rttjrtj	| t
| |W  d    S 1 s.w   Y  d S )N    r   )r  r   r   r   r	   r   r   r
   r   rX   r  )r   r   r  rD   rD   rE   r!    s   $rN   )FF)9__doc__
contextlibrt   r   r   r9   typingr2   r   r   ior   r   r   typesr   _compatr   r   r	   r
   r   r   r   r   
exceptionsr   utilsr   TypeVarr   r   r   rY   Genericr   r4   rn   r   r   r   r   r   r   r   r   rh   r  r   r  r  contextmanagerr   r  r!  r#  r%  rD   rD   rD   rE   <module>   s~    

  $E&'A
&

aG0