
    /hhN                       % S r SSKJr  SSKrSSKJrJr  SSKrSSKJ	r	  SSK
r
SSKJr  SSKJrJr  SS	KJr  SS
KJr  S\S'   S\S'   \R.                  S:X  a	  SSKJrJr  OSSKJrJr  \
R:                  " 5       =(       d    Sr\R>                  rSSK J!r!J"r"  SSK#J$r$JrJ%r%J&r&  Sr'\'(       a  SSK(J)r)J*r*  \!\+/\,4   r-/ SQr.\ " S S5      5       r/\" SS9 " S S\R`                  \5      5       r1S/S jr2S0S jr3S1S  jr4S2S! jr5S3S" jr6 " S# S$\R>                  5      r7 " S% S&\R>                  5      r8\" SS'9 " S( S)5      5       r9\9" 5       r:\:Rv                  r;\:Rx                  r<\:Rz                  r=\:R|                  r>\:R~                  r?\:R                  r@\:R                  rA\:R                  rB\:R                  rC\:R                  rD\:R                  rE\:R                  rF\:R                  rG\:R                  rH\:R                  rI\:R                  rJ\:R                  rK\:R                  rL\:R                  rM\:R                  rN\:R                  rO\:R                  rQS4S* jrRS+ H!  u  rSrT\S\U" 5       ;  d   \S5       e\R" \S\T5        M#     S5S, jrVSqWS-\S.'   g)6zA compatibility wrapper reimplementing the 'readline' standard module
on top of pyrepl.  Not all functionalities are supported.  Contains
extensions for multiline input.
    )annotationsN)	dataclassfield)gethistoryfile)	Completer   )commandshistorical_reader)CompletingReader)Consoleztype[ConsoleType]r   z-tuple[type[Exception], ...] | type[Exception]_errornt)WindowsConsoler   )UnixConsoler   latin1)Callable
Collection)Callbackr   KeySpecCommandNameF)AnyMapping)add_historyclear_history
get_begidxget_completerget_completer_delimsget_current_history_length
get_endidxget_history_itemget_history_lengthget_line_bufferinsert_textparse_and_bindread_history_fileremove_history_itemreplace_history_itemset_auto_historyset_completerset_completer_delimsset_history_lengthset_startup_hookwrite_history_filemultiline_inputc                  >    \ rS rSr% SrS\S'   \" S5      rS\S'   Srg)	ReadlineConfigc   NCompleter | Nonereadline_completerz! 	
`~!@#$%^&*()-=+[{]}\|;:'",<>/?zfrozenset[str]completer_delims )	__name__
__module____qualname____firstlineno__r3   __annotations__	frozensetr4   __static_attributes__r5       9/opt/python-3.13.8/usr/lib/python3.13/_pyrepl/readline.pyr0   r0   c   s    +/(/'01X'YnYr=   r0   T)kw_onlyc                     ^  \ rS rSr% SrSrSrS\S'   SrS\S'   Sr	S	\S
'   SU 4S jjr
SSS jjrSS jrSS jrSS jrSS jrSU 4S jjrSU 4S jjrSrU =r$ )ReadlineAlikeReaderi   FTr0   configNzMoreLinesCallable | None
more_lines
str | Nonelast_used_indentationc                   > [         TU ]  5         [        U R                  S'   [        U R                  S'   [        U R                  S'   [        U R                  S'   g )Nmaybe_acceptmaybe-acceptbackspace_dedentbackspace-dedent)super__post_init__rH   r	   rJ   self	__class__s    r>   rM   !ReadlineAlikeReader.__post_init__u   sH    (4n%(4n%,<(),<()r=   c                    g Nr5   )rO   msgs     r>   errorReadlineAlikeReader.error|       r=   c                    U R                   nU R                  S-
  nU R                  R                  nUS:  a  X   U;  a  US-  nUS:  a
  X   U;  a  M  SR	                  XS-   U R                   5      $ )Nr   r    )bufferposrC   r4   join)rO   bpr4   s       r>   get_stemReadlineAlikeReader.get_stem   sq    KKHHqL;;771f%55FA 1f%55wwqQ*++r=   c                   [        U5      S:X  ai  U R                  b\  U R                  nU R                  nUS:  a#  X#S-
     S:w  a  US-  nUS:  a  X#S-
     S:w  a  M  SU R                  U-
  S-  -
  nSU-  /$ / nU R                  R
                  nUbV   [        U5      nSn  U" X5      n[        U[        5      (       d  OUR                  U5        US-  nM7  UR                  5         U$ ! [         a     NXf = f! [         a     M/  f = f)Nr   r   
    )lenrD   rZ   r[   rC   r3   strUnicodeEncodeError	Exception
isinstanceappendsort)	rO   stemr]   r^   
num_spacesresultfunctionstatenexts	            r>   get_completions#ReadlineAlikeReader.get_completions   s$   t9>doo9AAa%A!eH,Q a%A!eH,txx!|q01J*$%%;;114y E#D0D "$,,d#
  KKM &  ! s$   C, $C< ,
