+
    Nj{                       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! ^RI H"t" ]PF                  ! R4      t$ ! R R]PJ                  4      t&R R lt']	PP                  R8X  d   Rt)Rt*MRt)Rt* ! R R]PV                  ]$,          4      t, ! R R]PZ                  4      t.R8R R  llt/]P`                  R8R! R" ll4       t1]P`                  R8R# R$ ll4       t2]P`                  R8R% R& ll4       t3]P`                  R8R' R( ll4       t4 ! R) R*4      t5R9R+ R, llt6R- R. lt7]Pp                  R/8X  d"   ^ RI9t9]P`                  R0 R1 l4       t:R2 R3 lt;R# ^ RI<t<^ RI=t=]P`                  R4 R5 l4       t:R6 R7 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)KeepOpenFileVc                  "    ] tR t^%t$ R]R&   RtR# )_BufferedTextPagerStreamz
t.BinaryIObuffer N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       T/data/cameron/venvs/serve_omidlab/lib/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^9t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__:   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)'r/   r1   r2   r3   r4   r6   r7   r9   r:   r;   r   r   r=   r>   r?   _completed_intervalsrA   	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>   r?   rA   rF   s   &&&&&&&&&&&&&&&&& r   __init__ProgressBar.__init__:   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#   rC      s      > r   c                	4    R V n         V P                  4        V # )T)rX   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!   rB   r   )r"   s   "r   r#   rC      s2      , ( !	
 
r   c                	&    V P                  4        R # N)render_finish)r\   rf   rg   rh   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#   rC      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.)rX   RuntimeErrorra   	generatorrb   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#   rC      s        !  r   c                	*    \        \        V 4      4      # rj   )nextrO   rb   s   &r   __next__ProgressBar.__next__   s     DJr   c                   V ^8  d   QhRR/# r   r!   rB   r   )r"   s   "r   r#   rC      s      t r   c                	    V P                   '       g   V P                  '       g   R # V P                  P                  \        4       V P                  P                  4        R # rj   )r4   rZ   r=   write	AFTER_BARflushrb   s   &r   rk   ProgressBar.render_finish   s4    ;;;dmmm			"		r   c                   V ^8  d   QhRR/# r   r!   floatr   )r"   s   "r   r#   rC      s     C CU Cr   c                	    V P                   '       d   R # \        V P                  \        V P                  ;'       g    ^4      ;'       g    ^,          R 4      # )      ?)rV   minrP   r   r.   rb   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#   rC      s     4 4E 4r   c                	    V P                   '       g   R # \        V P                   4      \        \        V P                   4      4      ,          # )        )rQ   sumr   lenrb   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#   rC      s      U r   c                	    V P                   eA   V P                  '       g/   V P                  V P                   V P                  ,
          ,          # R# )Nr   )r.   rV   r   rP   rb   s   &r   etaProgressBar.eta   s5    ;;"4===**dkkDHH.DEEr   c                   V ^8  d   QhRR/# r   r!   r0   r   )r"   s   "r   r#   rC      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:rE   )rU   r@   r   r"   _)r\   rL   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#   rC      s      C r   c                	x    \        V P                  4      pV P                  e   VRV P                   2,          pV# )N/)r0   rP   r.   )r\   rP   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#   rC      s     0 0C 0r   c                	P    \        V P                  ^d,          4      R R2R,          # )d   z 4%   NN)r@   r   rb   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#   rC      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      ?rE   )r.   r@   r   rA   r/   r1   rV   listr   mathcosrP   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#   rC      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)r7   r.   r9   appendr   r   r6   rU   rV   r   r:   rY   r2   r;   r   r3   r   rstrip)r\   r7   	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#   rC      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>    rE   F)r=   r>   nl)r4   rZ   r[   r;   r   r=   r>   rI   shutilrA   r   r   maxget_terminal_sizecolumnsrW   r   
