a
    ŠxdÞP  ã                   @   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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jdkrÐdZdZndZdZdd„ ZG dd„ deƒZd.dd„Zdd„ Zdd„ Zdd „ ZG d!d"„ d"eƒZd/d$d%„Z d&d'„ Z!erZddl"Z"ej#d(d)„ ƒZ$d*d+„ Z%n&ddl&Z&ddl'Z'ej#d,d)„ ƒZ$d-d+„ Z%dS )0z¿
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é   )Ú_default_text_stdout)ÚCYGWIN)Úget_best_encoding)Ú	int_types)Úisatty)Úopen_stream)Ú
range_type)Ú
strip_ansi)Úterm_len)ÚWIN)ÚClickException)ÚechoÚntúÚ
z[?25lz[?25h
c                 C   s”   z
t | ƒW S  ttfyŽ   zt| ƒj}W n ty@   Y Y dS 0 z|| ƒ}W n tyd   Y Y dS 0 |tu s€t|tƒr€|dk r†Y dS | Y S 0 dS )z%Returns the length hint of an object.Nr   )ÚlenÚAttributeErrorÚ	TypeErrorÚtypeÚ__length_hint__ÚNotImplementedÚ
isinstancer   )ÚobjZget_hintÚhint© r   úJ/var/www/html/Ranjet/env/lib/python3.9/site-packages/click/_termui_impl.pyÚ_length_hint"   s    


r   c                   @   s¾   e Zd Zd1d	d
„Zdd„ Zdd„ Zdd„ Zdd„ ZeZdd„ Z	dd„ Z
edd„ ƒZedd„ ƒZedd„ ƒZdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ ZdS )2ÚProgressBarNú#ú ú%(bar)sú  TFé   c                 C   s  || _ || _|| _|| _|| _|| _|	| _|
| _|p6d| _|d u rHt	ƒ }|| _
|| _|| _|dk| _|d u rtt|ƒ}|d u r”|d u rŒtdƒ‚t|ƒ}t|ƒ| _|| _|d u| _d| _g | _t ¡  | _| _d| _d| _d | _d| _d | _t| j
ƒ | _d | _ d| _!d S )NÚ r   ziterable or length is requiredFç      à?)"Ú	fill_charÚ
empty_charÚbar_templateÚinfo_sepÚshow_etaÚshow_percentÚshow_posÚitem_show_funcÚlabelr   ÚfileÚcolorÚwidthÚ	autowidthr   r   r	   ÚiterÚlengthÚlength_knownÚposÚavgÚtimeÚstartÚlast_etaÚ	eta_knownÚfinishedÚ	max_widthÚenteredÚcurrent_itemr   Ú	is_hiddenÚ
_last_lineÚshort_limit)ÚselfÚiterabler4   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r   r   r   Ú__init__5   sF    



zProgressBar.__init__c                 C   s   d| _ |  ¡  | S )NT)r>   Úrender_progress©rC   r   r   r   Ú	__enter__k   s    zProgressBar.__enter__c                 C   s   |   ¡  d S ©N)Úrender_finish)rC   Úexc_typeÚ	exc_valueÚtbr   r   r   Ú__exit__p   s    zProgressBar.__exit__c                 C   s   | j stdƒ‚|  ¡  |  ¡ S )Nú.You need to use progress bars in a with block.)r>   ÚRuntimeErrorrF   Ú	generatorrG   r   r   r   Ú__iter__s   s    zProgressBar.__iter__c                 C   s   t t| ƒƒS rI   )Únextr3   rG   r   r   r   Ú__next__y   s    zProgressBar.__next__c                 C   s   t   ¡ | j | jkS rI   )r8   r9   rB   rG   r   r   r   Úis_fast„   s    zProgressBar.is_fastc                 C   s,   | j s|  ¡ rd S | j t¡ | j ¡  d S rI   )r@   rU   r/   ÚwriteÚ	AFTER_BARÚflushrG   r   r   r   rJ   ‡   s    zProgressBar.render_finishc                 C   s$   | j r
dS t| jt| jƒpd dƒS )Nç      ð?r   )r<   Úminr6   Úfloatr4   rG   r   r   r   Úpct   s    zProgressBar.pctc                 C   s"   | j s
dS t| j ƒtt| j ƒƒ S ©Ng        )r7   Úsumr[   r   rG   r   r   r   Útime_per_iteration“   s    zProgressBar.time_per_iterationc                 C   s"   | j r| js| j| j| j  S dS r]   )r5   r<   r_   r4   r6   rG   r   r   r   Úeta™   s    zProgressBar.etac                 C   sj   | j rft| jƒ}|d }|d }|d }|d }|d }|d }|dkrXd ||||¡S d |||¡S dS )Né<   é   r   z{}d {:02}:{:02}:{:02}z{:02}:{:02}:{:02}r$   )r;   Úintr`   Úformat)rC   ÚtÚsecondsÚminutesÚhoursr   r   r   Ú
format_etaŸ   s    
zProgressBar.format_etac                 C   s$   t | jƒ}| jr |d | j¡7 }|S )Nz/{})Ústrr6   r5   rd   r4   )rC   r6   r   r   r   Ú
format_pos®   s    
zProgressBar.format_posc                 C   s   d  t| jd ƒ¡dd … S )Nz{: 4}%éd   r   )rd   rc   r\   rG   r   r   r   Ú
format_pct´   s    zProgressBar.format_pctc                 C   s    | j r6t| j| j ƒ}| j| }|| j| j|  7 }nf| jrJ| j| j }nRt| j| jpXd ƒ}| jdkr’| j|tt	 
| j| j ¡d d | j ƒ< d |¡}|S )Nr   r   g       @r%   r$   )r5   rc   r\   r1   r&   r'   r<   Úlistr_   ÚmathÚcosr6   Újoin)rC   Z
bar_lengthÚbarr   r   r   Ú
format_bar·   s$    