C98C9<
D
	D
c                r    US:  a!  [        U R                  5      U-
  nUS:  a  SnOSnU R                  US  $ Nr   )re   history)rO   	maxlengthcuts      r>   get_trimmed_history'ReadlineAlikeReader.get_trimmed_history   s?    >dll#i/CQwC||CD!!r=   c                B    [        U R                  5      nUb  Xl        g g rS   )_get_first_indentationrZ   rF   )rO   indentations     r>   update_last_used_indentation0ReadlineAlikeReader.update_last_used_indentation   s!    ,T[[9")4& #r=   c                &   > [         TU ]  5       S-   $ )N))z\nrI   )z\<backspace>rK   )rL   collect_keymaprN   s    r>   r   "ReadlineAlikeReader.collect_keymap   s    w%' +
 
 	
r=   c                <  > [         TU ]  U5        U R                  co   U R                  R	                  S5      nU R                  S U U l        U R
                  [        U R                  5      :  a  [        U R                  5      U l        g g g ! [         a     g f = fNrb   )rL   after_commandrD   rZ   indexr[   re   
ValueError)rO   cmdr   rP   s      r>   r   !ReadlineAlikeReader.after_command   s    c"??"
0))$/ #kk&5188c$++.."4;;/DH / #  s   B 
BB)rZ   rF   r[   returnNone)none)rT   rf   r   r   r   rf   )rl   rf   r   	list[str])rw   intr   r   )r   z'tuple[tuple[KeySpec, CommandName], ...])r   Commandr   r   )r6   r7   r8   r9   assume_immutable_completionsuse_bracketssort_in_columnr:   rD   rF   rM   rU   r_   rr   ry   r~   r   r   r<   __classcell__)rP   s   @r>   rA   rA   i   s`     $) LN +/J(/(,:,=,<"5
0 0r=   rA   c                ,    [        U 5      [        l        g)z#Enable or disable automatic historyN)boolr
   should_auto_add_history)_should_auto_add_historys    r>   r(   r(      s    045M0N-r=   c                    SnUS:  a(  XS-
     S;   a  US-  nUS-  nUS:  a  XS-
     S;   a  M  US:  a  XS-
     S:X  a  U$ g)Nr   r    	rb   r5   )rZ   r[   indents      r>   _get_this_line_indentr      sa    F
'f1Wo.!q 'f1Wo. Qw6'?d*r=   c                    UnUS:  a#  XS-
     S:w  a  US-  nUS:  a  XS-
     S:w  a  M  UnX1:  a  X   S;   a  US-  nX1:  a
  X   S;   a  M  X1:X  a  S nX$4$ X2-
  nX$4$ )Nr   r   rb   r   r5   )rZ   r[   prevlinestartprevlinetextr   s        r>   _get_previous_line_indentr      s    M
!
q'8 9T A !
q'8 9T A L

!5!> 
!5!>    -  r=   c                    S n[        [        U 5      5       HQ  nU[        U 5      S-
  :  a  X   S:X  a  XS-      S;   a  US-   nM/  Uc  M4  X   S;  d  M>  SR                  XU 5      s  $    g )Nr   rb   r   z 	
rY   )rangere   r\   )rZ   indented_line_startis      r>   r|   r|      su    3v;Fa	T!1u&"#a% ,'1I776:;;   r=   c                    S nUS:  a5  US-  nUc  X   S;  a  X   nOX   S:X  a   US:H  $ X   S:X  a  S nUS:  a  M5  US:H  $ )Nr   r   z 	
#rb   #:r5   )rZ   r[   	last_chars      r>   _should_auto_indentr      st     I
'q{(*"K	
 {d"  {c! 	 ' r=   c                      \ rS rSrSS jrSrg)rH   i
  c                  ^^ U R                   mSTl        U R                   R                  (       a  TR                  S5        g TR	                  5       mSTR
                  TR                  S  ;   d%  TR                  GbA  TR                  T5      (       Ga*  UU4S jnU" 5       (       a*  TTR                  S  R                  5       (       a  SU l	        g [        TR
                  TR                  5      u  p#TR                  S5        U R                   R                  (       d  U(       a3  [        X"U-   5       H!  nTR                  TR
                  U   5        M#     TR                  5         [        TR
                  TR                  5      (       a.  TR                  b  TR                  nOSnTR                  U5        g g g U R                   R                  (       d  SU l	        g TR                  S5        g )NTrb   c                    > TR                   S-
  n U S:  a=  TU    R                  5       (       a%  U S-  n U S:  a  TU    R                  5       (       a  M%  TU TR                    R                  S5      S:  $ )Nr   r   rb   )r[   isspacecount)
before_idxrtexts    r>   _newline_before_pos,maybe_accept.do.<locals>._newline_before_pos  sp    UUQY
 1nj)9)A)A)C)C!OJ !1nj)9)A)A)C)CJ/55d;a??r=   z    )readerdirtyin_bracketed_pasteinsertget_unicoderZ   r[   rD   r   finishr   
paste_moder   r~   r   rF   )rO   r   r   r   r   r}   r   r   s         @@r>   domaybe_accept.do  sp   KK;;))HHTN }}188AEEG$$LL$d););@ #$$aeef)=)=)?)?" %>ahh$N!MHHTN;;))"=&2HI!- J..0&qxx77..:&'&=&= '.HH[) 8 * ''DKHHTNr=   )r   Nr   r6   r7   r8   r9   r   r<   r5   r=   r>   rH   rH   
  s    /r=   rH   c                      \ rS rSrSS jrSrg)rJ   i=  c                   U R                   nUR                  nUR                  S:  a  SnX!R                  S-
     S:w  aU  [        X!R                  5      nUS:  a:  UR                  U-
  nUS:  a%  [	        X%S-
  5      u  pVUb
  Xd:  a  XF-
  nOUS:  a  M%  U=R                  U-  sl        X!R                  UR                  U-   2	 SUl        g U R                   R                  S5        g )Nr   r   rb   Tzcan't backspace at start)r   rZ   r[   r   r   r   rU   )rO   r   r]   repeatr   lspis          r>   r   backspace_dedent.do>  s    KKHH5519F|t#.q%%8A:Bq&!:11f!E>bk%+[F!	 q&
 EEVOE%%!%%&.()AGKK89r=   r5   Nr   r   r5   r=   r>   rJ   rJ   =  s    :r=   rJ   )slotsc                     \ rS rSr% SrS\S'   SrS\S'   \" SSS9rS	\S
