
    h?              	          S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
JrJr  SSKJr  SSKJr  SS	KJr  SS
KJrJr  SrSr\" S5      u	  rrrrrrrr r! " S S\RD                  5      r#\#r$\" \" SSSS5      SSS5        \" \RJ                  5       " S S\RL                  5      5       r' " S S\(5      r) " S S\'5      r*/ SQr+g)z<
Partial in-memory terminal emulator

@author: Jp Calderone
    N)implementer)Version)insults)deferprotocolreactor)Logger)_textattributes)	iterbytes)
deprecateddeprecatedModuleAttribute   (   	   c                   ~    \ rS rSrSrSr\R                  SSSS\\	S4S jr
\" \" SSSS	5      5      S
 5       rS rSrg)_FormattingState   z
Represents the formatting state/attributes of a single character.

Character set, intensity, underlinedness, blinkitude, video
reversal, as well as foreground and background colors made up a
character's attributes.
charsetbold	underlineblinkreverseVideo
foreground
background_subtractingFc	                 d    Xl         X l        X0l        X@l        XPl        X`l        Xpl        Xl        g Nr   )	selfr   r   r   r   r   r   r   r   s	            c/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/twisted/conch/insults/helper.py__init___FormattingState.__init__3   s.     	"
($$(    Twisted      r   c                 H    UR                  5       u  p#U R                  X#5      $ )a  
Add a character attribute to a copy of this formatting state.

@param kw: An optional attribute name and value can be provided with
    a keyword argument.

@return: A formatting state instance with the new attribute.

@see: L{DefaultFormattingState._withAttribute}.
)popitem_withAttribute)r   kwkvs       r    wantOne_FormattingState.wantOneG   s"     zz|""1((r#   c                    / nU R                   (       a  UR                  S5        U R                  (       a  UR                  [        R                  5        U R
                  (       a  UR                  [        R                  5        U R                  (       a  UR                  [        R                  5        U R                  (       a  UR                  [        R                  5        U R                  [        :w  a"  UR                  [        U R                  -   5        U R                  [        :w  a"  UR                  [         U R                  -   5        U(       a%  SSR#                  [%        [&        U5      5      -   S-   $ g)Nr   z[;m )r   appendr   r   BOLDr   	UNDERLINEr   BLINKr   REVERSE_VIDEOr   WHITE
FOREGROUNDr   BLACK
BACKGROUNDjoinmapstr)r   attrss     r    toVT102_FormattingState.toVT102V   s     LLO99LL&>>LL**+::LL'LL../??e#LLdoo56??e#LLdoo56SXXc#uo66<<r#   )r   r   r   r   r   r   r   r   N)__name__
__module____qualname____firstlineno____doc__compareAttributesr   G0r8   r:   r!   r   r   r-   r@   __static_attributes__ r#   r    r   r      s[    	 

)( 	2q!,-) .)r#   r   r$   r%   r&   z=Use twisted.conch.insults.text.assembleFormattedText instead.ztwisted.conch.insults.helperCharacterAttributec                      \ rS rSrSrS H!  r\S-   r\R                  S5      r\	" \5        M#     Sr
SrSrS	rS
r\" 5       r\" 5       rS rS rS rS rS rS rS rS rSCS jrSCS jrSCS jrSCS jrS rS r S r!S r"S r#S r$S r%S r&S r'S  r(S! r)S" r*S# r+S$ r,S% r-S& r.S' r/S( r0S) r1S* r2S+ r3S, r4S- r5S. r6S/ r7SCS0 jr8SCS1 jr9SCS2 jr:S3 r;S4 r<S5 r=S6 r>S7 r?S8 r@S9 rAS: rBS; rCS< rDS= rESDS> jrFS? rGS@ rHSArIgB)ETerminalBufferx   z!
An in-memory terminal emulator.
)s   UP_ARROWs
   DOWN_ARROWs   RIGHT_ARROWs
   LEFT_ARROWs   HOMEs   INSERTs   DELETEs   ENDs   PGUPs   PGDNs   F1s   F2s   F3s   F4s   F5s   F6s   F7s   F8s   F9s   F10s   F11s   F12s    = object()ascii   	   P          c                 &    U R                   U   U   $ r   )lines)r   xys      r    getCharacterTerminalBuffer.getCharacter   s    zz!}Qr#   c                 $    U R                  5         g r   )resetr   s    r    connectionMadeTerminalBuffer.connectionMade   s    

r#   c                 j    [        UR                  SS5      5       H  nU R                  U5        M     g)z
Add the given printable bytes to the terminal.

Line feeds in L{bytes} will be replaced with carriage return / line
feed pairs.
   
s   
N)r   replaceinsertAtCursor)r   databs      r    writeTerminalBuffer.write   s,     4<<w78A" 9r#   c                 B    [        U R                  40 U R                  D6$ r   )r   activeCharsetgraphicRenditionr]   s    r    _currentFormattingState&TerminalBuffer._currentFormattingState   s     2 2Ld6K6KLLr#   c                    US:X  a  SU l         gUS:X  a  U R                  5         gU[        R                  R	                  S5      ;   Ga  U R                   U R
                  :  a  U R                  5         XR                  5       4nU R                  R                  [        R                  R                  5      (       aY  U/U R                  U R                     U R                   U R                   & U R                  U R                     R                  5         O%X R                  U R                     U R                   '   U =R                   S-  sl         gg)a  
Add one byte to the terminal at the cursor and make consequent state
updates.

If b is a carriage return, move the cursor to the beginning of the
current row.

If b is a line feed, move the cursor to the next row or scroll down if
the cursor is already in the last row.

Otherwise, if b is printable, put it at the cursor position (inserting
or overwriting as dictated by the current mode) and move the cursor.
   r   ra   rO   r&   N)rW   _scrollDownstring	printableencodewidthnextLinerk   modesgetr   IRMrV   rX   pop)r   re   chs      r    rc   TerminalBuffer.insertAtCursor   s     :DF%Z&""))'22vv#1134Bzz~~gmm//0079d

466"466DFF3

466"&&(-/

466"466*FFaKF 3r#   c                 v    [        U5       Vs/ s H  o R                  U R                  5       4PM      sn$ s  snf r   )rangevoidrk   )r   rs   is      r    
_emptyLineTerminalBuffer._emptyLine   s.    EJ5\R\D88:;\RRRs   %6c                    U =R                   S-  sl         U R                   U R                  :  aW  U =R                   S-  sl         U R                  S	 U R                  R                  U R	                  U R
                  5      5        g g )Nr&   r   )rX   heightrV   r3   r   rs   r]   s    r    ro   TerminalBuffer._scrollDown   s[    !66T[[ FFaKF

1JJdoodjj9: !r#   c                     U =R                   S-  sl         U R                   S:  aJ  SU l         U R                  S	 U R                  R                  SU R                  U R                  5      5        g g )Nr&   r   )rX   rV   insertr   rs   r]   s    r    	_scrollUpTerminalBuffer._scrollUp   sR    !66A:DF

2JJa!<= r#   c                 @    [        SU R                  U-
  5      U l        g Nr   )maxrX   r   ns     r    cursorUpTerminalBuffer.cursorUp       Q
#r#   c                 Z    [        U R                  S-
  U R                  U-   5      U l        g Nr&   )minr   rX   r   s     r    
cursorDownTerminalBuffer.cursorDown   s     T[[1_dffqj1r#   c                 @    [        SU R                  U-
  5      U l        g r   )r   rW   r   s     r    cursorBackwardTerminalBuffer.cursorBackward   r   r#   c                 T    [        U R                  U R                  U-   5      U l        g r   )r   rs   rW   r   s     r    cursorForwardTerminalBuffer.cursorForward   s    TZZ!,r#   c                     Xl         X l        g r   rW   rX   )r   columnlines      r    cursorPositionTerminalBuffer.cursorPosition   s    r#   c                 p    U R                   R                  U l        U R                   R                  U l        g r   )homerW   rX   r]   s    r    
cursorHomeTerminalBuffer.cursorHome   s     r#   c                 $    U R                  5         g r   )ro   r]   s    r    indexTerminalBuffer.index   s    r#   c                 $    U R                  5         g r   )r   r]   s    r    reverseIndexTerminalBuffer.reverseIndex   s    r#   c                 2    SU l         U R                  5         g)zG
Update the cursor position attributes and scroll down if appropriate.
r   N)rW   ro   r]   s    r    rt   TerminalBuffer.nextLine   s     r#   c                 >    U R                   U R                  4U l        g r   )rW   rX   _savedCursorr]   s    r    
saveCursorTerminalBuffer.saveCursor  s    !VVTVV,r#   c                 :    U R                   u  U l        U l        U ? g r   )r   rW   rX   r]   s    r    restoreCursorTerminalBuffer.restoreCursor	  s    **r#   c                 4    U H  nSU R                   U'   M     g )NT)ru   r   ru   r1   s      r    setModesTerminalBuffer.setModes  s    A DJJqM r#   c                 T    U H  n U R                   U	 M     g ! [         a     M#  f = fr   )ru   KeyErrorr   s      r    
resetModesTerminalBuffer.resetModes  s0    AJJqM      
''c                 4    U H  nSU R                   U'   M     g)a  
Enable the given modes.

Track which modes have been enabled so that the implementations of
other L{insults.ITerminalTransport} methods can be properly implemented
to respect these settings.

@see: L{resetPrivateModes}
@see: L{insults.ITerminalTransport.setPrivateModes}
TN)privateModesr   s      r    setPrivateModesTerminalBuffer.setPrivateModes  s     A#'Da  r#   c                 T    U H  n U R                   U	 M     g! [         a     M#  f = f)zj
Disable the given modes.

@see: L{setPrivateModes}
@see: L{insults.ITerminalTransport.resetPrivateModes}
N)r   r   r   s      r    resetPrivateModes TerminalBuffer.resetPrivateModes&  s5     A%%a(   r   c                     SU l         g )Napp
keypadModer]   s    r    applicationKeypadMode$TerminalBuffer.applicationKeypadMode3  	    r#   c                     SU l         g )Nnumr   r]   s    r    numericKeypadMode TerminalBuffer.numericKeypadMode6  r   r#   c                      XR                   U'   g r   )charsets)r   charSetwhichs      r    selectCharacterSet!TerminalBuffer.selectCharacterSet9  s    &er#   c                 .    [         R                  U l        g r   )r   rH   ri   r]   s    r    shiftInTerminalBuffer.shiftIn<      $ZZr#   c                 .    [         R                  U l        g r   )r   G1ri   r]   s    r    shiftOutTerminalBuffer.shiftOut?  r   r#   c                    ^ ^^ T R                   m[        R                  T l         T R                  mUUU 4S jnUT l        g )Nc                 (   > T" U 5        T? TTl        g r   rc   ri   re   foldActiveCharsetr   s    r    rc   3TerminalBuffer.singleShift2.<locals>.insertAtCursorG      aD#!1Dr#   )ri   r   G2rc   r   rc   r   r   s   ` @@r    singleShift2TerminalBuffer.singleShift2B  5    --$ZZ	2
 -r#   c                    ^ ^^ T R                   m[        R                  T l         T R                  mUUU 4S jnUT l        g )Nc                 (   > T" U 5        T? TTl        g r   r   r   s    r    rc   3TerminalBuffer.singleShift3.<locals>.insertAtCursorS  r   r#   )ri   r   G3rc   r   s   ` @@r    singleShift3TerminalBuffer.singleShift3N  r   r#   c                    U GHZ  nU[         R                  :X  a  SSSS[        [        S.U l        M0  U[         R
                  :X  a  SU R                  S'   MU  U[         R                  :X  a  SU R                  S'   Mz  U[         R                  :X  a  SU R                  S'   M  U[         R                  :X  a  SU R                  S'   M   [        U5      n[        Us=::  a  [        [        -   ::  a  O  OU[        -
  U R                  S'   GM  [        Us=::  a  [        [        -   ::  a  O  OU[        -
  U R                  S	'   GM@  U R                  R                  S
US9  GM]     g ! [         a    U R                  R                  S
US9   GM  f = f)NFr   r   r   r   r   r   Tr   r   r   r   r   r   z-Unknown graphic rendition attribute: {attr!r})attr)r   NORMALr8   r:   rj   r4   r5   r6   r7   intr9   N_COLORSr;   _logerror
ValueError)r   
attributesar,   s       r    selectGraphicRendition%TerminalBuffer.selectGraphicRenditionZ  sL   AGNN"!!&"$)"'"')% gll"04%%f-g'''59%%k2gmm#15%%g.g+++8<%%n5AA "Q?*x*??>?*n--l;#qAJ,AA>?*n--l;		KRS ( ? * " IIOOGa $ s   E##$FFc                 h    U R                  U R                  5      U R                  U R                  '   g r   )r   rs   rV   rX   r]   s    r    	eraseLineTerminalBuffer.eraseLine~  s!    !__TZZ8

466r#   c                     U R                   U R                  -
  nU R                  U5      U R                  U R                     U R                  S & g r   )rs   rW   r   rV   rX   )r   rs   s     r    eraseToLineEndTerminalBuffer.eraseToLineEnd  s:    

