
    s<g^              	          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  ej6                  d      Zej:                  dk(  rdZdZndZdZ G d dej@                  e         Z!d/dejD                  e#   dejH                  e%   ddfdZ&dejD                  e#   de#dejH                  e%   ddfdZ'dejD                  e#   de#dejH                  e%   ddfdZ(d ejR                  dejD                  e#   dejH                  e%   ddfd!Z* G d" d#      Z+d0d$e#d%e%d&e%de,fd'Z-d(e#dejH                  e.   fd)Z/er/ddl0Z0ejb                  dejd                  e,   fd*       Z3d+e%de#fd,Z4yddl5Z5ddl6Z6ejb                  dejd                  e,   fd-       Z3d+e%de#fd.Z4y)1z
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)TracebackType   )_default_text_stdout)CYGWIN)get_best_encoding)isatty)open_stream)
strip_ansi)term_len)WIN)ClickException)echoVnt
z[?25lz[?25h
c            !       `   e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 d*d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Zd+dZdej                  ej                  e      dej                  e   dej                  e   ddfdZdej$                  e   fdZdefdZd,dZedefd       Zedefd       Zedefd       ZdefdZdefdZdefd Zdefd!Zdefd"Zd,d#Z d$eddfd%Z!d-d$ed&ej                  e   ddfd'Z"d,d(Z#dej$                  e   fd)Z$y).ProgressBarN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                    || _         || _        || _        || _        || _        || _        |	| _        |
| _        |xs d| _        |t               }|
t               }|| _        || _        || _        d| _        || _        |dk(  | _        |ddlm}  ||d      }|dk(  rd }|A|t'        d      t)        j*                  t(        j,                  t.           t1        |            }t3        |      | _        || _        d| _        g | _        |  |  t;        j:                         x| _        | _        d| _         d| _!        d | _"        d| _#        d | _$        tK        | j                         | _&        d | _'        y )N r   )length_hintz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)   s                    P/home/kevstigneev/proxy/myenv/lib/python3.12/site-packages/click/_termui_impl.py__init__zProgressBar.__init__&   s`   $ #$(  ( ,+2
<')D |z	
 0$%!
$z>, 2.F|~ @AAvvajjmU6];H#'>	"$%)YY[0
T]$#*."+/#)$))#44+/    c                 4    d| _         | j                          | S )NT)r<   render_progressr@   s    rA   	__enter__zProgressBar.__enter__k   s    rC   exc_type	exc_valuetbc                 $    | j                          y N)render_finish)r@   rH   rI   rJ   s       rA   __exit__zProgressBar.__exit__p   s     	rC   c                 p    | j                   st        d      | j                          | j                         S )N.You need to use progress bars in a with block.)r<   RuntimeErrorrE   	generatorrF   s    rA   __iter__zProgressBar.__iter__x   s.    ||OPP~~rC   c                 *    t        t        |             S rL   )nextr3   rF   s    rA   __next__zProgressBar.__next__~   s     DJrC   c                     | j                   ry | j                  j                  t               | j                  j	                          y rL   )r>   r"   write	AFTER_BARflushrF   s    rA   rM   zProgressBar.render_finish   s*    >>			"		rC   c                     | j                   ryt        | j                  t        | j                  xs d      xs dz  d      S )N      ?r   )r:   minr4   floatr   rF   s    rA   pctzProgressBar.pct   s5    ==488uT[[%5A6;!<cBBrC   c                     | j                   syt        | j                         t        t        | j                               z  S Ng        )r5   sumr^   lenrF   s    rA   time_per_iterationzProgressBar.time_per_iteration   s,    xx488}uS]333rC   c                     | j                   2| j                  s&| j                  | j                   | j                  z
  z  S yra   )r   r:   rd   r4   rF   s    rA   etazProgressBar.eta   s3    ;;"4==**dkkDHH.DEErC   c                     | j                   rUt        | j                        }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|dkD  r| d|dd|dd|dS |dd|dd|dS y)N<      r   zd 02:r(   )r9   intrf   )r@   r/   secondsminuteshourss        rA   