'   Sr	S\S'   Sr
S\S'   \" \SS9rS\S'   S,S jrS-S jrS.S/S jjrS0S jrS1S jrS2S3S jjrS4S jrS5S jrS6S jrS7S jrS8S jrS9S jrS8S jr\" 5       4S:S jjr\" 5       4S:S jjrS,S  jrS;S! jrS<S" jrS=S# jr S>S$ jr!S2S?S% jjr"S6S& jr#S@S' jr$S8S( jr%S8S) jr&SAS* jr'S+r(g)B_ReadlineWrapperiV  r   f_inf_outNF)defaultreprzReadlineAlikeReader | Noner   saved_history_lengthCallback | Nonestartup_hook)default_factoryr   r0   rC   c                    U R                   S:X  a  [        R                  " S5      U l         U R                  S:X  a  [        R                  " S5      U l        g g )Nr   r   r   )r   osdupr   rO   s    r>   rM   _ReadlineWrapper.__post_init___  s<    99?q	DI::DJ r=   c                    U R                   c;  [        U R                  U R                  [        S9n[        XR                  S9U l         U R                   $ )N)encoding)consolerC   )r   r   r   r   ENCODINGrA   rC   )rO   r   s     r>   
get_reader_ReadlineWrapper.get_readere  s<    ;;diihGG-gkkRDK{{r=   c                     U R                  5       n[        U5      nX2l        [
        R                  " SU5        UR                  U R                  S9n[
        R                  " SU5        U$ ! [         a    [        c   e[        U5      s $ f = f)Nzbuiltins.inputr   zbuiltins.input/result)	r   r   	raw_inputrf   ps1sysauditreadliner   )rO   promptr   
prompt_strrn   s        r>   input_ReadlineWrapper.inputk  s    	%__&F [

		"J/d.?.?@		)62  	%(((V$$	%s   A, ,BBc                T   U R                  5       nUR                  n Xl        X$l        X$l        X4l        SUl        [        R                  " SS9   UR                  5       sSSS5        XTl        SUl	        $ ! , (       d  f       O= f XTl        SUl	        g! XTl        SUl	        f = f)zRead an input on possibly multiple lines, asking for more
lines as long as 'more_lines(unicodetext)' returns an object whose
boolean value is true.
rY   ignore)actionNF)
r   rD   r   ps2ps3ps4warningscatch_warningsr   r   )rO   rD   r   r   r   saveds         r>   r.    _ReadlineWrapper.multiline_inputx  s    
 "!!
	& *JJJFJ((9( :9 !& %F	 :99 !& %F !& %Fs#   3B A8!	B 8
BB B'c                    g rS   r5   )rO   strings     r>   r$   _ReadlineWrapper.parse_and_bind  rW   r=   c                $    XR                   l        g rS   rC   r3   rO   ro   s     r>   r)   _ReadlineWrapper.set_completer  s    )1&r=   c                .    U R                   R                  $ rS   r   r   s    r>   r   _ReadlineWrapper.get_completer  s    {{---r=   c                8    [        U5      U R                  l        g rS   )r;   rC   r4   )rO   
delimiterss     r>   r*   %_ReadlineWrapper.set_completer_delims  s    '0'<$r=   c                ^    SR                  [        U R                  R                  5      5      $ )NrY   )r\   sortedrC   r4   r   s    r>   r   %_ReadlineWrapper.get_completer_delims  s     wwvdkk::;<<r=   c                (    UR                  S5      nU$ r   )rstriprO   lines     r>   	_histline_ReadlineWrapper._histline  s    {{4 r=   c                    U R                   $ rS   r   r   s    r>   r!   #_ReadlineWrapper.get_history_length  s    (((r=   c                    Xl         g rS   r  )rO   lengths     r>   r+   #_ReadlineWrapper.set_history_length  s    $*!r=   c                H    [        U R                  5       R                  5      $ rS   )re   r   rv   r   s    r>   r   +_ReadlineWrapper.get_current_history_length  s    4??$,,--r=   c           	        U R                  5       R                  n[        [        R                  R                  U5      S5       nUR                  5       R                  S5      nU(       a  SnOUR                  S5        SnUR                  5       R                  S5       Vs/ s H  ofR                  USS9PM     nn/ nU H  nUR                  S	5      (       a  UR                  US
-   5        M/  U R                  U5      nU(       a8  U R                  SR                  U5      R!                  S	S5      U-   5      nUS S 2	 U(       d  M  UR                  U5        M     S S S 5        g s  snf ! , (       d  f       g = f)Nrbs   _HiStOrY_V2_zunicode-escaper   utf-8   
replace)errorsrb   rY   )r   rv   openr   path
expanduserr   
startswithseekreadsplitdecodeendswithrj   r  r\   r  )	rO   filenamerv   fis_editliner   r  linesrZ   s	            r>   r%   "_ReadlineWrapper.read_history_file  s'   
 //#++"''$$X.5**,11/BK+q	"IJX]I^_I^[[)[<I^E_F==&&MM$t),>>$/D#~~bggfo.E.EdB.ORV.VW"1Itt,  65 ` 65s&   AE,"E';B
E,	E,'E,,
E:c                B   U R                   nU R                  5       R                  U5      n[        [        R
                  R                  U5      SSSS9nU   U H)  nUR                  SS5      nUR                  US-   5        M+     S S S 5        g ! , (       d  f       g = f)Nwr  rb   )r   newlinez
)	r   r   ry   r  r   r  r  r  write)rO   r  rw   rv   r  entrys         r>   r-   #_ReadlineWrapper.write_history_file  s}    --	//#77	B##H-s!41 dF3% ! QQs   0B
Bc                >    U R                  5       R                  S S 2	 g rS   )r   rv   r   s    r>   r   _ReadlineWrapper.clear_history  s    OO%%a(r=   c                x    U R                  5       R                  nSUs=::  a  [        U5      ::  a
  O  g X!S-
     $ g Nr   )r   rv   re   rO   r   rv   s      r>   r    !_ReadlineWrapper.get_history_item  s<    //#++%W%  19%%r=   c                    U R                  5       R                  nSUs=::  a  [        U5      :  a  O  OX!	 g [        SU-  5      eNr   zNo history item at position %d)r   rv   re   r   r-  s      r>   r&   $_ReadlineWrapper.remove_history_item  s;    //#++$G$=EFFr=   c                    U R                  5       R                  nSUs=::  a  [        U5      :  a  O  OU R                  U5      X1'   g [	        SU-  5      er0  )r   rv   re   r  r   )rO   r   r  rv   s       r>   r'   %_ReadlineWrapper.replace_history_item  sF    //#++$G$!^^D1GN=EFFr=   c                t    U R                  5       R                  R                  U R                  U5      5        g rS   )r   rv   rj   r  r  s     r>   r   _ReadlineWrapper.add_history  s&    !!(()=>r=   c                    Xl         g rS   r   r   s     r>   r,   !_ReadlineWrapper.set_startup_hook  s    $r=   c                >    U R                  5       R                  5       $ rS   )r   r   r   s    r>   r"    _ReadlineWrapper.get_line_buffer  s     ,,..r=   c                    U R                  5       R                  =pU R                  5       n[        US-
  SS5       H  nX4   U R	                  5       ;   a    X4$ UnM!     X4$ )Nr   r   )r   r[   r"   r   r   )rO   startcursorbufr   s        r>   	_get_idxs_ReadlineWrapper._get_idxs  sk    *...""$vz2r*Av2244} E + }r=   c                (    U R                  5       S   $ ru   r>  r   s    r>   r   _ReadlineWrapper.get_begidx      ~~""r=   c                (    U R                  5       S   $ r,  rA  r   s    r>   r   _ReadlineWrapper.get_endidx  rC  r=   c                B    U R                  5       R                  U5        g rS   )r   r   )rO   r   s     r>   r#   _ReadlineWrapper.insert_text  s      &r=   )r   r   r   r   r   r   )r   rA   )rY   )r   objectr   rf   )rD   MoreLinesCallabler   rf   r   rf   r   rf   )r   rf   r   r   rS   )ro   r2   r   r   )r   r2   )r   zCollection[str]r   r   r   )r  rf   r   rf   )r   r   )r
  r   r   r   )r  rf   r   r   )r   r   r   rE   )r   r   r   r   )r   r   r  rf   r   r   )r  rf   r   r   )ro   r   r   r   )r   ztuple[int, int])r   rf   r   r   ))r6   r7   r8   r9   r   r:   r   r   r   r   r   r0   rC   rM   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<   r5   r=   r>   r   r   V  s    D#NE3O).t%)HF&H "#"$(L/(">NFNN#&&2.==)+. 1?0@ -8 2@1A &)GG?%/##'r=   r   c                >   ^  SU 4S jjnT Ul         U[        5       T '   g )Nc                 6   > SS K nUR                  " ST-  SS9  g )Nr   zreadline.%s() not implemented   )
