+
    ژ*jv                       R t ^ RIHt ^ RIHt ^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^RIHt ^RIHt ^R	IHt ^R
IHt ^RIHt ^RIHt ^RIHt ^RIHt ^RI H!t! ]PD                  ! R4      t# ! R R]PH                  4      t%R R lt&]	PN                  R8X  d   Rt(Rt)MRt(Rt) ! R R]PT                  ]#,          4      t+ ! R R]PX                  4      t-R9R R llt.]P^                  R9R  R! ll4       t0]P^                  R9R" R# ll4       t1]P^                  R9R$ R% ll4       t2 ! R& R'4      t3]P^                  R9R( R) ll4       t4 ! R* R+4      t5R:R, R- llt6R. R/ lt7]Pp                  R08X  d"   ^ RI9t9]P^                  R1 R2 l4       t:R3 R4 lt;R# ^ RI<t<^ RI=t=]P^                  R5 R6 l4       t:R7 R8 lt;R# );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                  "    ] tR t^$t$ R]R&   RtR# )_BufferedTextPagerStream
t.BinaryIObuffer N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       2lib/python3.14/site-packages/click/_termui_impl.pyr   r   $   s    r   r   c                    V ^8  d   QhRRRR/# )   streamzt.BinaryIO | t.TextIOreturnz%t.TypeGuard[_BufferedTextPagerStream]r   )formats   "r   __annotate__r#   (   s     7 7!7*7r   c                     \        V R R4      RJ# )r   N)getattrr    s   &r   _has_binary_bufferr'   (   s    
 68T*$66r   nt
z[?25lz[?25h
c                      ] tR t^8tR)R R lltR R ltR R ltR R	 ltR
 R ltR R lt	]
R R l4       t]
R R l4       t]
R R l4       tR R ltR R ltR R ltR R ltR R ltR R ltR  R! ltR*R" R# lltR$ R% ltR& R' ltR(tR# )+ProgressBarNc          "     \    V ^8  d   Qh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RRRRRRRR/# )r   iterablezcabc.Iterable[V] | Nonelengthz
int | None	fill_charstr
empty_charbar_templateinfo_sephiddenboolshow_etashow_percentbool | Noneshow_positem_show_funcz)t.Callable[[V | None], str | None] | Nonelabel
str | Nonefilezt.TextIO | Nonecolorupdate_min_stepsintwidthr!   Noner   )r"   s   "r   r#   ProgressBar.__annotate__9   s     E+ E+)E+ E+ 	E+
 E+ E+ E+ E+ E+ "E+ E+ BE+ E+ E+ E+  !E+" #E+$ 
