a
    J5d[                     @   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rd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rd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 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%   _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   N/var/www/html/django/DPS/env/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 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 Z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 )Nd   z 4%r   )rc   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   rc   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"   rr   info)r   r   r    appendrj   rm   r   r9   r:   rg   r!   r=   r   r"   rt   r   rq   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
   rx   maxget_terminal_sizecolumnsrv   
BEFORE_BARr;   rq   rV   )	r@   rz   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 )zReturn 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   rc   ri   boolCallableTextIOrC   rG   rM   IteratorrQ   rS   rI   propertyrY   rZ   r^   r_   rg   rj   rm   rt   rx   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	stjdrt
| d|S ttdrtd	d
krt| 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)dumbemacsZos2zmore <systemz(less) 2>/dev/nullr   lesszmore ""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rtjdd d	|dd  }|spd
|d< d}nd|v sd|v rd}|j|d|j	|d}t
t
j|j}t|}	z,| D ]"}
|st|
}
||
|	d qW n ttfy   Y n
0 |  z|  W n ty   Y q0 q$qdS )zqPage through text by feeding it to another program.  Invoking a
    pager through this might support colors.
    r   Nrh   r   r*   r   LESSr(   r   -RTrR)shellr   envreplace)
subprocessdictr   r   rsplitsplitr   rq   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   rq   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-editor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   	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 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   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   ri   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rdg}|r6|d |rD|d |||  td	d
}z|j||d W |  S |  0 nt	r|r|| 
dd} d|  d}n*| 
dd} |rd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|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   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   ri   r   r   rv   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__
contextlibro   r   r   r6   typingr/   r   r   Z_compatr   r   r   r   r   r	   r
   r   
exceptionsr   utilsr   TypeVarr   r   r~   rU   Genericr   r1   ri   r   r   r   r   r   r   r   r   rc   r   BaseExceptionr   r  contextmanagerr   r  r  r  r	  rA   rA   rA   rB   <module>   s^   

  7  3
a<0