TVV#'+u'=

4664668$r#   c                     U R                  U R                  S-   5      U R                  U R                     S U R                  S-   & g r   )r   rW   rV   rX   r]   s    r    eraseToLineBeginning#TerminalBuffer.eraseToLineBeginning  s4    +/??466A:+F

466<TVVaZ(r#   c                     [        U R                  5       Vs/ s H  oR                  U R                  5      PM     snU l        g s  snf r   )r|   r   r   rs   rV   r   r~   s     r    eraseDisplayTerminalBuffer.eraseDisplay  s1    ;@;MN;Maoodjj1;MN
Ns   $Ac                    U R                  5         U R                  U R                  -
  S-
  n[        U5       Vs/ s H  o R	                  U R
                  5      PM     snU R                  U R                  S-   S & g s  snf r   )r  r   rX   r|   r   rs   rV   )r   r   r~   s      r    eraseToDisplayEnd TerminalBuffer.eraseToDisplayEnd  s^    tvv%)INv#WAOODJJ$?#W

466A:< #Ws   $A<c                     U R                  5         [        U R                  5       Vs/ s H  oR                  U R                  5      PM     snU R
                  S U R                  & g s  snf r   )r  r|   rX   r   rs   rV   r  s     r    eraseToDisplayBeginning&TerminalBuffer.eraseToDisplayBeginning  sG    !!#EJ466]S]

 ;]S