format_etazProgressBar.format_eta   s    >>DHHA"fG"HA"fG"HAFE"HA1uBuRj'"QwrlCC1WRL'">>rC   c                 l    t        | j                        }| j                  |d| j                   z  }|S )N/)strr4   r   )r@   r4   s     rA   
format_poszProgressBar.format_pos   s3    $((m;;"Qt{{m$$C
rC   c                 @    t        | j                  dz        dddd  S )Nd   z 4%r   )rl   r_   rF   s    rA   
format_pctzProgressBar.format_pct   s&    dhhn%b)+AB//rC   c                 F   | j                   Rt        | j                  | j                  z        }| j                  |z  }|| j
                  | j                  |z
  z  z  }|S | j                  r| j                  | j                  z  }|S t        | j
                  | j                  xs dz        }| j                  dk7  rU| j                  |t        t        j                  | j                  | j                  z        dz  dz   | j                  z        <   dj                  |      }|S )Nr   r   g       @g      ?r(   )r   rl   r_   r%   r   r   r:   listrd   mathcosr4   join)r@   
bar_lengthbarcharss       rA   
format_barzProgressBar.format_bar   s   ;;"TXX

23J..:-C4??djj:&=>>C 
 ]]..4::-C 
 DJJO!<=E&&!+ NN $((T-D-D"DEKcQ**% ''%.C
rC   c                    | j                   }g }| j                  || j                   }| j                  r|j                  | j	                                |r|j                  | j                                | j                  r7| j                  r+| j                  s|j                  | j                                | j                  .| j                  | j                        }||j                  |       | j                  | j                  | j                         | j                  j!                  |      dz  j#                         S )N)r!   r   info)r   r   r   appendrt   rx   r   r9   r:   rp   r    r=   r   r!   r   r   r}   rstrip)r@   r   	info_bits	item_infos       rA   format_progress_linez ProgressBar.format_progress_line   s   ((	;;"|';#}},L==T__./T__./==T^^DMMT__./*++D,=,=>I$  + (**95 &(	rC   c                 &   dd l }| j                  rW| j                  | j                  k7  r=| j                  | _        t	        | j                  | j
                  | j                         y g }| j                  r| j                  }d| _        t        | j                               }t        d|j                         j                  |z
        }||k  r:|j                  t               |j                  d| j                   z         || _        || _        | j                  }| j                   | j                   }|j                  t               | j                         }t        |      }| j                   | j                   |k  r|| _        |j                  |       |j                  d||z
  z         dj#                  |      }|| j                  k7  rE|| _        t	        || j
                  | j                  d       | j
                  j%                          y y )Nr   )r"   r#    r(   F)r"   r#   nl)shutilr>   r?   r!   r   r"   r#   r,   r%   r   r   maxget_terminal_sizecolumnsr   
BEFORE_BARr;   r}   rZ   )	r@   r   buf	old_widthclutter_length	new_widthclear_widthlineline_lens	            rA   rE   zProgressBar.render_progress   s   >> $**,"&**TZZdiitzzB>>

IDJ%d&?&?&ABNAv779AANRSI9$

:&

3/0!*"DJjj>>%..K

:((*D>>>!T^^h%>%DN

4

3+012wws| 4??""DODIITZZEBIIOO #rC   n_stepsc                    | xj                   |z  c_         | j                   | j                   | j                  k\  rd| _        t        j                         | j                  z
  dk  ry t        j                         | _        | j                   r/t        j                         | j
                  z
  | j                   z  }n!t        j                         | j
                  z
  }| j                  dd  |gz   | _        | j                  d u| _        y )NTr\   i)r4   r   r:   r6   r8   r7   r5   r9   )r@   r   steps      rA   	make_stepzProgressBar.make_step  s    G;;"txx4;;'> DMIIK$--'3.		
 88IIK$**,8D99;+D88BC=D6)D0rC   r=   c                     ||| _         | xj                  |z  c_        | j                  | j                  k\  r3| j                  | j                         | j	                          d| _        yy)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   rE   )r@   r   r=   s      rA   updatezProgressBar.update'  sb      # ,D!!W,!$$(=(==NN4445  "()D% >rC   c                 .    d| _         d | _        d| _        y )NFT)r9   r=   r:   rF   s    rA   finishzProgressBar.finishA  s     rC   c              #   X  K   | j                   st        d      | j                  r| j                  E d{    y| j                  D ]=  }|| _        | j
                  dk(  r| j                          | | j                  d       ? | j                          | j                          y7 rw)zReturn a generator which yields the items added to the bar
        during construction, and updates the progress bar *after* the
        yielded block returns.
        rP   Nr   r   )	r<   rQ   r>   r3   r=   r+   rE   r   r   )r@   rvs     rA   rR   zProgressBar.generatorF  s      ||OPP>>yy  ii 
