
    F\h3              
         % S SK Jr  S SKJr  S SKJrJr  SSKJrJ	r	  SSK
Jr   \" \" S5       V s/ s H  n \" U 5      S:w  d  M  S	U -  S
4PM     sn \" \\" SS5      5       V s/ s H  o S:w  d  M
  U S4PM     sn -   \" S5       V s/ s H5  n \" U 5      R)                  5       (       d  M   \" U 5      S:w  d  M.  S	U -  S4PM7     sn -   / SQ-   5      rS\S'   SrSrSr " S S\R4                  5      r " S S\R4                  5      r " S S\R4                  5      r " S S\R4                  5      r " S S\R4                  5      r " S S\R4                  5      r  " S  S!\R4                  5      r! " S" S#\RD                  5      r# " S$ S%\R4                  5      r$ " S& S'\R4                  5      r% " S( S)\R4                  5      r& " S* S+\R4                  5      r' " S, S-\R4                  5      r( " S. S/\R4                  5      r) " S0 S1\R4                  5      r* " S2 S3\R4                  5      r+ " S4 S5\R4                  5      r,\ " S6 S7\5      5       r-S8r.g9s  sn f s  sn f s  sn f ):    )annotations)contextmanager)	dataclassfield   )commandsinput)Reader   \z\%03ozisearch-end       zisearch-add-character))z\\zself-insert)\C-rzisearch-backwards)\C-szisearch-forwards)z\C-cisearch-cancel)z\C-gr   )z\<backspace>zisearch-backspace'tuple[tuple[KeySpec, CommandName], ...]isearch_keymap rfc                      \ rS rSrSS jrSrg)next_history8   c                    U R                   nUR                  [        UR                  5      :X  a  UR	                  S5        g UR                  UR                  S-   5        g )Nzend of history listr   )readerhistoryilenhistoryerrorselect_itemselfr   s     0/usr/lib/python3.13/_pyrepl/historical_reader.pydonext_history.do9   sC    KK::QYY'GG)*	ajj1n%     NreturnNone__name__
