o
    L)jv                     @  sP  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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#G dd dej$Z%dQddZ&e	j'dkrdZ(dZ)ndZ(dZ)G d d! d!ej*e# Z+G d"d# d#ej,Z-	dRdSd'd(Z.ej/dRdTd*d+Z0ej/	dRdUd/d0Z1ej/	dRdUd1d2Z2G d3d4 d4Z3ej/	dRdVd7d8Z4G d9d: d:Z5dWdXdBdCZ6dYdFdGZ7ej8dHkrddl9Z9ej/dZdJdKZ:d[dMdNZ;dS ddl<Z<ddl=Z=ej/dZdOdKZ:d[dPdNZ;d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.
    )annotationsN)gettext)StringIO)Path)TracebackType   )_default_text_stdout)CYGWIN)get_best_encoding)isatty)
strip_ansi)term_len)WIN)ClickException)echoVc                   @  s   e Zd ZU ded< dS )_BufferedTextPagerStream
t.BinaryIObufferN)__name__
__module____qualname____annotations__ r   r   w/var/www/html/finance-dev.cargoinsureonline.com/_shared/backend-venv/lib/python3.10/site-packages/click/_termui_impl.pyr   $   s   
 r   streamt.BinaryIO | t.TextIOreturn%t.TypeGuard[_BufferedTextPagerStream]c                 C  s   t | dd d uS )Nr   )getattrr   r   r   r   _has_binary_buffer(   s   r!   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widthr   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/   r1   r2   r3   r4   r6   r7   r9   r:   r<   r   r   r>   r@   rA   _completed_intervalsrC   	autowidthoperatorrF   	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/   r1   r2   r3   r4   r6   r7   r9   r:   r<   r>   r@   rA   rC   rF   r   r   r   __init__9   sV   




zProgressBar.__init__ProgressBar[V]c                 C  s   d| _ |   | S )NT)rX   render_progressr\   r   r   r   	__enter__   s   zProgressBar.__enter__exc_typetype[BaseException] | None	exc_valueBaseException | NonetbTracebackType | Nonec                 C  s   |    d S N)render_finish)r\   rb   rd   rf   r   r   r   __exit__      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.)rX   RuntimeErrorr_   	generatorr`   r   r   r   __iter__   s   zProgressBar.__iter__r   c                 C  s   t t| S rh   )nextrO   r`   r   r   r   __next__   rk   zProgressBar.__next__c                 C  s*   | j s| jsd S | jt | j  d S rh   )r4   rZ   r>   write	AFTER_BARflushr`   r   r   r   ri      s   zProgressBar.render_finishfloatc                 C  s(   | j rdS t| jt| jpdpd dS )N      ?r   )rV   minrP   rv   r-   r`   r   r   r   pct   s   zProgressBar.pctc                 C  s"   | j sdS t| j tt| j  S Ng        )rQ   sumrv   lenr`   r   r   r   time_per_iteration   s   zProgressBar.time_per_iterationc                 C  s&   | j d ur| js| j| j | j  S dS rz   )r-   rV   r}   rP   r`   r   r   r   eta   s   zProgressBar.etac                 C  s~   | j r=t| j}|d }|d }|d }|d }|d }|d }|dkr0dj|td|||dS |dd|dd|dS d	S )
N<      r   z#{d}{day_label} {h:02}:{m:02}:{s:02}d)r   	day_labelhms02:rE   )rU   rB   r~   format_)r\   rL   secondsminuteshoursr   r   r   
format_eta   s$   
zProgressBar.format_etac                 C  s(   t | j}| jd ur|d| j 7 }|S )N/)r0   rP   r-   )r\   rP   r   r   r   
format_pos   s   

zProgressBar.format_posc                 C  s   t | jd dddd  S )Nd   z 4%r   )rB   ry   r`   r   r   r   
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      ?rE   )r-   rB   ry   rC   r/   r1   rV   listr}   mathcosrP   join)r\   
bar_lengthbarcharsr   r   r   
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)r7   r-   r9   appendr   r   r6   rU   rV   r   r:   rY   r2   r<   r   r3   r   rstrip)r\   r7   	info_bits	item_infor   r   r   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>   r@   r   r'   rE   F)r>   r@   nl)r4   rZ   r[   r<   r   r>   r@   rI   shutilrC   r   r   maxget_terminal_sizecolumnsrW   r   
BEFORE_BARr   ru   )	r\   bufr   	old_widthclutter_length	new_widthclear_widthlineline_lenr   r   r   r_      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 )NTrw   i)rP   r-   rV   rR   rT   rS   rQ   rU   )r\   r   stepr   r   r   	make_step-  s   
zProgressBar.make_steprY   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   )rY   rH   rA   r   r_   )r\   r   rY   r   r   r   updateC  s   
zProgressBar.updatec                 C  s   d| _ d | _d| _d S )NFT)rU   rY   rV   r`   r   r   r   finish]  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.
        rm   Nr   r   )	rX   rn   rZ   rO   rY   rH   r_   r   r   )r\   rvr   r   r   ro   b  s   