$&!
 ,,1((*A
 KKM  " !s   3B*B(A3B*)N#r   z%(bar)sz  TNFNNNNr      )r&   zProgressBar[V])r&   NrL   )%__name__
__module____qualname__r/   Optionalr1   r   rl   rs   boolCallableTextIOrB   rG   TypeBaseExceptionr   rN   IteratorrS   rV   rM   propertyr^   r_   rd   rf   rp   rt   rx   r   r   rE   r   r   r   rR    rC   rA   r   r   %   s    #'%)-SW!%%)"& !!C0**QZZ]+C0 

3C0 	C0
 C0 C0 C0 C0 jj&C0 C0 

1::qzz!}oqzz#.N#OPC0 zz#C0 jj"C0 zz$C0 C0  !C0" 
#C0J
**QVVM23 ::m, JJ}%	
 
 !**Q-   !   CU C C
 4E 4 4
 U  
C C 0C 0C &c 6+Z1 1 1,*c *A *$ *4
#1::a= #rC   r   rR   r#   r&   c                    t               }|
t               }t        t        j                        rt        |      st        || |      S t        j                  j                  dd      xs dj                         }|r t        rt        | ||      S t        | ||      S t        j                  j                  d      dv rt        || |      S t        st        j                  j                  d      rt        | d|      S t        t        d      r%t        j                   d	      d
k(  rt        | d|      S d
dl}|j%                         \  }}t        j&                  |       	 t        t        d      r>t        j                   d| d      d
k(  r"t        | d|      t        j(                  |       S t        || |      t        j(                  |       S # t        j(                  |       w xY w)z2Decide what method to use for paging through text.NPAGERr(   TERM)dumbemacsos2zmore <systemz(less) 2>/dev/nullr   lesszmore ""more)r   r   r
   sysstdin
_nullpagerosenvirongetstripr   _tempfilepager
_pipepagerplatform
startswithhasattrr   tempfilemkstempcloseunlink)rR   r#   stdout	pager_cmdr   fdfilenames          rA   pagerr   h  sz   !#F ~#))F6N&)U33.4";;=I!)Y>>)Y66	zz~~f!22&)U33
cll%%e,i599r8+?!@A!E)VU33##%LBHHRL2x RYYz/C%D%Ii7 			( &)U3
		(		(s   8G ,G G%cmdc                    ddl }t        t        j                        }|j	                  dd      d   j                         }|R|d   dk(  rJt        j                  j                  dd       d	j                  |dd        }|sd
|d<   d}n
d|v sd|v rd}|j                  |d|j                  |      }t        j                  t        j                  |j                        }t        |      }		 | D ]0  }
|st        |
      }
|j!                  |
j#                  |	d             2 	 |j%                          	 	 |j+                          y# t&        t(        f$ r Y $w xY w# t(        $ r Y nw xY w7)zqPage through text by feeding it to another program.  Invoking a
    pager through this might support colors.
    r   Nrr   r   r*   r   LESSr(   r   -RTrR)shellr   envreplace)
subprocessdictr   r   rsplitsplitr   r}   PopenPIPEr/   r0   BinaryIOr   r	   r   rX   encoder   OSErrorKeyboardInterruptwait)rR   r   r#   r   r   
cmd_detail
less_flagscr   encodingtexts              rA   r   r     sd    
rzz
C C#B'--/J}A&0

