o
    Æhh                     @  s  d Z ddlmZ ddlm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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rdZ&dZ'ndZ&dZ'G dd dej(e$ Z)dDdEd!d"Z*dFd&d'Z+dFd(d)Z,dGd,d-Z-G d.d/ d/Z.dHdId6d7Z/dJd9d:Z0e
j1d;krddl2Z2ej3dKd=d>Z4dLd@dAZ5dS ddl6Z6ddl7Z7ej3dKdBd>Z4dLdCdAZ5dS )Mz
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.
    )annotationsN)gettext)StringIO)Path)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																dXdYd%d&ZdZd(d)Zd[d0d1Zd\d3d4Zd]d6d7Zd^d8d9Ze	d_d;d<Z
e	d_d=d>Ze	d_d?d@Zd`dAdBZd`dCdDZd`dEdFZd`dGdHZd`dIdJZd^dKdLZdadNdOZdbdcdRdSZd^dTdUZd\dVdWZdS )dProgressBarN# %(bar)s  FTr      iterablecabc.Iterable[V] | Nonelength
int | None	fill_charstr
empty_charbar_templateinfo_sephiddenboolshow_etashow_percentbool | Noneshow_positem_show_func)t.Callable[[V | None], str | None] | Nonelabel
str | Nonefilet.TextIO | Nonecolorupdate_min_stepsintwidthreturnNonec                 C  s>  || _ || _|| _|| _|| _|| _|	| _|
| _|| _|pd| _	|d u r.t
 }|d u r.t }|| _|| _|| _d| _|| _|dk| _|d u rWddlm} ||d}|dkrWd }|d u rk|d u rctdtdt|}t|| _|| _d| _g | _|  |  t  | _| _d| _d| _ d | _!d| _"d | _#t$| j| _%d | _&d S )N r   )length_hintziterable or length is requiredzcabc.Iterable[V]F)'r    r"   r#   r$   r%   r'   r(   r*   r+   r-   r   r   r/   r1   r2   _completed_intervalsr4   	autowidthoperatorr8   	TypeErrortcastrangeiterr   posavgtimestartlast_eta	eta_knownfinished	max_widthenteredcurrent_itemr   _is_atty
_last_line)selfr   r   r    r"   r#   r$   r%   r'   r(   r*   r+   r-   r/   r1   r2   r4   r8    rO   T/var/www/html/pro-man-master/venv/lib/python3.10/site-packages/click/_termui_impl.py__init__,   sV   




zProgressBar.__init__ProgressBar[V]c                 C  s   d| _ |   | S )NT)rJ   render_progressrN   rO   rO   rP   	__enter__s   s   zProgressBar.__enter__exc_typetype[BaseException] | None	exc_valueBaseException | NonetbTracebackType | Nonec                 C  s   |    d S N)render_finish)rN   rV   rX   rZ   rO   rO   rP   __exit__x      zProgressBar.__exit__cabc.Iterator[V]c                 C  s   | j std|   |  S )N.You need to use progress bars in a with block.)rJ   RuntimeErrorrS   	generatorrT   rO   rO   rP   __iter__   s   zProgressBar.__iter__r   c                 C  s   t t| S r\   )nextrA   rT   rO   rO   rP   __next__   r_   zProgressBar.__next__c                 C  s*   | j s| jsd S | jt | j  d S r\   )r%   rL   r/   write	AFTER_BARflushrT   rO   rO   rP   r]      s   zProgressBar.render_finishfloatc                 C  s(   | j rdS t| jt| jpdpd dS )N      ?r   )rH   minrB   rj   r   rT   rO   rO   rP   pct   s   zProgressBar.pctc                 C  s"   | j sdS t| j tt| j  S Ng        )rC   sumrj   lenrT   rO   rO   rP   time_per_iteration   s   zProgressBar.time_per_iterationc                 C  s&   | j d ur| js| j| j | j  S dS rn   )r   rH   rq   rB   rT   rO   rO   rP   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:r7   )rG   r3   rr   )rN   r>   secondsminuteshoursrO   rO   rP   
format_eta   s   
 zProgressBar.format_etac                 C  s(   t | j}| jd ur|d| j 7 }|S )N/)r!   rB   r   )rN   rB   rO   rO   rP   
format_pos   s   

zProgressBar.format_posc                 C  s   t | jd dddd  S )Nd   z 4%r   )r3   rm   rT   rO   rO   rP   
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      ?r7   )r   r3   rm   r4   r    r"   rH   listrq   mathcosrB   join)rN   
bar_lengthbarcharsrO   rO   rP   
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-   r   info)r(   r   r*   appendr|   r   r'   rG   rH   rz   r+   rK   r#   r-   r   r$   r   rstrip)rN   r(   	info_bits	item_inforO   rO   rP   format_progress_line   s,   


z ProgressBar.format_progress_linec           	      C  sX  | j rd S | js| j| jkr| j| _t| j| j| jd d S g }| jrYdd l}| j	}d| _	t
|  }td| j| }||k rV| jd urV|t |d| j  || _|| _	| j	}| jd urd| j}|t |  }t
|}| jd u s{| j|k r~|| _|| |d||   d|}|| jkr|| _t|| j| jdd | j  d S d S )N)r/   r1   r   r   r7   F)r/   r1   nl)r%   rL   rM   r-   r   r/   r1   r;   shutilr4   r   r   maxget_terminal_sizecolumnsrI   r   
BEFORE_BARr   ri   )	rN   bufr   	old_widthclutter_length	new_widthclear_widthlineline_lenrO   rO   rP   rS      sF   





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 )NTrk   i)rB   r   rH   rD   rF   rE   rC   rG   )rN   r   steprO   rO   rP   	make_step  s   
zProgressBar.make_steprK   V | Nonec                 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   )rK   r:   r2   r   rS   )rN   r   rK   rO   rO   rP   update0  s   
zProgressBar.updatec                 C  s   d| _ d | _d| _d S )NFT)rG   rK   rH   rT   rO   rO   rP   finishJ  s   
zProgressBar.finishc                 c  sn    | j std| js| 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.
        ra   Nr   r   )	rJ   rb   rL   rA   rK   r:   rS   r   r   )rN   rvrO   rO   rP   rc   O  s   

zProgressBar.generator)Nr   r   r   r   FTNFNNNNr   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/   r0   r1   r)   r2   r3   r4   r3   r5   r6   )r5   rR   )rV   rW   rX   rY   rZ   r[   r5   r6   )r5   r`   )r5   r   )r5   r6   )r5   rj   r5   r!   )r   r3   r5   r6   r\   )r   r3   rK   r   r5   r6   )__name__
__module____qualname__rQ   rU   r^   rd   rf   r]   propertyrm   rq   rr   rz   r|   r   r   r   rS   r   r   r   rc   rO   rO   rO   rP   r   +   sL    
G