ûÿÿÿ
zProgressBar.format_barc                 C   s²   | j }g }| jr |d u r | j }| jr4| |  ¡ ¡ |rF| |  ¡ ¡ | jrf| jrf| jsf| |  	¡ ¡ | j
d urŽ|  
| j¡}|d urŽ| |¡ | j| j|  ¡ | j |¡dœ  ¡ S )N)r.   rr   Úinfo)r+   r5   r,   Úappendrk   rm   r*   r;   r<   ri   r-   r?   r(   r.   rs   r)   rq   Úrstrip)rC   r+   Z	info_bitsZ	item_infor   r   r   Úformat_progress_lineÊ   s*    


ýÿÿz ProgressBar.format_progress_linec           	      C   s(  ddl m} | jrd S g }| jrz| j}d| _t|  ¡ ƒ}td|ƒ d | ƒ}||k rt| t	¡ | d| j
 ¡ || _
|| _| j}| j
d ur| j
}| t	¡ |  ¡ }t|ƒ}| j
d u s¾| j
|k rÄ|| _
| |¡ | d||  ¡ d |¡}|| jkr$|  ¡ s$|| _t|| j| jdd | j ¡  d S )Nr   )Úget_terminal_sizer   r    r$   F)r/   r0   Únl)Ztermuirx   r@   r2   r1   r   rw   Úmaxru   Ú
BEFORE_BARr=   rq   rA   rU   r   r/   r0   rX   )	rC   rx   ÚbufZ	old_widthZclutter_lengthZ	new_widthZclear_widthÚlineÚline_lenr   r   r   rF   å   s:    




zProgressBar.render_progressc                 C   s’   |  j |7  _ | jr&| j | jkr&d| _t ¡ | j dk r<d S t ¡ | _| j rbt ¡ | j | j  }nt ¡ | j }| jdd … |g | _| j| _d S )NTrY   iúÿÿÿ)	r6   r5   r4   r<   r8   r:   r9   r7   r;   )rC   Ún_stepsÚstepr   r   r   Ú	make_step  s    
zProgressBar.make_stepc                 C   s   |   |¡ |  ¡  d S rI   )r   rF   )rC   r   r   r   r   Úupdate"  s    
zProgressBar.updatec                 C   s   d| _ d | _d| _d S )Nr   T)r;   r?   r<   rG   r   r   r   Úfinish&  s    zProgressBar.finishc                 c   s^   | j stdƒ‚| jr(| jD ]
}|V  qn2| jD ]}|| _|V  |  d¡ q.|  ¡  |  ¡  dS )z¨Return a generator which yields the items added to the bar
        during construction, and updates the progress bar *after* the
        yielded block returns.
        rO   r   N)r>   rP   r@   r3   r?   r‚   rƒ   rF   )rC   Úrvr   r   r   rQ   +  s    