zProgressBar.generator)Nr&   r'   r(   r)   FTNFNNNNr   r*   )"r+   r,   r-   r.   r/   r0   r1   r0   r2   r0   r3   r0   r4   r5   r6   r5   r7   r8   r9   r5   r:   r;   r<   r=   r>   r?   r@   r8   rA   rB   rC   rB   r   rD   )r   r^   )rb   rc   rd   re   rf   rg   r   rD   )r   rl   )r   r   r   rD   )r   rv   r   r0   )r   rB   r   rD   rh   )r   rB   rY   r   r   rD   )r   r   r   r]   ra   rj   rp   rr   ri   propertyry   r}   r~   r   r   r   r   r   r_   r   r   r   ro   r   r   r   r   r%   8   sL    
G










.
r%   c                      s,   e Zd Zd fddZd fddZ  ZS )MaybeStripAnsir   t.IO[bytes]r@   r5   kwargst.Anyc                  s   t  j|fi | || _d S rh   )superr]   r@   )r\   r   r@   r   	__class__r   r   r]     s   
zMaybeStripAnsi.__init__textr0   r   rB   c                   s   | j st|}t |S rh   )r@   r   r   rs   r\   r   r   r   r   rs     s   zMaybeStripAnsi.write)r   r   r@   r5   r   r   )r   r0   r   rB   )r   r   r   r]   rs   __classcell__r   r   r   r   r     s    r   r@   r8   9t.ContextManager[tuple[t.BinaryIO | t.TextIO, str, bool]]c                 C  s   t  }|du r
t }ttjrt|st|| S ttj	
dd}|r0tr+t|| S t|| S tj	
ddv r=t|| S tsEtjdrKtdg| S tdg| S )	z2Decide what method to use for paging through text.NPAGERrE   TERM)dumbemacsos2moreless)r   r   r   sysstdin
_nullpagershlexsplitosenvirongetr   _tempfilepager
_pipepagerplatform
startswith)r@   stdoutpager_cmd_partsr   r   r   _pager_contextmanager  s   



r   !t.Generator[t.TextIO, None, None]c              	   c  s    t | d5\}}} t|rt|j| |d}nt|tjr$t|| |d}z	|V  W |  n|  w W d   dS 1 s>w   Y  dS )zContext manager.
    Yields a writable file-like object which can be used as an output pager.
    .. versionadded:: 8.4
    :param color: controls if the pager supports ANSI colors or not.  The
                  default is autodetection.
    )r@   )r@   encodingN)r   r!   r   r   
isinstancerL   BinaryIOru   )r@   r   r   r   r   r   get_pager_file  s   "r   	cmd_parts	list[str]3t.Iterator[tuple[t.BinaryIO | t.TextIO, str, bool]]c                 c  s   | st  pt }|ddfV  dS ddl}| d }| dd }||}|s4t  p+t }|ddfV  dS t| }|j}ddl}	tt	j
}
|du ro|dkrot	j
dd d	| }|sed
|
d< d}n
d|v smd|v rod}|du rud}|	jt|g| d|	j|
ddd}ttj|j}t|}zGz|||fV  W n ty   Y n ty } z|  |d}~ww W z|  W n	 ty   Y nw 	 z|  W dS  ty   Y nw qz|  W n	 ty   Y nw 	 z|  W 	 w  ty   Y nw q)a  Page through text by feeding it to another program.

    Invokes the pager via :class:`subprocess.Popen` with an ``argv`` list
    produced by :func:`shlex.split`. The command is resolved to an absolute
    path with :func:`shutil.which` as recommended by the
    :mod:`subprocess` docs for Windows compatibility.

    Invoking a pager through this might support colors: if piping to
    ``less`` and the user hasn't decided on colors, ``LESS=-R`` is set
    automatically.
    utf-8FNr   r   r   LESSrE   r'   -RTrRreplace)shellr   enverrorsr   )r   r   r   whichr   absolutename
subprocessdictr   r   r   r   Popenr0   PIPErL   rM   r   r   r
   BrokenPipeError	Exception	terminateclosewaitKeyboardInterrupt)r   r@   r   r   cmd
cmd_paramscmd_filepathcmd_pathcmd_namer   r   
less_flagscr   r   er   r   r   r     s   

	

r   c              	   c  s    | st  pt }|ddfV  dS ddl}ddl}| d }||}|s2t  p)t }|ddfV  dS t| }ddl}tt	j
}	|du rGd}|jddd}
z&ttj|
|	|fV  |
  |
  |t||
jg W t|
j dS t|
j w )a   Page through text by invoking a program on a temporary file.

    Used as the primary pager strategy on Windows (where piping to
    ``more`` adds spurious ``\r\n``), and as a fallback on other
    platforms. The command is resolved to an absolute path with
    :func:`shutil.which`.
    r   FNr   wb)modedelete)r   r   r   r   r   r   r   tempfiler
   r   r   NamedTemporaryFilerL   rM   r   ru   r   callr0   r   r   unlink)r   r@   r   r   r   r   r   r   r  r   fr   r   r   r   .  s2   