vr23CHHZ^4L3MN
CKEJ#"3ED
SIAFF1::qww'E 'H	 	:D!$'KKHi89		: 	 	FFH ' &'   ! 		 s$   .5E 6E EE	E('E(c                    ddl }|j                         \  }}dj                  |       }|st        |      }t	        t
        j                        }t        |d      d   5 }|j                  |j                  |             ddd       	 t        j                  | d| d       t        j                  |       t        j                  |       y# 1 sw Y   PxY w# t        j                  |       t        j                  |       w xY w)z<Page through text by invoking a program on a temporary file.r   Nr(   wb "r   )r   r   r}   r   r	   r   r   r   rX   r   r   r   r   r   )	rR   r   r#   r   r   r   r   r   fs	            rA   r   r     s     ##%LB779D$ ,H	Xt	$Q	' '1	H%&'
		SEH:Q'(

		(' '
 	
		(s   !CC C,Dstreamc                 N    |D ]   }|st        |      }| j                  |       " y)z>Simply print unformatted text.  This is the ultimate fallback.N)r   rX   )r   rR   r#   r   s       rA   r   r     s,      d#DTrC   c                      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ZdefdZ	d	eddfd
Z
dej                  ej                     dej                  ej                     fdZy)EditorNeditorr   require_save	extensionr&   c                 <    || _         || _        || _        || _        y rL   )r   r   r   r   )r@   r   r   r   r   s        rA   rB   zEditor.__init__  s!     ("rC   c                     | j                   | j                   S dD ]'  }t        j                  j                  |      }|s%|c S  t        rydD ]"  }t        j
                  d| d      dk(  s |c S  y)N)VISUALEDITORnotepad)zsensible-editorvimnanozwhich z >/dev/null 2>&1r   vi)r   r   r   r   r   r   )r@   keyr   r   s       rA   
get_editorzEditor.get_editor  s{    ;;";;% 	C$B		 6 	Fyy6&)9:;q@	 rC   r   c                    dd l }| j                         }d }| j                  r9t        j                  j                         }|j                  | j                         	 |j                  | d| d|d      }|j                         }|dk7  r$t        t        d      j                  |            y # t        $ r+}t        t        d      j                  ||	            |d }~ww xY w)
Nr   r   r   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   )r@   r   r   r   r   r   	exit_coder   s           rA   	edit_filezEditor.edit_file  s    "0488jjoo'GNN488$
	  F82hZq!9wd SAIA~$01888G    	 129919M	s   AB1 1	C%:&C  C%r   c                    dd l }|sd}njt        |t        t        f      r|}nQ|r|j	                  d      s|dz  }t
        r"|j                  dd      j                  d      }n|j                  d      }|j                  d| j                        \  }}	 t        j                  |d	      5 }|j                  |       d d d        t        j                  |t        j                  j                  |      t        j                  j!                  |      d
z
  f       t        j                  j!                  |      }| j#                  |       | j$                  r9t        j                  j!                  |      |k(  r	 t        j&                  |       y t)        |d      5 }|j+                         }d d d        t        |t        t        f      rt        j&                  |       S j-                  d      j                  dd      t        j&                  |       S # 1 sw Y   \xY w# 1 sw Y   yxY w# t        j&                  |       w xY w)Nr   rC   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)	r@   r   r   datar   namer   	timestampr   s	            rA   editzEditor.edit  s   Dui01DDMM$/||D&188E{{7+##9T^^#LD	2t$  HHTBGG,,T2BGG4D4DT4JQ4NOP ((.INN4   RWW%5%5d%;y%H IIdO dD! QVVX $	 23 IIdO 99[)11&$?IIdO3 "  IIdOsI   H0 +H=B;H0 H0 H$,H0 ! H0 H!H0 $H-)H0 0I)NNTz.txt)r   r   r   r/   r   rs   Mappingr   rB   r   r  AnyStrr  r   rC   rA   r   r     s     #'/3!
#

3
# ZZ		#s(+,
# 	
#
 
# 