BEFORE_BARr   r   )	r\   bufr   	old_widthclutter_length	new_widthclear_widthlineline_lens	   &        r   ra   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_stepsr@   r!   rB   r   )r"   s   "r   r#   rC   .  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)rP   r.   rV   rR   rT   rS   rQ   rU   )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   r@   rY   zV | Noner!   rB   r   )r"   s   "r   r#   rC   D  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)rY   rH   r?   r   ra   )r\   r   rY   s   &&&r   updateProgressBar.updateD  s`      # ,!!W,!$$(=(==NN4445  "()D% >r   c                   V ^8  d   QhRR/# r|   r   )r"   s   "r   r#   rC   ^  s       r   c                	0    R V n         RV n        RV n        R# )FNT)rU   rY   rV   rb   s   &r   finishProgressBar.finish^  s     r   c                   V ^8  d   QhRR/# ro   r   )r"   s   "r   r#   rC   c  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.
rq   N)	rX   rr   rZ   rO   rY   rH   ra   r   r   )r\   rvs   & r   rs   ProgressBar.generatorc  s      |||OPP}}}yy  ii$&!
 ,,1((*A   KKM  " !s   /B;B;B9A8B;)rH   rZ   r[   rI   rQ   r2   r>   rY   r1   rX   rU   r=   r/   rV   r4   r3   r:   rO   r;   rT   r.   rW   rP   r6   r7   r9   rS   r?   rA   )N#r   z%(bar)sz  FTNFNNNNr      rj   )r   r   r   r   r]   rc   rl   rt   ry   rk   propertyr   r   r   r   r   r   r   r   ra   r   r   r   rs   r   r   r   r   r+   r+   9   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>   r5   kwargszt.Anyr   )r"   s   "r   r#   MaybeStripAnsi.__annotate__  s!      { d e r   c               	6   < \         SV `  ! V3/ VB  W n        R # rj   )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   textr0   r!   r@   r   )r"   s   "r   r#   r     s     # ## ## #r   c                	\   < V P                   '       g   \        V4      p\        SV `  V4      # rj   )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>   r8   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.PAGERrE   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>   r8   r!   z!t.Generator[t.TextIO, None, None]r   )r"   s   "r   r#   r#     s     "% "%+ "%1R "%r   c              #  &  "   \        V R7      ;_uu_ 4       w  rp Rp\        V4      '       d   \        VP                  WR7      pTp \        P
                  ! \        P                  V4      x   VP                  4        Ve   VP                  4        RRR4       R#   Te   TP                  4        i i ; i   TP                  4        Te   TP                  4        i i   Te   TP                  4        i i ; 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.0

:param color: controls if the pager supports ANSI colors or not.  The
              default is autodetection.
r   N)r>   encoding)	r  r&   r   r   rL   rM   TextIOr   detach)r>   r    r  wrappers   &   r   get_pager_filer    s      
U	+	+/H% *.f%%$V]]%SGF	% &&6**
% &NN$1 
,	+. &NN$ '
% &NN$ '7&NN$ '/ 
,	+	+s^   D0C='B80B C=
DB55C=8C::C 
C: C77C::C==D		Dc               $    V ^8  d   QhRRRRRR/# r   	cmd_partsz	list[str]r>   r8   r!   z3t.Iterator[tuple[t.BinaryIO | t.TextIO, str, bool]]r   )r"   s   "r   r#   r#     s)     j jj!,j8jr   c           	   #  |  "   V '       g?   \        4       ;'       g    \        4       p\        W!4      ;_uu_ 4       pVx  RRR4       R# ^ RIpV ^ ,          pV R,          pVP	                  V4      pV'       g?   \        4       ;'       g    \        4       p\        W!4      ;_uu_ 4       pVx  RRR4       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P3                  4          TP5                  4        R#   + '       g   i     R# ; i  + '       g   i     R# ; i  \,         d     LZ\.         d   pTP1                  4        ThRp?ii ; i  \,         d     Lzi ; i  \6         d     K  i ; i   TP3                  4        M  \,         d     Mi ; i  TP5                  4        i   \6         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.
Nr   r  LESSrE   r   -RTrRFreplace)shellr  enverrorsr   )r   r   r  r   whichr   absolutename
subprocessdictr
  r  r  r   Popenr0   PIPErL   rM   BinaryIOr  r	   BrokenPipeError	Exception	terminateclosewaitKeyboardInterrupt)r  r>   r  r   r   cmd
cmd_paramscmd_filepathcmd_pathcmd_namer*  r%  
less_flagscr  r  es   &&               r   r  r    sk       &'558:&&"H '
A,C2J<<$L &'558:&&"H '
 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  o '& '&L   
 	
  		 % %	KKM  		   % s  J<J<G48J<8J<	J<'H,BJ<>B
J<	H I  J<"I 2J<4H	?	J<H		J<I
'I0 )I
2I
3II