.
r   rc   cabc.Iterable[str]r1   r)   r5   r6   c              	   C  s&  t  }|du r
t }ttjrt|st|| |S tjtj	
dddd}|r:tr2t| ||r1dS nt| ||r:dS tj	
ddv rHt|| |S tsPtjdrYt| d	g|rYdS t| d
g|rbdS ddl}| \}}t| zt| d	g|rW t| dS t|| |W t| S t| w )z2Decide what method to use for paging through text.NPAGERr7   F)posixTERM)dumbemacsos2morelessr   )r   r   r   sysstdin
_nullpagershlexsplitosenvirongetr   _tempfilepager
_pipepagerplatform
startswithtempfilemkstempcloseunlink)rc   r1   stdoutpager_cmd_partsr   fdfilenamerO   rO   rP   pagerq  s<   
r   	cmd_parts	list[str]r&   c                 C  s  |sdS ddl }|d }|dd }||}|sdS t| }|j}ddl}	ttj}
|du rV|dkrVtj	dd d
| }|sLd	|
d< d
}n
d|v sTd|v rVd
}|	jt|g| d
|	j|
dd
d}|jdusnJ zTz| D ]}|szt|}|j| qrW n ty   Y n ty } z|  |d}~ww W z|j  W n	 ty   Y nw 	 z|  W 	 d
S  ty   Y nw qz|j  W n	 ty   Y nw 	 z|  W 	 w  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.
    Fr   Nr   r   LESSr7   r   -RTrRreplace)shellr   enverrorstext)r   whichr   resolvename
subprocessdictr   r   r   r   Popenr!   PIPEr   r   rg   BrokenPipeError	Exception	terminater   waitKeyboardInterrupt)rc   r   r1   r   cmd
cmd_paramscmd_filepathcmd_pathcmd_namer   r   
less_flagscr   erO   rO   rP   r     s   


	

r   c              	   C  s&  |sdS ddl }|d }||}|sdS t| }ddl}ddl}| \}	}
d| }|s4t|}t	t
j}t|
dd }||| W d   n1 sSw   Y  z/z|t||
g W n	 tym   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.
    Fr   Nr7   wbT)r   r   r   r   r   r   r   r   r   r
   r   r   r   rg   encodecallr!   OSErrorr   r   r   )rc   r   r1   r   r   r   r   r   r   r   r   r   encodingfrO   rO   rP   r     sB   	







