o
    Õ­jÏ`  ã                	   @   sp  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r}dZ dZ!ndZ dZ!G dd„ dej"e ƒZ#d9dej$e% dej&e' ddfdd„Z(dej$e% de%dej&e' de'fd d!„Z)dej$e% de%dej&e' de'fd"d#„Z*d$ej+dej$e% dej&e' ddfd%d&„Z,G d'd(„ d(ƒZ-d:d*e%d+e'd,e'de.fd-d.„Z/d/e%dej&e0 fd0d1„Z1e�rddl2Z2ej3dej4e. fd2d3„ƒZ5d4e'de%fd5d6„Z6dS ddl7Z7ddl8Z8ej3dej4e. fd7d3„ƒZ5d4e'de%fd8d6„Z6dS );z¿
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															dFd
ejeje  deje dedededede	deje	 de	dejej
eje geje f  deje dejej deje	 dededdf dd„ZdGdd„Zdejeje  d eje d!eje ddfd"d#„Zdeje fd$d%„Zdefd&d'„ZdHd(d)„Zedefd*d+„ƒZedefd,d-„ƒZedefd.d/„ƒZdefd0d1„Zdefd2d3„Zdefd4d5„Zdefd6d7„Zdefd8d9„ZdHd:d;„Z d<eddfd=d>„Z!dId<ed?eje ddfd@dA„Z"dHdBdC„Z#deje fdDdE„Z$dS )JÚ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@  || _ || _|| _|| _|| _|| _|	| _|
| _|pd| _|d u r+t	ƒ }|d u r+t
ƒ }|| _|| _|| _d| _|| _|dk| _|d u rTddlm} ||dƒ}|dkrTd }|d u rk|d u r`tdƒ‚t tjt t|ƒ¡}t|ƒ| _|| _d| _g | _|  |  t ¡  | _| _d| _ d| _!d | _"d| _#d | _$t%| jƒ | _&d | _'d S )NÚ r   )Úlength_hintéÿÿÿÿz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   úO/var/www/html/CropPilot/venv/lib/python3.10/site-packages/click/_termui_impl.pyÚ__init__(   sT   




zProgressBar.__init__úProgressBar[V]c                 C   s   d| _ |  ¡  | S )NT)r?   Úrender_progress©rC   rD   rD   rE   Ú	__enter__m   s   zProgressBar.__enter__Úexc_typeÚ	exc_valueÚtbc                 C   s   |   ¡  d S ©N)Úrender_finish)rC   rK   rL   rM   rD   rD   rE   Ú__exit__r   ó   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__€   rQ   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=   rb   r7   rI   rD   rD   rE   Ú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ú:r+   )r<   Úintrc   )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 )Néd   z 4ú%r   )rh   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 }|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      à?r+   )r   rh   r^   r)   r   r   r=   Úlistrb   ÚmathÚcosr7   Újoin)rC   Ú
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r| |  ¡ ¡ |r%| |  ¡ ¡ | jr5| jr5| js5| |  	¡ ¡ | j
d urI|  
| j¡}|d urI| |¡ | j| j|  ¡ | j |¡dœ  ¡ S )N)r%   rx   Úinfo)r"   r   r#   Úappendro   rr   r!   r<   r=   rl   r$   r@   r   r%   rz   r    rv   Úrstrip)rC   r"   Ú	info_bitsÚ	item_inforD   rD   rE   Úformat_progress_lineË   s,   


ýÿùz ProgressBar.format_progress_linec           	      C   sD  dd l }| jr| j| jkr| j| _t| j| j| jd� d S g }| jrO| j}d| _t	|  
¡ ƒ}td| ¡ j| ƒ}||k rL| t¡ | d| j ¡ || _|| _| j}| jd urZ| j}| t¡ |  
¡ }t	|ƒ}| jd u sq| j|k rt|| _| |¡ | d||  ¡ d |¡}|| jkr || _t|| j| jdd� | j ¡  d S 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Úcolumnsr|   Ú
BEFORE_BARr>   rv   rZ   )	rC   r‚   ÚbufÚ	old_widthÚclutter_lengthÚ	new_widthÚclear_widthÚlineÚline_lenrD   rD   rE   rH   æ   sB   





