o
    q>e^                  	   @   sd  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 edZejdkrwdZdZndZdZG dd dej e Z!d8dej"e# dej$e% ddfddZ&dej"e# de#dej$e% ddfdd Z'dej"e# de#dej$e% dd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+d9d)e#d*e%d+e%de,fd,d-Z-d.e#dej$e. fd/d0Z/erddl0Z0ej1dej2e, fd1d2Z3d3e%de#fd4d5Z4dS ddl5Z5ddl6Z6ej1dej2e, fd6d2Z3d3e%de#fd7d5Z4d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)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+    rC   S/var/www/bmteknikk.ddns.net/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rB   rC   rC   rD   	__enter__k   s   zProgressBar.__enter__exc_type	exc_valuetbc                 C   s   |    d S N)render_finish)rB   rJ   rK   rL   rC   rC   rD   __exit__p      zProgressBar.__exit__c                 C   s   | j std|   |  S )N.You need to use progress bars in a with block.)r>   RuntimeErrorrG   	generatorrH   rC   rC   rD   __iter__x   s   zProgressBar.__iter__c                 C   s   t t| S rM   )nextr5   rH   rC   rC   rD   __next__~   rP   zProgressBar.__next__c                 C   s$   | j rd S | jt | j  d S rM   )r@   r%   write	AFTER_BARflushrH   rC   rC   rD   rN      s   zProgressBar.render_finishc                 C   s(   | j rdS t| jt| jpdpd dS )N      ?r   )r<   minr6   floatr   rH   rC   rC   rD   pct   s   zProgressBar.pctc                 C   s"   | j sdS t| j tt| j  S Ng        )r7   sumr\   lenrH   rC   rC   rD   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<   ra   r6   rH   rC   rC   rD   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;   intrb   )rB   r1   secondsminuteshoursrC   rC   rD   
format_eta   s   
 zProgressBar.format_etac                 C   s(   t | j}| jd ur|d| j 7 }|S )N/)strr6   r   )rB   r6   rC   rC   rD   
format_pos   s   

zProgressBar.format_posc                 C   s   t | jd dddd  S )Nd   z 4%r   )rg   r]   rH   rC   rC   rD   
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   rg   r]   r(   r   r   r<   listra   mathcosr6   join)rB   
bar_lengthbarcharsrC   rC   rD   
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$   rw   info)r!   r   r"   appendrn   rq   r    r;   r<   rk   r#   r?   r   r$   ry   r   ru   rstrip)rB   r!   	info_bits	item_inforC   rC   rD   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)shutilr@   rA   r$   r   r%   r&   r.   r(   r   r   maxget_terminal_sizecolumnsr{   
BEFORE_BARr=   ru   rY   )	rB   r   buf	old_widthclutter_length	new_widthclear_widthlineline_lenrC   rC   rD   rG      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 )NTrZ   i)r6   r   r<   r8   r:   r9   r7   r;   )rB   r   steprC   rC   rD   	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   rG   )rB   r   r?   rC   rC   rD   update'  s   
zProgressBar.updatec                 C   s   d| _ d | _d| _d S )NFT)r;   r?   r<   rH   rC   rC   rD   finishA  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.
        rQ   Nr   r   )	r>   rR   r@   r5   r?   r-   rG   r   r   )rB   rvrC   rC   rD   rS   F  s   

zProgressBar.generator)Nr   r   r   r   TNFNNNNr   r   )r)   rF   )r)   NrM   )%__name__
__module____qualname__r1   Optionalr3   r   rg   rm   boolCallableTextIOrE   rI   TypeBaseExceptionr   rO   IteratorrT   rV   rN   propertyr\   r]   ra   rb   rk   rn   rq   ry   r   rG   r   r   r   rS   rC   rC   rC   rD   r   %   s    	
 


E


