Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
vterm.cpython-313.pyc532 linesDownload Raw Back to __pycache__
1�

2��j����L�%SSKJr SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK3r4SSKrSSKrSSK
r
SSKrSSKrSSKJr SSKJr SSKJr SSKJrJr SSKJr SSKJrJr SS	KJrJ r  SS5K!J"r"J#r# SSK$J%r%J&r&J'r' \RP(aSS
K)J*r*J+r+J,r,J-r- SSK.J/r/ Sr0\1"S5r2Sr30SS_S\1"S5_SS_S\2_S\2S3_S\2S3_S\2S3_S\2S 3_S!\2S"3_S#\2S$3_S%\2S&3_S'\2S(3_S)\2S*3_S+\2S,3_S-\2S.3_S/\2S03_S1\2S23_\2S33\2S43\2S53\2S63\2S73\2S83\2S93\2S:3\2S;3\2S<3\2S=3S>.Er4\2S?3\2S@3\2SA3\2SB3\2SC3\2SD3\2SE3\2SF3\2SG3SH.	r5"SISJ\Rl5r7"SKSL\Rl5r80SM\8"SSSN5_SO\8"SSSP5_SQ\8"SSSR5_SS\8"SSST5_SU\8"SSSV5_SW\8"SSSX5_SY\8"SSSZ5_S[\8"SSS\5_S]\8"S^SS_5_S`\8"SSSa5_Sb\8"SSSc5_Sd\8"SSSe5_Sf\8"SSSg5_Sh\8"SSSi5_Sj\8"SSSk5_Sl\7"SmSS5_Sn\8"SSSo5_\8"SSSp5\7"SmSQ5\7"SmS]5\8"SSSq5\8"SSSr5\8"SSSs5\8"SSSt5\8"SSSu5\8"SSSv5\8"S^SSw5\8"SSSx5\8"SSSy5\7"SmS[5Sz.
Er9S{\:S|'Sr;S}\:S~'S^r<S\:S�'\"S�S�S�9"S�S�55r="S�S�5r>"S�S�\5r?"S�S�\#5r@g)��)�annotationsN)�deque)�suppress)�	dataclass)�6event_loop�util)�Canvas)�AttrSpec�RealTerminal)�ALT_DEC_SPECIAL_CHARS�DEC_SPECIAL_CHARS)�Sizing�Widget�)�
_BASIC_COLORS�_color_desc_256�_color_desc_true)�Callable�Iterable�Mapping�Sequence)�Literal����enter�
�	backspace��tab�	�esc�upz[A�downz[B�rightz[C�leftz[D�homez[1~�insertz[2~�deletez[3~�endz[4~�page upz[5~�	page downz[6~�begin pastez[200~�	end pastez[201~�f1z[[Az[[Bz[[Cz[[Dz[[Ez[17~z[18~z[19~z[20~z[21~z[23~z[24~)�f2�f3�f4�f5�f6�f7�f8�f9�f10�f11�f12�OA�OB�OC�OD�OP�OQ�OR�OSz[15~)	r#r$r%r&r/r0r1r2r3c�*�\rSrSr%S\S'S\S'Srg)�CSIAlias�g�str�7alias_mark�bytes�alias�N��__name__�8__module__�__qualname__�__firstlineno__�__annotations__�__static_attributes__rJr�QD:\code\apps\devtools\python\user_packages\Python313\site-packages\urwid/vterm.pyrDrDgs���O��LrrDc�4�\rSrSr%S\S'S\S'S\S'Srg)	�9CSICommand�l�int�num_args�defaultz3Callable[[TermCanvas, list[int], bool], typing.Any]�callbackrJNrKrJrrRrTrTls���M�
�L�A�ArrT�@c�&�URUSS9$�Nr)�chars)�insert_chars��s�number�qs   rR�<lambda>rcz������V�A�Y��0Or�Ac�,�URSUS*SS9$�NrT)�relative��move_cursor�r`�rowsrbs   rRrcrc{s��a�m�m�A��Q��x�RV�m�.Wr�Bc�*�URSUSSS9$rgrirks   rRrcrc|s��a�m�m�A�t�A�w�QU�m�.Vr�Cc�*�URUSSSS9$rgri�r`�colsrbs   rRrcrc}s��a�m�m�D��G�Q�QU�m�.Vr�Dc�,�URUS*SSS9$rgrirqs   rRrcrc~s��a�m�m�T�!�W�H�a�RV�m�.Wr�Ec�*�URSUSSS9$�NrT��10relative_yrirks   rRrcrcs��a�m�m�A�t�A�w�SW�m�.Xr�Fc�,�URSUS*SS9$rwrirks   rRrcrc�s��a�m�m�A��Q��x�TX�m�.Yr�Gc�0�URUSS-11SSS9$)NrrTrxri)r`�colrbs   rRrcrc�s��Q�]�]�3�q�6�A�:�q�UY�]�-Zr�H�c�>�URUSS-12USS-135$)Nrrri)r`�x_yrbs   rRrcrc�s ��Q�]�]�3�q�6�A�:�s�1�v�PQ�z�-Rr�Jc�*�URUS5$�Nr)�csi_erase_display�r`�moderbs   rRrcrc����a�.A�.A�$�q�'�.Jr�Kc�*�URUS5$r�)�csi_erase_liner�s   rRrcrc�s��a�.>�.>�t�A�w�.Gr�Lc�&�URUSS9$�Nr)�lines)�insert_linesr_s   rRrcrc�rdr�Mc�&�URUSS9$r�)�remove_linesr_s   rRrcrc�rdr�Pc�&�URUSS9$r\)�remove_charsr_s   rRrcrc�rdr�Xc��URURURSUS-S-14URS45$�Nrr)�erase�term_cursorr_s   rRrcrc�s=��Q�W�W�Q�]�]�Q�]�]�1�5E��q�	�5Q�TU�5U�WX�Wd�Wd�ef�Wg�4h�ir�arI�cc�$�URU5$�N)�csi_get_device_attributes�r`�nonerbs   rRrcrc�s��a�.I�.I�!�.Lrc�0�URSUSS-15SS9$)NrrT)�16relative_xri)r`�rowrbs   rRrcrc�s��Q�]�]�1�c�!�f�q�j�UY�]�-Zrc�*�URUS5$r�)�csi_clear_tabstopr�s   rRrcrc�r�rc�$�URX5$r���
csi_set_modes�r`�modesrbs   rRrcrc�s
��q���u�/Hrc�"�URXSS9$)NT��resetr�r�s   rRrcrc�s��q���u�t��/Trc�$�URU5$r�)�csi_set_attr)r`�attrsrbs   rRrcrc�s
��q�~�~�e�/Drc�*�URUS5$r�)�csi_status_reportr�s   rRrcrc�r�rc�*�URUS5$r�)�csi_set_keyboard_ledsr�s   rRrcrc�s��a�.E�.E�d�1�g�.Nrc�2�URUSUS5$r�)�csi_set_scroll)r`�t_brbs   rRrcrc�s��Q�-=�-=�c�!�f�c�!�f�-Mrc�"�UR5$r�)�save_cursorr�s   rRrcrc�s17��a�m�m�orc�"�UR5$r�)�restore_cursorr�s   rRrcrc�s
��a�.>�.>�.@r)
�d�e�f�g�h�l�m�n�q�r�s�u�`z"dict[bytes, CSIAlias | CSICommand]�CSI_COMMANDSz18Literal[1]�CHARSET_DEFAULTz19Literal[2]�CHARSET_UTF8TF)�eq�orderc��\rSrSr%SrS\S'SrS\S'SrS\S'SrS\S'Sr	S\S'Sr20S\S	'S21rS\S'S22rS\S'Sr
S\S
'\rS\S'SSjrSrg)�	TermModes�F�bool�display_ctrlr(�lfnl�keys_decckm�
reverse_video�constrain_scrollingT�autowrap�visible_cursor�bracketed_pastez
Literal[1, 2]�main_charsetc��SUlSUlSUlSUlSUlSUlSUlSUl[Ul	g)NFT)23r�r(r�r�r�r�r�r�r�r���selfs rRr��TermModes.reset�sK��!��������	�!���"���#(�� ���
�"���,��r)	r�r�r�r(r�r�r�r�r�N��return�None)rLrMrNrOr�rPr(r�r�r�r�r�r�r�r�r�r�rQrJrrRr�r��sr���L�$���F�D���D�$���K����M�4�� %���%��H�d���N�D��!�O�T�!�#2�L�-�1�,rr�c�n�\rSrSr%SrSSSSS.rS\S'SS	jrSS24jrSSjr	SSjr25SS
jrSSjrSr
g)�TermCharset��)�_g�_sgr_mapping�active�currentN�0�U)rX�vt100�ibmpc�userz&typing.ClassVar[dict[str, str | None]]�MAPPINGc�b�SS/UlSUlSUlSUlUR	S5 g)NrXr�Fr)r�r�r�r��activater�s rR�__init__�TermCharset.__init__�s7����26���27"������#'����
�
�a�rc�R�X RU'URURS9 g)z!28Redefine G'g' with new mapping.29��gN)r�r�r�)r�r��charsets   rR�define�TermCharset.define�s!������30��
�
����
�$rc�l�XlURRURUS5Ulg)z"31Activate the given charset slot.32N)r�r��getr�r�)r�r�s  rRr��TermCharset.activate�s)�����|�|�'�'�����33�D�9��rc��SUlg)z134Set graphics rendition mapping to IBM PC CP437.35TN)r�r�s rR�
set_sgr_ibmpc�TermCharset.set_sgr_ibmpc�s��!��rc�D�SUlURURS9 g)z336Reset graphics rendition mapping to IBM PC CP437.37Fr�N)r�r�r�r�s rR�reset_sgr_ibmpc�TermCharset.reset_sgr_ibmpc�s��"����
�
����
�$rc��UR(dURURS:XaS[R"URS55=nS:�aSUl[URS5$SUlU$U$)Nr��cp437rr�r�)	r�r�r�r
�find�decoder�r�encode)r��char�dec_poss   rR�
apply_mapping�TermCharset.apply_mapping�sn����������� 4�� ?�,�1�1�$�+�+�g�2F�G�G��A�M�"���,�W�5�<�<�W�E�E��D�L��K��rr�)r�rVr�rFr�r�)r�rVr�r�)r38rHr�rH)rLrMrNrO�	__slots__r�rPr�r�r�rrrrQrJrrRr�r��sB��;�I�����	7�G�
3���%�:�!�%�	rr�c�b^�\rSrSrSrS>U4SjjrS?S@SjjrSASjrSBSCSjjrSASjr	SDSESjjr39SFSGS	jjrSHSIS40jjrSJSKSjjr
SJSLSjjrSMS
jrSNSjrSOSjrSPSjrSQSOSjjrSRSjrSPSjrSASjrSSSjrSTSjrSUSjrS?SVSjjrSDSWSjjrSDSXSjjrSASjrSASjrSYSZSjjrS[Sjr SHS\Sjjr!SDS]S jjr"SDS]S!jjr#S^S_S"jjr$SDSXS#jjr%SAS$jr&S`S%jr'SaSbS&jjr(ScSdS'jjr)ScSeS(jjr*ScSeS)jjr+SfS*jr,SgS+jr-ShS,jr.SDSiS-jjr/SDSjS.jjr0SkS/jr1SDSlS0jjr2SmSnS1jjr3SoSpS2jjr4SqS3jr5SrS4jr6SsS5jr7SsS6jr8SoStS7jjr9SHSuS8jjr:SvS9jr;SvS:jr<SwSxS;jjr=SyS<jr>S=r?U=r@$)z�41TermCanvasiFc��>�[TU]5 XsUlUlX0lUR42UlSUl[SS9Ul	SUl43SUl[5Ul
SUlSURS'SUlSUlSUlSUl[)5UlSUlSUlSUlSUlURS	-44Ul/Ul/UlUR;5 g)45NFi')�maxlenrr)rrN�cursor�rrr)�superr��width�height�widget�46term_modesr��	has_focusr�scrollback_buffer�scrolling_up�utf8_eat_bytes�	bytearray�utf8_buffer�escbuf�coordsr��
within_escape�47parsestate�attrspecr�r��saved_cursor�saved_attrs�is_rotten_cursor�scrollregion_start�scrollregion_end�tabstops�termr�)r�rrr�	__class__s    �rRr��TermCanvas.__init__s����
����"'���48�D�K��� &� 1� 1��49����Y^�fk�Yl������*.���$�;������ ,����H��,2���"������)-��
�"�}���48���GK��� %���"#��� $���a����#%��
�KM��	��50�51�rc�D�UcURSnUcURSnURX5UlUR(aNURR(a3UR52URU-53:aXUR54-4UlgSUlg)z55Set terminal cursor to x/y and update canvas cursor. If one or both axes56are omitted, use the values of the current position.57Nrr)r��constrain_coordsrr�r�rrr)r��x�ys   rR�set_term_cursor�TermCanvas.set_term_cursor.s���58
�9�� � ��#�A��9�� � ��#�A��0�0��6����>�>�d�j�j�7�7�D�<M�<M�PT�P[�P[�^_�P_�<_��$�"3�"3�3�4�D�K��D�Krc�:�SUlURS-59Ulg)z/60Reset scrolling region to full terminal size.61rrN)r(rr)r�s rR�reset_scroll�TermCanvas.reset_scroll?s��#$��� $���a���rc�J�U(aSUlUR5 gUcURS-nU(dU*n[UR5nU=RU-
slURU:�aX@lOURS:aSUlUR5 g)z�62Scroll the scrolling buffer up (up=True) or down (up=False) the given63amount of lines or half the screen height.64 65If just 'reset' is True, set the scrollbuffer view to the current66terminal content.67rNr�)rr2r�lenr)r�r#r�r��	maxscrolls     rR�
scroll_buffer�TermCanvas.scroll_bufferFs���� !�D��� � �"���=��K�K�1�$�E���F�E���.�.�/�	����U�"�����y�(� )��
�
�
��
"� !�D�����rc��SUlSUlSUlSUl[	5UlSUlSUlSUlUR5 UR5 URR5 UR5 g)z68Reset the terminal.69rFrN)r r"r#r$r�r�r%r&r'r5�
init_tabstopsr�r��clearr�s rRr��TermCanvas.resetcsw�����"��������
�"�}��� ������ %�����������	
�70�71����	
�72�73�rc��[URS5up#US:�aUS-
nU(aQ[UR5U:a7URR	S5 [UR5U:aM6ggS/U-Ulg)N�rr)�divmodrr8r*�append)r��extend�tablen�mods    rRr=�TermCanvas.init_tabstops}sm���T�Z�Z��+�����7��a�K�F���d�m�m�$�v�-��
�
�$�$�V�,��d�m�m�$�v�-�$�H�v�-�D�Mrc�6�U(a5[[UR55HnSURU'M gUcURSn[	US5upVU(aURU==SU-)-ss'gURU==SU--ss'g�NrrAr)�ranger8r*r�rB)r�r0�remover>r �divrFs       rR�set_tabstop�TermCanvas.set_tabstop�s�����S����/�0��%&��
�
�c�"�1���9�� � ��#�A��!�Q�<�����M�M�#��A��H�+�-���M�M�#��!�s�(�*�rc�r�UcURSn[US5up#URUSU--S:�$rI)r�rBr*)r�r0rLrFs    rR�74is_tabstop�TermCanvas.is_tabstop�sA���9�� � ��#�A��!�Q�<����
�
�c�"�a�3�h�/�1�4�4rc�@�URU5/UR-$r�)�75empty_charr�r�r76s  rR�77empty_line�TermCanvas.empty_line�s������%�&����3�3rc�H�URURRU4$r�)r$r�r�rTs  rRrS�TermCanvas.empty_char�s���
�
�t�|�|�3�3�T�:�:rc�z�URS::dURS::agUHnURU5 M gr�)rr�addbyte)r��data�bytes   rR�addstr�TermCanvas.addstr�s1���:�:��?�d�k�k�Q�.���D��L�L���rc���URup4XR:�aR[UR5H8nURU==UR5/XR-78--
ss'M: OJXR:a;[UR5H"nURUSUURU'M$ XlX R:�a�[URU5H~nURR5nUR[U5-79=nS:�aX`R5/U--
nOUSURnURRSU5 M� O_X R:aP[X R5H7nURRURRS55 M9 X lUR5 URX45up4UR!X45 UR#SS9 g![aC URRUR55 U=RS-
slGMxf=f)z480Resize the terminal to the given width and height.81NrrT)rD)r�rrJrr+rSr�pop�82IndexErrorrCrUr)r8r(r5r/r2r=)r�rrr0r1�_y�	last_line�paddings        rR�resize�TermCanvas.resize�s���������:�:���4�;�;�'���	�	�!�����!2� 3�u�z�z�7I� J�J��(�
�Z�Z�
��4�;�;�'��#�y�y��|�F�U�3��	�	�!��(��83��K�K���D�K�K��0��� $� 6� 6� :� :� <�I� $�z�z�C�	�N�:�:�G�a�?��/�/�"3�!4�w�!>�>�I� )�,�D�J�J� 7�I��	�	� � ��I�.�1� �k�k�
!��F�K�K�0���&�&�-�-�d�i�i�m�m�A�.>�?�1��������$�$�Q�*������Q�"�	
���$��'��5"���I�I�$�$�T�_�_�%6�7��)�)�Q�.�)��	�s�)H�AI�Ic���URR[:wagUS:XaSnOSnUS:XaSnOUS:XaSnOUS	:XaS84nOSnURR	X45 g)z685Set G0 or G1 according to 'char' and modifier 'mod'.86N�(rr�0r��Ur�r�r�rX)r�r�r�r�r�)r�r87rFr��csets     rR�set_g01�TermCanvas.set_g01�se���:�:�"�"�o�5���$�;��A��A��4�<��D�
�T�\��D�
�T�\��D��D������A�$rc��URRS5n/nURU(aSOSSRS5H n[U5nURU5 M" [U=nb�[U[5(a[URnOC[U[5(aUnO+USS:Xa[[U6RnO[U6nUup�n88[U5U:a"URU	5 [U5U:aM"[[U55HnX;b89X;S:XdMX�U'M [[5 U90"XU5 SSS5 gg![a SnGN#f=f!,(df   g=f)z<91Parse ECMA-48 CSI (Control Sequence Introducer) sequences.92�?rrN�;rI)r �93startswith�splitrV�94ValueErrorrCr��95isinstancerDrIrTr8rJr)r�r96�qmarkr �arg�num�cmd_�csi_cmd�number_of_args�
default_value�cmd�is            rR�	parse_csi�TermCanvas.parse_csi�sb�����&�&�t�,�����;�;�E�q�q�2�3�9�9�$�?�C�
��#�h��
�M�M�#��
@�!��&�&�D�3��$��)�)�&2�4�:�:�&>���D�*�-�-����a��G�#�&�x���'<�'<�=��$�d�+��18�.�N�3��f�+��.��
�
�m�,��f�+��.��3�v�;�'���9�$��	�Q�� -�1�I�(��*�%��D�%�(�&�%�#4���
���
��,&�%�s�	E(�97E;�(E8�7E8�;98F	c�z�US:XaUS:XaUR5 gUS:Xa9US:Xa[URlgUS;a[URlggUS;aURX5 gUS:XaUR
SS	9 gUS99:XaUR
5 gUS:XaUR5 gUS:XaUR5 gUS
:XaUR5 gUS:Xa#URR[S35 gUS:XaURSS9 gUS:XaURSS9 gg)z+100Parse escape sequences which are not CSI.101�#�8�%rZsG8>rh�)r�T��reversersr�rur�Z�[?6c�7)�102with_attrsN)�decalnr�r�r�r�rl�linefeedr��newlinerMr�respond�ESCr�r�)r�r103rFs   rR�parse_noncsi�TermCanvas.parse_noncsis���$�;�4�4�<��K�K�M�
�D�[��t�|�*9��104�105�'����*6��106�107�'���L�
 ��L�L��#�
�T�\��M�M�$�M�'�
�T�\��M�M�O�
�T�\��J�J�L�
�T�\��L�L�N�
�T�\�����
�T�\��K�K���3�%�t��-�
�T�\������-�
�T�\����4��0�rc��URS5(a<URRUR5R	S5S5 gg)z!108Parse operating system command.109)rps0;s2;�;r�N)rqr�	set_titler�	partition)r��bufs  rR�	parse_osc�TermCanvas.parse_osc9sA���>�>�.�/�/��K�K�!�!�#�*�*�,�"8�"8��"=�a�"@�A�0rc���URS:XaYU[;aURU5 SUlGO+US;dUR(dUS:XaU=RU-
slgGO�URS:XaUS:XaSUlSUlgURS:Xa2US:Xa,UR	URRS	55 GO�URS:Xa[URS110SU-[S3RS5:Xa/UR	URSS111RS	55 GO$URS:Xa:URRS
5(a[UR5S:XaO�URS:XaUR(dUS:XaO�URS:XaU=RU-
slgURS:XaUS:XaSUlSUlgURS:XaUS;aXlSUlgURS:XaURXR5 OUS;aURU5 UR5 g)Nrrs0123456789;ro�]rr��ri������\z	iso8859-1r�rA�R�[>r�r�rhr��>112r�r��=�>rsrurr�r�r�)r#r�r~r r��lstripr�r	rqr8r��leave_escaperTs  rR�parse_escape�TermCanvas.parse_escapeAs����?�?�a���|�#����t�$�"#�����'����������t�#����
�_�_��
!�d�d�l��D�K��D�O��
�_�_��
!�d�e�m��N�N�4�;�;�-�-�d�3�4�
�_�_��
!�d�k�k�"�#�&6��&=�C�5���AR�AR�S^�A_�&_��N�N�4�;�;�s��+�2�2�4�8�9�
�_�_��
!�d�k�k�&<�&<�T�&B�&B�s�4�;�;�GW�[\�G\��
�_�_��
!�$�+�+�$�$�,��
�_�_��
!��K�K�4��K��
�_�_��
!�d�d�l��D�K��D�O��
�_�_��
!�d�.F�&F��K��D�O��
�_�_��
!����d�K�K�0�
�Q�
Q����d�#����rc�.�SUlSUlSUlg)NFrr)r"r#r r�s rRr��TermCanvas.leave_escapeos��"��������rc�J�SnUS-(aUS-nUS-
nUS-(aMU$)z�113Process startbyte and return the number of bytes following it to get a114valid UTF-8 multibyte sequence.115 116bytenum -- an integer ordinal117r�@rrJ)r��bytenum�lengths   rR�get_utf8_len�TermCanvas.get_utf8_lents4������n���M�G��a�K�F���n�n��
rc��URR[:Xd[R"5S:Xa�US:�a(URU5Ul[U/5UlgSUs=::aS:a�O O�URb�URS:�a1U=RS-slURRU5 gSUlUR[U/5-RSS5=n(a&UR[R"5S5nO!gSUl[U/5nO[U/5nURU5 g)	zm118Parse main charset and add the processed byte(s) to the terminal state119machine.120 121byte -- an integer ordinal122�utf8��N�r�utf-8�ignore�replace)r�r�r�r�get_encodingr�rrrrCrHrr	�process_char)r�r\�sequencer123s    rRrZ�TermCanvas.addbyte�s���:�:�"�"�l�2�d�6G�6G�6I�V�6S��t�|�&*�&7�&7��&=��#�#,�d�V�#4�� ���t�"�d�"�t�':�':�'F��&�&��*��'�'�1�,�'��$�$�+�+�D�1��'+��#� $� 0� 0�5�$��=� @�H�H��RZ�[�[�8�[�#�?�?�4�+<�+<�+>�	�J�D��&*��#��d�V�}���$��=�D����$�rc�X�URup#[U[5(aURSS5nURR124nU[:XaURS:waSUlgU(dUS:XaUR5 gU(d"US:XaURRS5 gU(d"US:XaURRS5 gU(dCUS	;a=UR5 URR(aUR5 ggU(dUS125:XaUR5 gU(d#US:XaUS:�aURUS-126U5 ggU(d1US:Xa+URS:waUR R#5 gU(dUS
;aUR%5 gU(dUS;agUR(aUR'U5 gU(dUS:XaSUlSUlSUlgUR+U5 g)zM127Process a single character (single- and multi-byte).128 129char -- a byte string130r�littler�T�
�r�s131�	�r�ss��rN)r�rtrV�to_bytesr�r��ESC_Br#r"�carriage_returnr�r�r�r�r r2r�beepr�r�r �push_cursor)r�r132r0r1�dcs     rRr��TermCanvas.process_char�s���������d�C� � ��=�=��H�-�D�
�Z�Z�
$�
$���5�=�T�_�_��1�!%�D�����
�� � �"������L�L�!�!�!�$������L�L�!�!�!�$���	�)��M�M�O��z�z����$�$�&�����
��H�H�J����
��1�u��$�$�Q��U�A�.�����
�$�/�/�Q�*>�
�K�K�������+��������+��
�
�
����d�#�����!%�D���D�K��D�O����T�"rc���UcURSnUcURSnURX#5up#URURRU4UR133UU'g)zf134Set character of either the current cursor position135or a position given by 'x' and/or 'y' to 'char'.136Nrr)r�r/r$r�r�r+�r�r137r0r1s    rR�set_char�TermCanvas.set_char�sf��138
�9�� � ��#�A��9�� � ��#�A��$�$�Q�*����=�=�$�,�,�*>�*>��E��	�	�!��Q�rc�d�XR:�aURS-139nOUS:aSnURR(aCU(d<X R:�aURnX4$X R:aURnX4$X R140:�aUR141S-142nX4$US:aSnX4$)z�143Checks if x/y are within the terminal and returns the corrected version.144If 'ignore_scrolling' is set, constrain within the full size of the145screen and not within scrolling region.146rr)rr�r�r)r(r)r�r0r1�ignore_scrollings    rRr/�TermCanvas.constrain_coords�s���
�147�148�?��149�150�Q��A�
��U��A��:�:�)�)�2B��(�(�(��)�)���t���,�,�,��+�+���t���K�K���K�K�!�O���t���Q�����t�rc�h�URup#U(a@USs=::aUR:aO OOqX0R:XaURSS9 ORUS-nOLX0RS-151s=:�aUR:�aO OO%X0R:XaUR5 OUS-
nURX#5 g)z_152Move the cursor down (or up if reverse is True) one line but don't reset153horizontal position.154rTr�rN)r�r(�scrollrr)r2)r�r�r0r1s    rRr��TermCanvas.linefeed�s���155�������A�/��/�/�/���-�-�-����D��)��Q����K�K�!�O�;�d�&;�&;�;���+�+�+����
��Q������Q�"rc�B�URSURS5 gr�)r2r�r�s rRr��TermCanvas.carriage_returns�����Q�� 0� 0�� 3�4rc�D�UR5 UR5 g)z/156Do a carriage return followed by a line feed.157N)r�r�r�s rRr��TermCanvas.newlines��	
�����
�
�rc���U(aS=pCU(aXRS-
nU(aX RS-
nO)URR(aX R-
nUR	X5 g)z�158Move cursor to position x/y while constraining terminal sizes.159If 'relative' is True, x/y is relative to the current cursor160position. 'relative_x' and 'relative_y' is the same but just with161the corresponding axis.162TrrN)r�r�r�r(r2)r�r0r1r�ryrhs      rRrj�TermCanvas.move_cursorsd���&*�*�J��
�!�!�!�$�$�A��
�!�!�!�$�$�A�
�Z�Z�
+�
+�
�(�(�(�A����Q�"rc���UbWURRU5nURR(aUR	US9 OURU5 UR
X#5 g)zC163Push one character to current position and advance cursor to x/y.164N)r165)r�rr�r(r^r�r2r�s    rR�	push_char�TermCanvas.push_char9sV�����<�<�-�-�d�3�D��z�z� � ��!�!�t�!�,��
�
�d�#����Q�"rc�$�URup#URR(a�US-UR:�a+UR(dSUlURXU5 gUS-
nX R:�aJUR(a9X0R:�aUR5 OUS-
nSnURSU5 URXU5 SUlgUS-UR:aUS-
nSUlURXU5 g)z}166Move cursor one character forward wrapping lines as needed.167If 'char' is given, put the character into the former position.168rTrFN)	r�r�r�rr'r�r)r�r2r�s    rRr��TermCanvas.push_cursorFs���169������:�:����1�u��170�171�"�4�+@�+@�)-��%����t��*��Q����172�173�?�t�'<�'<��1�1�1����
��Q����A��(�(��A�.����t��*�(-��%��1�u�t�z�z�!��Q���$)�D�!��N�N�4�A�&rc���[UR5UlU(aF[R"UR5[R"UR17454Ulggr�)�tupler�r%�copyr$r�r&)r�r�s  rRr��TermCanvas.save_cursorksD��!�$�"2�"2�3���� $�	�	�$�-�-� 8�$�)�)�D�L�L�:Q�R�D��rc�,�URcgURup#URX#5 U(a`URbR[R"URS5[R"URS5sUlUlgggr�)r%r2r&r�r$r�)r�r�r0r1s    rRr��TermCanvas.restore_cursorps{�����$��� � ������Q�"��$�*�*�6�+/�9�9�T�5E�5E�a�5H�+I�4�9�9�UY�Ue�Ue�fg�Uh�Ki�'�D�M�4�<�7�:rc���URup#X RS-175:aAURS5 US-
nURU5(aOX RS-176:aMASUlURX#5 g)zO177Moves cursor to the next 'tabstop' filling everything in between178with spaces.179r� FN)r�rr�rPr'r2)r��tabstopr0r1s    rRr �TermCanvas.tabzsn��180������*�*�q�.� ��M�M�$��
��F�A����q�!�!���*�*�q�.� �!&������Q�"rc��U(aZURRUR5 URRURUR55 gURRUR5nURRU5 URRURUR55 g)z�181Append a new line at the bottom and put the topmost line into the182scrollback buffer.183 184If reverse is True, do exactly the opposite, but don't save into185scrollback buffer.186N)r+r`r)r(r(rUrrC)r�r��killeds   rRr��TermCanvas.scroll�s�����I�I�M�M�$�/�/�0��I�I���T�4�4�d�o�o�6G�H��Y�Y�]�]�4�#:�#:�;�F��"�"�)�)�&�1��I�I���T�2�2�D�O�O�4E�Frc�x�[UR5H!nURS5URU'M# g)z2187DEC screen alignment test: Fill screen with E's.188ruN)rJrrUr+�r�r�s  rRr��TermCanvas.decaln�s-������%�C�!�_�_�T�2�D�I�I�c�N�&rc�>�UR5URU'g)zJ189Blank a single line at the specified row, without modifying other lines.190N)rUr+r�s  rR�191blank_line�TermCanvas.blank_line�s�����*��	�	�#�rc�F�UcURnUS:XaSnUcUR5nO#URURRU4nUupVUS:�aIUR192UR
XT5 UR193UR5 US-nUS:�aMHgg)z�194Insert 'chars' number of either empty characters - or those specified by195'char' - before 'position' (or the current position if not specified)196pushing subsequent characters of the line to the right without wrapping.197Nrr)r�rSr$r�r�r+r(r`)r��positionr]r198�	char_specr0r1s       rRr^�TermCanvas.insert_chars�s������'�'�H��A�:��E��<����)�I�������(<�(<�d�C�I�����a�i��I�I�a�L����-��I�I�a�L�����Q�J�E��a�irc���UcURnUS:XaSnUup4US:�aXURURU5 URURUR	55 US-nUS:�aMWgg)z�199Remove 'chars' number of empty characters from 'position' (or the current200position if not specified) pulling subsequent characters of the line to201the left without joining any subsequent lines.202Nrr)r�r+r`rCrS)r�r�r]r0r1s     rRr��TermCanvas.remove_chars�st�����'�'�H��A�:��E�����a�i��I�I�a�L���Q���I�I�a�L������ 1�2��Q�J�E��a�irc��UcURSnOURnUS:XaSnUS:�a\URRXR	55 URRUR5 US-nUS:�aM[gg)z�203Insert 'lines' of empty lines after the specified row, pushing all204subsequent lines to the bottom. If no 'row' is specified, the current205row is used.206Nrr)r�r(r+r(rUr`r)�r�r�r�s   rRr��TermCanvas.insert_lines�sx���;��"�"�1�%�C��)�)�C��A�:��E��a�i��I�I���S�/�/�"3�4��I�I�M�M�$�/�/�0��Q�J�E��a�irc��UcURSnOURnUS:XaSnUS:�a]URRU5 URR	UR207UR
55 US-nUS:�aM\gg)z�208Remove 'lines' number of lines at the specified row, pulling all209subsequent lines to the top. If no 'row' is specified, the current row210is used.211Nrr)r�r(r+r`r(r)rUr�s   rRr��TermCanvas.remove_lines�sz���;��"�"�1�%�C��)�)�C��A�:��E��a�i��I�I�M�M�#���I�I���T�2�2�D�O�O�4E�F��Q�J�E��a�irc��UR"U6up4UR"U6upVXF:Xa6[X5S-5H#nUR5URUU'M% gUnX�::a�X�:Xa=[X0R5H#nUR5URUU'M% OLX�:Xa6[US-5H#nUR5URUU'M% OURU5 US-
nX�::aM�gg)a212Erase a region of the terminal. The 'start' tuple (x, y) defines the213starting position of the erase, while end (x, y) the last position.214 215For example if the terminal size is 4x3, start=(1, 1) and end=(1, 2)216would erase the following region:217 218....219.XXX220XX..221rN)r/rJrSr+rr�)	r��startr*�sx�sy�ex�eyr0r1s	         rRr��TermCanvas.erase�s��� �&�&��.����&�&��,����8��2�A�v�&��#'�?�?�#4��	�	�"�
�a� �'��
���g��w��r�:�:�.�A�&*�o�o�&7�D�I�I�a�L��O�/����r�A�v��A�&*�o�o�&7�D�I�I�a�L��O�'�����"�
��F�A��grc� �SnUnU[U5:Ga|XnSUs=::aS::aO OUS-222n[SU5nGO>SUs=::aS::aO OUS-223n[SU5nGOSUs=::aS::aO OUS-224S	-n[SU5nGO�S225Us=::aS::aO OUS226-227S	-n[SU5nGO�US;a�US
-[U5:a0XS-S:Xa%XS
-n	[SU5nUS:XaU	nOU	nUS
-
nGO�US-[U5:a:XS-S
:Xa/XS
-S-XS-S	--XS--n	SnUS:XaU	nOU	nUS-
nGO9US:XaSnGO/US:XaSnGO%US:Xa,URR5 SURlO�US;a,URR
5 SURlO�US:XaURS5 O�US:XaURS5 O�US:XaURS5 OyUS:XaURS 5 OaUS!:XaURS5 OIUS":XaURS5 O1US#:XaURS 5 OUS:XaS=p#UR5 US-
nU[U5:aGM|SU;aUS:XaUbUS	:aUS	-
nS(S$jn228U229"X'5nU230"X75nU(aS%RU/[U5Q75nX�s=:XaS&:Xag U(a231[X�US'9$[X�5$))z�232Parse SGI sequence and return an AttrSpec representing the sequence233including all earlier sequences specified as 'fg', 'bg' and234'attributes'.235r��%��(�/�Z�arA�d�k>�&�0r�r��r
�r���'N�1�236F>��T�bold�	underline�blink��standout��rc�x�UcgUS:�dUS:Xa[U5$US:�dUS:Xa[U5$[U$)NrX��r�r)rrr)�color�colorss  rR�237_defaulter�.TermCanvas.sgi_to_attrspec.<locals>._defaulter�sE���}� ��s�{�f��o�'��.�.��r�z�V�s�]�&�u�-�-� ��'�'r�,rX)r#)r"�238int | Noner#rVr�rF)
r8�maxr�rr�r�r�add�discardr>�join�listr239)
r�r��fg�bg�240attributes�prev_colors�idxr#�attrr"r$�241decoded_fg�242decoded_bgs
             rR�sgi_to_attrspec�TermCanvas.sgi_to_attrspec%s�������C��J���:�D��T��R���B�Y���R�����t�!�r�!��B�Y���R�����t�!�r�!��B�Y��]���R������#��#��C�Z�!�^���R������!���7�S��Z�'�E��'�N�a�,?�!��'�N�E� ��f�-�F��r�z�"��"���1�H�C��1�W�s�5�z�)�e�!�G�n��.A�"��7�^�r�1�e�!�G�n��6I�J�U�YZ�SZ�^�[�E�"�F��r�z�"��"���1�H�C������������������,�,�.�*/��243�244�'���!����*�*�,�*.��245�246�'�������v�&�������{�+�������w�'�������z�*�����"�"�;�/�����"�"�7�+�����"�"�:�.�������� � �"��1�H�C�M�C��J��P�Z��F�b�L�R�^��Q���!�G�B�	(� ��+�247���+�248�����:�"A��Z�0@�"A�B�J��0�y�0��1���J�6�B�B��249�/�/rc��USS:XaSUl[5nURcS=p4O�SURR;aSnO;URRnUS:�aURRS:XaUS-nSURR250;aSnO;URRnUS:�aURRS:XaUS-nSH1n[URU5(dM URU5 M3 URXXBUR(aURROS5nURR(aURU5UlgX`lg)	z251Set graphics rendition.252r�rNrXrAr)rrrrr)
r$�set�253foreground�foreground_numberr#�254background�background_number�getattrr)r5r�r��reverse_attrspec)r�r�r/r-r.r2r$s       rRr��TermCanvas.csi_set_attr�s;����9��>� �D�M��U�255��=�=� ��N�B���D�M�M�4�4�4����]�]�4�4����7�t�}�}�3�3�r�9��!�G�B��D�M�M�4�4�4����]�]�4�4����7�t�}�}�3�3�r�9��!�G�B�B���t�}�}�d�3�3�����t�$�	C��'�'��2�[_�[h�[h�4�=�=�CW�CW�no�p���:�:�#�#� �1�1�(�;�D�M�$�Mrc��Uc[SS5nURRS5Vs/sHo3R5PM nnSU;a8U(a1UR	S5 URSR
U5S9nU$SU;a6U(d/URS5 URSR
U5S9nU$s snf)zL256Put standout mode to the 'attrspec' given and remove it if 'undo' is257True.258rXr&r)r-)r259r9rr�striprK�
copy_modifiedr+rC)r�r$�undor-r�s     rRr>�TermCanvas.reverse_attrspec�s���260���	�9�5�H�&.�&9�&9�&?�&?��&D�E�&D�����&D��E����4��L�L��$��-�-����%��-�A�H����u�
$�T��L�L��$��-�-����%��-�A�H����Fs�Cc���[UR5H]n[UR5HAnURUUnUR	USUS9nU/USSQ7URUU'MC M_ g)z@261Reverse video/scanmode (DECSCNM) by swapping fg and bg colors.262r�rCrN)rJrrr+r>)r�rCr1r0r263r�s      rRr��TermCanvas.reverse_video�ss���t�{�{�#�A��4�:�:�&���y�y��|�A����-�-�d�1�g�D�-�A��#(�"4�4���8�"4��	�	�!��Q��'�$rc��U(a�US:XaX RlgUS:XaUR5 gUS:Xa?URRU:waURU(+S9 X RlgUS:Xa#X RlURSS5 gUS:XaX RlgUS:Xa!X RlUR5 gUS	:XaX RlggUS:XaX Rl	gUS264:XaX Rl265gUS:XaX Rlgg)
z3266Helper method for csi_set_modes: set single mode.267rr�rrF�rrri�r�N)r�r�r>r�r�r2r�r�r�r�r(r�)r�r��flagrur�s     rR�set_mode�TermCanvas.set_mode�s�����q�y�)-�268�269�&�����270�271������:�:�+�+�t�3��&�&��H�&�5�+/�272�273�(����15�274�275�.��$�$�Q��*����&*�276�277�#����,0�278�279�)��$�$�&����-1�280�281�*���q�y�*.�282�283�'����$(�284�285�!����"&�286�287��rc�H�U(+nUHnURXTX#5 M g)zH288Set (DECSET/ECMA-48) or reset modes (DECRST/ECMA-48) if reset is True.289N)rL)r�r�rur�rKr�s      rRr��TermCanvas.csi_set_modess#���y���D��M�M�$�e�3�rc��U(dSnU(dURnXs=:aUR::aNO gURSUS-290SS9SUlURSUS-291SS9SUlUR	SS5 gg)z�292Set scrolling region, 'top' is the line number of first line in the293scrolling region. 'bottom' is the line number of bottom line. If both294are set to 0, the whole screen will be used (default).295rrT)r�N)rr/r(r)r2)r��top�bottoms   rRr��TermCanvas.csi_set_scrolls�����C���[�[�F��&�4�;�;�&�&*�&;�&;�A�s�Q�w�Y]�&;�&^�_`�&a�D�#�$(�$9�$9�!�V�a�Z�Z^�$9�$_�`a�$b�D�!�� � ��A�&�	'rc�\�US:XaURSS9 gUS:XaURSS9 gg)zK296Clear tabstop at current position or if 'mode' is 3, delete all297tabstops.298rT)rKr�)r>N)rM�r�r�s  rRr��TermCanvas.csi_clear_tabstops9��299�1�9����D��)�
�Q�Y����4��(�rc�X�U(d#URR[S35 gg)zb300Report device attributes (what are you?). In our case, we'll report301ourself as a VT102 terminal.302r�N)rr�r�)r�rus  rRr��$TermCanvas.csi_get_device_attributes's$��303��K�K���3�%�t��-�rc���US:Xa#URR[S35 g	US:Xa@URup#URR[SUS-SSUS-SS3-5 g	g	)304z�305Report various information about the terminal status.306Information is queried by 'mode', where possible values are:307    5 -> device status report308    6 -> cursor position report309rz[0nrI�[r�dr��RN)rr�r�r��r�r�r0r1s    rRr��TermCanvas.csi_status_report/sn���1�9��K�K���3�%�s��,�
�Q�Y��#�#�D�A��K�K�����!�a�%���!�A��E�!�9�A�&>� >�?�rc���URup#US:Xa,URURURS-310U45 gUS:XaURSU4X#45 gUS:XaURU5 gg)z�311Erase current line, modes are:312    0 -> erase from cursor to end of line.313    1 -> erase from start of line to cursor.314    2 -> erase whole line.315rrr�N)r�r�rr�r]s    rRr��TermCanvas.csi_erase_line=sl��������1�9��J�J�t�'�'�$�*�*�q�.�!�)<�=�
�Q�Y��J�J��1�v��v�&�
�Q�Y��O�O�A��rc�0�US:Xa8URURURS-316URS-31745 US:Xa2URSURSS-318URS45 gUS:XaUR	URS9 gg)z�319Erase display, modes are:320    0 -> erase from cursor to end of display.321    1 -> erase from start to cursor.322    2 -> erase the whole display.323rrrr�)rN)r�r�rrr>rUs  rRr��TermCanvas.csi_erase_displayMs����1�9��J�J�t�'�'�$�*�*�q�.�$�+�+��/�)J�K��1�9��J�J�v�� 0� 0�� 3�a� 7��9I�9I�!�9L�M�N�
�Q�Y��J�J�d�.�.�J�/�rc�X�SSSSS.nX;aURRX!5 gg)z�324Set keyboard LEDs, modes are:325    0 -> clear all LEDs326    1 -> set scroll lock LED327    2 -> set num lock LED328    3 -> set caps lock LED329 330This currently just emits a signal, so it can be processed by another331widget or the main application.332r>�scroll_lock�num_lock�	caps_lock)rrr�r�N)r�leds)r�r��statess   rRr�� TermCanvas.csi_set_keyboard_leds[s7������	333���>��K�K���V�\�*�rc���[UR5Vs/sHo R5PM snUlUcUR	SS5 gUR"U6 gs snf)zt334Clears the whole terminal screen and resets the cursor position335to (0, 0) or to the coordinates given by 'cursor'.336Nr)rJrrUr+r2)r�r�_s   rRr>�TermCanvas.clearpsS��33716�d�k�k�0B�C�0B�1�_�_�&�0B�C��	��>�� � ��A�&�� � �&�)��Ds�Ac��UR$r�)rr�s rRrr�TermCanvas.cols|s���z�z�rc��UR$r�)rr�s rRrl�TermCanvas.rowss���{�{�rc#�# �URS:XaURShv�N g[URUR-*UR*5n/URQURQ7UShv�N gN[N7fr�)rr+�slicerr)r��	trim_left�trim_toprrrlr2�viewport_ranges       rR�content�TermCanvas.content�sv�������!��y�y� � �"�T�[�[�4�3D�3D�%D�#E��HY�HY�GY�Z�N�<��/�/�<�$�)�)�<�^�L�L�L�
!�
M�s"� B�A>�AB�8B�9B�Bc�n�XLa"UR5/UR5-$UR5$r�)rrrlrv)r��others  rR�
content_delta�TermCanvas.content_delta�s,���=��I�I�K�=�4�9�9�;�.�.��|�|�~�r)r$r�rr rrr'r�r#r&r%rrr)r(r*r+r�rrrrr")rrVrrVr�Terminalr�r�)NN)r0r'r1r'r�r�r�)TFN)r#r�r�r�r�r'r�r��F)rDr�r�r�)NFF)r0r'rKr�r>r�r�r�r�)r0r'r�r�)r�)r338rHr�z/list[tuple[AttrSpec | None, str | None, bytes]])r339rHr�z)tuple[AttrSpec | None, str | None, bytes])r[�
Iterable[int]r�r��rrVrrVr�r�)r340rHrFrHr�r�)r341rHr�r�)r)r�rHr�r�)r�rVr�rV)r\rVr�r�)r342zint | bytesr�r�)r343rHr0r'r1r'r�r�)r0rVr1rVr�r�r��tuple[int, int])r�r�r�r�)FFF)r0rVr1rVr�r�ryr�rhr�r�r�)r344�bytes | Noner0rVr1rVr�r�)r345r�r�r�)r�r�r�r�)rA)r�rVr�r�)r�rVr�r�)NrN)r��tuple[int, int] | Noner]rVr346r�r�r�)Nr)r�r�r]rVr�r�)r�r'r�rVr�r�)r��'tuple[int, int] | tuple[int, int, bool]r*r�r�r�)r��
Sequence[int]r-rVr.rVr/zset[str]r0rVr��AttrSpec | None)r�r�r�r�)r$r�rCr�r�r347)rCr�r�r�)348r�z'Literal[1, 3, 4, 5, 6, 7, 20, 25, 2004]rKr�rur�r�r�r�r�)r�r~rur�r�r�r�r�r)rQrVrRrVr�r�)r)r�z
Literal[0, 3])rur�r�r�)r�z
Literal[5, 6]r�r�)r�zLiteral[0, 1, 2]r�r�)r�zLiteral[0, 1, 2, 3]r�r�)rr�r�r�)r�rV)rrNNN)349rsrVrtrVrrr'rlr'r�z>Iterable[list[tuple[object, Literal['0', 'U'] | None, bytes]]])ryr	)ArLrMrNrO�	cacheabler�r2r5r:r�r=rMrPrUrSr]rerlr~r�r�r�r�r�rZr�r�r/r�r�r�rjr�r�r�r�r r�r�r�r^r�r�r�r�r5r�r>r�rLr�r�r�r�r�r�r�r�r>rrrlrvrzrQ�
__classcell__�r,s@rRrrs�����I�%�N�"0��:�4	.�
+�5�4�;��0(�d%�.!)�J1�>B�,�\�350
�# �J-#�^F��0#�05��!� ��
#��#��#��	#�351�#��
#�352�#�6#�#'�JS�353k�#�"G� 3�+�,0��!�	�(�����	�354355��:�&�&�&%�6�%�5�%�356�	%�Nr0��r0�
�r0�
�	r0�357�r0��
r0�358�r0�h%%�N� 5�''�5�''��''��	''�359�''�360�
''�R4�'�")�.�@�� 0�+�*361*���362����
�
M��M��M��	M�363�M�364H�M��rrc�:^�\rSrSr%Sr\"\R/5r/SQr	S\365S'SSU4SjjjrSSjrSSjr
SS	jrSS366jrSSjrSSjrSS
jrSSjrSSjrSSjrSSjrS S!SjjrSSjrSSjrS"S#SjjrSSjrS$SjrSrU=r$)%r|i�T)�closedr�rg�titlereztyping.ClassVar[list[str]]�signalsc��>�[TU]5 U=(d SUl[U=(d [R3675UlU=(d URRSS5/UlXPl	SUl368SUl/Ul[5UlUbX0lO[ R""5UlSUlSUlSUlSUlSUlSUlSUlg)a�369A terminal emulator within a widget.370 371``command`` is the command to execute inside the terminal,372provided as a list of the command followed by its arguments.373If 'command' is None, the command is the current user's shell.374You can also provide a callable instead of a command, which will be executed in the subprocess.375 376``env`` can be used to pass custom environment variables. If omitted,377os.environ is used.378 379``main_loop`` should be provided, because the canvas state machine needs380to act on input from the PTY master device. This object must have381watch_file and remove_watch_file methods.382 383``escape_sequence`` is the urwid key symbol which should be used to break384out of the terminal widget. If it's not specified, ``ctrl a`` is used.385 386``encoding`` specifies the encoding that is being used when local387keypresses in Unicode are encoded into raw bytes. UTF-8 is used by default.388Set this to the encoding of your terminal if you need to transmit389characters to the spawned process in non-UTF8 encoding.390Applies to Python 3.x only.391 392.. note::393 394    If you notice your Terminal instance is not printing unicode glyphs395    correctly, make sure the global encoding for urwid is set to396    ``utf8`` with ``urwid.set_encoding("utf8")``. See397    :ref:`text-encodings` for more details.398zctrl a�SHELLz/bin/shFN)rr��escape_sequence�dict�os�environ�envr��command�encoding�keygrab�last_key�response_bufferr�r�	main_loopr�SelectEventLoop�master�pidrrr+r�399terminated)r�r�r�r�r�r�r,s      �rRr��Terminal.__init__�s����N	����$3�$?�x�����)�r�z�z�*����D�4�8�8�<�<���#C�"D��� �
����$(��
�*,���#�+���� �&�N�'�7�7�9�D�N�"&���#���!%��400�"&���'+��	������rc��URcgURRURRp2USURlUSURlURRURRSURRS5upEX#sURlURlXE4$)z/Return the cursor coordinates for this terminalNrr)r+rrr/r�)r��size�401orig_width�orig_heightr0r1s      rR�get_cursor_coords�Terminal.get_cursor_coords�s����9�9���#'�)�)�/�/�4�9�9�3C�3C�K��q�'��	�	����7��	�	���y�y�)�)��I�I�!�!�!�$��I�I�!�!�!�$�402���403-7�)��	�	�����)��v�
rc�<�URnSUS'[R"5uUlUlURS:Xar[UR5(a)UR
5 [R"S5 O/[R "URSURU5 UR"c>[$R$"UR[$R&[R(5 [*R,"UR.5 g![aT [RR[R"55 [RR5 GNf=f![R"S5 f=f)N�linux�TERMr)r��pty�forkr�r��callabler��
BaseException�sys�stderr�write�	traceback�404format_exc�flushr��_exit�execvper��fcntl�F_SETFL�405O_NONBLOCK�atexit�register�	terminate)r�r�s  rR�spawn�Terminal.spawn�s����h�h����F�� #���406����$�+��8�8�q�=�����%�%� �+�����407�H�H�Q�K��408�409�4�<�<��?�D�L�L�#�>��>�>�!��K�K����U�]�]�B�M�M�B�������'��)�+��410�411�(�(��)=�)=�)?�@��412�413�(�(�*�+���H�H�Q�K�s%� D"�"AF�<F�?F�F�Fc�B�UR(agSUlUR5 URS5 URS:�Ga1UR	SS5 [414R[415R[416R[417R[418R4Htn[R"URU5 [R"UR[R5up#US:Xa O[ R""S5 Mv [%[5 [R"URS5 SSS5 [R&"UR(5 gg![a  Mif=f!,(df   NB=f)NTFrg�������?)r��remove_watch�change_focusr��set_termsize�signal�SIGHUP�SIGCONT�SIGINT�SIGTERM�SIGKILLr��kill�waitpid�WNOHANG�OSError�time�sleepr�closer�)r��sigr��_statuss    rRr��Terminal.terminates���?�?������������%� ��8�8�a�<����a��#��
�
�v�~�~�v�}�}�f�n�n�V\�Vd�Vd�e����G�G�D�H�H�c�*�#%�:�:�d�h�h��419�420�#C�L�C��!�8���421�422�3��f��'�"��423�424�4�8�8�Q�'�#�
�H�H�T�[�[�!��������#�"�s�/AE>�2"F�>425F
�F
�426Fc�&�URS5 g)Nr���_emitr�s rRr��
Terminal.beep)s���427�428�6�rc�(�URSU5 g)Nrgr�)r��whichs  rRrg�
Terminal.leds,s���429�430�6�5�!rc�:�URRU5 g)z6431Respond to the underlying application with 'string'.432N)r�rC�r��strings  rRr��Terminal.respond/s��	
���#�#�F�+rc��URH3n[R"URUR	S55 M5 /Ulg)N�ascii)r�r�r�r�r	r�s  rR�flush_responses�Terminal.flush_responses5s5���*�*�F��H�H�T�[�[�&�-�-��"8�9�+�!��rc��[R"SX!SS5n[R"UR[433RU5 g)N�HHHHr)�struct�packr��ioctlr��termios�434TIOCSWINSZ)r�rr�winsizes    rRr��Terminal.set_termsize:s0���+�+�f�f�Q��:��
���D�K�K��!3�!3�W�=rc��SnURcUR5 SnURU:XaURU:XagUR	X5 UR435(d[
XU5UlOUR436RX5 XlX lU(aUR5 URSX45 g)NFTre)437r�r�rrr�r+rre�	add_watchr�)r�rr�process_openeds    rR�438touch_term�Terminal.touch_term>s������8�8���J�J�L�!�N��:�:���4�;�;�&�#8�����%�(��y�y�"�5�$�7�D�I��I�I���U�+��439�����N�N���440�441�8�e�_�-rc�(�URSU5 g)Nr�r�)r�r�s  rRr��Terminal.set_titleWs���442�443�7�E�"rc��UR(agXlURb*XRlURR5 U(a9[	5R5Ul[	5R444"S/S-6 g[US5(a"[	5R445"UR6 gg)z)446Ignore SIGINT if this widget has focus.447N�	undefinedr�old_tios)r�rr+r2r�tty_signal_keysr��hasattr)r�rs  rRr��Terminal.change_focusZs����?�?��"���9�9� �"+�I�I���I�I�%�%�'��(�N�:�:�<�D�M��N�*�*�k�]�Q�->�@�
�T�:�
&�
&��N�*�*�D�M�M�:�'rc���UR(dCURU5 Uup4URX45 URcUR	5 UR448$r�)r�r�r�r��feedr+)r�r��focusrrs     rR�render�Terminal.rendermsG��������e�$� �M�E��O�O�E�*��~�~�%��	�	���y�y�rc��URcgURRURUR5 gr�)r��449watch_filer�r�r�s rRr��Terminal.add_watchys+���>�>�!�����!�!�$�+�+�t�y�y�9rc�j�URcgURRUR5 gr�)r��remove_watch_filer�r�s rRr��Terminal.remove_watch~s%���>�>�!�����(�(����5rc���[R"5nURUR[R5 URU5 SSS5 UR
5 g!,(df   N=fr�)�	selectors�DefaultSelectorr�r��450EVENT_READ�selectr�)r��timeout�selectors   rR�
wait_and_feed�Terminal.wait_and_feed�sO��
�
&�
&�
(�H����d�k�k�9�+?�+?�@��O�O�G�$�)�451	
�	�	��)�
(�s�<A+�+452A9c���[n[R"URS5nU[:Xa"UR5 URS5 gURRU5 UR5 g![aRnUR453[454R:Xa[nSnAN�UR455[456R:XaSnAgeSnAff=f)Nir�)
�EOFr��readr�r��errno�EIO�EWOULDBLOCKr�r�r+r]r�)r�r[�es   rRr��
Terminal.feed�s�����	��7�7�4�;�;��-�D��3�;��N�N���J�J�x� ���	�	�����������	��w�w�%�)�)�#������E�-�-�-����
	�s#�!B�457C�$C�4C�C�Cc��UR(aU$US;a#URR(aOX lgUS:XaUup4UR	X45 gURUs=:XaUR458:XaO OX lSUlGOUR(aUR459U:XaSUlX lgO�US:Xa1URR5 X lUR5 gUS:Xa0URRSS9 X lUR5 gURUR460:XaX R461:waX lU$UR462U:XaSUlX lgURUbUS:XaSUlOX lU$X lURRSS	9 URS4635(afUSR5(a'[[US5[S5-464S
-5nOk[[US5[S5-465S
-5nODURR(aU[ ;a466[ UnO["R%X"5nURR&(aUS:XaUS-
n[(R*"UR,UR/UR0S55 g)N>r.r-z
window resizeTFr+r,)r#rr�zctrl r��ar�Ar�467r�)r�rr�r�r�r�r�r+r:�_invalidate�_command_maprq�islower�chr�ordr��KEY_TRANSLATIONS_DECCKM�KEY_TRANSLATIONSr�r�r�r�r�r	r�)r�r��keyrrs     rR�keypress�Terminal.keypress�sS���?�?��J��.�.����.�.�� #�
���/�!� �M�E��O�O�E�*���=�=�C�7�4�#7�#7�7��M��D�L�
�\�\��#�#�s�*�$��� #�
��	+��i���	�	�'�'�)� #�
�� � �"���k�!��	�	�'�'�5�'�1� #�
�� � �"���}�}�� 4� 4�4��@T�@T�9T� #�
��468��#�#�s�*�#��� #�
��� � ��%�-���� $���!$�
��469��
��	�	���d��+��>�>�'�"�"��2�w��� � ��#�c�"�g�,��S��1�A�5�6���#�c�"�g�,��S��1�A�5�6�����*�*�s�6M�/M�-�c�2��&�*�*�3�4���?�?���C�4�K��4�K�C�470������c�j�j�����A�B�r)r�r�r�r�rrr�r�r�r�r�r�r�r+rr�r)NNNr�)471r�z7Sequence[str | bytes] | Callable[[], typing.Any] | Noner�z4Mapping[str, str] | Iterable[tuple[str, str]] | Noner�zevent_loop.EventLoop | Noner��472str | Noner�rF)r�r�r�r�r�)r�z8Literal['clear', 'scroll_lock', 'num_lock', 'caps_lock']r�r�)r�rFr�r�rr})r�r�r�r�r�r)g�?)r�floatr�r�)r�r�rrFr�r)rLrMrNrO�_selectable�	frozensetr�BOX�_sizingr�rPr�r�r�r�r�rgr�r�r�r�r�r�r�r�r�rr�rrQr�r�s@rRr|r|�s�����K������%�G�*W�G�
'�W�473EI�15�&*��
D �H�D �B�D �/�	D �474$�D ��
D �D �L�*(�2"�2�"�,�"�475>�.�2#�;�&476�:�4776�478��,R�Rrr|)A�479__future__rr�r�rr�r�r�rr�r�r�r�r�r��typing�collectionsr�480contextlibr�dataclassesr�urwidrr�urwid.canvasr	�
urwid.displayr481r�urwid.display.escaperr
�urwid.widgetrr�display.commonrrr�
TYPE_CHECKING�collections.abcrrrr�typing_extensionsrr482rr�r�rr�483NamedTuplerDrTr�rPr�r�r�r�rr|rJrrR�<module>r4s��,#�
����	�484��
�
�485����
���!�"��0�I�'�L�L�	���E�E�)�	��	�"�g������T����S���486�4��487�3�	�488	�S�E��*���s�e�2�J�
���u�B�Z���s�e�2�J���s�e�3�K��
���S�k��
���S�k��489�c�U�#�;���#��c�{���C�5�����c�U�%�=�� �C�5���!�"	�S�E��+�#�$�E��+�
�E��+�
�E��+�
�E��+�
�E��,�
�E��,�
�E��,�
�E��,��U�$�<��U�$�<��U�$�<�9��@�E��*��e�2�J��u�B�Z��e�2�J�
�E��*�
�E��*�
�E��*�
�E��*�
�E��,�490���v� � ��491B��"�"�B�*4�	�*�Q��O�492P�*4�	�*�Q��W�493X�*4�	�*�Q��V�494W�*4�	�*�Q��V�495W�*4�	�*�Q��W�496X�*4�	�*�Q��X�497Y�*4�	�*�Q��Y�498Z�*4�	�*�Q��Z�499[�*4� 	�*�Q��R�500S�!*4�"	�*�Q��J�501K�#*4�$	�*�Q��G�502H�%*4�&	�*�Q��O�503P�'*4�(	�*�Q��O�504P�)*4�*	�*�Q��O�505P�+*4�,	�*�	�	�i��-*4�6	�(�7�D�506!�7*4�8	�*�Q��L�507M�9*4�:�Q��Z�508[�509�7�D�510!�511�7�D�512!�513�Q��J�514K�515�Q��H�516I�517�Q��T�518U�519�Q��D�520E�521�Q��J�522K�523�Q��N�524O�525�Q��M�526N�527�Q��=�528>�529�Q��@�530A�531�7�D�532!�S*4��0�*�X ������j���d�%� �,�,�!�,�D<�<�~O��O�d$]�v�]r
codekingpro/portable-devtools · Team Ai