a
    0h`                     @   sL  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rdZ dZ!ndZ dZ!G dd dej"e Z#d6ej$e% ej&e' ddddZ(ej$e% e%ej&e' e'dddZ)ej$e% e%ej&e' e'dd d!Z*ej+ej$e% ej&e' dd"d#d$Z,G d%d& d&Z-d7e%e'e'e.d(d)d*Z/e%ej&e0 d+d,d-Z1erddl2Z2ej3ej4e. d.d/d0Z5e'e%d1d2d3Z6n:ddl7Z7ddl8Z8ej3ej4e. d.d4d0Z5e'e%d1d5d3Z6dS )8z
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d6e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ejeje  eje eje dd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!d7eeje dd/d0d1Z"ddd2d3Z#eje dd4d5Z$dS )8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 rVt	 }|d u rVt
 }|| _|| _|| _d| _|| _|dk| _|d u rddlm} ||d}|dkrd }|d u r|d u rt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   @/var/www/auris/lib/python3.9/site-packages/click/_termui_impl.py__init__(   sT    



zProgressBar.__init__zProgressBar[V]r*   c                 C   s   d| _ |   | S )NT)r?   render_progressrC   rD   rD   rE   	__enter__m   s    zProgressBar.__enter__)exc_type	exc_valuetbr*   c                 C   s   |    d S N)render_finish)rC   rK   rL   rM   rD   rD   rE   __exit__r   s    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__   s    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=   ra   r7   rI   rD   rD   rE   eta   s    zProgressBar.etac                 C   s   | j rt| 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+   )r<   intrb   )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   )rg   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 }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   rg   r]   r)   r   r   r=   listra   mathcosr7   join)rC   Z
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r8||   |rJ||   | jrj| jrj| jsj|| 	  | j
d ur| 
| j}|d ur|| | j| j|  | j|d  S )N)r%   rv   info)r"   r   r#   appendrn   rq   r!   r<   r=   rk   r$   r@   r   r%   rx   r    ru   rstrip)rC   r"   Z	info_bitsZ	item_inforD   rD   rE   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)shutilrA   rB   r%   r   r&   r'   r/   r)   r   r|   maxget_terminal_sizecolumnsrz   
BEFORE_BARr>   ru   rY   )	rC   r~   bufZ	old_widthZclutter_lengthZ	new_widthZclear_widthlineline_lenrD   rD   rE   rH      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 )NTrZ   i)r7   r   r=   r9   r;   r:   r8   r<   )rC   r   steprD   rD   rE   	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   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   sj   | j std| jr"| jE dH  nD| jD ],}|| _| jdkrD|   |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   rA   r6   r@   r.   rH   r   r   )rC   rvrD   rD   rE   rS   H  s    

zProgressBar.generator)Nr   r   r   r   TNFNNNNr   r   )N)%__name__
__module____qualname__r2   Optionalr4   r   rg   rm   boolCallableTextIOrF   rJ   TypeBaseExceptionr   rP   IteratorrT   rV   rO   propertyr\   r]   ra   rb   rk   rn   rq   rx   r|   rH   r   r   r   rS   rD   rD   rD   rE   r   '   sr                  
E-r   )rS   r'   r*   c              	   C   s"  t  }|du rt }ttjr&t|s2t|| |S tjddpBd	 }|rrt
rbt| ||rrdS nt| ||rrdS tjddv rt|| |S t
stjdrt| d|rdS t| d|rdS d	dl}| \}}t| z4t| d|rW t| dS t|| |W t| S t| 0 dS )
z2Decide what method to use for paging through text.NZPAGERr+   TERM)ZdumbZemacsZos2Zmorelessr   )r   r   r
   sysstdin
_nullpagerosenvirongetstripr   _tempfilepager
_pipepagerplatform
startswithtempfilemkstempcloseunlink)rS   r'   stdoutZ	pager_cmdr   fdfilenamerD   rD   rE   pagerj  s@    


r   )rS   cmdr'   r*   c           
   	   C   s6  t |}|du rdS ddl}ttj}|ddd  }|du r|d dkrtjdd	 d
|dd  }|sd|d< d}nd|v sd|v rd}|j	|gd|j
|ddd}|jdusJ z&| D ]}	|st|	}	|j|	 qW n ttfy   Y n0 |j  z|  W n ty(   Y n0 q2qdS )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   rl   r   r-   r   LESSr+   r   -RTrRreplace)shellr   enverrorstext)r   
subprocessdictr   r   rsplitsplitr   ru   PopenPIPEr   r   rW   OSErrorKeyboardInterruptr   wait)
rS   r   r'   cmd_absoluter   r   Z
cmd_detailZ
less_flagscr   rD   rD   rE   r     sH    
$
r   c              	   C   s   t |}|du rdS ddl}ddl}| \}}d| }|sFt|}ttj}	t	|dd  }
|

||	 W d   n1 s0    Y  z>z|||g W n ty   Y n0 W t| t| nt| t| 0 dS )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   ru   r   r	   r   r   r   rW   encodecallr   r   r   r   )rS   r   r'   r   r   r   r   r   r   encodingfrD   rD   rE   r     s*    

.

r   )streamrS   r'   r*   c                 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   rD   rD   rE   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 rN   )r   r   r   r   )rC   r   r   r   r   rD   rD   rE   rF     s    zEditor.__init__rG   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)ZVISUALZEDITORZnotepad)zsensible-editorZvimZnanovi)r   r   r   r   r   r   )rC   keyr   r   rD   rD   rE   
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   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   Z	exit_coder   rD   rD   rE   	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 s0    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   fdopenrW   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   rm   Mappingr   rF   r   r   AnyStrr   rD   rD   rD   rE   r     s       r   F)urlr   locater*   c           	      C   s  dd l }ttddd}tjdkrdg}|r6|d |rD|d |||  td	d
}z|j||d W |  S |  0 nt	 r|r|| } dd|  g}n(dg}|r|d |d ||  z|
|W S  t y   Y dS 0 njtr`|r|| } dtj| g}n dg}|r2|d ||  z|
|W S  ty^   Y dS 0 zJ|rtj|| p|d} n|| } |d| g}|r| W S W dS  ty   | dr|s|sd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   rD   rD   rE   _unquote_filef  s    
zopen_url.<locals>._unquote_filedarwinr   z-Wr   z	/dev/nullw)stderrZexplorerz/select,r:   z/WAITr+      Zcygstartz-w.zxdg-open)zhttp://zhttps://r   )r   rm   r   r   rz   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  sl    











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   rD   rD   rE   _translate_ch_to_exc  s    r  rG   c                   c   s
   dV  d S )Nr-   rD   rD   rD   rD   rE   raw_terminal  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   rD   rD   rE   getchar  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   rY   r   error)r   r   Zold_settingsrD   rD   rE   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   rW   r  )r   r   r   rD   rD   rE   r    s    )N)FF)9__doc__
contextlibrs   r   r   r9   typingr2   r   r   ior   r~   r   typesr   _compatr   r   r	   r
   r   r   r   r   
exceptionsr   utilsr   TypeVarr   r   r   rX   Genericr   r4   rm   r   r   r   r   r   r   r   r   rg   r   r   r  r  contextmanagerr   r  r  r
  r  rD   rD   rD   rE   <module>   sh   

  E ' B'
aG0