%E+r   c                	   W0n         W@n        WPn        W`n        Wpn        Wn        Wn        Wn        Wn        T;'       g    R V n	        Vf   \        4       pVf   \        4       pWn        Wn        Wn        ^ V n        VV n        V^ 8H  V n        Vf   ^ RIHp V! VR4      pVR8X  d   RpVf0   Vf   \)        R4      h\*        P,                  ! R\/        V4      4      p\1        V4      V n        W n        ^ V n        . V n        V  V  \8        P8                  ! 4       ;V n        V n        RV n        RV n         RV n!        RV n"        RV n#        \I        V P                  4      V n%        RV n&        R# ) N)length_hintziterable or length is requiredzcabc.Iterable[V]F)'r0   r2   r3   r4   r5   r7   r8   r:   r;   r<   r   r   r>   r?   r@   _completed_intervalsrB   	autowidthoperatorrG   	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/   r0   r2   r3   r4   r5   r7   r8   r:   r;   r<   r>   r?   r@   rB   rG   s   &&&&&&&&&&&&&&&&& r   __init__ProgressBar.__init__9   sE   & #$(  ( ,++2
<')D |z	
 0$%!
$z>, 2.F|~ @AAvv0%-@H&*8n	 "%)YY[0
T]$#%)"&*tyy)&*r   c                   V ^8  d   QhRR/# )r   r!   zProgressBar[V]r   )r"   s   "r   r#   rD      s      > r   c                	4    R V n         V P                  4        V # )T)rY   render_progressr]   s   &r   	__enter__ProgressBar.__enter__   s    r   c               (    V ^8  d   QhRRRRRRRR/# )	r   exc_typeztype[BaseException] | None	exc_valuezBaseException | NonetbzTracebackType | Noner!   rC   r   )r"   s   "r   r#   rD      s2      , ( !	
 
r   c                	&    V P                  4        R # N)render_finish)r]   rg   rh   ri   s   &&&&r   __exit__ProgressBar.__exit__   s     	r   c                   V ^8  d   QhRR/# r   r!   zcabc.Iterator[V]r   )r"   s   "r   r#   rD      s        *  r   c                	|    V P                   '       g   \        R 4      hV P                  4        V P                  4       # ).You need to use progress bars in a with block.)rY   RuntimeErrorrb   	generatorrc   s   &r   __iter__ProgressBar.__iter__   s0    |||OPP~~r   c                   V ^8  d   QhRR/# )r   r!   r   r   )r"   s   "r   r#   rD      s        !  r   c                	*    \        \        V 4      4      # rk   )nextrP   rc   s   &r   __next__ProgressBar.__next__   s     DJr   c                   V ^8  d   QhRR/# r   r!   rC   r   )r"   s   "r   r#   rD      s      t r   c                	    V P                   '       g   V P                  '       g   R # V P                  P                  \        4       V P                  P                  4        R # rk   )r5   r[   r>   write	AFTER_BARflushrc   s   &r   rl   ProgressBar.render_finish   s4    ;;;dmmm			"		r   c                   V ^8  d   QhRR/# r   r!   floatr   )r"   s   "r   r#   rD      s     C CU Cr   c                	    V P                   '       d   R # \        V P                  \        V P                  ;'       g    ^4      ;'       g    ^,          R 4      # )      ?)rW   minrQ   r   r/   rc   s   &r   pctProgressBar.pct   s=    ===488uT[[%5%5A6;;!<cBBr   c                   V ^8  d   QhRR/# r   r   )r"   s   "r   r#   rD      s     4 4E 4r   c                	    V P                   '       g   R # \        V P                   4      \        \        V P                   4      4      ,          # )        )rR   sumr   lenrc   s   &r   time_per_iterationProgressBar.time_per_iteration   s.    xxx488}uS]333r   c                   V ^8  d   QhRR/# r   r   )r"   s   "r   r#   rD      s      U r   c                	    V P                   eA   V P                  '       g/   V P                  V P                   V P                  ,
          ,          # R# )Nr   )r/   rW   r   rQ   rc   s   &r   etaProgressBar.eta   s5    ;;"4===**dkkDHH.DEEr   c                   V ^8  d   QhRR/# r   r!   r1   r   )r"   s   "r   r#   rD      s      C r   c                	&   V P                   '       d   \        V P                  4      pV^<,          pV^<,          pV^<,          pV^<,          pV^,          pV^,          pV^ 8  d    RP                  V\	        R4      VVVR7      # VR RVR RVR 2# R# )<   z#{d}{day_label} {h:02}:{m:02}:{s:02}d)r   	day_labelhms02:rF   )rV   rA   r   r"   _)r]   rM   secondsminuteshourss   &    r   
format_etaProgressBar.format_eta   s    >>>DHHA"fG"HA"fG"HAFE"HA1u<CCf D    1WRL'">>r   c                   V ^8  d   QhRR/# r   r   )r"   s   "r   r#   rD      s      C r   c                	x    \        V P                  4      pV P                  e   VRV P                   2,          pV# )N/)r1   rQ   r/   )r]   rQ   s   & r   
format_posProgressBar.format_pos   s3    $((m;;"Qt{{m$$C
r   c                   V ^8  d   QhRR/# r   r   )r"   s   "r   r#   rD      s     0 0C 0r   c                	P    \        V P                  ^d,          4      R R2R,          # )d   z 4%   NN)rA   r   rc   s   &r   
format_pctProgressBar.format_pct   s$    dhhn%b)+B//r   c                   V ^8  d   QhRR/# r   r   )r"   s   "r   r#   rD      s      C r   c                	   V P                   ef   \        V P                  V P                  ,          4      pV P                  V,          pW P
                  V P                  V,
          ,          ,          pV# V P                  '       d    V P                  V P                  ,          pV# \        V P
                  V P                  ;'       g    ^,          4      pV P                  ^ 8w  dg   V P                  V\        \        P                  ! V P                  V P                  ,          4      R,          R,           V P                  ,          4      &   RP                  V4      pV# )Ng       @g      ?rF   )r/   rA   r   rB   r0   r2   rW   listr   mathcosrQ   join)r]   
bar_lengthbarcharss   &   r   
format_barProgressBar.format_bar   s   ;;"TXX

23J..:-C??djj:&=>>C 
 ]]]..4::-C 
 DJJOO!<=E&&!+ NN $((T-D-D"DEKcQ**% ''%.C
r   c                   V ^8  d   QhRR/# r   r   )r"   s   "r   r#   rD      s      c r   c           	     	   V P                   p. pV P                  e   Vf   V P                  '       * pV P                  '       d    VP                  V P	                  4       4       V'       d    VP                  V P                  4       4       V P                  '       dD   V P                  '       d2   V P                  '       g    VP                  V P                  4       4       V P                  e1   V P                  V P                  4      pVe   VP                  V4       V P                  RV P                  RV P                  4       RV P                  P!                  V4      /,          P#                  4       # )Nr<   r   info)r8   r/   r:   appendr   r   r7   rV   rW   r   r;   rZ   r3   r<   r   r4   r   rstrip)r]   r8   	info_bits	item_infos   &   r   format_progress_line ProgressBar.format_progress_line   s   ((	;;"|';#}},L===T__./T__./===T^^^DMMMT__./*++D,=,=>I$  + t(**95 &(	r   c                   V ^8  d   QhRR/# r}   r   )r"   s   "r   r#   rD      s     , , ,r   c                	   V P                   '       d   R # V P                  '       g[   V P                  V P                  8w  d>   V P                  V n        \	        V P                  V P
                  V P                  R7       R # . pV P                  '       d   ^ R IpV P                  p^ V n	        \        V P                  4       4      p\        ^ VP                  4       P                  V,
          4      pWS8  dL   V P                  e>   VP!                  \"        4       VP!                  RV P                  ,          4       WPn        WPn	        V P                  pV P                  e   V P                  pVP!                  \"        4       V P                  4       p\        V4      pV P                  e   V P                  V8  d   Wn        VP!                  V4       VP!                  RWh,
          ,          4       RP%                  V4      pWpP                  8w  dE   Wpn        \	        WpP
                  V P                  RR7       V P
                  P'                  4        R # R # )N)r>   r?    rF   F)r>   r?   nl)r5   r[   r\   r<   r   r>   r?   rJ   shutilrB   r   r   maxget_terminal_sizecolumnsrX   r   
BEFORE_BARr   r   )	r]   bufr   	old_widthclutter_length	new_widthclear_widthlineline_lens	   &        r   rb   ProgressBar.render_progress   s   ;;;}}}$**,"&**TZZdiitzzB>>>

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

:&

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

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

4

3+012wws| ??""OIITZZEBIIOO #r   c                    V ^8  d   QhRRRR/# )r   n_stepsrA   r!   rC   r   )r"   s   "r   r#   rD   -  s     1 1 1 1r   c                	d   V ;P                   V,          un         V P                  e#   V P                   V P                  8  d   RV n        \        P                  ! 4       V P                  ,
          R8  d   R # \        P                  ! 4       V n        V P                   '       d9   \        P                  ! 4       V P
                  ,
          V P                   ,          pM&\        P                  ! 4       V P
                  ,
          pV P                  RR  V.,           V n        V P                  R JV n        R # )NTr   i)rQ   r/   rW   rS   rU   rT   rR   rV   )r]   r   steps   && r   	make_stepProgressBar.make_step-  s    G;;"txx4;;'> DMIIK$--'3.		
 888IIK$**,8D99;+D88BC=D6)D0r   c               $    V ^8  d   QhRRRRRR/# )r   r   rA   rZ   zV | Noner!   rC   r   )r"   s   "r   r#   rD   C  s!     * *c * *T *r   c                    Ve   W n         V ;P                  V,          un        V P                  V P                  8  d5   V P                  V P                  4       V P	                  4        ^ V n        R# R# )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.
N)rZ   rI   r@   r   rb   )r]   r   rZ   s   &&&r   updateProgressBar.updateC  s`      # ,!!W,!$$(=(==NN4445  "()D% >r   c                   V ^8  d   QhRR/# r}   r   )r"   s   "r   r#   rD   ]  s       r   c                	0    R V n         RV n        RV n        R# )FNT)rV   rZ   rW   rc   s   &r   finishProgressBar.finish]  s     r   c                   V ^8  d   QhRR/# rp   r   )r"   s   "r   r#   rD   b  s     # #+ #r   c              #  z  "   V P                   '       g   \        R4      hV P                  '       g   V P                   Rj  xL
  R# V P                   F?  pWn        V P
                  ^ 8X  d   V P                  4        Vx  V P                  ^4       KA  	  V P                  4        V P                  4        R#  Lw5i)zReturn a generator which yields the items added to the bar