ý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 )NTr[   iúÿÿÿ)r7   r   r=   r9   r;   r:   r8   r<   )rC   rŽ   ÚsteprD   rD   rE   Ú	make_step  s   
zProgressBar.make_stepr@   c                 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   )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   sn   � | j stdƒ‚| jr| 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.
        rR   Nr   r   )	r?   rS   rA   r6   r@   r.   rH   r‘   r’   )rC   ÚrvrD   rD   rE   rT   H  s   €

zProgressBar.generator)Nr   r   r   r   TNFNNNNr   r   )r*   rG   )r*   NrN   )%Ú__name__Ú
__module__Ú__qualname__r2   ÚOptionalr4   r   rh   rn   ÚboolÚCallableÚTextIOrF   rJ   ÚTypeÚBaseExceptionr   rP   ÚIteratorrU   rW   rO   Úpropertyr]   r^   rb   rc   rl   ro   rr   rz   r€   rH   r�   r‘   r’   rT   rD   rD   rD   rE   r   '   sš    ðþýüûúùø	÷
ö õô
óòñð
ï
Eþýü
û

-
r   rT   r'   r*   c              	   C   s  t ƒ }|du r
tƒ }ttjƒrt|ƒst|| |ƒS tj dd¡p!d 	¡ }|r9t
r1t| ||ƒr0dS nt| ||ƒr9dS tj d¡dv rGt|| |ƒS t
sOtj d¡rWt| d|ƒrWdS t| d|ƒr_dS d	dl}| ¡ \}}t |¡ zt| d|ƒr}W t |¡ dS t|| |ƒW t |¡ S t |¡ w )
z2Decide what method to use for paging through text.NÚPAGERr+   ÚTERM)ÚdumbÚemacsÚos2ÚmoreÚlessr   )r   r   r
   ÚsysÚstdinÚ
_nullpagerÚosÚenvironÚgetÚstripr   Ú_tempfilepagerÚ
_pipepagerÚplatformÚ
startswithÚtempfileÚmkstempÚcloseÚunlink)rT   r'   ÚstdoutÚ	pager_cmdr±   ÚfdÚfilenamerD   rD   rE   Úpagerj  s<   ÿÿ
þr¹   Úcmdc           
   	   C   s0  t |ƒ}|du r
dS ddl}ttjƒ}| dd¡d  ¡ }|du rL|d dkrLtj dd	¡› d
 |dd… ¡› �}|sBd|d< d}n