8TVVSs   $A'c                    U R                   U R                     U R                  U R                  U-   2	 U R                   U R                     R                  U R	                  [        U R                  U R                  -
  U5      5      5        g r   )rV   rX   rW   extendr   r   rs   r   s     r    deleteCharacterTerminalBuffer.deleteCharacter  s`    JJtvvtvv
23

466!!$//#djj4666I12M"NOr#   c                     [        U5       Vs/ s H  o R                  U R                  5      PM     snU R                  U R                  U R                  & U R                  U R
                  S 2	 g s  snf r   )r|   r   rs   rV   rX   r   r   r   r~   s      r    
insertLineTerminalBuffer.insertLine  sQ    LQRSH&UHqtzz'BH&U

466DFF#JJt{{}% 'Vs   $A0c                     U R                   U R                  U R                  U-   2	 U R                   R                  [        U5       Vs/ s H  o R	                  U R
                  5      PM     sn5        g s  snf r   )rV   rX   r  r|   r   rs   r  s      r    
deleteLineTerminalBuffer.deleteLine  sR    JJtvv
*+

aI1??4::6IJIs   	$A5c                 2    U R                   U R                  4$ r   r   r]   s    r    reportCursorPosition#TerminalBuffer.reportCursorPosition  s    r#   c                 |   [         R                  " SS5      U l        S=U l        U l        0 U l        0 U l        U R                  [         R                  R                  [         R                  R                  /5        SU l
        [         R                  U l        SSSS[        [        S.U l        [         R                  [         R                   [         R"                  [         R                   [         R$                  [         R&                  [         R(                  [         R*                  0U l        U R/                  5         g )Nr   r   Fr   )r   Vectorr   rW   rX   ru   r   r   	AUTO_WRAPCURSOR_MODEnumericKeypadrH   ri   r8   r:   rj   CS_USr   r   CS_ALTERNATEr   CS_ALTERNATE_SPECIALr   r	  r]   s    r    r\   TerminalBuffer.reset  s    NN1a(	
!!++W-A-A-M-MN	
 #$ZZ!!
 JJJJJJ,,JJ44	
 	r#   c                 .    [        S[        U5      5        g )NzCould not handle)printrepr)r   bufs     r    unhandledControlSequence'TerminalBuffer.unhandledControlSequence  s     $s),r#   c                 @   / nU R                    H|  n/ nSnU HL  u  pVXPR                  La  UR                  U5        [        U5      nM1  UR                  U R                  5        MN     UR                  SR                  US U 5      5        M~     SR                  U5      $ )Nr   r#   ra   )rV   r}   r3   lenfillr<   )r   rV   Lr+  lengthry   r   s          r    	__bytes__TerminalBuffer.__bytes__  s    ACFYY&JJrN XFJJtyy)  LL#gv,/0  zz%  r#   c                     [        S5      e)Nz%Unimplemented: TerminalBuffer.getHostNotImplementedErrorr]   s    r    getHostTerminalBuffer.getHost      !"IJJr#   c                     [        S5      e)Nz%Unimplemented: TerminalBuffer.getPeerr6  r]   s    r    getPeerTerminalBuffer.getPeer  r:  r#   c                     [        S5      e)Nz,Unimplemented: TerminalBuffer.loseConnectionr6  r]   s    r    loseConnectionTerminalBuffer.loseConnection  s    !"PQQr#   c                     [        S5      e)Nz+Unimplemented: TerminalBuffer.writeSequencer6  r   rd   s     r    writeSequenceTerminalBuffer.writeSequence  s    !"OPPr#   c                     [        S5      e)Nz5Unimplemented: TerminalBuffer.horizontalTabulationSetr6  r]   s    r    horizontalTabulationSet&TerminalBuffer.horizontalTabulationSet  s    !C
 	
r#   c                     [        S5      e)Nz-Unimplemented: TerminalBuffer.tabulationClearr6  r]   s    r    tabulationClearTerminalBuffer.tabulationClear      !"QRRr#   c                     [        S5      e)Nz0Unimplemented: TerminalBuffer.tabulationClearAllr6  r]   s    r    tabulationClearAll!TerminalBuffer.tabulationClearAll  s    !"TUUr#   c                     [        S5      e)Nz.Unimplemented: TerminalBuffer.doubleHeightLiner6  )r   tops     r    doubleHeightLineTerminalBuffer.doubleHeightLine  s    !"RSSr#   c                     [        S5      e)Nz-Unimplemented: TerminalBuffer.singleWidthLiner6  r]   s    r    singleWidthLineTerminalBuffer.singleWidthLine  rK  r#   c                     [        S5      e)Nz-Unimplemented: TerminalBuffer.doubleWidthLiner6  r]   s    r    doubleWidthLineTerminalBuffer.doubleWidthLine  rK  r#   )r   ri   r   rj   r   rc   r   rV   ru   r#  r   rW   rX   N)r&   )T)JrB   rC   rD   rE   rF   keyID	execBytesdecodeexecStrexecTAB	BACKSPACErs   r   r0  objectr}   r	   r   rY   r^   rf   rk   rc   r   ro   r   r   r   r   r   r   r   r   r   rt   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,  r3  r8  r<  r?  rC  rF  rI  rM  rQ  rT  rW  rI   rJ   r#   r    rM   rM   x   s   0 N*	""7+W58 CIEFD8D8D #M:S;>$2$--!(  '((
-
-"H9>GOX
TP&K 4-!KKRQ
SVTSSr#   rM   c                       \ rS rSrSrg)ExpectationTimeouti  rJ   N)rB   rC   rD   rE   rI   rJ   r#   r    rb  rb    s    r#   rb  c                   D    \ rS rSrSrS rS rS rS rS r	S\
4S	 jrS
rg)ExpectableBufferi  r   c                 <    [         R                  U 5        / U l        g r   )rM   r^   
_expectingr]   s    r    r^   ExpectableBuffer.connectionMade   s    %%d+r#   c                 N    [         R                  X5        U R                  5         g r   )rM   rf   _checkExpectedrB  s     r    rf   ExpectableBuffer.write  s    T(r#   c                 <    [         R                  U 5        SU l        g r   )rM   r   _markr]   s    r    r   ExpectableBuffer.cursorHome  s    !!$'
r#   c                 V    UR                  [        5       5        U R                  5         g r   )errbackrb  ri  )r   ds     r    _timeoutExpected!ExpectableBuffer._timeoutExpected  s    			$&'r#   c                    U R                  5       U R                  S  nU R                  (       a  U R                  S   u  p#nU(       a$  UR                  5       (       d  U R                  S	 MN  UR	                  U5       Hm  nU(       a  UR                  5         U R                  S	 U =R                  UR                  5       -  sl        XR                  5       S  nUR                  U5          O   g U R                  (       a  M  g g r   )r3  rl  rf  activefinditercancelendcallback)r   sexprtimerdeferredmatchs         r    ri  ExpectableBuffer._checkExpected  s    NNTZZ\*oo$(OOA$6!DU\\^^OOA&q)LLNOOA&

eiik)
iikm$!!%( *  ooor#   Nc                     [         R                  " 5       nS nU(       a  UR                  X R                  U5      nU R                  R                  [        R                  " U5      XT45        U R                  5         U$ r   )	r   Deferred	callLaterrq  rf  r3   recompileri  )r   
expressiontimeout	schedulerrp  r{  s         r    expectExpectableBuffer.expect"  s_    NN''1F1FJE

: 6ABr#   )rf  rl  )rB   rC   rD   rE   rl  r^   rf   r   rq  ri  r   r  rI   rJ   r#   r    rd  rd    s,    E$ *. r#   rd  )rK   rM   rd  ),rF   r  rp   zope.interfacer   incrementalr   twisted.conch.insultsr   twisted.internetr   r   r   twisted.loggerr	   twisted.pythonr
   twisted.python.compatr   twisted.python.deprecater   r   r9   r;   r|   r:   REDGREENYELLOWBLUEMAGENTACYANr8   r   _FormattingStateMixinr   rK   ITerminalTransportProtocolrM   	Exceptionrb  rd  __all__rJ   r#   r    <module>r     s   
 
  &  ) 5 5 ! * + J

BG( ?sE64$xK<< K\ &  Ir1a C"	 W''(}SX&& }S )}S@	 	,~ ,^ Gr#   