stacklevel)r   warn)argskwdsr   _names      r>   stub_make_stub.<locals>.stub(  s    5=!Lr=   )rO  rH  rP  rH  r   r   )r6   globals)rQ  _retrR  s   `  r>   
_make_stubrV  '  s    M
 DMGIer=   ))read_init_fileN)	redisplayN)set_pre_input_hookNc                .   [         b  g  [        R                  R                  5       n[        R                  R                  5       n[        R                  " U5      (       a  [        R                  " U5      (       d  g U[        l
        U[        l        [        U [        5      (       d  [        U 5      n [        U 5      R                  [        R                   l        SS KnUR&                  q [        R&                  Ul        g ! [
        [        4 a     g f = fru   )r   r   stdinfilenostdoutAttributeErrorr   r   isatty_wrapperr   r   ri   dictRLCompletercompleterC   r3   builtinsr   )	namespacer   r   rd  s       r>   _setuprf  <  s    yy!

!!# 99T??"))E"2"2HMHN i&&O	)4Y)?)H)HHOO& I^^HN! J' s   <D DDzCallable[[object], str] | Noner   )r   r   r   r   )rZ   r   r[   r   r   r   )rZ   r   r[   r   r   ztuple[int, int | None])rZ   r   r   rE   )rZ   r   r[   r   r   r   )rQ  rf   rU  rH  r   r   )re  zMapping[str, Any]r   r   )X__doc__
__future__r   r   dataclassesr   r   r   siter   r   rlcompleterr   rb  rY   r	   r
   completing_readerr   r   r   ConsoleTyper:   namewindows_consoler   r   unix_consoler   getdefaultencodingr   r   collections.abcr   r   typesr   r   r   TYPE_CHECKINGtypingr   r   rf   r   rI  __all__r0   HistoricalReaderrA   r(   r   r   r|   r   rH   rJ   r   r`  r$   r)   r   r*   r   r!   r+   r   r%   r-   r   r    r&   r'   r   r,   r"   r   r   r#   r.   r   _get_readerrV  rQ  rU  rT  rf  r   r5   r=   r>   <module>ry     s  0
 #  ( 	  
 0 ) / +	 5 577d?BB<!!#/x 

 0 < <# cUD[) > Z Z Z
 4_0+<<>N _0 _0DO
!
(08## 0f:x'' :2 i' i' i'X 
 ((&&&&44 44 00 00 %@@ .. 00 &&,, 22 44 "",, **  
  
"" ** !!KE4
 	!(5(!ud$6 -1	) 0r=   