during construction, and updates the progress bar *after* the
yielded block returns.
rr   N)	rY   rs   r[   rP   rZ   rI   rb   r   r   )r]   rvs   & r   rt   ProgressBar.generatorb  s      |||OPP}}}yy  ii$&!
 ,,1((*A   KKM  " !s   /B;B;B9A8B;)rI   r[   r\   rJ   rR   r3   r?   rZ   r2   rY   rV   r>   r0   rW   r5   r4   r;   rP   r<   rU   r/   rX   rQ   r7   r8   r:   rT   r@   rB   )N#r   z%(bar)sz  FTNFNNNNr      rk   )r   r   r   r   r^   rd   rm   ru   rz   rl   propertyr   r   r   r   r   r   r   r   rb   r   r   r   rt   r   r   r   r   r,   r,   8   s    E+N
   C C
 4 4
  
*0&6,\1,*4
# #r   r,   c                  @   a  ] tR tRtR V 3R lltR V 3R lltRtV ;t# )MaybeStripAnsii  c               $    V ^8  d   QhRRRRRR/# )r   r    zt.IO[bytes]r?   r6   kwargst.Anyr   )r"   s   "r   r#   MaybeStripAnsi.__annotate__  s!      { d e r   c               	6   < \         SV `  ! V3/ VB  W n        R # rk   )superr^   r?   )r]   r    r?   r   	__class__s   &&$,r   r^   MaybeStripAnsi.__init__  s    *6*
r   c                    V ^8  d   QhRRRR/# )r   textr1   r!   rA   r   )r"   s   "r   r#   r     s     # ## ## #r   c                	\   < V P                   '       g   \        V4      p\        SV `  V4      # rk   )r?   r   r   r   )r]   r   r   s   &&r   r   MaybeStripAnsi.write  s%    zzzd#Dw}T""r   r?   )r   r   r   r   r^   r   r   __classcell__)r   s   @r   r   r     s     # #r   r   c                    V ^8  d   QhRRRR/# )r   r?   r9   r!   z9t.ContextManager[tuple[t.BinaryIO | t.TextIO, str, bool]]r   )r"   s   "r   r#   r#     s     ' ''>'r   c                X   \        4       pVf   \        4       p\        \        P                  4      '       d   \        V4      '       g   \        W4      # \        P                  ! \        P                  P                  RR4      4      pV'       d#   \        '       d   \        W 4      # \        W 4      # \        P                  P                  R4      R9   d   \        W4      # \        '       g&   \        P                  P                  R4      '       d   \        R.V 4      # \        R.V 4      # )z2Decide what method to use for paging through text.PAGERrF   TERMos2moreless)dumbemacs)r   r   r
   sysstdin
_nullpagershlexsplitosenvirongetr   _tempfilepager
_pipepagerplatform
startswith)r?   stdoutpager_cmd_partss   &  r   _pager_contextmanagerr    s     "#F ~#))F6NN&(( kk"**..""=>O3!/99/11	zz~~f!22&((
scll%%e,,vh..vh&&r   c                    V ^8  d   QhRRRR/# )r   r?   r9   r!   z!t.Generator[t.TextIO, None, None]r   )r"   s   "r   r#   r#     s      + 1R r   c              #  x  "   \        V R7      ;_uu_ 4       w  rp \        V4      '       d   \        VP                  WR7      pM-\	        V\
        P                  4      '       d   \        WVR7      p Vx  VP                  4         RRR4       R#   TP                  4        i ; i  + '       g   i     R# ; i5i)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   
isinstancerM   BinaryIOr   )r?   r    r  s   &  r   get_pager_filer    s      
U	+	+/H% f%%#FMMRF

++#F(KF	LLLN 
,	+ LLN 
,	+	+s5   B:AB&2B6B&
B:B##B&&B7	1	B:c               $    V ^8  d   QhRRRRRR/# r   	cmd_partsz	list[str]r?   r9   r!   z3t.Iterator[tuple[t.BinaryIO | t.TextIO, str, bool]]r   )r"   s   "r   r#   r#     s)     d dd!,d8dr   c           	   #    "   V '       g&   \        4       ;'       g    \        4       pVRR3x  R# ^ RIpV ^ ,          pV R,          pVP                  V4      pV'       g&   \        4       ;'       g    \        4       pVRR3x  R# \	        V4      P                  4       pVP                  p^ RIp	\        \        P                  4      p
Vf[   VR8X  dT   \        P                  P                  RR4       RP                  V4       2pV'       g	   R	V
R&   R
pMRV9   g   RV9   d   R
pVf   RpV	P                  \        V4      .V,           RV	P                  V
RR
R7      p\         P"                  ! \         P$                  VP&                  4      p\)        V4      p WV3x   TP1                  4          TP3                  4        R#   \*         d     L2\,         d   pTP/                  4        ThRp?ii ; i  \*         d     LRi ; i  \4         d     Kd  i ; i   TP1                  4        M  \*         d     Mi ; i  TP3                  4        i   \4         d     K!  i ; i; i5i)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  LESSrF   r   -RTrRreplace)shellr  enverrorsr   )r   r   r   whichr   absolutename
subprocessdictr  r  r  r   Popenr1   PIPErM   rN   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  es   &&              r   r  r    s;      %'558:gu$$
A,C2J<<$L%'558:gu$$
 L!**,H}}H rzz
C }V+