r   c                   @  s8   e Zd ZdddZdd
dZedddZdddZdS )
_SkipCloser   t.IO[t.Any]r   rD   c                 C  s
   || _ d S rh   r    )r\   r   r   r   r   r]   b  s   
z_SkipClose.__init__r   r0   r   c                 C  s   t | j|S rh   )r   r   )r\   r   r   r   r   __getattr__e  s   z_SkipClose.__getattr__r   c                 C  s   t | jjS rh   )r  r   r   r`   r   r   r   r   h  s   z_SkipClose.bufferc                 C     d S rh   r   r`   r   r   r   r   l     z_SkipClose.closeN)r   r  r   rD   )r   r0   r   r   )r   r   r   )r   r   r   r]   r	  r   r   r   r   r   r   r   r  a  s    

r  t.TextIO&t.Iterator[tuple[t.TextIO, str, bool]]c                 c  s*    t | }|du rd}t| ||fV  dS )zSimply print unformatted text. This is the ultimate fallback. Don't close the
    output stream in this case, since it's coming from elsewhere rather than our
    internal helpers.
    NF)r
   r  )r   r@   r   r   r   r   r   p  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_saver5   	extensionr0   r   rD   c                 C  s   || _ || _|| _|| _d S rh   )r  r   r  r  )r\   r  r   r  r  r   r   r   r]     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   )r\   keyr   r   r  r   r   r   
get_editor  s   
zEditor.get_editor	filenamescabc.Iterable[str]c           	   
   C  s   ddl }ddl}|  }d}| jrtj }|| j z#|j|	|t
| |d}| }|dkr=ttdj|dW dS  tyW } zttdj||d|d}~ww )z Open files in the user's editor.r   N)argsr   z{editor}: Editing failed)r  z{editor}: Editing failed: {e})r  r   )r   r   r  r   r   r   copyr   r   r   r   r   r   r   r   OSError)	r\   r  r   r   r  r   r   	exit_coder   r   r   r   
edit_files  s4   
zEditor.edit_filesr   bytes | bytearraybytes | Nonec                 C  r
  rh   r   r   r   r   r   edit  r  zEditor.editc                 C  r
  rh   r   r   r   r   r   r%    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-sigr   zeditor-)prefixsuffixr      rb)r  r   bytes	bytearrayendswithr   r   encodemkstempr  r   fdopenrs   utimepathgetatimegetmtimer"  r  r  openreaddecode)	r\   r   r  datafdr   r  	timestampr   r   r   r   r%    s:   
$

)NNTr  )
r  r=   r   r  r  r5   r  r0   r   rD   r   )r  r  r   rD   )r   r#  r   r$  )r   r=   r   r=   )r   r&  r   r'  )	r   r   r   r]   r  r"  rL   overloadr%  r   r   r   r   r    s    

r  Furlr0   r   r5   locaterB   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rp|r]|| } dd| g}z|	|W S  t
y\   Y dS w zt|  W dS  t
yo   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>  r0   r   c                 S  s*   ddl m} | dr|| dd  } | S )Nr   )unquotezfile://   )urllib.parser@  r   )r>  r@  r   r   r   _unquote_file  s   
zopen_url.<locals>._unquote_filedarwinr7  z-Wr   z	/dev/nullw)stderrexplorerz/select,   cygstartz-w.zxdg-open)zhttp://zhttps://r   )r>  r0   r   r0   )r   r   r   r   r7  r   r   r   r   r  r   r   	startfiler	   r4  dirnamer   
webbrowser)	r>  r   r?  r   rC  r  nullr   rM  r   r   r   open_url  sp   









rO  chrD   c                 C  s:   | dkrt  | dkrtst | dkrtrt d S d S )N)r   r   EOFError)rP  r   r   r   _translate_ch_to_exc:  s   rU  win32cabc.Iterator[int]c                   c  s    dV  d S )NrG   r   r   r   r   r   raw_terminalH  s   
rX  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)    à)rL   rM   Callabler0   msvcrtgetwchegetwchrU  )r   funcr   r   r   r   getcharL  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   r7  filenotermios	tcgetattrttysetraw	tcsetattr	TCSADRAINr   ru   r   error)r  r;  old_settingsr   r   r   rX  ~  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   )rX  r   r8  r9  r
   r   r   r   r   rs   rU  )r   r;  rP  r   r   r   r`    s   $)r   r   r   r   rh   )r@   r8   r   r   )r@   r8   r   r   )r   r   r@   r8   r   r   )r   r  r@   r8   r   r  )FF)r>  r0   r   r5   r?  r5   r   rB   )rP  r0   r   rD   )r   rW  )r   r5   r   r0   )>__doc__
__future__r   collections.abcabccabc
contextlibior   r   r   r   rR   typingrL   r   r   r   pathlibr   typesr   _compatr   r	   r
   r   r   r   r   
exceptionsr   utilsr   TypeVarr   Protocolr   r!   r   r   rt   Genericr%   TextIOWrapperr   r   contextmanagerr   r   r   r  r   r  rO  rU  r   r\  rX  r`  rb  rd  r   r   r   r   <module>   s~    


  Ng2t
F/