-
r   rS   r&   r)   c              	   C   s@  t  }|du r
t }ttjrt|st|| |S tjddp!d	 }|r4t
r.t| ||S t| ||S tjddv rBt|| |S t
sJtjdrPt| d|S ttdrbtd	d
krbt| d|S d
dl}| \}}t| z(ttdrtd| dd
krt| d|W t| S t|| |W t| S t| w )z2Decide what method to use for paging through text.NPAGERr*   TERM)dumbemacsos2zmore <systemz(less) 2>/dev/nullr   lesszmore ""more)r   r   r	   sysstdin
_nullpagerosenvirongetstripr   _tempfilepager
_pipepagerplatform
startswithhasattrr   tempfilemkstempcloseunlink)rS   r&   stdout	pager_cmdr   fdfilenamerC   rC   rD   pagerh  s2   
 r   cmdc              	   C   s"  ddl }ttj}|ddd  }|du rB|d dkrBtjdd d	|dd  }|s8d
|d< d}n
d|v s@d|v rBd}|j|d|j	|d}t
t
j|j}t|}	z| D ]}
|sct|
}
||
|	d q[W n ttfyy   Y nw |  	 z|  W dS  ty   Y nw q)zqPage through text by feeding it to another program.  Invoking a
    pager through this might support colors.
    r   Nrl   r   r,   r   LESSr*   r   -RTrR)shellr   envreplace)
subprocessdictr   r   rsplitsplitr   ru   PopenPIPEr1   r2   BinaryIOr   r   r   rW   encodeOSErrorKeyboardInterruptr   wait)rS   r   r&   r   r   
cmd_detail
less_flagscr   encodingtextrC   rC   rD   r     s>   
$

r   c           	   	   C   s   ddl }| \}}d| }|st|}ttj}t|dd }||	| W d   n1 s4w   Y  zt
| d| d W t
| t
| dS t
| t
| w )z<Page through text by invoking a program on a temporary file.r   Nr*   wb "r   )r   r   ru   r   r   r   r   r
   rW   r   r   r   r   r   )	rS   r   r&   r   r   r   r   r   frC   rC   rD   r     s   



r   streamc                 C   s$   |D ]}|s
t |}| | qdS )z>Simply print unformatted text.  This is the ultimate fallback.N)r   rW   )r   rS   r&   r   rC   rC   rD   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 rM   )r   r   r   r   )rB   r   r   r   r   rC   rC   rD   rE     s   
zEditor.__init__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r0|  S qdS )N)VISUALEDITORnotepad)zsensible-editorvimnanozwhich z >/dev/null 2>&1r   vi)r   r   r   r   r   r   )rB   keyr   r   rC   rC   rD   
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   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   )rB   r   r   r   r   r   	exit_coder   rC   rC   rD   	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   fdopenrW   utimepathgetatimegetmtimer   r   r   openreaddecode)	rB   r   r   datar   namer   	timestampr   rC   rC   rD   edit  s:   
$


zEditor.edit)NNTr   )r   r   r   r1   r   rm   Mappingr   rE   r   r   AnyStrr   rC   rC   rC   rD   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	rp|rV|| 
dd} d|  d}n| 
dd} |r`dnd}d| d|  d}t|S tr|rtj|| 
dd} d|  d}n| 
dd} |rdnd}d| d|  d}t|S 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  rC   rC   rD   _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   rm   r   r   r{   r   r   r   r   r   r   r   r   r   r   dirnamer   r   
webbrowser)
r  r   r  r   r  argsnullwait_strr   r  rC   rC   rD   open_url=  sX   







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  rC   rC   rD   _translate_ch_to_excy  s   r  c                   c   s    dV  d S )Nr,   rC   rC   rC   rC   rD   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   rC   rC   rD   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   rY   r   error)r   r   old_settingsrC   rC   rD   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   rW   r  )r   r   r  rC   rC   rD   r    s   $rM   )FF)7__doc__
contextlibrs   r   r   r8   typingr1   r   r   ior   typesr   _compatr   r   r   r	   r
   r   r   r   
exceptionsr   utilsr   TypeVarr   r   r   rX   Genericr   r3   rm   r   r   r   r   r   r   r   r   rg   r  r   r  r  contextmanagerr   r  r  r#  r!  rC   rC   rC   rD   <module>   s|    

  $E&#2


a<0