vr23CHHZ4H3IJ
CKEJ#"3E}	X*$oo 	 	A FF1::qww'E 'H#u$$	KKM  C   
 	
  		 % %	KKM  		   % s   I"AI"I"0BI"B
I"G G3 .I"0H  I"G0H G0G0G++G00H 3H>I" HI"HI"HI"IH)(I)H74I6H77I<IIIIIII"c               $    V ^8  d   QhRRRRRR/# r  r   )r"   s   "r   r#   r#   /  s$     / //!,/8/r   c              #    "   V '       g&   \        4       ;'       g    \        4       pVRR3x  R# ^ RIp^ RIpV ^ ,          pVP	                  V4      pV'       g&   \        4       ;'       g    \        4       pVRR3x  R# \        V4      P                  4       p^ RIp\        \        P                  4      p	Vf   RpVP                  RRR7      p
 \        P                  ! \        P                  V
4      W3x  V
P                  4        V
P!                  4        VP#                  \%        V4      V
P&                  .4       \(        P*                  ! V
P&                  4       R#   \(        P*                  ! T
P&                  4       i ; i5i)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   FNwb)modedelete)r   r   r   r,  r)  r   r*  tempfiler	   r  r  NamedTemporaryFilerM   rN   r  r   r3  callr1   r+  r  unlink)r  r?   r  r   r,  r6  r8  r9  rC  r  fs   &&         r   r  r  .  s     %'558:gu$$
A,C<<$L%'558:gu$$
 L!**,H ,H} 	##e#<AffQZZ#X44				X/0
		!&&		!&&s0   F=FF+A#FA/E  >"F "FFc                  P    ] tR tRtR R ltR R lt]R R l4       tR R	 ltR