r   streamt.TextIOc                 C  s$   |D ]}|s
t |}| | qdS )z>Simply print unformatted text.  This is the ultimate fallback.N)r   rg   )r   rc   r1   r   rO   rO   rP   r   %  s
   r   c                   @  s^   e Zd Z				dd ddZd!ddZd"ddZejd#ddZejd$ddZd%ddZdS )&EditorNT.txteditorr.   r   cabc.Mapping[str, str] | Nonerequire_saver&   	extensionr!   r5   r6   c                 C  s   || _ || _|| _|| _d S r\   )r   r   r   r   )rN   r   r   r   r   rO   rO   rP   rQ   0  s   
zEditor.__init__c                 C  sh   | j d ur| j S dD ]}tj|}|r|  S q
trdS ddlm} dD ]}||d ur1|  S q%dS )N)VISUALEDITORnotepadr   )r   )zsensible-editorvimnanovi)r   r   r   r   r   r   r   )rN   keyr   r   r   rO   rO   rP   
get_editor<  s   
zEditor.get_editor	filenamesr   c           	   
   C  s   dd l }|  }d }| jrtj }|| j ddd |D }z"|j| d| |dd}|	 }|dkrBt
tdj|dW d S  ty\ } zt
td	j||d
|d }~ww )Nr   r   c                 s  s    | ]	}d | d V  qdS )"NrO   ).0r   rO   rO   rP   	<genexpr>W  s    z$Editor.edit_files.<locals>.<genexpr>T)argsr   r   z{editor}: Editing failed)r   z{editor}: Editing failed: {e})r   r   )r   r   r   r   r   copyr   r   r   r   r   _formatr   )	rN   r   r   r   r   exc_filenamer   	exit_coder   rO   rO   rP   
edit_filesM  s2   
zEditor.edit_filesr   bytes | bytearraybytes | Nonec                 C     d S r\   rO   rN   r   rO   rO   rP   editg     zEditor.editc                 C  r  r\   rO   r  rO   rO   rP   r	  l  r
  str | bytes | bytearray | Nonestr | bytes | Nonec           	   	   C  s  dd l }|d u r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 sRw   Y  t
|t
j|t
j|d
 f t
j|}| |f | 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   fdopenrg   utimepathgetatimegetmtimer  r   r   openreaddecode)	rN   r   r   datar   r   r   	timestampr   rO   rO   rP   r	  o  s:   
$

)NNTr   )
r   r.   r   r   r   r&   r   r!   r5   r6   r   )r   r   r5   r6   )r   r  r5   r  )r   r.   r5   r.   )r   r  r5   r  )	r   r   r   rQ   r   r  r>   overloadr	  rO   rO   rO   rP   r   /  s    

r   Furlr!   r   locater3   c           	      C  s  dd l }ddd}tjdkr?dg}|r|d	 |r|d
 |||  tdd}z|j||d W |  S |  w trt|rO|| } dd|  g}ndg}|rY|d |d ||  z|	|W S  t
ys   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!   r5   c                 S  s*   ddl m} | dr|| dd  } | S )Nr   )unquotezfile://   )urllib.parser#  r   )r!  r#  rO   rO   rP   _unquote_file  s   
zopen_url.<locals>._unquote_filedarwinr  z-Wr   z	/dev/nullw)stderrexplorerz/select,rE   z/WAITr7      cygstartz-w.zxdg-open)zhttp://zhttps://r   )r!  r!   r5   r!   )r   r   r   r   r  r   r   r   r   r   r   r	   r   r  dirnamer   
webbrowser)	r!  r   r"  r   r&  r   nullr   r/  rO   rO   rP   open_url  sn   











r1  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)r2  rO   rO   rP   _translate_ch_to_exc  s   r7  win32cabc.Iterator[int]c                   c  s    dV  d S )Nr9   rO   rO   rO   rO   rP   raw_terminal  s   
r:  r   c                 C  sZ   | rt t jg tf tj}nt t jg tf tj}| }|dv r'|| 7 }t| |S )N)    à)r>   r?   Callabler!   msvcrtgetwchegetwchr7  )r   funcr   rO   rO   rP   getchar  s   
rB  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   ri   r   error)r   r   old_settingsrO   rO   rP   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   rg   r7  )r   r   r2  rO   rO   rP   rB  G  s   $r\   )rc   r   r1   r)   r5   r6   )rc   r   r   r   r1   r)   r5   r&   )r   r   rc   r   r1   r)   r5   r6   )FF)r!  r!   r   r&   r"  r&   r5   r3   )r2  r!   r5   r6   )r5   r9  )r   r&   r5   r!   )8__doc__
__future__r   collections.abcabccabc
contextlibr   r   r   r   rD   typingr>   r   r   ior   pathlibr   typesr   _compatr   r	   r
   r   r   r   r   r   
exceptionsr   utilsr   TypeVarr   r   r   rh   Genericr   r   r   r   r   r   r1  r7  r   r>  contextmanagerr:  rB  rD  rF  rO   rO   rO   rP   <module>   sd    

  H
*
]
-
p
G
/