#C # $ ,-AHH- -!**QXX2F -rC   r   urlr   locatec                 P   dd l }dt        dt        fd}t        j                  dk(  r~dg}|r|j	                  d       |r|j	                  d       |j	                   ||              t        d	d
      }	 |j                  ||      j                         |j                          S t        rW|r || j                  dd            } d|  d}n!| j                  dd      } |rdnd}d| d|  d}t        j                  |      S t        rt|r<t        j                  j                   ||       j                  dd            } d|  d}n!| j                  dd      } |rdnd}d| d|  d}t        j                  |      S 	 |r*t        j                  j                   ||             xs d} n ||       } |j                  d| g      }|r|j                         S y# |j                          w xY w# t         $ r/ | j#                  d      r|s|sdd l}	|	j                  |        Y yY yw xY w)Nr   r  r&   c                 J    ddl m} | j                  d      r || dd        } | S )Nr   )unquotezfile://   )urllib.parser  r   )r  r  s     rA   _unquote_filezopen_url.<locals>._unquote_file@  s&    (>>)$#ab'"C
rC   darwinr  z-Wr   z	/dev/nullw)stderrr   r(   zexplorer /select,"z/WAITzstart z "" "z
cygstart "z-wz	cygstart r   .zxdg-open)zhttp://zhttps://r   )r   rs   r   r   r   r  r   r   r   r   r   r   r   r   r  dirnamer   r   
webbrowser)
r  r   r  r   r"  argsnullwait_strr   r(  s
             rA   open_urlr,  =  s    3 3  ||xxKKKKM#&'K%	##D#6;;=JJL	C 45C'uA.D++c2&C"&wBHH:U3%q1Dyy	''//-"4"<"<S""EFCuA&D++c2&C#tHxj3%q1Dyy''//-"45<C$Cj#./668O9 JJL:  >>126$OOC s   5 G >AG- G*-3H%$H%chc                 v    | dk(  r
t               | dk(  rt        s
t               | dk(  rt        r
t               y )N)r   r   EOFError)r-  s    rA   _translate_ch_to_excr3  y  s7    	V|!!	V|Cj	V|jrC   c               #      K   d y w)Nr*   r   r   rC   rA   raw_terminalr5    s     s   r   c                     | rt         j                  }nt         j                  } |       }|dv r
| |       z  }t        |       |S )N)    à)msvcrtgetwchegetwchr3  )r   funcr   s      rA   getcharr=    sD    @ >>D==DV!! $&LBR 	rC   c               #     K   t        t        j                        st        d      } | j	                         }n t        j                  j	                         }d } 	 t        j                  |      }	 t        j                  |       | t        j                  |t
        j                  |       t        j                  j                          | | j                          y y # t        j                  |t
        j                  |       t        j                  j                          | | j                          w w xY w# t
        j                  $ r Y y w xY ww)Nz/dev/tty)r
   r   r   r  filenotermios	tcgetattrttysetraw	tcsetattr	TCSADRAINr   rZ   r   error)r   r   old_settingss      rA   r5  r5    s     
 cii Z AB!!#BA	",,R0L

2!!"g&7&7F

  "=GGI ! !!"g&7&7F

  "=GGI !}} 		sD   AED: /C AD: EAD77D: :EEEEc                 J   t               5 }t        j                  |d      j                  t	        t
        j                        d      }| r8t        t
        j                        rt
        j                  j                  |       t        |       |cd d d        S # 1 sw Y   y xY w)N    r   )r5  r   r  r  r	   r   r   r
   r   rX   r3  )r   r   r-  s      rA   r=  r=    so    ^ 	rR''(9#))(DiPBszz*

  $ $	 	 	s   BBB"rL   )FF)7__doc__
contextlibr{   r   r   r6   typingr/   r   r   ior   typesr   _compatr   r   r	   r
   r   r   r   r   
exceptionsr   utilsr   TypeVarr   r  r   rY   Genericr   r1   rs   r   r   r   r   r   r   r   r   rl   r,  r   r3  r9  contextmanagerr   r5  r=  rB  r@  r   rC   rA   <module>rU     s*  
   	 
       )  &       & AIIcN77d?JIJI@#!))A, @#F
 QZZ_  QZZ-=    F/!**S/ / /AJJt<L /QU /dzz#%(12D1A	*HH!"C9:D9I	^ ^B9# 9T 94 9C 9x
S 
QZZ%> 
 !**S/  -d -s -` !**S/  4d s rC   