t	R# )
_SkipCloseia  c                    V ^8  d   QhRRRR/# )r   r    zt.IO[t.Any]r!   rC   r   )r"   s   "r   r#   _SkipClose.__annotate__b  s      { t r   c                	    Wn         R # rk   r&   )r]   r    s   &&r   r^   _SkipClose.__init__b  s    r   c                    V ^8  d   QhRRRR/# )r   r+  r1   r!   r   r   )r"   s   "r   r#   rK  e  s     * * * *r   c                	.    \        V P                  V4      # rk   )r%   r    )r]   r+  s   &&r   __getattr___SkipClose.__getattr__e  s    t{{D))r   c                   V ^8  d   QhRR/# )r   r!   r   r   )r"   s   "r   r#   rK  i  s     . .
 .r   c                	@    \        V P                  P                  4      # rk   )rI  r    r   rc   s   &r   r   _SkipClose.bufferh  s    $++,,--r   c                   V ^8  d   QhRR/# r}   r   )r"   s   "r   r#   rK  l  s      t r   c                	    R # rk   r   rc   s   &r   r3  _SkipClose.closel  s    r   r&   N)
r   r   r   r   r^   rP  r   r   r3  r   r   r   r   rI  rI  a  s*    * . . r   rI  c               $    V ^8  d   QhRRRRRR/# )r   r    zt.TextIOr?   r9   r!   z&t.Iterator[tuple[t.TextIO, str, bool]]r   )r"   s   "r   r#   r#   q  s$     . ..(.+.r   c              #  N   "   \        V 4      pVf   Rp\        V 4      W!3x  R# 5i)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	   rI  )r    r?   r  s   && r   r	  r	  p  s+      !(H}
V
h
--s   #%c                      ] tR tRtRR R lltR R ltR R lt]P                  R	 R
 l4       t	]P                  R R l4       t	R R lt	Rt
