o
    1)hXh                     @  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" 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+dEdFd"d#Z,dGd'd(Z-dGd)d*Z.dHd-d.Z/G d/d0 d0Z0dIdJd7d8Z1dKd:d;Z2e
j3d<krddl4Z4ej5dLd>d?Z6dMdAdBZ7dS ddl8Z8ddl9Z9ej5dLdCd?Z6dMdDdBZ7dS )Nz
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)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																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_hintziterable or length is requiredzcabc.Iterable[V]F)'r!   r#   r$   r%   r&   r(   r)   r+   r,   r.   r	   r   r0   r2   r3   _completed_intervalsr5   	autowidthoperatorr9   	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.   r0   r2   r3   r5   r9    rP   QC:\Users\User\Downloads\Proyecto_IoT\venv\Lib\site-packages\click/_termui_impl.py__init__-   sV   




zProgressBar.__init__ProgressBar[V]c                 C  s   d| _ |   | S )NT)rK   render_progressrO   rP   rP   rQ   	__enter__t   s   zProgressBar.__enter__exc_typetype[BaseException] | None	exc_valueBaseException | NonetbTracebackType | Nonec                 C  s   |    d S N)render_finish)rO   rW   rY   r[   rP   rP   rQ   __exit__y      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.)rK   RuntimeErrorrT   	generatorrU   rP   rP   rQ   __iter__   s   zProgressBar.__iter__r   c                 C  s   t t| S r]   )nextrB   rU   rP   rP   rQ   __next__   r`   zProgressBar.__next__c                 C  s*   | j s| jsd S | jt | j  d S r]   )r&   rM   r0   write	AFTER_BARflushrU   rP   rP   rQ   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   )rI   minrC   rk   r   rU   rP   rP   rQ   pct   s   zProgressBar.pctc                 C  s"   | j sdS t| j tt| j  S Ng        )rD   sumrk   lenrU   rP   rP   rQ   time_per_iteration   s   zProgressBar.time_per_iterationc                 C  s&   | j d ur| js| j| j | j  S dS ro   )r   rI   rr   rC   rU   rP   rP   rQ   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 Z02:r8   )rH   r4   rs   )rO   r?   secondsminuteshoursrP   rP   rQ   
format_eta   s   
 zProgressBar.format_etac                 C  s(   t | j}| jd ur|d| j 7 }|S )N/)r"   rC   r   )rO   rC   rP   rP   rQ   
format_pos   s   

zProgressBar.format_posc                 C  s   t | jd dddd  S )Nd   z 4%r   )r4   rn   rU   rP   rP   rQ   
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      ?r8   )r   r4   rn   r5   r!   r#   rI   listrr   mathcosrC   join)rO   Z
bar_lengthbarcharsrP   rP   rQ   
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(   rH   rI   rz   r,   rL   r$   r.   r   r%   r   rstrip)rO   r)   Z	info_bitsZ	item_inforP   rP   rQ   format_progress_line   s,   


z ProgressBar.format_progress_linec           	      C  sX  dd l }| jr	d S | js"| j| jkr | j| _t| j| j| jd d S g }| jrY| 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 )Nr   )r0   r2   r   r8   F)r0   r2   nl)shutilr&   rM   rN   r.   r   r0   r2   r<   r5   r   r   maxget_terminal_sizecolumnsrJ   r   
BEFORE_BARr   rj   )	rO   r   bufZ	old_widthZclutter_lengthZ	new_widthZclear_widthlineZline_lenrP   rP   rQ   rT      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 )NTrl   i)rC   r   rI   rE   rG   rF   rD   rH   )rO   r   steprP   rP   rQ   	make_step  s   
zProgressBar.make_steprL   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   )rL   r;   r3   r   rT   )rO   r   rL   rP   rP   rQ   update1  s   
zProgressBar.updatec                 C  s   d| _ d | _d| _d S )NFT)rH   rL   rI   rU   rP   rP   rQ   finishK  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 )zReturn a generator which yields the items added to the bar
        during construction, and updates the progress bar *after* the
        yielded block returns.
        rb   Nr   r   )	rK   rc   rM   rB   rL   r;   rT   r   r   )rO   rvrP   rP   rQ   rd   P  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/   r0   r1   r2   r*   r3   r4   r5   r4   r6   r7   )r6   rS   )rW   rX   rY   rZ   r[   r\   r6   r7   )r6   ra   )r6   r   )r6   r7   )r6   rk   r6   r"   )r   r4   r6   r7   r]   )r   r4   rL   r   r6   r7   )__name__
__module____qualname__rR   rV   r_   re   rg   r^   propertyrn   rr   rs   rz   r|   r   r   r   rT   r   r   r   rd   rP   rP   rP   rQ   r   ,   sL    
G










.
r   rd   cabc.Iterable[str]r2   r*   r6   r7   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|rW t| dS t|| |W t| S t| w )z2Decide what method to use for paging through text.NZPAGERr8   F)posixTERM)dumbemacsZos2morelessr   )r	   r   r   sysstdin
_nullpagershlexsplitosenvirongetr   _tempfilepager
_pipepagerplatform
startswithtempfilemkstempcloseunlink)rd   r2   stdoutZpager_cmd_partsr   fdfilenamerP   rP   rQ   pagerr  s<   
r   	cmd_parts	list[str]r'   c                 C  s  |sdS |d }|dd }t |}|sdS t| }|j}ddl}ttj}	|du rQ|dkrQtjdd d	| }
|
sGd	|	d< d
}n
d|
v sOd|
v rQd
}|j
t|g| d
|j|	dd
d}|jdusiJ zTz| D ]}|sut|}|j| qmW 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 qz|j  W n	 ty   Y nw 	 z|  W 	 w  ty   Y nw q)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.
    Fr   r   Nr   LESSr8   r   -RTrRreplace)shellr   enverrorstext)r   r   resolvename
subprocessdictr   r   r   r   Popenr"   PIPEr   r   rh   BrokenPipeError	Exception	terminater   waitKeyboardInterrupt)rd   r   r2   cmdZ
cmd_paramscmd_filepathcmd_pathcmd_namer   r   Z
less_flagscr   erP   rP   rQ   r     s   

	

r   c              	   C  s  |sdS |d }t |}|sdS t| }ddl}ddl}| \}}	d| }
|s/t|
}
tt	j
}t|	dd }||
| W d   n1 sNw   Y  z/z|t||	g W n	 tyh   Y nw W t| t|	 dS W t| t|	 dS t| t|	 w )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.
    Fr   Nr8   wbT)r   r   r   r   r   r   r   r   r   r   r   r   rh   encodecallr"   OSErrorr   r   r   )rd   r   r2   r   r   r   r   r   r   r   r   encodingfrP   rP   rQ   r     s@   	






r   streamt.TextIOc                 C  s$   |D ]}|s
t |}| | qdS )z>Simply print unformatted text.  This is the ultimate fallback.N)r   rh   )r   rd   r2   r   rP   rP   rQ   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"   r6   r7   c                 C  s   || _ || _|| _|| _d S r]   )r   r   r   r   )rO   r   r   r   r   rP   rP   rQ   rR   +  s   
zEditor.__init__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-editorvimZnanovi)r   r   r   r   r   r   )rO   keyr   r   rP   rP   rQ   
get_editor7  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 )"NrP   ).0r   rP   rP   rQ   	<genexpr>O  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   )	rO   r   r   r   r   Zexc_filenamer   	exit_coder   rP   rP   rQ   
edit_filesE  s2   
zEditor.edit_filesr   bytes | bytearraybytes | Nonec                 C     d S r]   rP   rO   r   rP   rP   rQ   edit_     zEditor.editc                 C  r   r]   rP   r   rP   rP   rQ   r   d  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\}}zt
|d	}|| W d    n1 sRw   Y  t
|t
j|t
j|d
 f t
j|}| |f | 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   fdopenrh   utimepathgetatimegetmtimer   r   r   openreaddecode)	rO   r   r   datar   r   r   	timestampr   rP   rP   rQ   r   g  s:   
$

)NNTr   )
r   r/   r   r   r   r'   r   r"   r6   r7   r   )r   r   r6   r7   )r   r   r6   r   )r   r/   r6   r/   )r   r   r6   r   )	r   r   r   rR   r   r   r?   overloadr   rP   rP   rP   rQ   r   *  s    

r   Furlr"   r   locater4   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"|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"   r6   c                 S  s*   ddl m} | dr|| dd  } | S )Nr   )unquotezfile://   )urllib.parser  r   )r  r  rP   rP   rQ   _unquote_file  s   
zopen_url.<locals>._unquote_filedarwinr  z-Wr   z	/dev/nullw)stderrZexplorerz/select,rF   z/WAITr8      Zcygstartz-w.zxdg-open)zhttp://zhttps://r   )r  r"   r6   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  rP   rP   rQ   open_url  sn   











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  rP   rP   rQ   _translate_ch_to_exc  s   r"  win32cabc.Iterator[int]c                   c  s    dV  d S )Nr:   rP   rP   rP   rP   rQ   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getwchr"  )r   funcr   rP   rP   rQ   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ttyZsetraw	tcsetattrZ	TCSADRAINr   rj   r   error)r   r   Zold_settingsrP   rP   rQ   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   rh   r"  )r   r   r  rP   rP   rQ   r-  ?  s   $r]   )rd   r   r2   r*   r6   r7   )rd   r   r   r   r2   r*   r6   r'   )r   r   rd   r   r2   r*   r6   r7   )FF)r  r"   r   r'   r  r'   r6   r4   )r  r"   r6   r7   )r6   r$  )r   r'   r6   r"   ):__doc__
__future__r   collections.abcabcZcabc
contextlibr   r   r   r   rE   typingr?   r   r   ior   pathlibr   r   r   typesr   Z_compatr	   r
   r   r   r   r   r   r   
exceptionsr   utilsr   TypeVarr   r   r   ri   Genericr   r   r   r   r   r   r  r"  r   r)  contextmanagerr%  r-  r/  r1  rP   rP   rP   rQ   <module>   sf    

  H
*
Z
*
m
G
/