zProgressBar.generator)Nr   r    r!   r"   TNFNNNNr#   )Ú__name__Ú
__module__Ú__qualname__rE   rH   rN   rR   rT   rS   rU   rJ   Úpropertyr\   r_   r`   ri   rk   rm   rs   rw   rF   r   r‚   rƒ   rQ   r   r   r   r   r   4   sJ                ñ
6	


'r   c              	   C   s8  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	s†tj d¡r’t
| d|ƒS ttdƒr¶t d	¡d
kr¶t| d|ƒS d
dl}| ¡ \}}t |¡ zRttdƒrt 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)ZdumbZemacsZos2zmore <Úsystemz(less) 2>/dev/nullr   Úlessz	more "{}"Zmore)r   r   ÚsysÚstdinÚ
_nullpagerÚosÚenvironÚgetÚstripr   Ú_tempfilepagerÚ
_pipepagerÚplatformÚ
startswithÚhasattrrŠ   ÚtempfileÚmkstempÚcloserd   Úunlink)rQ   r0   ÚstdoutZ	pager_cmdr˜   ÚfdÚfilenamer   r   r   ÚpagerF  s4    
"
ý
þrŸ   c           
   	   C   s  ddl }ttjƒ}| dd¡d  ¡ }|du r„|d dkr„d tj dd	¡d
 |dd… ¡¡}|spd|d< d}nd|v s€d|v r„d}|j	|d|j
|d}t|jƒ}z.| D ]$}	|s¸t|	ƒ}	|j |	 |d¡¡ q¨W n ttfyæ   Y n0 |j ¡  z| ¡  W n ty   Y qò0 qqòdS )zqPage through text by feeding it to another program.  Invoking a
    pager through this might support colors.
    r   Nú/r   éÿÿÿÿr‹   z{}{}ÚLESSr$   r    ú-RTÚrÚR)Úshellr   ÚenvÚreplace)Ú
subprocessÚdictr   r   ÚrsplitÚsplitrd   r‘   rq   ÚPopenÚPIPEr   r   r
   rV   ÚencodeÚIOErrorÚKeyboardInterruptrš   Úwait)
rQ   Úcmdr0   r©   r§   Z
cmd_detailZ
less_flagsÚcÚencodingÚtextr   r   r   r”   c  s2    
$

r”   c              	   C   s    ddl }| ¡ }d | ¡}|s&t|ƒ}ttjƒ}t|dƒd  }| | 	|¡¡ W d  ƒ n1 sd0    Y  z t
 d ||¡¡ W t
 |¡ nt
 |¡ 0 dS )z<Page through text by invoking a program on a temporary file.r   Nr$   Úwbú{} "{}")r˜   Úmktemprq   r
   r   rŒ   rœ   r   rV   r¯   r   rŠ   rd   r›   )rQ   r³   r0   r˜   rž   r¶   rµ   Úfr   r   r   r“   ”  s    

.r“   c                 C   s$   |D ]}|st |ƒ}|  |¡ qdS )z>Simply print unformatted text.  This is the ultimate fallback.N)r
   rV   )ÚstreamrQ   r0   r¶   r   r   r   rŽ   ¦  s    rŽ   c                   @   s.   e Zd Zddd„Zdd„ Zdd	„ Zd
d„ ZdS )ÚEditorNTú.txtc                 C   s   || _ || _|| _|| _d S rI   )Úeditorr§   Úrequire_saveÚ	extension)rC   r¾   r§   r¿   rÀ   r   r   r   rE   ¯  s    zEditor.__init__c                 C   sd   | j d ur| j S dD ]}tj |¡}|r|  S qtr:dS dD ] }t d |¡¡dkr>|  S q>dS )N)ZVISUALZEDITORZnotepad)zsensible-editorZvimZnanozwhich {} >/dev/null 2>&1r   Úvi)r¾   r   r   r‘   r   rŠ   rd   )rC   Úkeyr„   r¾   r   r   r   Ú
get_editorµ  s    


zEditor.get_editorc              
   C   s¦   dd l }|  ¡ }| jr.tj ¡ }| | j¡ nd }z:|jd ||¡|dd}| 	¡ }|dkrjt
d |¡ƒ‚W n4 ty  } zt
d ||¡ƒ‚W Y d }~n
d }~0 0 d S )Nr   r¸   T)r§   r¦   z{}: Editing failed!z{}: Editing failed: {})r©   rÃ   r§   r   r   Úcopyr‚   r­   rd   r²   r   ÚOSError)rC   rž   r©   r¾   r   r´   Z	exit_codeÚer   r   r   Ú	edit_fileÃ  s    
ÿzEditor.edit_filec           	   	   C   s  dd l }|pd}|r&| d¡s&|d7 }|jd| jd\}}zÆtrRd}| dd¡}nd}| |¡}t |d	¡}| 	|¡ | 
¡  tj |¡}|  |¡ | jrºtj |¡|krºW t |¡ d S t|d
ƒ}z| ¡ }W | 
¡  n
| 
¡  0 | d¡ dd¡W t |¡ S t |¡ 0 d S )Nr   r$   r   zeditor-)ÚprefixÚsuffixz	utf-8-sigz
zutf-8r·   Úrb)r˜   Úendswithr™   rÀ   r   r¨   r¯   r   ÚfdopenrV   rš   ÚpathÚgetmtimerÇ   r¿   r›   ÚopenÚreadÚdecode)	rC   r¶   r˜   r   Únamerµ   rº   Ú	timestampr„   r   r   r   ÚeditÖ  s8    


	
÷


þzEditor.edit)NNTr½   )r…   r†   r‡   rE   rÃ   rÇ   rÔ   r   r   r   r   r¼   ®  s   
r¼   Fc           	      C   sº  dd l }dd„ }tjdkr~dg}|r.| d¡ |r<| d¡ | || ƒ¡ tdd	ƒ}z|j||d
 ¡ W | ¡  S | ¡  0 n¦trÌ|r¦|| ƒ} d 	||  
dd¡ƒ¡}nd 	|r²dnd|  
dd¡¡}t |¡S tr$| rü|| ƒ} d 	tj | ¡ 
dd¡¡}nd 	|r
dnd|  
dd¡¡}t |¡S zJ|rDtj || ƒ¡p@d} n|| ƒ} | d| g¡}|rj| ¡ W S W dS  ty´   |  d¡r®|s®|s®dd l}| | ¡ Y dS Y dS 0 d S )Nr   c                 S   sH   zdd l }W n ty&   dd l }Y n0 |  d¡rD| | dd … ¡} | S )Nr   zfile://é   )ÚurllibÚImportErrorr–   Úunquote)ÚurlrÖ   r   r   r   Ú_unquote_fileý  s    
zopen_url.<locals>._unquote_fileÚdarwinrÏ   z-Wr£   z	/dev/nullÚw)Ústderrzexplorer /select,"{}"ú"r$   zstart {} "" "{}"z/WAITzcygstart "{}"zcygstart {} "{}"z-wÚ.zxdg-open)zhttp://zhttps://r   )r©   rŒ   r•   ru   rÏ   r­   r²   rš   r   rd   r¨   r   rŠ   r   rÍ   ÚdirnamerÅ   r–   Ú
webbrowser)	rÙ   r²   Zlocater©   rÚ   ÚargsÚnullr´   rá   r   r   r   Úopen_urlú  sV    	



þÿ



rä   c                 C   s6   | dkrt ƒ ‚| dkr ts tƒ ‚| dkr2tr2tƒ ‚d S )Núúú)r±   r   ÚEOFError)Úchr   r   r   Ú_translate_ch_to_exc5  s    rê   c                   c   s
   d V  d S rI   r   r   r   r   r   Úraw_terminalA  s    rë   c                 C   s6   | rt j}nt j}|ƒ }|dv r*||ƒ 7 }t|ƒ |S )N)ú õ   Ã )ÚmsvcrtZgetwcheÚgetwchrê   )r   Úfuncr„   r   r   r   ÚgetcharE  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œ   rX   rš   Úerror)rº   r   Zold_settingsr   r   r   rë   u  s(    






ý
c                 C   sn   t ƒ T}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œ   rV   rê   )r   r   ré   r   r   r   rñ   Š  s    )N)FF)(Ú__doc__Ú
contextlibro   r   rŒ   r8   Ú_compatr   r   r   r   r   r   r	   r
   r   r   Ú
exceptionsr   Úutilsr   rÒ   r{   rW   r   Úobjectr   rŸ   r”   r“   rŽ   r¼   rä   rê   rî   Úcontextmanagerrë   rñ   rõ   ró   r   r   r   r   Ú<module>   sV   
  
1L
;	

-