R# )Editori  Nc          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r   editorr=   r'  zcabc.Mapping[str, str] | Nonerequire_saver6   	extensionr1   r!   rC   r   )r"   s   "r   r#   Editor.__annotate__  s<     
# 
#
# +
# 	
#
 
# 

#r   c                	6    Wn         W n        W0n        W@n        R # rk   )r]  r'  r^  r_  )r]   r]  r'  r^  r_  s   &&&&&r   r^   Editor.__init__  s     ("r   c                   V ^8  d   QhRR/# r   r   )r"   s   "r   r#   r`    s      C r   c                	    V P                   e   V P                   # R F.  p\        P                  P                  V4      pV'       g   K,  Vu # 	  \        '       d   R# ^ RIHp R F  pV! V4      f   K  Vu # 	  R# )Nnotepad)r)  vi)VISUALEDITOR)zsensible-editorvimnano)r]  r  r  r  r   r   r)  )r]   keyr   r)  r]  s   &    r   
get_editorEditor.get_editor  sg    ;;";;%C$Br	 & 3 6FV}( 7 r   c                    V ^8  d   QhRRRR/# )r   	filenameszcabc.Iterable[str]r!   rC   r   )r"   s   "r   r#   r`    s      $6 4 r   c                   ^ RI p^ RIpV P                  4       pRpV P                  '       d:   \        P
                  P                  4       pVP                  V P                  4        VP                  VP                  ! V4      \        V4      ,           VR7      pVP                  4       pV^ 8w  d%   \        \        R4      P                  VR7      4      hR#   \         d+   p\        \        R4      P                  YHR7      4      ThRp?ii ; i)z Open files in the user's editor.N)argsr'  z{editor}: Editing failed)r]  z{editor}: Editing failed: {e})r]  r=  )r
  r,  rl  r'  r  r  copyr   r.  r  r   r4  r   r   r"   OSError)	r]   ro  r
  r,  r]  r  r<  	exit_coder=  s	   &&       r   
