HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3/dist-packages/twisted/conch/insults/__pycache__/helper.cpython-38.pyc
U


W[<8�	@sdZddlmZddlZddlZddlmZddlmZddl	m
Z
mZmZddl
mZmZddlmZdd	lmZmZdd
lmZdZdZed
�\	ZZZZZZZ Z!Z"Gdd�dej#�Z$e$Z%eedddd�ddd�eej&�Gdd�dej'��Z(Gdd�de)�Z*Gdd�de(�Z+dddgZ,dS)z<
Partial in-memory terminal emulator

@author: Jp Calderone
�)�print_functionN)�implementer)�Version)�defer�protocol�reactor)�log�_textattributes)�	iterbytes)�
deprecated�deprecatedModuleAttribute)�insults��(�	c@sReZdZdZdZejddddeedfdd�Z	e
edddd	��d
d��Zdd
�Z
dS)�_FormattingStatez�
    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		Cs4||_||_||_||_||_||_||_||_dS�Nr)	�selfrrrrrrrr�r�>/usr/lib/python3/dist-packages/twisted/conch/insults/helper.py�__init__,sz_FormattingState.__init__�Twisted�
�rcKs|��\}}|�||�S)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}.
        )�popitemZ_withAttribute)r�kw�k�vrrr�wantOne9sz_FormattingState.wantOnecCs�g}|jr|�d�|jr&|�tj�|jr8|�tj�|jrJ|�tj�|j	r\|�tj
�|jtkrv|�t
|j�|jtkr�|�t|j�|r�dd�tt|��dSdS)Nrz[�;�m�)r�appendrr
�BOLDr�	UNDERLINEr�BLINKr�
REVERSE_VIDEOr�WHITE�
FOREGROUNDr�BLACK�
BACKGROUND�join�map�str)rZattrsrrr�toVT102Is$


z_FormattingState.toVT102N)�__name__�
__module__�__qualname__�__doc__ZcompareAttributesr
�G0r0r2rrrr'r7rrrrrs�


rr r!r"z=Use twisted.conch.insults.text.assembleFormattedText instead.ztwisted.conch.insults.helper�CharacterAttributec@s�eZdZdZdD]ZedZe�d�Zee�qdZ	dZ
dZdZd	Z
e�Zd
d�Zdd
�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdddd�Zdedd�Zdfdd �Zdgd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Z d-d.�Z!d/d0�Z"d1d2�Z#d3d4�Z$d5d6�Z%d7d8�Z&d9d:�Z'd;d<�Z(d=d>�Z)d?d@�Z*dAdB�Z+dCdD�Z,dEdF�Z-dGdH�Z.dIdJ�Z/dKdL�Z0dMdN�Z1dOdP�Z2dQdR�Z3dSdT�Z4dhdUdV�Z5didWdX�Z6djdYdZ�Z7d[d\�Z8d]d^�Z9d_d`�Z:dadb�Z;dcS)k�TerminalBufferz)
    An in-memory terminal emulator.
    )sUP_ARROWs
DOWN_ARROWsRIGHT_ARROWs
LEFT_ARROWsHOMEsINSERTsDELETEsENDsPGUPsPGDNsF1sF2sF3sF4sF5sF6sF7sF8sF9sF10sF11sF12s = object()�ascii�	��P�� cCs|j||Sr)�lines)r�x�yrrr�getCharacter�szTerminalBuffer.getCharactercCs|��dSr)�reset�rrrr�connectionMade�szTerminalBuffer.connectionMadecCs$t|�dd��D]}|�|�qdS)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�brrr�write�szTerminalBuffer.writecCst|jf|j�Sr)r�
activeCharset�graphicRenditionrJrrr�_currentFormattingState�sz&TerminalBuffer._currentFormattingStatecCs�|dkrd|_n�|dkr"|��n�|tj�d�kr�|j|jkrF|��||��f}|j�	t
jj�r�|g|j|j
|j|j�<|j|j
��n||j|j
|j<|jd7_dS)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.
        �
rrLr?r"N)rF�_scrollDown�stringZ	printable�encode�width�nextLinerT�modes�getr
ZIRMrErG�pop)rrP�chrrrrN�s
zTerminalBuffer.insertAtCursorcs�fdd�t|�D�S)Ncsg|]}�j���f�qSr)�voidrT��.0�irJrr�
<listcomp>�s�z-TerminalBuffer._emptyLine.<locals>.<listcomp>)�range�rrYrrJr�
_emptyLine�s
�zTerminalBuffer._emptyLinecCsH|jd7_|j|jkrD|jd8_|jd=|j�|�|j��dS)Nr"r)rG�heightrEr+rfrYrJrrrrV�s
zTerminalBuffer._scrollDowncCs@|jd8_|jdkr<d|_|jd=|j�d|�|j��dS)Nr"r���)rGrE�insertrfrYrJrrr�	_scrollUp�s