d|v sJd|v rLd}|j	|gd|j
|ddd�}|jdus`J ‚z| D ]}	|skt|	ƒ}	|j |	¡ qcW n ttfy~   Y nw |j ¡  	 z| ¡  W 	 dS  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.
    NFr   rm   r   r-   r¥   ÚLESSr+   r   ú-RTÚrÚRÚreplace)Úshellr§   ÚenvÚerrorsÚtext)r   Ú
subprocessÚdictr©   rª   ÚrsplitÚsplitr«   rv   ÚPopenÚPIPEr§   r   rX   ÚOSErrorÚKeyboardInterruptr³   Úwait)
rT   rº   r'   Úcmd_absoluterÄ   rÁ   Ú
cmd_detailÚ
less_flagsÚcrÃ   rD   rD   rE   r®   ‘  sR   
$úüÿ


ûÿýr®   c              	   C   s   t |ƒ}|du r
dS ddl}ddl}| ¡ \}}d | ¡}|s#t|ƒ}ttjƒ}	t	|dƒd �}
|
 
| |	¡¡ W d  ƒ n1 sBw   Y  z-z	| ||g¡ W n	 tyZ   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.
    NFr   r+   ÚwbT)r   rÄ   r±   r²   rv   r   r	   r¦   rµ   r   rX   ÚencodeÚcallrÊ   r©   r³   r´   )rT   rº   r'   rÍ   rÄ   r±   r·   r¸   rÃ   ÚencodingÚfrD   rD   rE   r­   Ò  s8   

ÿþÿ

û


ýr­   Ústreamc                 C   s$   |D ]}|s
t |ƒ}|  |¡ qdS )z>Simply print unformatted text.  This is the ultimate fallback.N)r   rX   )rÖ   rT   r'   rÃ   rD   rD   rE   r¨   ø  s
   ýr¨   c                   @   sŒ   e Zd Z				ddeje dejejeef  dededdf
d	d
„Zdefdd„Z	deddfdd„Z
dejej dejej f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__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)ÚVISUALÚEDITORÚnotepad)zsensible-editorÚvimÚnanoÚvi)rÙ   r©   rª   r«   r   r   )rC   Úkeyr“   rÙ   rD   rD   rE   Ú
get_editor  s   
ÿÿzEditor.get_editorr¸   c              
   C   s¨   dd l }|  ¡ }d }| jrtj ¡ }| | j¡ z#|j|› d|› d�|dd�}| ¡ }|dkr9t	t
dƒj|d�ƒ‚W d S  tyS } zt	t
dƒj||d	�ƒ|‚d }~ww )
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Ð   Ú	exit_coderå   rD   rD   rE   Ú	edit_file  s,   
ÿÿÿþ€ÿzEditor.edit_filerÃ   c           	   	   C   s„  dd l }|s	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 sPw   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™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©   ÚfdopenrX   Ú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—   rn   ÚMappingr˜   rF   rã   rê   ÚAnyStrrÿ   rD   rD   rD   rE   r×     s&    ûþýüû
ú&r×   FÚurlrÌ   Úlocatec           	      C   sÖ  dd l }dtdtfdd„}tjdkrCdg}|r| d¡ |r#| d	¡ | || ƒ¡ td
dƒ}z|j||d� ¡ W | ¡  S | ¡  w t	rx|rS|| ƒ} dd| › �g}ndg}|r]| d¡ | d¡ | | ¡ z| 
|¡W S  tyw   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*   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)ÚstderrÚexplorerz/select,r:   z/WAITr+   é   Úcygstartz-wÚ.zxdg-open)zhttp://zhttps://r   )rÄ   rn   r¦   r¯   r|   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  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  rD   rD   rE   Ú_translate_ch_to_excª  s   r  c                   c   s   � dV  d S )Nr-   rD   rD   rD   rD   rE   Úraw_terminalº  s   €
r  r   c                 C   s6   | rt j}nt j}|ƒ }|dv r||ƒ 7 }t|ƒ |S )N)ú õ   Ã )ÚmsvcrtÚgetwcheÚgetwchr  )r   Úfuncr“   rD   rD   rE   Ú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ÚttyÚsetrawÚ	tcsetattrÚ	TCSADRAINrµ   rZ   r³   Úerror)rÕ   r·   Úold_settingsrD   rD   rE   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µ   rX   r  )r   r·   r  rD   rD   rE   r!    s   $ùrN   )FF)9Ú__doc__Ú
contextlibrt   r©   r¦   r9   Útypingr2   r   rç   Úior   r‚   r   Útypesr   Ú_compatr   r   r	   r
   r   r   r   r   Ú
exceptionsr   Úutilsr   ÚTypeVarr   rý   r†   rY   ÚGenericr   r4   rn   r—   r˜   r¹   r®   r­   rš   r¨   r×   rh   r  rœ   r  r  Úcontextmanagerr�   r  r!  r#  r%  rD   rD   rD   rE   Ú<module>   s~    

  $E&'Aÿþý
ü&ÿÿÿ
þ
aG0