edit_filesEditor.edit_files  s    ")-888jjoo'GNN488$	   [[(4	?: ! A IA~$01888G    	 12999M	s   'A.C D"%DDc                    V ^8  d   QhRRRR/# )r   r   zbytes | bytearrayr!   zbytes | Noner   )r"   s   "r   r#   r`    s    @@*@|@r   c                	    R # rk   r   r]   r   s   &&r   editEditor.edit  s    =@r   c                    V ^8  d   QhRRRR/# )r   r   r=   r!   r   )r"   s   "r   r#   r`    s    777
7r   c                	    R # rk   r   ry  s   &&r   rz  r{    s    47r   c                    V ^8  d   QhRRRR/# )r   r   zstr | bytes | bytearray | Noner!   zstr | bytes | Noner   )r"   s   "r   r#   r`    s     - -7 -<N -r   c                	>   ^ RI pVf   RpM\        V\        \        34      '       d   TpMgV'       d!   VP	                  R4      '       g
   VR,          p\
        '       d#   VP                  RR4      P                  R4      pMVP                  R4      pVP                  RV P                  R7      w  rE \        P                  ! VR	4      ;_uu_ 4       pVP                  V4       RRR4       \        P                  ! V\        P                  P                  V4      \        P                  P!                  V4      ^,
          34       \        P                  P!                  V4      pV P#                  V34       V P$                  '       d>   \        P                  P!                  V4      V8X  d    \        P&                  ! V4       R# \)        VR
