o
    [Þh¯h  ã                   @  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r�d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rÛd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_hintéÿÿÿÿz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   úR/var/www/html/premium_crap/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 )Néd   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 )z¨Return 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|ƒr�W 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 q°z|j ¡  W n	 tyÓ   Y nw 	 z| ¡  W 	 w  tyå   Y nw qÕ)zàPage 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 )z±Page 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�\}}zƒt
 |d	¡�}| |¡ W d   ƒ n1 sRw   Y  t
 |t
j |¡t
j |¡d
 f¡ t
j |¡}|  |f¡ | jrˆt
j |¡|krˆW t
 |¡ d S t|dƒ�}| ¡ }W d   ƒ n1 sœw   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"|r³tj || ƒ¡p±d} n|| ƒ} | d| g¡}|rÅ| ¡ W S W dS  t
yæ   |  d¡rã|sã|sãd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
/