I0 IJ<IJ<I-)J<,I--J<0J92JJ9JJ9JJ9J'&J9'J62J95J66J99J<c               $    V ^8  d   QhRRRRRR/# r  r   )r"   s   "r   r#   r#   D  s$     5 55!,585r   c              #    "   V '       g?   \        4       ;'       g    \        4       p\        W!4      ;_uu_ 4       pVx  RRR4       R# ^ RIp^ RIpV ^ ,          pVP                  V4      pV'       g?   \        4       ;'       g    \        4       p\        W!4      ;_uu_ 4       pVx  RRR4       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#   + '       g   i     R# ; i  + '       g   i     R# ; i  \*        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`.
NFwb)modedelete)r   r   r  r   r*  r'  r   r(  tempfiler	   r  r  NamedTemporaryFilerL   rM   r.  r   r2  callr0   r)  r
  unlink)r  r>   r  r   r   r*  r5  r7  r8  rB  r  fs   &&          r   r  r  C  sR      &'558:&&"H '
A,C<<$L &'558:&&"H '
 L!**,H ,H} 	##e#<AffQZZ#X44				X/0
		!&&M '& '&, 			!&&s^   GGF3G3GG"F&'AGA/F: 0"GF#		G&F7	1	G:"GGc               $    V ^8  d   QhRRRRRR/# )r   r    zt.TextIOr>   r8   r!   z&t.Iterator[tuple[t.TextIO, str, bool]]r   )r"   s   "r   r#   r#   }  s$     0 00(0+0r   c              #  N   "   \        V 4      pVf   Rp\        V 4      W!3x  R# 5i)a  Simply 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.

The stream is wrapped in :class:`~click.utils.KeepOpenFile` so that, as a
borrowed stream, it is not closed by a ``with`` block. The wrapper that
:func:`get_pager_file` builds around it is detached rather than closed.
NF)r	   r   )r    r>   r  s   && r   r  r  |  s+      !(H}
v

//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_saver5   	extensionr0   r!   rB   r   )r"   s   "r   r#   Editor.__annotate__  s<     
# 
#
# +
# 	
#
 
# 

#r   c                	6    Wn         W n        W0n        W@n        R # rj   )rL  r%  rM  rN  )r\   rL  r%  rM  rN  s   &&&&&r   r]   Editor.__init__  s     ("r   c                   V ^8  d   QhRR/# r   r   )r"   s   "r   r#   rO    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)rL  r
  r  r  r   r   r'  )r\   keyr   r'  rL  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!   rB   r   )r"   s   "r   r#   rO    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)rL  z{editor}: Editing failed: {e})rL  r<  )r  r*  r[  r%  r
  r  copyr   r,  r	  r   r3  r   r   r"   OSError)	r\   r^  r  r*  rL  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#   rO    s    @@*@|@r   c                	    R # rj   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#   rO    s    777
7r   c                	    R # rj   r   rh  s   &&r   ri  rj    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#   rO    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-sigzutf-8zeditor-)prefixsuffixr?  rb)rB  
isinstancebytes	bytearrayendswithr   r#  encodemkstemprN  r
  fdopenr~   utimepathgetatimegetmtimerd  rM  rE  openreaddecode)	r\   r   rB  datafdr)  rF  	timestampr   s	   &&       r   ri  rj    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)rL  r%  rN  rM  )NNTz.txt)r   r   r   r   r]   r[  rd  rL   overloadri  r   r   r   r   rJ  rJ    sC    
#"< ZZ@ @ ZZ7 7- -r   rJ  c               (    V ^8  d   QhRRRRRRRR/# )r   urlr0   r3  r5   locater!   r@   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)ro  Nc                    V ^8  d   QhRRRR/# )r   r  r0   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 # )ro  )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,  r3  r2  r   rD  rb  r
  	startfiler   r{  dirnamer  
webbrowser)	r  r3  r  r*  r  r`  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   chr0   r!   rB   r   )r"   s   "r   r#   r#   J  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)r4  r   EOFError)r  s   &r   _translate_ch_to_excr  J  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#   Y  s      , r   c               #     "   Rx  R# 5i)r   NrG   r   r   r   r   raw_terminalr  X  s
     s   	c                    V ^8  d   QhRRRR/# r   r   r5   r!   r0   r   )r"   s   "r   r#   r#   \  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     à)rL   rM   Callabler0   msvcrtgetwchegetwchr  )r   funcr   s   &  r   getcharr  \  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   r2  error)rF  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 	rj   )FF)>__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   r   TypeVarr   Protocolr   r&   r)  r   r   Genericr+   TextIOWrapperr   r  contextmanagerr  r  r  r  rJ  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%% #'> "% "%J j jZ 5 5p 0 0&q qhCL <<7 ,^  4r   