4      ;_uu_ 4       pVP+                  4       pRRR4       \        V\        \        34      '       d   X\        P&                  ! V4       # XP-                  R4      P                  RR4      \        P&                  ! V4       #   + '       g   i     EL; i  + '       g   i     L; i  \        P&                  ! T4       i ; i)    Nr   r*   z
z	utf-8-sigr   zeditor-)prefixsuffixr@  rb)rC  r  bytes	bytearrayendswithr   r%  encodemkstempr_  r  fdopenr   utimepathgetatimegetmtimeru  r^  rF  openreaddecode)	r]   r   rC  datafdr+  rG  	timestampr   s	   &&       r   rz  r{    s   <&)Dui011DDMM$//s||D&188E{{7+##9T^^#L	2t$$ % HHTBGG,,T2BGG4D4DT4JQ4NOP ((.IOOTG$   RWW%5%5d%;y%H IIdO dD!!QVVX " $	 233 IIdO 99[)11&$?IIdO3 %$$" "! IIdOsO   2J I#B$J $J J I1*%J & J I.	(	J 1J	<J J)r]  r'  r_  r^  )NNTz.txt)r   r   r   r   r^   rl  ru  rM   overloadrz  r   r   r   r   r[  r[    sC    
#"< ZZ@ @ ZZ7 7- -r   r[  c               (    V ^8  d   QhRRRRRRRR/# )r   urlr1   r4  r6   locater!   rA   r   )r"   s   "r   r#   r#     s.     C C# CT C4 CC Cr   c                   ^ RI pR R lp\        P                  R8X  d   R.pV'       d   VP                  R4       V'       d   VP                  R4       VP                  V! V 4      4       \	        RR	4      p VP                  WVR
7      P                  4       VP                  4        # \        '       dA   V'       d    V! V 4      p RRV .p VP                  V4      #  \        P                  ! V 4       ^ # \        '       dr   V'       d+   V! V 4      p R\        P                  P                  V 4      .pM-R.pV'       d   VP                  R4       VP                  V 4        VP                  V4      #  V'       d1   \        P                  P                  V! V 4      4      ;'       g    Rp MV! V 4      p VP                  RV .4      pV'       d   VP                  4       # ^ #   TP                  4        i ; i  \         d     ^# i ; i  \         d     ^# i ; i  \         d     ^# i ; i  \         dD    T P!                  R4      '       d)   T'       g!   T'       g   ^ RIpTP	                  T 4        ^ #  ^# i ; i)r  Nc                    V ^8  d   QhRRRR/# )r   r  r1   r!   r   )r"   s   "r   r#   open_url.<locals>.__annotate__  s      3 3 r   c                ^    ^ RI Hp V P                  R4      '       d   V! V R,          4      p V # )r  )unquotezfile://:   NN)urllib.parser  r  )r  r  s   & r   _unquote_fileopen_url.<locals>._unquote_file  s'    (>>)$$#b'"C
r   darwinr  z-Wr"  z	/dev/nullw)stderrexplorerz/select,cygstartz-w.zxdg-open)zhttp://zhttps://)r,  r  r  r   r  r.  r4  r3  r   rE  rs  r  	startfiler   r  dirnamer  
webbrowser)	r  r4  r  r,  r  rq  nullr<  r  s	   &&&      r   open_urlr    s     ||xxKKKKM#&'K%	##D#6;;=JJL	$C
C0D!t,,S! 	$C 45D<DD!KK	??4((
''//-"45<<C$Cj#./668OM JJL  
    		  >>1226$OOC sr   9G  G5 H !H 3H+ ;+H+ '&H+ H+  G25HHHHH('H(+)I9I9I98I9c                    V ^8  d   QhRRRR/# )r   chr1   r!   rC   r   )r"   s   "r   r#   r#   :  s      S T r   c                    V R 8X  d   \        4       hV R8X  d   \        '       g   \        4       hV R8X  d   \        '       d   \        4       hR# R# )N)r5  r   EOFError)r  s   &r   _translate_ch_to_excr  :  s?    	V|!!	V|CCj	V|j |r   win32c                   V ^8  d   QhRR/# r   r!   zcabc.Iterator[int]r   )r"   s   "r   r#   r#   I  s      , r   c               #     "   Rx  R# 5i)r   NrH   r   r   r   r   raw_terminalr  H  s
     s   	c                    V ^8  d   QhRRRR/# r   r   r6   r!   r1   r   )r"   s   "r   r#   r#   L  s     , ,d ,s ,r   c                d   V '       dB   \         P                  ! \         P                  . \        3,          \        P
                  4      pM@\         P                  ! \         P                  . \        3,          \        P                  4      pV! 4       pVR9   d   W!! 4       ,          p\        V4       V# ) )r     à)rM   rN   Callabler1   msvcrtgetwchegetwchr  )r   funcr   s   &  r   getcharr  L  ss    > 66!**RW-v~~>D66!**RW-v}}=DV!! $&LBR 	r   c                   V ^8  d   QhRR/# r  r   )r"   s   "r   r#   r#     s      , r   c               #    "   \        \        P                  4      '       g   \        R 4      p V P	                  4       pM \        P                  P	                  4       pRp  \
        P                  ! V4      p \        P                  ! V4       Vx  \
        P                  ! V\
        P                  V4       \        P                  P                  4        V e   V P                  4        R# R#   \
        P                  ! T\
        P                  T4       \        P                  P                  4        T e   T P                  4        i i ; i  \
        P                   d     R# i ; i5i)z/dev/ttyN)r
   r  r  r  filenotermios	tcgetattrttysetraw	tcsetattr	TCSADRAINr  r   r3  error)rG  r  old_settingss      r   r  r  ~  s     
 cii  Z AB!!#BA	",,R0L

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

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

  "=GGI !}} 		sD   AE&E
 6C, AE
 (E&,AEE
 
E#E&"E##E&c                    V ^8  d   QhRRRR/# r  r   )r"   s   "r   r#   r#     s      d s r   c                   \        4       ;_uu_ 4       p\        P                  ! V^ 4      P                  \	        \
        P                  4      R4      pV '       d?   \        \
        P                  4      '       d    \
        P                  P                  V4       \        V4       VuuRRR4       #   + '       g   i     R# ; i)    r%  N)r  r  r  r  r	   r  r  r
   r  r   r  )r   r  r  s   &  r   r  r    sk    ^^rR''(9#))(DiPBszz**

  $ $ ^^^s   BB//C 	rk   )FF)>__doc__
__future__r   collections.abcabccabc
contextlibior   r  r
  r  rS   typingrM   r   r   r   pathlibr   typesr   _compatr   r   r	   r
   r   r   r   
exceptionsr   utilsr   TypeVarr   Protocolr   r'   r+  r   r   Genericr,   TextIOWrapperr   r  contextmanagerr  r  r  rI  r	  r[  r  r  r  r  r  r  r  r  r   r   r   <module>r     s   #   	  	  
        )  &     & IIcNqzz 7 77d?JIJII#!))A, I#X
#R%% #'>  . d dN / /d  . .q qhCL <<7 ,^  4r   