zTerminalBuffer._scrollUpr"cCstd|j|�|_dS�Nr)�maxrG�r�nrrr�cursorUp�szTerminalBuffer.cursorUpcCst|jd|j|�|_dS�Nr")�minrgrGrmrrr�
cursorDown�szTerminalBuffer.cursorDowncCstd|j|�|_dSrk)rlrFrmrrr�cursorBackward�szTerminalBuffer.cursorBackwardcCst|j|j|�|_dSr)rqrYrFrmrrr�
cursorForward�szTerminalBuffer.cursorForwardcCs||_||_dSr�rFrG)r�column�linerrr�cursorPosition�szTerminalBuffer.cursorPositioncCs|jj|_|jj|_dSr)�homerFrGrJrrr�
cursorHome�s
zTerminalBuffer.cursorHomecCs|��dSr)rVrJrrr�index�szTerminalBuffer.indexcCs|��dSr)rjrJrrr�reverseIndex�szTerminalBuffer.reverseIndexcCsd|_|��dS)zW
        Update the cursor position attributes and scroll down if appropriate.
        rN)rFrVrJrrrrZ�szTerminalBuffer.nextLinecCs|j|jf|_dSr)rFrG�_savedCursorrJrrr�
saveCursor�szTerminalBuffer.saveCursorcCs|j\|_|_|`dSr)r}rFrGrJrrr�
restoreCursor�szTerminalBuffer.restoreCursorcCs|D]}d|j|<qdS)NT)r[�rr[r)rrr�setModes�szTerminalBuffer.setModesc	Cs0|D]&}z|j|=Wqtk
r(YqXqdSr)r[�KeyErrorr�rrr�
resetModess
zTerminalBuffer.resetModescCs|D]}d|j|<qdS)aH
        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�rrr�setPrivateModes
szTerminalBuffer.setPrivateModesc	Cs0|D]&}z|j|=Wqtk
r(YqXqdS)z�
        Disable the given modes.

        @see: L{setPrivateModes}
        @see: L{insults.ITerminalTransport.resetPrivateModes}
        N)r�r�r�rrr�resetPrivateModess
z TerminalBuffer.resetPrivateModescCs
d|_dS)N�app�Z
keypadModerJrrr�applicationKeypadMode'sz$TerminalBuffer.applicationKeypadModecCs
d|_dS)NZnumr�rJrrr�numericKeypadMode+sz TerminalBuffer.numericKeypadModecCs||j|<dSr)�charsets)rZcharSetZwhichrrr�selectCharacterSet/sz!TerminalBuffer.selectCharacterSetcCstj|_dSr)r
r<rRrJrrr�shiftIn3szTerminalBuffer.shiftIncCstj|_dSr)r
�G1rRrJrrr�shiftOut7szTerminalBuffer.shiftOutcs.�j�tj�_�j����fdd�}|�_dS)Ncs�|��`��_dSr�rNrR�rP��fZoldActiveCharsetrrrrN?sz3TerminalBuffer.singleShift2.<locals>.insertAtCursor)rRr
�G2rN�rrNrr�r�singleShift2;s
zTerminalBuffer.singleShift2cs.�j�tj�_�j����fdd�}|�_dS)Ncs�|��`��_dSrr�r�r�rrrNJsz3TerminalBuffer.singleShift3.<locals>.insertAtCursor)rRr
�G3rNr�rr�r�singleShift3Fs
zTerminalBuffer.singleShift3c	Gs(|D�]}|tjkr*ddddttd�|_q|tjkr@d|jd<q|tjkrVd|jd<q|tjkrld|jd<q|tjkr�d|jd<qzt	|�}Wn&t
k
r�t�dt
|��YqXt|kr�ttkr�nn|t|jd	<qt|kr�ttk�rnn|t|jd
<qt�dt
|��qdS)NF�rrrrrrTrrrrz%Unknown graphic rendition attribute: rr)r
ZNORMALr0r2rSr,r-r.r/�int�
ValueErrorr�msg�reprr1�N_COLORSr3)rZ
attributes�ar&rrr�selectGraphicRenditionQs4

�




z%TerminalBuffer.selectGraphicRenditioncCs|�|j�|j|j<dSr)rfrYrErGrJrrr�	eraseLineqszTerminalBuffer.eraseLinecCs,|j|j}|�|�|j|j|jd�<dSr)rYrFrfrErGrerrr�eraseToLineEnduszTerminalBuffer.eraseToLineEndcCs*|�|jd�|j|jd|jd�<dSrp)rfrFrErGrJrrr�eraseToLineBeginningzsz#TerminalBuffer.eraseToLineBeginningcs�fdd�t�j�D��_dS)Ncsg|]}���j��qSr�rfrYr`rJrrrcsz/TerminalBuffer.eraseDisplay.<locals>.<listcomp>)rdrgrErJrrJr�eraseDisplay~szTerminalBuffer.eraseDisplaycsB����j�jd}�fdd�t|�D��j�jdd�<dS)Nr"csg|]}���j��qSrr�r`rJrrrc�sz4TerminalBuffer.eraseToDisplayEnd.<locals>.<listcomp>)r�rgrGrdrE)rrgrrJr�eraseToDisplayEnd�sz TerminalBuffer.eraseToDisplayEndcs0����fdd�t�j�D��jd�j�<dS)Ncsg|]}���j��qSrr�r`rJrrrc�sz:TerminalBuffer.eraseToDisplayBeginning.<locals>.<listcomp>)r�rdrGrErJrrJr�eraseToDisplayBeginning�sz&TerminalBuffer.eraseToDisplayBeginningcCsD|j|j|j|j|�=|j|j�|�t|j|j|���dSr)rErGrF�extendrfrqrYrmrrr�deleteCharacter�szTerminalBuffer.deleteCharactercs6�fdd�t|�D��j�j�j�<�j�jd�=dS)Ncsg|]}���j��qSrr�r`rJrrrc�sz-TerminalBuffer.insertLine.<locals>.<listcomp>)rdrErGrgrmrrJr�
insertLine�s$zTerminalBuffer.insertLinecs6�j�j�j|�=�j��fdd�t|�D��dS)Ncsg|]}���j��qSrr�r`rJrrrc�sz-TerminalBuffer.deleteLine.<locals>.<listcomp>)rErGr�rdrmrrJr�
deleteLine�szTerminalBuffer.deleteLinecCs|j|jfSrrurJrrr�reportCursorPosition�sz#TerminalBuffer.reportCursorPositioncCs�t�dd�|_d|_|_i|_i|_|�tjjtjj	g�d|_
tj|_ddddt
td�|_tjtjtjtjtjtjtjtji|_|��dS)Nrr�Fr�)r
ZVectorryrFrGr[r�r�Z	AUTO_WRAPZCURSOR_MODEZ
numericKeypadr<rRr0r2rSZCS_USr�r�ZCS_ALTERNATEr�ZCS_ALTERNATE_SPECIALr�r�rJrrrrI�s4
���zTerminalBuffer.resetcCstdt|��dS)NzCould not handle)�printr�)r�bufrrr�unhandledControlSequence�sz'TerminalBuffer.unhandledControlSequencecCsrg}|jD]\}g}d}|D]2\}}||jk	r@|�|�t|�}q|�|j�q|�d�|d|���q
d�|�S)Nr�rL)rEr_r+�len�fillr4)rrE�Lr�Zlengthr^�attrrrr�	__bytes__�s



zTerminalBuffer.__bytes__N)r")r")r")r")r")r")r")<r8r9r:r;ZkeyIDZ	execBytes�decodeZexecStr�execZTABZ	BACKSPACErYrgr��objectr_rHrKrQrTrNrfrVrjrorrrsrtrxrzr{r|rZr~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rIr�r�rrrrr>jsn





 


r>c@seZdZdS)�ExpectationTimeoutN)r8r9r:rrrrr��sr�c@sFeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zde	fd
d�Z
dS)�ExpectableBufferrcCst�|�g|_dSr)r>rK�
_expectingrJrrrrK�s
zExpectableBuffer.connectionMadecCst�||�|��dSr)r>rQ�_checkExpected)rrOrrrrQ�szExpectableBuffer.writecCst�|�d|_dSrk)r>rz�_markrJrrrrz�s
zExpectableBuffer.cursorHomecCs|�t��|��dSr)Zerrbackr�r�)r�drrr�_timeoutExpected�sz!ExpectableBuffer._timeoutExpectedcCs�|��|jd�}|jr�|jd\}}}|r>|��s>|jd=q|�|�D]H}|rX|��|jd=|j|��7_||��d�}|�|�qqHdSqdSrk)r�r�r�Zactive�finditerZcancel�end�callback)r�s�expr�timerZdeferred�matchrrrr��s
zExpectableBuffer._checkExpectedNcCsDt��}d}|r |�||j|�}|j�t�|�||f�|��|Sr)	rZDeferredZ	callLaterr�r�r+�re�compiler�)rZ
expressionZtimeoutZ	schedulerr�r�rrr�expect�szExpectableBuffer.expect)r8r9r:r�rKrQrzr�r�rr�rrrrr��sr�)-r;Z
__future__rr�rWZzope.interfacerZincrementalrZtwisted.internetrrrZtwisted.pythonrr	Ztwisted.python.compatr
Ztwisted.python.deprecaterrZtwisted.conch.insultsr
r1r3rdr2ZREDZGREENZYELLOWZBLUEZMAGENTAZCYANr0r�Z_FormattingStateMixinrr=ZITerminalTransportZProtocolr>�	Exceptionr�r��__all__rrrr�<module>s<@�	c4