__module____qualname____firstlineno__r$   __static_attributes__r'   r&   r#   r   r   8       &r&   r   c                      \ rS rSrSS jrSrg)previous_historyA   c                    U R                   nUR                  S:X  a  UR                  S5        g UR                  UR                  S-
  5        g )Nr   zstart of history listr   )r   r   r   r    r!   s     r#   r$   previous_history.doB   s:    KK::?GG+,	ajj1n%r&   r'   Nr(   r+   r'   r&   r#   r3   r3   A   r1   r&   r3   c                      \ rS rSrSS jrSrg)history_search_backwardJ   c                :    U R                   nUR                  SS9  g )NFforwardsr   search_nextr!   s     r#   r$   history_search_backward.doK   s    KK	u%r&   r'   Nr(   r+   r'   r&   r#   r8   r8   J   s    &r&   r8   c                      \ rS rSrSS jrSrg)history_search_forwardP   c                :    U R                   nUR                  SS9  g )NTr;   r=   r!   s     r#   r$   history_search_forward.doQ   s    KK	t$r&   r'   Nr(   r+   r'   r&   r#   rA   rA   P   s    %r&   rA   c                      \ rS rSrSS jrSrg)restore_historyV   c                L   U R                   nUR                  [        UR                  5      :w  au  UR	                  5       UR                  UR                     :w  aI  [        UR                  UR                     5      Ul        [        UR                  5      Ul        SUl        g g g NT)	r   r   r   r   get_unicodelistbufferposdirtyr!   s     r#   r$   restore_history.doW   ss    KK::QYY'}}!))AJJ"77		!** 56AHH 8 (r&   r'   Nr(   r+   r'   r&   r#   rF   rF   V   s    r&   rF   c                      \ rS rSrSS jrSrg)first_history`   c                :    U R                   R                  S5        g )Nr   )r   r    r"   s    r#   r$   first_history.doa   s    "r&   r'   Nr(   r+   r'   r&   r#   rQ   rQ   `   s    #r&   rQ   c                      \ rS rSrSS jrSrg)last_historye   c                t    U R                   R                  [        U R                   R                  5      5        g N)r   r    r   r   rT   s    r#   r$   last_history.dof   s#    DKK$7$7 89r&   r'   Nr(   r+   r'   r&   r#   rW   rW   e   s    :r&   rW   c                      \ rS rSrSS jrSrg)operate_and_get_nextj   c                T    U R                   R                  S-   U R                   l        g )Nr   )r   r   r   rT   s    r#   r$   operate_and_get_next.dok   s    #';;#7#7!#; r&   r'   Nr(   r+   r'   r&   r#   r]   r]   j   s    <r&   r]   c                      \ rS rSrSS jrSrg)yank_argo   c                   U R                   nUR                  U R                  L a  U=R                  S-  sl        OSUl        UR                  UR                  :  a  UR                  S5        g UR                  S5      nUR                  UR                  UR                  -
  S-
  5      R                  5       nU[        U5      * :  d  U[        U5      :  a  UR                  S5        g X2   nUR                  nUR                  S:  a  [        UR                  5      nOSn[        U5      XQR                  U-
  UR                  & XAl        U=R                  [        U5      U-
  -  sl        SUl        g )Nr   r   zbeginning of history listzno such argT)r   last_command	__class__
yank_arg_ir   r   get_argget_itemsplitr   rL   yank_arg_yankedrK   rM   rN   )r"   r   awordswbos          r#   r$   yank_arg.dop   s   KK>>T^^+LLALAL::$GG/0IIbM

1::4q89??AE
{?a3u:oGGM"HHH<<!A%%&AA#Aw%%!)aee	Q!r&   r'   Nr(   r+   r'   r&   r#   rb   rb   o   s    r&   rb   c                      \ rS rSrSS jrSrg)forward_history_isearch   c                    U R                   n[        Ul        UR                  UR                  4Ul        SUl        SUl        UR                  UR                  5        g )Nr   T)
r   ISEARCH_DIRECTION_FORWARDSisearch_directionr   rM   isearch_startisearch_termrN   push_input_transisearch_transr!   s     r#   r$   forward_history_isearch.do   sG    KK8**aee+	1??+r&   r'   Nr(   r+   r'   r&   r#   rt   rt          ,r&   rt   c                      \ rS rSrSS jrSrg)reverse_history_isearch   c                    U R                   n[        Ul        SUl        SUl        UR                  UR                  5        UR                  UR                  4Ul	        g )NTr   )
r   ISEARCH_DIRECTION_BACKWARDSrx   rN   rz   r{   r|   r   rM   ry   r!   s     r#   r$   reverse_history_isearch.do   sG    KK9	1??+**aee+r&   r'   Nr(   r+   r'   r&   r#   r   r      r~   r&   r   c                      \ rS rSrSS jrSrg)isearch_cancel   c                    U R                   n[        Ul        UR                  5         UR	                  UR
                  S   5        UR
                  S   Ul        SUl        g )Nr   r   T)r   ISEARCH_DIRECTION_NONErx   pop_input_transr    ry   rM   rN   r!   s     r#   r$   isearch_cancel.do   sK    KK4		aooa()"r&   r'   Nr(   r+   r'   r&   r#   r   r      s    r&   r   c                      \ rS rSrSS jrSrg)isearch_add_character   c                $   U R                   nUR                  nU=R                  U R                  S   -  sl        SUl        UR
                  [        UR                  5      -   S-
  nX#US-    UR                  S   /:w  a  UR                  5         g g )Nre   Tr   )r   rL   rz   eventrN   rM   r   isearch_next)r"   r   rp   ps       r#   r$   isearch_add_character.do   sx    KKHH	$**R.(EEC''!+Q<ANN2.//NN 0r&   r'   Nr(   r+   r'   r&   r#   r   r      s    r&   r   c                      \ rS rSrSS jrSrg)isearch_backspace   c                    U R                   n[        UR                  5      S:  a  UR                  S S Ul        SUl        g UR	                  S5        g )Nr   re   Tznothing to rubout)r   r   rz   rN   r   r!   s     r#   r$   isearch_backspace.do   sB    KKq~~"^^CR0ANAGGG'(r&   r'   Nr(   r+   r'   r&   r#   r   r      s    )r&   r   c                      \ rS rSrSS jrSrg)isearch_forwards   c                R    U R                   n[        Ul        UR                  5         g rZ   )r   rw   rx   r   r!   s     r#   r$   isearch_forwards.do   s    KK8	r&   r'   Nr(   r+   r'   r&   r#   r   r          r&   r   c                      \ rS rSrSS jrSrg)isearch_backwards   c                R    U R                   n[        Ul        UR                  5         g rZ   )r   r   rx   r   r!   s     r#   r$   isearch_backwards.do   s    KK9	r&   r'   Nr(   r+   r'   r&   r#   r   r      r   r&   r   c                      \ rS rSrSS jrSrg)isearch_end   c                    U R                   n[        Ul        UR                  R	                  5         UR                  5         SUl        g rI   )r   r   rx   consoleforgetinputr   rN   r!   s     r#   r$   isearch_end.do   s6    KK4				r&   r'   Nr(   r+   r'   r&   r#   r   r      s    r&   r   c                  t  ^  \ rS rSr% Sr\" \S9rS\S'   Sr	S\S'   S	r
S
\S'   \" \S9rS\S'   SrS\S'   \rS\S'   \" SS9rS\S'   \" SS9rS\S'   SrS\S'   SrS\S'   S&U 4S jjrS'U 4S jjrS(S jrS)S jr\S*U 4S jj5       r\S*S j5       rS&U 4S  jjrS+U 4S! jjrS,S" jrS&S# jrS&U 4S$ jjrS%r U =r!$ )-HistoricalReader   zOAdds history support (with incremental history searching) to the
Reader class.
)default_factoryz	list[str]r   r   intr   Nz
int | Noner   zdict[int, str]transient_historyr   strrz   rx   F)initztuple[int, int]ry   zinput.KeymapTranslatorr|   rh   rl   c                  > [         TU ]  5         [        [        [        [
        [        [        [        [        [        [        [        [        [        [        [        [         ["        [$        4 HC  nXR&                  UR(                  '   XR&                  UR(                  R+                  SS5      '   ME     U R,                  U R.                  4U l        [2        R4                  " [6        [        [        S9U l        g )N_-)invalid_clscharacter_cls)super__post_init__r   r3   rF   rQ   rW   rb   rt   r   r   r   r   r   r   r   r]   r8   rA   r   r,   replacer   rM   ry   r	   KeymapTranslatorr   r|   )r"   crg   s     r#   r   HistoricalReader.__post_init__   s    ##!! #"%
A( )*MM!**%:;MM!**,,S#67+
, "]]DHH4"33CX
r&   c                &   > [         TU ]  5       S-   $ )N))z\C-nznext-history)z\C-pzprevious-history)z\C-ozoperate-and-get-next)r   zreverse-history-isearch)r   zforward-history-isearch)z\M-rzrestore-history)z\M-.zyank-arg)z\<page down>history-search-forward)z\x1b[6~r   )z
\<page up>history-search-backward)z\x1b[5~r   )r   collect_keymapr"   rg   s    r#   r   HistoricalReader.collect_keymap  s    w%' +
 
 	
r&   c                X   U R                  5       U R                  U R                  '   U R                  R                  U5      nUc  U R                  U   R                  5       n[        U5      U l        Xl        [        U R                  5      U l	        SU l
        SU R                  l        g rI   )rJ   r   r   getr   rstriprK   rL   r   rM   rN   last_refresh_cacheinvalidated)r"   ibufs      r#   r    HistoricalReader.select_item  s    040@0@0Bt}}-$$((+;,,q/((*C3it{{#
.2+r&   c                    U[        U R                  5      :w  a(  U R                  R                  XR                  U   5      $ U R                  R                  XR	                  5       5      $ rZ   )r   r   r   r   rJ   )r"   r   s     r#   rj   HistoricalReader.get_item  sR    DLL!!))--aaAA))--a1A1A1CDDr&   c              #     >#    [         TU ]  5          U R                  5          S v   S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7frZ   )r   suspendsuspend_historyr   s    r#   r   HistoricalReader.suspend#  s6     W_ 4 4 6 !7 6 6s/   AA
9A
	A
A	A


AAc              #     #     U R                   S S  nU R                   S S 2	 S v   XR                   S S & g ! WU R                   S S & f = f7frZ   )r   )r"   old_historys     r#   r    HistoricalReader.suspend_history(  s=     	*,,q/KQ)LLOkDLLOs   A	"5 A	AA	c                  > [         TU ]  5          0 U l        U R                  b  U R                  [	        U R
                  5      :  a}  U R                  U l        [        U R
                  U R                     5      U R                  S S & [	        U R                  5      U l	        SU R                  [	        U R
                  5      '   O[	        U R
                  5      U l        S U l        g !   U R                  5         e = f)Nr   )r   preparer   r   r   r   r   rK   rL   rM   restorer   s    r#   r   HistoricalReader.prepare1  s    	%'D"  ,1B1BSEV1V $ 1 1!%dll43D3D&E!FAt{{+<>&&s4<<'89 #DLL 1 $D	LLNs   CC' 'C:c                   > U(       a?  U R                   [        :w  a+  SU R                   [        :H     nSU< SU R                  < S3$ [        TU ]  X5      $ )Nrf(z	-search `z') )rx   r   rw   rz   r   
get_prompt)r"   linenocursor_on_linedrg   s       r#   r   HistoricalReader.get_promptA  sK    d448NNT++/IIJA*+T->->??7%f==r&   c               R   U R                   nU R                  5       nU R                  nUR                  SSU5      nX5S-   U n[	        U5      n[	        U5      nSnU[	        U R
                  5      :  a  [	        U R                  U5      5      nU(       a  X(:X  a  SnO	U(       d  Sn U(       a  U[	        U R
                  5      S-
  :  n	OUS:H  n	U	(       a6  U(       a  U(       d  SU l         / U l        SU l        gU R                  S5        gXA(       a  SOS-  nU R                  U5      nU(       d  U R                  U5        gSn
[        UR                  SS	95       HE  u  pUR                  U5      (       a  U R                  U5        X*-   U l           gU
[	        U5      -  n
MG     GM  )
zSearch history for the current line contents up to the cursor.

Selects the first item found. If nothing is under the cursor, any next
item in history is selected.

r   r   FT	not foundNre   )keepends)rM   rJ   r   rfindr   r   rj   rL   rN   r   r    	enumerate
splitlines
startswith)r"   r<   rM   shistory_indexnl_indexprefixmatch_prefixlen_itemout_of_boundslen_accr   lines                r#   r>   HistoricalReader.search_nextH  s~    hh 774C(a<$&k6{3t||,,4==78H L L -T\\1BQ1F F - 2L DH"$DK!%DJ  JJ{+(Q2Mm,A  /G$Q\\4\%@A??6**$$]3"}DH3t9$ B- r&   c                T   U R                   nU R                  nU R                  nU R                  5       nU R                  [
        :H  n U(       a  UR                  XS-   5      nO"UR                  USU[        U5      -   S-
  5      nUS:w  a  U R                  U5        X l        g U(       a  U[        U R                  5      S-
  :  d  U(       d  US:X  a  U R                  S5        g U(       a  US-  nU R                  U5      nSnO!US-  nU R                  U5      n[        U5      nM  )Nr   r   re   r   )rz   rM   r   rJ   rx   rw   findr   r   r    r   r   rj   )r"   str   r   r   r<   s         r#   r   HistoricalReader.isearch_next}  s   HHMM))-GGFF21u%GGB1s2w;?3Bw  #qC$5$998PQUVPV

;'FAa(AAFAa(AAA) r&   c                Z  > [         TU ]  5         U R                  5       nU R                  R	                  5        H?  u  p#U[        U R                  5      :  d  M   X R                  :w  d  M1  X0R                  U'   MA     U(       a(  [        (       a  U R                  R                  U5        g g g rZ   )
r   finishrJ   r   itemsr   r   r   should_auto_add_historyappend)r"   retr   trg   s       r#   r   HistoricalReader.finish  s     **002DA3t||$$mm);"#Q 3 **LL$ +3r&   )rL   rN   r   ry   r|   r   rM   r   r(   )r)   r   )r   r   r)   r*   )r   r   r)   r   )r)   SimpleContextManager)r   r   r   boolr)   r   )r<   r   r)   r*   )"r,   r-   r.   r/   __doc__r   rK   r   __annotations__r   r   dictr   rz   r   rx   ry   r|   rh   rl   r   r   r    rj   r   r   r   r   r   r>   r   r   r0   __classcell__)rg   s   @r#   r   r      s     t4GY4Hc#L*#(-d(C~CL#3s3%*%6M?6,1u,=M)=JOS
:
	3E   * * >3%j8% %r&   r   TN)/
__future__r   
contextlibr   dataclassesr   r   r   r   r	   r   r
   typesr   KeySpecCommandNametuplerangechrmapisalphar   r  r   r   rw   Commandr   r3   r8   rA   rF   rQ   rW   FinishCommandr]   rb   rt   r   r   r   r   r   r   r   r   r   )r   s   0r#   <module>r     sf  ( # % (   	 ;@,1#JIJq#a&D."hlM"JI-0eBn-ES-Ed#"#-EST sAq6>> 	0 #A$ 	0A./;7 $  !   &8## &&x'' &&h.. &%X-- %h&& #H$$ #
:8## :
<811 <
x 8,h.. ,,h.. ,X%% H,, )(( )x'' (( (""  J%v J% J%Z  C JSs)   II$	I
1I
I
*
I
8I
